BlackBerry 应用程序开发者指南 第一卷:基础–第8章 本地化应用程序
8
第8章 本地化应用程序
资源文件
为应用程序加入本地化支持
从资源文件获取字符串
为应用程序套件管理资源文件
资源文件
将应用程序设计为在代码不改变的情况下它们可以本地化(适合指定的语言以及区域)。为了代替在你的源代码中包含原文元素,将文本字符串存储到一个独立的资源文件中。在你的源代码例中,使用唯一的标志符映射到合适的资源。
在独立的资源文件中存储文本字符串有2个好处:
文本翻译有更高的效率,因为一个给定位置(locale)的所有文本字符串都存储在一个单独的文件中,这个文件在你的源代码之外。
基于用户的位置,应用程序可以动态的获得合适的文本显示给用户。
BlackBerry JDE包含了一个内置的资源机制来创建字符串资源。本地化(Localization)API包含在net.rim.device.api.i18n包里。
注:MIDP应用程序不支持本地化。
一个给定的位置的资源存贮在一个ResourceBundle对象中。一个ResourceBundleFamily对象包括了一个ResourceBundle的集合,它将应用程序的资源进行分组。在不需要新的资源包下,应用程序可以切换语言,这依赖于用户的位置。
BlackBerry JDE将每个资源包编译为一个独立已编译的.cod文件。你可以为应用程序将其他.cod文件和适合的.cod文件一起加载到BlackBerry设备上。
本地化需要的文件
描述
例子
资源头文件
这个文件为每个本地字符串定义具有描述性的键。
当BlackBerry编译一个项目时,它创建一个以Resource加到.rrh文件名末作为文件名的资源接口。例如,如果你创建AppName.rhh,接口就是AppNameResouce。
AppName.rrh
资源内容文件(根位置)
文件为根(全局)位置将资源键映射到字符串值。它和资源头文件有相同的名字。
AppName.rrc
资源内容文件(指定的位置)
文件为指定的位置(语言和国家)将资源键映射到字符串值。文件和资源头文件有相同的名字,跟在后面的是下划线(_)和语言代码,然后是可选的,一个下划线和国家代码。
2个字母的语言代码和国家代码分别在ISO-639以及ISO-3166有描述。
AppName_en.rrc
AppName_en_GB_rrc
AppName_fr.rrc
初始化文件
文件初始化资源包机制。仅当资源作为一个独立的工程编译时本文件为才需要
Init.java
资源继承
在一个基于继承的层次里组织资源。若一个字符串在一个位置里没有定义,下一个最靠近的字符串会被使用。
为应用程序加入本地化支持
增加资源头文件
在BlackBerry IDE,打开File菜单,点击New。
在Source file name里,键入一个文件名。
点击Browse。
选择一个包含文件的文件夹。
点击OK。
在域里,键入包的名字,例如:com.rim.samples.docs.countryinfo.
点击OK。
点击Yes。
除了包文件的描述,保留出现在文本编辑器的文件。
在右边的区域里,右击加入文件到项目中,然后点击Insert into project。
加入资源内容文件
在相同的文件夹下创建3个资源内容文件,在这里,ContryInfo.java有:CountryInfo.rrc(根位置),CountryInfo_en.rrc(English),以及CountryInfo_fr.rrc(French).
在File菜单,点击New。
键入文件名以及位置。
点击OK。
点击Yes。
保留文件为空。
为加入.rrc文件到你的应用程序项目中,在右边右击文件。
点击Insert into project。
加入资源
在BlackBerry IDE,双击一个资源头文件。
在Root标签,键入资源键和应用程序的每个字符串或字符串数组的值。
每行定义了单个资源。Keys列为资源显示了一个具有描述性的名字。它是在你代码中使用它获得本地化文本的名字。Values列为某个指定位置的资源显示文本。
注:为单个资源键增加一组值,在资源编辑器中,右击一个资源,电解Convert to Multiple Values。加入一个或多个值到数组。
3. 为指定一个其他位置里的不同文本字符串,选择位置的标签,例如法语是fr.
4. 在资源的Value单元格里,为locale输入文本字符串。如果你没有为一个特定locale的资源定义一个值,root的值将会使用。
注:直接输入unicode字符到Value单元格中。访问http://ww.unicode.org获得更多信息。
5. 设置应用程序标题。
你可以提供一个本地化的应用程序标题显示在主屏幕(Home Screen)上。如果你没有为应用程序标题提供一个资源,将会使用项目属性窗口上的Application标签里的Title域的输入值。
1. 在资源编辑器中,为应用程序标题增加一个资源,例如APPLICATION_TITLE.
2. 在你支持的每个locale,为这个资源输入一个值。
注:为了为一个应用程序创建一个快捷键,在你用来作为快捷键的字符后加入unicode下划线字符(\u0332)。一个快捷键就是一个在主屏幕上你可以按此键启动应用程序的键。
3. 在BlackBerry IDE中,右击应用程序项目,然后点击Properties。
4. 点击Resource标签。
5. 选择Title Resource Available选项。
6. 在Resource Bundle下拉列表中,为此应用程序选择资源头文件名。
7. 在Title Id下拉列表中,为应用程序的标题选择资源,例如APPLICATION_TITLE.
8. 在Description ID下拉列表中,选择一个描述性的ID。
代码实例
为了指定的locale,而不是在代码里直接提供文本字符串,CountryInfo.java实例描述了如何在单独的资源文件中存储文本字符串。在你的源代码中,从资源里获取字符串为用户locale显示合适的文本。
例,CountryInfo.java
/**
* CountryInfo.java
* Copyright (C) 2001-2005 Research In Motion Limited. All rights reserved.
*/
package com.rim.samples.docs.countryinfo;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.system.*;
import [...]
Confach发表于 April 23, 2008 6:38 am | 留言 |文档
最新留言
- 高超:还有我按照http://www.52blackberry.com/thread-291671-1-1.html这个网站的方法实验过,还是不可以,不知道哪里做的不对
- 高超:说实话我没有看懂说的是什么,但是我很想像楼主那样使用SB的应用,我想楼主详细的告诉我应该怎么操作才能使用。谢谢 另:我没有使用移动的SB,那又点贵,不知道楼主的方法是不是需要移动推入,我使用的是blackberry的8520,支持WIFI 等待回复谢谢
- nio:ESS和MDS设置完毕之后,还是无法接收邮件,请较如下: MDS设置中的 Email.userId是写邮箱登陆用户名? Email.address需要修改么? Email.personal需要修改么? ESS设置中的 Email.personal跟MDS中的Email.personal有关系吗? Email.address跟MDS中的Email.address有关系吗? 以上两项应该设置成什么? ps:我用的是126的邮箱,用本地的outlook没有问题~
- 涂鸦:姜还是老的辣。
- Kirsten30MG:A lot of professors demand to examine the writing technique, hence, people have to choose dissertation service to buy free dissertation. In such way people show academic level. And as well you should get thesis.
