Phalcon 多语言支持


Phalcon包含一个提供多语言支持的组件Phalcon\Translate,它对创建多语言网页非常有帮助,其中包含一个适配器,可以帮助绑定数组并协助读取翻译信息。

例子


让我们在 Phalcon 中的翻译组件的帮助下创建一个输出,这将用于按照建议的语言显示输出。

步骤1: Phalcon 为每个开发者提供了组织翻译字符串的自由,考虑保留两个不同的文件,即:en.php(对于英文字符串)和fr.php(对于法语字符串)。

该文件将包含一个键值对数组,其中键是唯一的,值将根据所需的翻译而有所不同。

en.php

<?php  

// app/messages/en.php

$messagesContent = [ 
    "bye"     => "Good Bye",
    "hi-name" => "Hello %name%",
    "song"    => "Your favorite song is %song%",
];

fr.php

<?php 

// 应用程序/消息/fr.php

$messagesContent = [ 
    "bye"        => "Au revoir",
    "hello-name" => "Bonjour %name%",
    "song"       => "Votre chanson préférée est %song%",
];

步骤2: 在应用程序中,创建一个UserController,它将接受哪个文件应该被用于翻译的参数:

<?php 

use Phalcon\Translate\Adapter\NativeArray; 

class UserController extends \Phalcon\Mvc\Controller {  
    protected function getMessageTransalation() {
        // 请求最好的语言
        // 以所需语言显示输出
        require "en.php";
      
        // 返回翻译对象
        return new NativeArray( ["content" => $messagesContent,]);
    }
    public function indexAction() {
        $this->view->name = "Radhika";
        $this->view->song= "Ton sourire m'ensorcelle Je suis fou de toi Le désir coule dans mes veines Guidé par ta voix";
        $this->view->t    = $this->getMessageTransalation();
    }
}

对于默认方法,需要两个参数,第一个是名字,第二个是用户最喜欢的歌曲,之后函数getMessageTranslation被调用,返回所需的输出。

现在,我们希望输出的是英语。

步骤3: 视图 demo\appviews\User\index.volt 将包含以下代码:

<p><?php echo $t->_("hello-name", ["name" => $name]); ?></p> 
<p><?php echo $t->_("song", ["song" => $song]); ?></p>


Index

如果我们希望以法语显示完整的输出,我们只需要更改文件名。

require "fr.php";

以下是法语的输出。

Output in French