| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- using System.Globalization;
- using Abp;
- using Abp.AspNetCore.Mvc.Controllers;
- using Abp.AspNetCore.Mvc.Extensions;
- using Abp.Extensions;
- using Abp.Localization;
- using Abp.Logging;
- using Abp.Runtime.Session;
- using Abp.Timing;
- using Abp.Web.Models;
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.Localization;
- using Microsoft.AspNetCore.Mvc;
- using VberZero;
- namespace VberAdmin.Controllers
- {
- public class LocalizationController : AbpController
- {
- protected readonly Abp.Web.Http.IUrlHelper UrlHelper;
- public LocalizationController(Abp.Web.Http.IUrlHelper urlHelper)
- {
- UrlHelper = urlHelper;
- }
- public virtual ActionResult ChangeCulture(string cultureName, string returnUrl = "")
- {
- if (!IsValidCultureCode(cultureName))
- throw new AbpException("未知语言: " + cultureName + "。");
- string cookieValue = CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(cultureName, cultureName));
- Response.Cookies.Append(VzConsts.LocalizationCookieName, cookieValue, new CookieOptions()
- {
- Expires = Clock.Now.AddYears(2),
- HttpOnly = true
- });
- //Response.Cookies.Append(CookieRequestCultureProvider.DefaultCookieName, cookieValue, new CookieOptions()
- //{
- // Expires = Clock.Now.AddYears(2),
- // HttpOnly = true
- //});
- if (AbpSession.UserId.HasValue)
- SettingManager.ChangeSettingForUser(AbpSession.ToUserIdentifier(), LocalizationSettingNames.DefaultLanguage, cultureName);
- if (Request.IsAjaxRequest())
- return Json(new AjaxResponse());
- if (!string.IsNullOrWhiteSpace(returnUrl))
- {
- string stringToUnEscape = UrlHelper.LocalPathAndQuery(Uri.EscapeDataString(returnUrl), Request.Host.Host,
- Request.Host.Port);
- if (!string.IsNullOrWhiteSpace(stringToUnEscape))
- {
- string str2 = Uri.UnescapeDataString(stringToUnEscape);
- if (Url.IsLocalUrl(str2))
- return LocalRedirect(str2);
- }
- }
- return LocalRedirect("/");
- }
- public bool IsValidCultureCode(string cultureCode)
- {
- if (cultureCode.IsNullOrWhiteSpace())
- return false;
- try
- {
- var cultureInfo = CultureInfo.GetCultureInfo(cultureCode);
- return cultureInfo != null;
- }
- catch (CultureNotFoundException ex)
- {
- LogHelper.LogException(ex);
- return false;
- }
- }
- }
- }
|