Browse Source

Merge branch 'master' of https://github.com/volosoft/abp

pull/746/head
Halil ibrahim Kalkan 7 years ago
parent
commit
dc98c2d166
  1. 39
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpLanguagesController.cs
  2. 26
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/GlobalizationHelper.cs

39
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpLanguagesController.cs

@ -1,5 +1,8 @@
using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Mvc;
using System;
using Volo.Abp.Settings;
namespace Volo.Abp.AspNetCore.Mvc.Localization
{
@ -8,12 +11,40 @@ namespace Volo.Abp.AspNetCore.Mvc.Localization
public class AbpLanguagesController : AbpController
{
[HttpGet]
public IActionResult Switch(string culture, string uiCulture = "") //TODO: Implement return URL
public IActionResult Switch(string culture, string uiCulture = "", string returnUrl = "")
{
//TODO: Check allowed languages and so on...
if (!GlobalizationHelper.IsValidCultureCode(culture))
{
throw new AbpException("Unknown language: " + culture + ". It must be a valid culture!");
}
Response.Cookies.Append(CookieRequestCultureProvider.DefaultCookieName, $"c={culture}|uic={uiCulture ?? culture}");
string cookieValue = CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture, uiCulture));
Response.Cookies.Append(CookieRequestCultureProvider.DefaultCookieName, cookieValue, new CookieOptions
{
Expires = Clock.Now.AddYears(2)
});
if (!string.IsNullOrWhiteSpace(returnUrl))
{
return Redirect(GetRedirectUrl(returnUrl));
}
return Redirect("/");
}
private string GetRedirectUrl(string returnUrl)
{
if (returnUrl.IsNullOrEmpty())
{
return "/";
}
if (Url.IsLocalUrl(returnUrl))
{
return returnUrl;
}
return "/";
}
}
}

26
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/GlobalizationHelper.cs

@ -0,0 +1,26 @@
using System;
using System.Globalization;
namespace Volo.Abp.AspNetCore.Mvc.Localization
{
internal static class GlobalizationHelper
{
public static bool IsValidCultureCode(string cultureCode)
{
if (cultureCode.IsNullOrWhiteSpace())
{
return false;
}
try
{
CultureInfo.GetCultureInfo(cultureCode);
return true;
}
catch (CultureNotFoundException)
{
return false;
}
}
}
}
Loading…
Cancel
Save