有关多语言应用的问题的信息

时间:2012-10-11 21:47:29

标签: c# localization asp.net-mvc-4 multilingual globalization

我目前正在开发包含多语言数据的.net 4.5应用程序。

我是新手,所以我正在寻找解释不同语言编码,全球化,本地化等概念的资源。

关于我应该在哪里寻找此类信息的任何提示?

1 个答案:

答案 0 :(得分:7)

MSDN - 一如既往 - 是最好的资源:http://msdn.microsoft.com/en-us/library/h6270d0z.aspx

根据我自己的经验得出一些问题:

  1. 在数据库中使用unicode类型。因此,对于SQL Server,请将文本类型设为nvarchar,ntext而不是varchar,将文本设置为unicode。否则您将丢失中文

  2. 等语言的信息
  3. 让你的设计变得灵活,一个10个字符的英文短语可以很容易地成为德语或法语的3-4倍,让你的按钮变得灵活(例如html的推拉门技术),让你的宽度变宽和高度百分比,并尽可能地响应。

  4. 在您的资源文件中,有多个和单数形式的字符串以及数字占位符,例如,如果您有一个短语“在距离此地方2公里范围内”,那么您可能需要一个资源条目用于Km对于单数/复数(千米,公里)的场景,与整个句子分开,不要假设你可以只为复数添加“s”。这不适用于所有语言。有些语言甚至有一个特殊的例子,用于单数,复数和两个不被视为复数的对象(即阿拉伯语)(看看Dwayne的注释,就这一点有趣的摄入量)

  5. 如果您要使用阿拉伯语或希伯来语等语言进行本地化,那么这些语言是从右到左,您的整个设计(包括图片)将需要更改方向。在HTML中,这很容易 - 主要是 - 具有“dir:rtl”属性,但有时它可能很棘手。

  6. 这不只是关于翻译。将改变的事情包括数字格式,使用逗号分隔符或小数点和数千的句点,前后的货币符号,货币格式,日期格式等...确保所有这些都由.net框架使用文化格式化当前用户。

  7. 在您的用户界面中不对任何字符串进行硬编码时要严格遵守。一个方便的技巧是为不使用拉丁字符(中文,俄语,阿拉伯语等)的语言提供资源语言,为该语言创建资源文件,并使用该语言的Google随机字符串填充所有条目。运行您的应用程序,您将能够轻松发现不属于资源文件的UI部分(它们将是中文字符中的英文字符)。

  8. 这不仅仅是关于UI。如果您从后端发送消息,例如来自服务的响应等,则还需要进行本地化。在某些情况下,甚至需要对事件日志中记录的错误消息进行本地化。一定要考虑一下。

  9. 的Javascript。如果您使用繁重的javascript进行ajaxified web,则可能需要使用诸如jquery本地化的库来帮助进行本地化。您必须以JS键值类型的结构提供资源文件。由于这不如ASP.NET那么标准,它可能需要根据您的需要进行一些即兴创作(诸如如何使用资源加载这些文件,一次性或使用AMD,或者可能创建一个服务,返回本地化字符串,或者让asp.net在编译时绑定实际资源文件中的值等...)