Java me JavaME国际化(i18n)

Java me JavaME国际化(i18n),java-me,internationalization,Java Me,Internationalization,有人对JavaME的国际化有所了解吗?我在寻找尽可能多的信息,比如例子、经验和一些最佳实践。 谢谢想一想。J2ME不支持i18n,因为它不支持api(不能使用资源包)。但我们可以在有限的范围内做到这一点。这是我发现的 对于给定的J2ME应用程序,支持英语和中文(排版字符)即使不是不可能,也是很困难的。但是支持英语和说西班牙语更容易(我忘记了谈论i18n支持的正确命名法,但你明白了) 我们可以在一个配置类中包含所有字符串,这样您就可以将这个类换成不同的语言 我们可以在应用程序首次启动时从服务器下载

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

想一想。J2ME不支持i18n,因为它不支持api(不能使用资源包)。但我们可以在有限的范围内做到这一点。这是我发现的

  • 对于给定的J2ME应用程序,支持英语和中文(排版字符)即使不是不可能,也是很困难的。但是支持英语和说西班牙语更容易(我忘记了谈论i18n支持的正确命名法,但你明白了)
  • 我们可以在一个配置类中包含所有字符串,这样您就可以将这个类换成不同的语言
  • 我们可以在应用程序首次启动时从服务器下载文本/字符串,从而能够将其从服务器中调出
  • 由于屏幕大小不同,最好使用自定义字体,以便在显示文本时编写代码来计算文本长度。这将使多语言支持更容易
  • 还可以基于不同的语言从服务器下载图像资产。但是我不认为我们可以改变midlet图标,所以它应该是通用的

  • 考虑到这一点,设计多语言支持是可能的。

    omemuhammed的答案是移动领域本地化的一个极好的覆盖范围

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

    本地化的其他注意事项是屏幕布局。我还建议使用自定义字体,以便更好地控制许多不同设备的显示。您需要一些自动包装代码,以便能够调整到不同的屏幕分辨率和纵横比,并且需要一种方法来处理在某些设备上从屏幕上运行的字符串。分页或滚动都是一个很好的解决方案


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

    请参阅JavaME的实际国际化规范:

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

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


    当实际字符不是通常的ascii字符时,您确实需要使用文本框或文本字段,以便在屏幕上显示本地化的本机控件。

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

    • 清单项目1
    • 清单项目2
    • 清单项目3
    但是子弹会在阿拉伯语屏幕的另一边(尝试在这里制作,但我无法生成一个倒排列表:p)

    另一件事是,将字符串存储在类中比存储在纯文本属性中更好,因为这可能会导致解释某些语言的unicode时出错,具体取决于您使用的操作系统和文本编辑器


    我通常做的是使用一个I18nManager类将语言存储在startApp中,并通过这个类获得我需要的所有字符串

    谢谢,我会记住你的建议。只有一件事,关于第3点,这将是一个问题,因为它需要对Midlet进行签名,否则设备将投诉并请求授权。我假设已签名的应用程序。在大多数运营商(至少在美国)上,这是J2ME工作的一个不幸方面。他们要求应用程序必须在网络连接上签名。在很多情况下,我不知道德语翻译的“问题”