Seite 1 von 1
Only a literal string can be put after IncludeBinary
Verfasst: 27.09.2006 09:14
von Eckhard.S
Code: Alles auswählen
Global sprachversion.s="de" ; de = Deutsch, nl = Niederlande usw...
hilfetxt.s = "./"+sprachversion.s+"-hilfe.txt"
IncludeBinary hilfetxt.s
Ergibt "Only a literal string can be put after IncludeBinary". Wie lässt sich machen?
Verfasst: 27.09.2006 09:50
von NicTheQuick
Wozu brauchst du Variablen hinter IncludeBinary? Du kannst doch nicht
während dem Programmverlauf die Variable ändern und mal schnell eine
anderen Datei includieren. Das geht also nur mit Konstanten.
Code: Alles auswählen
#sprachversion = "de" ; de = Deutsch, nl = Niederlande usw...
#hilfetxt = "./" + #sprachversion + "-hilfe.txt"
IncludeBinary #hilfetxt
Willst du allerdings, dass man in einem Programm die Sprache umstellen
kann, dann würde ich entweder gleich auf IncludeBinary verzichten und die
entsprechenden Sprachdateien mit ReadFile() oder ähnlichem Einlesen oder
gleich alle Sprachdateien includieren und immer die entsprechende Auslesen.
Verfasst: 27.09.2006 17:14
von Eckhard.S
Ja, danke! Das war's!
Das Übersetzungs-Programm soll später in vielen Sprachen verfügbar werden, die alle seperat kompiliert werden, d.h. es gibt ein de-programm.exe, ein nl-programm.exe (Deutsch und Niederländisch) usw.
Damit ich es nicht überall umstellen muss, brauche ich die Kontante.
Jetzt weiß ich auch, wofür man eine Konstante benutzt. Ich dachte immer, dac kann man doch auch mit einer Variablen machen, die man einfach nicht mehr ändert

Verfasst: 27.09.2006 17:27
von bobobo
kennste Macros ? Damit könnte das auch gehen
Verfasst: 27.09.2006 17:58
von Eckhard.S
Macros kenne ich noch nicht.
Bisher mache ich es so:
de-menue.txt hat den Inhalt
Code: Alles auswählen
aussprache$ = "Aussprache"
deutsch$ = "Deutsch"
zweisprachig$ = "Zweisprachig"
datei$ = "Datei"
neu$ = "Neu"
oeffnen$ = "Öffnen"
speichern$ = "Speichern"
beenden$ = "Beenden"
...
eo-menue.txt (Esperanto hat den Inhalt
Code: Alles auswählen
aussprache$ = "Prononco"
deutsch$ = "Germana Lingvo"
zweisprachig$ = "Dulingva"
datei$ = "Dosiero"
neu$ = "Nova"
oeffnen$ = "Malfermi"
speichern$ = "Surdiskigi"
beenden$ = "Fini"
Je nach Sprachversion lade ich mir die Sprache herein, die ich benötige. Es könnten noch weitere Sprachen hinzukommen, aber immer nur eine Sprachdatei wird benötigt (also bisher kein Umschalten). Falls es eine geschicktere Lösung gibt, bin ich gerne dafür zu haben.
Verfasst: 27.09.2006 23:55
von NicTheQuick
Die geschicktere Variante wäre folgende:
Alle Texte durchnummerieren:
max = 8
1 = "Aussprache"
2 = "Deutsch"
3 = "Zweisprachig"
4 = "Datei"
5 = "Neu"
6 = "Öffnen"
7 = "Speichern"
8 = "Beenden"
So legst du für jede Sprache deine Textdatei an und liest die Texte dann in
ein Array:
Code: Alles auswählen
Global Dim Language.s(0)
Procedure ReadLanguage(File.s)
Protected FileID.l, max.l, a.l
If OpenPreferences(File)
max = ReadPreferenceLong("max", 0)
Redim Language.s(max)
For a = 1 To max
Language(a) = ReadPreferenceString(Str(a), "")
Next
ClosePreferences()
EndIf
EndProcedure
ReadLanguage("Deutsch.txt")
Jetzt musst du nur noch das Array mit dem entsprechenden Index
benutzen und überall da einfügen, wo du die Texte brauchst.