我一直在开发一个 .NET 字符串格式化库来协助应用程序的本地化。它被称为SmartFormat ,在GitHub 上是开源的。
它试图解决的问题之一是语法数字。这也被称为“单数和复数形式”或“条件格式”,下面是它的英文片段:
var message = "There {0:is|are} {0} {0:item|items} remaining";
// You can use the Smart.Format method just like using String.Format:
var output = Smart.Format(CultureInfo.CurrentUICulture, message, items.Count);
我相信你知道,英语规则是有两种形式(单数和复数)可以应用于名词、动词和形容词。如果数量是1
单数,则使用复数。
我现在正试图通过为其他语言实施正确的规则来“拓宽我的视野”!我已经了解到,某些语言最多可以有 4 种复数形式,并且需要一些逻辑来确定正确的形式。我想扩展我的代码以适应多种语言。例如,我听说俄语、波兰语和土耳其语的规则与英语大不相同,所以这可能是一个很好的起点。
但是,我只会说英语和西班牙语,那么如何确定许多常用语言的正确语法规则呢?
编辑:我也想在这里为我的单元测试了解一些好的非英语“测试短语”:哪些是可用于测试国际化和本地化库的具有单复数形式的好的非英语短语?