C# 强制本地化应使用特定控制器中的特定语言
我有一个web api项目,有几个控制器,我为它实现了英语和韩语本地化,但希望有一个或两个控制器以英语返回消息,即使语言是韩语,也不希望使用简单的英语消息,希望阅读英语资源 可能吗 我的本地化设置如下所示:C# 强制本地化应使用特定控制器中的特定语言,c#,.net,.net-core,asp.net-core-localization,C#,.net,.net Core,Asp.net Core Localization,我有一个web api项目,有几个控制器,我为它实现了英语和韩语本地化,但希望有一个或两个控制器以英语返回消息,即使语言是韩语,也不希望使用简单的英语消息,希望阅读英语资源 可能吗 我的本地化设置如下所示: services.Configure<RequestLocalizationOptions>(options => { var cultures = new List<CultureInfo> {
services.Configure<RequestLocalizationOptions>(options =>
{
var cultures = new List<CultureInfo> {
new CultureInfo("en"),
new CultureInfo("kr")
};
options.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("en");
options.SupportedCultures = cultures;
options.SupportedUICultures = cultures;
});
services.AddMvc().AddDataAnnotationsLocalization(options =>
{
options.DataAnnotationLocalizerProvider = (type, factory) =>factory.Create(typeof(SharedTranslate));
});
services.AddLocalization(o =>
{
o.ResourcesPath = "Resources";
});
在AuthAdminController中检索本地化字符串时,请使用以下代码
第一行设置CurrentUICulture,第三行重置为默认值。在AuthAdminController中检索本地化字符串时使用以下代码
第一行设置当前UICulture,第三行重置为默认值。是。您可以设置:Thread.CurrentThread.CurrentCulture=。。。和Thread.CurrentThread.CurrentUICulture=。。。你一个人。类似的东西。@Ergis我将其添加到控制器的构造函数中,但不添加到workSystem.Threading.Thread.CurrentThread.CurrentCulture=new System.Globalization.CultureInfo-US;请分享。@SajjadZare它必须工作。我最近才做的。在返回ViewYes之前,放置一个调试器点并检查Thread.CurrentThread.CurrentCulture的值是多少。您可以设置:Thread.CurrentThread.CurrentCulture=。。。和Thread.CurrentThread.CurrentUICulture=。。。你一个人。类似的东西。@Ergis我将其添加到控制器的构造函数中,但不添加到workSystem.Threading.Thread.CurrentThread.CurrentCulture=new System.Globalization.CultureInfo-US;请分享。@SajjadZare它必须工作。我最近才做的。在返回视图之前,放置调试器点并检查Thread.CurrentThread.CurrentCulture的值
public AuthAdminController(IStringLocalizer<SharedTranslate> localizer,...
//First
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
//Second
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en");
CultureInfo.CurrentUICulture = new CultureInfo("<<Your language Code>>");
var localizedString = localizer[resourceKey].Value;
CultureInfo.CurrentUICulture = new CultureInfo("<<Reset to default one>>");
return localizedString;