建立專案什麼的就不說了吧 直接進入正題吧 我這裡建的是個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