翻訳マトリックス配列を使用する以外の選択肢はありますか?どういうわけか、あなたがギャンブルを好む場合を除いて、あなたが現在持っている可能性が最も高いオプションのようです。あなたの単数名詞の正確な複数形を与えるために、この機能に頼ることはありません
:
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)
BIG注:あなたはギャンブルのオプションを選択した場合、あなたはこれを試してみてください。英語の場合、これは理想的かもしれませんが、それは他の言語の合理的なPluralを吐き出す方法(もしあれば)を見ることです。しかし、前述のように、このシナリオでは、変換行列を使用することでこの方法が実現します。
現実的に自然言語には非常に多くの例外や癖があります。正しいと言えば正しいと思いますが、それは手作業で行うことなので、* company *と* companies *翻訳の両方が必要になります。 – CD001
最良の解決策は、> 1ならテストサーバー側を避け、複数のキーを取ることです。 Phalconはi18n node.jsプラグインhttps://www.npmjs.com/package/i18n#i18n__nのようなメソッドを実装していますか? – John