Domanda

Ho creato un file di lingua nella poedit per l'utilizzo della funzione PHP gettext, ora sulla pagina che sto cercando di testarlo su, io non riesco a farlo per trovare / caricare il .po o .mo lima che ho creato, qualcuno vedere quello che sto facendo male?

$locale = "en_US";
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("default", "/includes/locale");
textdomain("default");

//my .po ad .mo file is located here /includes/locale/en/default.mo

Anche se sto cercando di caricare il file in lingua inglese di default, ho cambiato un po 'di testo nel file per assicurarsi che sta leggendo da un file di lingua e attualmente sta mostrando solo il testo predefinito e non fare una traduzione, mi credo di avere la strada sbagliata, eventualmente,

È stato utile?

Soluzione

Finalmente ho potuto farlo funzionare, mi distacco qui in modo forse può aiutare qualcun altro, è un po 'confuso il modo in cui è documentato credo.

userò FR per il francese per questa demo

$locale = "fr_fr";
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("default", "/includes/locale");
textdomain("default");

Funzione bindtextdomain sopra, il primo parametro è il nome del file della lingua .po meno l'estensione. Il secondo parametro è il percorso della cartella, questo è dove si diventa un po 'complicato / senza documenti ... Nella cartella si imposta qui è necessario creare una cartella per ogni lingua con il suo 2 cifre codice di paese, poi all'interno di questo codice di paese cartella ho dovuto aggiungere questa cartella denominata LC_MESSAGES , all'interno LC_MESSAGES è dove il file default.po va.

Questo era l'unico modo ho potuto farlo funzionare, tipo di confusione in quanto il percorso della cartella lang non menziona nulla circa la parte in grassetto qui:

  

langfolder / fr_FR / LC_MESSAGES /default.po

E 'ancora davvero strano, però, default.po lavora per me, ma se lo cambio a qualcos'altro nel codice qui sopra e quindi modificare il nome del file del .po e .mo file di abbinarlo non funzionerà più, funziona solo con nome default per me, sto iniziando a pensare che forse gettext fa una sorta di dietro le quinte di cache

Altri suggerimenti

Ho il sospetto è il tuo percorso.

E ' "/ include / locale" nella directory corretta sul proprio host? O è quello relativo a qualcosa? Nota: è necessario il percorso completo, non è relativo alla vostra home directory o la directory di installazione. in modo che potrebbe essere qualcosa di simile:

  • C: / xampp / htdocs / include / locale
  • / var / www / include / locale
  • / home / nomeutente / include / locale
  • etc

Qual è la directory completo dove è trovato?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top