Возможность использовать несколько po-файлов для локализации asp.net core 2.2 - PullRequest
0 голосов
/ 05 апреля 2019

Я использую OrchardCore.Localization.Core пакет NuGet и следую этому руководству по локализации основного проекта asp.net. все работает хорошо, у меня есть файлы, такие как en.po и fr.po для локализаций для английского и французского языков. но я хочу разделить некоторые слова в отдельный файл, например, разбив po-файлы на en.po, fr.po, errorlist.en.po и errorlist.fr.po. Я не ищу умный способ отделить некоторые слова только для специальных файлов и т. Д. Я просто хочу иметь несколько слов в отдельных файлах, чтобы избежать одного большого po-файла для каждого языка. Я не совсем уверен, что не могу найти документ по этому вопросу. OrchardCore.Localization.Core NuGet уже имеет эту функцию? или я могу реализовать то, что может достичь этого?

1 Ответ

0 голосов
/ 05 апреля 2019

ПРИМЕЧАНИЕ
Я задал этот вопрос в списке выпусков собственного продукта github здесь , и я хочу добавить ответ владельца здесь для дальнейшего использования, все кредиты для Себастьян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 Framework для поиска файла в нескольких папках модулей: https://github.com/OrchardCMS/OrchardCore/blob/dev/src/OrchardCore.Modules/OrchardCore.Localization/ModularPoFileLocationProvider.cs

Затем вы можете зарегистрировать своего провайдера следующим образом:

services.AddSingleton<ILocalizationFileLocationProvider, MyPoFileLocationProvider>();
...