【问题标题】:Update Resx files at runtime in .Net Core在 .Net Core 中运行时更新 Resx 文件
【发布时间】:2021-02-23 15:35:44
【问题描述】:

我的目标是实现不断变化的资源价值,并让管理员能够通过门户维护语言。为此,我需要能够在运行时更改 resx 文件,因为它们的所有值都存储在 resx 文件中。对于每种不同的语言,我都有 3 个 resx 文件。就我而言,我希望管理员稍后可以在运行时维护翻译。例如,管理员可以在运行时添加、编辑或删除该语言的条目。

【问题讨论】:

  • 如果您希望在运行时对其进行修改,您应该将其保存在数据库或类似文件中,而不是 resx/resource 文件中。这些资源文件不打算在正在运行的应用程序中进行修改。
  • @Xerillio 我想使用 xml 和 dll 文件,因为即使 resx 文件也是带有 xml 数据的容器。所以,首先也许 beetwen xml 和 dll 的关系可以完美地工作!
  • 在运行时编辑 resx 文件不是一个实用的选项,每次更改后应用程序都会重新编译新的 .resx 文件并创建 .resource 文件。相反,您可以使用其他文件类型或 db,然后一次全部导出到 resx,至少应用程序将被回收一次。
  • @LazZiya 是否有任何好的来源解释(例如链接)可以根据您的意见帮助我?
  • @ErmalBaliu 您的情况并不常见,因此我认为您很难找到专门用于此操作的良好资源。您需要在运行时执行此操作的原因是什么?支持一些只使用一次就不会再次使用的功能听起来需要付出很多努力。

标签: asp.net .net asp.net-core asp.net-core-5.0


【解决方案1】:

正如@Xerillio 在他的评论中提到的那样这是一个很大的努力。

最近我创建了一个可以节省您的时间和精力的 nuget。看看XLocalizer,它会创建资源并使用online translation services 自动翻译丢失的资源并将它们保存在XMLDB 中,然后它为export them to RESX 提供了一个简单的接口。最后你可能会看到XLocalizer.Samples,它包含不同场景的示例设置。

如果您需要其他文件/数据库类型来存储资源,您可以创建custom resource provider 并在启动时注册。

DB sample 提供了编辑资源的 UI,但是 XML sample 我没有创建用于编辑资源的 UI,而是您可以下载 XML,如果有任何更正,然后上传并使用内置导出器导出到 RESX。

有了这个 nuget,我所要做的就是添加一个新的文化即使在运行时,只需将文化名称添加到支持的文化列表中,然后对自动翻译进行一些更正,其余的都由XLocalizer处理。

注意:无法将所有这些都放在评论中,这就是我发布答案的原因:)

【讨论】:

  • 您好@LazZiya,感谢您的回答。我不允许使用其他文件类型,所以我所要做的就是将这三个 .resx 文件用于三种不同的语言。这样做的原因全在于这些 .resx 文件,因为它们包含 2470 个名称及其相关值。这些资源名称通常在我的项目中使用。我倾向于做这些运行时编辑资源的原因是有些用户可能不喜欢我们对之前创建的资源的偏好,因此他们的管理员可以在运行时更改项目中的这些命名资源。
  • @ErmalBaliu “也许不喜欢”听起来不是一个很好的动机来添加一些需要大量努力才能实现的功能。如果您担心他们不喜欢您的翻译,我建议您邀请这些管理员参加会议,让他们一劳永逸地进行翻译/更正,并在您的应用程序中使用它。不要为自己把事情复杂化。
猜你喜欢
  • 2015-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-15
  • 2019-03-23
  • 1970-01-01
相关资源
最近更新 更多