Zend framework2 Zend framework 2:如何获取所有已翻译的消息?

Zend framework2 Zend framework 2:如何获取所有已翻译的消息?,zend-framework2,Zend Framework2,我目前正在尝试获取所有已翻译的消息,以便创建json并使其可用于JavaScript翻译。但我似乎没有找到一种方法来获得所有的翻译。非常感谢您的帮助。翻译器的api对此没有帮助。简而言之:不可能通过Zend Framework 2转换器实现这一点 原因是转换器支持各种适配器,因此您也可以通过数据库或外部api加载翻译。唯一的方法是直接处理文件翻译本身。因此,公开您的.po文件或.ini,并让javascript解析该文件 所以不幸的是,没有这样的方法。我唯一能想到的就是绕过翻译: use Zen

我目前正在尝试获取所有已翻译的消息,以便创建json并使其可用于JavaScript翻译。但我似乎没有找到一种方法来获得所有的翻译。非常感谢您的帮助。

翻译器的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。

Translator的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。

这实际上很简单:

/**
 * 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的作者添加的。使其成为框架…

实际上非常简单:

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

好吧,你实际上可以做PoEdit之类的程序所做的事情:解析所有.phtml文件的
$this->translate($someString)
,保存
$someString
,然后运行JS翻译,实际上,您将执行PoEdit之类的程序所做的操作:解析
$this->translate($someString)
的所有.phtml文件,保存
$someString
,然后运行JS翻译。