Я запустил свое PHP-приложение со всем текстом на немецком языке, затем использовал gettext для извлечения всех строк и их перевода на английский.
Итак, теперь у меня есть файл .po со всеми msgid на немецком языке и msgstrs на английском. Я хочу поменять их местами, чтобы мой исходный код содержал английский как msgids по двум основным причинам:
Я мог бы сделать это вручную, и я предполагаю, что это та задача, для которой мне потребуется больше времени, чтобы написать для нее автоматизированную процедуру (потому что я очень плохо разбираюсь в сценариях оболочки), чем это делаю это вручную. Но я также ожидаю презрения к каждой минуте ручного компьютерного труда (похоже на оксюморон, правда?), Как я всегда.
Кто-то делал это раньше? Я подумал, что это обычная проблема, но ничего не нашел. Впереди большое спасибо.
Пример задачи:
=_('Routinen')?>
#: /users/ruben/sites/v/routinen.php:43
msgid "Routinen"
msgstr "Routines"
Я решил сузить проблему. Переключатель в .po-файле, конечно, не проблема, это так же просто, как
preg_replace('/msgid "(.+)"\nmsgstr "(.+)"/', '/msgid "$2"\nmsgstr "$1"/', $str);
Проблема для меня - это процедура, которая ищет в файлах папки моего проекта _ ('$ msgid')
и заменяет _ ('msgstr')
при анализе файла. po-файл (что, вероятно, даже не самый элегантный способ, ведь .po-файл содержит комментарии, которые содержат все пути к файлам, в которых встречается msgid).
После того, как подурачился с ответом акирка, little, я столкнулся с еще некоторыми проблемами.
_ ('xxx')
и _ ("xxx")
, я должен быть осторожен с (не) побегом.
Мне придется прекратить работать над этим сегодня вечером. Тем не менее, похоже, что использование парсера вместо RegExps не будет излишним.