JavaME国际化(国际化)
一些想法。 J2ME不支持i18n,因为它的API支持不存在(不能使用资源包)。但我们可以在一定程度上做到这一点。这是我发现的。
- 对于给定的J2ME应用程序,如果不是不可能支持英语并说中文语言(印刷字符),则很困难。但更容易支持英文,并说西班牙语(我忘了正确的术语来谈论国际化支持,但你明白了)。
- 我们可以在一个配置类中包含所有字符串,这样您就可以将这个字符串替换为不同的语言。
- 我们可以在初次启动应用程序时从服务器下载文本/字符串,从而可以从服务器中将其交换出去。
- 由于屏幕尺寸不同,最好使用自定义字体,以便在显示代码时可以编写代码以计算文本长度。这将使多语言支持变得更容易。
- 也可以根据不同的语言从服务器下载图像资产。但我不认为我们可以改变midlet图标,所以它应该是通用的。
考虑到这一点,可以设计多种语言支持。
omemuhammed的答案是在移动领域本地化的优秀覆盖范围。
我只需要支持EFIGS(英文,法文,意大利文,德文和西班牙文)。我们将所有字符串存储在XML中,并为每种语言提供了一个XML包。然后,我们可以将这些XML包编译为专有的二进制数据,并且能够将所有5种语言构建到构建中,在应用程序大小紧张的情况下只有一种构建语言,或者从服务器下载二进制文件。
本地化的其他考虑因素是屏幕布局。我还推荐自定义字体,以便更好地控制许多不同设备上的显示。您需要一些自动换行代码才能适应不同的屏幕分辨率和宽高比,并且您需要一种方法来处理某些设备上的屏幕上运行的字符串。分页或滚动将是一个很好的解决方案。
最后,只要知道德国人会搞砸你的格式。尝试允许20-30%的英语填充菜单和其他UI元素,因为德语翻译将比其他语言长得多。
看到实际的国际规格的的JavaME:http://www.jcp.org/en/jsr/detail?id=238
最新Symbian手机应该支持这一点。
一个明显的建议是在本地电话上实际尝试你的应用程序:从瑞士(它应该支持至少4种语言)和另一个来自香港(有3个不同版本的“中文”)的电话。这也许值得考察东欧/前苏联。
如果实际字符不是通常的ascii字符,则需要使用TextBox或TextField以便在屏幕上显示本地化的本地控件。
请记住,当你使用RTL(右击到左)语言,如阿拉伯语,你应该反转屏幕上几乎所有的位置,就像一个列表看起来像这样在拉丁语
- 名单项目1
- 列表项2
- 列表项3
,但子弹会在屏幕上的阿拉伯另一侧(试图使它在这里,但我could'n产生呐inverte d列表:P)
另一个问题是,最好将字符串存储在类中而不是纯文本属性,因为这可能会导致某些错误解释某些语言的unicode,具体取决于操作系统和文本编辑器使用。
我通常做的是有一个I18nManager类,它在startApp中存储语言,并通过这个类获得我需要的所有字符串。
谢谢,我会记住你的建议。 只有一件事,关于第3点,这将是一个问题,因为它需要签名Midlet或设备将会抱怨并要求授权。 – 2009-02-01 21:18:01
我假定已签名的应用程序。这是J2ME在大多数运营商(至少在美国)工作的一个不幸的方面。他们需要应用程序签署网络连接 – omermuhammed 2009-02-01 21:22:43