问题描述
我正在开发Zend Framework 2应用程序,但翻译存在问题.实际上,在视图脚本中,可以使用视图帮助器 Translate
.由于我在Poedit([Poedit menu] -> Catalogue -> Properties... -> Source keywords
)中将"translate"定义为源关键字,因此该工具会识别字符串并将其添加到翻译列表中.
I'm developing a Zend Framework 2 application an having a problem with translations. Actually in the view scripts a can use the view helper Translate
. Since I defined "translate" as a source keyword in Poedit ([Poedit menu] -> Catalogue -> Properties... -> Source keywords
) the strings are identified by the tool and added to the tranlation list.
但是在其他地方也有一些字符串,在这些地方我无法使用/view helper,例如在表单类或导航中.应该如何管理?
But there are also some strings at other places, where I cannot use the/a view helper, e.g. in form classes or in the navigation. How should this be managed?
一些想法:
-
使用此类字符串列表创建文件.示例:我们创建文件
navigation.i18n
,forms.i18n
等(或仅一个文件),在其中定义我们需要添加到Source keywords
列表中的通用Poedit语法中需要的所有字符串(例如,使用translate
:translate('my label foo'), translate('my label bar')
等),最后添加i18n
作为源路径([Poedit menu] -> Catalogue -> Properties... -> Source paths
).我们还可以使用已经定义为源路径"的扩展名.
Create a file with a list of such strings. Example: We create files
navigation.i18n
,forms.i18n
etc. (or just one file), define there all strings we need in the common Poedit syntax we added to theSource keywords
list (e.g. withtranslate
:translate('my label foo'), translate('my label bar')
etc.), and finally addi18n
as a source path ([Poedit menu] -> Catalogue -> Properties... -> Source paths
). We also can use an extension, that is already defined as a 'Source paths'.
一个类,提供一个(静态)方法translate(...)
而没有任何功能.示例:我们使用'label' => \MyNamespace\Util\Translator::translate('foo')
A class, that provides one (static) method translate(...)
without any functionality. Example: Instead of 'label' => 'foo'
we use 'label' => \MyNamespace\Util\Translator::translate('foo')
我认为,第二种方法更清洁,而且我更喜欢.我不需要写两次我的密钥,也不需要掌握已经翻译/更新的内容.但是也许有更好的主意?
I think, the second appoach is cleaner, and I like more. I don't need to write my key sring twice and to hold in the head, what is already translated / updated. But maybe there are better ideas?
推荐答案
只需将关键字_
添加到Poedit([Poedit menu] -> Catalogue -> Properties... -> Source keywords
).然后,使用带有标签的函数_
代替标签.例如更改
Just add keyword _
to Poedit ([Poedit menu] -> Catalogue -> Properties... -> Source keywords
). Then instead of a label use function _
with this label.For example change
'options' => array(
'label' => 'Username',
),
到
'options' => array(
'label' => _('Username'),
),
,并在Poedit中更新源代码目录".就是这样-现在您在Poedit中拥有标签了.
and in Poedit update Catalog From Sources. That's it -- now you have your label in Poedit.
这篇关于Poedit在没有源关键字的情况下翻译字符串的推荐方式/最佳实践是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!