«Как поддерживать интерфейс на разных языках и (почти) не вспоминать об этом»
Иногда i18n воспринимают только как способ перевести тексты. Но все гораздо сложнее — нужно учитывать культурные особенности разных стран (формат чисел, дат, времени, локализовать единицы измерения, учитывать направление текста при подготовке иллюстраций и так далее). Очень сложно изучить все подобные различия и их поддерживать. Но о нас позаботились и большая часть проблем решена на уровне стандартов:
* Unicode CLDR Project
* International components for Unicode
* Intl
А чтобы было еще удобнее, над базовыми решениями написаны верхнеуровневые библиотеки:
* FormatJS
* Lingui
Остается только выбрать подходящие инструменты и не забывать вовремя использовать. Но «не забывать» — это человеческий фактор.
Мы решили от него избавиться и придумали плагин для eslint, который находит все непереведенные строки в интерфейсе и автоматически их оборачивает в вызов
i18n().Опубликовал код плагина, чтобы вы могли вдохновиться и написать что-то подобное для вашего проекта:
https://github.com/tadatuta/eslint-plugin-wrap-i18n
А для полного счастья можно еще прикрутить проверку орфографии и типограф:
* CSpell — проверка орфографии в коде
* Типограф — автоматическое исправление типографики (неразрывные пробелы, длинное тире, правильные кавычки и т.д.)
