PHP gettext: verschil tussen versies
(Nieuwe pagina aangemaakt met 'Met gettext kun je eenvoudig multi language aanbrengen in je systeem. Als gettext is geinstalleerd, kun je in je code de functie gettext() of _() gebruiken om hierin d…') |
(geen verschil)
|
Huidige versie van 24 aug 2012 om 10:03
Met gettext kun je eenvoudig multi language aanbrengen in je systeem. Als gettext is geinstalleerd, kun je in je code de functie gettext() of _() gebruiken om hierin de tekst te zetten die vertaald moet worden. Vervolgens kun je met poEdit je code map laten scannen, zodat je een language file kunt maken. Je moet onder menu bestand -> voorkeuren aangeven dat je bij opslaan het bestand wilt laten compilen naar een .mo bestand. Dit is het bestand dat door PHP wordt gebruikt.
Vervolgens zet je de volgende code in je PHP:
setlocale(LC_MESSAGES, 'nl_NL'); // change by language, directory name sk_SK, not sk_SK.UTF-8
bindtextdomain("messages", LOCALE_PATH);
bind_textdomain_codeset("messages", 'UTF-8');
textdomain("messages");
In dit voorbeeld is LOCALE_PATH gezet naar bijv. /home/roland/tdcms.stumpel.local/locale .. Hierin moeten vervolgens de mappen komen die corresponderen met de language, dus bijv. nl_NL. Hierin moet weer de map LC_MESSAGES komen, met hierin het bestand messages.mo. Dit messages.mo komt weer overeen met wat je in bindtextdomain hebt gebruikt als eerste parameter.
In bovenstaand voorbeeld zou het language bestand dus /home/roland/tdcms.stumpel.local/locale/nl_NL/LC_MESSAGES/messages.mo zijn.
LET OP! Je kunt de LC_MESSAGES locale alleen setten op een 'geldige' locale. Je kunt dit op de shell van de server controleren met commando 'locale -a':
root@debiandev:/home/roland/td.stumpel.local/locale# locale -a
C
dutch
en_US.utf8
nl_NL
nl_NL@euro
nl_NL.iso88591
nl_NL.iso885915@euro
nl_NL.utf8
POSIX
Op debian kun je dit lijstje aanpassen door /etc/locale.gen aan te passen, en het comment te verwijderen van de extra locale's die je wilt hebben. Draai daarna het commando 'locale-gen'.