Переключить язык перевода gettext на язык оригинала

Я запустил свое PHP-приложение со всем текстом на немецком языке, затем использовал gettext для извлечения всех строк и их перевода на английский.
Итак, теперь у меня есть файл .po со всеми msgid на немецком языке и msgstrs на английском. Я хочу поменять их местами, чтобы мой исходный код содержал английский как msgids по двум основным причинам:

  1. Больше переводчиков будут знать английский язык, поэтому уместно предоставить им только файл с ] msgids на английском языке. Я мог всегда переключать файл перед тем, как передать его, и после того, как я его получу, но нет.
  2. Это помогло бы мне написать английские имена объектов и функций и комментарии, если бы текст содержимого был также английским. Я бы хотел это сделать, чтобы проект был более открытым для других соавторов с открытым исходным кодом (которые скорее знают английский, чем немецкий).

Я мог бы сделать это вручную, и я предполагаю, что это та задача, для которой мне потребуется больше времени, чтобы написать для нее автоматизированную процедуру (потому что я очень плохо разбираюсь в сценариях оболочки), чем это делаю это вручную. Но я также ожидаю презрения к каждой минуте ручного компьютерного труда (похоже на оксюморон, правда?), Как я всегда.

Кто-то делал это раньше? Я подумал, что это обычная проблема, но ничего не нашел. Впереди большое спасибо.

Пример задачи:

<?=_('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, я столкнулся с еще некоторыми проблемами.

  1. Поскольку у меня есть смесь вызовов _ ('xxx') и _ ("xxx") , я должен быть осторожен с (не) побегом. Мне придется прекратить работать над этим сегодня вечером. Тем не менее, похоже, что использование парсера вместо RegExps не будет излишним.

9
задан Ruben 17 January 2011 в 12:27
поделиться