From c156e3a52e5cfd3912a4b66a65e5bfb403940303 Mon Sep 17 00:00:00 2001 From: Marvin Date: Wed, 4 May 2022 19:55:08 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9Web=E6=9E=B6=E6=9E=84?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=A4=9A=E8=AF=AD=E8=A8=80=201.1.=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E8=8C=83=E4=BE=8BHome/Test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/HomeController.cs | 12 +- .../Controllers/LoginController.cs | 24 +++- AMESCoreStudio.Web/Models/LoginViewModel.cs | 4 +- .../Controllers.HomeController.zh-CN.resx | 123 +++++++++++++++++ .../Controllers.HomeController.zh-TW.resx | 123 +++++++++++++++++ .../Resources/Views/Home/Test.zh-TW.resx | 126 ++++++++++++++++++ .../Resources/Views/Login/Index.zh-tw.resx | 123 +++++++++++++++++ AMESCoreStudio.Web/Startup.cs | 26 +++- AMESCoreStudio.Web/Views/Home/Test.cshtml | 10 ++ AMESCoreStudio.Web/Views/Login/Index.cshtml | 3 + 其他專案資料/ASPNET CORE 多语言.docx | Bin 0 -> 119239 bytes 11 files changed, 570 insertions(+), 4 deletions(-) create mode 100644 AMESCoreStudio.Web/Resources/Controllers.HomeController.zh-CN.resx create mode 100644 AMESCoreStudio.Web/Resources/Controllers.HomeController.zh-TW.resx create mode 100644 AMESCoreStudio.Web/Resources/Views/Home/Test.zh-TW.resx create mode 100644 AMESCoreStudio.Web/Resources/Views/Login/Index.zh-tw.resx create mode 100644 AMESCoreStudio.Web/Views/Home/Test.cshtml create mode 100644 其他專案資料/ASPNET CORE 多语言.docx diff --git a/AMESCoreStudio.Web/Controllers/HomeController.cs b/AMESCoreStudio.Web/Controllers/HomeController.cs index ff25e255..18413ea4 100644 --- a/AMESCoreStudio.Web/Controllers/HomeController.cs +++ b/AMESCoreStudio.Web/Controllers/HomeController.cs @@ -8,6 +8,7 @@ using System.Linq; using System.Threading.Tasks; using AMESCoreStudio.WebApi; using Microsoft.AspNetCore.Authorization; +using Microsoft.Extensions.Localization; namespace AMESCoreStudio.Web.Controllers { @@ -16,12 +17,14 @@ namespace AMESCoreStudio.Web.Controllers private readonly ILogger _logger; public readonly IAuth _authApi; public readonly ISYS _sysApi; + private readonly IStringLocalizer _localizer; - public HomeController(ILogger logger, IAuth authApi, ISYS sysApi) + public HomeController(ILogger logger, IAuth authApi, ISYS sysApi, IStringLocalizer localizer) { _logger = logger; _authApi = authApi; _sysApi = sysApi; + _localizer = localizer; } public IActionResult Index() @@ -29,6 +32,13 @@ namespace AMESCoreStudio.Web.Controllers return View(); } + public IActionResult Test() + { + //return Content(_localizer["Test"]); + //return Content("Test"); + return View(); + } + /// /// /// diff --git a/AMESCoreStudio.Web/Controllers/LoginController.cs b/AMESCoreStudio.Web/Controllers/LoginController.cs index 0531b8f4..c13a68f8 100644 --- a/AMESCoreStudio.Web/Controllers/LoginController.cs +++ b/AMESCoreStudio.Web/Controllers/LoginController.cs @@ -10,7 +10,7 @@ using System.Security.Claims; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.Cookies; using Newtonsoft.Json; - +using Microsoft.AspNetCore.Mvc.Rendering; namespace AMESCoreStudio.Web.Controllers { @@ -25,8 +25,18 @@ namespace AMESCoreStudio.Web.Controllers _authApi = authApi; } + private void GetLanguageList() + { + var LanguageList = new List(); + LanguageList.Add(new SelectListItem("繁體中文", "zh-tw")); + LanguageList.Add(new SelectListItem("英文", "en-us")); + ViewBag.LanguageList = LanguageList; + } + public IActionResult Index() { + GetLanguageList(); + var loginNo = TempData["loginNo"]; if (loginNo != null) return View(new LoginViewModel() { LoginNo = loginNo.ToString() }); @@ -52,6 +62,18 @@ namespace AMESCoreStudio.Web.Controllers if (result.UserID >= 0) { SaveUserCookie(result); //登录成功 + switch (vModel.Language) + { + case "zh-tw": + HttpContext.Response.Cookies.Append(".AspNetCore.Culture", "c=zh-TW|uic=zh-TW"); + break; + case "zh-cn": + HttpContext.Response.Cookies.Append(".AspNetCore.Culture", "c=zh-CN|uic=zh-CN"); + break; + case "en-us": + HttpContext.Response.Cookies.Append(".AspNetCore.Culture", "c=en-US|uic=en-US"); + break; + } } else { diff --git a/AMESCoreStudio.Web/Models/LoginViewModel.cs b/AMESCoreStudio.Web/Models/LoginViewModel.cs index c1a9cfaa..f46d9bf3 100644 --- a/AMESCoreStudio.Web/Models/LoginViewModel.cs +++ b/AMESCoreStudio.Web/Models/LoginViewModel.cs @@ -14,6 +14,8 @@ namespace AMESCoreStudio.Web [Required] public string LoginNo { get; set; } [Required] - public string LoginPassword { get; set; } + public string LoginPassword { get; set; } + + public string Language { get; set; } } } diff --git a/AMESCoreStudio.Web/Resources/Controllers.HomeController.zh-CN.resx b/AMESCoreStudio.Web/Resources/Controllers.HomeController.zh-CN.resx new file mode 100644 index 00000000..75bba39a --- /dev/null +++ b/AMESCoreStudio.Web/Resources/Controllers.HomeController.zh-CN.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 测试 + + \ No newline at end of file diff --git a/AMESCoreStudio.Web/Resources/Controllers.HomeController.zh-TW.resx b/AMESCoreStudio.Web/Resources/Controllers.HomeController.zh-TW.resx new file mode 100644 index 00000000..d6cc76c6 --- /dev/null +++ b/AMESCoreStudio.Web/Resources/Controllers.HomeController.zh-TW.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 測試 + + \ No newline at end of file diff --git a/AMESCoreStudio.Web/Resources/Views/Home/Test.zh-TW.resx b/AMESCoreStudio.Web/Resources/Views/Home/Test.zh-TW.resx new file mode 100644 index 00000000..faa07907 --- /dev/null +++ b/AMESCoreStudio.Web/Resources/Views/Home/Test.zh-TW.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 您好 + + + 測試 + + \ No newline at end of file diff --git a/AMESCoreStudio.Web/Resources/Views/Login/Index.zh-tw.resx b/AMESCoreStudio.Web/Resources/Views/Login/Index.zh-tw.resx new file mode 100644 index 00000000..90d366a5 --- /dev/null +++ b/AMESCoreStudio.Web/Resources/Views/Login/Index.zh-tw.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 登錄 + + \ No newline at end of file diff --git a/AMESCoreStudio.Web/Startup.cs b/AMESCoreStudio.Web/Startup.cs index 662bde63..14d72aea 100644 --- a/AMESCoreStudio.Web/Startup.cs +++ b/AMESCoreStudio.Web/Startup.cs @@ -11,6 +11,9 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.FileProviders; using WebApiClient; +using System.Globalization; +using Microsoft.AspNetCore.Mvc.Razor; +using Microsoft.AspNetCore.Localization; namespace AMESCoreStudio.Web { @@ -50,8 +53,14 @@ namespace AMESCoreStudio.Web //} })); + services.AddLocalization(o => + { + o.ResourcesPath = "Resources"; + }); + // Add framework services. - services.AddMvc(); + //services.AddMvc(); + services.AddMvc().AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix); //services.AddControllersWithViews(); @@ -106,6 +115,21 @@ namespace AMESCoreStudio.Web //app.UseHttpsRedirection(); app.UseStaticFiles(); + + IList supportedCultures = new List + { + new CultureInfo("en-US"), + new CultureInfo("zh-CN"), + new CultureInfo("zh-TW") + }; + + app.UseRequestLocalization(new RequestLocalizationOptions + { + DefaultRequestCulture = new RequestCulture("en-US"), + SupportedCultures = supportedCultures, + SupportedUICultures = supportedCultures + }); + app.UseRouting(); app.UseAuthorization(); app.UseAuthentication(); diff --git a/AMESCoreStudio.Web/Views/Home/Test.cshtml b/AMESCoreStudio.Web/Views/Home/Test.cshtml new file mode 100644 index 00000000..82750a5e --- /dev/null +++ b/AMESCoreStudio.Web/Views/Home/Test.cshtml @@ -0,0 +1,10 @@ +@using Microsoft.AspNetCore.Mvc.Localization + +@inject IViewLocalizer Localizer + +@{ + ViewData["Title"] = "AMES 1.0.0"; +} + +

@Localizer["Test"]

+

@Localizer["Hello"]

\ No newline at end of file diff --git a/AMESCoreStudio.Web/Views/Login/Index.cshtml b/AMESCoreStudio.Web/Views/Login/Index.cshtml index 662efa45..21c67fd7 100644 --- a/AMESCoreStudio.Web/Views/Login/Index.cshtml +++ b/AMESCoreStudio.Web/Views/Login/Index.cshtml @@ -29,6 +29,9 @@