Announcement

Collapse
No announcement yet.

mehrsprachige Anwendung

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

  • mehrsprachige Anwendung

    Hallo an alle,

    ich hab folgendes Problem mit mehrsprachigen Formularen:

    Meine Applikation beinhaltet mehrere Formulare.
    Alle Formulare haben als default Sprache Englisch!

    Jetzt habe ich in allen Formularen die LOCALIZABLE Eigenschaft auf true und die Sprache entspechend auf DEUTSCH gestellt! Anschließend jedem Steuerelement einen deutschen Text zugewiesen.

    Starte ich jetzt die Anwendung, dann ist im Haupftformular jede Steuerelementtext in deutscher Sprache. SUPER!
    ABER: öffne ich nun ein weiteres Formular, erscheint dort nur die default Sprache als Text in den Steuerelementen!? Wie kann das sein!?

    Die resourcenFiles der einzelnen Forms existieren, werden aber anscheinend nicht geladen!????

    Wer kann mir helfen?

    Danke im Vorraus

  • #2
    Hallo,

    öffne ich nun ein weiteres Formular, erscheint dort nur die default Sprache als Text in den Steuerelementen!?
    Setz dort mal einen Breakpoint und schau dir Thread.CurrentThread.CurrentUICulture und CurrenCulture an.


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Hi gfoidl,

      hab ich gemacht und steht wie erwartet auf "de" bzw "de-DE"...

      woran kann das liegen, dass die Sprache trotzdem nicht richtig gesetzt wird!?

      Comment


      • #4
        Hab den Fehler gefunden!

        Bevor ich die formulare geladen habe, hab ich zusätzlich die Region abgefragt und dementsprechend gestzt! Die führte dazu, dass IMMER die dafault Ländereinstellung genommen wurde!

        Warum funktioniert das eigentlich nicht!?
        Ist es nicht möglich vor dem InitializeComponent() die gewünschte Region und Sprache zu setzen!?

        folgender Code zeigt, wie ich es versucht habe:

        Select Case My.Application.Culture.Name
        Case "de-DE"
        My.Application.ChangeUICulture("de")
        My.Application.ChangeCulture("de-DE")
        Case "en-US"
        My.Application.ChangeUICulture("en")
        My.Application.ChangeCulture("en-US")
        Case "en-GB"
        My.Application.ChangeUICulture("en")
        My.Application.ChangeCulture("en-GB")
        End Select

        Es wird leider immer nur die DEFAULT Sprache gesetzt!

        Jemand eine Idee?

        Grüße

        Comment


        • #5
          würdest du in c# Programmieren müsste als Abschluss jedes case Falles ein break kommen. Allerdings ist das in vb.net meines Wissens nicht der Fall somit ist das schon eigenartig.

          Musst du wirklich selbst die Region abfragen? Denn grundsätzlich richtet sich das ganze ja nach der Systemsprache, die ja in den meisten Fällen der Anwendersprache gleichgesetzt ist.
          Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

          Comment


          • #6
            mhmmm ich glaube das-d hat recht.

            könnte es sein, dass deine "case passt, verlasse switch" keywords fehlen?

            ich hätte hier 2 möglichkeiten dies zu testen
            1.) versuch einmal bei jedem case-ende ein return hin zu setzen
            2.) gib irgendwo in einer funktion einmal folgendes ein:
            schreibe: switch
            drücke: tab
            drücke: tab
            schreibe: true
            drücke: pfeiltaste runter
            --> dies sollte dir automatisch eine passende default switch generieren (incl. abbruch des switch bei default)

            Comment


            • #7
              Ungeachtet der letzten Sytax-Diskussionen...
              Denke hier ist die Lösung des Problems:

              Im Form1 folgende beiden SUBs platzieren:

              1. Imports setzen
              Code:
              Imports System.Globalization
              Imports System.Threading
              Imports System.ComponentModel
              2. Auswerten der Sprach-Codes und Übergabe des Codes an 'ChangeSprache'
              Code:
                Sub SetSprache(Sprache as String)
                    If Sprache = "English-US" Then
                       ChangeSprache("en-US")
                    ElseIf Sprache = "German-DE" Then
                       ChangeSprache("de-DE")
                    Else 'Sprache = "English-GB" Then
                       ChangeSprache("en-GB")
                    End If
                 End Sub
              3. Ändern der Form-Objekte in Form1
              Code:
                 Sub ChangeSprache(ByVal LandCode As String)
                    For Each c As Control In Me.Controls
                       Dim resources As ComponentResourceManager = New ComponentResourceManager(GetType(Form1))
                       resources.ApplyResources(c, c.Name, New CultureInfo(LandCode))
                    Next
                 End Sub
              Have fun :-)

              Comment

              Working...
              X