ERLEDIGT
JA
JA
ANTWORTEN
16
16
ZUGRIFFE
1355
1355
EMPFEHLEN
-
Hallo zusammen,
ich arbeite mehrsprachig über resourcen-Datein.
Meine labels, Panels und Buttons habe ich über Control beschriftet.
Jetzt mein Problem: ich möchte auch das Menü evtl. so beschrifte. hat einer irgend eine Idee.
Hier mein vb-Code zur Beschriftung der Labels usw.
Public Sub fuellencontrolls(ByVal obj As System.Windows.Forms.Control)
'// Abruf aller lbl, btn , und geschachtelte Panel zur Beschriftung
'// Beschriftung mittes ResourcenManager (translate.getString)
For Each thisControl As System.Windows.Forms.Control In obj.Controls
thisControl.Text = translate.GetString(thisControl.Name.ToString)
' Anzeigen des Namen wenn kein Text hinterlegt
If thisControl.Text = "" Then
thisControl.Text = thisControl.Name.ToString
End If
If thisControl.HasChildren Then
For Each thisctr As System.Windows.Forms.Control In thisControl.Controls
thisctr.Text = translate.GetString(thisctr.Name.ToString)
Next thisctr
End If
Next thisControl
-
Hi
Die Lokalisierung von Controls kannst du so vornehmen, dass du für die Form da Property Localizable auf True setzt und anschließend unter Language die bevorzugte Sprache auswählst.
Anschließend den entsprechenden Text ändern.
Vorsicht: da alle Properties localizable sind kannst du sie auch in zwei Sprachen an 2 unterschiedlichen Stellen platzieren. Wenn du das nicht willst, musst du darauf achten, dass du Änderungen, die für alle Sprachen gelten sollen unter der Auswahl {Default} stattfinden.Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Ja, das funktioniert ja auch.
Jedesmal wenn ich das Projekt neu starte ist die Sprache die ich eingestellt habe auch korrekt.
ich möchte aber die Sprache in meinem Eigenschaftsfenster ändern und dann soll ein sog. Refresh über alle offenen formen laufen um die neue Sprache einzustellen.
Anmerkung: nach der Auswahl der neuen Sprache setze ich als erste eine neue sprache und einen neuen ResourcenManager (str= Spracheinstellung)
Public Sub einlesen_Sprache()
Thread.CurrentThread.CurrentUICulture = New CultureInfo(str)
translate = New ResourceManager("IDCweb.Resources", System.Reflection.Assembly.GetCallingAssembly())
End Sub
-
Hat keiner eine Idee, wie man die Sprache in allen aktiven Formen ändert ?
-
Hi
Du musst als erstes die UICulture (ggf. auch die normale Culture, je nachdem was deine Anwendung macht) neu setzen.
Anschließend musst du mit dem ComponentResourceManager rekurviv über alle Controls in allen instanzierten Fenstern laufen.Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Schau mal hier:
http://www.dotnetcasts.com/Static.aspx?=livecast006
Sollte ein wenig weiterhelfen.
-
Ich versuche dies ja, aber irgendwie funktioniert dies nicht. Der Resourcenmanager greift nicht auf die resx-Dateien zu, sonder will immer nur auf die Resourcen-Datei zugreifen
Hier mein Code mit dem ich es versuche:
1. Aufruf:
Public Sub einlesen_Sprache()
' setzen einer Sprachkultur, Daten aus der Globalini
Thread.CurrentThread.CurrentUICulture = New CultureInfo(g_iwAllg.strSprache)
translate = New ResourceManager("IDCweb.Resources", System.Reflection.Assembly.GetCallingAssembly())
End Sub
2. Aufruf:
Public Sub fuellencontrolls(ByVal obj As System.Windows.Forms.Control)
'// Abruf aller lbl, btn , und geschachtelte Panel zur Beschriftung
'// Beschriftung mittels ResourcenManager (translate.getString)
For Each thisControl As System.Windows.Forms.Control In obj.Controls
Dim strtmp As String = translate.GetString(thisControl.Name.ToString)
If strtmp <> "" Then thisControl.Text = strtmp
'thisControl.Text = IIf(strtmp <> "", strtmp, thisControl.Text)
'// Beschriftung von Panels mit mehreren Labels usw.
If thisControl.HasChildren Then
For Each thisctr As System.Windows.Forms.Control In thisControl.Controls
thisctr.Text = translate.GetString(thisctr.Text)
Next thisctr
End If
Next
End Sub
Gruß
czemmel
-
Hi, du sollst auch nicht den ResourceManager nutzen sondern den ComponentResourceManager
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Hä, noch nie gehört Muß mich erstmal einlesen und ein bischen versuchen
-
Vielen Dank für den Tipp
Habe nun nur noch ein ganz kleines Problem, mein Menü und mein Panel wird nicht aktualisiert
hier mein Code in der Hoffnung ich bin auf dem richtigen weg:
Public Sub formneuzeichnen()
'Nach allen geöffneten Formen suchen
For Each Frm As System.Windows.Forms.Form In System.Windows.Forms.Application.OpenForms
'anlegen eines Component ResourcenManager
trans = New System.ComponentModel.ComponentResourceManager(Frm.GetType)
'Position der Form speichern
Dim ptlocation As Point = Frm.Location
'Resourcen übernehmen
trans.ApplyResources(Frm, Frm.Name.ToString)
'Position setzen
Frm.Location = ptlocation
'Resourcen für alle Controlls übernehmen
For Each thiscontrol As System.Windows.Forms.Control In Frm.Controls
trans.ApplyResources(thiscontrol, thiscontrol.Name)
If thiscontrol.HasChildren Then
For Each thisctr As Control In Frm.Controls
trans.ApplyResources(thisctr, thisctr.Name)
Next thisctr
End If
Next thiscontrol
Next
End Sub
-
Hi
Was wahrscheinlich daran liegt, dass der Aufruf nicht rekursiv ist.
PS: Bitte poste deinen Code in die entsprechenden Code-Tags (code, vbnet, csharp, sql, ...). Das macht die Angelegenheit erheblich lesbarer
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
Einen schönen guten Morgen Niggo,
kannste mal einen kurzen Tipp geben, wie ich dies Rekursiv machen kann. Hab jetzt ne ganze Zeit rumprobiert, krieg das aber irgendwie nich hin
Danke
Czemmel
-
Habs hinbekommen
jetzt fehlen mir nur noch meine ToolStripMenueItem
-
Einen schönen guten Tag zusammen
habe versucht mein Menü (MenuStrip mit MenuToolStripItem) mit einzubauen.
kann mir mal einer helfen.
Hier mein Code indem ich es versucht habe
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
Public Sub SetMenuStripTexts(ByVal itm As ToolStripMenuItem, ByVal trans As System.ComponentModel.ComponentResourceManager) If TypeOf itm Is ToolStripItem Then 'Testen, ob auch ein Toolstrip/*Menu*/Item vorliegt With DirectCast(itm, ToolStripMenuItem) For Each itmRecurse As ToolStripItem In .DropDownItems trans.ApplyResources(itmRecurse, itmRecurse.Name) SetMenuStripTexts(itmRecurse, trans) Next End With End If End Sub Public Sub formneuzeichnen() 'Nach allen geöffneten Formen suchen For Each Frm As System.Windows.Forms.Form In System.Windows.Forms.Application.OpenForms 'anlegen eines Component ResourcenManager trans = New System.ComponentModel.ComponentResourceManager(Frm.GetType) 'Position der Form speichern Dim ptlocation As Point = Frm.Location 'Resourcen übernehmen trans.ApplyResources(Frm, Frm.Name.ToString) 'Position setzen Frm.Location = ptlocation 'Resourcen für alle Controlls übernehmen For Each thiscontrol As System.Windows.Forms.Control In Frm.Controls trans.ApplyResources(thiscontrol, thiscontrol.Name) If thiscontrol.HasChildren Then For Each thisctr As Control In thiscontrol.Controls trans.ApplyResources(thisctr, thisctr.Name) Next thisctr End If Next thiscontrol Next For Each Frm As System.Windows.Forms.Form In System.Windows.Forms.Application.OpenForms If Frm.MainMenuStrip IsNot Nothing Then 'Menübeschriftung For Each itm As System.Windows.Forms.ToolStripMenuItem In Frm.MainMenuStrip.Items Call SetMenuStripTexts(itm, trans) Next Else 'Throw New Exception(String.Concat("""", Frm.Name, """hat gar kein Menü!")) End If Next End Sub
Wo liegt denn hier der Fehler, dass er mein Menü nicht mitübersetzt ?
Danke für jede Hilfe
Gruß
Czemmel
-
Hi
Hast du schon mal debugged um zu überprüfen, ob er überhaupt Items findet?
Gibt es in den Resourcen auch Text für die entsprechende Sprache?Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
Ähnliche Themen
-
Excel Daten in MSSQL 2005 importiern mit vb 2005
Von fanxin im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 18.04.08, 13:05 -
nDoc für .Net 2005 und VS 2005
Von Freak2k im Forum .NET CaféAntworten: 9Letzter Beitrag: 23.10.07, 14:34 -
ODBC mit Visual Basic 2005 Express Edition zu SQL Server 2005 Express Edition?
Von mdxd2 im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 21.06.07, 00:10 -
.Net 2.0 + Visual Studio 2005 + SQL Server 2005 released
Von Nico Graichen im Forum Coders TalkAntworten: 0Letzter Beitrag: 28.10.05, 16:00





Zitieren

Login





