Das funktioniert so:
Im Program:
[ab3]XINCLUDE "translation.include.bb2"
...
!TRANS_INIT{"Copacabana"}
NPrint !TRANS{"Awesome!"}
End[/ab3]
Das TRANS_INIT sucht nach
"PROGDIR:Copacabana.deutsch"
"Locale/PhraseBooks/Copacabana.deutsch"
"Locale
hraseBooks/Copacabana.deutsch"
Das ist eine Textdatei in folgendem Format:
Code:
# Ich bin ein Kommentar
"Awesome!" "Sehr schön!"
"Not good..." "Nicht gut..."
"ORIGINAL" "TRANSLATION"
Hochkommas sind nur notwendig, wenn es der String SPACEs enthaelt.
Es legt eine temporaere Datei "Copacabana.deutsch.bin" an, kann dir aber egal sein.
Der Vorteil gegenueber einem Catalog ist, man braucht kein Extra Tool um die Catalog Datei zu erstellen, und man hat Klartext im Sourcecode.
Der Nachteil ist, dass die Uebersetzung nicht mehr gefunden wird wenn man den Text aendert. d.h. aendere ich "Not good" in "Not so good", dann wird "Nicht gut" nicht mehr gefunden.
Aenderungen in der Punktuation oder Casing ist erlaubt.
Man kann es aber auch wie ein Catalog benutzen und statt Klartext IDs vergeben, und ein englisches Phrasebook erstellen.
also z.B.
Copacabana.english:
Code:
# I am a comment
1 "Awesome!"
2 "Not good..."
Copacabana.deutsch:
Code:
# Ich bin ein Kommentar
1 "Sehr schön!"
2 "Nicht gut..."
Das Program sieht dann aber so aus:
[ab3]XINCLUDE "translation.include.bb2"
...
!TRANS_INIT{"Copacabana"}
NPrint !TRANS{"1"}
End[/ab3]
Ein Zwischending:
Code:
# Ich bin ein Kommentar
message_good "Sehr schön!"
message_bad "Nicht gut..."
[ab3]NPrint !TRANS{"message_good"}[/ab3]
Ist letztendlich Geschmackssache. Ich hatte das nur gemacht weil ich Probleme hatte Catalogs zu erstellen und weil man ein vorhandenes Program dadurch schneller localisieren kann, weil man lediglich !TRANS um jeden String Literal schreibt. Man kann sich uebrigends auch alle Strings rausschreiben lassen, dann muss man die nicht muehsam rauspuhlen.