我一直在研究.NET库来协助应用程序的国际化.它是用C#编写的,名为SmartFormat,在GitHub上是开源的.
它包含多种语言的语法数字规则,可根据模板和语言环境确定正确的单数/复数形式.规则是从Unicode语言复数规则获得的.
翻译具有依赖于数量的单词的短语(例如名词,动词和形容词)时,指定多个表单,格式化程序根据这些规则选择正确的表单.
英语示例:(注意语法几乎相同String.Format)
var message = "There {0:is:are} {0} {0:item:items} remaining.";
var output = Smart.Format(culture, message, items.Count);
Run Code Online (Sandbox Code Playgroud)
我想为许多支持的语言编写单元测试.但是,我只会说英语和西班牙语(两者都有相同的语法编号规则).
有哪些优秀的非英语测试用语可以用于这些单元测试?
我正在寻找类似的短语"There {0:is:are} {0} {0:item:items} remaining.".请注意此示例如何根据数量需要特定的动词和名词.
关于语法的说明:
此库查找:分隔的单词,并根据为语言环境定义的规则选择正确的单词.例如,在波兰语中,"文件"一词有3种复数形式:1"plik",2-4"pliki",5-21"plików".因此,您将在格式字符串中指定所有3个表单:"{0} {0:plik:pliki:plików}".
这些单词通常按从最小可能值到最大值排序,例如"{0:zero:one:two:few:many:other}",由Unicode语言复数规则定义.
这里已经讨论了有关此代码的其他信息:单数/复数单词的本地化 - 语法数字的不同语言规则是什么?