Sto cercando di utilizzare l'estensione gettext di PHP per tradurre alcune stringhe. Tutte le funzioni sembrano restituire i valori corretti ma chiamando gettext()
/_()
restituisce solo la stringa originale. I file PO/MO sembrano corretti e credo di aver impostato correttamente le directory. Sto facendo funzionare WAMP Server con PHP 5.3.10 su Windows (ho anche provato a eseguire 5.3.4 e 5.3.8 perché ho le installazioni).PHP Gettext - Nessuna traduzione
Innanzitutto, vedi /new2/www/index.php
:
$locale = 'esn'; # returns Spanish_Spain.1252 in var dump
putenv("LC_ALL={$locale}"); // Returns TRUE
setlocale(LC_ALL, $locale); // Returns 'Spanish_Spain.1252'
$domain = 'messages';
bindtextdomain($domain, './locale'); // Returns C:\wamp\www\new2\www\locale
bind_textdomain_codeset($domain, 'UTF-8'); // Returns UTF-8
textdomain($domain); // Returns'messages'
print gettext("In the dashboard"); // Prints the original text, not the translation.
exit;
Ho creato la seguente struttura di file:
www/new2/www/locale/Spanish_Spain.1252/LC_MESSAGES/messages.mo
ho anche provato a sostituire Spanish_Spain.1252
con: es_ES
, esn
, esp
, Spanish
e Spanish_Spain
.
Il file PO utilizzato per generare il MO è in questo modo (solo la voce relativa data):
#: C:\wamp\www\new2/www/index.php:76
msgid "In the dashboard"
msgstr "TRANSLATED es_ES DASHBOARD"
Questo è stato generato utilizzando PoEdit. Ho riavviato Apache dopo aver aggiunto un nuovo file .MO. Si noti inoltre che in precedenza utilizzavo Zend_Translate con Gettext e si stava traducendo correttamente. Desidero fare affidamento sull'estensione gettext nativa, anche se, in parte perché sto tentando di creare un framework leggero per conto mio.
Qualsiasi aiuto sarebbe apprezzato.
Modifica: Struttura della directory modificata. Nota: sarà in grado di provare risposte recenti entro 24 ore.
Le impostazioni internazionali e la directory non dovrebbero essere "es_ES.UTF-8'? – mario
@mario Ho provato quella locale e la directory ma 'setlocale()' restituisce quindi false. – Pete171