====== Работа со словарями, файлами translations.ts и утилитой lpsync. ====== Словари - это специальные объекты класса [[lmbDictionary]], которые содержат пары вида: оригинальная фраза => перевод, причем оригинальные фразы хранятся в том или ином контексте, например, /СontrolPanel. Словари хранятся в виде XML файлов с названием translations.ts в папках /i18n/translations/ пакетов, а также подпапках, например, /i18n/translations/ru. Вот пример такого файла: /cp Create Создать Delete Удалить Edit Файлы translations.ts хранятся в UTF-8 кодировке. Перевод таких файлов осуществляется при помощи достаточно удобной десктопной программы Qt Linguist от фирмы Trolltech. [[http://www.trolltech.com/products/qt/internationalization.html|Подробнее о Qt Linguist]]. [[http://ez.no/content/view/full/21463|Скачать Qt Linguist можно здесь]]. FIXME Указать, что есть базовый словарь, в котором обычно нет переводов. Есть словари для языков. Именно их мы и переводим при помощи 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.