我一直在使用i18n.tr有一段时间在我的Ubuntu-Touch项目。我知道这个功能的作用,但我不知道如何将翻译添加到我的项目中。
我应该将翻译文件放在哪里?用什么名字?它的内容应该如何书写?我应该如何将它与我的应用程序连接?如何使用 qmlscene 测试它?
答案1
看一眼触控笔代码,特别是它的 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
为您的值)。
答案2
最好的答案似乎在文档中。http://developer.ubuntu.com/api/ubuntu-12.10/qml/mobile/qml-ubuntu-components0-i18n.html
它似乎是一个将传递的单词翻译成用户语言的功能。