Il sistema gettext richiama le stringhe da un set di file binari creati da file di testo di origine contenenti le traduzioni in lingue diverse per la stessa frase.
La chiave di ricerca è la frase in una lingua "di base".
nel codice sorgente si avrà qualcosa di simile
echo _("Hello, world!");
per ogni lingua si avrà un file di testo corrispondente con la chiave e la versione tradotta (notare la s% che può essere utilizzato con le funzioni printf)
french
msgid "Hello, world!"
msgstr "Salut, monde!"
msgid "My name is %s"
msgstr "Mon nom est %s"
italian
msgid "Hello, world!"
msgstr "Ciao, mondo!"
msgid "My name is %s"
msgstr "Il mio nome è %s"
Questi sono i principali passaggi che è necessario passare attraverso per la creazione di localizzazioni
- tutto l'output testo deve utilizzare le funzioni gettext (gettext(), ngettext(), _())
- uso xgettext (* nix) per analizzare i file PHP e creare il file di testo base .po
- uso poedit a aggiungi testi di traduzione dei file .po
- uso msgfmt (* nix) per creare il file .mo binario dal file .po
- Inserire i file .mo in una struttura di directory come
locale/de_DE/LC_MESSAGES/myPHPApp.mo
locale/it_IT/LC_MESSAGES/myPHPApp.mo
locale/it_IT/LC_MESSAGES/myPHPApp.mo
allora script php deve impostare l'impostazione internazionale che devono essere utilizzati
L'esempio dal php manuale è molto chiaro per quella parte
<?php
// Set language to German
setlocale(LC_ALL, 'de_DE');
// Specify location of translation tables
bindtextdomain("myPHPApp", "./locale");
// Choose domain
textdomain("myPHPApp");
// Translation is looking for in ./locale/de_DE/LC_MESSAGES/myPHPApp.mo now
// Print a test message
echo gettext("Welcome to My PHP Application");
// Or use the alias _() for gettext()
echo _("Have a nice day");
?>
sempre dal manuale php aspetto here per un buon tutorial
fonte
2009-07-28 10:14:20
Ma quanto sopra L'esempio del manuale PHP non sembra tradurre la stringa data. C'è qualcos'altro da fare con l'esempio? –