Проблема с локализацией 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 ответа
Я решил проблему с помощью обходного пути.
- Я удалил из Nuget все пакеты Humanize.
- Перейдите в каталог пакетов: C:\Users\USERNAME\ .nuget \packages
- Необходимо скопировать файлы 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 )
- В папке моего проекта я создал папку CommonResources . Затем я создал папку Humanize в CommonResources и вставил 2 файла и папку «ru» в свой Humanize.
- Добавление ссылок в проект 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 я получил локализованный текст в свой проект.