zend框架2 - 翻译过程

时间:2013-01-11 17:19:12

标签: zend-framework2

我正在使用ZF2开发Web应用程序。这是一个多语言的网站。我想使用ZF2 Translator进行翻译。因为,admin可以修改语言变量。所以,我打算使用语言文件夹文件。我将在管理员修改语言变量时更新语言文件。有人可以提出这个实现的想法吗?感谢。

2 个答案:

答案 0 :(得分:1)

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

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

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表在您指定的语言环境中加载消息。如果您使用文本域,也可以传递它。然后你需要配置你的Translator这样它也使用这个加载器来加载消息。其他一切都应该没问题。在您的视图中,您可以创建如下翻译:

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

答案 1 :(得分:0)

SkeletonApp内置了翻译支持。但是,有关如何使用它的更多详细信息也可以在手册中找到 - &gt; http://zf2.readthedocs.org/en/latest/modules/zend.i18n.translating.html

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

的文件夹中

在您的观看中,您也可以直接致电

$this->translate('text_you_want_to_translate');