13-3 Ressources partagées
Pour des libellés qui ont le potentiel ou qui se retrouvent à plusieurs endroits dans l'application, il pourrait être fastidieux de les dupliquer dans plusieurs fichiers ressources.
Par exemple, nous avons un bouton avec le terme Détails
. C'est très générique comme terme et ce dernier est susceptible de se retrouver dans plusieurs vues. Pour ce cas de figure, il est possible de créer un fichier de ressources partagé. C'est donc un fichier que plusieurs vues peuvent utiliser et ce dernier n'est pas positionné à un endroit précis dans la hiérarchie.
Créer le fichier ressource SharedResources
-
Sous le dossier
Snowfall.Web.Mvc/Resources
, créez un fichierResource (.resx)
et nommez leSharedResources
. -
On mettra simplement un libellé pour les boutons
details
:Name Default Culture Bouton_Details Détails infoÀ noter que comme il s'agit d'un fichier de ressources partagées, on veut s'assurer d'être clair dans les libellés, d'où la mention qu'il s'agit d'un texte de bouton.
-
Pour faire référence à cette ressource, il faudra une classe portant le même nom, mais à l'extérieur du dossier ressource. Il est normal que cela vous semble étrange, mais il s'agit de la méthode suggérée dans la documentation Microsoft.
-
Créez une classe
SharedResources
à la racine du projetMvc
Snowfall.Web.Mvc/SharedResources.csnamespace Snowfall.Web.Mvc;
public class SharedResources
{
// Classe dummy utilisée pour les ressources partagées
// https://learn.microsoft.com/en-us/aspnet/core/fundamentals/localization/make-content-localizable?view=aspnetcore-9.0#shared-resources
}
Utiliser les ressources partagées dans la vue
Pour utiliser le fichier de ressources partagées, on utilisera IHtmlLocalizer
. Par exemple, dans la vue partagée _Evenement
, qui contient le bouton Détails:
@model Evenement
@inject IHtmlLocalizer<SharedResources> HtmlLocalizer
<!-- ... -->
Lorsqu'on utilise IHtmlLocalizer
, on doit spécifier la ressource. SharedResources
ici fait référence à la classe Dummy
que nous avons créée à la racine du projet. Le cadriciel s'occuprera de trouver le fichier de ressources portant le même nom, sous le dossier Resources
.
Il ne suffit ensuite que de faire référence à la bonne clé:
<!-- ... -->
<div class="card-footer">
<a class="btn btn-primary"
asp-controller="Evenements"
asp-action="Show"
asp-route-id="@Model.Id">
@HtmlLocalizer["Bouton_Details"]
</a>
</div>
<!-- ... -->
Tester
Vérifiez dans le navigateur que le tout fonctionne et si oui, ...