ASP.NET Core Web多語言項目

公司效益好了,準備和國外作生意,這個時候就須要多語言了。git

> 1. 這是一個ASP.NET Core Web多語言項目,主要展現項目的不一樣:
> 2. 第一種:www.xxx.com/en/index; www.xxx.com/zh/index; ,這種事經過路由來處理的
> 3. 第二種: www.xxx.com/index/en; www.xxx.com/index/zh ,這種能夠用cookie保存,經過cookie來判斷
> 4. 第三種:www.en.xxx.com; www.zh.xxx.com,這種方案就是發佈兩個項目,屬於比較簡單的,有多少種語言就發佈多少種,上面的兩種發佈的是同一個版本的
> 5. 第一種,第三種通常用於兩個項目差異比較大的狀況,第二種通常用於項目只有內容不一樣,其餘的都相同的狀況github

建立項目

新建一個ASP.NET Core Web項目,選擇Web應用程序(模型視圖控制器)cookie

建立controller

建立一個EnController、ZhController、MoreControllerapp

using Microsoft.AspNetCore.Mvc; namespace MoreLanguage.Controllers { public class HomeController : Controller { public IActionResult Index() { return View(); } } }
using Microsoft.AspNetCore.Mvc; namespace MoreLanguage.Controllers { public class EnController : Controller { public ActionResult Index() { return View(); } } }
using Microsoft.AspNetCore.Mvc; namespace MoreLanguage.Controllers { public class ZhController : Controller { public ActionResult Index() { return View(); } } }
using Microsoft.AspNetCore.Mvc; namespace MoreLanguage.Controllers { public class MoreController : Controller { public ActionResult Index(string lang) { ViewBag.lang = lang == "en" ? "Hello World!" : lang == "zh" ? "世界,你好!" : $"你的語言我不懂:{lang}"; return View(); } } }

建立對應的視圖

@{ ViewData["Title"] = "Index"; } <h2>Hello World!</h2>

這裏再也不重複視圖代碼spa

修改Route

//Startup.cs文件
app.UseMvc(routes => { routes.MapRoute( name: "more_route", template: "More/{action}/{lang}", defaults: new { controller = "More" }); routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); });

效果

 

不一樣的路由查看效果

https://localhost:44318/code

https://localhost:44318/Enblog

 https://localhost:44318/Zh路由

https://localhost:44318/More/Index/enstring

https://localhost:44318/More/Index/zhit

git地址

https://github.com/jasonhua95/samll-project/tree/master/MoreLanguage

相關文章
相關標籤/搜索