Ho un .po e un file .mo in una cartella il cui indirizzo è /locale/nld_nld/LC_MESSAGES/. Entrambi i nomi dei file sono messaggi. Ho cercato di utilizzare il seguente codice:Come usare i file po/pot con php?
try.php:
<?php
require_once("Localization.php");
echo _("Hello World!");
?>
il Localization.php va qui:
<?php
$locale = "nld_nld";
if (isSet($_GET["locale"])) $locale = $_GET["locale"];
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("messages", "./locale");
bind_textdomain_codeset("messages", 'UTF-8');
textdomain("messages");
?>
Sia il file di localizzazione try.php e sono nella stessa directory. Inoltre, io uso xampp
. Ho anche implementato lo phpinfo();
. Nella tabella, di fronte a "GetText Support", è stato menzionato l'abilitato. I messaggi . e messages.mo sono file validi che ho creato utilizzando poEdit. Sono un utente di Windows. Tuttavia, quando ho aperto try.php, ha semplicemente fatto eco a Hello World! (Non la sua stringa tradotta. Inoltre, ho tradotto il .po file di 100% (secondo poEdit
). Eppure, non sto ottenendo i risultati. Un po 'di aiuto su questo sarebbe apprezzato.
Grazie ! in anticipo
il textdomain() è in genere l'ultima chiamata di funzione (in realtà potrebbe essere necessario prima di ogni chiamata gettext aka _() se si lavora con domini di tipo mutiple.Innanzitutto leghi tutti i domini, quindi ne selezioni uno. – eckes
Nel tuo esempio utilizzi due diversi nomi di dominio "es" e "messaggi-es". Potrebbe non funzionare (e in genere non si ha l'identificatore della lingua nel nome del file come invece viene definito dalla directory). Quindi "/full/path/here/application/locale/es_ES/LC_MESSAGES/messages.mo" sarà il nome file del dominio "messaggi" e il LC_TYPE es_ES. – eckes