2012-03-18 89 views
0

如何在ASP.NET MVC 3項目中創建本地化?如何創建本地化

我想在我的應用程序中有兩種語言,我聽說它與Resourses文件有關,但我不知道如何。

回答

2

你可以做這樣的事情:

  1. 您的本地化資源
  2. 創建一個類庫項目添加一個名爲Resource.resx的資源文件。
  3. 打開文件並將Access Modifier下拉爲Public。現在,如果您查看文件的屬性,則Custom Tool屬性將設置爲PublicResXFileCodeGenerator。這將在編譯時創建一個名稱爲 class的名稱爲Resource的所有字符串名稱。
  4. 在此處添加您的Name/Value對您的默認語言。
  5. 例如,添加名爲Resource.fr-FR.resx的第二個資源文件。
  6. 將您添加到上一個資源文件中的名稱與法文一起使用Values
  7. 在您的MVC應用程序中添加對此類庫的引用。
  8. 在您的應用程序中根據需要更改文化,並使用Resource.NameOfProperty訪問您的各種本地化字符串。有一個ResourceManagerclass,將處理基於設定的文化獲得正確的價值。你所要做的就是按照資源文件的命名約定。 Resource.{culture-code}.resx

創建如上類庫項目後,這裏是你的MVC應用程序的文化的切換的一個選項。

添加的路由,這樣的事情,所以你的文化可以通過URL

routes.MapRoute(
    "DefaultCultureRoute", 
    "{culture}/{controller}/{action}/{id}", 
    new 
    { 
     culture = "en", 
     controller = "Home", 
     action = "Index", 
     id = UrlParameter.Optional 
    } 
); 

可以通過設置,可以應用於控制器

public class ApplyCulture : FilterAttribute, IActionFilter 
{ 
    public void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
    } 

    public void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     var culture = new System.Globalization.CultureInfo(filterContext.RouteData.GetRequiredString("culture")); 

     System.Threading.Thread.CurrentThread.CurrentCulture = culture; 
     System.Threading.Thread.CurrentThread.CurrentUICulture = culture; 
    } 
} 
文化創建一個屬性

將此屬性添加到所有控制器繼承的基礎控制器中

[ApplyCulture] 
public class BaseController : Controller { } 

訪問的資源是因爲這

Resource.NameOfProperty 
一樣簡單