◐ Shell
reader mode source ↗
Skip to content

locale #1

New issue
New issue
@KunSergey

Description

@KunSergey
var defaultLang = "en";
var supportedLocales = ["en", "ru"];

var checkLanguage = function(locale){
  var isSupportedLangIndex = false;
  supportedLocales.map(function(supportedLocale, index){
    if(locale.toLowerCase().indexOf(supportedLocale) == 0){
      isSupportedLangIndex = index;
    }
  });
  return isSupportedLangIndex ? supportedLocales[isSupportedLangIndex] : defaultLang;
}

var redirectStategy = function(locale, request, response){
  var redirectUrl = 'http://' + config.site.global.host + ':' + config.site.global.port;
  locale = checkLanguage(locale);
  request.session.locale = locale;
  if(locale != defaultLang){
    redirectUrl += "/" + locale;
  }
  response.redirect(301, redirectUrl);
}

var sendFileStrategy = function(locale, request, response){
  locale = checkLanguage(locale);
  request.session.locale = locale;
  response.sendFile(app.project_folder + '/public/index.'+ locale +'.html');
}


MainController.get(function(request, response, next){
  if(request.session.locale){
    sendFileStrategy(defaultLang, request, response);
  }
  else {
    locale(request,response,next);
    redirectStategy(request.locale, request, response);
  }
});

MainController.get('/:locale', function(request, response, next){
 if(request.params.locale !== defaultLang && checkLanguage(request.params.locale) == request.params.locale) {
    sendFileStrategy(request.params.locale, request, response);
  }
  else{
    redirectStategy(request.params.locale, request, response);
  }
});

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions