Use PHP Gettext without having to install locales Use PHP Gettext without having to install locales php php

Use PHP Gettext without having to install locales


Try gettext-php. It is a drop-in replacment for gettext written in PHP. It was originally done for WordPress, I think, because WP needs to run on shared hosts which are not always configured for every locale. This seems to me to be your issue as well.

It has a bit of performance hit, but it has not been an issue for me at all.


Here is the solution:

$lang = 'de'; //debugsetlocale( LC_ALL, 'C.UTF-8' );bindtextdomain( 'default', PATH . "/locale/$lang" );bind_textdomain_codeset( 'default', 'UTF-8' );textdomain( 'default' );

The only difference between that and the example I posted at the bottom of my answer is that it uses C.UTF-8 not just C.

I'll be doing more testing of this, and if it works cross-platform, and will update this answer if I find out anything else.


For anyone still having some problem with this, you can try the code below, which i get from here:http://php.net/manual/en/function.gettext.php#58310

It solved me on freebsd server, having no extra locale install (fr_FR and my_MY)This code is also useful when you have some problem with the gettext cache.

<?phpfunction initialize_i18n($locale) {  $locales_root="/app/php/locale"; // change This to where you locale folder at  putenv('LANG='.$locale);  setlocale(LC_ALL,"");  setlocale(LC_MESSAGES,$locale);  setlocale(LC_CTYPE,$locale);  $domains = glob($locales_root.'/'.$locale.'/LC_MESSAGES/*.mo');  $current = basename($domains[0],'.mo');  $timestamp = preg_replace('{messages-}i','',$current);  bindtextdomain($current,$locales_root);  textdomain($current);}?>