.Net Core 國際化

Bug小天才發表於2021-02-09

建立專案什麼的就不說了吧 直接進入正題吧 我這裡建的是個webapi

新增資原始檔
1.首先我們建立一個Language資料夾,這就是我們在後面Startup類中需要配置的目錄名。
2.然後我們在Language資料夾中新增一個資原始檔,並命名為Controllers.EnController.zh-CN。
3.在這個資原始檔中,新增一個欄位“Hello world.”, 並設定其值為“你好世界。”。

我這裡還新增了幾個別的語言 如圖

配置Startup類
ASP.NET Core中,如果希望啟動本地化,首先需要在Startup類的ConfigureServices方法中使用services.AddLocalization新增本地化服務。
在這個方法中,我們指定了前面建立的資料夾Language作為存放翻譯檔案的目錄。 如果不指定的話會從根目錄讀
services.AddLocalization(o => { o.ResourcesPath = "Language"; }); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

然後我們需要在Configure方法中新增本地化中介軟體。
IList<CultureInfo> supportedCultures = new List<CultureInfo> { new CultureInfo("zh-CN"), new CultureInfo("en-US"), new CultureInfo("ja"), new CultureInfo("is") }; app.UseRequestLocalization(new RequestLocalizationOptions { //這裡指定預設語言包 DefaultRequestCulture = new RequestCulture("zh-CN"), SupportedCultures = supportedCultures, SupportedUICultures = supportedCultures }); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); }

建一個控制器來做基類控制器 引入本地化字串訪問器
public readonly IStringLocalizer<EnController> _localizer; public EnController(IStringLocalizer<EnController> localizer) { _localizer = localizer; }

新建一個控制器 繼承基類 方法引用多語言配置項
private Microsoft.Extensions.Logging.ILogger logger; public ValuesController(ILogger<ValuesController> _logger, IStringLocalizer<EnController> localizer):base(localizer) { logger = _logger; } [HttpGet] [Route("Hello")] public string Hello() { return _localizer["Hello world."]; }


然後就沒有然後了 直接訪問就好了 就可以看到結果了
中文

冰島語

日語

具體的幾種訪問方式我就不異議去說了 百度隨便搜一下都有

專案放在百度雲上了 需要看的話直接下載也行超簡單的 https://pan.baidu.com/s/1EraOwPZagEDtMxPw2VN7JA 提取碼 r7m3

相關文章