存储/使用多种语言的最佳方式

如果我想创建支持多种语言的ac#应用程序,我应该如何存储它们?

我可能会在应用程序中使用常量作为价值持有者。

如:Console.Write(FILE_NOT_FOUND);

编译时,它将更改为由语言确定的字符串。 我可能会坚持3种语言(丹麦语,英语,德语),但我认为这并不重要。

为每种语言创建一个类文件似乎是一种浪费,在编译应用程序时都会处理这些文件。 这也意味着每次要更改字符串时都必须重新编译并重新分发整个程序。 据我所知,硬编码字符串是一件坏事。

也许是一个文本文件? English.txt第1行:FILE_NOT_FOUND =找不到文件。 再试一次Line2 Line3等

Danish.txt第1行:FILE_NOT_FOUND = Filen blev ikke fundet。 PrøvligenLine2 Line3等

等等。 如果用户选择英语,则会读取文本文件并设置不同的常量值。

我能想到的最后一个是将它放在SQL数据库中。

你能给我一些意见吗? 🙂

此外,我尝试写FILE _ NOT _ FOUND(没有空格,但文本编辑器不会让我

使用资源文件。 这是处理本地化的标准方法。

有关详细信息, 请参阅本教程。

—编辑—

这里有一个替代教程。 这个使用更好的命名,因此可能更清楚它是如何工作的。

我认为您最好的选择是使用.NET Framework的内置本地化资源。 你可以在这里阅读更多关于它的机制。

至于使用数据库来存储你的本地化元素(文本,图像等),这当然是一个常见的选择,但我认为这很明显,因为开发人员理解从数据库获取数据,而不是使用卫星程序集等。 使用数据库有很多问题,所以我只列举几个:1)增加了应用程序部署的复杂性2)数据库服务器上的附加负载,3)你在哪里存储本地化的消息来说明数据库已关闭:)

使用某种文本文件(可能是XML)也会带来一些部署问题,但更重要的是,“动态”进行文本更改的高度灵活性有些过高。 除了拼写错误和笨拙的措辞之外,随着应用文本的变化,您几乎总是会发布新版本。

在这里查看本地化/国际化样本:

http://msdn.microsoft.com/en-us/goglobal/bb688096.aspx

我也听过这本书的好消息 。

这个主题对于回复来说太大了。

使程序为新语言做好准备的过程通常称为“国际化”或“i18n”,并且实现该程序并实际运行的过程是“本地化”或“l10n”。

简而言之,您希望将硬编码字符串替换为字符串资源,如您所说,然后通常为不同语言创建不同的资源文件。 假设你正在使用.NET(C#的一个相当好的假设),微软做了很多让它变得更容易的东西。

请记住,除了语言之外还有其他本地化问题。 例如,丹麦货币符号可能不是’$’,而是欧元符号,日期几乎肯定是缩写的,许多地方使用’,’作为小数点和’。’。 对于数千分隔符,与英语实践相反。