4

我必须将我的网站(用 PHP 编码)翻译成另一种语言。我一直在使用 Drupal 及其函数来处理这个问题,但是仍然有一些硬编码的字符串散开。

您知道可以帮助我在整个源代码目录中找到它们的脚本或软件吗?最好的是它还允许我更改它们。

4

2 回答 2

1

请参阅Is there a semi-automated way to perform string extract for i18n? 一个自动化的方式来处理这个问题。虽然链接到的答案是特定于 Java 的,但相同的引擎/方案对于 PHP 也可以正常工作。

如果这太多了,我们的源代码搜索引擎 (SCSE)可以轻松识别这些内容,让您决定如何处理每个字符串。

SCSE 是一种超级 grep,它根据语言结构而不是原始字符文本进行操作。查询是用语言标记而不是字符串来表示的。SCSE 索引源代码库的许多文件的所有标记,然后使用该索引来优化搜索。因为它使用语言准确的词法分析器,所以它可以理解字符串、注释、数字、关键字和空格的精确范围。查询是(语言)空白不敏感的。因此,要查找中间有“foo”的标识符被分配了一个常量的所有位置,可以编写一个查询:

I=*foo* '=' N

其中查询说,“查找具有通配符约束的 I(标识符),后跟语言标记 =,然后是任何 N(数字)。

这与使用简单查询在程序中查找所有字符串文字有关:

S

这意味着,无论类型和语法如何,都可以找到所有没有任何约束的文字 S(trings)(PHP 有多种类型的字符串文字)。

结果命中可以显示在 UI 中,但出于 OP 的目的,可以打开日志记录并让该工具通过精确的文件和行号提供命中及其位置。

SCSE 有 PHP 和许多其他语言的扫描仪。

于 2011-11-18T04:15:12.560 回答
0

我想到了几个选项:

如果您使用的是 IDE,例如 Eclipse,通常有一个搜索功能可以让您搜索所有源代码。在 Eclipse 中,您可以转到“搜索”->“文件”。

如果您没有使用具有搜索功能的 IDE,但您可以访问基于 unix 的服务器上的命令行,则可以使用递归 grep。例如:

grep -r "sometext" /path/to/code

如果要从命令行执行递归查找和替换,可以结合使用 find 和 sed:

find /path/to/code -type f -print0 | xargs -0 sed -i 's/sometext/newtext/g'
于 2011-11-18T04:15:21.267 回答