Stringtable.xml

Anhand der Stringtable könnt ihr eure Missionen mehrsprachig übersetzen und so der internationalen Community eure Szenarien anbieten. Seit ArmA2 wird die Stringtable nicht mehr wie üblich als Stringtable.csv geschrieben, sondern als Stringtable.xml. Das mag den einen oder anderen etwas kompliziert erscheinen, aber nach eurer ersten Stringtable habt ihr dies allemal im Griff. Vor allem die Arbeit mit den Tags. (<Tag/>)

Als xml ist so eine Stringtable nicht nur übersichtlicher, sondern auch einfacher zu schreiben. Alle Texte die in einer Mission geschrieben wurden, werden in der Stringtable.xml als sogenannten Key hinterlegt und im Spiel mit dem Localize-Befehl abgerufen.




Das geht folgendermasen:

Statt dass Du bei den Funksprüchen, Actionmenueinträgen, Texten oder oder dergleichen immer den deutschen Text eintippst, schreibst du dort einfach nur einen "SDtring-Namen" rein. ArmA2 sucht dann in der stringtable.xml nach dem entsprechendem Key und lokalisiert dann den Text in der entsprechenden Sprache, der in der xml von Dir definiert wurde.


Lass uns eine Stringtable.xml schreiben:
Du nimmst den normalen Texteditor und erstellst eine Datei und speicherst sie als stringtable.xml. Als allererste Zeilen in einer xml schreiben wir folgendes rein. Wie ihr seht wird hier schon einmal die Enkodierung zu UTF-8 ausgesprochen. Somit habt ihr dieses nervige Umlaute-Problem nicht mehr.

<?xml version="1.0" encoding="utf-8" ?>
<Project name="Falling Down">
<Package name="AMS Kampagne">
<Container name="Missions Texte">

Die Angaben "Project name", "Package name" und "Container name" haben her keine wichtige Rolle und dienen eher der Vollständigkeit. Unser Augenmerk gilt der sogenannten "Key ID" und den Tags, welche für die jeweilige Sprachzuordnung verantwortlich sind. Über den "Key ID" wird unsere entsprechende Textzeile lokalisiert und in den <German> bzw. <English> Tags stehen die entsprechenden Übersetzungen eurer Missions-Texte.

Wir schreiben immer English als erste Sprache, so wird ArmA2 den englischen Text ausgeben, wenn ein Spieler der deine Mission spielt, zum Beispiel eine spanische Version von ArmA2 hat. Da englisch nunmal eine globale Sprache ist, versteht ein Spanier oder Franzose eher englisch als deutsch. Du kannst es natürlich noch um Spanish, French, Polish usw. erweitern.

In den folgenden Zeilen schreiben wir nun die nötigen Stringnamen für jeden zu übersetzenden Text rein. Alle Stringnamen werden später in xml als KEY-ID ausgegeben. Gewöhnt euch daher eine klare Struktur im Umgang mit Stringnamen an, so behaltet ihr den Überblick und könnt so leichter eine Stringtable für eure nächste Mission übernehmen. Hier mal Beispiele für Stringnamen wie ich sie zum Beispiel nutze. Ihr könnt natürlich beliebige Namen oder Buchstaben eingeben, so wie ihr am besten zurecht kommt.

STR_DIA: Diary Einträge (Notizen im Briefing)
STR_TSK: Task Einträge (Objectives im Briefing)
STR_HINT: Hint-Texte
STR_CUT: Cut-Texte
STR_RADIO: Funktexte
STR_WPX: Texte oder Namen in Wegpunkten
STR_TRX: Texte oder Namen in Auslösern
STR_MARK: Texte oder Namen in Markern
STR_OVER: Text im Overview
STR_DEBR: Text im Debriefing


Und dann folgt die Übersetzung des Textes in die unterstützten Sprachen. Sehen wir uns einen Auszug einer stringtable.xml etwas genauer an.

<Key ID="str_cut_01">
<English>Horatio, glad to find you. I thought you where dead!</English>
<German>Horatio, bin ich froh dich gefunden zu haben. Dachte du wärst tot!</German>

</Key>

<Key ID="str_mark_01">
<English>Battle zone</English>
<German>Kampfgebiert</German>
</Key>

<Key ID="str_hint_03">
<English>Horatio is dead!</English>
<German>Horatio ist tot!</German>
</Key>


Somit tragt ihr alles an Texten aus eurer Mission ein und übersetzt sie entsprechend. Achtet darauf, dass ihr bei jedem Tag auch ein Endtag setzt. (< Dein Text />) Denn sonst wird der entsprechende Text nicht übersetzt. Besser gesagt, er wird nicht im Spiel angezeigt.

Wie ihr jetzt einen Text in einem Script, Wegpunkt, Auslöser oder Marker in Zusammenarbeit mit der xml aufruft, zeige ich euch nun an diesen Beispielen.


Einen Cuttext aufrufen:

Statt...

CutText ["Alle Panzer wurden zerstört","Plain Down"];

 

Jetzt...

CutText [localize "STR_CUT_05","Plain Down"];

 

Hier wird ArmA2 in der xml den Key Eintrag STR_CUT_05 suchen und lokalisieren, dann den Text entsprechend übersetzen und ausgeben. Ganz einfach. ;-)



Hinweis: Die Zahlen z.B bei STR_CUT_07 bezieht sich auf einen Durchnummerierung der Cuttexte in der xml. In diesem Beispiel also der 7te.



Einen Hint-Text aufrufen:

Statt...

hint "Sie haben das erste Ziel erreicht";

 

Jetzt...

hint Localize "STR_HINT_07";

 

 

 

Einen Funktext aufrufen:

Statt...

Player sidechat "Bitten um Unterstützung. Wir werden beschossen";

 

Jetzt...

Player sidechat Localize "STR_RADIO_03";

oder...

Player groupchat Localize "STR_RADIO_02";

oder...

[west,"HQ"] sidechat Localize "STR_RADIO_04";

 

 

 

Einen Text im Auslöser, Wegpunkt oder Marker aufrufen:

In diesem Beispiel gebt ihr also in einem Auslöser statt dem Text einfach den Aufruf zum entsprechendem Key in der XML. Hier also der STR_TRX_03, der mit @STR_TRX_03 aufgerufen wird.

 

Statt...

Die Fahrzeuge nähern sich eurer Position!;

 

Jetzt...

@STR_TRX_03

 

oder...

@STR_WPX_02

oder...

@STR_MARK_01

 

Einen onLoadMission Text aufrufen:

In der Description.ext eurer Mission könnt ihr einen sogenannten onLoadMission Text angeben, welcher beim Laden der Mission im Spiel eingeblendet wird. Oder einen onLoadIntro Text, welcher beim Laden des Missionsintros eingeblendet wird. (Einleitung)

Hier ein Beispiel einer Mission aus meiner Mission.

 

Statt...

onLoadMission = D E I N T E X T;

 

jetzt...

onLoadMission = @STR_M01_onLoad;

 

in der XML dann...

<Key ID="STR_M01_onLoad">
<German>Search At War</German>
<English>Search At War</English>
</Key>


 

 

Einen Actionmenü Eintrag aufrufen:

Statt...

player addAction ["Rucksack öffnen","scriptname.sqs"];

jetzt...

player addAction [Localize "STR_PARA_01","scriptname.sqs"];

 

 

Einen Diary-und Task Eintrag im Briefing:

Statt...

_diary1 = player createDiaryRecord ["Diary", ["Versorgung", "Wir können euch während des Einsatzes auch aus der Luft versorgen. Funkt einfach Team Hotel an, ein Versorgungs-Heli wird euch Waffen, Munition und einen UAZ an der von euch vorgegebenen Koordinate abwerfen."]];


jetzt...

_diary1 = player createDiaryRecord ["Diary", [ localize "STR_DIA_01", localize "STR_DIA_01"]];

 

Statt...

task3 = player createSimpleTask ["Hauptziel: Tristian töten"];

task3 setSimpleTaskDescription ["Wir wissen dass sich Tristian irgendwo in der Ortschaft <marker name=""Stadt"">Myshkino</marker> oder in dem versteckten <marker name=""Lager"">Nachschublager</marker> aufhält. Finden und töten sie ihn!","Hauptziel: Tristian töten","Hauptziel: Tristian töten"];


jetzt...

task3 = player createSimpleTask [Localize "STR_TSK_03"];

task3 setSimpleTaskDescription [Localize "STR_TSK_033", Localize "STR_TSK_03", Localize "STR_TSK_03"];

 

 

 

Overview.html

Etwas anders verhält sich die Lokalisierung des Textes der Ovierview.html. Hier mal ein kleines Beispiel.

 

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<meta name="GENERATOR" content="VB">

<title>Overview</title>
</head>

<body bgcolor="#FFFFFF">
<p align="center"><img src="overview_C2_ca.paa" width="240" height="121"></p>

<p>
<localized id="STR_OVER_01"/>
<br>

</p>

</body>
</html>

 

 


Briefing.html (Debriefing)

Das gleiche Schema verhält sich auch in der Briefing.html.

 

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">

<title>Title</title>
</head>

<body bgcolor="#FFFFFF">
<! -----DEBRIEFING----->
<hr>
<br>
<h2><a name="Debriefing:End1"><localized id="STR_DEBR_01"/></a></h2>
<br>
<p>
<! ------KIA------>
<localized id="STR_DEBR_011"/>
</p>
<br>

<hr>
<br>
<h2><a name="Debriefing:Loser"><localized id="STR_DEBR_02"/></a></h2>
<br>
<p>
<! ------Murderer------>
<localized id="STR_DEBR_022"/>
</p>
<br>

<! -----DEBRIEFING END----->

</body>
</html>

 

 

Zum Abschluss noch ein Beispiel einer fertigen Stringtable.xml:

Credits:

BIForen

ARMAMDB


Geschrieben von Imutep am 27.07.2009 19:07 · 0 Kommentare · 2817 gelesen · Drucken

Artikel verlinken

Share
URL:
BBcode:
HTML:

Kommentare

Dieser Beitrag wurde noch nicht kommentiert.

Kommentar hinzufügen

Name:




Überprüfungscode eingeben:

Bewertungen

  • Aktuelle Bewertung 0.00/5

Bewertung: 0.0/5 (0 Stimmen)


Nur Mitglieder können Bewertungen abgeben.
Bitte einloggen oder registrieren.

Login


Willkommen im
Assault Mission Studio!


Registrieren

Passwort vergessen?
Jetzt ein neues Passwort zuschicken lassen.

Login
Benutzername

Passwort


Shoutbox

Gästen ist das schreiben von Mitteilungen nicht erlaubt.



01.09.2010 11:18:38
Guten Tag... Danke für das Verlinken http://simgamers..
..
25.08.2010 11:38:33
Morgen Beerdigung und dann endlich 2 Wochen Urlaub! schlafen
15.08.2010 22:58:54
Streetparade war geil :-D
12.08.2010 20:10:47
Ich bin dann mal weg. bis sonntag und schönes WE Wink
09.08.2010 18:07:43
Oh je...
08.08.2010 22:25:47
Und wieder eine stressige Woche vor mir. Das wären dann schon 2 Wochen ohne ArmA2 weinen
01.08.2010 23:26:23
Wünsche auch allen eine angenehme Woche. Endlich geht der alltägliche Wahnsinn wieder los.^^ help
01.08.2010 22:59:58
Dir auch... sehr schön, neue Version der Kampagne draußen...
01.08.2010 22:35:05
Wünsche allen eine schöne erholsame Woche! Smile
29.07.2010 22:16:47
@obo : jupp. hat sich gelohnt.

Partnerseiten

Operation Arrowhead