/** * Set current language and locale * * @param string $inputLang Value of HTML tag "lang" (en|ru|en-US|ru-RU|...) * @return string Locale code on success */ public static function setLanguage($inputLang) { //--- Convert lang to standard form: $lang = self::isLanguageAcceptable($inputLang); //--- If lang is not acceptable set default language (the first of $languages): if ($lang === false) { $lang = self::getLanguageCode(self::$languages[0]); } //--- Set locale: self::$locale = setlocale(LC_ALL, [$lang, $lang . '.UTF-8']); //<-- ["ru_RU", "ru_RU.UTF-8"] //--- Store current language: self::$language = $lang; //self::$inputLanguage = $inputLang; //putenv("LANG=" . self::$language); return self::$language; }
/** * Returns the code of current language (selected by user or default) * * @param boolean $shortForm TRUE is 2-symbols form (en|ru|...). * FALSE is 5-symbols form (en-US|ru-RU|...). * @param array $acceptableLanguages List of acceptable languages. * The first in list is the default. * * @return <i>string</i> The code of current language. * Can be 2-symbols form (en|ru|...) or 5-symbols form (en-US|ru-RU|...) depending on the $shortForm value. * @see $shortForm */ public static function getLanguage($shortForm = null, $acceptableLanguages = null) { if ($shortForm === null) { $shortForm = self::$shortForm; } if (is_array($acceptableLanguages)) { self::$languages = $acceptableLanguages; } //--- Return the stored language: if (!self::$language) { //--- If is set $_COOKIE's languge: if ($_COOKIE[self::$cookieLanguageKey]) { self::setLanguage($_COOKIE[self::$cookieLanguageKey]); } else { //--- Define language accepted by user's browser: self::setLanguage(self::getUserAcceptLanguage()); } } //--- Short form: if ($shortForm) { return substr(self::$language, 0, 2); } //--- Standard form: return self::$language; }