-1

基本上试图将我的整个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");

我可以使用Zend Studio在所有 phtml 文件中执行正则表达式搜索和替换,但我不确定什么是正确的正则表达式模式才能实现这一点。上述文本并非在所有模板中都是固定的,而只是示例。正则表达式应跳过所有 html 代码并仅找出文本并将其替换为. 如果任何被回显的文本(如echo "text")应替换为translate("text")。

或者请提出其他方法以尽快实现这一目标。

4

1 回答 1

1

我要做的是使用例如TextCrawler(用于一次搜索和替换多个文件)并简单地转动

  • >edit<
  • >contact name: <
  • >Description: <

区分大小写 _ _

  • ><?php echo translate("edit"); ?><
  • ><?php echo translate("Contact Name"); ?><
  • ><?php echo translate("Description"); ?><

(这取决于您要翻译多少组单词。这是手动方式。如果您有大量不同的东西要像这样“处理”,您可能也需要使用正则表达式)

.. 至于回声中已经 PHPfied 的文本,确实使用了正则表达式:

搜索 (.*)<.*echo.*["\'](.*)["\'].*>(您可能想要更具体一点,因为这会产生很多误报 - 确保它适合您想要专门“处理”的文件的内容)

并替换为 $1<?php echo translate("$2"); ?>

..其中$1(“搜索”条件中的第一个括号)代表行上的空格或其他任何内容(试图保持缩进),而$2(第二个括号)代表最初回显的字符串。它还将"s 和's 作为回显文本的正确引用。

为了热爱科学:

备份所有代码!

..在你做这样的事情之前:D

于 2013-08-19T11:32:17.233 回答