Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 关于多语言应用的gotchas的信息_C#_Localization_Asp.net Mvc 4_Multilingual_Globalization - Fatal编程技术网

C# 关于多语言应用的gotchas的信息

C# 关于多语言应用的gotchas的信息,c#,localization,asp.net-mvc-4,multilingual,globalization,C#,Localization,Asp.net Mvc 4,Multilingual,Globalization,我目前正在开发包含多种语言数据的.NET4.5应用程序 我是新手,所以我正在寻找解释不同语言编码、全球化、本地化等概念的资源 关于我应该在哪里查找此类信息的任何提示?MSDN-一如既往-是最好的资源: 从我自己的经验中得出一些结论: 在数据库中使用unicode类型。因此,对于SQL Server,将文本类型设为nvarchar、ntext而不是varchar、text,使它们成为unicode。否则,您将丢失中文等语言的信息 让你的设计更灵活,一个英语10个字符的短语在德语或法语中可能是德语或

我目前正在开发包含多种语言数据的.NET4.5应用程序

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


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

MSDN-一如既往-是最好的资源:

从我自己的经验中得出一些结论:

  • 在数据库中使用unicode类型。因此,对于SQL Server,将文本类型设为nvarchar、ntext而不是varchar、text,使它们成为unicode。否则,您将丢失中文等语言的信息


  • 让你的设计更灵活,一个英语10个字符的短语在德语或法语中可能是德语或法语的3-4倍,让你的按钮更灵活(滑动门技术,例如html),让你的宽度和高度百分比尽可能地响应

  • 在您的资源文件中,使用复数和单数形式的字符串以及数字占位符,例如,如果您有一个短语表示“在此位置2公里以内”,那么您可能需要一个km资源条目,与单数/复数(km,km)场景的整句话分开不要以为你可以为多元化加上一个“s”。这不适用于所有语言。一些语言甚至对单数、复数和两个不被视为复数的对象(即阿拉伯语)有特殊情况(关于这一点,请参阅德韦恩的评论)

  • 如果你想本地化一种语言,如阿拉伯语或希伯来语,那么这些是从右到左,你的整个设计(包括图片)将需要改变方向。在HTML中,这与具有“dir:rtl”属性一样简单,但有时可能很棘手

  • 这不仅仅是关于翻译。将要更改的内容包括数字格式、使用逗号分隔符或句点表示小数点和千、前后的货币符号、货币格式、日期格式等。。。确保所有这些都由.net framework使用当前用户的区域性进行格式化

  • 在UI中不要硬编码任何字符串。一个简便的技巧是为一种不使用拉丁字符(中文、俄文、阿拉伯文等)的语言创建一个资源语言,为该语言创建一个资源文件,并用谷歌提供的该语言的随机字符串填充所有条目。运行你的应用程序,你就可以很容易地发现不来自资源文件的UI部分(它们是中文字符中间的英文字符)。

  • 这不仅仅是UI的问题。如果您是从后端发送消息,例如来自服务的响应等,也需要本地化。在某些情况下,甚至需要本地化事件日志中记录的错误消息。你一定要考虑一下

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


  • “英语中10个字符的短语在德语或法语中很容易变成3-4倍大”--或者反之亦然。不是真的。从我所看到的来看,英语似乎是最简洁的,德语似乎非常冗长。而且我不是以英语为母语的人,顺便说一句,所以我对此不偏不倚!除了预期这比你想象的要困难得多之外,我看不到任何补充。@kabaros有些德语单词需要一个英语短语to正确翻译。“Der Vorleser”出现在脑海中。这是“读者”的原始标题,但德语单词实际上意味着“大声朗读的人”。这里有一些很好的提示。3)比这稍微复杂一点,阿拉伯语可以有6种复数形式。好的外卖永远不会像3)中所建议的那样打断字符串,而是给翻译人员整个叮当声,让他们根据需要翻译每个复数形式。组合句子对大多数语言都不好。对于6)我建议做一些伪本地化,这样您就可以阅读文本,但它都使用非ASCII unicode,如果您测试unicode,则会带来副作用。