Ты почти у цели.Просто придерживайтесь согласованной структуры каталогов.
Кстати, вы настроили supportedCultures
в своем классе запуска:
var supportedCultures = new[]
{
new CultureInfo("en"),
new CultureInfo("fr")
};
Но ваши resx
файлы:
- _Header.en.resx
- _Header.resx
- _Header.tr.resx
Кажется, опечатка.Вы должны переименовать последний файл ресурса как _Header.fr.resx
.
Как подробно
Частичное представление по умолчанию находится в папке Views/Shared
.Вы также можете создать свою собственную частичную папку:
Views/
Home/
Index/
Index.cshtml
Shared/
_HeaderPartial.cshtml
PartialViews/
_Header2Partial.cshtml
Ваша структура каталогов ресурса должна быть
Resources/
Controllers/
IndexController.fr.resx
Views/
Shared/
_HeaderPartial.fr.resx
PartialViews/
_Header2Partial.fr.resx
Если вы хотите использовать локализатор, просто используйте пространство имен и внедрите службу:
@using Microsoft.AspNetCore.Localization
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
you can use @Localizer[] now
Контрольный пример:
частичное представление Views/Shared/_HeaderPartial.cshtml
:
@using Microsoft.AspNetCore.Localization
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
<header>This is header from partial : @Localizer["hello world"] </header>
Shared/_HeaderPartial.fr.resx
:
| Name | value |
|------------------+------------------------------------------------+
| hello world | Bonjour le monde (from `/Shared/` folder) |
Файлы ресурсов PartialViews/_Header2Partial.cshtml
:
| Name | value |
|------------------+-------------------------------------------------+
| hello world | Bonjour le monde (from `/PartialViews/` folder) |
:
отображаемая страница: