2012-03-18 55 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 
一样简单