Zend framework2 zend框架2-翻译过程

Zend framework2 zend框架2-翻译过程,zend-framework2,Zend Framework2,我正在用ZF2开发web应用程序。这是一个多语言网站。我想使用ZF2翻译器进行翻译。因为,管理员可以修改语言变量。所以,我计划使用语言文件夹文件。我将在管理员修改语言变量时更新语言文件。有人能为这一实施提出建议吗?谢谢。SkeletonApp内置翻译支持。但是,手册-> 我个人将所有语言文件保存在名为/language的文件夹中 在您看来,您也可以简单地调用 $this->translate('text_you_want_to_translate'); 基于用户输入的翻译可能会有点混乱。

我正在用ZF2开发web应用程序。这是一个多语言网站。我想使用ZF2翻译器进行翻译。因为,管理员可以修改语言变量。所以,我计划使用语言文件夹文件。我将在管理员修改语言变量时更新语言文件。有人能为这一实施提出建议吗?谢谢。

SkeletonApp内置翻译支持。但是,手册->

我个人将所有语言文件保存在名为/language的文件夹中

在您看来,您也可以简单地调用

$this->translate('text_you_want_to_translate');

基于用户输入的翻译可能会有点混乱。现在没有简单的方法可以做到这一点,因为当前支持的格式都是文件格式:带有数组的php文件、gettext.po文件或Tmx/Xliff文件。为了便于访问,您可能会将翻译存储在数据库中

因此,您需要编写自己的加载程序,从数据库加载翻译。另一种方法是在php数组中编写翻译并将其导出到文件中,但我不建议这样做。对于数据库加载器,必须实现。简单来说:

use My\DbTable;
use Zend\I18n\Translator\Loader\RemoteLoaderInterface;
Zend\I18n\Translator\TextDoamin;

class DbLoader implements RemoteLoaderInterface
{
    protected $table;

    public function __construct(DbTable $table)
    {
        $this->table = $table;
   }

    public function load($locale, $textDomain)
    {
        $data = $this->table->loadFromLocale($locale);

        // process $data into $messages
        // $messages is array(key=>value) with key translation key

        $domain = new TextDomain($messages);
        return $domain;
    }
}
db表在您指定的区域设置中加载消息。如果你使用文本域,也要传递它。然后,您需要配置
转换器
,以便它也使用此加载程序加载消息。其他一切都会好起来的。在视图中,您可以创建如下翻译:

<?php echo $this->translate('my original text'); ?>