基本上是试图将我的整个zend框架网站转换为多语言。最初没有计划,视图代码是在不使用单个包装器函数的情况下编写的,我们可以在此时使用该函数。在我的zf项目中查看所有phtml文件中的代码如下所示:
<div class="contact">
<span class="edit">
<a href="javascript:void(0);">edit</a></span>
<h2>Job Board Info</h2>
<div class="info-grid">
<div class="field">Contact Name: </div>
<div class="field-info">
<?php echo "Good Guy";?>
</div>
</div>
<div class="info-grid">
<div class="field">Description: </div>
<div class="field-info">
<?php echo "He is a very good guy";?>
</div>
</div>
</div>
我想在所有phtml文件中搜索以下文本编辑,联系人姓名并将其替换为
<? echo translate("edit") ?>
<? echo translate("Contact Name") ?>
translate("Good Guy");
<? echo translate("Description") ?>
translate("He is avery good guy");
我可以使用ZendStudio在所有phtml文件中执行正则表达式搜索和替换,但我不确定实现这一点的正确正则表达式模式是什么。上述文本并不是所有十个模板都固定不变,只是一个例子。regex应该跳过所有html代码,只查找文本,并用替换它们。如果任何文本像echo"text"一样被回显,则应将其替换为translate("text")
或者,为了尽快实现这一目标,请提出其他方法。
我要做的是使用例如TextCrawler(用于一次搜索和替换多个文件)并简单地打开
>edit<
>contact name: <
>Description: <
区分大小写 关闭进入
><?php echo translate("edit"); ?><
><?php echo translate("Contact Name"); ?><
><?php echo translate("Description"); ?><
(这取决于你要翻译多少组单词。这是手动的方法。如果你有很多不同的东西要像这样"处理",你可能也想使用regex)
至于echos中已经PHPfied的文本,请使用regex:
搜索(.*)<.*echo.*["''](.*)["''].*>
(您可能需要更具体一点,因为这可能会产生很多误报-确保它适合您想要专门"处理"的文件的内容)
并替换为$1<?php echo translate("$2"); ?>
其中$1("搜索"条件中的第一个圆括号)代表行上的空白或其他内容(试图保持缩进),$2代表原始回显字符串。它还将"
s和'
s作为回显文本的正确引号。
为了对科学的热爱:
备份所有代码
在你做这样的事情之前:D