2012-12-27 65 views
2

我正在使用gettext()来处理我的网站的国际化。事实是,我使用Smarty作为模板引擎,并且必须使用smarty的标签来注释部分我的html代码:{* *}。问题是这些评论是我编写过的一些代码,但我不想摆脱这些代码。因此,gettext()读取内部(大括号内)代码,并生成一个带有大量非必需转换项目的.po文件。我如何防止自己拥有一个没有额外翻译项目的干净的po文件。我的代码或使用gettext()设置参数的正则表达式?如何防止用gettext翻译注释()

回答

2

xgettext手册,这些都是支持的语言: C,C++,的ObjectiveC,PO,壳牌,Python和Lisp语言,EmacsLisp,librep,计划,Smalltalk中,Java和JavaProperties,C#,AWK,YCP,TCL, Perl,PHP,GCC-source,NXStringTable,RST,Glade

因此,除非这些语言中有一种具有类似smarty的注释,{* *},那么我认为您不能轻易绕过注释的代码。

不过,我猜测,一个可能的解决方法将是莫名其妙编译所有的模板,然后运行跨* .php文件poEdit的,不* .tpl。由于smarty的评论不会包含在编译后的模板中,因此他们将被排除在外

+0

感谢您的回答:您的意思是编译这些文件到底意味着什么? – Newben

+0

当smarty运行时,它会生成中间php文件,然后运行该文件来创建实际的HTML。你可以在你的$ smarty-> compile_dir下找到它们(看看smarty_config.php) – periklis

+0

非常感谢! – Newben