Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “为什么店铺国际化”;字;在单独的(xml)文件中?_C#_Java_Javascript_.net - Fatal编程技术网

C# “为什么店铺国际化”;字;在单独的(xml)文件中?

C# “为什么店铺国际化”;字;在单独的(xml)文件中?,c#,java,javascript,.net,C#,Java,Javascript,.net,我一直在读一些关于人们如何做国际化的书。似乎大家的共识是将这些字符串保存在一个单独的文件(通常是xml)中,并在必要时加载它 我想知道为什么不把这些字符串存储在数据库中呢?这样不是更好吗 顺便说一句,我的应用程序的本质是一个网站应用程序。最重要的是将字符串表存储在编译单元之外,这样合并更新的翻译就不需要重新构建。这使得新的或更新的翻译可以在以后的时候合并,而不会有太多麻烦 当然,这些字符串表可以存储在任何地方。如果你想把它们放进数据库,那就把自己弄晕。只要您的应用程序能够访问它们,并且您的翻译人

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

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


顺便说一句,我的应用程序的本质是一个网站应用程序。

最重要的是将字符串表存储在编译单元之外,这样合并更新的翻译就不需要重新构建。这使得新的或更新的翻译可以在以后的时候合并,而不会有太多麻烦


当然,这些字符串表可以存储在任何地方。如果你想把它们放进数据库,那就把自己弄晕。只要您的应用程序能够访问它们,并且您的翻译人员知道如何将它们传递到正确的位置,这并没有什么区别。

如果您确实存储在数据库中,则每次切换“区域设置”时都会增加查询数据库的额外开销

这就是创建资源包的原因。您可以将其与源代码一起打包,但不必更改代码来添加对语言的支持

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


严肃的国际化始终是一个大项目,有很多角色和参与者。正如@zerkms所提到的,翻译任务通常是由世界各地的个人和团队进行的离线活动

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


一旦文件被翻译,就取决于您如何在软件中处理翻译。将它们保存在内存中是很常见的,因为您经常需要将in变量替换到占位符中。

处理xml文件(我的意思是在翻译时)要容易得多。我的意思是,这个问题不是专门针对javabtw的。访问外部xml文件时是否也会有开销?加载翻译文件启动时放入程序内存或memcache。两者都比使用dbms好。