Partage
  • Partager sur Facebook
  • Partager sur Twitter

Internationalisation en .NET Core

    19 octobre 2018 à 9:39:04

    Bonjour,

    Je développe une API en .NET Core et j'ai un soucis concernant l'internationalisation, j'ai déjà pas mal parcouru Google et les forums mais je n'ai pas trouvé une réponse qui fonctionne. J'ai deux fichiers resouces dans un dosier "Resources" : "Messages.en-GB.resx" et "Messages.fr-FR.resx" pour gérer l'anglais et le français.

    Dans la méthode ConfigureServices dans Startup.cs j'ai ajouté cette ligne pour localiser le dossier resources :

    services.AddLocalization(options => options.ResourcesPath = "Resources");


    Puis ceci dans la méthode Configure :

    var supportedCultures = new List<CultureInfo>
    
                {
    
                    new CultureInfo("fr-FR"),
    
                    new CultureInfo("en-GB")
    
                };
    
    
    
                var localizationOptions = new RequestLocalizationOptions
    
                {
    
                    DefaultRequestCulture = new RequestCulture("fr-FR"),
    
                    SupportedCultures = supportedCultures,
    
                    SupportedUICultures = supportedCultures
    
                };
    
                app.UseRequestLocalization(localizationOptions);

    Ensuite je souhaite récupérer le contenu de mes fichiers dans un controller et je procède comme suit :

    namespace Amizou.Controllers
    {
        [Route("api")]
        public class ParticipationController : Controller
        {
            private readonly MessagesLang _messages;
    
            public ParticipationController(MessagesLang messages)
            {
                _messages = messages;
            }
    
            [HttpGet("participation/{id}")]
            public bool Participate(int id)
            {
    		...
    		var label = _messages.Get("label");
    		...
    	}
        }
    }


    et voici la classe MessagesLang :

    public class MessagesLang
    {
       private readonly ResourceManager _resourceManager;
    
        public MessagesLang()
        {
            _resourceManager = ResourceManager.CreateFileBasedResourceManager("Messages", "/Resources", null);
        }
    
        public string Get(string key)
        {
            return _resourceManager.GetString(key);
        }
    }
    

    Bref cette méthode ne fonctionne pas car il ne parvient pas à trouver ou à lire les fichiers resources.

    Peut-être existe-t-il une meilleure méthode ?

    • Partager sur Facebook
    • Partager sur Twitter

    Internationalisation en .NET Core

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown