我使用了phalcon翻译插件, 我有两个文件fr.php和en.php,包含一个具有不同键值的数组。
例如$messages = array("Familyname"=> "Nom","Firstname"=> "Prénom");
但是对于同一个词我需要单数和复数,我该怎么办?
例如我array("company"=>"company")
,如果我有多个公司,我想要"companies"
而不是company
。
现在,如果我想要获得此结果,我必须创建两个键"company"
和"companies"
是否还有其他方法可以获得此结果?
答案 0 :(得分:0)
除了使用翻译矩阵阵列之外还有其他选择吗?不知何故,这似乎是你现在最有可能的选择,除非你喜欢赌博。如果您选择赌博选项,则可以尝试:
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)
大注:
永远不要依赖此函数来为您提供奇异名词的精确复数形式。对于英语而言,这可能是理想的,由你来看看如何(以及如果)使其为其他语言吐出合理的复数。但是,如前所述,在此场景中使用翻译矩阵将是一种可行的方式....