我有一个带有服务器和Swing客户端的Java应用程序。现在我需要本地化用户界面,并且可能还需要特定于区域设置的一些数据。有几件具体的事情我想听听你的意见。
我非常感谢所有能与我分享他们的经验的人。
如果你碰巧知道任何关于这个主题的特别好的网站或书籍,我将很高兴听到他们。当然,我已经做了一些谷歌搜索,并阅读了一些关于本地化的文章,但还没有什么令人兴奋的事情。
发布于 2010-09-03 03:01:03
实际上,您正在谈论的是国际化(i18n),而不是本地化(L10n)。根据我的经验,你走在正确的道路上。
公元1年)。每个视图和区域设置一个属性文件(不是必须的语言,因为您可能希望根据国家/地区对某些语言使用不同的翻译,例如,对英国和美国英语使用不同的字符串,因此区域设置不同)是正确的方法。由于应用程序的发展趋势,当你只想修改一个视图时,它可以节省一大笔钱(因为翻译者甚至会为他们不会接触的东西向你收费-他们实际上必须找到需要更新/新翻译的字符串)。如果操作得当(总是在文件末尾添加新字符串),还可以更容易地使用翻译记忆库工具。
公元2年)。最好的想法是只从服务器或其他进程发送资源键;其他方法可以附加资源键,并可能使用分隔符附加数据(即数字值),以便可以重新创建消息并将其重新格式化为本地语言。
公元3年)。我见过几种本地化数据库的方法,但最好的方法(这不仅是我的观点,也是IEEE成员的观点)是存储资源键并使用适当的语言环境在客户端重新创建数据。当然,这适用于预安装的数据,如果您允许用户输入数据,则会出现其他问题……没有什么灵丹妙药,人们需要思考什么最适合他/她的环境。我倾向于包含一个外键列来标识语言,但这实际上取决于要存储的数据的种类。
不幸的是,i18n并没有在这里结束,请记住正确格式化日期和数字,以便使用您的程序的人能够理解它们。而且,如果您碰巧有一些字符串列表,排序顺序也应该取决于区域设置(称为排序规则)。Sun过去有(现在我们深爱的甲骨文)有相当好的i18n踪迹,你可以在这里找到:http://download.oracle.com/javase/tutorial/i18n/index.html。
如果你想阅读有关i18n和L10n主题的好书,这将节省你学习这些主题的时间(虽然不是必须的,但会教你如何编程),微软出版社有一本很好的书:“开发国际软件”- http://www.amazon.com/Developing-International-Software-Dr/dp/0735615837。它仍然是相关的,尽管相当古老。
发布于 2010-09-03 03:02:47
1)我通常将所有内容都保存在一个文件中,并使用表示属性使用位置的名称。例如,我以"view“和"menu”作为前缀。
2)是的,传递密钥会让事情变得更简单,也会让服务器代码更容易测试。它还避免了将区域设置信息传递给服务器,让服务器决定客户端的语言。它是一个胖客户端,所以让它来处理本地化。
3)我以前没有本地化过数据(通常只有标签和静态UI谓词),但我可能倾向于使用包含所有本地化字符串和地区的单个表(为了简单起见)。我不确定您在参考UI时所问的是什么,但我建议您确保您使用的任何字符集都支持您想要支持的所有语言。请务必阅读Joel Spolsky的题为:The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)的文章
https://stackoverflow.com/questions/3629945
复制相似问题