PHP usage gettext
Gettext pour la mondialisation du système (I18N) et de localization (L10N), le compilateur peut utiliser le temps de soutenir la langue nationale (Native Language Support (NLS)), le logiciel permet à l'utilisateur de configurer la sortie à utiliser la langue plutôt que l'anglais . Avec d'autres langages de programmation, telles que PHP peut également être utilisé dans le paquet gettext i18n processus d'écriture pour atteindre NLS (Native Language Support) de l'appui international, s'il vous plaît se référer à un des documents officiels http://www.gnu.org/software/gettext/manual/ gettext.html.
La réalisation du processus: les concepteurs dans le logiciel à code écrit dans le spectacle, la course programs pas un intérêt direct message écrit par des programmeurs, et sera la recherche d'un ensemble de la langue des informations sur le fichier. Si vous ne trouvez pas la volonté de montrer le code.
Tout d'abord, pour installer gettext d'ensemble:
1) les systèmes * nix:
下载gettext package,进行安装 1, de http://www.gnu.org/software/gettext/gettext.html télécharger paquet gettext, l'installation
2, compilé PHP en combinaison avec "- with-gettext [= DIR]", qui DIR pour le répertoire d'installation de gettext, pour les paramètres par défaut: / usr / local
3, enregistrer, puis redémarrez le serveur.
2) WIN32:
1, gnu_gettext.dll besoin de copier des fichiers dans le répertoire suivant système (C: \ WINDOWS \ System32), PHP 4.2.3 est nommé d'après le fichier libintl-1.dll, en php4 \ dlls sous.
2, ouvrir le fichier php.ini et recherchez l'extension = php_gettext.dll, supprimer l'avant ";"
3, enregistrer, puis redémarrez le serveur.
Si tout va bien, peut phpinfo () pour voir les mots gettext, ont depuis lors été mis en place.
Deuxièmement, i18n écrit:
1 2 3 4 | <? Php / / Procédure conventionnelle ) ; echo "Bonjour tout le monde!"); ?>; |
La suite de la procédure sont i18n: hello.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <? Php / / I18N exemple de la procédure pour démarrer "hello" ; // 定义要用的mo文件名称,常规来说,我们都把PACKAGE的名称定义和程序名称相同。 $ Paquet = "bonjour"; / / utiliser la définition du nom de fichier par mois, conventionnel, nous avons FORFAIT procédures et la définition du nom du même nom. "zh_CN" ; // 指定要用的语系,如:en_US、zh_CN、zh_TW $ Locale = "zh_CN"; / / désigné usage de la langue tels que: fr, zh_CN, zh_TW 'LANG=$locale' ) ; putenv ( 'LANG = $ locale'); LC_ALL , $locale ) ; setlocale (LC_ALL, $ locale); $package , './locale' ) ; bindtextdomain ($ paquet, '. / locale'); $package ) ; textdomain ($ paquet); / / Le. Mo fichier cherché est: / /. / Locale / zh_CN / LC_MESSAGES / hello.mo "Hello World!" ) ; echo gettext ( "Bonjour tout le monde!"); ?>; |
Dans IE, tapez: http://localhost/hello.php, comme sortie: "Bonjour à tous!"
Note: en fonction de la GNU paquet à l'intérieur de l'habitude, vous pouvez utiliser pour remplacer _(...) gettext (...), si peu seront en mesure de jouer un grand nombre de gettext.
Troisièmement, mettre en place gettext fichier po:
1, créer une structure de répertoire comme suit:
bindtextdomain la dir
/ Langue
/ LC_MESSAGES
domain.po
domain.mo
Un bindtextdomain la dir pour bindtextdomain () utilisée dans le répertoire, la langue de l'usage de la langue, du nom de domaine pour le package.
Ci-dessus à titre d'exemple:
/ Locale
/ Zh_CN
/ LC_MESSAGES
hello.po
hello.mo
2, créer un fichier PO
xgettext-d [votre définition du nom Package] [nom de fichier]
WIN32 suivant xgettext, msgfmt Program Files de l'(http://sourceforge.net/projects/gettext/) pour télécharger la nécessité libiconv.dll, libintl.dll. Puis poEdit à modifier.
Hello.php fichier à la ci-dessus, par exemple,
$ Xgettext-d bonjour hello.php
Hello.po exécutera un fichier qui se lit comme suit:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # SOME DESCRIPTIVE TITLE. # Copyright © YEAR Free Software Foundation, Inc # FIRST AUTHOR <<a href="mailto:EMAIL@ADDRESS"> email @ adresse </ a>>, YEAR. # #, Fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION \ n" "POT-Creation-Date: 2003-04-21 22:31 +0800 \ n" "PO-Revision-Date: YEAR-MO-DA HO: MI + ZONE \ n" ADDRESS % 3E\n ">EMAIL@ADDRESS> \n </a>" "Last-Translator: FULL NAME <<a href=" mailto:EMAIL @ ADDRESS% 3E\n "> email @ adresse> \ n </ a>" li.org % 3E\n ">LL@li.org> \n </a>" "Language-Team: LANGUAGE <<a href=" mailto:LL @ li.org% 3E\n "> LL@li.org> \ n </ a>" "MIME-Version: 1.0 \ n" "Content-Type: text / plain; charset = CHARSET \ n" "Content-Transfer-Encoding: 8bit \ n" #: Hello.php: 14 msgid "Bonjour tout le monde!" msgstr "dans le monde, bonjour!" |
Hello.php fichier, qui recense tous les appels gettext fonction de la chaîne, lorsque traduit simplement msgid valeur msgstr peut remplir dans la traduction, tels que la traduction en chinois.
3, créer un fichier MO
$ O-Msgfmt hello.mo hello.po
Hello.mo exécutera un fichier binaire.
4, sera la dernière hello.po, hello.mo copie à la langue de l'annuaire peut être.
Enfin: Dans IE, tapez: http://localhost/hello.php, il est maintenant le résultat: «Le monde, bonjour!"
| - S'est félicité de l'avis sur cet article |
Connectez-vous liés à | Dans le présent document, les lecteurs sont également préoccupés par le texte suivant:
|




































Très bonne entrée, vous regardez le cours d'aujourd'hui, si au moins je n'ai obtenir un fichier po, mais, malheureusement, le GT de produits liés à la production de pack de langue, mais aussi une certaine distance. En tout état de cause, ou pour m'aider, je vous remercie ~ ~ ~
Répondre