hello,這篇文章之所以叫 mvc多語言的另一種解決方案, 是因為園子裡已經有一篇叫《asp.net mvc 多語言解決方案》的文章了。文中提到:這裡使用了 .resx 資源檔案,注意這裡這個檔案需要被編譯後才能使用,否則找不到已經增加的項。編譯這個可以使用.net 自帶的 resgen.exe。
意思就是每次更新.resx資源檔案後,都要用resgen來重新生成.resources的檔案才可以使用。嗯,轉成.resources的檔案除了減少一點儲存空間,還有什麼優勢呢?這個沒測試過,真要問microsoft才知道。 現在本文提出的這種多語言方案不需要額外生成.resources檔案,只要.resx就可以了。.resx檔案其實一言以蔽之是name-value集的xml檔案,因此,自然而然產生直接使用.resx的多語言方案:
1.通過讀取xml的方法來載入所有的name-value到記憶體,以後就可以像查字典這樣查詢相應的語言值。
2.使用filesystemwatcher來監視語言檔案,如果有更新就自動更新相應的語言。
至於使用也是很簡單,跟前一種方案一樣:<%=html.lang("key") %> ,如果在controller中使用,直接:this.lang(「key」);
為了便於擴充套件(可能你的語言檔案不是.resx,而是直接從資料庫讀取的),方案中定義了語言提供介面:
///
/// 語言提供者介面
///
public
inte***ce ilanguageprovider
跟很多mvc例子一樣,也是通過擴充套件htmlhelper和controller來實現,似乎除了擴充套件它,我也想不到更好的了。
///
/// author:bruce
/// blog:
///
public
static
class localizationhelpers
public
static
string lang(this controller control, string key)
private
static ilanguageprovider langprovider = null;
private
static
string getlangstring(string key)
/*載入語言,只在第一次使用時載入*/
if (langprovider == null)
return langprovider.getlanguage(lang, key);
} }
另外附上從資源檔案讀取語言的方法:
///
/// 載入語言檔案(這裡語言檔案是一般資源檔案,其實只要是符合這樣結構的xml檔案就可以:
/// 文字
)///
/// 語言檔案路徑
public
void read(string filename)
}
是不是很簡單?
完整**:coolcode.multilanguage.zip
後記:第一次發布到主頁,希望能夠拋磚引玉,有玉的儘管砸,沒玉的拋磚也不介意。 另一種尊重
上中學的時候,有一節課印象非常深刻。老師問我們如果無意闖入乙個房間,發現房間裡有一位女士正在洗澡,這時應該怎麼辦?有同學回答就當什麼也沒看見,退出房間。還有同學回答 說聲對不起!女士。然後退出去。老師笑了笑說,還有更好的答案,那就是 對不起,先生!有一對結婚多年的夫妻,有一次出差在外的妻子有一件急事...
另一種勝利
另一種勝利 written by allen lee 剛才我的扣殺,出界了5.3厘公尺。雖然很可惜,但還是出界了,請確認下吧。幹 真是的,那些任性的傢伙!但是,到最後還只顧自己網球原則的正直笨蛋,和一定要用迴旋蛇標打中單人區的笨蛋,給我們看了場好比賽啊。龍崎 海棠和幹他們雖然輸了這場比賽,但他們堅持...
另一種table排序
click on the table header to sort in ascending order.last name first name birthday siblings smith john 7 12 1978 2johnson betty 10 15 1977 4henderson ...