Найти все исходные строки в файлах PHP - Цель перевода - PullRequest
4 голосов
/ 18 ноября 2011

Я должен перевести свой сайт (на PHP) на другой язык.Я использовал Drupal и его функции, чтобы справиться с этим, но все еще есть некоторые жестко закодированные строки.

Знаете ли вы сценарий или программное обеспечение, которое поможет мне найти их во всей директории с исходным кодом?Лучше всего, что это также позволяет мне их менять.

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

См. Существует ли полуавтоматический способ извлечения строк для i18n? для автоматического способа решения этой проблемы. Хотя связанный с ответом характерен только для Java, тот же механизм / схема отлично подойдет для PHP.

Если это слишком много, наша Система поиска исходного кода (SCSE) может идентифицировать их тривиально, оставляя вам решать, что делать с каждой строкой.

SCSE - это своего рода супер-grep, который работает с языковой структурой, а не с необработанным символьным текстом. Запросы указываются в виде языковых токенов, а не строк. SCSE индексирует все токены множества файлов исходного кода, а затем использует этот индекс для оптимизации поиска. Поскольку он использует лексеры с точным языком, он понимает точные границы строк, комментариев, чисел, ключевых слов и пробелов. Запросы нечувствительны к языку. Таким образом, чтобы найти все места, где идентификатору, который имеет «foo» в середине, присваивается константа, можно написать запрос:

I=*foo* '=' N

, где в запросе говорится "найти I (средства для чистки зубов) с подстановочным знаком, за которым следует языковой токен =, с последующим любым N (число).

Это все релевантно для поиска всех строковых литералов в вашей программе с помощью тривиального запроса:

S

, что означает, ну, в общем, поиск всех литералов S (trings) без каких-либо ограничений, независимо от типа и синтаксиса (PHP имеет много типов строковых литералов).

Полученные в результате попадания могут отображаться в пользовательском интерфейсе, но для целей OP можно включить ведение журнала и заставить инструмент предоставлять попадания и их местоположения по точному файлу и номеру строки.

В SCSE есть сканеры для PHP и многих других языков.

0 голосов
/ 18 ноября 2011

На ум приходит пара вариантов:

Если вы используете 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'
...