BlackBerry 应用程序开发者指南 第一卷:基础--第8章 本地化应用程序 |
||||||||||||||||
| 作者:佚名 来源:本站整理 发布时间:2008-3-14 22:12:34 | ||||||||||||||||
|
作者:Confach 发表于2006-04-28 21:43 pm 第8章 本地化应用程序
资源文件
将应用程序设计为在代码不改变的情况下它们可以本地化(适合指定的语言以及区域)。为了代替在你的源代码中包含原文元素,将文本字符串存储到一个独立的资源文件中。在你的源代码例中,使用唯一的标志符映射到合适的资源。 在独立的资源文件中存储文本字符串有2个好处:
BlackBerry JDE包含了一个内置的资源机制来创建字符串资源。本地化(Localization)API包含在net.rim.device.api.i18n包里。
一个给定的位置的资源存贮在一个ResourceBundle对象中。一个ResourceBundleFamily对象包括了一个ResourceBundle的集合,它将应用程序的资源进行分组。在不需要新的资源包下,应用程序可以切换语言,这依赖于用户的位置。 BlackBerry JDE将每个资源包编译为一个独立已编译的.cod文件。你可以为应用程序将其他.cod文件和适合的.cod文件一起加载到BlackBerry设备上。
资源继承
在一个基于继承的层次里组织资源。若一个字符串在一个位置里没有定义,下一个最靠近的字符串会被使用。 为应用程序加入本地化支持
增加资源头文件
加入资源内容文件
在相同的文件夹下创建3个资源内容文件,在这里,ContryInfo.java有:CountryInfo.rrc(根位置),CountryInfo_en.rrc(English),以及CountryInfo_fr.rrc(French).
加入资源
每行定义了单个资源。Keys列为资源显示了一个具有描述性的名字。它是在你代码中使用它获得本地化文本的名字。Values列为某个指定位置的资源显示文本。
3. 为指定一个其他位置里的不同文本字符串,选择位置的标签,例如法语是fr. 4. 在资源的Value单元格里,为locale输入文本字符串。如果你没有为一个特定locale的资源定义一个值,root的值将会使用。 5. 设置应用程序标题。 你可以提供一个本地化的应用程序标题显示在主屏幕(Home Screen)上。如果你没有为应用程序标题提供一个资源,将会使用项目属性窗口上的Application标签里的Title域的输入值。 1. 在资源编辑器中,为应用程序标题增加一个资源,例如APPLICATION_TITLE. 2. 在你支持的每个locale,为这个资源输入一个值。 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 net.rim.device.api.i18n.*; import com.rim.samples.docs.resource.*; /* This sample demonstrates how to store text strings in separate resource files for specific locales rather than providing text strings directly in the code. In your source code, you retrieve the string from the resource to display the appropriate text for the user locale. */ public class CountryInfo extends UiApplication { public static void main(String[] args) { CountryInfo theApp = new CountryInfo(); theApp.enterEventDispatcher(); } public CountryInfo() { pushScreen(new HelloWorldScreen()); } } final class HelloWorldScreen extends MainScreen implements CountryInfoResource { private InfoScreen _infoScreen; private ObjectChoiceField choiceField; private int select; private static ResourceBundle _resources = ResourceBundle.getBundle( CountryInfoResource.BUNDLE_ID, CountryInfoResource.BUNDLE_NAME);
|
||||||||||||||||
| [] [返回上一页] [打 印] | ||||||||||||||||
文章评论 |
||||||||||||||||
