mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 23:27:26 +01:00
feat(i18n): add support for different chinese versions
This commit is contained in:
@@ -63,15 +63,28 @@ _.each(langCodes, function(code){
|
|||||||
// used in place of plain original 'en'
|
// used in place of plain original 'en'
|
||||||
var defaultLangCodes = _.without(langCodes, 'en_GB');
|
var defaultLangCodes = _.without(langCodes, 'en_GB');
|
||||||
|
|
||||||
|
// A list of languages that have different versions
|
||||||
|
var multipleVersionsLanguages = ['es', 'zh'];
|
||||||
|
|
||||||
|
var latinAmericanSpanishes = ['es-419', 'es-mx', 'es-gt', 'es-cr', 'es-pa', 'es-do', 'es-ve', 'es-co', 'es-pe',
|
||||||
|
'es-ar', 'es-ec', 'es-cl', 'es-uy', 'es-py', 'es-bo', 'es-sv', 'es-hn',
|
||||||
|
'es-ni', 'es-pr'];
|
||||||
|
|
||||||
|
var chineseVersions = ['zh-tw'];
|
||||||
|
|
||||||
var getUserLanguage = function(req, res, next){
|
var getUserLanguage = function(req, res, next){
|
||||||
var getFromBrowser = function(){
|
var getFromBrowser = function(){
|
||||||
var acceptable = _(req.acceptedLanguages).map(function(lang){
|
var acceptable = _(req.acceptedLanguages).map(function(lang){
|
||||||
return lang.slice(0, 2);
|
return lang.slice(0, 2);
|
||||||
}).uniq().value();
|
}).uniq().value();
|
||||||
|
|
||||||
var matches = _.intersection(acceptable, defaultLangCodes);
|
var matches = _.intersection(acceptable, defaultLangCodes);
|
||||||
if(matches.length > 0 && matches[0].toLowerCase() === 'es'){
|
|
||||||
|
var iAcceptedCompleteLang = multipleVersionsLanguages.indexOf(matches[0].toLowerCase());
|
||||||
|
|
||||||
|
if(matches.length > 0 && iAcceptedCompleteLang !== -1){
|
||||||
var acceptedCompleteLang = _.find(req.acceptedLanguages, function(accepted){
|
var acceptedCompleteLang = _.find(req.acceptedLanguages, function(accepted){
|
||||||
return accepted.slice(0, 2) == 'es';
|
return accepted.slice(0, 2) == multipleVersionsLanguages[iAcceptedCompleteLang];
|
||||||
});
|
});
|
||||||
|
|
||||||
if(acceptedCompleteLang){
|
if(acceptedCompleteLang){
|
||||||
@@ -80,11 +93,15 @@ var getUserLanguage = function(req, res, next){
|
|||||||
return 'en';
|
return 'en';
|
||||||
}
|
}
|
||||||
|
|
||||||
var latinAmericanSpanishes = ['es-419', 'es-mx', 'es-gt', 'es-cr', 'es-pa', 'es-do', 'es-ve', 'es-co', 'es-pe',
|
if(matches[0] === 'es'){
|
||||||
'es-ar', 'es-ec', 'es-cl', 'es-uy', 'es-py', 'es-bo', 'es-sv', 'es-hn',
|
return (latinAmericanSpanishes.indexOf(acceptedCompleteLang) !== -1) ? 'es_419' : 'es';
|
||||||
'es-ni', 'es-pr'];
|
}else if(matches[0] === 'zh'){
|
||||||
|
var iChinese = chineseVersions.indexOf(acceptedCompleteLang.toLowerCase());
|
||||||
|
return (iChinese !== -1) ? chineseVersions[iChinese] : 'zh';
|
||||||
|
}else{
|
||||||
|
return en;
|
||||||
|
}
|
||||||
|
|
||||||
return (latinAmericanSpanishes.indexOf(acceptedCompleteLang) !== -1) ? 'es_419' : 'es';
|
|
||||||
}else if(matches.length > 0){
|
}else if(matches.length > 0){
|
||||||
return matches[0].toLowerCase();
|
return matches[0].toLowerCase();
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
Reference in New Issue
Block a user