我开发一个具有翻译问题的Zend Framework的应用2。 其实在视图脚本可以使用视图助手Translate
。 既然我定义的“翻译”为poEdit的源关键字( [Poedit menu] -> Catalogue -> Properties... -> Source keywords
)的字符串由工具识别并添加到列表tranlation。
但也有一些字符串在其他地方,在那里我可以不使用/视图助手,例如,在表单类或导航。 如何来管理?
一些想法:
创建这样的字符串列表的文件。 例如:我们创建文件navigation.i18n
, forms.i18n
等(或者只是一个文件),定义有我们需要在我们加入到共同poEdit的语法的所有字符串Source keywords
列表(例如与translate
: translate('my label foo'), translate('my label bar')
等),最后加入i18n
的源路径( [Poedit menu] -> Catalogue -> Properties... -> Source paths
)。 我们也可以使用一个扩展,已定义为“源路径”。
一个类,它提供一个(静态)方法translate(...)
没有任何功能。 实例:不'label' => 'foo'
,我们使用'label' => \MyNamespace\Util\Translator::translate('foo')
我认为,第二appoach是清洁的,我更喜欢。 我不需要写我的钥匙SRING两次,并在头部持有,什么是已经翻译/更新。 但是,也许有更好的想法?
只需添加关键字_
到poEdit的( [Poedit menu] -> Catalogue -> Properties... -> Source keywords
)。 然后,而不是一个标签使用功能_
有此标签。 例如改变
'options' => array(
'label' => 'Username',
),
至
'options' => array(
'label' => _('Username'),
),
在poEdit的更新目录来源。 这就是它 - 现在你在poEdit的标签。
我还没有真正理解你的问题在于:■从一切我可以告诉,你想一个型号/实体的输出转换。 这是视图的一个典型的关注!
如果主要关心的是“如何获得所有这些模型输出到PoEdit软件?”,那么我可以告诉你的是:手动或实行DB-翻译...
注入的ServiceManager成基本上都跟随这句法getServiceConfig()
return array( 'factories' => array(
'my-service' => function ($sm) {
$class = new ServiceClass();
$class->setServiceManager($sm);
return $class;
}
));
在上面的例子$class
几乎可以是一切。 模型/实体,TableGateway或任何你想要的。
如果你建立你的形式以不同的方式,就像这样:
$name = new \Zend\Form\Element('name');
$name->setLabel('Your name');
$name->setAttributes(array(
'type' => 'text'
));
$this->add($name);
( http://framework.zend.com/manual/2.0/en/modules/zend.form.quick-start.html )
然后你就可以注册“setLabel”作为关键字poEdit软件,它会拿起标签文本进行翻译。
文章来源: What is the recomended way / best practice to Poedit translate strings without a source keyword?