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