日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

.net core 实现基于 JSON 的多语言

發(fā)布時(shí)間:2023/12/4 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .net core 实现基于 JSON 的多语言 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

.net core 實(shí)現(xiàn)基于 JSON 的實(shí)現(xiàn)多語言

Intro

上次我們提到了,微軟默認(rèn)提供基于資源文件的多語言本地化,個(gè)人感覺使用起來不是太方便,沒有 json 看起來直觀,于是動(dòng)手造了一個(gè)輪子, dotnet core 基于 json 的本地化組件

GetStarted

需要引用 nuget 包 WeihanLi.Extensions.Localization.Json

注冊(cè)服務(wù):

services.AddJsonLocalization(options =>{options.ResourcesPath = Configuration.GetAppSetting("ResourcesPath");options.ResourcesPathType = ResourcesPathType.TypeBased; // 默認(rèn)方式和微軟找資源的方式類似// options.ResourcesPathType = ResourcesPathType.CultureBased; // 在對(duì)應(yīng)的 culture 子目錄下尋找資源文件,可以參考后面的示例});

中間件配置(如果是asp.net core,和之前一樣):

app.UseRequestLocalization();

That's it~

添加你的資源文件

TypeBased 資源文件的路徑

For Types:

Home/Index => Controllers/HomeController

資源路徑:

  • [ResourcesPath]/Controllers/HomeController.[cultureName].json

示例:

  • Resources/Controllers/HomeController.en.json

  • Resources/Controllers/HomeController.zh.json

For Razor 視圖:

示例:

  • Resources/Views/Home/Index.en.json

  • Resources/Views/Home/Index.zh.json

CultureBased 資源文件路徑

For Types:

Home/Index => Controllers/HomeController

資源路徑:

  • [ResourcesPath]/[cultureName]/Controllers/HomeController.json

示例:

  • Resources/en/Controllers/HomeController.json

  • Resources/zh/Controllers/HomeController.json

For Razor 視圖:

示例:

  • Resources/en/Views/Home/Index.json

  • Resources/zh/Views/Home/Index.json

Copy your resource files to output:

需要設(shè)置將資源文件拷貝到輸出目錄,否則會(huì)找不到資源文件,可以在啟動(dòng)項(xiàng)目項(xiàng)目文件中加入以下示例代碼:

<ItemGroup> <Content Update="Resources\**\*.json"><CopyToOutputDirectory>Always</CopyToOutputDirectory> </Content> </ItemGroup>

上面的配置會(huì)將 Resources 目錄下的所有 json 文件拷貝到輸出目錄下,可以根據(jù)自己的需要進(jìn)行修改

Use

用法和之前是一樣的

Controller 示例:

public class ValuesController : Controller {private readonly IStringLocalizer<ValuesController> _localizer;public ValuesController(IStringLocalizer<ValuesController> localizer){_localizer = localizer;}// GET: api/<controller>[HttpGet]public string Get(){return _localizer["Culture"];} }

Razor 視圖示例:

@using Microsoft.AspNetCore.Mvc.Localization @using Microsoft.Extensions.Localization @using WeihanLi.Extensions.Localization.Json.Sample.Controllers @inject IHtmlLocalizer<HomeController> HtmlLocalizer @inject IStringLocalizer<HomeController> StringLocalizer @inject IViewLocalizer ViewLocalizer @{ViewData["Title"] = "Index"; } <h2>Index</h2> <div>string: @StringLocalizer["Hello"]</div> <div>html: @HtmlLocalizer["Hello"]</div> <div>view: @ViewLocalizer["Hello"]</div>

資源文件示例:

{"Culture": "中文" }

Samples

  • AspNetCore3.1 Basic Sample

  • ActivityReservation

總結(jié)

以上是生活随笔為你收集整理的.net core 实现基于 JSON 的多语言的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。