Multilanguage Programm, wann und wie?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Multilanguage Programm, wann und wie?

Beitrag von Ynnus »

Hallöchen,

ich beschäftige mich derzeit mit dem Thema, ein Programm mehrsprachig zu machen. Dabei stellt sich die Frage, wann man am besten damit anfängt. Und wie genau das am besten gemacht wird. Also geplant ist eine Auswahl von 2 oder mehreren Sprachen innerhalb des Programmes. Ich dachte da so an eine Linked List in welche die Sprach-Strings der aktuellen Sprache eingeladen werden. Dann wird beim Erstellen der Gadgets einfach das jeweilige Element im der LL angesprochen und der Text wird dargestellt.
Die Frage ist nun, ist dies eine Sinnvolle Methode oder sollte man dafür lieber ein Array verwenden? Oder könnte man es noch ganz anders machen?

Und wann sollte man damit beginnen? Mein Projekt ist zwar schon recht weit fortgeschritten, existiert schon ca. 7 Monate, allerdings ändern sich die Gadgets und die Fenster schon noch teilsweise mal wieder. Ist es da überhaupt sinnvoll, eine 2Sprachige Einstellung einzubauen, solange noch nicht alles nahezu fertig ist?
Wie sind da eure Erfahrungen mit mehrsprachigen Programmen?

mfg.

Sunny
orange-blue
Beiträge: 556
Registriert: 04.09.2004 22:23
Kontaktdaten:

Beitrag von orange-blue »

Ich würde alles in ein array speichern, da du sowieso nur eine bestimmte anzahl an texten hast, und alle texte ind eine Textdatei speichern, so kannst du auch noch mehr Sprachen einfügen. Dadurch kannst auch konstanten anlegen die den Index des Textes speichern, das sorg auf jeden fall für mehr Übersicht.
Anfangen würde ich erst zum Schluß damit.
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Mit nem Array mach ich das auch in meinem 3Sprachigen Mesheditor. Funzt super.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

Nimm ein 1-Dimensionales Array, wo jeder Satz vorkommt.

Statt

Code: Alles auswählen

Textgadget(#Hallo,0,0,20,20,"Hallo")
nimmst du einfach

Code: Alles auswählen

Textgadget(#hallo,0,0,20,20,language$(0));"Hallo"
Fülle das Array mit der gewünschten Sprachdatei (am besten eine Ascii-Datei. Jede Zeile ein Language$()). So kannst du beliebig viele Sprachdateien ausliefern. Wechselt der Benutzer die Sprache, einfach das Language$() Array neu einlesen.

Tip: Wenn du sowas brauchst:

Code: Alles auswählen

Datei XYZ exestiert schon
dann in der Language-Datei:

Code: Alles auswählen

Datei %1 exestiert schon
Und bei bedarf das %1 mit ReplaceString() ersetzen.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Danke für die Tipps... Öhm, GPI, wann hast du denn deine Sprachunterstütung eingebaut? Irgendwann mittendrinne, oder erst später? Irgendwann müsste ich auch mal damit anfangen, frag mich nur wann der richtige Zeitpunkt dafür ist
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

Von anfang an eingeplant. Unter anderen, weil IDE das auch so macht.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
CNESM
Beiträge: 311
Registriert: 29.08.2004 15:16
Kontaktdaten:

Beitrag von CNESM »

Hi,

ich hab das mit .ini Dateien gemacht, Macht es einfacher neue Sprachdateien einzufügen und bestehende zu Verbessern.

Einfach ne.ini erstellen, folgende Texte reinschreiben:

[Programmname]
Text.01=Herzlich Willkommen
Text.02=DADADADADADAD
....

und dann mit deinen Programm und der entsprechenden API [Programmname] Text.01 ansprechen.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

Ich habs ähnlich gemacht.

allerdings so:
Ich lese eine Zeile ein.
Wenn sie mit ";" beginnt ist es ein kommentar und wird ignoriert.
ansonsten wird nach einen ":" gesucht. Links davon steht eine Nummer (mittels VAL ausgewertet) und rechts davon der Text.
bzw.:

Code: Alles auswählen

12:Abbruch
Wenn man sein Programm erweitert, erweitert man bsw. die Menüs. Die neuen Sprachfetzen erhalten ja höhere Nummern. So kann man den neuen Fetzen logisch in der Sprachdatei sortieren und nicht nach erstellung.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Antworten