diff --git a/dist/microbitMore.mjs b/dist/microbitMore.mjs index 80b09f8..a257b66 100644 --- a/dist/microbitMore.mjs +++ b/dist/microbitMore.mjs @@ -5039,8 +5039,20 @@ var formatMessage = function formatMessage(messageData) { */ var setupTranslations = function setupTranslations() { var localeSetup = formatMessage.setup(); - if (localeSetup && localeSetup.translations[localeSetup.locale]) { - Object.assign(localeSetup.translations[localeSetup.locale], translations[localeSetup.locale]); + if (!localeSetup) return; + + var currentLocale = localeSetup.locale; + if (!currentLocale) return; + + // Try exact match first, then fall back to base locale (e.g., 'de-DE' -> 'de') + var baseLocale = currentLocale.split('-')[0].split('_')[0]; + var translationKey = translations[currentLocale] ? currentLocale : null; + if (!translationKey && baseLocale !== currentLocale) { + translationKey = translations[baseLocale] ? baseLocale : null; + } + + if (localeSetup.translations[currentLocale] && translationKey) { + Object.assign(localeSetup.translations[currentLocale], translations[translationKey]); } }; var EXTENSION_ID = 'microbitMore'; diff --git a/src/vm/extensions/block/index.js b/src/vm/extensions/block/index.js index ec6fa7d..7dd4d59 100644 --- a/src/vm/extensions/block/index.js +++ b/src/vm/extensions/block/index.js @@ -14,10 +14,22 @@ let formatMessage = messageData => messageData.defaultMessage; */ const setupTranslations = () => { const localeSetup = formatMessage.setup(); - if (localeSetup && localeSetup.translations[localeSetup.locale]) { + if (!localeSetup) return; + + const currentLocale = localeSetup.locale; + if (!currentLocale) return; + + // Try exact match first, then fall back to base locale (e.g., 'de-DE' -> 'de') + const baseLocale = currentLocale.split('-')[0].split('_')[0]; + let translationKey = translations[currentLocale] ? currentLocale : null; + if (!translationKey && baseLocale !== currentLocale) { + translationKey = translations[baseLocale] ? baseLocale : null; + } + + if (localeSetup.translations[currentLocale] && translationKey) { Object.assign( - localeSetup.translations[localeSetup.locale], - translations[localeSetup.locale] + localeSetup.translations[currentLocale], + translations[translationKey] ); } };