I use angular-translate in my app. How can I register a fallback language if the determinePreferredLanguage()
returns a language key my code doesn't know?
I want to fall back to english if someone from e.g. Sweden visits my site (language key: sv). But since I haven't listed sv in my registerAvailableLanguageKeys
function, it fails, and the language-keys are shown to the user instead of the translation.
$translateProvider
.registerAvailableLanguageKeys(['da-dk','en-us'], {
'en_US': 'en-us',
'en_UK': 'en-us',
'da': 'da-dk',
})
.determinePreferredLanguage();
Using wildcards is the best solution, you can just set en_* as follows:
$translateProvider.useStaticFilesLoader({
prefix: 'locales/locale-',
suffix: '.json'
})
.registerAvailableLanguageKeys(['en','fr','pt'], {
'en_*': 'en',
'fr_*': 'fr',
'pt_*': 'pt',
'*': 'en'
})
.determinePreferredLanguage()
.fallbackLanguage('en');
for files:
locales/locale-en.json
locales/locale-fr.json
locales/locale-pt.json