ASP .NET Core 2 Localization获取新语言的所有字符串

时间:2018-01-31 06:52:15

标签: c# asp.net .net asp.net-core .net-core

ASP .NET核心应用程序的本地化为https://docs.microsoft.com/en-us/aspnet/core/fundamentals/localization

所有字符串都使用默认语言进行本地化,其中包含 IStringLocalizer _localizer [“关于标题”] - 没有.resx文件。

现在我要添加一种新语言。

我可以自动生成所有资源文件吗?

示例我有

private readonly IStringLocalizer<SharedResource> _localizerG;
private readonly IStringLocalizer<HomeController> _localizerC;

_localizerG["Your contact page. (G)"]
_localizerC["Your contact page. (C)"]

我是否可以为填充字符串的新语言 uk-UA 生成(并在将来更新).resx文件

  1. SharedResource.uk-UA.resx
    • 姓名:您的联系页面。 (G)
    • 价值:您的联系页面。 (G)
  2. HomeController.uk-UA.resx
    • 姓名:您的联系页面。 (C)
    • 价值:您的联系页面。 (C)

1 个答案:

答案 0 :(得分:2)

作为选项,您可以通过创建自定义本地化程序来记录这些字符串。然后,您可以为这些字符串创建所需的资源。

例如,创建一个这样的本地化程序:

using Microsoft.Extensions.Localization;
public class MyStringLocalizer<T> : StringLocalizer<T>
{
    public MyStringLocalizer(IStringLocalizerFactory factory) : base(factory)
    {
    }

    public override LocalizedString this[string name]
    {
        get
        {
            //Log typeof(T) and name
            return base[name];
        }
    }

    public override LocalizedString this[string name, params object[] arguments]
    {
        get
        {
            //Log typeof(T) and name
            return base[name, arguments];
        }
    }
}

然后在ConfigureServices方法中注册本地化程序:

services.AddTransient(typeof(IStringLocalizer<>), typeof(MyStringLocalizer<>));
相关问题