X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FL10n.php;h=414d578fca8be8aa906347b7235c117b1f8b804f;hb=c4870a16d4ffbd37d6c4f379abfe2d18cacb88ff;hp=362d6d7a4a095962f4a84896a6450acffe18d342;hpb=c5ef0cfe20691ff33d36aaf5d6ba63ff27d698ed;p=friendica.git diff --git a/src/Core/L10n.php b/src/Core/L10n.php index 362d6d7a4a..414d578fca 100644 --- a/src/Core/L10n.php +++ b/src/Core/L10n.php @@ -397,8 +397,46 @@ class L10n // See https://github.com/friendica/friendica/issues/10511 // Persian is manually added to language detection until a persian translation is provided for the interface, at // which point it will be automatically available through `getAvailableLanguages()` and this should be removed. - // Additionally Portuguese, Ukrainian and Welsh are added to that list. - $langs = array_merge(['cy' => 'Cymraeg', 'uk' => 'Українська', 'pt-PT' => 'Português', 'fa' => 'فارسی'], $langs); + // Additionally some more languages are added to that list that are used in the Fediverse. + $additional_langs = [ + 'af' => 'Afrikaans', + 'az-Latn' => 'azərbaycan dili', + 'bs-Latn' => 'bosanski jezik', + 'be' => 'беларуская мова', + 'bn' => 'বাংলা', + 'cy' => 'Cymraeg', + 'el-monoton' => 'Ελληνικά', + 'eu' => 'euskara', + 'fa' => 'فارسی', + 'ga' => 'Gaeilge', + 'gl' => 'Galego', + 'he' => 'עברית', + 'hi' => 'हिन्दी', + 'hr' => 'Hrvatski', + 'hy' => 'Հայերեն', + 'id' => 'bahasa Indonesia', + 'jv' => 'Basa Jawa', + 'ka' => 'ქართული', + 'ko' => '한국인', + 'lt' => 'lietuvių', + 'lv' => 'latviešu', + 'ms-Latn' => 'Bahasa Melayu', + 'sr-Cyrl' => 'српски језик', + 'sk' => 'slovenský', + 'sl' => 'Slovenščina', + 'sq' => 'Shqip', + 'sw' => 'Kiswahili', + 'ta' => 'தமிழ்', + 'th' => 'แบบไทย', + 'tl' => 'Wikang Tagalog', + 'tr' => 'Türkçe', + 'pt-PT' => 'Português', + 'uk' => 'Українська', + 'uz' => 'Ўзбек', + 'vi' => 'Tiếng Việt', + 'zh-hant' => '繁體', + ]; + $langs = array_merge($additional_langs, $langs); ksort($langs); } } @@ -407,30 +445,56 @@ class L10n /** * The language detection routine uses some slightly different language codes. - * This function changes the language language codes accordingly. + * This function changes the language array accordingly. * * @param array $languages * @return array */ public function convertForLanguageDetection(array $languages): array { - $languages['fi'] = $languages['fi-fi']; - unset($languages['fi-fi']); - $languages['da'] = $languages['da-dk']; - unset($languages['da-dk']); - $languages['nb'] = $languages['nb-no']; - unset($languages['nb-no']); - $languages['pt-BR'] = $languages['pt-br']; - unset($languages['pt-br']); - $languages['zh-Hans'] = $languages['zh-cn']; - $languages['zh-Hant'] = $languages['zh-cn']; - unset($languages['zh-cn']); + foreach ($languages as $key => $language) { + $newkey = $this->convertCodeForLanguageDetection($key); + if ($newkey != $key) { + if (!isset($languages[$newkey])) { + $languages[$newkey] = $language; + } + unset($languages[$key]); + } + } ksort($languages); return $languages; } + /** + * The language detection routine uses some slightly different language codes. + * This function changes the language codes accordingly. + * + * @param string $language + * @return string + */ + public function convertCodeForLanguageDetection(string $language): string + { + switch ($language) { + case 'da-dk': + return 'da'; + case 'en-us': + case 'en-gb': + return 'en'; + case 'fi-fi': + return 'fi'; + case 'nb-no': + return 'nb'; + case 'pt-br': + return 'pt-BR'; + case 'zh-cn': + return 'zh-Hans'; + default: + return $language; + } + } + /** * Translate days and months names. *