我想不出一种方法来自动提取要在文件中翻译的字符串。
例如,你有你的布局和视图echo $this->translate('my_string');
,我想用比较数组创建文件 'en_US.php'、'fr_FR.php'、'es_ES.php':
<?php return array('my_string' => 'translation of my string'); ?>
是否可以 ?
谢谢。
我想不出一种方法来自动提取要在文件中翻译的字符串。
例如,你有你的布局和视图echo $this->translate('my_string');
,我想用比较数组创建文件 'en_US.php'、'fr_FR.php'、'es_ES.php':
<?php return array('my_string' => 'translation of my string'); ?>
是否可以 ?
谢谢。
是的。
放入您的application.ini
:
resources.translate.adapter = Array
resources.translate.locale = fr_FR
resources.translate.disableNotices = true
resources.translate.data = APPLICATION_PATH "/data"
并将文件fr_FR.php
放在您的APPLICATION_PATH "/data"
目录中。它应该工作。
该文件必须是这样的:
return array (
'Good day' => 'Bojour',
);
查看 Zend_Translate 适配器并选择一个。我热烈推荐 gettext 适配器。
以下是如何在 Zend Framework 应用程序中实现 i18n:
使用 PHP 翻译项目对于小型项目来说很方便,因此您不需要此类工具。
gettext有这样的工具,比如poedit,它将解析您的项目并搜索给定的函数/方法 ( translate()
)。POedit 将生成 .po 文件,该文件基本上由纯/文本文件组成,如下所示:
#: src/name.c:36
msgid "My name is %s.\n"
msgstr ""
如果您确实需要使用 PHP 文件进行翻译,您可以尝试一些grep
, sed
, awk
, 类似这样的东西应该给出一个起点(未经测试):
echo "return array(" > mytranslation.php | \
grep "translate(" * | \
cut -f1 | \
sed -r 's@.*translate\((.*)\).*@\1 => "Not translated yet",@' >> mytranslation.php && \
echo ");" >> mytranslation.php