angularjs - i18n - angular-translate-Lenguaje alternativo para determinarPreferredLanguage()
ngx-translate angular 4 (3)
Oye, tuve un problema similar al tuyo, la forma en que lo resolví fue:
Agregué esto a mi app.config
$translateProvider.useStaticFilesLoader({
prefix: ''the/directory/locale-'',
suffix: ''.json''
})
.registerAvailableLanguageKeys([''en''])
.determinePreferredLanguage()
.fallbackLanguage(''en'');
y esto a mi app.run:
$rootScope.changeLanguage = function() {
if(/[a-z]{2}_[A-Z]{2}/.test($translate.use())) {
$translate.fallbackLanguage($translate.use().split(''_'')[0]);
}
}
de esa manera, si el navegador detecta un idioma como fr_BE, intentará volver a fr y luego una vez más en, en su caso, querría sv. También tener el registerAvailableLanguageKeys parece detener el determinarPreferredLanguage () causando un error con el problema de archivo no existente. Espero que esto ayude a alguien.
Uso angular-translate en mi aplicación. ¿Cómo puedo registrar un idioma alternativo si el valor determinePreferredLanguage()
devuelve una clave de idioma que mi código no conoce?
Quiero volver al inglés si alguien de, por ejemplo, Suecia visita mi sitio (tecla de idioma: sv ). Pero como no he incluido sv en la función registerAvailableLanguageKeys
, falla y las teclas de idioma se muestran al usuario en lugar de la traducción.
$translateProvider
.registerAvailableLanguageKeys([''da-dk'',''en-us''], {
''en_US'': ''en-us'',
''en_UK'': ''en-us'',
''da'': ''da-dk'',
})
.determinePreferredLanguage();
Puede usar $translateProvider.fallbackLanguage([''en-us''])
para determinar su idioma alternativo, y $translateProvider.preferredLanguage(langKey)
para configurar su idioma preferido.
También tenga en cuenta que fallbackLanguage () puede tener una matriz de idiomas como parámetro, lo que significa que puede tener varios idiomas de reserva ordenados.
Usar comodines es la mejor solución, solo puede configurar en_ * de la siguiente manera:
$translateProvider.useStaticFilesLoader({
prefix: ''locales/locale-'',
suffix: ''.json''
})
.registerAvailableLanguageKeys([''en'',''fr'',''pt''], {
''en_*'': ''en'',
''fr_*'': ''fr'',
''pt_*'': ''pt'',
''*'': ''en''
})
.determinePreferredLanguage()
.fallbackLanguage(''en'');
para archivos:
locales/locale-en.json
locales/locale-fr.json
locales/locale-pt.json