Как использовать 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

Кажется, это функция, которая переводит слово, переданное на язык пользователя.

Другие вопросы по тегам