diff --git a/src/components/Toolbar.vue b/src/components/Toolbar.vue index d476dee..5cc7a49 100644 --- a/src/components/Toolbar.vue +++ b/src/components/Toolbar.vue @@ -116,13 +116,13 @@ \ No newline at end of file + diff --git a/src/ts/useSafeI18n.ts b/src/ts/useSafeI18n.ts new file mode 100644 index 0000000..f778421 --- /dev/null +++ b/src/ts/useSafeI18n.ts @@ -0,0 +1,22 @@ +import { useI18n } from 'vue-i18n' + +type TranslateFn = (key: string, ...args: any[]) => string + +export function useSafeI18n(fallbackMap: Record = {}) { + let safeT: TranslateFn = (key) => fallbackMap[key] ?? key + + try { + const { t } = useI18n() + safeT = (key: string, ...args: any[]) => { + const translated = t(key, ...args) + if (typeof translated === 'string' && translated.length > 0) { + return translated + } + return fallbackMap[key] ?? key + } + } catch { + // The host app may not install vue-i18n; fallback to key/default text. + } + + return { t: safeT } +}