Announcement

Collapse
No announcement yet.

Language Files für Anwendung

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

  • Language Files für Anwendung

    Hallo Leute,

    ich wollte mich mal erkundigen ob jemand von euch schonmal mit Language-Files zu tun hatte.

    Ich möchte eine Anwendung erstellen, die über eine Option von Deutsch auf English umgeschaltet werden kann.
    Nun ist meine Frage wie ich das ganze am besten strukturiere (Klassen etc.) damit ich alle Steuerelemente, deren Namen ich ändern möchte, sehr leicht verwalten kann.
    Ich dachte da an eine Lösung via XML. aber da müsste ich dann jedes Steuerelement darin pflegen. Gibt es da keinen etwas automatisierteren Weg?

    Gruss Bladey

  • #2
    Wenn du Winforms benutzt (was du nicht verrätst) einfach das Standardverfahren verwenden. Wie siehst du z.B. hier

    Comment


    • #3
      Vielen Vielen Dank,

      genau das hab ich gebraucht.

      Ja ich arbeite mit Windows Forms, sorry das ich das nicht erwähnte.

      Nochmal vielen Dank

      Comment


      • #4
        Hallo, jetzt muss ich nochmal nachhaken,

        ich habe gesehen das diese Vorgehensweise ja abhängig von der eingestellten Windows Umgebung ist.
        Wie gehe ich vor wenn ich nun über das Programm selbst die Sprache auswählen möchte, und das unabhängig von der Windows Sprache.

        Vielleicht ist die Frage etwas doof, aber ich fange erst an mich damit zu beschäftigen. Also Newbie sozusagen.

        Gruss Bladey

        Comment


        • #5
          Steht ebenfalls im verlinkten MSDN Beitrag. Der Teil mit der Überschrift 'So richten Sie die benutzeroberflächenspezifische Kultureinstellung zum Anzeigen bestimmter Ressourcen ein'.

          Comment


          • #6
            habe ich versucht, jedoch kann ich dann nur beim Programmstart die Sprache einstellen lassen.

            Ich schaffe es nicht das ganze interaktiv umzuschalten. Oder ist das ohne Programmneustart nicht möglich?

            Comment


            • #7
              Du musst zumindest die betroffenen Forms schließen und neu erzeugen.

              Die Anzeige wird nicht automatisch refreshed beim ändern der Sprache sondern die Resourcen werden in der InitializeComponent Methode der Form zugewiesen wenn die Controls auf der Form erzeugt werden.

              Comment


              • #8
                mmh ok,

                wie könnte das in einem Beispiel aussehen? Ich bekomms irgendwie net hin.

                Comment


                • #9
                  Dein Problem verstehe ich dann jetzt auch nicht. Sollte doch eigentlich klar sein.

                  1. CurrentUICulture setzen.
                  2. Formen schließen (myForm .Close()) - Kannst du auch mit 1. tauschen
                  3. Formen neu erzeugen (myForm = new MyForm(); myForm .Show oder ShowDialog etc. so wie man das halt mit Formen macht)

                  Comment


                  • #10
                    Code:
                        Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged
                    
                            If RadioButton3.Checked = True Then
                                Dim Value
                    
                                Value = New CultureInfo("fr-FR")
                    
                                Thread.CurrentThread.CurrentUICulture = Value
                    
                                Me.Close()
                    
                    
                    
                            End If
                        End Sub
                    das ist mein Code von einem Radiobutton auf der Form. aber ich weiss nicht was ich jetzt nach dem Me.Close schreiben muss. Alles was ich probiert habe ging in die Hose


                    Hier der gesamte Code
                    Code:
                    Imports System.Globalization
                    Imports System.Threading
                    
                    Public Class Form1
                        ' Visual Basic
                    
                        Sub New()
                            'Thread.CurrentThread.CurrentUICulture = New CultureInfo("fr-FR")
                            ' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
                            InitializeComponent()
                    
                            ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
                            
                        End Sub
                    
                    
                        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                    
                        End Sub
                    
                        Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
                            Dim myForm As Form
                            If RadioButton2.Checked = True Then
                                Dim Value
                    
                                Value = New CultureInfo("de-DE")
                    
                                Thread.CurrentThread.CurrentUICulture = Value
                    
                                Me.Close()
                    
                                myForm = New Form1
                    
                                Form1.Show()
                            End If
                        End Sub
                    
                        Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged
                    
                            If RadioButton3.Checked = True Then
                                Dim Value
                    
                                Value = New CultureInfo("fr-FR")
                    
                                Thread.CurrentThread.CurrentUICulture = Value
                    
                                Me.Close()
                    
                    
                    
                            End If
                        End Sub
                    End Class

                    Comment


                    • #11
                      Sich selber zu schließen und neu zu öffnen wird tatsächlich nicht funktionieren das sollte von außerhalb der betroffenen Form passieren. Von irgend woher hast du die Form ja angezeigt von dort aus solltest du es auch wieder anzeigen wenn sich die Sprache geändert hat.

                      Edit:

                      Vielleicht hilft dir folgendes
                      http://www.vb-helper.com/howto_net_l...reloading.html
                      Das ist ein Hack denn ich nur bedingt empfehlen kann es sollte aber ohne schließen neu öffnen auskommen.
                      Grundidee ist einfach alle Controls auf der Form zu zerstören (nicht die Form) und InitializeComponent erneut aufzurufen.

                      Comment


                      • #12
                        Hallo,

                        leider ist meine Form welche es beeinflusst die Startform. Ich möchte allerdings nicht nochmal eine separate Form einrichten müssen.

                        Ich habe jetzt mal ein Beispielprojekt (VB 2008) angehängt. Vielleicht kann mir jemand helfen.

                        Ich habe nun die Sprache in ein XML File hinterlegt, lese dieses aus und will dann die Form mit der entsprechenden Sprache starten.

                        Irgendwie läuft das alles im Kreis und ich weiss nicht genau was da falsch läuft. Um Hilfe wäre ich dankbar.
                        Attached Files

                        Comment


                        • #13
                          Hallo,

                          ich mag es nicht, Code herunterzuladen, irgendwo zu speichern, dann #D zu öffnen und erst dann hier zu antworten. Aber das ist mein Problem.

                          Ich würde für ein solches Verfahren die Main-Methode ändern. Der Aufruf von Application.Run kommt in eine Schleife, bei der über einen Delegate der Grund des Schließens abgefragt wird; abhängig davon wird Run erneut aufgerufen oder die Anwendung beendet. Der Grund des Schließens wird bei this.Close übergeben. Das sieht dann etwa so aus:
                          Code:
                          do
                             theMainForm = new MainForm()
                             Methode "GrundAbfragen" Handles theMainForm.GrundNennen
                             Application.Run(theMainForm)
                          while (neustart gewünscht)
                          Dort steht auch die Methode GrundAbfragen, die den Wert "neustart gewünscht" setzt.

                          Die Logik sollte die neue Culture dann in dieser Schleife setzen; aber das ist zweitrangig.

                          Gruß Jürgen

                          Comment


                          • #14
                            Danke für deine Antwort ;-)

                            Um ehrlich zu sein habe ich nichts verstanden

                            Comment


                            • #15
                              Und nun? Willst du sagen, dass unsere Anmerkungen für die Katz waren? Du musst wohl schrittweise vorgehen und dich konsequent einarbeiten, z.B. mit dem openbook visualbasic_2008, und nicht irgendein Spezialproblem ansprechen, für das dir die Grundlagen noch fehlen. Jürgen

                              Comment

                              Working...
                              X