Saj*_*are 1 .net c# .net-core asp.net-core-localization
我有一个有多个控制器的 web-api 项目,我为其实现了本地化(英语和韩语),但希望一两个控制器以英语返回消息,即使语言是韩语(不想使用简单的英语消息并希望从英文资源中阅读)
是否可以?
我设置本地化如下:
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";
});
Run Code Online (Sandbox Code Playgroud)
并在构造函数中:
public AuthAdminController(IStringLocalizer<SharedTranslate> localizer,...
Run Code Online (Sandbox Code Playgroud)
我在控制器的构造函数中使用下面的代码但没有工作
//First
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
//Second
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en");
Run Code Online (Sandbox Code Playgroud)
在检索本地化字符串时使用以下代码AuthAdminController
CultureInfo.CurrentUICulture = new CultureInfo("<<Your language Code>>");
var localizedString = localizer[resourceKey].Value;
CultureInfo.CurrentUICulture = new CultureInfo("<<Reset to default one>>");
return localizedString;
Run Code Online (Sandbox Code Playgroud)
第一行设置CurrentUICulture,第三行重置为默认值。