首页 > 解决方案 > 能够使用多个 po 文件进行本地化 asp.net core 2.2

问题描述

我正在使用OrchardCore.Localization.CoreNuGet 包并按照教程将 asp.net 核心项目本地化。一切都很好,我有文件,比如en.pofr.po用于英语和法语的本地化。但我想将一些单词分成单独的文件,例如将 po 文件分成en.po,和. 我不是在寻找一种仅针对特殊文件等分隔某些单词的智能方法。我只想在单独的文件中包含一些单词以避免每种语言都有一个大的 po 文件。我不太确定我找不到任何关于这件事的文档。NuGet是否已经具有此功能?或者我可以实现一些可以实现这一目标的东西吗?fr.poerrorlist.en.poerrorlist.fr.poOrchardCore.Localization.Core

标签: c#asp.net-core.net-corepoorchardcore

解决方案


注意
我在这里在产品自己的 github 问题列表上提出了这个问题,我想在此处添加所有者的答案以供将来参考,所有学分都归功于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

这意味着您可以复制此文件: https ://github.com/OrchardCMS/OrchardCore/blob/dev/src/OrchardCore/OrchardCore.Localization.Core/ContentRootPoFileLocationProvider.cs

并根据您的需要调整该GetLocations()方法,例如列出所有以特定文化结尾的文件,而不是返回单个IFileInfo.

这是在 OC 框架中使用在多个模块文件夹中查找文件的另一个示例: https ://github.com/OrchardCMS/OrchardCore/blob/dev/src/OrchardCore.Modules/OrchardCore.Localization/ModularPoFileLocationProvider.cs

然后你可以像这样注册你的提供者:

services.AddSingleton<ILocalizationFileLocationProvider, MyPoFileLocationProvider>();

推荐阅读