能够使用多个 po 文件进行本地化 asp.net core 2.2
Ability to use multiple po files for localization asp.net core 2.2
我正在使用 OrchardCore.Localization.Core
NuGet 包并按照 this 教程将 asp.net 核心项目本地化。
一切正常,我有 en.po
和 fr.po
等文件用于英语和法语的本地化。但我想将一些单词分成单独的文件,例如将 po 文件拆分为 en.po
、fr.po
、errorlist.en.po
和 errorlist.fr.po
。
我不是在寻找一种只为特殊文件等分离某些单词的聪明方法。我只想在单独的文件中包含一些单词,以避免每种语言都有一个大的 po 文件。
我不太确定我找不到关于此事的任何文档。 OrchardCore.Localization.Core
NuGet 已经有这个功能了吗?或者我可以实施一些可以实现这一目标的东西吗?
注意
我在产品自己的 github 问题列表 here and i want to add the owner answer here for future reference, all credits to Sébastien Ros:
上问了这个问题
在同一个文档页面上,它提到您可以提供自己的逻辑来归档文件:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/portable-object-localization?view=aspnetcore-2.2#implementing-a-custom-logic-for-finding-localization-files
并根据您的需要调整 GetLocations()
方法,例如列出以特定文化结尾的所有文件,而不是返回单个 IFileInfo
.
这是另一个在 OC Framework 中用于在多个模块文件夹中查找文件的示例:
https://github.com/OrchardCMS/OrchardCore/blob/dev/src/OrchardCore.Modules/OrchardCore.Localization/ModularPoFileLocationProvider.cs
然后您可以像这样注册您的提供商:
services.AddSingleton<ILocalizationFileLocationProvider, MyPoFileLocationProvider>();
我正在使用 OrchardCore.Localization.Core
NuGet 包并按照 this 教程将 asp.net 核心项目本地化。
一切正常,我有 en.po
和 fr.po
等文件用于英语和法语的本地化。但我想将一些单词分成单独的文件,例如将 po 文件拆分为 en.po
、fr.po
、errorlist.en.po
和 errorlist.fr.po
。
我不是在寻找一种只为特殊文件等分离某些单词的聪明方法。我只想在单独的文件中包含一些单词,以避免每种语言都有一个大的 po 文件。
我不太确定我找不到关于此事的任何文档。 OrchardCore.Localization.Core
NuGet 已经有这个功能了吗?或者我可以实施一些可以实现这一目标的东西吗?
注意
我在产品自己的 github 问题列表 here and i want to add the owner answer here for future reference, all credits to Sébastien Ros:
在同一个文档页面上,它提到您可以提供自己的逻辑来归档文件: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/portable-object-localization?view=aspnetcore-2.2#implementing-a-custom-logic-for-finding-localization-files
并根据您的需要调整 GetLocations()
方法,例如列出以特定文化结尾的所有文件,而不是返回单个 IFileInfo
.
这是另一个在 OC Framework 中用于在多个模块文件夹中查找文件的示例: https://github.com/OrchardCMS/OrchardCore/blob/dev/src/OrchardCore.Modules/OrchardCore.Localization/ModularPoFileLocationProvider.cs
然后您可以像这样注册您的提供商:
services.AddSingleton<ILocalizationFileLocationProvider, MyPoFileLocationProvider>();