为什么本地化无法按预期工作

时间:2015-12-25 19:05:26

标签: asp.net localization asp.net-core

我有一个ASP .NET 5 RC1网站,我正在尝试添加本地化。 根据发现的信息,我做了以下

  • 在Startup.cs中的ConfigureService中:

    • 启用本地化并将ResourcePath设置为“资源”
    • 启用视图本地化并启用数据注释本地化

      //check http://damienbod.com/2015/10/21/asp-net-5-mvc-6-localization/
      services.AddLocalization(options => options.ResourcesPath = "Resources");
      // Add MVC services to the services container.
      //check http://blogs.msdn.com/b/webdev/archive/2015/10/15/announcing-availability-of-asp-net-5-beta8.aspx
      services.AddMvc().AddViewLocalization().AddDataAnnotationsLocalization();
      
  • 在Configure方法fin Startup.cs

    • 设置支持的文化列表
    • 启用请求本地化

      //check http://www.jerriepelser.com/blog/setting-thread-culture-aspnet5
      //check http://damienbod.com/2015/10/21/asp-net-5-mvc-6-localization/
      List<CultureInfo> supportedCultures = new List<CultureInfo>()
      {
          new CultureInfo("en"),
          new CultureInfo("es")
      };
      var requestLocalizationOptions = new RequestLocalizationOptions()
      {
          SupportedCultures = supportedCultures,
          SupportedUICultures = supportedCultures
      };
      app.UseRequestLocalization(requestLocalizationOptions, new RequestCulture(new CultureInfo("es")));
      
    • 在项目

    • 下创建一个Resources文件夹
  • 为Controller创建资源。使用约定{Project}。{Controllers}。{ControllerClassName}。{culture} .resx
  • 为视图创建资源。使用约定视图。{ViewFolder}。{ViewName} .cshtml。{culture} .resx
  • 在控制器中使用IHtmlLocalizer,然后访问该项目。在这种情况下,本地化程序[“标题”],找到并且工作得很好。但是,当文化设置为“es”时,找不到它,只会回到默认资源。

    private IHtmlLocalizer<HomeController> _htmlLocalizer;
    public HomeController(IOptions<PTIWebPortal.Configuration.PTIWebPortalConfiguration> pConfiguration, 
        ILoggerFactory factory, IHtmlLocalizer<HomeController> localizer) : base(pConfiguration, factory)
    {
        this._htmlLocalizer = localizer;
    }
    

视图也是如此,它只适用于默认资源,但不适用于其他资源。

关于如何修复它的任何想法?

1 个答案:

答案 0 :(得分:0)

从rc1开始,有很多已知问题不适用于本地化。 一些已知问题与工具相关,因此如果您从命令行运行应用程序而不是从Visual Studio启动,则某些本地化工作会起作用。 但是即使从命令行开始,很多应该工作的东西都不起作用。 在rc1之后已经进行了相当多的工作,最近很多localization issues被修复并关闭了,所以在二月份的某个时候发布rc2之后事情会好得多。