Asp.net中使用Reponse.Filter實現多語言功能

來源:互聯網
上載者:User

對於有跨國業務的web系統來說,一般都需要提供多語言功能。然而在眾多多語言方案裡,如.net內建的Resource方式,都會在程式開發時增加程式員的額外負擔,不易開發:

1.各種不同的地方實現多語言,如aspx的control綁定,js指令碼,cs代碼,procedure裡的提示資訊等,這些多語言實現方式各不相同,加重了開發難度。

2.在要實現多語言的代碼中都要與擷取語系文字的代碼進行強耦合,不方便擴充和維護。如.net的Resource方式某個label實現多語言:

lblName.Text = Resources.Strings.name; 

3.開發和維護程式時,程式員都必須同時開啟source code和多語言資源檔,特別是在多人開發時,共用一個多語言檔案,且對於共用的文字實難處理和同步。

以上這些只是簡單地羅列了一下傳統多語言開發時的困擾,那有什麼方式解決這些問題,輕鬆實現多語言功能呢?

記得有人說過web編程,實際上就是字串處理。

為什麼呢?因為web,實際上就是Request和Response,而Request和Response就是字串。在我們各種程式裡,最終輸出到Browser的都是html格式的字串,因此,只要我們統一在程式最後一步輸出html格式時,能夠識別其中需要進行多語言轉換的文字,將將其替換為當前設定的語言版本的文字就可以了。

在asp.net中,因為有一個Response.Filter的屬性,讓這一切變得很簡單。

什麼是Response.Filter?

簡單地說,就是在經過層層轉換後,最終asp.net要輸出html,在輸出的過程中,是將html放到一個管道(pipeline)裡,然後在管道那頭取出要發往用戶端的html進行Response,asp.net提供Response.Filter屬性,讓你可以對經過的html進行相應的轉換。

因此只要將多語言轉換功能放在這裡,並識別“中文”,將其轉換為user設定的相應語系就可以完成了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.