gpt4 book ai didi

asp.net-core - 如何为 View 设置回退资源文件

转载 作者:行者123 更新时间:2023-12-04 12:52:30 25 4
gpt4 key购买 nike

使用 IViewLocalizer我想使用默认或后备资源文件为出现在多个页面上的单词和短语实现 View 本地化,例如编辑,添加,删除......我不想在所有资源文件中添加这些重复的短语它们出现的 View 因此后备资源文件真的会派上用场,但我似乎无法找到有关如何执行此操作的任何解决方案。

目前我正在使用 @inject IViewLocalizer Localizer根据我的观点,我得到了本地化的短语 @Localizer["ResourceName"]从资源文件:

Resources/Views/{ControllerName}/{ViewName}.{langCode}.resx



这适用于每个单独的 View 和部分 View 。现在我想在 Resources/Views 中有一个资源文件或 Resources用作后备资源文件的文件夹。

例如,如果我说 @Localizer["Edit"]在我的一个观点中,在 Resources/Views/{ControllerName}/{ViewName}.{langCode}.resx 中找不到“编辑”资源或 Resources/Views/{ControllerName}/{ViewName}.resx ,它回退到这个默认文件,以便我可以在需要资源“编辑”的所有 View 上使用它。

我已经尝试过 Resources/Resource.{langCode}.resx但它似乎没有效果。

最佳答案

当我开始本地化时,我遇到了类似的问题。如果您的站点上有很多重复的短语和单词,最好将它们放在 SharedResource 文件中。

您可以通过创建 SharedResource.[LANG_CODE].resx 来实现。文件在 Resources文件夹。然后你需要创建一个你调用的虚拟类 SharedResource并将其放在项目命名空间的根目录中。因此,如果您的项目名为 LocalizationTest那么这个类看起来像这样:

namespace LocalizationTest
{
public class SharedResource
{
}
}

然后,访问模型或 View 中的共享资源所需要做的就是创建一个 IStringLocalizer<SharedResources>并使用它。像这样:
public class HomeController : Controller
{
private readonly IStringLocalizer<HomeController> _localizer;
private readonly IStringLocalizer<SharedResource> _sharedLocalizer;

public HomeController(IStringLocalizer<HomeController> localizer,
IStringLocalizer<SharedResource> sharedLocalizer)
{
_localizer = localizer;
_sharedLocalizer = sharedLocalizer;
}

public IActionResult Index()
{
ViewData["message"] = _sharedLocalizer["Hello!"];
return View();
}
}

或者在 View 中:
@inject IViewLocalizer 定位器
@inject IStringLocalizer SharedLocalizer
@{
ViewData["Title"] = SharedLocalizer["Hello!"];
}

<h1>@Localizer["Welcome message"]</h1>

为简洁起见,我跳过了 import 和 using 语句。

您可以在此处找到有关 SharedResource 和一般本地化的更多信息: Microsoft Documentation或者回答我在这里发布的问题 My questions and answers .

关于asp.net-core - 如何为 View 设置回退资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38906681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com