繁体   English   中英

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

[英]best way to store/use multiple languages

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

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

如:Console.Write(FILE_NOT_FOUND);

编译后会变成由语言决定的字符串。 我可能会坚持使用 3 种语言(丹麦语、英语、德语),但我认为这并不重要。

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

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

Danish.txt Line1: FILE_NOT_FOUND=Filen blev ikke fundet。 Prøv igen Line2 Line3 等

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

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

你能给我一些意见吗? :)

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

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

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

- - 编辑 - -

此处提供了替代教程。 这个使用了更好的命名,所以它可能更清楚它是如何工作的。

我认为您最好的选择是使用 .NET 框架的内置本地化资源。 您可以在此处阅读有关其机制的更多信息。

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

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

在此处查看本地化/国际化示例:

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

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

这个话题太大了,无法回复。

使程序为新语言做好准备的过程通常称为“国际化”或“i18n”,而将其实际运行的过程称为“本地化”或“l10n”。

简而言之,正如您所说,您希望用字符串资源替换硬编码字符串,然后通常为不同的语言创建不同的资源文件。 假设您在 .NET 中工作(对于 C# 来说是一个相当好的假设),微软做了很多事情来使它更容易。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM