我们开发了一个中型ASP.NET / SQL Server应用程序,它使用资源文件来提供英语和西班牙语用户界面变体。整个数据库使用Unicode数据类型。现在我们被要求添加普通话。我没有在亚洲语言中进行本地化的经验,所以我真的无法想象这会是什么样的工作。
我的问题是:
以前的经验或最佳实践指南的报告是最受欢迎的。感谢。
答案 0 :(得分:6)
在技术方面,我认为这并不困难。如果您不使用Unicode,那么添加对非西方语言的支持将暴露编码问题,但是使用UTF-8编码和Unicode SQL类型(nvarchar
而不是varchar
)几乎是常态
我想说增加的复杂性和不确定性更多的是非技术方面。当我们看到1:1的翻译并且可以发现很多问题时,我们大多数英语使用者能够对欧洲语言有所了解。但是普通话对于我们大多数人来说完全没有意义,因此让发言人在发布之前审查或至少对应用程序进行现场检查更为重要。
有一点需要注意的是输入法的问题:中文使用者使用IME(输入法编辑器)来输入文本,因此避免编写自定义客户端输入代码,例如捕获和处理击键。
另一个问题是要选择的实际文化标识符。中文有几种变体(zh-Hans
替换zh-CHS
并在中国使用,zh-Hant
替换台湾使用的zh-CHT
。有关详细信息,请参阅this MSDN page上的注释。但这些是中性文化标识符(它们不是特定国家/地区),可以用于本地化,但不能用于数字和日期格式等内容,因此理想情况下,您应该使用特定的文化标识符,例如zh-CN
用于中国和台湾zh-TW
。为Web应用程序选择特定的文化可能很棘手,因此这种选择通常基于您的市场预期。有关不同.NET文化标识符的更多信息位于this other post。
希望这有帮助!
答案 1 :(得分:4)
就用户界面中的文本翻译而言,中文的本地化工作可能与西方语言的本地化工作相当。与英语和西班牙语一样,中文从左到右阅读,因此您不需要像支持阿拉伯语或希伯来语那样镜像页面布局。以下是需要考虑的几点:
字体大小:中文字符比拉丁字符更复杂,因此您可能需要使用更大的字体。英语和西班牙语在8pt时可读;对于中国人来说,你至少需要10pt。
字体样式:在英文中,粗体和斜体通常用于强调。在中文中,通常使用不同的字体,字体大小或颜色来实现重点。 Use bold with caution,并避免使用斜体。
但是,如果您的目标是亚洲市场,则可能需要进行更重大的更改。以下是一些例子:
个人姓名:典型的中文名称是孙中山:第一个字符(孙)是姓氏,第二个和第三个字符(中山)构成给定的名称。这当然与西方常见的“给定名称”+空间+“姓氏”相反。如果您要存储和显示名称,则可能需要使用单个“名称”字段,而不是单独的“名字”和“姓氏”字段。
颜色:在美国,通常使用绿色表示“好”,红色表示“不良”。然而,在中国和台湾,红色是“好”。例如,比较Yahoo!与Yahoo! Taiwan的股票价格。
缺少字母:中文字符不是基于字母。因此,例如,提供按每个条目的第一个字母过滤列表的能力是没有意义的,就像在名称目录中一样。
答案 2 :(得分:2)
关于排序顺序,中文使用不同的方法:二进制(即Unicode),激进+笔画,拼音(=罗马化)和Bopomofo(=音节)。
在SQL Server上,您可以使用列定义中的COLLATE clause或语句级别定义排序顺序。也可以在数据库级别上进行默认排序规则。
运行此语句以查看所有受支持的中文排序规则:
select * from fn_helpcollations()
where name like 'chinese%'
在.Net中,还有一个用于排序的中国文化列表,请参阅MSDN。