Tag: i18n

i18n для эмбедов

github.com/littlevgl/lv_i18n

Вместо того чтобы заняться делом и лепить прошивку паялки, решил сначала позакрывать явные пробелы в LittlevGL. Один из них - поддержка интернационализации. Вообще, формально, есть gettext, но он хранит словари в файловой системе, а для эмбедов надо что-то другое.

И как-то вот не получилось найти под сишечку достаточно гибких и удобных решений. Возможно, плохо искал. Но что-то мне подсказывает, что дело в отсутствии пакетного менеджера, из-за чего вагон сишных библиотек зависает на уровне поделок энтузиастов. В общем, решил что быстрее запилить свое. С мыслью что на Rust это потом тоже пригодиться.

Несмотря на название, получилась довольно универсальная вещь, работающая по тем же принципам что gettext:

  • Фразы сканируются в yaml-файлы (формат как в формат в ruby)
  • Потом можно либо заполнить переводы ручками, либо прокинуть дальше, в веб-переводилки (потому что формат файлов стандартный)
  • В любой момент можно “скомпилировать” переводы в С-шный исходник.

С учетом “особенностей” сишечки, чтобы не возиться с внешними библиотеками, скрипты генерят 2 файла (“lv_i18n.h” и “lv_i18n.c”), в которых есть все что надо.