专注于Blackberry

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 | 留言 |文档