【问题标题】:Localization using single resource file for Views in Asp .Net Core 3.1在 Asp .Net Core 3.1 中使用单个资源文件进行视图本地化
【发布时间】:2020-05-12 13:09:49
【问题描述】:

我正在处理本地化,我想为所有视图的所有字符串创建一个全局资源文件。我为模型、控制器和视图创建了资源文件,但我需要一种可以存储视图键值对的全局类型的资源文件。我不知道如何实现这一点,我应该在哪里存储我的全局资源文件?我应该将它存储在模型或服务中还是控制器中?

【问题讨论】:

  • 它不仅仅是模型、控制器和视图...检查这个tutorialwiki,这个包还提供了一个易于实现的localization with one resource file
  • @LazZiya 我已经编辑了我的问题。我需要知道如何存储字符串以供查看以实现本地化?我应该用什么来存储 resx 文件控制器、服务或模型?

标签: asp.net-core model-view-controller localization resources


【解决方案1】:

在您的 Resources 文件夹中添加以下文件:(对所需代码进行必要的导入)

public class SharedViewLocalizer : ISharedViewLocalizer
{
    private readonly IStringLocalizer localizer;

    public SharedViewLocalizer(IStringLocalizerFactory factory)
    {
        var type = typeof(SharedResource);
        var assemblyName = new AssemblyName(type.GetTypeInfo().Assembly.FullName);
        this.localizer = factory.Create("SharedResource", assemblyName.Name);
    }

    public LocalizedString this[string key] => this.localizer[key];

    public LocalizedString GetLocalizedString(string key)
    {
        return this.localizer[key];
    }
}



public interface ISharedViewLocalizer
{
    public LocalizedString this[string key]
    {
        get;
    }

    LocalizedString GetLocalizedString(string key);
}


public class SharedResource
{
}

在资源文件夹中添加一个名为SharedResource.en-US.resx的文件

在你的cshtml中:

@using yourdirectory.Resources

@inject ISharedViewLocalizer Localizer

别忘了依赖注入

services.AddTransient<ISharedViewLocalizer, SharedViewLocalizer>();

如果你已经在你的 cshtml 中完成了所有这些,那么你可以这样做:

Localizer["something"]

这将把翻译写在html页面上。

有人发布了这个:https://medium.com/@flouss/asp-net-core-localization-one-resx-to-rule-them-all-de5c07692fa4

特别感谢他。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2010-12-31
    相关资源
    最近更新 更多