什么是poEdit的无源关键字翻译字符串recomended方式/最佳做法?(What is the

2019-09-27 17:44发布

我开发一个具有翻译问题的Zend Framework的应用2。 其实在视图脚本可以使用视图助手Translate 。 既然我定义的“翻译”为poEdit的源关键字( [Poedit menu] -> Catalogue -> Properties... -> Source keywords )的字符串由工具识别并添加到列表tranlation。

但也有一些字符串在其他地方,在那里我可以不使用/视图助手,例如,在表单类或导航。 如何来管理?

一些想法:

  1. 创建这样的字符串列表的文件。 例如:我们创建文件navigation.i18nforms.i18n等(或者只是一个文件),定义有我们需要在我们加入到共同poEdit的语法的所有字符串Source keywords列表(例如与translatetranslate('my label foo'), translate('my label bar')等),最后加入i18n的源路径( [Poedit menu] -> Catalogue -> Properties... -> Source paths )。 我们也可以使用一个扩展,已定义为“源路径”。

  2. 一个类,它提供一个(静态)方法translate(...)没有任何功能。 实例:不'label' => 'foo' ,我们使用'label' => \MyNamespace\Util\Translator::translate('foo')

我认为,第二appoach是清洁的,我更喜欢。 我不需要写我的钥匙SRING两次,并在头部持有,什么是已经翻译/更新。 但是,也许有更好的想法?

Answer 1:

只需添加关键字_到poEdit的( [Poedit menu] -> Catalogue -> Properties... -> Source keywords )。 然后,而不是一个标签使用功能_有此标签。 例如改变

        'options' => array(
            'label' => 'Username',
        ),

        'options' => array(
            'label' => _('Username'),
        ),

在poEdit的更新目录来源。 这就是它 - 现在你在poEdit的标签。



Answer 2:

我还没有真正理解你的问题在于:■从一切我可以告诉,你想一个型号/实体的输出转换。 这是视图的一个典型的关注!

如果主要关心的是“如何获得所有这些模型输出到PoEdit软件?”,那么我可以告诉你的是:手动或实行DB-翻译...

注入的ServiceManager成基本上都跟随这句法getServiceConfig()

return array( 'factories' => array(
    'my-service' => function ($sm) {
        $class = new ServiceClass();
        $class->setServiceManager($sm);
        return $class;
    }
));

在上面的例子$class几乎可以是一切。 模型/实体,TableGateway或任何你想要的。



Answer 3:

如果你建立你的形式以不同的方式,就像这样:

$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?