JavaME国际化(i18n)

时间:2009-01-30 15:03:32

标签: java-me internationalization

有没有人对JavaME的国际化有一些了解?我正在寻找尽可能多的信息,如例子,经验和一些最佳实践。 感谢

4 个答案:

答案 0 :(得分:3)

一些想法。 J2ME不支持i18n,因为api支持不存在(不能使用资源包)。但我们可以在有限的程度上做到这一点。这是我发现的。

  1. 对于给定的J2ME应用程序来说,支持英语并说中文(印刷字符)是很困难的。但更容易支持英语并说西班牙语(我忘记了正确的术语来谈论i18n支持,但你明白了。)
  2. 我们可以在一个配置类中包含所有字符串,这样就可以将这个字符串换成不同的语言。
  3. 我们可以在初次启动应用程序时从服务器下载文本/字符串,因此可以将其从服务器中交换出来。
  4. 由于屏幕尺寸不同,最好使用自定义字体,以便在显示代码时可以编写代码来计算文本长度。这将使多语言支持更容易。
  5. 还可以根据不同语言从服务器下载图像资源。但我不认为我们可以更改midlet图标,因此它应该是通用的。
  6. 考虑到这一点,可以设计多种语言支持。

答案 1 :(得分:1)

omemuhammed的答案是对移动领域本地化的绝佳报道。

我只需要支持EFIGS(英语,法语,意大利语,德语和西班牙语)。我们将所有字符串存储在XML中,每种语言都有一个XML包。然后,我们将这些XML包编译成专有的二进制数据,并且能够将所有5种语言构建到构建中,在应用程序大小紧张的情况下只有一种语言用于构建,或者从服务器下载二进制文件。 / p>

本地化的其他考虑因素是屏幕布局。我还推荐自定义字体,以便更好地控制许多不同设备的显示。您需要一些自动换行代码才能调整到不同的屏幕分辨率和宽高比,您需要一种方法来处理某些设备上屏幕上运行的字符串。分页或滚动都是一个很好的解决方案。

最后,要知道德语会搞砸你的格式。尝试允许20-30%的英文填充用于菜单和其他UI元素,因为德语翻译将比其他语言长得多。

答案 2 :(得分:1)

请参阅JavaME的实际国际化规范:http://www.jcp.org/en/jsr/detail?id=238

最近的Symbian手机应该支持这一点。

一个明显的建议是在本地化的手机上实际尝试你的应用程序:从瑞士(它应该支持至少4种语言)和另一种来自香港(具有3种不同版本的“中文”)的手机。也值得一看东欧/前苏联。

当实际字符不是通常的ascii字符时,您需要使用TextBox或TextField才能在屏幕上显示本地化的本机控件。

答案 3 :(得分:0)

请记住,当您使用RTL(righ to left)语言(如阿拉伯语)时,您应该反转屏幕上几乎所有内容的位置,就像拉丁语言中的列表一样

  • 列出项目1
  • 列出项目2
  • 列出项目3

但子弹将在阿拉伯语的屏幕的另一侧(尝试在这里制作,但我无法生成倒置列表:P)

另一件事是将字符串存储在类中而不是纯文本属性更好,因为根据您使用的操作系统和文本编辑器,这可能会导致某些语言的unicode解释错误。

我通常做的是有一个I18nManager类,它将语言存储在startApp中,通过这个类我得到了我需要的所有字符串。