有一个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 文件
- SharedResource.uk-UA.resx
- 名称:您的联系页面。(七(
- 值:您的联系页面。(七(
- 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<>));