科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道使用JSR-238更快地全球化您的应用程序(二)

使用JSR-238更快地全球化您的应用程序(二)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

使用 ResourceManager 现在我将演示如何使用 ResourceManager 来管理不同地区的资源文件。 要用不同的语言来显示本地字符串,就需要准备不同地区的资源文件。资源文件包括要本地化的字符串,如果有图片的话。

作者:中国IT实验室 来源:中国IT实验室 2007年9月18日

关键字: 使用 编程 java

  • 评论
  • 分享微博
  • 分享邮件

使用 ResourceManager

现在我将演示如何使用 ResourceManager 来管理不同地区的资源文件。

    要用不同的语言来显示本地字符串,就需要准备不同地区的资源文件。资源文件包括要本地化的字符串,如果有图片的话,也要将其包含在资源文件里面。资源文件就像 Java SE 的属性文件,但是是二进制格式。它有以下优点:

  • 部署到设备时占用较少的存储空间。
  • 装载时需要较少内存。
  • 它可以包含嵌入的新行。

对于条件有限的设备来说,这些优点是十分重要和有效的。

    现在让我们编写一个简单的 MIDlet,根据地区显示字符串和图片。图 5 显示了资源文件结构。在以下步骤中,我将使用 WebSphere Everyplace Micro Environment 6.1 和 IBM WebSphere Everyplace Micro Environment 移植包的 JSR-238 库。

编写 MIDlet 程序之前需要知道的标准。
  • 地区标识符 地区标识符必须符合 MIDP 2.0 规范定义的格式,使用短横线而不是下划线(例如,“en-US”)。
  • 基本名称 使用基本名称将相关资源分组(例如,“labels” 和 “messages”)。
  • 资源文件结构 必须将不同地区的资源文件放到 /global/{地区标识符}目录下。


图 5. 资源文件结构
资源文件结构

步骤 1:准备资源文件

    二进制的资源文件必须遵守严格的格式。(参考 JSR-238 规范)。可以使用任何一种二进制文件编辑器或者 Nokia JSR-238 RI 创建资源文件。

    为演示起见,我使用 Nokia JSR-238 RI 来创建二进制资源文件,如 图 6 所示。我想为 zh-TW,de-DE 和 es-ES 这几个地区显示 “Welcome” 字符串和一幅图片。可以阅读 Nokia 238 RI 的自述文件了解相关步骤,但基本上,您需要为字符串和图片编写一个 xml 资源文件,运行 ResourceMaker 工具获得二进制文件。



图 6. Nokia JSR-238 RI 示例资源文件
RNokia JSR-238 RI 示例资源文件

步骤 2:将二进制资源文件放在正确的文件结构中

    在 图 7 中,采用当地语言的字符串存储在一个地区文件夹中,图片的二进制文件存储在 \global\WelcomeMidlets.res 中。您不会希望图像的二进制文件存储在每一个资源文件中!



图 7. 将资源文件放到正确的结构中
将资源文件放到正确的结构中

步骤 3:编写 MIDlet

为了从资源文件检索字符串和图片,您需要执行下列步骤:

  1. 构造一个 ResourceManager 实例。您可以指定一个地区,也可以使用系统默认的地区。表 1 介绍了可用于构建一个 ResourceManager 实例的两种方法。第一种方法只要求基本名称,它将使用系统默认的地区。第二种方法要求基本名称和特定地区。



表 1. ResourceManager 方法

public static final ResourceManager getManager(java.lang.String baseName)
public static final ResourceManager getManager(java.lang.String baseName, java.lang.String locale)

以下代码返回具有 “WelcomeMidlet” 基本名称以及系统默认地区的 ResourceManager 实例:

res = ResourceManager.getManager("WelcomeMidlet");
            

使用以下代码检索字符串:

//STRING_WELCOME is the resource id in the resource file; in this case 1
StringItem desc = new StringItem(res.getString(STRING_WELCOME),"");
            

使用下列代码检索图片:

//IMAGE_EILEAN is the resource id in resource file, in this case 111
byte[] imageData = res.getData(IMAGE_EILEAN);
            

清单 1 演示了这些步骤。



清单 1. 字符串和图片检索

    
try
{
  //Get the resource manager with the base name and default systemlocale
  res = ResourceManager.getManager("WelcomeMIDlet");
  //Retrieve the welcome string
  StringItem desc = new StringItem(res.getString(STRING_WELCOME),"");
  fmMain = new Form(res.getString(STRING_WELCOME));
  fmMain.append(desc);
  //Retrieve the Eilean image
  byte[] imageData = res.getData(IMAGE_EILEAN);
  Image eilean  = Image.createImage(imageData, 0, imageData.length);
  fmMain.append(eilean);
}catch(ResourceException re)
{
  System.out.println("Exception when retrieving resources");
  re.printStackTrace();
}
      

  1. 运行 MIDlet。我在 Eclipse 中使用 IBM J9 仿真器运行它。

表 2 展示了在 zh-TW 和 de-DE 地区显示 “Welcome MIDlet” 的结果。



表 2. Welcome MIDlet

zh-TW 地区 de-DE 地区
Welcome MIDlet zh-TW Welcome MIDlet de-DE

 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章