AmiBlitz³
phrasebook.include : Wie verwenden ? - Druckversion

+- AmiBlitz³ (https://amiblitz.de/community)
+-- Forum: AmiBlitz³ (https://amiblitz.de/community/forum-3.html)
+--- Forum: Includes (https://amiblitz.de/community/forum-18.html)
+--- Thema: phrasebook.include : Wie verwenden ? (/thread-35.html)



phrasebook.include : Wie verwenden ? - Blackbird - 21.11.2013

Hallo,

ich habe zwar schon in AmiBlitz3 selbst gesehen das man da ausser dem einbinden nur ein !TRANS_INIT{} machen muß,
und dann den zu übersetzenden Text nur mit !TRANS{"blabla"}, was auch funktioniert, aber wie erzeugt man denn den die
Phrasebook übersetzungsdatei ? Gibts da ein extra Befehl, oder ein Tool ?


Re: phrasebook.include : Wie verwenden ? - Der Wanderer - 21.11.2013

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"
"LocaleTonguehraseBooks/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.


Re: phrasebook.include : Wie verwenden ? - Blackbird - 21.11.2013

nur damit ich das richtig verstehe, du machst das im Programmcode selbst mit NPrint !TRANS{} ?

Aber wer legt denn in Locale/Phrasebooks/ die Dateien an ?

wenn ich das so im Source angebe passiert eigentlich gar nix


Re: phrasebook.include : Wie verwenden ? - Der Wanderer - 21.11.2013

Wenn du dein Program lokalisieren willst, das bereits voll mit Englishen (oder auch deutschen) String ist, dann umklammerst du alles was du uebersetzen willst mit TRANS.
Dann legtst du eine Textdatei an wo du alle diese Strings au der linken Seite auffuehrst und auf der rechtend Seite die Uebersetzung.

Die linke Seite kannst du dir automatisch erzeugen, das ist aber momentan ausgeschaltet.

PS: NTUI wird ein anderes Lokalisierungssystem erhalten. Du solltest also jetzt nicht hergehen und alle Buttons etc. per SetAttr auf eine andere Sprache "umpatchen". Das wird spaeter sehr viel eleganter gehen. Musst leider wie immer noch warten, oder selbst anpacken...


Re: phrasebook.include : Wie verwenden ? - Blackbird - 21.11.2013

Zitat:Die linke Seite kannst du dir automatisch erzeugen, das ist aber momentan ausgeschaltet.

Ah ! deswegen bekomme ich da nix automatisch...

Ok...Na wenn Ntui was eigenes bekommt ist auch gut...dann brauch ich jetzt auch nicht mit der !Transe rummachen Big Grin 8-)


Re: phrasebook.include : Wie verwenden ? - Der Wanderer - 21.11.2013

Lokalisierung solltest so spaet wie moeglich machen, sonst wird dein Workflow immer wieder unterbrochen weil du Strings uebersetzen musst. Wenn deine Zielgruppe sowieso Englisch kann, dann brauchst du das erstmal nicht.
Entwickler sollten alle Englisch koennen.