近期產品要支持國際化多語言,主要涉及前端界面國際化以及后端提示資訊、例外資訊的國際化多語言支持,
目前我們的開發技術堆疊:前端VUE、后端.NET,面向前端界面和后端服務,分別涉及對應的國際化多語言支持方案,
一、前端界面國際化多語言支持
前端VUE界面的原始碼如下:

上述代碼中,我們將需要多語言支持的文本,統一使用:
$t("web.layout_logoTitle")
前端對應的多語言包web物件結構如下:

上面是標準的VUE前端國際化多語言實作技術,
如果這么做的話,需要前端開發同學把每個VUE界面都識別、翻譯形成一個多語言包JS檔案,作業量巨大,
所以我們有個初步的想法,通過代碼文本識別,抽取多語言文本詞條,代碼中統一替換為詞條ID,同時按界面生成多語言JS檔案,
如果能搞定的話,這將大大提升前端國際化改造的效率,
二、后端服務國際化多語言支持
后端代碼目前是這樣的:
private static void CheckMd5(string fileName, string md5Data) { string md5Str = MD5Service.GetMD5(fileName); if (!string.Equals(md5Str, md5Data, StringComparison.OrdinalIgnoreCase)) { throw new CustomException(PackageExceptionConst.FileMd5CheckFailed, "服務包檔案MD5校驗失敗:" + fileName); } }
代碼中需要將“服務包檔案MD5校驗失敗”這個文本做多語言改造,
例如:英文
throw new CustomException(PackageExceptionConst.FileMd5CheckFailed, "Verification of service pack file MD5 failed:" + fileName);
如果支持多個語言,這個地方就不好處理了,不能為了每個語言搞一行代碼,同時也無法支持后續新增語言,
因此,計劃在后端提供一個多語言詞條服務,運行時根據用戶登錄的語言,動態獲取對應的多語言文本,
整體設計思路是這樣的:
- 提供一個工具,識別前后端代碼中的中文,形成多語言詞條,按語言、界面、模塊統一管理多有的多語言詞條
- 提供一個翻譯服務,批量翻譯多語言詞條
- 提供一個詞條服務,支持后端代碼在運行時根據用戶登錄的語言,動態獲取對應的多語言文本
- 提供前端多語言JS生成服務,按界面動態生成對應的多語言JS檔案,方便前端VUE檔案使用,
- 提供代碼替換工具,將VUE前端代碼中的中文替換為$t("詞條ID"),后端代碼中的中文替換為TermService.Current.GetText("詞條ID")
接下來,將按上述5個部分,給大家的分別展開分享具體的實作,
周國慶
2023/3/5
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/546136.html
標籤:其他
下一篇:怎么用訊息佇列實作分布式事務?
