向 ASP.NET Core 2.0 应用程序添加本地化 [已关闭]

问题描述 投票:0回答:1

我需要向我的 ASP.NET Core 应用程序添加本地化。

我不知道实现这个目标的最佳方法是什么...我想要包含不同翻译的外部文件,这样我就可以修改它们,而不必再次编译我的应用程序。

我在网上看到的,在.Net Core应用程序中添加本地化有两种方法: - 使用 .resx 文件,但您无法根据需要修改它们 - .po 文件似乎正是我所需要的。

但是,我不知道 .po 文件是否真的是一个好的解决方案...有一个金块包“OrchardCore.Localization.Core”,它配置 PO 文件支持,但它是一个测试版,没有进行很多更改,并且据我所知,它似乎与 DataAnnotations 配合得不太好。

你觉得怎么样?什么是解决我的问题的最佳方案?

c# localization asp.net-core-mvc
1个回答
3
投票

事实上,resx 文件在构建过程中被编译成二进制文件(卫星程序集),因此您无法在不重新编译的情况下修改它们(至少是这样)。

相反,PO文件是纯文本文件,可以随时轻松编辑。

这是我在项目中使用 PO 而不是内置的、基于 resx 的本地化已有相当长一段时间的好原因之一。我从 Orchard CMS 项目(“经典”项目)中汲取了这一想法,它对我来说非常有效。我认为作者在 Orchard 的 .NET Core 重新实现中坚持使用 PO 这一事实很好地表明 PO 是本地化的可行选择。

要在 ASP.NET Core 中进行 PO 本地化,您将需要:

  • PO 文件解析器。 Orchard Core 必须包含这样的东西,但我不知道成熟程度如何。当我切换到 .NET Core 并在 .NET Standard 上实现它时,我就需要这个功能。后来我在 MIT 许可下发布了它

  • IStringLocalizer的自定义实现。这并不难做到。您可以找到一个这样的例子,例如这里

但是,为了使本地化工作流程尽可能轻松,建议使用良好的 PO 编辑器并以能够自动提取可翻译文本的方式实施本地化。您可以在此处找到有关此主题的更多信息。

至于数据注释:我不知道 Orchard Core 中如何实现本地化的具体细节,但如果你沿着 IStringLocalizer 路径走下去,你应该不会遇到更多或更少的数据注释本地化问题,就像你使用默认 resx 实现。 (有一些关于数据注释本地化的已知问题,例如这个问题,但没有什么严重到难以解决的问题。)

© www.soinside.com 2019 - 2024. All rights reserved.