Explorar o código

Dynamic locale

1Day %!s(int64=3) %!d(string=hai) anos
pai
achega
df47880fd7

+ 1 - 190
app/Http/Middleware/SetLocale.php

@@ -10,194 +10,6 @@ use Illuminate\Support\Facades\Session;
 
 
 class SetLocale
 class SetLocale
 {
 {
-    function getLocaleCodeForDisplayLanguage($name){
-        $languageCodes = array(
-            "aa" => "Afar",
-            "ab" => "Abkhazian",
-            "ae" => "Avestan",
-            "af" => "Afrikaans",
-            "ak" => "Akan",
-            "am" => "Amharic",
-            "an" => "Aragonese",
-            "ar" => "Arabic",
-            "as" => "Assamese",
-            "av" => "Avaric",
-            "ay" => "Aymara",
-            "az" => "Azerbaijani",
-            "ba" => "Bashkir",
-            "be" => "Belarusian",
-            "bg" => "Bulgarian",
-            "bh" => "Bihari",
-            "bi" => "Bislama",
-            "bm" => "Bambara",
-            "bn" => "Bengali",
-            "bo" => "Tibetan",
-            "br" => "Breton",
-            "bs" => "Bosnian",
-            "ca" => "Catalan",
-            "ce" => "Chechen",
-            "ch" => "Chamorro",
-            "co" => "Corsican",
-            "cr" => "Cree",
-            "cs" => "Czech",
-            "cu" => "Church Slavic",
-            "cv" => "Chuvash",
-            "cy" => "Welsh",
-            "da" => "Danish",
-            "de" => "German",
-            "dv" => "Divehi",
-            "dz" => "Dzongkha",
-            "ee" => "Ewe",
-            "el" => "Greek",
-            "en" => "English",
-            "eo" => "Esperanto",
-            "es" => "Spanish",
-            "et" => "Estonian",
-            "eu" => "Basque",
-            "fa" => "Persian",
-            "ff" => "Fulah",
-            "fi" => "Finnish",
-            "fj" => "Fijian",
-            "fo" => "Faroese",
-            "fr" => "French",
-            "fy" => "Western Frisian",
-            "ga" => "Irish",
-            "gd" => "Scottish Gaelic",
-            "gl" => "Galician",
-            "gn" => "Guarani",
-            "gu" => "Gujarati",
-            "gv" => "Manx",
-            "ha" => "Hausa",
-            "he" => "Hebrew",
-            "hi" => "Hindi",
-            "ho" => "Hiri Motu",
-            "hr" => "Croatian",
-            "ht" => "Haitian",
-            "hu" => "Hungarian",
-            "hy" => "Armenian",
-            "hz" => "Herero",
-            "ia" => "Interlingua (International Auxiliary Language Association)",
-            "id" => "Indonesian",
-            "ie" => "Interlingue",
-            "ig" => "Igbo",
-            "ii" => "Sichuan Yi",
-            "ik" => "Inupiaq",
-            "io" => "Ido",
-            "is" => "Icelandic",
-            "it" => "Italian",
-            "iu" => "Inuktitut",
-            "ja" => "Japanese",
-            "jv" => "Javanese",
-            "ka" => "Georgian",
-            "kg" => "Kongo",
-            "ki" => "Kikuyu",
-            "kj" => "Kwanyama",
-            "kk" => "Kazakh",
-            "kl" => "Kalaallisut",
-            "km" => "Khmer",
-            "kn" => "Kannada",
-            "ko" => "Korean",
-            "kr" => "Kanuri",
-            "ks" => "Kashmiri",
-            "ku" => "Kurdish",
-            "kv" => "Komi",
-            "kw" => "Cornish",
-            "ky" => "Kirghiz",
-            "la" => "Latin",
-            "lb" => "Luxembourgish",
-            "lg" => "Ganda",
-            "li" => "Limburgish",
-            "ln" => "Lingala",
-            "lo" => "Lao",
-            "lt" => "Lithuanian",
-            "lu" => "Luba-Katanga",
-            "lv" => "Latvian",
-            "mg" => "Malagasy",
-            "mh" => "Marshallese",
-            "mi" => "Maori",
-            "mk" => "Macedonian",
-            "ml" => "Malayalam",
-            "mn" => "Mongolian",
-            "mr" => "Marathi",
-            "ms" => "Malay",
-            "mt" => "Maltese",
-            "my" => "Burmese",
-            "na" => "Nauru",
-            "nb" => "Norwegian Bokmal",
-            "nd" => "North Ndebele",
-            "ne" => "Nepali",
-            "ng" => "Ndonga",
-            "nl" => "Dutch",
-            "nn" => "Norwegian Nynorsk",
-            "no" => "Norwegian",
-            "nr" => "South Ndebele",
-            "nv" => "Navajo",
-            "ny" => "Chichewa",
-            "oc" => "Occitan",
-            "oj" => "Ojibwa",
-            "om" => "Oromo",
-            "or" => "Oriya",
-            "os" => "Ossetian",
-            "pa" => "Panjabi",
-            "pi" => "Pali",
-            "pl" => "Polish",
-            "ps" => "Pashto",
-            "pt" => "Portuguese",
-            "qu" => "Quechua",
-            "rm" => "Raeto-Romance",
-            "rn" => "Kirundi",
-            "ro" => "Romanian",
-            "ru" => "Russian",
-            "rw" => "Kinyarwanda",
-            "sa" => "Sanskrit",
-            "sc" => "Sardinian",
-            "sd" => "Sindhi",
-            "se" => "Northern Sami",
-            "sg" => "Sango",
-            "si" => "Sinhala",
-            "sk" => "Slovak",
-            "sl" => "Slovenian",
-            "sm" => "Samoan",
-            "so" => "Somali",
-            "sq" => "Albanian",
-            "sr" => "Serbian",
-            "ss" => "Swati",
-            "st" => "Southern Sotho",
-            "su" => "Sundanese",
-            "sv" => "Swedish",
-            "sw" => "Swahili",
-            "ta" => "Tamil",
-            "te" => "Telugu",
-            "tg" => "Tajik",
-            "th" => "Thai",
-            "ti" => "Tigrinya",
-            "tk" => "Turkmen",
-            "tl" => "Tagalog",
-            "tn" => "Tswana",
-            "to" => "Tonga",
-            "tr" => "Turkish",
-            "ts" => "Tsonga",
-            "tt" => "Tatar",
-            "tw" => "Twi",
-            "ty" => "Tahitian",
-            "ug" => "Uighur",
-            "uk" => "Ukrainian",
-            "ur" => "Urdu",
-            "uz" => "Uzbek",
-            "ve" => "Venda",
-            "vi" => "Vietnamese",
-            "vo" => "Volapuk",
-            "wa" => "Walloon",
-            "wo" => "Wolof",
-            "xh" => "Xhosa",
-            "yi" => "Yiddish",
-            "yo" => "Yoruba",
-            "za" => "Zhuang",
-            "zh" => "Chinese",
-            "zu" => "Zulu"
-        );
-        return array_search($name, array_flip($languageCodes));
-    }
 
 
     /**
     /**
      *
      *
@@ -217,8 +29,7 @@ class SetLocale
                 }else{
                 }else{
                     $locale = substr($request->server('HTTP_ACCEPT_LANGUAGE'), 0, 2);
                     $locale = substr($request->server('HTTP_ACCEPT_LANGUAGE'), 0, 2);
 
 
-                    if (!in_array($locale, array_flip(preg_split ("/\,/", Settings::getValueByKey("SETTINGS::LOCALE:AVAILABLE"))))
-                        || !in_array(strtolower($this->getLocaleCodeForDisplayLanguage($locale)), array_flip(preg_split ("/\,/", Settings::getValueByKey("SETTINGS::LOCALE:AVAILABLE"))))) {
+                    if (!in_array($locale, json_decode(Settings::getValueByKey("SETTINGS::LOCALE:AVAILABLE")))){
                         $locale = Settings::getValueByKey("SETTINGS::LOCALE:DEFAULT");
                         $locale = Settings::getValueByKey("SETTINGS::LOCALE:DEFAULT");
                     }
                     }
 
 

+ 4 - 2
resources/lang/de.json

@@ -350,5 +350,7 @@
     "Notes": "Notizen",
     "Notes": "Notizen",
     "Amount in words": "Betrag in Worten",
     "Amount in words": "Betrag in Worten",
     "Please pay until": "Zahlbar bis",
     "Please pay until": "Zahlbar bis",
-    "Account already exists on Pterodactyl. Please contact the Support!": "Der Account existiert bereits bei Pterodactyl. Kontaktiere den Support!"
-}
+    "Account already exists on Pterodactyl. Please contact the Support!": "Der Account existiert bereits bei Pterodactyl. Kontaktiere den Support!",
+    "de": "Deutsch",
+    "en": "Englisch"
+}

+ 2 - 0
resources/views/admin/settings/tabs/language.blade.php

@@ -46,6 +46,7 @@
 
 
                 <div class="form-group">
                 <div class="form-group">
                     <input value="true" id="autotranslate" name="autotranslate"
                     <input value="true" id="autotranslate" name="autotranslate"
+                           {{(\App\Models\Settings::getValueByKey("SETTINGS::LOCALE:DYNAMIC")?"checked":"")}}
                            type="checkbox">
                            type="checkbox">
                     <label for="autotranslate">{{__('Auto-translate')}} <i data-toggle="popover"
                     <label for="autotranslate">{{__('Auto-translate')}} <i data-toggle="popover"
                                                                            data-trigger="hover"
                                                                            data-trigger="hover"
@@ -54,6 +55,7 @@
 
 
                     <br/>
                     <br/>
                     <input value="true" id="canClientChangeLanguage" name="canClientChangeLanguage"
                     <input value="true" id="canClientChangeLanguage" name="canClientChangeLanguage"
+                           {{(\App\Models\Settings::getValueByKey("SETTINGS::LOCALE:CLIENTS_CAN_CHANGE")?"checked":"")}}
                            type="checkbox">
                            type="checkbox">
                     <label for="canClientChangeLanguage">{{__('Let the Client change the Language')}} <i
                     <label for="canClientChangeLanguage">{{__('Let the Client change the Language')}} <i
                             data-toggle="popover"
                             data-toggle="popover"

+ 6 - 7
resources/views/layouts/main.blade.php

@@ -53,7 +53,7 @@
                             class="fab fa-discord mr-2"></i>{{ __('Discord') }}</a>
                             class="fab fa-discord mr-2"></i>{{ __('Discord') }}</a>
                 </li>
                 </li>
                 <!-- Language Selection -->
                 <!-- Language Selection -->
-                @if(\App\Models\Settings::getValueByKey("SETTINGS::LOCALE:CAN_CLIENT_CHANGE"))
+                @if (\App\Models\Settings::getValueByKey("SETTINGS::LOCALE:CLIENTS_CAN_CHANGE") == 'true')
                 <li class="nav-item dropdown">
                 <li class="nav-item dropdown">
                     <a class="nav-link" href="#" id="languageDropdown" role="button" data-toggle="dropdown"
                     <a class="nav-link" href="#" id="languageDropdown" role="button" data-toggle="dropdown"
                         aria-haspopup="true" aria-expanded="false">
                         aria-haspopup="true" aria-expanded="false">
@@ -65,20 +65,19 @@
                         aria-labelledby="changeLocale">
                         aria-labelledby="changeLocale">
                         <form method="post" action="{{ route('changeLocale') }}" class="nav-item text-center">
                         <form method="post" action="{{ route('changeLocale') }}" class="nav-item text-center">
                             @csrf
                             @csrf
-                            @foreach (config('app.available_locales') as $key => $value)
-                                @if (!in_array(strtolower($key), UNSUPPORTED_LANGS))
-                                    <button class="dropdown-item" name="inputLocale" value="{{ $value }}">
-                                        {{ $key }}
+                            @foreach (json_decode(\App\Models\Settings::getValueByKey("SETTINGS::LOCALE:AVAILABLE")) as $key)
+                                    <button class="dropdown-item" name="inputLocale" value="{{ $key }}">
+                                        {{ __($key) }}
                                     </button>
                                     </button>
-                                @endif
 
 
                             @endforeach
                             @endforeach
 
 
                         </form>
                         </form>
                     </div>
                     </div>
                 </li>
                 </li>
-                <!-- End Language Selection -->
                 @endif
                 @endif
+                <!-- End Language Selection -->
+
             </ul>
             </ul>
 
 
             <!-- Right navbar links -->
             <!-- Right navbar links -->