c# - 我们可以在 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 文件中。
解决方案
好吧,我认为这取决于您要用于本地化 Angular 应用程序的 i18n 框架...
angular 默认的 i18n package( @angular/localize
) 使用XLIFF-XML文件来存储它的翻译。文件也是 XML,因此将现有翻译从转换resx
为 应该不会太困难,例如使用现有转换器(如ResxToXliff)或仅创建自定义 XSLT 来完成这项工作。resx
xlf
另一方面,如果您使用的是基于i18next的解决方案(如),那么您可以使用该实用程序创建与 i18next 兼容的 JSON 翻译文件。或者您甚至可以创建一个直接使用 resx 文件的新后端。angular-i18next
resx2i18next
i18next-resx
我认为这完全取决于您项目的具体需求......