如何在 Ubuntu Touch 项目中使用 i18n.tr

Geo*_*nos 5 qt application-development qml ubuntu-sdk ubuntu-touch

我在我的Ubuntu-Touch项目中使用i18n.tr已经有一段时间了。我知道这个功能是什么,但我不知道如何向我的项目添加翻译。

我必须把我的翻译文件放在哪里?用什么名字?它的内容必须如何编写?我应该如何将它与我的应用程序连接?我如何用 qmlscene 测试它?

Dmi*_*nev 2

查看TouchWriter代码,尤其是它的自述文件,其中给出了所有需要的命令。

快速总结

  • 使用gettext之前需要绑定text域。在 C++ 中你可以这样做:

    bindtextdomain("domainname", "somedir");
    textdomain("domainname");
    
    Run Code Online (Sandbox Code Playgroud)

    在 Qml 中你可能可以这样做:

    i18n.bindtextdomain("domainname", "somedir");
    i18n.domain = "domainname";
    
    Run Code Online (Sandbox Code Playgroud)

    使用 请务必执行此操作。18n.tr

  • 要生成.pot模板和源.po文件,请使用以下命令:

    xgettext -C --qt --keyword=tr -p somedir -o messages.pot
    msginit -i somedir/messages.pot -o somedir/somelanguage.po
    
    Run Code Online (Sandbox Code Playgroud)

    (替换somedir为您的域绑定的目录以及somelanguage您要翻译的语言)。

  • .mo要从源文件生成文件.po,请使用msgfmt po-file -o mo-file命令。

  • 编译后的.mo文件应放置在您将文本域绑定到的目录中,更具体地说,位于

    somedir/somelanguage/LC_MESSAGES/domainname.mo
    
    Run Code Online (Sandbox Code Playgroud)

    (将somedir,somelanguage和替换domainname为您的值)。


J3R*_*3RN -1

最好的答案似乎在文档中。http://developer.ubuntu.com/api/ubuntu-12.10/qml/mobile/qml-ubuntu-components0-i18n.html

它似乎是一个将传递的单词翻译成用户语言的函数。