006
11.08.2005, 13:27 Uhr
RHBaum
|
Wo holst du deine daten fuer die webseite her ? Wenn aus ner DB, dann kannst deine Texte/Fehlermeldungen da auch einpflegen ...
Zitat: |
und ich möchte eigentlich auch das jeder die texte ändern kann öhne etwas zu kompilieren
|
entweder du trennst statische (von dir vorgegeb, Titel, Fehlermeldungen, GUI Beschriftungen) Texte von den dynamischen(Das was der Gast in dein Gaestebuch tippert) ... weil den text von Gast willst ja nich unbedingt uebersetzen oder ?
Oder soll der user wirklich in der Lage sein, von generierten Seiten die Textelemente , welche mehrsprachig vorliegen, aendern zu koennen ?
Zitat: |
mir wäre ja lieb etwas in der art zu haben
(PSEUDOCODE)
lege 300 strings(oder änliches) an
initialisiere i=0 dann eine schleife mit getline
dann überprüfen ob es sich um gültigen zeichenfoleg handelt (z.b. 001= fehler beim seden) packe den text in string nummer i erhöhe i um eins
|
Sowas in der Art muesste man sich unter windows erst mal selber bauen (oder googeln, ob da wer ne lib / klassen schon hat)
Waer auch kein thema, ich wuerd es so schreiben, das ich ne TextTranslator klasse habe, die nur 2 Funktionen nach aussen geben braucht ... 1. man setzt eine Laender/Sprache ID (nimmt man meist die Vorwahl fuer, oder ne internationale kennung , sowas wie "de") 2. man holt sich den text mit ner ID. Existiert die ID nich, gibts ne STandard Fehlermeldung (in Englisch, in der Art "String for ID 0815 not faund!" ) gibt es den string fuer ne spezielle ID nicht, dann schaltet der auf die mainsprache (englisch) zurueck ....
Implementieren koennt man das, in dem man die ganzen strings in files (streams) haelt ... und gepuffert einliesst (Cache map) ... man sollt immer das main-Sprachfile haben ... (englisch) und ueber das Setzen der ALender/Sprach ID ein Sprachversion-spezifisches File estzen koennen ("translation_de.txt" z.B.) dort sucht er nach der ID, wenn er die nicht findet, sucht er im main-Sprachfile, findet er es da, macht er nen eintrag in ner Missing (MissingTranslation_de.txt z.B.) bzw schreibt nur die ID da rein, und gibt den englischen text zrueck ... findet er es auch da nich, macht er nen eintrag in nem generellen Missing file (MissingIDs.txt) ...
So hasst immer den ueberblick, was mit deinen uebersetzungen los ist, in dem nur die textfiles auswerten brauchst ...
Sowas in der Art gibt es fuer windows glaub ich noch nicht (Such ma bei google) . Windows / MS finden ihre ressourcen toll ... das funktioniert statisch und auch dynamisch (dll) wie oben beschrieben. Das wer dlls, Microsofts innovatives Zugpferd fuer windows (16 und 32 bit), nicht kann / mag, da ham die glaub ich wenig verstaendniss fuer :-) Wenn du weitergehend programmieren willst, kommst frueher oder spaeter am konzept der Dll's (so's unter Linux) und deren vorteile nicht vorbei (plugin konzept, z.b. auch fuer sprachen, binaerunabhaengige module fuern besseren verteilungs / updateprozess ) bovor da eigenes zeug baust, solltest dich vielleicht mal damit beschaeftigen, irgendwann brauchst es soweiso .... nich das jetzt was schreibst, und spaeter wuerdest sowieso wieder alles anders machen.
Andere Biblotheken unterstuetzen mehrsprachigkeit auf anderer Ebene .... QT macht es zum beispiel statisch und dynamsich. Man baut ne Exe und schreibt alle Texte in nen Makro .... QString test = tr("Mytext"); nun laesst man nen prozessor drueber laufen, der erzeugt nen translation file .... das translation file laesst man uebersetzen ... und erzeugt daraus auch spezielle files. Diese kann man dann statisch zum programm linken lassen, sogar mehrsprachig durch mehrere Versionen, wird das binary dann allerdings recht gross. oder dynamisch uber ne funktion (LoadTranslation oder so) laden, die die Texte dann aus dem spezifizieren file anzieht .... das tr makro wird je nach (compiler einstellung fuer dynamsche oder statische aufloesung) anders umgesetzt .... du brauchst fuer deine texte dann eigene files.
KDE bietet zum beispiel programmuebergreifende uebersetzungstabellen an ... (i18n schnittstelle) , gaengige begriffe wie Datei, laden speichern ... etc sind alle schon uebersetzt. brauchst nur noch drauf zuzugreifen ... und deine Spracheinstellung kannst global fuern ganzen desktop (KDE) festlegen ...
Gibt also verschiedene moeglichkeiten ...
Ciao ... Dieser Post wurde am 11.08.2005 um 13:31 Uhr von RHBaum editiert. |