Skip to content

Instantly share code, notes, and snippets.

@pedroadaodev
Forked from ndias86/RedirectToLanguage.cshtml
Last active August 9, 2016 11:15
Show Gist options
  • Save pedroadaodev/6efed6f771ad4ef09a261555c23eba74 to your computer and use it in GitHub Desktop.
Save pedroadaodev/6efed6f771ad4ef09a261555c23eba74 to your computer and use it in GitHub Desktop.
Umbraco : on root node, redirect to current users browser culture ex: /en/ or /fr/
@using System.Globalization
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
Layout = null;
string[] languages = HttpContext.Current.Request.UserLanguages;
var detectedLanguage = false;
var urlToRedirect = "/en/"; // TODO : go to first node homepage?
HttpCookie cookieOptIn = Request.Cookies.Get("curLang");
@* If it's the first time a user goes to this website and there's no cookie yet *@
if(cookieOptIn == null)
{
if (languages != null && languages.Any())
{
var allHomapeges = Model.Content.Descendants("Homepage");
if (allHomapeges != null && allHomapeges.Any())
{
foreach (var lang in languages)
{
if (detectedLanguage)
{
break;
}
var letfLanguageTag = CultureInfo.GetCultureInfoByIetfLanguageTag(lang.Split(';')[0]).IetfLanguageTag;
<div>@lang » @letfLanguageTag</div>
foreach (var homepage in allHomapeges)
{
if (homepage.Name.Equals(letfLanguageTag, StringComparison.InvariantCultureIgnoreCase))
{
urlToRedirect = homepage.Url;
cookieOptIn = new HttpCookie("curLang");
cookieOptIn.Value = urlToRedirect;
cookieOptIn.Expires = DateTime.Now.AddDays(30);
Response.Cookies.Add(cookieOptIn);
detectedLanguage = true;
break;
}
if (detectedLanguage)
{
break;
}
}
}
}
}
}
else
{
var urlPPath = cookieOptIn.Value;
urlToRedirect = urlPPath;
}
Response.RedirectPermanent(urlToRedirect); // DONT END RESPONSE; RedirectPermanent = 301
}
// TODO: if user change website language on language menu selector, UPDATE cookie
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment