0

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

4

2 回答 2

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的作者添加的。进入框架...

于 2015-12-14T15:22:19.010 回答
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。

于 2013-06-21T07:47:20.357 回答