Instalator fixes and lots and lots of other bugfixes

This commit is contained in:
Vojtěch Sajdl
2018-01-12 21:35:31 +01:00
parent e19fd0d3c2
commit c25e8bcae8
16 changed files with 434 additions and 170 deletions
+213 -11
View File
@@ -7,6 +7,218 @@ class LocaleNegotiator
{
private $accepted_langs = [];
private $default_language;
private $all_locales = array(
'af_ZA' => 'Afrikaans',
'am_ET' => 'አማርኛ',
'ar_AE' => 'العربية',
'ar_BH' => 'العربية',
'ar_DZ' => 'العربية',
'ar_EG' => 'العربية',
'ar_IQ' => 'العربية',
'ar_JO' => 'العربية',
'ar_KW' => 'العربية',
'ar_LB' => 'العربية',
'ar_LY' => 'العربية',
'ar_MA' => 'العربية',
'arn_CL' => 'Mapuche',
'ar_OM' => 'العربية',
'ar_QA' => 'العربية',
'ar_SA' => 'العربية',
'ar_SY' => 'العربية',
'ar_TN' => 'العربية',
'ar_YE' => 'العربية',
'as_IN' => 'অসমীয়া',
'az_Cyrl_AZ' => 'Азәрбајҹан',
'az_Latn_AZ' => 'Azərbaycan',
'ba_RU' => 'Bashkir',
'be_BY' => 'Беларуская',
'bg_BG' => 'Български',
'bn_BD' => 'বাংলা',
'bn_IN' => 'বাংলা',
'bo_CN' => 'བོད་སྐད་',
'br_FR' => 'Brezhoneg',
'bs_Cyrl_BA' => 'Босански',
'bs_Latn_BA' => 'Bosanski',
'ca_ES' => 'Català',
'co_FR' => 'Corsican',
'cs_CZ' => 'Čeština',
'cy_GB' => 'Cymraeg',
'da_DK' => 'Dansk',
'de_AT' => 'Deutsch',
'de_CH' => 'Deutsch',
'de_DE' => 'Deutsch',
'de_LI' => 'Deutsch',
'de_LU' => 'Deutsch',
'dsb_DE' => 'Dolnoserbšćina',
'dv_MV' => 'Divehi',
'el_GR' => 'Ελληνικά',
'en_029' => 'English',
'en_AU' => 'English',
'en_BZ' => 'English',
'en_CA' => 'English',
'en_GB' => 'English',
'en_IE' => 'English',
'en_IN' => 'English',
'en_JM' => 'English',
'en_MY' => 'English',
'en_NZ' => 'English',
'en_PH' => 'English',
'en_SG' => 'English',
'en_TT' => 'English',
'en_US' => 'English',
'en_ZA' => 'English',
'en_ZW' => 'English',
'es_AR' => 'Español',
'es_BO' => 'Español',
'es_CL' => 'Español',
'es_CO' => 'Español',
'es_CR' => 'Español',
'es_DO' => 'Español',
'es_EC' => 'Español',
'es_ES' => 'Español',
'es_GT' => 'Español',
'es_HN' => 'Español',
'es_MX' => 'Español',
'es_NI' => 'Español',
'es_PA' => 'Español',
'es_PE' => 'Español',
'es_PR' => 'Español',
'es_PY' => 'Español',
'es_SV' => 'Español',
'es_US' => 'Español',
'es_UY' => 'Español',
'es_VE' => 'Español',
'et_EE' => 'Eesti',
'eu_ES' => 'Euskara',
'fa_IR' => 'فارسی',
'fi_FI' => 'Suomi',
'fil_PH' => 'Filipino',
'fo_FO' => 'Føroyskt',
'fr_BE' => 'Français',
'fr_CA' => 'Français',
'fr_CH' => 'Français',
'fr_FR' => 'Français',
'fr_LU' => 'Français',
'fr_MC' => 'Français',
'fy_NL' => 'West_frysk',
'ga_IE' => 'Gaeilge',
'gd_GB' => 'Gàidhlig',
'gl_ES' => 'Galego',
'gsw_FR' => 'Schwiizertüütsch',
'gu_IN' => 'ગુજરાતી',
'ha_Latn_NG' => 'Hausa',
'he_IL' => 'עברית',
'hi_IN' => 'हिन्दी',
'hr_BA' => 'Hrvatski',
'hr_HR' => 'Hrvatski',
'hsb_DE' => 'Hornjoserbšćina',
'hu_HU' => 'Magyar',
'hy_AM' => 'Հայերեն',
'id_ID' => 'Bahasa indonesia',
'ig_NG' => 'Igbo',
'ii_CN' => 'ꆈꌠꉙ',
'is_IS' => 'Íslenska',
'it_CH' => 'Italiano',
'it_IT' => 'Italiano',
'iu_Cans_CA' => 'Inuktitut',
'iu_Latn_CA' => 'Inuktitut',
'ja_JP' => '日本語',
'ka_GE' => 'ქართული',
'kk_KZ' => 'Қазақ тілі',
'kl_GL' => 'Kalaallisut',
'km_KH' => 'ខ្មែរ',
'kn_IN' => 'ಕನ್ನಡ',
'kok_IN' => 'कोंकणी',
'ko_KR' => '한국어',
'ky_KG' => 'Кыргызча',
'lb_LU' => 'Lëtzebuergesch',
'lo_LA' => 'ລາວ',
'lt_LT' => 'Lietuvių',
'lv_LV' => 'Latviešu',
'mi_NZ' => 'Maori',
'mk_MK' => 'Македонски',
'ml_IN' => 'മലയാളം',
'mn_MN' => 'Монгол',
'mn_Mong_CN' => 'Монгол',
'moh_CA' => 'Mohawk',
'mr_IN' => 'मराठी',
'ms_BN' => 'Bahasa melayu',
'ms_MY' => 'Bahasa melayu',
'mt_MT' => 'Malti',
'nb_NO' => 'Norsk bokmål',
'ne_NP' => 'नेपाली',
'nl_BE' => 'Nederlands',
'nl_NL' => 'Nederlands',
'nn_NO' => 'Nynorsk',
'nso_ZA' => 'Northern sotho',
'oc_FR' => 'Occitan',
'or_IN' => 'ଓଡ଼ିଆ',
'pa_IN' => 'ਪੰਜਾਬੀ',
'pl_PL' => 'Polski',
'prs_AF' => 'Prs',
'ps_AF' => 'پښتو',
'pt_BR' => 'Português',
'pt_PT' => 'Português',
'qut_GT' => 'Qut',
'quz_BO' => 'Quz',
'quz_EC' => 'Quz',
'quz_PE' => 'Quz',
'rm_CH' => 'Rumantsch',
'ro_RO' => 'Română',
'ru_RU' => 'Русский',
'rw_RW' => 'Kinyarwanda',
'sah_RU' => 'Саха тыла',
'sa_IN' => 'Sanskrit',
'se_FI' => 'Davvisámegiella',
'se_NO' => 'Davvisámegiella',
'se_SE' => 'Davvisámegiella',
'si_LK' => 'සිංහල',
'sk_SK' => 'Slovenčina',
'sl_SI' => 'Slovenščina',
'sma_NO' => 'Southern sami',
'sma_SE' => 'Southern sami',
'smj_NO' => 'Lule sami',
'smj_SE' => 'Lule sami',
'smn_FI' => 'Anarâškielâ',
'sms_FI' => 'Skolt sami',
'sq_AL' => 'Shqip',
'sr_Cyrl_BA' => 'Српски',
'sr_Cyrl_CS' => 'Српски',
'sr_Cyrl_ME' => 'Српски',
'sr_Cyrl_RS' => 'Српски',
'sr_Latn_BA' => 'Srpski',
'sr_Latn_CS' => 'Srpski',
'sr_Latn_ME' => 'Srpski',
'sr_Latn_RS' => 'Srpski',
'sv_FI' => 'Svenska',
'sv_SE' => 'Svenska',
'sw_KE' => 'Kiswahili',
'syr_SY' => 'Syriac',
'ta_IN' => 'தமிழ்',
'te_IN' => 'తెలుగు',
'tg_Cyrl_TJ' => 'Tajik',
'th_TH' => 'ไทย',
'tk_TM' => 'Turkmen',
'tn_ZA' => 'Tswana',
'tr_TR' => 'Türkçe',
'tt_RU' => 'Tatar',
'tzm_Latn_DZ' => 'Tamaziɣt',
'ug_CN' => 'ئۇيغۇرچە',
'uk_UA' => 'Українська',
'ur_PK' => 'اردو',
'uz_Cyrl_UZ' => 'Ўзбек',
'uz_Latn_UZ' => 'Oʻzbekcha',
'vi_VN' => 'Tiếng việt',
'wo_SN' => 'Wolof',
'xh_ZA' => 'Xhosa',
'yo_NG' => 'Èdè yorùbá',
'zh_CN' => '中文',
'zh_HK' => '中文',
'zh_MO' => '中文',
'zh_SG' => '中文',
'zh_TW' => '中文',
'zu_ZA' => 'Isizulu',
);
/**
* This method scans for languages and creates a list of language and its name (localized ofc.)
@@ -20,7 +232,7 @@ class LocaleNegotiator
//This basically means $accepted_langs[<lang_code>] = "<lang name>";
foreach ($tmp as $key => $value) {
$lang = basename($value);
$this->accepted_langs[$lang] = self::mb_ucfirst(locale_get_display_language($lang, $lang));
$this->accepted_langs[$lang] = $this->all_locales[$lang];
}
}
@@ -31,16 +243,6 @@ class LocaleNegotiator
return $this->accepted_langs;
}
/**
* This methid does ucfirst() on multibyte encodings like UTF-8 - good for edge cases when locale starts with Č or similar.
* @param String $string string
* @return String string with first char uppercase
*/
private static function mb_ucfirst($string)
{
return mb_strtoupper(mb_substr($string, 0, 1)).mb_strtolower(mb_substr($string, 1));
}
/**
* This method does the actual negotiation. It has override parameter in case user wants to switch
* languages.