Frage

Ich habe zwei RESX-Dateien erstellt -. WebResources.resx und WebResources.fr-FR.resx

Beide enthalten ExceptionMessages_SignupWithCard.

Um zu testen, habe ich:

Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
Response.Write("Current Culture is " + CultureInfo.CurrentCulture.EnglishName);
Response.Write("<br>Message is: " + Resources.WebResources.ExceptionMessages_SignupWithCard);

Das Problem ist, dass ich immer noch die ExceptionMessages_SignupWithCard Nachricht von WebResources.resx bekommen und nicht derjenige von WebResources.fr-FR.resx.

Kann jemand bitte helfen?

Danke.

War es hilfreich?

Lösung

ASP.Net (speziell die ResourceManager) verwendet CurrentUICulture Ressourcen abgerufen werden.

Versuchen des Threads CurrentUICulture Einstellung auch.

CultureInfo french = new CultureInfo("fr-FR");
Thread.CurrentThread.CurrentCulture = french;
Thread.CurrentThread.CurrentUICulture = french;
Response.Write("Current Culture is " + CultureInfo.CurrentCulture.EnglishName);
Response.Write("<br>Message is: " +  
          Resources.WebResources.ExceptionMessages_SignupWithCard);

Andere Tipps

Versuchen Sie, die Page.Culture und Page.UICulture anstelle der Gewinde Kultur Einstellung direkt.

Da es sich um eine String-Eigenschaft ist, scheint es, dass es nicht sehr gut sein würde. Aber, es gibt eine Menge Code geht zu ändern, nicht nur die Themen Kulturen, aber die ResourceManagers auch.

Dies scheint der Standardansatz zu sein und nicht den Faden Kultur zugeordnet werden.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="LanugageChanger._Default"  meta:resourcekey="PageResource1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div style="height: 481px">

        <asp:Label ID="Label1" runat="server" Text="Hello" 
            meta:resourcekey="Label1Resource1"></asp:Label>

        <asp:TextBox ID="TextBox1" runat="server" meta:resourcekey="TextBox1Resource1"></asp:TextBox>
        <br />
        <asp:Label ID="Label2" runat="server" Text="Goodbye" 
            meta:resourcekey="Label2Resource1"></asp:Label>

        <asp:TextBox ID="TextBox2" runat="server" meta:resourcekey="TextBox2Resource1"></asp:TextBox>
        <br />
        <asp:Label ID="Label3" runat="server" Text="Welcome" 
            meta:resourcekey="Label3Resource1"></asp:Label>

        <asp:TextBox ID="TextBox3" runat="server" meta:resourcekey="TextBox3Resource1"></asp:TextBox>
        <br />
        <asp:Label ID="Label4" runat="server" Text="Terminate" 
            meta:resourcekey="Label4Resource1"></asp:Label>

        <asp:TextBox ID="TextBox4" runat="server" meta:resourcekey="TextBox4Resource1"></asp:TextBox>
        <br />
        <asp:Label ID="Label5" runat="server" Text="End" 
            meta:resourcekey="Label5Resource1"></asp:Label>

        <asp:TextBox ID="TextBox5" runat="server" meta:resourcekey="TextBox5Resource1"></asp:TextBox>
        <br />
        <br />
        <asp:Button ID="Button1" runat="server" Text="Add new values" 
            meta:resourcekey="Button1Resource1" onclick="Button1_Click1" />

        <br />
        <asp:Button ID="Button2" runat="server" Text="Change language" 
            meta:resourcekey="Button2Resource1" onclick="Button2_Click" />

        <br />
        <br />
        <asp:Label ID="Label6" runat="server" meta:resourcekey="Label6Resource1" 
            Text="English 1"></asp:Label>
        <br />
        <asp:Label ID="Label7" runat="server" meta:resourcekey="Label7Resource1" 
            Text="English 2"></asp:Label>
        <br />
        <asp:Label ID="Label8" runat="server" meta:resourcekey="Label8Resource1" 
            Text="English 3"></asp:Label>
        <br />
        <asp:Label ID="Label9" runat="server" meta:resourcekey="Label9Resource1" 
            Text="English 4"></asp:Label>
        <br />
        <asp:Label ID="Label10" runat="server" meta:resourcekey="Label10Resource1" 
            Text="Default" />></asp:Label>

        <br />
        <asp:TextBox ID="TextBox6" runat="server" Height="153px" Width="543px"></asp:TextBox>

    </div>
    </form>
</body>
</html>

Es gibt zwei Methoden, um die UICulture eine asp.net Web-Seite zu setzen.

Option # 1 ist, dass der Web-Browser die Benutzeroberfläche Kultur anpassen kann (auto), indem Sie die aktuelle Sprache im Web-Browser einstellen. In FireFox Sie auf die Registerkarte Inhalt in Optionen gehen und Sprachen klicken, fügen Sie dann die Französisch Sprache und es an die Spitze der Liste verschieben. IE ist ähnlich, es hat eine Schaltfläche Sprachen in den Optionen-Seiten und Sie Französisch hinzufügen und es an die Spitze in der Größenordnung bewegen. Für Ihre Web-Seite diese Art der automatischen Anpassung zu unterstützen, müssen Sie wie so ‚UICulture = auto‘ in Web-Seite Pragma gesetzt: <% @ Page Language = "C #" AutoEventWireup = "true" UICulture = "auto" ... ... ...%> Wenn Sie diese Methode verwenden, wird es Ihre Standard-Sprache für alle Web-Browser Sprachen anzuzeigen, die sie nicht verstehen. Sie haben nur eine kulturneutrale Ressource zu definieren, alle Versionen einer Sprache zu decken, oder Sie können die spezifischen Sprachen (fr-CA, es-mx, usw.) definieren, und es wird in die neutrale Sprachdatei (fr-fr) Rückfall wenn die spezifische Sprache nicht definiert ist. MSDN hat weitere Informationen über die Autokultur und wie mehr Web-Browser Sprachen IE hinzuzufügen: http://msdn.microsoft.com/en-us/library/fw69ke6f.aspx

Option # 2 ist es in der Web-Seite Pragma auf eine bestimmte Sprache zu setzen, wie UICulture = "fr-FR" oder in der web.config für den gesamten Standort.

MSDN erklärt diese Einstellungen in den unten stehenden Link und wie Sie es über web.config für alle Seiten Ihrer Website einstellen. http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

Die programmatische Methode, die nachweislich funktioniert verwenden, aber wie Sie vielleicht bemerkt es funktioniert nur vorübergehend. Ich habe die programmatische Methode zum Lesen der Sprache über die Abfragezeichenfolgeflag angegeben verwendet und Kulturen, die Art und Weise zu verändern. Sie können eine Httpmodule implementieren die Abfragezeichenfolgeflag zu überprüfen und die Kultur für die aktuelle Seite Anfrage auf diese Weise festgelegt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top