Поиск недостающих ключей в 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:


    В планах было давать возможность пользователю заполнять все недостающие ключи прямо из консоли. Для этого будет служить еще не написанная команда edit.
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 5

      0
      Здорово, действительно бывает такая необходимость.
        +4
        На мой взгляд, i18n-tasks будет получше. Гораздо. Гем позволяет не только показать недостающие ключи, но также находит устаревшие, не используемые.

        image

        Ах да, он же еще позволяет переводить недостающий перевод буквально одной командой с помощью google translate (и конечно же, можно указать, какие локали хочется перевести). Да и с Rspec'ом есть интеграция. Ну и напоследок: библиотека активно развивается и поддерживается, а у того же differz последний коммит был месяц назад.

        В общем, по-моему, выбор очевиден.
          0
          спасибо, отличный инструмент. Думаю, это отличный повод для меня чтобы перестать развивать differz :)
          0
          Для переводов можно использовать вот такую штуку: i18n-tasks
            0
            Я буду обновлять комментарии. Особенно, если прошёл целый день с момента, как я открыл страницу =)

          Only users with full accounts can post comments. Log in, please.