详解ASP.NET Core 中的多语言支持
YPE html>
妿æä»¬çé¡¹ç®æ¯è¦é¢å¯¹å½é çï¼é£ä¹æä»¬ç项ç®å¿ é¡»è¦æ¯æå¤ç§è¯è¨çåºç¨ç¨åºï¼ä½æ¯ç¨åºåå¨å¼åçæ¶åè¦æä¹å®ç°å¢ï¼æä»¬ç»å¸¸ä½¿ç¨çæ¯éè¿è¯·æ±å°åæ¥æ§å¶è¯è¨åæåï¼ä¸ææ¯ç±ç«ææ¯é¢é为大家带æ¥çå®ä¾ï¼ä¸èµ·æ¥äºè§£å§ï¼
é¦å å¨ Startup ç ConfigureServices 䏿·»å AddLocalization ä¸ AddViewLocalization 以åé ç½® RequestLocalizationOptions ï¼è¿éå设使ç¨è±æä¸ä¸æï¼ï¼
public void ConfigureServices(IServiceCollection services) { services.AddLocalization(options => options.ResourcesPath = "Resources"); services.AddMvc() .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix); services.Configure( opts => { var supportedCultures = new List { new CultureInfo("en-US"), new CultureInfo("zh-CN") }; opts.SupportedCultures = supportedCultures; opts.SupportedUICultures = supportedCultures; }); }
å¨ Startup ç Configure() æ¹æ³ä¸åºç¨ RequestLocalizationOptions ï¼
var requestLocalizationOptions = app.ApplicationServices.GetService>().Value; app.UseRequestLocalization(requestLocalizationOptions);
ç¶åå¨ _Layout.cshtml è§å¾ä¸éè¿ IViewLocalizer æ¥å£ä»¥å¤è¯è¨çæ¹å¼æ¾ç¤ºé¡µé¢æ é¢çåç¼ï¼
@using Microsoft.AspNetCore.Mvc.Localization @inject IViewLocalizer Localizer@ViewData["Title"] - @Localizer["SiteTitle"]
æ¥çå¨ ASP.NET Core Web 项ç®ä¸å建 Resources æä»¶å¤¹ï¼å¨å ¶ä¸å嫿·»å Views.Shared._Layout.en-Us.resx ä¸ Views.Shared._Layout.zh-CN.resx æä»¶ï¼ Views.Shared._Layout.resx æä»¶ï¼å¹¶æ·»å "SiteTitle" æå¯¹åºçè¯å¥æåï¼
1ï¼Views.Shared._Layout.en-Us.resx
2ï¼Views.Shared._Layout.zh-CN.resx
è¿æ¶è¿è¡ ASP.NET Core ç«ç¹ï¼å°±ä¼æ ¹æ®æµè§å¨çè¯è¨è®¾ç½®ï¼Accept-Language headerï¼ãæè culture æ¥è¯¢åæ°ãæè .AspNetCore.Culture Cookie 弿¾ç¤ºå¯¹åºè¯è¨çæåï¼
éè¦æ³¨æçå°æ¹ï¼åä¸ä¸è¦æ·»å ä¸å¸¦è¯è¨åç§°ç Views.Shared._Layout.en-Us.resx ï¼ä¸ç¶æ·»å 代ç è¯è¨åç§°ç .resx æä»¶æ¶ä¼éå°Â "Custom tool ResXFileCodeGenerator failed to produce an output for input file ... but did not log a specific error." é®ã
ä¸å®è¦ççåèææ¡£ï¼Globalization and localizationÂ
以ä¸ç±ç«ææ¯é¢éä»ç»ç详解ASP.NET Core ä¸çå¤è¯è¨æ¯æï¼ä»å¾å¤æ¹é¢æ¥çï¼å¤è¯è¨æ¯ææ¯æªæ¥é¡¹ç®åå±çè¶å¿ï¼åæ¶è¿ä¹è½å±ç°åºåºå¤§çå¸å¼åã
下一篇:ASP.NET中如何实现回调