为什么将国际化“单词”存储在单独的(xml)文件中?

时间:2011-05-11 03:09:27

标签: c# java javascript .net

我一直在读人们如何进行国际化。似乎共同的共识是将这些字符串保存在单独的文件(通常是xml)中并在必要时加载它。

我想知道为什么不将这些字符串存储在数据库中呢?这种方式不是更好吗?

Btw我的应用程序的性质是一个网站应用程序。

3 个答案:

答案 0 :(得分:4)

最重要的是将字符串表存储在编译单元之外,以便合并更新的翻译不需要重建。这允许在稍后的时间点合并新的或更新的翻译而不会有太多麻烦。

当然,这些字符串表可以存储在任何地方。如果你想把它们放在一个数据库中,那就把自己搞定吧。只要您的申请能够与他们联系并且您的翻译人员知道如何将他们送到正确的地方,它就没有任何区别。

答案 1 :(得分:3)

严肃的国际化始终是一个拥有大量零件和参与者的大项目。正如@zerkms所暗示的那样,翻译任务通常是世界各地的个人和团队的离线活动。

因此,拥有一个翻译团队可以生成的干净的工作产品(翻译的XML文件)是有意义的。

文件翻译后,您可以自行决定如何处理软件中的翻译。将它们保存在内存中是很常见的,因为您经常需要将变量替换为占位符。

答案 2 :(得分:1)

如果存储在数据库中,每次“区域设置”切换时,都会引入查询数据库的额外开销。

这是资源捆绑的原因。您将它与源代码一起打包,但您不必更改代码以添加对语言的支持。

您也可以自己子类化resourcebundle类并实现jdbc支持,以便特定于语言环境的字符串存储在数据库中。

http://java.sun.com/developer/technicalArticles/Intl/ResourceBundles/