2011-06-17 11 views
11

Niektóre klawisze gettext nie działają dla mnie - pokazują klucz zamiast tłumaczenia, ale jest jeden. Robię .mo plik PHP File_Gettext Pear biblioteki i wydaje się działać ok, więc zrobiłem następujący skrypt, aby wypróbować, które klawisze nie działają prawidłowo:Jak mogę debugować php gettext?

$locale = 'en_GB'; 
$domain = 'messages'; 

setlocale(LC_ALL, $locale); 
putenv("LC_ALL=".$locale); 
bindtextdomain($domain, "D:/_gt"); 
bind_textdomain_codeset($domain, 'UTF-8'); 
textdomain($domain); 

$mocreator = new File_Gettext_MO(); 
$mocreator->load('D:/_gt/en_GB/LC_MESSAGES/messages.mo'); 

foreach ($mocreator->strings as $key => $value) { 
    if ($value == gettext($key)) { 
     var_dump("ok"); 
    } else { 
     var_dump($key, $value, gettext($key)); 
    } 
} 

Z wyjście powyżej widzę, że niektóre klawisze działają - widzę dużo ok s - a niektórzy nie, uzyskując następujące:

string 'Cancelled' (length=9) 
string 'Storniert' (length=9) 
string 'Cancelled' (length=9) 

więc jest tłumaczenie w pliku, ale gettext zawiedzie ich używać z jakiegoś powodu.

+0

Sprawdź plik tłumaczenia. Myślę, że gettext jest dokładniejszy niż 'File_Gettext_MO'. Szukaj w nim napisu "Cacnelled", prawdopodobnie jest to coś, co możesz zobaczyć. Możesz również dodać część z pliku MO do pytania. – hakre

+0

@hakre, widzę tam zarówno 'Cancelled' i' Storniert'. Którą część pliku należy dodać? – Fluffy

+0

Jaka jest biblioteka? File_Gettext Gruszka? Nie mogę znaleźć File_Gettext_MO w dowolnym miejscu. – Gazzer

Odpowiedz

1

To jest dość stare pytanie i muszę podkreślić, że nie jestem tak dobrze zaznajomiony z pytaniami dotyczącymi gettext. Ale miałem pewne problemy z tablicami-kluczami jako łańcuchami i kodowaniami.

D:/_gt daje mi wrażenie, że korzystasz z systemu Windows, a jeśli się nie mylę, wszystkie wersje systemu Windows domyślnie używają latin-1- "with-special-locale". Uważam, że problem może być związany z kodowaniem, ponieważ określasz plik jako utf8, ale nie mogę ci tam pomóc bez pliku .mo. Ale spróbuj zmienić miejsca w instrukcjach putenv i setlocale.

Brakuje przestrzeni? Czy prawidłowym kluczem może być " Cancelled"?

Ale jak ktoś powiedział w komentarzach, to tylko zgadywanie bez pliku .mo.

Jeśli już znalazłeś własną odpowiedź, dodaj ją, aby pomóc pozostałym Internetom! : D

+0

To nie wydaje się być problemem Windows, ponieważ na tym samym serwerze działa ten sam skrypt. Jak widać na wyjściu, spacje są w porządku. Właściwie nie znalazłem na to rozwiązania - używam teraz DB + memcached, który wydaje się działać całkiem dobrze. – Fluffy

+0

Próbowałem również znaleźć wzór, w którym klawisze nie działają - np. Pojawia się znak wielobajtowy i wszystkie kolejne klucze są zepsute. Ale podczas gdy klucze są uporządkowane alfabetycznie w pliku, te, które nie działają, są w przypadkowych miejscach. – Fluffy