代码之家  ›  专栏  ›  技术社区  ›  Marius Burz

基于Poedit正则表达式的解析器?

  •  1
  • Marius Burz  · 技术社区  · 15 年前


    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,它工作得非常好。
    有没有办法解析要从中翻译出来的字符串 '!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的代码是很不酷的。

    2 回复  |  直到 15 年前
        1
  •  0
  •   Fabien Ménager    15 年前

    与字符串匹配的regexp

     $translated = preg_replace('/[\'"]\!t\[(.+)\][\'"]/e', 'translate_function('\\2')', $str);
    

    我不知道应该用\1还是\3替换\2,您的解决方案是由PCRE正则表达式引擎提供的“e”修饰符。

        2
  •  0
  •   Václav Slavík    8 年前

    var str1 = '!t[The text that should be translated]';
    

    但您可以使用辅助函数轻松提取:

    var str1 = t('The text that should be translated');
    

    如果你加上 t 作为Poedit中的关键字。

    推荐文章