我目前正在开发包含多语言数据的 .net 4.5 应用程序。
我是新手,所以我正在寻找解释概念的资源,例如不同语言的编码、全球化、本地化等。
关于我应该在哪里查找此类信息的任何提示?
我目前正在开发包含多语言数据的 .net 4.5 应用程序。
我是新手,所以我正在寻找解释概念的资源,例如不同语言的编码、全球化、本地化等。
关于我应该在哪里查找此类信息的任何提示?
MSDN - 一如既往 - 是最好的资源:http: //msdn.microsoft.com/en-us/library/h6270d0z.aspx。
从我自己的经验中得到的一些问题:
在数据库中使用 unicode 类型。因此,对于 SQL Server,请将您的文本类型设为 nvarchar、ntext 而不是 varchar、text 以将它们作为 unicode。否则会丢失中文等语言的信息
使您的设计灵活,英语中 10 个字符的短语很容易成为德语或法语中的 3-4 倍,使您的按钮灵活(例如用于 html 的滑动门技术),使您的宽度和高度百分比和响应尽可能。
在您的资源文件中,具有数字占位符的复数和单数形式的字符串,例如,如果您有一个短语说明“距离这个地方 2 公里以内”,那么您可能需要将 Km 的资源条目与整个句子分开单数/复数(公里,公里)的场景不要假设您可以只添加一个“s”来表示复数。这不适用于所有语言。有些语言甚至对单数、复数和两个不被视为复数(即阿拉伯语)的对象有特殊情况(请参阅 Dwayne 的评论以获取关于这一点的有趣内容)
如果您要为阿拉伯语或希伯来语等语言进行本地化,那么这些是从右到左的,您的整个设计(包括图片)将需要更改方向。在 HTML 中,这与拥有“dir: rtl”属性一样简单(主要是),但有时可能会很棘手。
这不仅仅是关于翻译。会改变的事情包括数字格式、使用逗号分隔符或小数点和千位的句点、前后的货币符号、货币格式、日期格式等...确保所有这些都由 .net 框架使用文化进行格式化当前用户的。
请注意不要在 UI 中对任何字符串进行硬编码。一个方便的技巧是为不使用拉丁字符(中文、俄语、阿拉伯语等)的语言创建资源语言,为该语言创建一个资源文件,并使用来自 Google 的该语言的随机字符串填充所有条目。运行您的应用程序,您将能够轻松发现不是来自资源文件的 UI 部分(它们将是中文字符中间的英文字符)。
这不仅仅是关于用户界面。如果您从后端发送消息,例如来自服务的响应等,则也需要本地化。在某些情况下,甚至需要本地化事件日志中记录的错误消息。确保你考虑到这一点。
Javascript。如果您正在使用大量 javascript 进行 ajaxified 网络,您可能需要使用诸如 jquery 本地化之类的库来帮助本地化。您必须以 JS 键值类型的结构提供资源文件。由于这不如 ASP.NET 标准,因此可能需要您根据需要进行一些即兴创作(例如如何使用资源加载这些文件、一次性或使用 AMD,或者可能创建一个服务返回本地化的字符串,或者让 asp.net 在编译时绑定来自实际资源文件的值等...)