25-7 Fichiers ressources
Blazor ne supporte pas HtmlLocalizer
et ViewLocalizer
au niveau client, puisque ces derniers sont essentiellement des concepts liés à .NET Core MVC. On peut cependant utiliser IStringLocalizer
.
Je présente comment utiliser les fichiers de ressource et vous devez les utiliser pour votre projet.
Cependant, dans la théorie, afin de simplifier les notes de cours et aussi pour rendre le contenu plus lisible, StringLocalizer
sera peu utilisé.
Installer Microsoft.Extensions.Localization
- Clic droit sur le projet
Admin
->Manage NuGet Packages
- Cherchez
Microsoft.Extensions.Localization
- Installez la dépendance
Ajouter le support pour la localisation
Au fichier Program.cs
du projet client, ajoutez AddLocalization
:
//...
// Localization
builder.Services.AddLocalization();
await builder.Build().RunAsync();
Créer les fichiers ressources
Dans le cas qui nous occupe, à titre d'exemple, j'ai créé deux fichiers de ressources:
Snowfall.Web.Admin/Resources/Evenements/Index.resx
pour la pageIndex
des événementsSnowfall.Web.Admin/Resources/SharedResources.resx
pour des ressources partagées
Il n'y a pas de structure particulière à respecter comme dans MVC où nous utilisions le ViewLocalizer
pour trouver les références automatiquement. Ici, on fera référence directement aux fichiers.
Cependant, il est une bonne pratique de bien nommer les fichiers ressources afin de pouvoir s'y retrouver.
Utiliser StringLocalizer
dans les composants
Finalement, on injecte le StringLocalizer
dans les composants, avec comme type le fichier de ressources à utiliser.
On peut injecter plusieurs StringLocalizer
dans la page si on doit référencer plusieurs fichiers ressources. Par exemple, dans la vue Index
des événements, je fais référence ici à deux fichiers différents:
//...
@inject EvenementHttpClient EvenementHttpClient
@inject IStringLocalizer<Resources.Evenements.Index> Localizer;
@inject IStringLocalizer<SharedResources> LocalizerShared;
<NavLink href="/">@LocalizerShared["Retour"]</NavLink>
<h1>@Localizer["Titre"]</h1>
//...