Zend框架2:如何获取所有翻译的消息?

时间:2013-06-20 22:38:17

标签: zend-framework2

我目前正在尝试获取所有已翻译的消息,以便创建json并使其可用于JavaScript翻译。但我似乎没有办法获得所有翻译。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

这很简单:

/**
 * Return all the messages.
 *
 * @param string $textDomain
 * @param null   $locale
 *
 * @return mixed
 */
public function getAllMessages($textDomain = 'default', $locale = null)
{
    $locale = $locale ?: $this->getLocale();

    if (!isset($this->messages[$textDomain][$locale])) {
        $this->loadMessages($textDomain, $locale);
    }

    return $this->messages[$textDomain][$locale];
}

这是班级\Zend\I18n\Translator\Translator的公开方法。

可能由上述anwser的作者添加。进入框架......

答案 1 :(得分:1)

翻译的api对此没有帮助。简而言之:通过Zend Framework 2翻译器无法做到这一点。

原因是翻译器支持各种适配器,因此您也可以通过数据库或外部API加载翻译。唯一的方法是直接使用文件翻译本身。所以暴露你的.po文件或.ini,让javascript解析那个。

所以不幸的是,没有这样的方式。我能想出的唯一一件事就是乱翻译员:

use Zend\I18n\Translator\Translator;

class MyTranslator extends Translator
{
    public function getAllMessages($textDomain = 'default', $locale = null)
    {
        $locale = $locale ?: $this->getLocale();

        if (!isset($this->messages[$textDomain][$locale])) {
            $this->loadMessages($textDomain, $locale);
        }

        return $this->messages[$textDomain][$locale];
    }
}

然后使用MyTranslator而不是Translator。