/** * Initialize gettext avec la locale passée en paramètre, si aucune locale * n'est passée, on prend la valeur de la constante LOCALE_DEFAULT. * * Pour des raisons de compatibilité, on ne se base pas sur la fonction C * système setlocale() (hormis pour LC_MESSAGES). * * @static * @param string $locale le code de la langue (ex: fr_FR) * @return void * @access public */ public static function setLocale($locale = false) { // reset locale $result = setlocale(LC_MESSAGES, 'C'); if (!$locale) { $locale = defined('LOCALE') ? LOCALE : LOCALE_DEFAULT; } if (!isset(self::$locales[$locale])) { trigger_error(sprintf(self::$messages['unsupported'], $locale, LOCALE_DEFAULT), E_USER_WARNING); $locale = LOCALE_DEFAULT; } self::$data = self::$locales[$locale]; // avec certaines versions de gettext (ex. 0.14.4) il faut ce putenv(), // sinon ça marche mal... putenv('LC_MESSAGES=' . $locale); setlocale(LC_MESSAGES, $locale); // initialise gettext textdomain(DOMAIN); bindtextdomain(DOMAIN, LOCALE_DIR); bind_textdomain_codeset(DOMAIN, self::$data['encoding']); }