强制本地化在特定控制器中使用特定语言

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)

use*_*994 5

在检索本地化字符串时使用以下代码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,第三行重置为默认值。