Search code examples
angularjsangular-translate

angular-translate - Fallback language for determinePreferredLanguage()


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();

Solution

  • 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