Orijinal dili ile gettext tercüme dili Anahtarı

0 Cevap php

I started my PHP application with all text in German, then used gettext to extract all strings and translate them to English.
So, now I have a .po file with all msgids in German and msgstrs in English. I want to switch them, so that my source code contains the English as msgids for two main reasons:

  1. Daha çevirmenler İngilizce bilecek, bu yüzden İngilizce msgids ile bir dosyayı onları hizmet için sadece uygun olduğunu. I could Hep bunu aldıktan sonra ben dışarı vermek ve önce dosyayı geçiş, ancak naaah.
  2. Bu beni İngilizce nesneyi & yazmak için yardımcı olacaktır işlev isimleri ve yorumlar içeriği metin de İngilizce olsaydı. Bunu yapmak istiyorum, bu nedenle proje (Almanca dışında İngilizce bilmek daha muhtemel) diğer Açık Kaynak işbirlikçilerine daha açıktır.

Ben bu el yapabileceğini ve bu (ben kabuk komut ile very kötüyüm çünkü) elle yapmak daha bunun için otomatik bir rutin yazmak için bana daha fazla zaman alacak ben tahmin görevin tür . Ama ben de her zaman yaptığım gibi manual computer labour (bir oxymoron gibi hissediyor, değil mi?) Her dakika hor bekliyorlar.

Birisi daha önce bu yapılır mı? Ben bu ortak bir sorun olacağını düşündüm, ancak bir şey bulamadı. Önümüzde pek çok teşekkürler.

Örnek Problem:

<title><?=_('Routinen')?></title>

#: /users/ruben/sites/v/routinen.php:43
msgid "Routinen"
msgstr "Routines"

Ben sorunu daraltmak düşündüm. . Po-dosyasındaki anahtarı elbette hiçbir sorunu, bu kadar basittir

preg_replace('/msgid "(.+)"\nmsgstr "(.+)"/', '/msgid "$2"\nmsgstr "$1"/', $str);

Benim için sorun tüm sonra, belki de en zarif yolu değildir. Po dosyası (ayrıştırma sırasında _('$msgid') ve yedek _('msgstr') benim proje klasör dosyaları arar rutin . po dosyası msgstr oluştuğunda tüm dosya yolları) içeren yorumlar içermektedir.


Akirk en küçük bir cevap fooling around ile sonra ben biraz daha fazla sorun haline koştu.

  1. Because I have a mixture of _('xxx') and _("xxx") calls, I have to be careful about (un)escaping.
    • Msgids ve msgstrs çift tırnak "çıkmamış olması, ancak çift tırnak da PHP kaçtı olabilir, çünkü eğik çizgiler, elimden edilemez
    • Tek tırnak onlar PHP içine yerini olduğunuzda kaçtı gerekir, ama sonra onlar da. Po dosyasında değiştirilmesi gerekir. Neyse ki benim için, tek tırnak sadece İngilizce metin görünür.
  2. msgids and msgstrs can have multiple lines, then they look like this
    msgid = ""
    "line 1\n"
    "line 2\n"
    msgstr = ""
    "line 1\n"
    "line 2\n"
  3. çoğul formları tabii şu anda atlanır, ama benim durumumda bu bir sorun değil
  4. poEdit anahtarlamalı başarılı görünüyor gibi eski dizeleri kaldırmak istiyor ve ben bu (pek çok) durumda olur neden hiçbir fikrim yok.

Ben bu gece için üzerinde durmasına gerekecek. Hala çözümleyici kullanarak yerine Regexplerin overkill olmaz gibi görünüyor.

0 Cevap