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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

设置ABP默认使用中文

發布時間:2023/12/4 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设置ABP默认使用中文 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ABP提供的啟動模板, 默認使用是英文:

雖然可以通過右上角的菜單切換成中文, 但是對于國內項目來說, 默認使用中文是很正常的需求.

前期準備

使用ABP CLI創建一個名為AbpStudy的ASP.NET MVC項目:

abp new AbpStudy

關于MVC的啟動模板可以看文檔, 這里就不贅述.

使用ABP版本的是當前最新的v0.19, 后續版本應該也適用

方法1: 通過服務設置

該方法參考了此回答, 謝謝@maliming.

  • 編輯AbpStudy.Web工程下的Startup.cs文件, 在Configure方法的開始增加一行代碼:

  • public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory){app.ApplicationServices.GetService<ISettingDefinitionManager>().Get(LocalizationSettingNames.DefaultLanguage).DefaultValue = "zh-Hans";app.InitializeApplication();}

    該方法首先獲取了SettingDefinitionManager的服務實例, 然后調用Get方法獲取了默認語言的SettingDefinition, 然后設置了默認值"zh-Hans", 即中文.

    運行, 就會發現默認語言已經變成中文了:

    怎么樣, 非常簡單吧?

    關于ABP的Setting, 現在官方的文檔還未寫完. 等待官方文檔完善后我會更新到文章里

    方法2: 通過數據設置

    雖然方法1非常簡單, 但是因為是通過代碼寫死了默認語言, 如果想設置其他默認語言, 只能再次修改代碼.

    既然默認語言是通過Setting設置的, 那么我們可不可以通過數據設置默認語言呢?答案是肯定的.

    ABP啟動模板的數據庫中有一個名為AbpSettings的表, 里面即是各種Setting的值.

    我們可以向其中增加一條默認語言的記錄:

    INSERT INTO AbpSettings(Id, Name, Value, ProviderName) Values(newid(), 'Abp.Localization.DefaultLanguage', 'zh-Hans', 'Global')

    其中的Name的值即是方法1中LocalizationSettingNames.DefaultLanguage的值, 相當于默認語言Setting的一個Key.

    把方法1中我們增加的那行代碼刪除后, 再次運行確認默認語言仍然是中文.

    如果我們把記錄中的"zh-Hans"改為"en", 重新運行后默認語言就會切換成英文了.

    方法3: 通過Seed設置

    方法3實際上是方法2的一個改進: 我們利用了ABP提供了Seed系統(即可通過代碼初始化系統的一些數據), 這樣我們在正式上線項目時, 不需要再額外執行SQL語句來執行數據初始化了.

    首先我們把AbpSettings表中我們手動插入的那條記錄刪除.

    然后在AbpStudy.Domain工程的Settings文件夾中增加一個名為AbpStudySettingDataSeedContributor的類, 用來為Setting設置初始化數據. 類代碼如下:

    public class AbpStudySettingDataSeedContributor : IDataSeedContributor, ITransientDependency{private readonly IGuidGenerator _guidGenerator;private readonly ISettingRepository _settingRepository;public AbpStudySettingDataSeedContributor(IGuidGenerator guidGenerator, ISettingRepository settingRepository){_settingRepository = settingRepository;_guidGenerator = guidGenerator;}public async Task SeedAsync(DataSeedContext context){await _settingRepository.InsertAsync(new Setting(_guidGenerator.Create(),LocalizationSettingNames.DefaultLanguage,"zh-Hans",GlobalSettingValueProvider.ProviderName));}

    該類注入了GuidGenerator用來生成GUID, 和SettingRepository用來向AbpSettings表插入數據.

    在SeedAsync方法中使用InsertAsync方法插入了默認語言的記錄, 記錄的值與方法2中SQL中是一致的.

    然后我們運行AbpStudy.DbMigrator工程, 這是啟動模板附帶的一個用來執行數據庫遷移的一個工具, 它會掃描到我們剛寫的AbpStudySettingDataSeedContributor類并調用它, 從而完成數據初始化.

    AbpStudy.DbMigrator工程有自己的數據庫連接串, 定義在appsettings.json文件中, 別忘了將它修改成與Web工程中的一樣.

    運行DbMigrator截圖:

    再次查看AbpSettings表中的數據, 發現記錄已經插入了, 與我們使用SQL語句插入的一樣, 所以默認中文也同樣可以生效.

    禁用其他語言

    如果你的項目不用考慮多語言, 那么右上角的語言切換菜單就顯得有點多余了, 我們可以通過以下修改禁用其他語言:

    修改AbpStudy.Web工程下的AbpStudyWebModule類, 將ConfigureLocalizationServices方法中其他語言的options.Languages.Add(...)代碼刪除, 只保留中文的即可:

    再次運行, 發現右上角語言切換的菜單就不見了, 完美!

    關于ABP框架設置默認語言的方法就介紹到這, 示例工程放到GITHUB中.

    總結

    以上是生活随笔為你收集整理的设置ABP默认使用中文的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。