如何在Ubuntu上本地化一个Scope

在这篇文章中,我们将介绍如何本地化一个Scope。本地化对有些Scope是非常重要的。正确地使用本地化,可以使得我们的Scop很方便地支持多个国家的语言。


1)创建一个基本的Scope

打开我们的Ubuntu SDK,并按如下的步骤生成:




     


    

等我们已经创建好我们的一个最基本的Scope后,我们可以可以在如下的目录中发现:




这里有一个叫做“localizedscope.pot”文件,我们可以尝试打开该文件。它是一个空文件。我们选择desktop先运行一次我们的Scope,然后再重新打开该文件。




我们可以看到在该文件中有一些字符串,在它们的下面有一些空的串。这些字符串都是从我们的项目中源文件中提取出来的。比如在文件“com.ubuntu.developer.liu-xiao-guo.localizedscope_localizedscope.ini.in”中我们可以找到“Localizedscope Scope”。它实际上是我们的Scope的标题。在query.cpp文件中,我们可以找到如下的定义:

        // Register a category for the forecast
        auto forecast_cat = reply->register_category("forecast",
                                                     _("7 day forecast"), "", sc::CategoryRenderer(WEATHER_TEMPLATE));

通过这个例子,我们可以看出,如果我们想要本地化自己的字符串,我们使用“_("string")”的形式来让我们的工具来提取相应的需要本地化的字符串。这里的“string”应该写成英文。

在localizedscope.pot文件中,我们可以看到:

#: ../data/com.ubuntu.developer.liu-xiao-guo.localizedscope_localizedscope.ini.in.h:2
msgid "This is a Localizedscope scope"
msgstr ""

上面的地一行字显示了字符串出自哪个文件及在该文件中的行数。

2)本地化字符串


我们为了达到本地化该Scope,我们首先把.pot文件拷贝到该目录下的另外一个文件“zh_CN.po”,并做相应的翻译的工作。同时要记得把里面的

charset=CHARSET

修改为

charset=UTF-8

整个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: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-12-22 12:13+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"

#: ../src/scope/query.cpp:144
msgid "7 day forecast"
msgstr "7天天气预测"

#: ../data/com.ubuntu.developer.liu-xiao-guo.localizedscope_localizedscope.ini.in.h:1
msgid "Localizedscope Scope"
msgstr "本地化Scope"

#: ../data/com.ubuntu.developer.liu-xiao-guo.localizedscope_localizedscope.ini.in.h:2
msgid "This is a Localizedscope scope"
msgstr "这是一个本地化Scope"

我们可以选择在手机上安装并运行我们的Scope。最终显示如下:

         

我们也可以查看具体的操作步骤在项目中的"readme.txt"文件中。通过这样的方法,我们完成了对中文简体语言的本地化。整个项目的源码在如下地址找到:

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