Skip to content

Commit 6fe45d7

Browse files
authored
Merge pull request #5793 from christianbeeznest/ofaj-21979
Internal: Add TinyMCE and Uppy localization support - refs BT#21979
2 parents a6274a2 + 85a142a commit 6fe45d7

File tree

2 files changed

+77
-0
lines changed

2 files changed

+77
-0
lines changed

assets/vue/components/basecomponents/BaseTinyEditor.vue

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import { useCidReqStore } from "../../store/cidReq"
2828
import { storeToRefs } from "pinia"
2929
import { useSecurityStore } from "../../store/securityStore"
3030
import FloatLabel from "primevue/floatlabel"
31+
import { useLocale } from "../../composables/locale"
3132
3233
const modelValue = defineModel({
3334
type: String,
@@ -84,6 +85,46 @@ if (route.params.node) {
8485
parentResourceNodeId.value = Number(route.params.node)
8586
}
8687
88+
const supportedLanguages = {
89+
ar: 'ar.js',
90+
de: 'de.js',
91+
en: 'en.js',
92+
es: 'es.js',
93+
fr_FR: 'fr_FR.js',
94+
it: 'it.js',
95+
nl: 'nl.js',
96+
pt_PT: 'pt_PT.js',
97+
ru: 'ru.js',
98+
zh_CN: 'zh_CN.js',
99+
};
100+
101+
const { appLocale } = useLocale()
102+
103+
function getLanguageConfig(locale) {
104+
const defaultLang = 'en'
105+
const url = '/libs/editor/langs/'
106+
const isoCode = locale.split('_')[0]
107+
let languageFile = supportedLanguages[isoCode]
108+
let finalLanguage = isoCode
109+
110+
if (!languageFile) {
111+
const regionalMatch = Object.entries(supportedLanguages).find(([key, value]) => key.startsWith(isoCode))
112+
if (regionalMatch) {
113+
languageFile = regionalMatch[1]
114+
finalLanguage = regionalMatch[0]
115+
} else {
116+
languageFile = `${defaultLang}.js`
117+
finalLanguage = defaultLang
118+
}
119+
}
120+
121+
return {
122+
language: finalLanguage,
123+
language_url: `${url}${languageFile}`,
124+
};
125+
}
126+
127+
const languageConfig = getLanguageConfig(appLocale.value)
87128
const toolbarUndo = "undo redo"
88129
const toolbarFormatText = "bold italic underline strikethrough"
89130
const toolbarInsertMedia = "image media template link"
@@ -106,6 +147,8 @@ const defaultEditorConfig = {
106147
height: 500,
107148
toolbar_mode: "sliding",
108149
autosave_ask_before_unload: true,
150+
language: languageConfig.language,
151+
language_url: languageConfig.language_url,
109152
plugins: [
110153
"advlist",
111154
"anchor",

assets/vue/components/basecomponents/BaseUploader.vue

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@ import Uppy from "@uppy/core"
33
import { Dashboard } from "@uppy/vue"
44
import Webcam from "@uppy/webcam"
55
import Audio from "@uppy/audio"
6+
import es_ES from "@uppy/locales/lib/es_ES"
7+
import en_US from "@uppy/locales/lib/en_US"
8+
import fr_FR from "@uppy/locales/lib/fr_FR"
9+
import de_DE from "@uppy/locales/lib/de_DE"
10+
import it_IT from "@uppy/locales/lib/it_IT"
11+
import pl_PL from "@uppy/locales/lib/pl_PL"
12+
import pt_PT from "@uppy/locales/lib/pt_PT"
613
714
const XHRUpload = require("@uppy/xhr-upload")
815
const ImageEditor = require("@uppy/image-editor")
@@ -12,6 +19,32 @@ import "@uppy/dashboard/dist/style.css"
1219
import "@uppy/image-editor/dist/style.css"
1320
import "@uppy/webcam/dist/style.css"
1421
import "@uppy/audio/dist/style.css"
22+
import { useLocale } from "../../composables/locale"
23+
24+
const { appLocale } = useLocale()
25+
const supportedLanguages = {
26+
es: es_ES,
27+
en: en_US,
28+
fr: fr_FR,
29+
de: de_DE,
30+
it: it_IT,
31+
pl: pl_PL,
32+
pt: pt_PT,
33+
}
34+
35+
function getUppyLanguageConfig(appLocale) {
36+
const defaultLang = en_US
37+
38+
if (typeof appLocale !== 'string') {
39+
return defaultLang
40+
}
41+
42+
const localePrefix = appLocale.split('_')[0]
43+
44+
return supportedLanguages[localePrefix] || defaultLang
45+
}
46+
47+
const locale = getUppyLanguageConfig(appLocale.value)
1548
1649
const props = defineProps({
1750
endpoint: {
@@ -33,6 +66,7 @@ const emit = defineEmits(["upload", "upload-success", "complete"])
3366
3467
const uppy = new Uppy({
3568
autoProceed: props.autoProceed,
69+
locale: locale,
3670
})
3771
.use(ImageEditor, {
3872
cropperOptions: {

0 commit comments

Comments
 (0)