Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Mehrsprachrigkeit | Herbers Excel-Forum


Betrifft: Mehrsprachrigkeit von: Franz D.
Geschrieben am: 23.01.2010 22:09:17

Hallo Freunde,
hat jemand bereits Applikation in 2 Sprachen produziert? Es geht hauptsächlich um MSG-Box und Statusbar-Meldungen in 2 Sprachen. Der Idealweg: keine 2 Entwicklungen produzieren wegen der Pflege. Wie kann man effizient mit wenig Performance-Einbussen so etwas managen? Habe notfalls auch keine Probleme getrennte Wege zu gehen (wie das klingt?).
Tschüss!
Franz D.

  

Betrifft: AW: Mehrsprachrigkeit von: JDommi
Geschrieben am: 23.01.2010 22:15:45

Übergebe doch einfach alle Texte an globale Variablen. Diese werden je nach Angabe der Sprache diesen Variablen zugewiesen.

if Sprache="deutsch" then
...txt1="Hallo"
...txt2="Welt"
else
...txt1="Hello"
...txt2="world"
end if

Wenn die Meldungen nicht zu viele sind, dann ist das die einfachste Möglichkeit.


  

Betrifft: AW: Mehrsprachrigkeit von: Franz D.
Geschrieben am: 23.01.2010 22:23:52

Danke schön JDommi.
Habe natürlich an "Select case.." und "If...then" auch gedacht. Logisch! Aber es ist schon eine Menge Holz. Vielleicht gibt es bereits die ultimative Lösung die wir beide (noch) nicht kennen.
Tschüss!
Franz D.


  

Betrifft: Bei udFktt wäre das einfach,... von: Luc:-?
Geschrieben am: 23.01.2010 22:23:50

...Franz,
indem man ein entsprechendes Argument angibt oder, falls Textargg übergeben wdn müssen, deren Sprache zur Grundlage der Sprachversion macht. Bei dir geht's aber wohl eher um Subroutinen — da empfehle ich 2 unterschiedl (Kurz-)Aufrufprozeduren für die HptProz (alternativ: nur eine Rufproz mit Übergabe-Sprachparameter=True und bei der Hptproz den Parameter dann als Optional und Variant deklarieren, damit die Proz auch angezeigt wird), die dann jeweils den entsprechenden Sprachwahlparameter (Boolean reicht hier) übergeben. Die Performance wird kaum darunter leiden, wenn sich da was bei jeder Textausgabe gabelt. Du willst ja wohl keine automatische Übersetzung pgmieren... ;-)
Gruß Luc :-?


  

Betrifft: AW: Bei udFktt wäre das einfach,... von: Franz D.
Geschrieben am: 23.01.2010 22:37:50

Hallo Luc,
kann ich dir zumuten mir ein kleines Beispiel zu liefern?
Gruß
Franz D.


  

Betrifft: Das ist wie ein Haus mit 2 Eingängen,... von: Luc:-?
Geschrieben am: 24.01.2010 13:07:55

...Franz,
nicht nur ein uraltes Architektur-, sondern auch ein altes Pgmierprinzip. Gab's schon in Großrechnersprachen wie einer der ersten problemorientierten — PL/1.
Das ist eine ganz einfache Sache, während Nepumuks „kleines Bsp“ ja schon eher ein Analogon zu dem Komfort ist, den eine Website bieten sollte... ;-)

Sub Pipapo_Deutsch()
    Call Pipapo_English(True)
End Sub

Sub Pipapo_English(Optional ByVal LgPar)
    Dim LgVar As Boolean
    If Not IsMissing(LgPar) Then LgVar = CBool(LgPar)
    ...
    MsgBox IIf(LgVar, "Hallo, Herr Franz", "Hello, Mr Franz") & "!"
    ...
End Sub
Gruß+schöSo, Luc :-?


  

Betrifft: AW: Mehrsprachrigkeit von: Nepumuk
Geschrieben am: 23.01.2010 23:38:42

Hallo Franz,

ein kleines Beispiel: https://www.herber.de/bbs/user/67441.xls

Gruß
Nepumuk


  

Betrifft: AW: Mehrsprachrigkeit von: Franz D.
Geschrieben am: 23.01.2010 23:55:37

Danke schön Nepumuk.
An einer Kombination mit Arrays habe ich nicht gedacht. Muss mich endlich mit der Materie befassen.
Gute Nacht.
Franz D.


  

Betrifft: AW: Mehrsprachrigkeit von: Nepumuk
Geschrieben am: 24.01.2010 00:08:34

Hallo Franz,

wo siehst du da ein Array? Ich beziehe mich auf einen Namen.

Gruß
Nepumuk


  

Betrifft: AW: Mehrsprachrigkeit von: Franz D.
Geschrieben am: 24.01.2010 11:23:33

Hallo Nepumuk,
Sehr raffiniert ausgetüffelt. Der Kern liegt natürlich auf den Namen "Language" und nicht im folgenden Array: "ComboBox1.List = Array("Deutsch", "English")". Kurz vor Mitternacht sieht man den Wald nicht mehr.
Tschüss!
Franz D.


  

Betrifft: ein anderer Weg mit Wortliste von: Jörg-HH
Geschrieben am: 25.01.2010 14:39:25

Hallo Franz

ich habe für dies Problem einen ganz anderen Weg gewählt: In einem der Blätter steht eine Wörterliste, die nach unten 65einhalbtausend Vokabeln aufnimmt und nach rechts für 255 Sprachen ausreicht. In der ersten Spalte steht eine Formel, die die Vokabelspalte abgreift, die ich irgendwo per Dropdown einstelle.

Jede der Zellen in Spalte A kriegt einen sinnigen Namen.

Auf diese Weise können erstens sämtliche Texte und Formeln in allen Blättern bequem geändert werden, wenn die Formel statt Texten einen Verweis auf die benamsten Zellen enthalten, und außerdem brauchst du in VBA nur den Zellnamen.Value der Spalte A anzusprechen und hast dann auch die passende Sprache im beabsichtigten Text. Darüber hinaus ist die Liste ohne Probleme um weitere Sprachen zu ergänzen. Die Formel ist dafür gedacht, in dem Fall eine Spalte einzuschieben, es geht aber auch anders.

https://www.herber.de/bbs/user/67470.xls

Kannst du damit was anfangen?

VG Jörg


  

Betrifft: Dann braucht er trotzdem noch eine... von: Luc:-?
Geschrieben am: 25.01.2010 16:57:03

...Parameterübergabe an die HptRoutine, Jörg... ;-)
Gruß Luc :-?


  

Betrifft: AW:noch ein Weg mit Choose(x,"1","2","3") von: Franz D.
Geschrieben am: 26.01.2010 18:39:56

Hallo Jörg!
"Kannst du damit was anfangen?"
AW: in meiner Applikation, nein. Da ich (wie es Luc geschrieben hat) eine reine VBA-Lösung benötige.
Trotzdem landet deine pfiffige Lösung in meinem EXCEL-Archiv damit ich die Funktionsweise von INDIREKT und VERGLEICH in gegebener Zeit studieren kann. Danke schön dafür.
Mittlerweile wurde mir diese Lösung angeboten die ich hier gerne weiter gebe:

Sub In_drei_Sprachen()
Dim byteLand As Byte
byteLand = 2    'dynamisch festgelen mittels Listbox
Application.StatusBar = Choose(byteLand, "Bitte eine Bezeichnung eingeben", "Please enter a  _
expression", "Veuillez indiquer un texte explicatif")
MsgBox Choose(byteLand, "Bitte eine Bezeichnung eingeben", "Please enter a expression", " _
Veuillez indiquer un titre")
End Sub

Danke auch an Luc (habe die Nachricht heute im Büro gelesen).
Tschüss!
Franz D.


  

Betrifft: ..paar kleine Fehler... von: Jörg-HH
Geschrieben am: 27.01.2010 11:30:04

Hi Franz

wenn ich das richtig verstehe (bei VBA=bescheiden ja nicht immer gewährleistet ;-)) denke ich), gäbe es ja eine Menge Schreibarbeit im VBA-Code, wenn mal eine Sprache hinzukommt, oder?

Ansosnten - ich weiß ja nicht, ob das Beispiel da oben auch so zum Einsatz kommt, aber...:

Englisch:
vor expression steht nicht a, sondern an

Französisch:
dt Bezeichnung / engl expression / frz ... text explicatif ist nicht das französische Wort für Bezeichnung, sonder heißt soviel wie Erläuterung.

dt eingeben / engl enter / frz ...indiquer ist nicht eingeben, das wäre entrer

VG Jörg


  

Betrifft: AW: Sind das Fehler lieber Jörg?.... von: Franz D.
Geschrieben am: 27.01.2010 19:26:28

... weil ich aus dem Elsaß komme.
Danke und Tschüss!
Franz D.


  

Betrifft: ...naja - Elsaß ist natürlich... von: Jörg-HH
Geschrieben am: 29.01.2010 11:44:01

...ein unschlagbares Argument, Franz - Ich geb glatt mein Französisch-Abi zurück :-) Hatte mich, weil ich in Französisch nicht so sicher bin wie in Englisch, auch vor meiner Bemerkung nochmal in Sprachforen umgesehen, dort aber eigentlich nur Bestätigung für meine Annahme gefunden.

Gibt es da vielleicht mundartliche Unterschiede? Wir Nordlichter sagen ja auch "es gibt", wo man im Süden "es hat" sagt o.ä. Wäre für 'ne kleine Belehrung dankbar...

Viele Grüße - Jörg


  

Betrifft: "Es gibt..." ist HOCHDT, "es hat..." Dialekt! von: Luc:-?
Geschrieben am: 29.01.2010 13:15:26

Nicht vergessen! Nicht der Norden liegt hochsprachlich schief, sondern der Süden, weil er ja auch nicht an der Herausbildung der frühen Hochsprache beteiligt war (Stichworte: Luther & Sachsen, Preußen), was er jetzt wohl nachzuholen versucht und dabei mit „Denglisch“ konkurriert... ;-?
Hochdeutsch ist eigentlich preußisch-norddeutsch ausgesprochenes Sächsisch, also mitteldeutsch wie Hessisch und mittelfränkisch.
Gruß Luc :-?


  

Betrifft: Bitte sehr! Viel Spaß! Gruß owT von: Luc:-?
Geschrieben am: 28.01.2010 02:04:38

:-?