欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

.NET Core WebApi 多語言本地化,動態(tài)切換多語言

.NET Core WebApi 多語言本地化,動態(tài)切換多語言
  1. 原生的.net core webapi 動態(tài)多語言本地話

    成都創(chuàng)新互聯(lián)專注于冀州網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供冀州營銷型網(wǎng)站建設,冀州網(wǎng)站制作、冀州網(wǎng)頁設計、冀州網(wǎng)站官網(wǎng)定制、小程序設計服務,打造冀州網(wǎng)絡公司原創(chuàng)品牌,更為您提供冀州網(wǎng)站排名全網(wǎng)營銷落地服務。

    • 具體更多詳細內(nèi)容,可以參考官方文檔

    • 首先看效果圖

    • 整體項目結構圖

    • 開始前需要講一些重要的點

      • 1.是通過文件命名空間的路徑去找尋的,比如 Resource.cs 是在和多語言Resource.xxxx.resx文件同一級別的
        2.參考下圖,不然多語言翻譯時是找尋不到的
        

    ?

  2. ConfigureServices里面進行以下配置

    services.AddLocalization();
                services.Configure<RequestLocalizationOptions>(options =>
                {
                    var supportedCultures = new List<CultureInfo>
                    {
                        new CultureInfo("en-US"),//英文
                        new CultureInfo("zh-Hans"),//簡體中文
                        new CultureInfo("zh-Hant")//繁體中文-臺灣
                    };
                    
                    options.DefaultRequestCulture = new RequestCulture(culture: "en-US", uiCulture: "en-US");
                    options.SupportedCultures = supportedCultures;
                    options.SupportedUICultures = supportedCultures;
                    options.RequestCultureProviders = new List<IRequestCultureProvider> { new CultureRequestCultureProvider() };
                });
    
  3. Configure下加入如下代碼

    //多語言配置
                var localizeOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
                app.UseRequestLocalization(localizeOptions.Value);
    
  4. 其中關鍵的 CultureRequestCultureProvider.cs 代碼內(nèi)容如下 (通過HttpContext 的Headers 傳參 Accept-Language來實現(xiàn)動態(tài)切換語言的)

     public class CultureRequestCultureProvider : RequestCultureProvider
        {
            public override Task<ProviderCultureResult> DetermineProviderCultureResult(HttpContext httpContext)
            {
                if (httpContext == null)
                {
                    throw new ArgumentNullException();
                }
    
                #region 方式一從Cookies里面按需獲取語言 注釋
                //var CULTURE_String = "CULTURE";
                //var CultureValue = httpContext.Request.Cookies[CULTURE_String]?.ToString() ?? "";
                //if (string.IsNullOrWhiteSpace(CultureValue))
                //{
                //    CultureValue = "zh-Hans";
                //    httpContext.Response.Cookies.Append(key: CULTURE_String, value: CultureValue, options: new CookieOptions() { Expires = DateTime.Now.AddYears(1) });
                //} 
                #endregion
    
                //方式二 從Headers里面按需獲取語言
                var culture = new StringSegment("zh-Hans");
                var uiCulture = new StringSegment("zh-Hans");
                var lang = httpContext.Request.Headers["Accept-Language"].ToString() ?? "";
                switch (lang)
                {
                    case "en-US":
                        //英文
                        culture = new StringSegment("en-US");
                        uiCulture = new StringSegment("en-US");
                        break;
                    case "zh-Hans":
                        //簡體中文
                        culture = new StringSegment("zh-Hans");
                        uiCulture = new StringSegment("zh-Hans");
                        break;
                    case "zh-Hant":
                        //繁體中文-臺灣
                        culture = new StringSegment("zh-Hant");
                        uiCulture = new StringSegment("zh-Hant");
                        break;
                    default:
                        goto case "zh-Hans";
                }
                return Task.FromResult(new ProviderCultureResult(culture, uiCulture));
            }
        }
    
  5. Resource.cs 以及多語言文件的代碼如下

    namespace DynamicMultilanguage.Localize
    {
        public class Resource
        {
        }
    }
    

  6. 在控制器里面使用時

    		private readonly IStringLocalizer<Resource> _localizer;
    
            public HomeController(IStringLocalizer<Resource> localizer)
            {
                _localizer = localizer;
            }
    
    
    		[HttpGet]
            public object Get()
            {
                var culturesValue = _localizer["Home"];
                var culturesValueParams = _localizer["HomeTitie", "雨太陽", "66666"];
    
                return new { culturesValue, culturesValueParams };
            }
    

    按照以上操作,一個簡答的WebApi的多語言切換已經(jīng)完成了

當前文章:.NET Core WebApi 多語言本地化,動態(tài)切換多語言
標題路徑:http://chinadenli.net/article6/dsoidog.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、靜態(tài)網(wǎng)站、網(wǎng)站策劃、做網(wǎng)站、品牌網(wǎng)站設計、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設