如何使用phalcon multilingue插件复数

时间:2017-04-20 13:09:11

标签: php phalcon multilingual

我使用了phalcon翻译插件, 我有两个文件fr.php和en.php,包含一个具有不同键值的数组。

例如$messages = array("Familyname"=> "Nom","Firstname"=> "Prénom");

但是对于同一个词我需要单数和复数,我该怎么办?

例如我array("company"=>"company"),如果我有多个公司,我想要"companies"而不是company

现在,如果我想要获得此结果,我必须创建两个键"company""companies"是否还有其他方法可以获得此结果?

1 个答案:

答案 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)

大注:

永远不要依赖此函数来为您提供奇异名词的精确复数形式。对于英语而言,这可能是理想的,由你来看看如何(以及如果)使其为其他语言吐出合理的复数。但是,如前所述,在此场景中使用翻译矩阵将是一种可行的方式....