在Ubuntu OS上怎么本地化一个QML应用

来源:互联网 发布:哪款root软件最好 编辑:程序博客网 时间:2024/04/29 18:05

在这篇文章中,我们来介绍怎么在Ubuntu OS上本地化一个应用。本地化对很多的应用很重要。我们重点介绍怎么把应用本地化为中文。


1)创建一个最基本的应用


首先打开我们的Ubuntu SDK,并选择“App with Simple UI and localization”的模版。




然后接下来:

   



我们完成后我们的项目后,我们发现在项目的“LocalizeQml/po”目录中有生产一个文件“CMakeLists.txt”。当我们第一次运行我们的应用(无论在任何的architecture下),SDK会帮我们生产另外一个文件“com.ubuntu.developer.liu-xiao-guo.localizeqml.pot”。这个文件就是我们需要本地化的文件。我们在当前的文件目录下,复制这个文件,并重新命名为“zh_CN.po”。注意这里“zh_CN”是为中国地区简体中文的国际语言代码。我们打开该文件,并同时翻译该文件:

# SOME DESCRIPTIVE TITLE.# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER# This file is distributed under the same license as the PACKAGE package.# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.##, fuzzymsgid ""msgstr """Project-Id-Version: \n""Report-Msgid-Bugs-To: \n""POT-Creation-Date: 2014-11-20 12:05+0800\n""PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n""Last-Translator: FULL NAME <EMAIL@ADDRESS>\n""Language-Team: LANGUAGE <LL@li.org>\n""Language: \n""MIME-Version: 1.0\n""Content-Type: text/plain; charset=UTF-8\n""Content-Transfer-Encoding: 8bit\n"#: ../app/ui/HelloTab.qml:6msgid "Hello.."msgstr "您好"#: ../app/ui/HelloTab.qml:18msgid "Hello World"msgstr "您好,世界"#: ../app/ui/HelloTab.qml:26msgid "You can change the Tab from Page title above."msgstr "您可以从页面的标题上改变标签"#: ../app/ui/WorldTab.qml:6msgid "..World!"msgstr "..世界!"#: ../app/ui/WorldTab.qml:18msgid "WorldTab"msgstr "世界标签"#: /home/liuxg/release/build-localizedqml-Desktop-Default/po/localizedqml.desktop.in.h:1msgid "LocalizeQml"msgstr "本地化QML"

这里必须注意的是,必须设置charset为UTF-8才可以正常显示中文。我们可以在手机或模拟器中输入一下的命令来查看当前的手机的语言:



我们再重新运行我们的应用。在手机上看到的界面如下:



我们看见我们的UI现在都是显示的是中文。我们现在来回顾一下我的QML文件的内容:

Tab {    title: i18n.tr("Hello..")    page: Page {        Column {            spacing: units.gu(2)            anchors.centerIn: parent            HelloComponent {                objectName: "helloTab_HelloComponent"                anchors.horizontalCenter: parent.horizontalCenter                text: i18n.tr("Hello World")            }            Label {                objectName: "helloTab_label"                anchors.horizontalCenter: parent.horizontalCenter                text: i18n.tr("You can change the Tab from Page title above.")            }        }    }}

我们可以看到所有的字符串是以“i18n.tr”来输出的。它可以帮我们进行本地化。当然我们可以把我们的应用本地化到任何一个其它的语言。

为了说明问题,我们把我们的应用改为:

Tab {    title: i18n.tr("Hello..")    page: Page {        Column {            spacing: units.gu(2)            anchors.centerIn: parent            HelloComponent {                objectName: "helloTab_HelloComponent"                anchors.horizontalCenter: parent.horizontalCenter                text: i18n.tr("Hello World")            }            Label {                objectName: "helloTab_label"                anchors.horizontalCenter: parent.horizontalCenter                text: i18n.tr("You can change the Tab from Page title above.")            }            Button {                text: i18n.tr("Press me")            }        }    }}

重新运行我们的应用,我们看到的是英文的界面。我们也同时查看一下我们在“po”目录下的“com.ubuntu.developer.liu-xiao-guo.localizeqml.pot”,我们看见我们新添加的“Press me”在这个文件中。我们需要重新把它添加到我们的“zh_CN.po”文件中去。

# SOME DESCRIPTIVE TITLE.# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER# This file is distributed under the same license as the PACKAGE package.# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.##, fuzzymsgid ""msgstr """Project-Id-Version: \n""Report-Msgid-Bugs-To: \n""POT-Creation-Date: 2014-11-20 12:05+0800\n""PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n""Last-Translator: FULL NAME <EMAIL@ADDRESS>\n""Language-Team: LANGUAGE <LL@li.org>\n""Language: \n""MIME-Version: 1.0\n""Content-Type: text/plain; charset=UTF-8\n""Content-Transfer-Encoding: 8bit\n"#: ../app/ui/HelloTab.qml:6msgid "Hello.."msgstr "您好"#: ../app/ui/HelloTab.qml:18msgid "Hello World"msgstr "您好,世界"#: ../app/ui/HelloTab.qml:26msgid "You can change the Tab from Page title above."msgstr "您可以从页面的标题上改变标签"#: ../app/ui/WorldTab.qml:6msgid "..World!"msgstr "..世界!"#: ../app/ui/WorldTab.qml:18msgid "WorldTab"msgstr "世界标签"#: /home/liuxg/release/build-localizedqml-Desktop-Default/po/localizedqml.desktop.in.h:1msgid "LocalizeQml"msgstr "本地化QML"#: ../app/ui/HelloTab.qml:30msgid "Press me"msgstr "按一下我"

重新运行我们的应用:



我们看到新的字符串已经被翻译了。我们可以在我们的shell中输入如下的命名:



我们可以看见一个.mo的本地化文件被打入包中,并存于“zh_CN”下的文件目录中。整个应用的源码在如下的地址找到:

bzr branch lp:~liu-xiao-guo/debiantrial/localizeqml


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 打球把手戳肿了怎么办 阴茎上皮肤皴了怎么办 手皮肤干燥起皮怎么办 一到冬天手脚冰凉怎么办 脸上的皮肤被搓掉了怎么办 皮肤的表皮搓掉了怎么办 固体水彩经常掉出来怎么办 画水彩纸皱了怎么办 画完水彩纸皱了怎么办 旗袍后面隐形拉链气包怎么办 电动缝纫机不往前走怎么办 衬衣领子磨烂了怎么办 白寸衣领变黄怎么办 黑衣领衣服洗发黄怎么办 白毛衣用84变黄怎么办 白色貂毛衣变黄怎么办 蓝色T恤衣领汗積洗不掉怎么办 蓝色t恤衣领汗积洗不掉怎么办 羽绒服在衣柜里放黄了怎么办 白羽绒服放久了泛黄怎么办 白色t恤领子发黄怎么办 身体爱出油衣服领子总爱脏怎么办 白色衣服衣领净洗后变红怎么办 棒球服衣领洗变形怎么办 挂盐水手肿了怎么办 衣服买大了肩宽怎么办 买来的衣服肩宽怎么办 素描揉擦之后的黑点怎么办 扭脖子响了一下怎么办 画的眼线容易掉怎么办 做完眼线后眼睛肿了怎么办 洗眼线眼睛肿了怎么办 眼线留眼泪总是爱花妆怎么办 戴眼镜眼球外凸怎么办 修眉后的眉渣怎么办 内眼线容易晕妆怎么办 手抖不会画眼线怎么办 画眼线眼睛总眨怎么办 画眼线总是晕妆怎么办 眼线笔没用完干了怎么办 新的眼线笔干了怎么办