From 26348bed808db1ecac06dae0b548f1a988e36c25 Mon Sep 17 00:00:00 2001 From: SimonGschnell Date: Wed, 8 Jan 2025 11:15:55 +0100 Subject: [PATCH] update(FHC_JS_DATA_STORAGE_OBJECT/Sprachen.js): adds server_languages and their locale to FHC_JS_DATA_STORAGE_OBJECT and updates Sprachen.js accordingly --- application/helpers/hlp_header_helper.php | 27 +++++++++++++-------- public/js/components/Calendar/Day/Page.js | 6 ++--- public/js/components/Calendar/Month.js | 2 +- public/js/components/Calendar/Month/Page.js | 2 +- public/js/components/Calendar/Months.js | 2 +- public/js/components/Calendar/Week/Page.js | 6 ++--- public/js/components/Cis/Sprachen.js | 21 +++------------- public/js/plugin/Phrasen.js | 14 ++++------- 8 files changed, 34 insertions(+), 46 deletions(-) diff --git a/application/helpers/hlp_header_helper.php b/application/helpers/hlp_header_helper.php index c1d10f979..bba8f9fc3 100644 --- a/application/helpers/hlp_header_helper.php +++ b/application/helpers/hlp_header_helper.php @@ -87,21 +87,28 @@ function generateCSSsInclude($CSSs) */ function generateJSDataStorageObject($indexPage, $calledPath, $calledMethod) { + $ci =& get_instance(); + $ci->load->model('system/Sprache_model','SpracheModel'); + $server_language = getData($ci->SpracheModel->loadWhere(['content' => true])); + $server_language = array_map(function($language){ + return ['sprache'=>$language->sprache, 'locale'=>$language->locale, 'bezeichnung'=>$language->bezeichnung[$language->index-1]]; + }, $server_language); $user_language = getUserLanguage(); - // default locale - //user_locale: "'.Locale::DEFAULT_LOCALE.'", + $FHC_JS_DATA_STORAGE_OBJECT = array( + 'app_root' => APP_ROOT, + 'ci_router' => $indexPage, + 'called_path' => $calledPath, + 'called_method' => $calledMethod, + 'server_languages' => $server_language, + 'user_language' => $user_language, + 'timezone' => date_default_timezone_get(), + ); + $toPrint = "\n"; $toPrint .= ''; $toPrint .= "\n\n"; diff --git a/public/js/components/Calendar/Day/Page.js b/public/js/components/Calendar/Day/Page.js index 68ddc419a..ef0108090 100644 --- a/public/js/components/Calendar/Day/Page.js +++ b/public/js/components/Calendar/Day/Page.js @@ -102,9 +102,9 @@ export default { dayText(){ if(!this.size || !this.day)return {}; return { - heading: this.day.toLocaleString(this.$p.user_language_locale_identifier.value, { dateStyle: 'short' }), - tag: this.day.toLocaleString(this.$p.user_language_locale_identifier.value, { weekday: this.size < 2 ? 'narrow' : (this.size < 3 ? 'short' : 'long') }), - datum: this.day.toLocaleString(this.$p.user_language_locale_identifier.value, [{ day: 'numeric', month: 'numeric' }, { day: 'numeric', month: 'numeric' }, { day: 'numeric', month: 'numeric' }, { dateStyle: 'short' }][this.size]), + heading: this.day.toLocaleString(this.$p.user_locale.value, { dateStyle: 'short' }), + tag: this.day.toLocaleString(this.$p.user_locale.value, { weekday: this.size < 2 ? 'narrow' : (this.size < 3 ? 'short' : 'long') }), + datum: this.day.toLocaleString(this.$p.user_locale.value, [{ day: 'numeric', month: 'numeric' }, { day: 'numeric', month: 'numeric' }, { day: 'numeric', month: 'numeric' }, { dateStyle: 'short' }][this.size]), } }, dayGridStyle() { diff --git a/public/js/components/Calendar/Month.js b/public/js/components/Calendar/Month.js index 65ac83a72..b1050c75d 100644 --- a/public/js/components/Calendar/Month.js +++ b/public/js/components/Calendar/Month.js @@ -17,7 +17,7 @@ export default { }, computed: { title() { - return this.focusDate.format({month: ['short','long','long','long'][this.size], year: 'numeric'}, this.$p.user_language_locale_identifier.value); + return this.focusDate.format({month: ['short','long','long','long'][this.size], year: 'numeric'}, this.$p.user_locale.value); } }, methods: { diff --git a/public/js/components/Calendar/Month/Page.js b/public/js/components/Calendar/Month/Page.js index adcb8e911..e7bdcf4b0 100644 --- a/public/js/components/Calendar/Month/Page.js +++ b/public/js/components/Calendar/Month/Page.js @@ -32,7 +32,7 @@ export default { if (!this.size || !this.weeks[0]?.days) return {}; let dayTextMap ={}; this.weeks[0].days.forEach((day)=>{ - dayTextMap[day] = day.toLocaleString(this.$p.user_language_locale_identifier.value, { weekday: this.size < 1 ? 'narrow' : (this.size < 3 ? 'short' : 'long') }); + dayTextMap[day] = day.toLocaleString(this.$p.user_locale.value, { weekday: this.size < 1 ? 'narrow' : (this.size < 3 ? 'short' : 'long') }); }); return dayTextMap; }, diff --git a/public/js/components/Calendar/Months.js b/public/js/components/Calendar/Months.js index ab49e9a9c..6ef9b1bb1 100644 --- a/public/js/components/Calendar/Months.js +++ b/public/js/components/Calendar/Months.js @@ -17,7 +17,7 @@ export default { return this.focusDate.format({year: 'numeric'}); }, months() { - return this.monthIndices.map(i => (new Date(0, i, 1)).toLocaleString(this.$p.user_language_locale_identifier.value, {month: this.size < 2 ? 'short' : 'long'})); + return this.monthIndices.map(i => (new Date(0, i, 1)).toLocaleString(this.$p.user_locale.value, {month: this.size < 2 ? 'short' : 'long'})); } }, template: ` diff --git a/public/js/components/Calendar/Week/Page.js b/public/js/components/Calendar/Week/Page.js index 8cc657cb1..15c17f8ea 100644 --- a/public/js/components/Calendar/Week/Page.js +++ b/public/js/components/Calendar/Week/Page.js @@ -61,9 +61,9 @@ export default { let dayTextMap ={}; this.days.forEach((day)=>{ dayTextMap[day] = { - heading: day.toLocaleString(this.$p.user_language_locale_identifier.value, { dateStyle: 'short' }), - tag: day.toLocaleString(this.$p.user_language_locale_identifier.value, { weekday: this.size < 2 ? 'narrow' : (this.size < 3 ? 'short' : 'long') }), - datum: day.toLocaleString(this.$p.user_language_locale_identifier.value, [{ day: 'numeric', month: 'numeric' }, { day: 'numeric', month: 'numeric' }, { day: 'numeric', month: 'numeric' }, { dateStyle: 'short' }][this.size]), + heading: day.toLocaleString(this.$p.user_locale.value, { dateStyle: 'short' }), + tag: day.toLocaleString(this.$p.user_locale.value, { weekday: this.size < 2 ? 'narrow' : (this.size < 3 ? 'short' : 'long') }), + datum: day.toLocaleString(this.$p.user_locale.value, [{ day: 'numeric', month: 'numeric' }, { day: 'numeric', month: 'numeric' }, { day: 'numeric', month: 'numeric' }, { dateStyle: 'short' }][this.size]), }; }); return dayTextMap; diff --git a/public/js/components/Cis/Sprachen.js b/public/js/components/Cis/Sprachen.js index 3b9293f20..b64abb544 100644 --- a/public/js/components/Cis/Sprachen.js +++ b/public/js/components/Cis/Sprachen.js @@ -1,14 +1,13 @@ export default { data(){ return { - allActiveLanguages: null, - sprachenTranslation:null, + allActiveLanguages: FHC_JS_DATA_STORAGE_OBJECT.server_languages, } }, emits: ['languageChanged'], methods:{ changeLanguage: function(lang){ - if(this.allActiveLanguages.some(l => l === lang)) + if(this.allActiveLanguages.some(l => l.sprache === lang)) { this.$p.setLanguage(lang, this.$fhcApi) .then(res => res.data) @@ -18,25 +17,11 @@ export default { }) } }, - getSprachenBezeichnung: function(lang){ - if (!Array.isArray(this.sprachenTranslation) || this.sprachenTranslation.length == 0) return; - return this.sprachenTranslation.find(s=>s.sprache == lang)?.bezeichnung; - }, - }, - mounted(){ - this.$fhcApi.factory.phrasen.getActiveDbLanguages() - .then(res => res.data) - .then( - (langs) => { - this.allActiveLanguages = langs.map(l=>l.sprache); - this.sprachenTranslation = langs; - } - ); }, template:/*html*/`
- +
`, diff --git a/public/js/plugin/Phrasen.js b/public/js/plugin/Phrasen.js index 0203b8edf..ea5e8e186 100644 --- a/public/js/plugin/Phrasen.js +++ b/public/js/plugin/Phrasen.js @@ -3,13 +3,9 @@ import FhcApi from './FhcApi.js'; const categories = Vue.reactive({}); const loadingModules = {}; let user_language = Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language); -let user_language_locale_identifier = Vue.computed(()=>{ - if(!user_language.value) return undefined; - switch(user_language.value){ - case 'German': return 'de-AT'; - case 'English': return 'en-GB'; - default: return undefined; - } +let user_locale = Vue.computed(()=>{ + if(!user_language.value) return null; + return FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(language => language.sprache == user_language.value).locale; }); function extractCategory(obj, category) { @@ -30,7 +26,7 @@ function getValueForLoadedPhrase(category, phrase, params) { const phrasen = { user_language, - user_language_locale_identifier, + user_locale, setLanguage(language, api) { const catArray = Object.keys(categories) return api.factory.phrasen.setLanguage(catArray, language).then(res => { @@ -93,7 +89,7 @@ export default { loadCategory: cat => phrasen.loadCategory.call(app, cat), setLanguage: phrasen.setLanguage, user_language: user_language, - user_language_locale_identifier: user_language_locale_identifier, + user_locale, t_ref: phrasen.t_ref }; app.provide('$p', app.config.globalProperties.$p);