Announcement

Collapse
No announcement yet.

CurrentUICulture

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • CurrentUICulture

    Ich möchte meine C# Anwendung fremdsprachig machen. Es klappt auch alles sehr gut und ich kann mittels

    Thread.CurrentThread.CurrentUICulture = new CultureInfo(langID);

    die Kulturen umstellen und aus den Ressourcen die entsprechenden Texte laden.

    Meine Frage ist, warum wird z.B. nicht das Datum in den Label / Edit Feldern der Form umgestellt? Also ich verwende eine SDF Datenbank. Darin stehen die Datumsfelder im Deutschen (01.12.2003 16:10:00) datetime Format. Die Datumsfelder werden in der Anwendung aber nicht nach dem Wechsel der Sprache entspechend kulturabhängig (z.b. en-US ist nicht 12/01/2003 04:00 PM) angezeigt. Was mache ich da falsch?

    VS2008

    Bei MS und im Net habe ich dazu nichts finden können
    Gruß HS

  • #2
    mmm Ich denke das du nach auslesen des Datum aus der Datenbank, den Wert (also das 01.12.2003 16:10:00) der label Eigenschaft Text zuweist.

    Versuch mal:

    [highlight=c#]
    labelBeispiel.Text = datumWert.ToString("en-US");
    [/highlight]

    Comment


    • #3
      Hallo Arrow,

      nein so ist es nicht. Also die Textbox ist mittels DataBindings (Text) an das Datumsfeld der Tabelle verbunden. Zu dem wurde unter Erweitert auch das Feld für Datum gesetzt.

      Ich setze im Programm das Land mit :

      Thread.CurrentThread.CurrentUICulture = new CultureInfo(langID);

      Dabei werden nur die Ressourcen (Texte) gelesen. Nicht aber die Datums Felder der Tabelle entsprechend jeweiligen des Landes umgestellt.

      Ich habe auch versucht im Ereignis (TextChanged) den Inhalt mit folgenden Code zusetzen:

      DateTime Tmp_Datum = Convert.ToDateTime(textBox5.Text);

      textBox5.Text = Tmp_Datum.ToString("d", CultureInfo.CreateSpecificCulture(FBMemVari.FB_Lan gID));


      Das klappt auch ganz gut, bis das Programm auf einen Stackoverflow läuft ;-)


      Ich weiss nicht wie es möglich sein soll das dass Datumsformat richtig angezeigt wird. Im WWW ist nichts zu finden.

      Gruss HS

      Comment


      • #4
        Originally posted by H.Schuba View Post
        Also ich verwende eine SDF Datenbank. Darin stehen die Datumsfelder im Deutschen (01.12.2003 16:10:00) datetime Format.
        Das ist eine völlig falsche Formulierung: Die Datumsfelder werden im DateTime-Format von MS gespeichert; das hat überhaupt nichts mit der deutschen Formatierung zu tun. Merke: Ein DateTime ist ein DateTime ist ein DateTime. Die String-Darstellung ist nur eine Konvertierung zur verständlichen Anzeige.

        Deine weiteren Anmerkungen machen allerdings klar, dass dir das voll bewusst ist. Bitte vermeide deshalb solche missverständlichen Beschreibungen.

        Zu deinem eigentlichen Problem: Betrifft die falsche Darstellung nur Daten, die schon angezeigt werden (das wäre nach meinem Verständnis zu erwarten), oder auch Daten, die nach der Umstellung der Culture aus der DB geholt werden? Könnte es sein, dass du irgendwo beim Einlesen oder der Verknüpfung zwischen Daten und Controls ein Culture-abhängiges ToString eingebaut hast? Liest du überhaupt mit DbDataAdapter ein oder mit DbDataReader (bei Letzterem würde ich dort kontrollieren)?

        Gruß Jürgen

        Comment


        • #5
          Hallo Jürgen,

          sorry wenn ich mich da ein bisschen falsch ausgedrückt habe. Die Daten lese ich wie folgt ein:


          this.dbo_CLSAVETableAdapter.FillBy(this.fBUCHDS.db o_CLSAVE, FBMemVari.FB_StartZeit_Int, FBMemVari.FB_EndeZeit_Int, Convert.ToInt32(FBMemVari.FB_CLCAR));

          // FBMemVari.FB_StartZeit_Int = Zeit als Timestamp Wert Sec seit 1.1.1970
          // FBMemVari.FB_EndeZeit_Int = Zeit als Timestamp Wert Sec seit 1.1.1970
          // FBMemVari.FB_CLCAR = Integer Zahl für die Fahrzeugnr.

          Es betrifft auch die Daten welche nach der Umstellung aus der Datenbank geholt werden.

          Gruss Heiko

          Comment


          • #6
            Ah ich habe es selber gefunden !!!


            Thread.CurrentThread.CurrentCulture = new CultureInfo(langID);

            Thread.CurrentThread.CurrentUICulture = new CultureInfo(langID);


            this.Controls.Clear();
            InitializeComponent();



            Das einzigste was mich noch stört, ist das wenn Clear() und InitializeComponent ausgeführt werden, der Bildschirm kurz flackert


            Trotzdem besten Dank Jürgen u. Arrrow

            Gruss Heiko

            Comment

            Working...
            X