Работа со словарями, файлами translations.ts и утилитой lpsync.
Словари - это специальные объекты класса lmbDictionary, которые содержат пары вида: оригинальная фраза ⇒ перевод, причем оригинальные фразы хранятся в том или ином контексте, например, /СontrolPanel.
Словари хранятся в виде XML файлов с названием translations.ts в папках /i18n/translations/ пакетов, а также подпапках, например, /i18n/translations/ru. Вот пример такого файла:
<?xml version="1.0" encoding="utf-8"?> <TS> <context> <name>/cp</name> <message> <source>Create</source> <translation>Создать</translation> </message> <message> <source>Delete</source> <translation>Удалить</translation> </message> <message> <source>Edit</source> <translation type="unfinished"/> </message> </context> </TS>
Файлы translations.ts хранятся в UTF-8 кодировке.
Перевод таких файлов осуществляется при помощи достаточно удобной десктопной программы Qt Linguist от фирмы Trolltech. Подробнее о Qt Linguist. Скачать Qt Linguist можно здесь.
Указать, что есть базовый словарь, в котором обычно нет переводов. Есть словари для языков. Именно их мы и переводим при помощи Qt Linguist.
Работа со словарями в рамках Limb-based приложения. Использование скрипта lpsync
- Запускаем скрипт lpsync для проекта и вызываем команду для создания сначала базового словаря. То есть команда будет выглядеть следующим образом: limb lpsync -c4
- Затем вызываем команду для создания словаря нужного нам языка, например, для русского, то есть: limb lpsync -c4 -lru
- Далее создаем приложение, используя фильтр i18n в шаблонах и tr() функцию в php-коде для перевода контента, где необходимо.
- После этого запускаем команду для поиска всех новых строк, подлежащий переводу. Они новые строки будут автоматически добавлены в базовый translations.ts файл (базовый словарь) приложения. Команда: limb lpsync -c2
- Далее синхронизируем базовый словарь приложения с остальными словарями приложения. Команда: limb lpsync -c1.
- После этого при помощи программы Qt Linguist переводим словарь нужного нам языка.
- Далее отправляем изменения обратно в пакеты сначала для базовых словарей. Команда: limb lpsync -c3
- После этого отправляет изменения обратно в пакеты уже для словарей нужных нам языков, например, для русского Команда: limb lpsync -c3 -lru
Обратите внимание, что изменения обратно в пакеты вносятся только при наличие в словаре пакета соответствующего контекста. Если в словаре приложения есть контекст /cp и в словаре CP пакета есть тоже контекст /cp, следовательно, изменения будут полностью синхронизированы. Однако если в словаре приложения есть контекст /cp/user, а в словаре CP пакета только /cp, то изменения в словаре приложения обратно в пакет CP уже не попадут. Нужно вручную будет создать соответствующий контекст в пакете CP. В нашем случае нужно будет вручную создать в пакете CP контекст /cp/user.

Обсуждение