在我们的JS文件中,我们使用以下格式进行Gettext转换:
var str1 = '!t[The text that should be translated]';
var str2 = '!t[Some more text]';
这个JS文件将使用PHP进行解析,解析后的字符串将通过Zend Framework Zend_Translate进行翻译。生成的JS看起来像这样:
var str1 = 'The text that should be translated';
var str2 = 'Some more text';
为了提取要翻译的字符串和翻译我们的PHP文件,我们使用Poedit,它的效果非常好
有没有办法使用Poedit解析要从'!t[...]'
翻译的字符串?
解决问题的是某种基于正则表达式的Poedit解析器。有没有这样的解析器?
作为替代方案,我们可以使用PHP作为参数定义基于xgettext的源代码解析器(您必须这样做,因为xgettext不知道.js文件并且它们将它们视为C文件)。然后我们在JS文件中使用以下格式:
var str1 = '<?=_t("The text that should be translated")?>';
var str2 = '<?=_t("Some more text")?>';
毋庸置疑,为了能够用Poedit解析字符串,使用看起来像php的代码真的很酷。
答案 0 :(得分:0)
与您的字符串匹配的正则表达式
$translated = preg_replace('/[\'"]\!t\[(.+)\][\'"]/e', 'translate_function('\\2')', $str);
我不知道\ 2是否应该被\ 1或\ 3取代,你的解决方案是PCRE正则表达式引擎提供的“e”修饰符。
答案 1 :(得分:0)
Poedit和xgettext现在支持JavaScript(老实说我不知道2009年的情况是否如此,但我认为不是这样),但是它们不支持带有自定义标记的字符串文字。所以你仍然无法从中提取
var str1 = '!t[The text that should be translated]';
但您可以使用辅助函数轻松提取:
var str1 = t('The text that should be translated');
如果你只是在Poedit中添加t
作为关键字。