Phalcon - 多语言支持

Phalcon 包含一个组件 Phalcon\Translate,它提供多语言支持,对于创建可翻译成多种语言的网页非常有帮助。

它包含一个适配器,可帮助绑定数组并协助读取翻译消息。

示例

让我们在 Phalcon 中的 Translate 组件的帮助下创建一个输出,这将有助于根据建议的语言显示输出。

步骤 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 

// app/messages/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\app\views\User\index.volt 将包含以下代码 −

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

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

require "fr.php";

以下是法语的输出。

法语输出