IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[C#] Multi langue - fichier resource.resx


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 83
    Points : 77
    Points
    77
    Par défaut [C#] Multi langue - fichier resource.resx
    Bonjour à tous les developpeurs !

    Je suis en train de créer un nouveau projet qui doit être multilangue.
    Je me suis inspiré de ce que j'ai pu trouvé sur différents sites mais je ne trouve pas que ce soit très claire (je suis peut etre un peu mauvais aussi )

    Pour l'instant j'ai crée 4 choses :

    1 - dans le global.asax
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    protected void Application_BeginRequest(Object sender, EventArgs e)
    		{
    			//gestion du multi language
     
    			System.Globalization.CultureInfo cultureInfo;
    			if (HttpContext.Current.Request != null
    				&& HttpContext.Current.Request.UserLanguages != null
    				&& HttpContext.Current.Request.UserLanguages.Length > 0 )
    			{
    				cultureInfo = CultureInfo.CreateSpecificCulture(HttpContext.Current.Request.UserLanguages[0]);
    			}
    			else
    			{
    				cultureInfo = new CultureInfo("en-EN"); // par défaut en anglais.			}
    			Thread.CurrentThread.CurrentCulture = cultureInfo;
    			Thread.CurrentThread.CurrentUICulture = cultureInfo;
     
    		}
    2 - Création de 2 fichiers : resources.resx et resources.fr.resx

    3 - appel dans ma page comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <% =TDBGCE.Languages.EasyResourceManager.GetString("Login.Password") %>
    4 - Création d'une classe de gestion de resource manager
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    using System;
    using System.Resources;
     
    namespace TDBGCE.Languages
    {
    	public class EasyResourceManager
    	{
    		private static ResourceManager _RM = null;
    		static EasyResourceManager() {}
     
    		private static void LoadResources()
    		{
    			if (_RM == null)
    			{
    				try
    				{
    					_RM = new ResourceManager("Resources", 
    						typeof(EasyResourceManager).Assembly);
    				}
    				catch {}
    			}
    		}
     
    		public static string GetString(string name)
    		{
    			LoadResources();
    			return _RM.GetString(name);
    		}
    	}
    }
    Or j'ai un message d'erreur et surtout je ne comprend pas bien le coup des dossiers "fr" et "en" dans le bin dynamiquement ...


    Si vous avez 5 minutes pour me pondre un petit pavé bien claire ce serait bien bien cool.

    Merci d'avance.

    damien

  2. #2
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 83
    Points : 77
    Points
    77
    Par défaut






  3. #3
    En attente de confirmation mail
    Inscrit en
    Avril 2004
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Ouai, c'est loin d'être évident, va jeter un oeil par ici :
    http://www.developpez.net/forums/vie...190027#1033131

  4. #4
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 83
    Points : 77
    Points
    77
    Par défaut
    Merci mais c'est deja fait malheureusement.
    Je trouve la discussion loin d'etre claire ...

    En fait, je sais le faire en utilisant l'outil de compilation resgen.exe et tout le toutime mais je n'arrive pas à le faire fonctionner (utilisation de "fichier de resource de l'assembly").





    Tchuss

  5. #5
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 83
    Points : 77
    Points
    77
    Par défaut
    Voici mon code d'erreur pour ceux qui sont prêt à me filer un coup de main sur cette affaire

    : :

    -------------------------------------------------------------------------------------
    Could not find any resources appropriate for the specified culture (or the neutral culture) in the given assembly. Make sure "resources.resources" was correctly embedded or linked into assembly "TDBGCE". baseName: resources locationInfo: <null> resource file name: resources.resources assembly: TDBGCE, Version=1.0.1615.24214, Culture=neutral, PublicKeyToken=null
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.Resources.MissingManifestResourceException: Could not find any resources appropriate for the specified culture (or the neutral culture) in the given assembly. Make sure "resources.resources" was correctly embedded or linked into assembly "TDBGCE". baseName: resources locationInfo: <null> resource file name: resources.resources assembly: TDBGCE, Version=1.0.1615.24214, Culture=neutral, PublicKeyToken=null

    Source Error:


    Line 26: {
    Line 27: LoadResources();
    Line 28: return resourceManager.GetString(name);
    Line 29: }
    Line 30: }


    Source File: c:\inetpub\wwwroot\tdbgce\languages\language.cs Line: 28

    Stack Trace:


    [MissingManifestResourceException: Could not find any resources appropriate for the specified culture (or the neutral culture) in the given assembly. Make sure "resources.resources" was correctly embedded or linked into assembly "TDBGCE".
    baseName: resources locationInfo: <null> resource file name: resources.resources assembly: TDBGCE, Version=1.0.1615.24214, Culture=neutral, PublicKeyToken=null]
    System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents) +1219
    System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents) +537
    System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents) +537
    System.Resources.ResourceManager.GetString(String name, CultureInfo culture) +103
    System.Resources.ResourceManager.GetString(String name) +6
    TDBGCE.Languages.Language.GetString(String name) in c:\inetpub\wwwroot\tdbgce\languages\language.cs:28
    ASP.Login_aspx.__RenderfrmIdentification(HtmlTextWriter __output, Control parameterContainer) in c:\inetpub\wwwroot\TDBGCE\Core\Pages\Login.aspx:61
    System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
    System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer)
    System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer)
    System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output)
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
    System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
    System.Web.UI.Control.Render(HtmlTextWriter writer)
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
    System.Web.UI.Page.ProcessRequestMain()
    -------------------------------------------------------------------------------------
    [Balise [Quote](Citation) ajoutée par freegreg]
    [Pensez-y, vous-même, la prochaine fois. Merci ]

  6. #6
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 83
    Points : 77
    Points
    77
    Par défaut
    J'ai trouvé !!

    Il suffisait de spécifier dans la méthode ci-dessous le nom du namespace.

    Avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     _RM = new ResourceManager("Resources", 
                      typeof(EasyResourceManager).Assembly);
    Apres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     _RM = new ResourceManager("PROJET.Resources", 
                      typeof(EasyResourceManager).Assembly);




    A plus et merci à ceux qui se sont penchés (dans l'ombre) sur mon problème

    [Tag [Résolu] ajouté par freegreg]
    [Pensez-y, vous-même, la prochaine fois. Merci ]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/05/2015, 14h24
  2. Multi-langue creation de resx par classe
    Par olibara dans le forum Windows Forms
    Réponses: 51
    Dernier message: 27/10/2009, 08h45
  3. Multi langue resources
    Par alaino dans le forum Silverlight
    Réponses: 2
    Dernier message: 26/11/2008, 09h14
  4. Réponses: 1
    Dernier message: 05/06/2008, 16h35
  5. [Application multi-langues] Compilateur ou fichier lng ?
    Par Teb dans le forum Composants VCL
    Réponses: 5
    Dernier message: 16/08/2005, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo