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