Java 本地化最佳实践
我有一个带有服务器和Swing客户端的Java应用程序。现在,我需要本地化用户界面,并且可能还需要一些数据需要特定于区域设置。具体来说,我想听听你的意见。
- 应如何将 UI 的本地化字符串分发到属性文件中?在我的应用程序中,有几个视图,每个视图都有几个面板。我应该为每种语言为每个面板或视图设置一个本地化文件,还是应该将一种语言的所有翻译保留在同一个文件中?我目前倾向于每个视图和语言一个文件,但我不确定我应该如何处理一些出现在许多地方的特定于域的术语。对多个文件进行相同的翻译听起来不太好。
- 服务器会引发一些异常,其中包含应向用户显示的消息。我可以从会话中获取选定的区域设置并在服务器上处理本地化,但我觉得将所有本地化文件保留在客户端会更优雅。我一直在考虑仅从服务器发送一个本地化密钥,其中包含某种占位符,用于错误特定信息,这些信息将除例外一样发送。然后,客户端可以根据本地化键构造消息,并将占位符替换为特定于错误的信息。这听起来像是处理它的好方法,还是有其他选择?通常,我的异常消息包含一些针对每种情况而更改的其他信息。例如,它可以是“用户名为Khilon的用户已经存在”,在这种情况下,属性文件中的字符串将类似于“用户名{0}已经存在的用户”。
- 数据的本地化是我最不清楚的领域。由于我不确定是否会需要它,到目前为止,我还没有计划太多。数据库部分听起来很简单,您基本上只需要一个额外的字符串表和一个列来告诉字符串是哪个区域设置。虽然我不确定是否最好为每个数据表(例如产品和Product_names)设置一个本地化表,或者我是否可以使用一个表作为所有数据表的本地化字符串。真正棘手的部分是如何处理UI,因为在某种程度上,用户需要以多种语言为对象输入文本。在实践中,这可能意味着例如,芬兰的工人会用芬兰语和英语给物体起一个名字,然后另一个国家的工人可以把它翻译成她自己的语言。如果你们中有人做过类似的事情,我很乐意听到你们是如何做到的。
我非常感谢所有能与我分享经验的人。
附言:如果您碰巧知道任何关于这个主题的非常好的网站或书籍,我会很高兴听到它们。当然,我已经做了一些谷歌搜索,并阅读了一些关于本地化的文章,但还没有令人振奋。