Hallo Tom,
natürlich hast Du Recht, wir reden über eine Konstante, nicht über eine Variable.
Aber leider funktioniert Dein Beispiel auch nicht. Immer noch die gleiche Rückmeldung "Unknown variable".
Vielleicht sollte ich meine Vorgehensweise etwas präsizieren: Ich habe die ganzen #defines und Übersetzungen in verschiedene Dateien geschrieben, weil das wesentlich übersichtlicher ist (und mir eine Menge scrollen erspart). Das sieht dann so aus:
programm.arc hat geschrieben:LANGUAGE = "de"
#include "Deutsch.ch"
LANGUAGE = "en-us"
#include "English.ch"
defines.ch hat geschrieben:#define LANG_wasauchimmer = 123456
Alle Konstanten, die die Sprache betreffen, haben ein "LANG_" davor.
deutsch.ch hat geschrieben:123456 = "Was auch immer"
englisch.ch hat geschrieben:123456 = "What ever"
Zusätzlich habe ich eine Funktion, die mir den gewünschten String zurück gibt:
Code: Alles auswählen
FUNCTION langText(cResource, cSprache)
IF cSprache == "Deutsch"
cSprache := "de"
ELSEIF cSprache == "English"
cSprache := "en-us"
ENDIF
RETURN Loadresource(cResource, , RES_STRING, IIf(cSprache == NIL, MEMVAR->gcSprache, cSprache))
Sinn dieser Sache ist es, das ich wahlweise die global eingestellte Sprache abfrage, oder eine für genau diese Ausgabe gewünschte. Und das ganze ist ausgelagert, damit ich nicht an hunderten Stellen das ganze wieder und wieder coden muß.
Normalerweise arbeite ich mit der Angabe der Konstanten, die dann korrekt in LoadResource als der numerische Wert verarbeitet werden und mir den sprachlich passenden String zurück. Jetzt habe ich aber gerade die Situation, das ich aus einer API Rückgaben erhalte, die ich gerne in einer Schleife abarbeiten möchte. Ohne für jede Konstante eine eigene IF-Abfrage zu schreiben. Statt dessen nehme ich die Strings in der Rückgabe, und übergebe die an meine Funktion als langText("LANG_" + cString). Und genau das funktioniert halt leider nicht.
Jan