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

159 篇文章 2 订阅
137 篇文章 1 订阅

在这篇文章中,我们来介绍怎么在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.
#
#, fuzzy
msgid ""
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:6
msgid "Hello.."
msgstr "您好"

#: ../app/ui/HelloTab.qml:18
msgid "Hello World"
msgstr "您好,世界"

#: ../app/ui/HelloTab.qml:26
msgid "You can change the Tab from Page title above."
msgstr "您可以从页面的标题上改变标签"

#: ../app/ui/WorldTab.qml:6
msgid "..World!"
msgstr "..世界!"

#: ../app/ui/WorldTab.qml:18
msgid "WorldTab"
msgstr "世界标签"

#: /home/liuxg/release/build-localizedqml-Desktop-Default/po/localizedqml.desktop.in.h:1
msgid "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.
#
#, fuzzy
msgid ""
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:6
msgid "Hello.."
msgstr "您好"

#: ../app/ui/HelloTab.qml:18
msgid "Hello World"
msgstr "您好,世界"

#: ../app/ui/HelloTab.qml:26
msgid "You can change the Tab from Page title above."
msgstr "您可以从页面的标题上改变标签"

#: ../app/ui/WorldTab.qml:6
msgid "..World!"
msgstr "..世界!"

#: ../app/ui/WorldTab.qml:18
msgid "WorldTab"
msgstr "世界标签"

#: /home/liuxg/release/build-localizedqml-Desktop-Default/po/localizedqml.desktop.in.h:1
msgid "LocalizeQml"
msgstr "本地化QML"

#: ../app/ui/HelloTab.qml:30
msgid "Press me"
msgstr "按一下我"

重新运行我们的应用:



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



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

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值