Проблема с локализацией Humanizer в формах Xamarin

В приложении Xamarin.Forms я вызываю Humanizer из ядра (проект .Net Standard). Я использую пакеты Nugets Humanizer.Core и Humanizer.Core.ru для русского языка и называю его
DateTime.UtcNow.AddMinutes(-3).Humanize(культура: new CultureInfo("ru-Ru"));

И всегда я получаю английский, как 3 минуты назад

Я пробовал применить:

      CultureInfo ci = new CultureInfo("ru-Ru"); 
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;

И это не повлияло на результат, я получаю опять английский.

2 ответа

Я решил проблему с помощью обходного пути.

  1. Я удалил из Nuget все пакеты Humanize.
  2. Перейдите в каталог пакетов: C:\Users\USERNAME\ .nuget \packages
  3. Необходимо скопировать файлы Humanize dll из следующих папок:
  • humanizer.core \2.8.26\lib\netstandard2.0 (Humanizer.dll, Humanizer.xml)
  • humanizer.core.ru\2.8.26\lib\netstandard2.0 (скопируйте папку "ru" с файлом - ru \ Humanizer.resources.dll )
  1. В папке моего проекта я создал папку CommonResources . Затем я создал папку Humanize в CommonResources и вставил 2 файла и папку «ru» в свой Humanize.

  1. Добавление ссылок в проект PCL файл yourSharedProject.csproj на эти библиотеки DLL.
        <ItemGroup> 
    .......
    <Reference Include="Humanizer.Core">
    <HintPath>..\..\CommonResources\Humanizer\Humanizer.dll</HintPath>
  </Reference> 
    <Reference Include="Humanizer.Core.ru">
    <HintPath>..\..\CommonResources\Humanizer\ru\Humanizer.resources.dll</HintPath>
  </Reference>
     ....... 
  <PackageReference Include="Xamarin.Forms" Version="5.0.0.2012" /> 
</ItemGroup> 

После добавления файлов dll я получил локализованный текст в свой проект.

Спасибо @polyariz, я могу подтвердить, что это все еще работает с .NET MAUI, просто скопируйте .dll в папку Resources...

и добавьте их в проект, щелкнув правой кнопкой мыши Зависимости и "Добавить ссылку на проект..."

Другие вопросы по тегам