public static function init()
 {
     self::$languages = array('en_US' => _('English - United States'), 'af_ZA' => _('Afrikaans - South Africa'), 'sq_AL' => _('Albanian - Albania'), 'ar_DZ' => _('Arabic - Algeria'), 'ar_BH' => _('Arabic - Bahrain'), 'ar_EG' => _('Arabic - Egypt'), 'ar_IQ' => _('Arabic - Iraq'), 'ar_JO' => _('Arabic - Jordan'), 'ar_KW' => _('Arabic - Kuwait'), 'ar_LB' => _('Arabic - Lebanon'), 'ar_LY' => _('Arabic - Libya'), 'ar_MA' => _('Arabic - Morocco'), 'ar_OM' => _('Arabic - Oman'), 'ar_QA' => _('Arabic - Qatar'), 'ar_SA' => _('Arabic - Saudi Arabia'), 'ar_SY' => _('Arabic - Syria'), 'ar_TN' => _('Arabic - Tunisia'), 'ar_AE' => _('Arabic - United Arab Emirates'), 'ar_YE' => _('Arabic - Yemen'), 'hy_AM' => _('Armenian - Armenia'), 'Cy_az_AZ' => _('Azeri (Cyrillic) - Azerbaijan'), 'Lt_az_AZ' => _('Azeri (Latin) - Azerbaijan'), 'eu_ES' => _('Basque - Basque'), 'be_BY' => _('Belarusian - Belarus'), 'bg_BG' => _('Bulgarian - Bulgaria'), 'ca_ES' => _('Catalan - Catalan'), 'zh_CN' => _('Chinese - China'), 'zh_HK' => _('Chinese - Hong Kong SAR'), 'zh_MO' => _('Chinese - Macau SAR'), 'zh_SG' => _('Chinese - Singapore'), 'zh_TW' => _('Chinese - Taiwan'), 'zh_CHS' => _('Chinese (Simplified)'), 'zh_CHT' => _('Chinese (Traditional)'), 'hr_HR' => _('Croatian - Croatia'), 'cs_CZ' => _('Czech - Czech Republic'), 'da_DK' => _('Danish - Denmark'), 'di_-MV' => _('Dhivehi - Maldives'), 'nl_BE' => _('Dutch - Belgium'), 'nl_NL' => _('Dutch - The Netherlands'), 'en_AU' => _('English - Australia'), 'en_BZ' => _('English - Belize'), 'en_CA' => _('English - Canada'), 'en_CB' => _('English - Caribbean'), 'en_IE' => _('English - Ireland'), 'en_JM' => _('English - Jamaica'), 'en_NZ' => _('English - New Zealand'), 'en_PH' => _('English - Philippines'), 'en_ZA' => _('English - South Africa'), 'en_TT' => _('English - Trinidad and Tobago'), 'en_GB' => _('English - United Kingdom'), 'en_ZW' => _('English - Zimbabwe'), 'et_EE' => _('Estonian - Estonia'), 'fo_FO' => _('Faroese - Faroe Islands'), 'fa_IR' => _('Farsi - Iran'), 'fi_FI' => _('Finnish - Finland'), 'fr_BE' => _('French - Belgium'), 'fr_CA' => _('French - Canada'), 'fr_FR' => _('French - France'), 'fr_LU' => _('French - Luxembourg'), 'fr_MC' => _('French - Monaco'), 'fr_CH' => _('French - Switzerland'), 'gl_ES' => _('Galician - Galician'), 'ka_GE' => _('Georgian - Georgia'), 'de_AT' => _('German - Austria'), 'de_DE' => _('German - Germany'), 'de_LI' => _('German - Liechtenstein'), 'de_LU' => _('German - Luxembourg'), 'de_CH' => _('German - Switzerland'), 'el_GR' => _('Greek - Greece'), 'gu_IN' => _('Gujarati - India'), 'he_IL' => _('Hebrew - Israel'), 'hi_IN' => _('Hindi - India'), 'hu_HU' => _('Hungarian - Hungary'), 'is_IS' => _('Icelandic - Iceland'), 'id_ID' => _('Indonesian - Indonesia'), 'it_IT' => _('Italian - Italy'), 'it_CH' => _('Italian - Switzerland'), 'ja_JP' => _('Japanese - Japan'), 'kn_IN' => _('Kannada - India'), 'kk_KZ' => _('Kazakh - Kazakhstan'), 'ko_-IN' => _('Konkani - India'), 'ko_KR' => _('Korean - Korea'), 'ky_KZ' => _('Kyrgyz - Kazakhstan'), 'lv_LV' => _('Latvian - Latvia'), 'lt_LT' => _('Lithuanian - Lithuania'), 'mk_MK' => _('Macedonian (FYROM)'), 'ms_BN' => _('Malay - Brunei'), 'ms_MY' => _('Malay - Malaysia'), 'mr_IN' => _('Marathi - India'), 'mn_MN' => _('Mongolian - Mongolia'), 'nb_NO' => _('Norwegian (Bokmål) - Norway'), 'nn_NO' => _('Norwegian (Nynorsk) - Norway'), 'pl_PL' => _('Polish - Poland'), 'pt_BR' => _('Portuguese - Brazil'), 'pt_PT' => _('Portuguese - Portugal'), 'pa_IN' => _('Punjabi - India'), 'ro_RO' => _('Romanian - Romania'), 'ru_RU' => _('Russian - Russia'), 'sa_IN' => _('Sanskrit - India'), 'Cy_sr_SP' => _('Serbian (Cyrillic) - Serbia'), 'Lt_sr_SP' => _('Serbian (Latin) - Serbia'), 'sk_SK' => _('Slovak - Slovakia'), 'sl_SI' => _('Slovenian - Slovenia'), 'es_AR' => _('Spanish - Argentina'), 'es_BO' => _('Spanish - Bolivia'), 'es_CL' => _('Spanish - Chile'), 'es_CO' => _('Spanish - Colombia'), 'es_CR' => _('Spanish - Costa Rica'), 'es_DO' => _('Spanish - Dominican Republic'), 'es_EC' => _('Spanish - Ecuador'), 'es_SV' => _('Spanish - El Salvador'), 'es_GT' => _('Spanish - Guatemala'), 'es_HN' => _('Spanish - Honduras'), 'es_MX' => _('Spanish - Mexico'), 'es_NI' => _('Spanish - Nicaragua'), 'es_PA' => _('Spanish - Panama'), 'es_PY' => _('Spanish - Paraguay'), 'es_PE' => _('Spanish - Peru'), 'es_PR' => _('Spanish - Puerto Rico'), 'es_ES' => _('Spanish - Spain'), 'es_UY' => _('Spanish - Uruguay'), 'es_VE' => _('Spanish - Venezuela'), 'sw_KE' => _('Swahili - Kenya'), 'sv_FI' => _('Swedish - Finland'), 'sv_SE' => _('Swedish - Sweden'), 'sy_-S' => _('Syriac - Syria'), 'ta_IN' => _('Tamil - India'), 'tt_RU' => _('Tatar - Russia'), 'te_IN' => _('Telugu - India'), 'th_TH' => _('Thai - Thailand'), 'tr_TR' => _('Turkish - Turkey'), 'uk_UA' => _('Ukrainian - Ukraine'), 'ur_PK' => _('Urdu - Pakistan'), 'Cy_uz_UZ' => _('Uzbek (Cyrillic) - Uzbekistan'), 'Lt_uz_UZ' => _('Uzbek (Latin) - Uzbekistan'), 'vi_VN' => _('Vietnamese - Vietnam'));
     // Sort languages using the following criteria:
     // 1. The current language.
     // 2. Alphabetical.
     uksort(self::$languages, function ($a, $b) {
         if (strncmp($a, LANGUAGE, 2) === 0 && strncmp($b, LANGUAGE, 2) !== 0) {
             return -1;
         } else {
             if (strncmp($b, LANGUAGE, 2) === 0 && strncmp($a, LANGUAGE, 2) !== 0) {
                 return 1;
             } else {
                 return strcmp(LanguageCodes::$languages[$a], LanguageCodes::$languages[$b]);
             }
         }
     });
 }
Пример #2
0
$languages = unserialize(LANGUAGES);
// If no language is given redirect to English version.
$query = explode('/', rtrim(!empty($_GET['q']) ? $_GET['q'] : ''));
if (empty($query) || !in_array($query[0], array_keys($languages))) {
    // Fallback to english.
    header('Location:' . alt_lang_url('en'));
    exit;
} else {
    define('LANGUAGE', $query[0]);
    setlocale(LC_MESSAGES, $languages[LANGUAGE] . '.utf8');
    bindtextdomain('messages', BASE_DIR . 'locale');
    bind_textdomain_codeset('messages', 'UTF-8');
    textdomain('messages');
}
// Initialize or include components, that need to be language aware.
LanguageCodes::init();
require_once BASE_DIR . 'inc/data.php';
// Will be set to true in the event that no controller is given
// or the controller does not exist.
$fallback = FALSE;
// Look for controller in the query and check that it exists.
if (!empty($query[1]) && class_exists($query[1])) {
    $controller = $query[1]::getInstance();
    // Look for controller method in the query and check that it is public
    // and does not start with _.
    if (!empty($query[2]) && preg_match('/^_/', $query[2]) !== 1 && is_callable(array($controller, $query[2]))) {
        $params = array_slice($query, 3);
        call_user_func_array(array($controller, $query[2]), $params);
    } else {
        $controller->render();
    }