正好最近手上在給一個(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è)接口然后用依賴注入成單例。
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)用這