2015-07-28 1 views
0

J'ai créé deux fichiers de ressources, "SOSResources.en.resx" et "SOSResources.pt.resx".Aspx et aspx.cs récupérant des chaînes à partir de différents fichiers resx

Dans ma page ASPX, lorsque j'essaie d'utiliser une chaîne de ces fichiers comme ci-dessous, je l'obtiens du fichier RESX en anglais standard.

asp:Literal ID="btnDelete_Text" Text="<%$Resources:SOSResources, String1%>" 

Cependant, si je tente d'obtenir la même chaîne sur le code-behind comme ci-dessous, je l'obtenir à partir du fichier de langue portugaise (qui est la langue de l'utilisateur).

btnEdit_Text.Text = Resources.SOSResources.String1 

Le code suivant est utilisé pour gérer ce processus. Il est supposé sélectionner la langue de l'utilisateur, ou l'anglais au cas où cette information n'est pas disponible. Cependant, seul l'exemple de code-behind obtient la langue de l'utilisateur. L'exemple de la page aspx récupère toujours les chaînes du fichier resx anglais.

protected override void InitializeCulture() 
    { 
     string lang; 

     if (ActiveUser != null && ActiveUser.Language != null) 
     { 
      lang = ActiveUser.Language; 
     } 
     else 
     { 
      lang = "en"; 
     } 

     Thread.CurrentThread.CurrentUICulture = new CultureInfo(lang); 
     base.InitializeCulture(); 
    } 

Quelqu'un peut-il m'aider? Comment puis-je m'assurer que dans les deux cas la page obtiendra les chaînes de la langue appropriée? Je ne suis pas sûr non plus si c'est la bonne façon d'effectuer la mondialisation sur .NET.

+0

Quelle est la valeur de la variable 'lang' qui est passé à la' CultureInfo'? – Kamo

+0

C'est la valeur de ActiveUser.Language: un code de langue tel que "en", "pt" ou "es" selon l'utilisateur. Ou, dans le cas où cette information n'existe pas dans la base de données, "en" (la langue standard pour le système). – TC55

Répondre