]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/L10n.php
Merge branch '2023.09-rc' into move-mentionbutton-to-navbar
[friendica.git] / src / Core / L10n.php
index 362d6d7a4a095962f4a84896a6450acffe18d342..414d578fca8be8aa906347b7235c117b1f8b804f 100644 (file)
@@ -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.
         *