正好最近手上在給一個(gè)Razor MVC項(xiàng)目實(shí)現(xiàn)一個(gè)多語言功能,叫Globalization也好,Localization也好,whatever。最終要實(shí)現(xiàn)的效果呢,就是一鍵切換全站語言,并且開發(fā)的時(shí)候只需要寫一套頁(yè)面。

下面進(jìn)入正題

首先,我們要?jiǎng)?chuàng)建一個(gè)CultureConfigurer類,用于管理本地化資源,完成“翻譯”環(huán)節(jié):

這里我用了靜態(tài)類,然后在MVC項(xiàng)目StartUp的時(shí)候執(zhí)行Init()方法,其實(shí)有點(diǎn)蠢,當(dāng)然你們也可以先寫一個(gè)接口然后用依賴注入成單例。

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁(yè)設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn) View Code

這里需要注意幾點(diǎn):

  1. enum類Culture用于代表要實(shí)現(xiàn)的語言,這里我只是簡(jiǎn)單的實(shí)現(xiàn)了中文和英文(其他我也不懂),對(duì)應(yīng)的CultureConfigurer類就有中文和英文兩個(gè)Dictionary

  2. 使用了Assembly.Load加載了程序集,參數(shù)為你自己的程序集名稱,我這里就隨便寫了一個(gè)

  3. 資源文件我選擇了json文件,也是為了方便js中調(diào)用,當(dāng)然你也可以用xml或者任何你想要用的格式,只需要調(diào)整解析方法,把文件內(nèi)容加載到對(duì)應(yīng)的Dictionary中就可以了

  4. 看到GetValue方法,相信大家都已經(jīng)明白了,其實(shí)就是多語言不管是什么語言,都用某個(gè)詞做key,然后調(diào)用這