首页 > 解决方案 > 我们可以在 Angular 中调用 C# resx 进行本地化吗?

问题描述

我已经下载了这个应用程序:https ://github.com/dotnet/AspNetCore.Docs/tree/master/aspnetcore/fundamentals/localization/sample/3.x/Localization 来测试 c 锐化本地化 - 更改语言。它工作得很好。

问题是这个应用程序使用剃刀页面来获取本地化值。例如,所有需要本地化的东西都在 @Localizer 之前。

<div class="navbar-collapse collapse">
    <ul class="nav navbar-nav">
        <li><a asp-controller="Home" asp-action="Index">@Localizer["Dashboard"]</a></li>
        <li><a asp-controller="Home" asp-action="Index">@Localizer["Home"]</a></li>
        <li><a asp-controller="Home" asp-action="About">@Localizer["About"]</a></li>
        <li><a asp-controller="Home" asp-action="Contact">@Localizer["Contact"]</a></li>
    </ul>
    @await Html.PartialAsync("_LoginPartial")
</div>

我必须使用后端 API,但在有角度的页面中使用它。有谁知道这是否可行?

这些值实际上存储在 .resx 文件中。

标签: c#angularlocalization

解决方案


好吧,我认为这取决于您要用于本地化 Angular 应用程序的 i18n 框架...

angular 默认的 i18n package( @angular/localize) 使用XLIFF-XML文件来存储它的翻译。文件也是 XML,因此将现有翻译从转换resx为 应该不会太困难,例如使用现有转换器(如ResxToXliff)或仅创建自定义 XSLT 来完成这项工作。resxxlf

另一方面,如果您使用的是基于i18next的解决方案(如),那么您可以使用该实用程序创建与 i18next 兼容的 JSON 翻译文件。或者您甚至可以创建一个直接使用 resx 文件的新后端。angular-i18nextresx2i18nexti18next-resx

我认为这完全取决于您项目的具体需求......


推荐阅读