平台开启
1、通过系统管理->基础设置->环境设置,开启多语言
envSetting.png2、登录界面切换语言
login.png接口程序更新
更新平台依赖库
lib.png
业务系统入口更新
在Application_BeginRequest 方法内,设置当前请求国际化配置
protected override void Application_BeginRequest(object sender, EventArgs e)
{
Supcon.UnifiedPlatform.Framework.Web.CustomCultureSetter.SetCurrentCulture(Context);
}
重启IIS和清理浏览器缓存,即可测试业务系统是否正常国际化。
平台和业务系统国际化传递说明
平台开启指定语言版本后,通过菜单打开业务系统页面,将在URL内附带语言参数,Supcon.UnifiedPlatform.Framework.Web.CustomCultureSetter.SetCurrentCulture 方法,将自动分析请求信息,给各个业务系统一个匹配的国际化语言配置,内部实现如下:
public static void SetCurrentCulture(HttpContext httpContext)
{
//通过url获取参数culture=en,即平台菜单所带语言
var culture = GetCultureFromUrlParams(httpContext);
//如果正常获取
if (!string.IsNullOrWhiteSpace(culture))
{
//设置当前系统线程语言
SetCurrentCulture(culture);
//设置当前系统语言到当前站点cookiee
var cookieCulture = GetCultureFromCookie(httpContext);
if (string.IsNullOrWhiteSpace(cookieCulture) || (!string.IsNullOrWhiteSpace(cookieCulture) && !cookieCulture.Equals(culture, StringComparison.CurrentCultureIgnoreCase)))
{
SetCultureToCookie(httpContext, culture);
}
return;
}
//从url获取不到语言配置,则从http头获取或者从当前站点cookiee获取
culture = GetCultureFromHeader(httpContext) ?? GetCultureFromCookie(httpContext);
//有则设置
if (culture != null)
{
SetCurrentCulture(culture);
return;
}
//否则从综合平台设置的默认语言获取,或者从浏览器信息内获取
culture = GetDefaultCulture() ?? GetBrowserCulture(httpContext);
//有则设置,否则不执行任何线程环境设置
if (culture != null)
{
SetCurrentCulture(culture);
SetCultureToCookie(httpContext, culture);
}
}
网友评论