2016-12-14 17 views
0
'en-*':'en_US', 
'es-*':'es_ES', 
'pt-*':'pt_PT', 
'fr-*':'fr_FR', 
'de-*':'de_DE', 
'ja-*':'ja_JP', 
'it-*':'it_IT', 
'*':'en_US' 

Есть ли способ для отображения en-* в en_US? Я могу получить любой браузерный язык, например en-us, en-au и т. Д. Поэтому мне нужно сопоставить этот файл en_US. Если кто-нибудь знает, пожалуйста, помогите. Заранее спасибо.Есть ли способ сопоставить многие языковые коды с одним языковым кодом, чтобы я мог переводить в один файл?

ответ

1

Regex является вашим другом :)

var possible = [ 
 
    'en-us', 
 
    'en-au', 
 
    'fr-sb', 
 
    'de-le', 
 
    'it-nx' 
 
]; // add to test 
 

 
var locale = possible[Math.floor(Math.random() * possible.length)]; 
 

 
var routes = { 
 
    'en-*':'en_US', 
 
    'fr-*':'fr_FR', 
 
    'de-*':'de_DE', 
 
    '*':'en_US' 
 
}; 
 

 
var match = (route) => new RegExp('^' + route.replace('*', '.*')).test(locale) 
 
var route = Object.keys(routes).find(match); 
 

 
console.log(locale, 'routed to', routes[route]);

+0

Большое спасибо !! Это помогло мне! –

+0

Есть ли замена для 'find' в этом коде? Он не работает в IE –

+0

Здесь вы можете найти полипол: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find – expelledboy