Поиск недостающих ключей в yaml-файлах

в 15:57, , рубрики: gem, ruby, yaml, метки: , ,

Иногда open source проекты переводятся на множество иностранных языков. С одной стороны это делает их более доступными для широкого круга пользователей, но с другой стороны, все эти переводы нужно поддерживать. Переводы обычно разделены по yaml-файлам и выделены в отдельную директорию, содержимое которой выглядит примерно так: en.yml, ru.yml, de.yml...
Что мне приходится видеть в open source проектах, это что в определенный период времени кто-то решил перевести все тексты на свой родной язык, добавляя при этом файл вида xx.yml. Перевод сделан, все отлично, но проект не стоит на месте, добавляются новые функции, удаляется старый код. Человек, который сделал изначальный перевод, в большинстве случаев, уже не следит за всеми эти движениями и не добавляет за каждым разом новые переводы. Люди, которые контрибьютят код, тоже не способны делать переводы на все языки, которые поддерживает проект. Получается так, что имеется много yml файлов, эталонным из них обычно является en.yml. Когда приходят новые люди, желающие дополнить недостающие переводы, они сталкиваются с проблемой что в каждом файле сотни строк текста и никак нельзя понять какие из них отсутствуют или избыточны.
Именно для этих целей, я написал простой джем под названием Differz, который сравнивает yaml-файлы и показывает недостающие ключи. Установить можно просто выполнив

gem install differz

Если используется rbenv, то так же нужно выполнить

rbenv rehash

Чтобы показать разницу между en.yml и de.yml, нужно выполнить такую строку в консоли:

differz show en.yml de.yml

Для примера, я запустил данное приложение на популярном проекте activeadmin, которое перевели на много языков. Вот результат сравнение en.yml и de.yml:
Поиск недостающих ключей в yaml файлах

В планах было давать возможность пользователю заполнять все недостающие ключи прямо из консоли. Для этого будет служить еще не написанная команда edit.

Автор: heel

Источник



https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js