Enhance message formatting and localization handling in MessagesDialog.vue

- Updated the formatBody method to support JSON formatted translation keys and improve key normalization for i18n.
- Ensured that keys are correctly prefixed with the "falukant.notifications." namespace when necessary, enhancing translation accuracy.
This commit is contained in:
Torsten Schulz (local)
2025-12-01 11:26:46 +01:00
parent 17d4d21620
commit 7e0691eea3

View File

@@ -118,24 +118,42 @@ export default {
} catch { return dt; }
},
formatBody(n) {
let key = n.tr;
let raw = n.tr || '';
let key = raw;
let params = {};
if (typeof key === 'string') {
const trimmed = key.trim();
// 1) JSON-Format unterstützen: {"tr":"production.overproduction","value":21}
if (typeof raw === 'string') {
const trimmed = raw.trim();
if (trimmed.startsWith('{') && trimmed.endsWith('}')) {
try {
const parsed = JSON.parse(trimmed);
if (parsed && parsed.tr) {
raw = parsed.tr;
key = parsed.tr;
params = { ...parsed };
delete params.tr;
}
} catch (e) {
// Fallback: ignore parse error and use raw key
// bei Parse-Fehler einfach weiter unten mit dem Rohwert arbeiten
}
}
}
return this.$t('falukant.notifications.' + key, params);
// 2) Schlüssel normalisieren:
// - wenn bereits ein voller i18n-Key wie "falukant.notifications.production.overproduction",
// dann direkt verwenden
// - sonst in den Namespace "falukant.notifications." hängen
if (typeof key === 'string') {
const trimmedKey = key.trim();
if (trimmedKey.startsWith('falukant.')) {
key = trimmedKey;
} else {
key = 'falukant.notifications.' + trimmedKey;
}
}
return this.$t(key, params);
}
},
computed: {
@@ -168,3 +186,4 @@ export default {
.pagination button { padding: .25em .6em; }
.pagination input[type="number"] { width: 4em; text-align: right; }
</style>