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