除了使用翻译矩阵数组之外,还有其他的选择吗?不知何故,这似乎是你现在最有可能的选择,除非你喜欢赌博。如果你选择了赌博的选项,你可以试试这个:
function pluralize($translatedString, $lang="en"){
switch($lang){
case "en":
$rX = "#[yY]{1}$#";
$pluralForm = (preg_match($rX, $translatedString)) ? preg_replace($rX, "ies", $translatedString): "s";
break;
case "fr":
$pluralForm = "les {$translatedString}s";
break;
case "de":
$pluralForm = preg_replace("#(.)$#", "en", $translatedString);
break;
default:
$rX = "#[yY]{1}$#";
$pluralForm = (preg_match($rX, $translatedString)) ? preg_replace($rX, "ies", $translatedString): "s";
break;
}
return $pluralForm;
}
var_dump(pluralize("Company", "en")); //<== YIELDS string 'Companies' (length=9)
var_dump(pluralize("Societé", "fr")); //<== YIELDS string 'les Societés' (length=13)
var_dump(pluralize("Firma", "de")); //<== YIELDS string 'Firmen' (length=6)
大注:
从不依靠这个功能给你的单数名词的确切复数形式。而对于英语而言,这可能是理想的,你应该看看如何(以及如何)让它为其他语言吐出合理的复数。然而,正如前面提到的那样,使用翻译矩阵将是这种情景下的走向......
实际上没有 - 自然语言有这么多的例外和怪癖,唯一的方法来确保你是什么说的是对的,而且听起来是对的,就是手工做 - 所以你需要公司*和公司*翻译。 – CD001
最好的解决方案是避免测试服务器端,如果> 1,那么我采取复数键。 Phalcon是否实现了像i18n node.js插件那样的方法https://www.npmjs.com/package/i18n#i18n__n? – John