Aller au contenu principal

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.

attention

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

  1. Clic droit sur le projet Admin -> Manage NuGet Packages
  2. Cherchez Microsoft.Extensions.Localization
  3. Installez la dépendance

Ajouter le support pour la localisation

Au fichier Program.cs du projet client, ajoutez AddLocalization:

Snowfall.Web.Admin/Program.cs
//...

// 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:

img

  • Snowfall.Web.Admin/Resources/Evenements/Index.resx pour la page Index des événements
  • Snowfall.Web.Admin/Resources/SharedResources.resx pour des ressources partagées
info

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:

Snowfall.Web.Admin/Pages/Evenements/Index.razor
//...

@inject EvenementHttpClient EvenementHttpClient
@inject IStringLocalizer<Resources.Evenements.Index> Localizer;
@inject IStringLocalizer<SharedResources> LocalizerShared;

<NavLink href="/">@LocalizerShared["Retour"]</NavLink>
<h1>@Localizer["Titre"]</h1>

//...

Imgur