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



有一个ASP .NET Core应用程序,https://learn.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
    • 名称:您的联系页面。(七(
    • 值:您的联系页面。(七(
  2. HomeController.uk-UA.resx
    • 名称:您的联系页面。(三(
    • 值:您的联系页面。(三(

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

例如,创建一个本地化工具,如下所示:

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<>));

最新更新