Как использовать i18n.tr в проектах Ubuntu Touch
Я уже давно использую i18n.tr в своих проектах Ubuntu-Touch. Я знаю, о чем эта функция, но я не знаю, как добавить перевод в мой проект.
Где я должен разместить свой файл перевода? С каким именем? Как должно быть написано его содержание? Как мне подключить его к моему приложению? Как мне проверить это с помощью qmlscene?
2 ответа
Взгляните на код TouchWriter и особенно его README, где приведены все необходимые команды.
Краткое резюме
Вам необходимо связать текстовый домен перед использованием gettext. В C++ вы можете сделать это так:
bindtextdomain("domainname", "somedir"); textdomain("domainname");
В Qml вы, вероятно, можете сделать что-то вроде этого:
i18n.bindtextdomain("domainname", "somedir"); i18n.domain = "domainname";
Обязательно сделайте это раньше
18n.tr
используется.Чтобы генерировать
.pot
шаблон и источник.po
файлы, используйте эти команды:xgettext -C --qt --keyword=tr -p somedir -o messages.pot msginit -i somedir/messages.pot -o somedir/somelanguage.po
(заменить
somedir
с каталогом, к которому привязан ваш домен, иsomelanguage
с языком, который вы хотите перевести).Чтобы генерировать
.mo
файлы из источника.po
файлы, использоватьmsgfmt po-file -o mo-file
команда.скомпилированный
.mo
файлы должны быть помещены в каталог, к которому вы привязали текстовый домен, более конкретно, вsomedir/somelanguage/LC_MESSAGES/domainname.mo
(заменить
somedir
,somelanguage
а такжеdomainname
с вашими ценностями).
Лучший ответ, кажется, в документе. http://developer.ubuntu.com/api/ubuntu-12.10/qml/mobile/qml-ubuntu-components0-i18n.html
Кажется, это функция, которая переводит слово, переданное на язык пользователя.