Ира Туманова написала об автоматизации подготовки перевода интерфейса в многоязычном продукте.
— Каждая текстовая строка в коде заменяется ключом. Основные решения: i18next, Lingui и FormatJS;
— ICU MessageFormat — синтаксис для форматирования сообщений, который позволяет разработчикам учитывать сложности человеческого языка;
— Значения ключей (текстовые строки на разных языках) хранятся в специальных файлах, откуда система берёт текст для заданного языка;
— Translation management system позволяет управлять переводами: смотреть статус ключа, на какие языки он уже переведён. Интересные TMS: Lokalise, Phrase, Crowdin, POEditor;
— Доделав фичу, разработчик запускает скрипт экстракции ключей из кода в TMS и создаёт задачу для переводчиков (со ссылками на ключи);
— Чтобы минимизировать человеческий фактор, в Яндекс Go процесс запускается сам при Pull Request в основную ветку;
— После того, как переводчики подготовят переводы, надо забрать их из TMS обратно в файлы локализации;
— В Яндекс Go это происходит автоматически по крону каждый день в 5 утра: скрипт по TMS API запрашивает все новые переводы, раскладывает данные по файлам, создаёт Pull Request с изменениями;
— Плюс добавили проверку на дубликаты, чтобы случайно не слить два Pull Request с одинаковыми ключами;
— Разработчики в среднем заводили 2,5 задачи в день на переводы. Это порядка 20 минут на задачи и последующее обновление файлов переводов. Немного, но выбивало из рабочего потока.
#localization
Post #1752
2.97K
- 👍 6
- 🔥 2
- ❤ 1