1. 程式人生 > >ASP.NET MVC:多語言的三種技術處理策略

ASP.NET MVC:多語言的三種技術處理策略

背景

本文介紹了多語言的三種技術處理策略,每種策略對應一種場景,這三種場景是:

  1. 多語言資源資訊只被.NET使用。
  2. 多語言資源資訊只被Javascript使用。
  3. 多語言資源資訊同時被.NET和Javascript使用。

下文我們就一個一個場景的分析。

第一種場景:多語言資源資訊只被.NET使用

這種場景的技術處理最簡單,可以充分利用VisualStudio提供的資源編輯器及資原始檔。

實現步驟

1、定義資原始檔。

2、使用資原始檔。

1 <h1>Classic:@Strings.Title </h1>

第二種場景:多語言資源資訊只被Javascript使用

這種場景的技術實現需要參考使用的Javascript類庫,自己做也不難(無非是原型覆蓋或變數覆蓋)。

實現步驟

1、定義Javascript本地化檔案。

2、引入需要的本地化檔案(可以靜態引入或動態根據配置引入)。

1 <script src="../../../Javascript/Ext/locale/ext-lang-zh_CN.js"></script>

第三種場景:多語言資源資訊同時被.NET和Javascript使用

這種場景多少有些複雜,因為資源資訊需要在兩個地方使用,我們可以重複定義兩次,或者用程式碼生成器,不過這裡介紹另外一種方式:伺服器生成Javascript。

實現步驟

1、定義生成Javascript程式碼的控制器(會把伺服器的資原始檔生成為Javascript程式碼,這樣就保證資源只需要定義一次)。

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 using Happy.Web.Mvc;
 8 
 9 namespace Happy.MvcExample.Controllers
10 {
11     public class JavascriptResourceController : Controller
12 { 13 // 14 // GET: /JavascriptResource/Strings 15 16 public ActionResult Strings() 17 { 18 return new JavascriptResourceResult("MvcExample.Strings", typeof(Resource.Strings)); 19 } 20 } 21 }

2、使用伺服器生成的Javascript程式碼。

1 <script src="~/Scripts/jquery-2.0.3.js"></script>
2 <script type="text/javascript" src="JavascriptResource/Strings"></script>
3 <script type="text/javascript">
4     $("#ClientTitle").text(MvcExample.Strings.Title);
5 </script>

最終的執行效果

切換語言需要修改Web.Config,配置如下:

1 <globalization uiCulture="en-US"/>

中文

英文

注:不同的顏色是不同的模板導致的

程式碼下載

備註

簡單的多語言容易實現,如果是跨國的企業應用,難度就非常大了,因為同一個系統執行在不同的時區和區域文化中,我還沒有深入想這塊咋處理(沒有需求)。

在部落格系統中