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

ama*_*eur 0 c# globalization multilingual localization asp.net-mvc-4

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

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

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

kab*_*ros 7

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

从我自己的经验中得到的一些问题:

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

  2. 使你的设计灵活,一个10英寸的英文短语可以很容易地是德语或法语的3-4倍,使你的按钮灵活(例如html的滑动门技术),使你的宽度和高度百分比和响应尽可能.

  3. 在您的资源文件中,有多个和单数形式的字符串,其中包含数字的占位符,例如,如果您有一个短语"在距离此处2公里范围内",那么您可能需要一个与整个句子分开的Km资源条目单数/复数(公里,公里)的情景不假设您可以只为复数添加"s".这不适用于所有语言.有些语言甚至有一个特殊的例子,用于单数,复数和两个不被视为复数的对象(即阿拉伯语) (请看Dwayne的评论,关于这一点的有趣入口)

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

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

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

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

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