有没有人对JavaME的国际化有一些了解?我正在寻找尽可能多的信息,如例子,经验和一些最佳实践。 感谢
答案 0 :(得分:3)
一些想法。 J2ME不支持i18n,因为api支持不存在(不能使用资源包)。但我们可以在有限的程度上做到这一点。这是我发现的。
考虑到这一点,可以设计多种语言支持。
答案 1 :(得分:1)
我只需要支持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)语言(如阿拉伯语)时,您应该反转屏幕上几乎所有内容的位置,就像拉丁语言中的列表一样
但子弹将在阿拉伯语的屏幕的另一侧(尝试在这里制作,但我无法生成倒置列表:P)
另一件事是将字符串存储在类中而不是纯文本属性更好,因为根据您使用的操作系统和文本编辑器,这可能会导致某些语言的unicode解释错误。
我通常做的是有一个I18nManager类,它将语言存储在startApp中,通过这个类我得到了我需要的所有字符串。