diff --git a/app/Http/Controllers/Admin/LanguageController.php b/app/Http/Controllers/Admin/LanguageController.php index c6aa7a1e..650c4f7a 100644 --- a/app/Http/Controllers/Admin/LanguageController.php +++ b/app/Http/Controllers/Admin/LanguageController.php @@ -11,6 +11,7 @@ use App\Http\Tools\Demo; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use App\Http\Controllers\Controller; +use Illuminate\Support\Facades\Cache; use App\Http\Requests\Languages\UpdateStringRequest; use App\Http\Requests\Languages\CreateLanguageRequest; use App\Http\Requests\Languages\UpdateLanguageRequest; @@ -19,33 +20,26 @@ class LanguageController extends Controller { /** - * Get all languages + * Get all languages for admin translate * - * @return string + * @return Collection */ public function get_languages() { - return Language::all(); - } - - public function get_language_strings_i18n($language) - { - $lang = Language::whereLocale($language); - - return $lang->with('languageStrings')->first(); - + return [ + 'languages' => Language::all(), + 'set_language' => Setting::whereName('language')->first()->value + ]; } /** - * Get all language strings + * Get all language strings for admin translate * * @param Language $language * @return Collection */ public function get_language_strings(Language $language) { - $language_setting = Setting::whereName('language')->first()->value; - $lang = Language::whereId($language->id); $strings = $lang->with('languageStrings')->first(); @@ -57,7 +51,6 @@ class LanguageController extends Controller $default_strings = collect(config('language_strings.' . $license)); return [ - 'language_setting' => $language_setting, 'translated_strings' => $strings, 'default_strings' => $default_strings ]; @@ -108,7 +101,7 @@ class LanguageController extends Controller } /** - * Update strings for language + * Update string for language * * @param UpdateStringRequest $request * @param Language $language @@ -128,6 +121,9 @@ class LanguageController extends Controller 'value' => $request->value ]); + + Cache::forget('language_strings-' . $language->locale); + return response('Done', 204); } diff --git a/app/Http/Controllers/AppFunctionsController.php b/app/Http/Controllers/AppFunctionsController.php index 8ad86dbf..ea8309c8 100644 --- a/app/Http/Controllers/AppFunctionsController.php +++ b/app/Http/Controllers/AppFunctionsController.php @@ -269,16 +269,16 @@ class AppFunctionsController extends Controller public function get_translate($lang) { - $lang = Language::whereLocale($lang); + $language = Language::whereLocale($lang); + + $key = 'language_strings-' . $lang; - if (Cache::has('language_strings')) { - return Cache::get('language_strings'); + if (Cache::has($key)) { + return Cache::get($key); } - return Cache::rememberForever('language_strings', function () use ($lang) { - return $lang->with('languageStrings')->first(); - }); - + return Cache::rememberForever($key, function () use ($language) { + return $language->with('languageStrings')->first(); + }); } - } diff --git a/app/Http/Helpers/helpers.php b/app/Http/Helpers/helpers.php index d6b05819..a690b55c 100644 --- a/app/Http/Helpers/helpers.php +++ b/app/Http/Helpers/helpers.php @@ -807,26 +807,20 @@ function set_time_by_user_timezone($time) function _t($key) { - if (Cache::has('language_strings')) { + $locale = get_setting('language'); + + //Check if cash has string + if (Cache::has('language_strings-' . $locale)) { - //Check if cash has string - $strings = Cache::get('language_strings') - ->languageStrings - ->toArray(); - + $strings = Cache::get('language_strings-' . $locale) + ->languageStrings; + // Find the string by key - foreach($strings as $string) { - if($string['key'] === $key) { - return $string['value']; - } - } - } - - $language = Language::whereLocale(get_setting('language')) - ->first(); + return $strings->firstWhere('key', $key)->value; + } // If cash dont have string return string from database - return LanguageString::whereLangAndKey($language->locale, $key) + return LanguageString::whereLangAndKey($locale, $key) ->first() ->value; } diff --git a/app/Language.php b/app/Language.php index 0c93f8e2..c32114bf 100644 --- a/app/Language.php +++ b/app/Language.php @@ -33,10 +33,12 @@ class Language extends Model DB::table('language_strings') ->where('lang', $language->locale) ->delete(); + + Cache::forget('language_strings-' . $language->locale ); }); - static::updated(function() { - Cache::forget('language_strings'); + static::updated(function($language) { + Cache::forget('language_strings-' . $language->locale ); }); static::created(function ($language) { diff --git a/config/language_strings.php b/config/language_strings.php index 81288548..a2e9f86c 100644 --- a/config/language_strings.php +++ b/config/language_strings.php @@ -414,6 +414,7 @@ return [ "popup_passport_error.title" => "Invalid Passport Grand Client", "popup_paylod_error.message" => "Sorry, your file is too large and can't be uploaded", "popup_paylod_error.title" => "File is too large", + "popup_rename.select_emoji_label" => "Pick Your Emoji Icon", "popup_rename.color_pick_label" => "Pick Your Color:", "popup_rename.emoji_list_not_found" => "Not Found", "popup_rename.label" => "Edit Name", @@ -987,6 +988,7 @@ return [ "popup_passport_error.title" => "Invalid Passport Grand Client", "popup_paylod_error.message" => "Sorry, your file is too large and can't be uploaded", "popup_paylod_error.title" => "File is too large", + "popup_rename.select_emoji_label" => "Pick Your Emoji Icon", "popup_rename.color_pick_label" => "Pick Your Color:", "popup_rename.emoji_list_not_found" => "Not Found", "popup_rename.label" => "Edit Name", diff --git a/public/mix-manifest.json b/public/mix-manifest.json index f2d70b4b..761e2869 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -13,7 +13,7 @@ "/chunks/app-billings.js": "/chunks/app-billings.js?id=aac5bd51067578358164", "/chunks/app-email.js": "/chunks/app-email.js?id=9d1631b19f6492b8cae4", "/chunks/app-index.js": "/chunks/app-index.js?id=2dcbe307133d780b6472", - "/chunks/app-language.js": "/chunks/app-language.js?id=4179320e3c8fcf2d4ae9", + "/chunks/app-language.js": "/chunks/app-language.js?id=62fc50db4f9950730323", "/chunks/app-others.js": "/chunks/app-others.js?id=44efcfb317747ff3b508", "/chunks/app-payments.js": "/chunks/app-payments.js?id=187ecc16f9f7fbc4ccac", "/chunks/app-settings.js": "/chunks/app-settings.js?id=b6b0eba13665133c0a19", diff --git a/resources/js/App.vue b/resources/js/App.vue index e713c11b..997992cb 100644 --- a/resources/js/App.vue +++ b/resources/js/App.vue @@ -4,7 +4,7 @@ -
+
@@ -148,6 +148,7 @@ export default { data() { return { isScaledDown: false, + loadedLanguage: false, } }, methods: { @@ -181,7 +182,9 @@ export default { }, mounted() { - this.$loadLanguage() + this.$loadLanguage().then((loaded) => { + this.loadedLanguage = loaded + }) this.$checkOS() diff --git a/resources/js/components/Others/Forms/SelectInput.vue b/resources/js/components/Others/Forms/SelectInput.vue index 7709510a..1a8d0636 100644 --- a/resources/js/components/Others/Forms/SelectInput.vue +++ b/resources/js/components/Others/Forms/SelectInput.vue @@ -10,7 +10,7 @@
- {{ selected.label }} + {{ $t(`${selected.label}`) }}
@@ -29,7 +29,7 @@ - {{ option.label }} + {{ $t(`${option.label}`) }} diff --git a/resources/js/helpers.js b/resources/js/helpers.js index d808c20e..31f2ff06 100644 --- a/resources/js/helpers.js +++ b/resources/js/helpers.js @@ -25,7 +25,7 @@ const Helpers = { Vue.prototype.$loadLanguage = function (language) { - // return new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { let locale = language ? language : this.$store.getters.config.language axios.get(`/api/language/${locale}`) .then((response) => { @@ -39,12 +39,11 @@ const Helpers = { }) i18n.setLocaleMessage(locale, obj) - i18n.locale = locale - - // resolve(true) - + i18n.locale = locale + + resolve(true) }) - // }) + }) } Vue.prototype.$updateImage = function (route, name, image) { diff --git a/resources/js/views/Admin/Languages/Language.vue b/resources/js/views/Admin/Languages/Language.vue index 92bcd9ee..18069abe 100644 --- a/resources/js/views/Admin/Languages/Language.vue +++ b/resources/js/views/Admin/Languages/Language.vue @@ -12,11 +12,17 @@
+ +
-
+
- - + +
@@ -27,8 +33,9 @@
- - + + + @@ -59,11 +66,11 @@ export default { }, data () { return { - active: undefined, - languages:undefined, + activeLanguage: undefined, languagesStrings:undefined, + setLanguage: undefined, + languages:undefined, loadedLanguages: false, - loadedStrings:false } }, methods: { @@ -89,30 +96,19 @@ export default { axios .get('/api/languages') .then((response) => { - this.languages = response.data - this.active = response.data[0].locale + this.languages = response.data.languages + + this.activeLanguage = response.data.languages[0] + + this.setLanguage = response.data.set_language }) .catch(() => Vue.prototype.$isSomethingWrong()) .finally(() => { this.loadedLanguages = true - this.getLanguageStrings(this.languages[0]) }) }, - getLanguageStrings (language) { - - this.active = language.locale - - this.loadedStrings = false - - axios - .get(`/api/languages/${language.id}/strings`) - .then(response => { - this.languagesStrings = response.data - }) - .catch(() => Vue.prototype.$isSomethingWrong()) - .finally(() => { - this.loadedStrings = true - }) + openLanguage(language) { + this.activeLanguage = language } }, mounted () { @@ -132,6 +128,10 @@ export default { this.languages[index].name = language.name }) + + events.$on('language:set-as-default', (locale) => { + this.setLanguage = locale + }) }, destroyed () { events.$off('action:confirmed') diff --git a/resources/js/views/Admin/Languages/LanguageStrings.vue b/resources/js/views/Admin/Languages/LanguageStrings.vue index 3076a892..45416e05 100644 --- a/resources/js/views/Admin/Languages/LanguageStrings.vue +++ b/resources/js/views/Admin/Languages/LanguageStrings.vue @@ -1,4 +1,5 @@