// ==UserScript==
// @name TW Classic Translation
// @namespace fktext.bplaced.net/classic_translation
// @description Translates the content of the TW Classic version into German.
// @include *classic.the*west.net*
// @exclude *classic.the-west.net/help.php*
// @exclude *classic.the-west.net/?page=error*
// @run-at document-end
// @version 1.16
// @grant none
// @author stayawayknight
// ==/UserScript==
function contentEval(source) {
if ('function' == typeof source) {
source = '(' + source + ')();'
}
var script = document.createElement('script');
script.setAttribute('type', 'application/javascript');
script.textContent = source;
document.body.appendChild(script);
document.body.removeChild(script);
};
TWCT = function () {
TWCT = {
initialized: false
};
TWCT.locale = 'de';
TWCT.res = {
button: {
left: 'https://media.innogamescdn.com/com_WEST_DE/classic/button/button_left.png',
middle: 'https://media.innogamescdn.com/com_WEST_DE/classic/button/button_middle.png',
right: 'https://media.innogamescdn.com/com_WEST_DE/classic/button/button_right.png'
},
menu_image: 'https://media.innogamescdn.com/com_WEST_DE/classic/classic_menu_' + TWCT.locale + '.png'
};
TWCT.lang = {
//Attribute names
attribute_names: {
strength: 'Stärke',
flexibility: 'Beweglichkeit',
dexterity: 'Geschicklichkeit',
charisma: 'Charisma'
},
//Skill names
skill_names: {
aim: 'Zielen',
animal: 'Mit Tieren umgehen',
appearance: 'Auftreten',
build: 'Errichten',
dodge: 'Ausweichen',
endurance: 'Ausdauer',
finger_dexterity: 'Fingerfertigkeit',
health: 'Lebenspunkte',
hide: 'Verstecken',
leadership: 'Leiten',
pitfall: 'Fallen stellen',
punch: 'Schlagkraft',
reflex: 'Reflex',
repair: 'Reparieren',
ride: 'Reiten',
shot: 'Schießen',
swim: 'Schwimmen',
tactic: 'Taktik',
tough: 'Zähigkeit',
trade: 'Handeln'
},
items: null, //will be loaded dynamically later
item_slots: {
head: 'Kopfbedeckung',
neck: 'Halsband',
left_arm: 'Nebenhand',
right_arm: 'Duellwaffe',
body: 'Bekleidung',
foot: 'Schuhe',
animal: 'Reittier',
yield: 'Produkt'
},
//Job names and descriptions
jobs: [
{
name: 'Schweine hüten',
desc: 'Ein Bauer bietet dir an, dass du auf seine Schweine aufpasst und ihnen Futter gibst.'
},
{
name: 'Vögel vom Feld vertreiben',
desc: 'Ein Bauer bittet dich, die Krähen von seinem frisch gesäten Feld zu vertreiben.'
},
{
name: 'Plakate anbringen',
desc: 'Der örtliche Sheriff bittet dich darum, ein paar Plakate von Verbrechern in der Gegend' +
' zu verteilen.'
},
{
name: 'Tabak pflücken',
desc: 'Der Tabak reifte in diesem Jahr sehr gut. Du kannst jederzeit anfangen, Tabakblätter' +
' zu pflücken.'
},
{
name: 'Baumwolle pflücken',
desc: 'Ein großes Schild dieser Baumwollplantage weist darauf hin, dass noch Baumwollpflücker' +
' gesucht werden.'
},
{
name: 'Zuckerrohr schlagen',
desc: 'Ein süßlicher Geruch von frisch geschlagenem Zuckerrohr verbreitet sich über die Felder.'
},
{
name: 'Angeln',
desc: 'Ein großer Schwarm Fische verrät dir, dass du hier deine Angel herausholen solltest.'
},
{
name: 'Getreide ernten',
desc: 'Es ist Erntezeit. Eine helfende Hand wird auf diesem Getreidefeld jederzeit benötigt.'
},
{
name: 'Beeren pflücken',
desc: 'Der Wald ist voll von Sträuchern. Du wirst hier einige Beeren finden.'
},
{
name: 'Schafe hüten',
desc: 'Einige Schafe laufen dir vor die Füße. Der Hirtenjunge ist merklich überfordert. Hilf ihm die ' +
'Schafe wieder einzutreiben.'
},
{
name: 'Zeitung verkaufen',
desc: '"Zeitung zu verkaufen! Zeitung zu verkaufen!" Ein Junge drückt dir einen Stapel Zeitungen' +
' in die Arme und bittet dich sie weiter zu verkaufen.'
},
{
name: 'Keine Arbeit',
desc: ''
},
{
name: 'Keine Arbeit',
desc: ''
},
{
name: 'Mais pflücken',
desc: 'Aus diesem Mais wird der bekannteste Whiskey des Landes hergestellt.'
},
{
name: 'Bohnen pflücken',
desc: 'Auf diesem Feld kannst du Bohnen pflücken.'
},
{
name: 'Fort bewachen',
desc: 'Es werden wachsame Leute gesucht, die dieses Fort bewachen.'
},
{
name: 'Gerben',
desc: 'Ein Jäger hat einige Tiere geschossen. Hilf ihm, die Felle zu gerben, um so Leder zu gewinnen.'
},
{
name: 'Gold schürfen',
desc: 'Die zahlreichen siebenden Leute verraten dir, dass du an diesem Bach reich werden kannst.'
},
{
name: 'Gräber ausheben',
desc: 'An dieser Stelle sollen die gefallenen Söhne unseres Landes begraben werden.'
},
{
name: 'Truthähne jagen',
desc: 'Ein Truthahn läuft dir direkt vor die Füße. Im Wald wirst du noch mehr finden.'
},
{
name: 'Gleise verlegen',
desc: 'Eine Bahn vom Atlantik zum Pazifik. Hilf diesen Traum zu verwirklichen.'
},
{
name: 'Kühe treiben',
desc: 'Eine Herde Kühe soll zu den Schlachthäusern von Chicago getrieben werden. Der leitende' +
' Cowboy stellt dir dafür ein Pferd zur Verfügung.'
},
{
name: 'Zäune reparieren',
desc: 'Einige Rinder scheinen an dieser Stelle durch den Zaun gebrochen zu sein. Repariere' +
' ihn schnell, bevor noch weitere Tiere ausbrechen.'
},
{
name: 'Keine Arbeit',
desc: ''
},
{
name: 'Steinabbau',
desc: 'Ein Grollen vom Berg hallt durch die Prärie. An diesem Steinbruch werden sich ein paar' +
' Dollar verdienen lassen.'
},
{
name: 'Keine Arbeit',
desc: ''
},
{
name: 'Bäume fällen',
desc: 'Eine neue Siedlung ist ganz in der Nähe des Waldes gegründet worden. Hier werden Holz und' +
' kräftige Axthiebe benötigt.'
},
{
name: 'Keine Arbeit',
desc: ''
},
{
name: 'Rinder branden',
desc: 'Ein Farmer bittet dich seine neue Kuhherde für ihn zu branden.'
},
{
name: 'Stacheldrahtzaun aufstellen',
desc: 'Eine Rinderherde soll in diesem Gebiet weiden. Umzäune das Gebiet.'
},
{
name: 'Keine Arbeit',
desc: ''
},
{
name: 'Edelsteine schürfen',
desc: 'Einige Halbedelsteine blitzen am Boden des Wassers. Schürfe nach ihnen.'
},
{
name: 'Claim abstecken',
desc: 'Gold wurde an diesem Fluss gefunden. Stecke Claims ab und sorge dafür, dass du das' +
' beste Stück bekommst.'
},
{
name: 'Planwagen reparieren',
desc: 'Eine verzweifelte Familie steckt mit ihrem kaputten Planwagen fest. Hilf der Familie,' +
' vielleicht haben sie eine Belohnung für dich.'
},
{
name: 'Pferde einreiten',
desc: 'Ein Farmer bittet dich, seine gerade gefangenen Wildpferde einzureiten.'
},
{
name: 'Handeln',
desc: 'Die Goldschürfer an diesem Gewässer zeigen stolz ihre dicken Goldklumpen. Es ist Zeit,' +
' ihnen Alkohol und Tabak zu verkaufen.'
},
{
name: 'Telegraphenmasten aufstellen',
desc: 'Die Telegrammverbindung zwischen zwei großen Städten soll endlich ausgebaut werden.'
},
{
name: 'Keine Arbeit',
desc: ''
},
{
name: 'Biberjagd',
desc: 'Einige Bäume am Waldrand sind angenagt. Das Aufstellen von Biberfallen wird sich lohnen.'
},
{
name: 'Kohleabbau',
desc: 'Die verrußten Gesichter der Männer am Fuße des Berges deuten auf eine ertragreiche Kohlemine hin.'
},
{
name: 'Keine Arbeit',
desc: ''
},
{
name: 'Fischen',
desc: 'Im klaren Wasser kannst du viele Fische sehen. Wirf das Netz aus!'
},
{
name: 'Bahnhof bauen',
desc: 'Die Eisenbahn wird schon in drei Tagen hier ankommen. Baue schnell einen Bahnhof auf.'
},
{
name: 'Windräder bauen',
desc: 'An dieser Stelle wird gerade ein neues Windrad errichtet. Hilf den Siedlern.'
},
{
name: 'Auf Erkundung gehen',
desc: 'Tritt in die Fußstapfen von Lewis und Clark und erkunde dieses bislang unbekannte Stück Land.'
},
{
name: 'Holz flößen',
desc: 'Männer versuchen Baumstämme flussabwärts zu lenken. Hilfe können sie gut gebrauchen,' +
' doch ein unfreiwilliges Bad solltest du einplanen.'
},
{
name: 'Brücke bauen',
desc: 'Eine Brücke für die Bahn soll hier gebaut werden.'
},
{
name: 'Pferde fangen',
desc: 'Die Staubwolke am Horizont kommt näher. Es ist Zeit, dass du dein Können auf dem Pferd' +
' und mit dem Lasso unter Beweis stellst.'
},
{
name: 'Särge zimmern',
desc: 'Nach einer Schießerei werden hier viele Särge benötigt.'
},
{
name: 'Munition transportieren',
desc: 'Die Armee braucht dringend Nachschub. Transportiere dieses hochexplosive Zeug' +
' sofort zum nächsten Fort.'
},
{
name: 'Kojoten jagen',
desc: 'Ein Kojote treibt einen Bauern in den Ruin. Er ist bereit dir sein gesamtes Erspartes' +
' für den Kopf dieses Kojoten zu geben.'
},
{
name: 'Büffel jagen',
desc: 'Ein Reiter mustert dich kurz und meint, dass du genau der Richtige wärst, um mit ihm ' +
'und seinen Jungs eine Herde Büffel zu jagen.'
},
{
name: 'Keine Arbeit',
desc: ''
},
{
name: 'Mit Indianern handeln',
desc: 'Ein Stamm der Sioux hat einige wertvolle Gegenstände. Sei vorsichtig, wenn du versuchst' +
' sie gegen Alkohol oder wertlose Perlen zu tauschen.'
},
{
name: 'Wald roden',
desc: 'Gold wurde in der Nähe gefunden. Die Goldgräberstadt braucht viel Holz und die Preise sind gut.'
},
{
name: 'Silberabbau',
desc: 'Ein Silbervorkommen wurde an diesem Berg entdeckt. Verdiene schnell gutes Geld.'
},
{
name: 'Postkutsche bewachen',
desc: 'Die Postkutsche wurde in den letzten Wochen häufig ausgeraubt. Du bekommst einen anständigen' +
' Lohn, wenn du den Kutscher auf seiner Fahrt begleitest.'
},
{
name: 'Wölfe jagen',
desc: 'Ein Rudel Wölfe reißt die Herde der hier wohnenden Farmer. Hilf den verzweifelten Familien.'
},
{
name: 'Siedlertreck beschützen',
desc: 'Ein Siedlertreck bittet dich um Hilfe, sie durch dieses Territorium der Indianer zu begleiten.'
},
{
name: 'Pferde stehlen',
desc: 'Der Großgrundbesitzer hat einige Zuchtpferde im Stall. Stiehl die Pferde und verkaufe sie.'
},
{
name: 'Gefängniswächter',
desc: 'Mitten in der Prärie siehst du eine große Festungsanlage. Beweise deine Autorität und achte' +
' darauf, dass niemand entkommt.'
},
{
name: 'Missionieren',
desc: 'Der Pastor bittet dich, einen Indianerstamm vom wahren Glauben zu überzeugen.'
},
{
name: 'Ponyexpress',
desc: 'Diese Nachricht muss so schnell es geht einen Empfänger erreichen. Nur die besten' +
' Reiter können diese Aufgabe erledigen.'
},
{
name: 'Gewehre an Indianer verkaufen',
desc: 'Verkaufe dem Indianerstamm Gewehre, damit der Stamm sich gegen den Weißen Mann wehren kann.'
},
{
name: 'Leichen plündern',
desc: 'Einige Geier kreisen weit entfernt über der Wüste. Vielleicht hatte das Opfer ein Paar' +
' gute Schuhe bei sich.'
},
{
name: 'Grizzlybären jagen',
desc: 'Ausgewachsene Grizzlybären treiben in diesem Wald ihr Unwesen. Der Kopf eines Bären' +
' sollte einen guten Preis bringen.'
},
{
name: 'Nach Öl bohren',
desc: 'Die schwarze Flüssigkeit, die aus dem Boden sprudelt, ist ein guter Rohstoff' +
' zur Petroleumgewinnung.'
},
{
name: 'Schatzsuche',
desc: 'In dieser Wüste soll es einen riesigen Indianerschatz geben. Geh ihn suchen!'
},
{
name: 'Der Armee dienen',
desc: '"WE WANT YOU" liest du auf einem Plakat. Es wird dir ein guter Sold geboten, ' +
'der wohl auch ein hohes Risiko mit sich trägt.'
},
{
name: 'Leute bestehlen',
desc: 'Viele Leute passieren täglich diese Straßenkreuzung. Mit etwas Geschick dürften' +
' sich ihre Taschen leeren und deine Taschen füllen.'
},
{
name: 'Als Söldner arbeiten',
desc: 'Ein Bandenkrieg zwischen zwei Familien sollte dir eine gute Gelegenheit bieten,' +
' dir eine Handvoll Dollar zu verdienen.'
},
{
name: 'Banditen jagen',
desc: 'Eine Gruppe Banditen überfällt seit Monaten die Kutschen und Trecks. Wenn du' +
' sie findest, solltest du gute Gegenstände und viel Geld bei ihnen finden. Vorausgesetzt du überlebst.'
},
{
name: 'Überfall',
desc: 'Die Kutschen und Trecks, die von hier aus nach Westen wollen, müssen durch einen engen Pass.' +
' Ein guter Ort für einen Überfall.'
},
{
name: 'Postkutsche überfallen',
desc: 'Im Saloon triffst du auf zwei zähe Burschen. Sie brauchen noch einen dritten Mann.'
},
{
name: 'Kopfgeldjäger',
desc: '"Dead or Alive". Du prägst dir den Namen und das Gesicht des Mannes ein und ziehst los.'
},
{
name: 'Gefangenentransport',
desc: 'Einige Schwerverbrecher sollen ins Gefängnis gebracht werden. Vielleicht haben sie noch einige' +
' wertvolle Gegenstände für dich.'
},
{
name: 'Zug überfallen',
desc: 'Das wird dein größter Deal. Stoppe den Zug und raube die Fahrgäste komplett aus.'
},
{
name: 'Einbruch',
desc: 'Die erfolgreichen Goldschürfer vergnügen sich gerade im Saloon. In ihren Hütten wird' +
' vielleicht noch etwas zu holen sein.'
}
],
accept_agb: 'Ich akzeptiere die AGB.',
accept_quest: 'Quest annehmen',
assign_attributes_and_skills: 'Attribute und Fertigkeiten vergeben',
at_least_one_labor_point: 'Um eine Arbeit machen zu können brauchst du mindestens einen Arbeitspunkt.',
attributes: 'Attribute',
automation_advert: 'Mit dem Premiumbonus <i>Automatisierung</i> kannst du vier Arbeiten in die' +
'Arbeitsschleife einstellen, die nacheinander abgearbeitet werden.',
backpack: 'Gepäck',
bank_account_description: '<b>Konto</b>. Das Geld auf deinem Konto ist sicher. Es wird automatisch' +
' abgebucht, wenn dein Bargeld zum Bezahlen nicht reicht.',
begin_work: 'Arbeit beginnen',
cash_description: '<b>Bargeld</b>. Dein Bargeld ist nicht gesichert. Dieses kann dir z.B. im' +
' Duell abgenommen werden.',
cancel: 'Abbrechen',
cancel_quest: 'Quest abbrechen',
center_character: 'Karte auf deinen Charakter zentrieren',
center_map: 'Karte auf deine Stadt zentrieren',
change: 'Ändern',
change_attributes_and_skills: 'Attribute und Fertigkeiten ändern',
change_password: 'Passwort ändern',
character_name: 'Charaktername:',
character_stats: ['Stufe', 'Erfahrungspunkte', 'Lebenspunkte', 'Erholung', 'Geschwindigkeit', 'Duellstufe',
'Duelle gewonnen', 'Duelle verloren'],
completed_quests: 'Abgeschlossene Quests',
confirm: 'Bestätigen',
confirm_password: 'Passwort bestätigen:',
contact: 'Impressum',
costs_attributes: 'Kosten Attributpunkt',
costs_skills: 'Kosten Fertigkeitspunkt',
current_assignments: 'Eingestellte Arbeiten',
costs_current: 'Derzeitige Kosten',
damage: 'Schaden',
danger_description: '<strong>Gefahr:</strong> Die Gefahr gibt das Verletzungsrisiko der Arbeit an.' +
' Je höher die Gefahr, desto schlimmere Verletzungen können entstehen. Je mehr Arbeitspunkte du einbringst,' +
' desto geringer ist die Verletzungsgefahr.',
delete_login_cookies: 'Login-Cookies löschen',
description: 'Beschreibung',
difficulty: 'Schwierigkeit',
difficulty_description: '<strong>Schwierigkeit der Arbeit:</strong> Jede Arbeit besitzt' +
' einen Schwierigkeitsgrad. Die Schwierigkeit wird von den eingebrachten Fertigkeitspunkten abgezogen.',
discover_new_land: 'Erkunde neues Land und erlebe spannende Abenteuer und Duelle!<br/>The West erwartet' +
' dich!',
distance: 'Hinweg:',
done: 'Fertig',
duration: 'Dauer:',
employers: {
barkeeper: {
name: 'Barkeeper Henry Walker',
text: '<p>Hinter dem Tresen steht Henry Walker, der Barkeeper und Besitzer des Saloons. ' +
'Er ist ein leicht beleibter Mann, der etwa 50 Jahre alt ist.</p>\n<p>Du ' +
'erkennst, dass er am ganzen Körper viele kleine Narben hat. Besonders seine Hände ' +
'deuten darauf hin, dass er in seiner Vergangenheit viele Abenteuer erlebt haben muss.' +
' Henry Walker hat ein freundliches Gesicht und eine beruhigende Stimme.</p>'
}, lady: {
name: 'Maria Roalstad', text: '<p>Maria ist Tänzerin und Bedienung in Henry Walkers Saloon.' +
' Sie hat ein sehr selbstbewusstes Auftreten und hat eindeutig das Sagen unter den Tänzerinnen.</p>'
},
sheriff: {
name: 'Sheriff John Fitzburn', text: '<p>Ein etwa 40 Jahre alter Mann sitzt dir gegenüber.' +
' An seinem goldenen Stern auf der Brust erkennst du ihn als den örtlichen Sheriff.</p>\n<p>Der Mann' +
' stellt sich dir als John Fitzburn vor. Beim ersten Wort riechst du, dass es nicht sein erstes Glas' +
' Whiskey am heutigen Tag war. Dennoch nimmt er dich vollkommen wahr und spricht noch' +
' sehr kontrolliert.</p>'
}, indian: {
name: 'Waupee (White Hawk)',
text: '<p>Es ist leicht zu erkennen, dass Waupee ein Ureinwohner Amerikas ist.' +
' Es ist ungewöhnlich einen Indianer in einem Saloon zu finden.' +
' Im Gegensatz zu anderen Indianern raucht er seine Pfeife nicht als rituelles Zeichen,' +
' sondern aus Genuss.</p>\n<p>Waupee versucht keinen Kontakt zu anderen Gästen im Saloon aufzunehmen,' +
' er wirkt emotionslos. Eine enge Freundschaft zwischen ihm und Henry Walker scheint der Grund' +
' für seine Anwesenheit zu sein.</p>'
}
},
energy: 'Erholung',
errors: {
mail_already_taken: 'Die E-Mail wird bereits verwendet',
mail_invalid: 'Die E-Mail ist ungültig',
name_already_taken: 'Der Name ist bereits belegt',
name_has_double_spaces: 'Doppelte Leerzeichen sind nicht erlaubt',
name_has_invalid_signs: 'Der Name enthält Zeichen, die für diese Sprachversion nicht erlaubt sind',
name_has_spaces: 'Der Name darf am Anfang und am Ende keine Leerzeichen enthalten',
name_too_long: 'Der Name darf maximal 20 Zeichen lang sein',
name_too_short: 'Der Name muss mindestens 3 Zeichen lang sein',
oid_already_taken: 'Der OpenID wird bereits verwendet',
password_has_spaces: 'Der Name darf am Anfang und am Ende keine Leerzeichen enthalten',
password_too_short: 'Das Passwort muss mindestens 5 Zeichen lang sein'
},
experience: 'Erfahrung',
experience_description: '<strong>Erfahrung:</strong> Die Erfahrung gibt an wie viele Erfahrungspunkte' +
' du für die Arbeit bekommst.',
experience_point: 'Erfahrungspunkt',
experience_points: 'Erfahrungspunkte',
finish_quest: 'Quest abschließen',
forum: 'The-West-Forum',
forum_link: 'https://forum.the-west.de',
found_town: 'Stadt gründen',
ghost_town: 'Geisterstadt',
health: 'Lebenspunkte',
help: 'Hilfe',
hint: 'Hinweis',
labor_points: 'Arbeitspunkte',
labor_points_description: '<strong>Arbeitspunkte:</strong> Die eingebrachten ' +
'Fertigkeitspunkte abzüglich der Schwierigkeit ergeben die Arbeitspunkte. Du benötigst mindestens' +
' einen Arbeitspunkt, um eine Arbeit auszuführen. Je mehr Arbeitspunkte du besitzt, desto höher ist ' +
'der Lohn und die Gefahr sinkt.',
level: 'Stufe',
login_permanently: 'Dauerhaft einloggen',
logout: 'Logout',
luck_description: '<strong>Glück:</strong> Mit etwas Glück bekommst oder findest du bei der Arbeit' +
' einen Gegenstand. Mit höherem Glück kannst du bessere Gegenstände finden. Durch den Premiumbonus' +
' bekommst du 30% wertvollere Gegenstände.',
minimap: 'Minimap',
minimap_legend: ['Hier befindest du dich', 'Eigene Stadt', 'Fremde Städte', 'Geisterstädte'],
missing_labor_points: 'Dir fehlen für diese Arbeit noch %1 Arbeitspunkte.',
motivation_description: '<strong>Motivation:</strong> Die Motivation gibt an wie hoch deine' +
' Leistungsbereitschaft für die Arbeit ist und verringert so den Lohn, die Erfahrung und das Glück.' +
' Wenn du eine Arbeit häufiger ausführst sinkt die Motivation. Mit der Zeit steigt sie wieder.',
number_of_players: 'Spieleranzahl',
ok: 'Ok',
open_quests: 'Offene Quests',
password: 'Passwort:',
player: 'Spieler',
players: 'Spieler',
player_not_exist: 'Dieser Spieler existiert nicht',
praying: 'Beten',
product_find_chance: 'Die Wahrscheinlichkeit den Gegenstand<br/>in 30 Minuten zu finden liegt bei ',
purchase_price: 'Einkaufswert',
questbook: 'Questbuch',
//will be loaded dynamically later
quests: null,
recommended: 'empfohlen',
requires: 'Benötigt',
requires_level: 'Benötigt Stufe',
reward: 'Belohnung',
sales_price: 'Verkaufswert',
saloon: 'Saloon',
screenshot_labels: [
'Gründe zusammen mit anderen Spielern eine Stadt und errichte neue Gebäude.',
'In der großen Welt erwarten dich viele verschiedene Abenteuer und Aufgaben.',
'Bist du ein Goldsucher, ein Falschspieler oder ein Kopfgeldjäger? Du entscheidest welchen Weg du gehst!'
],
select_job: '-- Job wählen --',
select_world: 'Bitte wähle deine Spielwelt:',
select_world_2: 'Wähle eine Welt!',
show: 'anzeigen',
sign_up: 'Anmelden',
sign_up_at: 'Anmelden auf',
skill_sum_description: '<strong>Summe der 5 Fertigkeiten:</strong> Dieses sind die Punkte, die dein Charakter in die Arbeit einbringt. Ziehst du die Schwierigkeit ab, so erhältst du die für diese Arbeit eingebrachten Arbeitspunkte.',
skilled_attributes: 'vergebene Attributpunkte',
skilled_skills: 'vergebene Fertigkeitspunkte',
skills: 'Fertigkeiten',
sleeping: 'Schlafen',
speed: 'Geschwindigkeit',
start_date: 'Startdatum',
//Task names
tasks: {
nothing: 'Du machst gerade nichts.',
job: 'Arbeit',
duel: 'Du duellierst dich gerade.',
sleep: 'Du schläfst gerade.',
pray: 'Du betest gerade.',
found: 'Du gründest eine Stadt.',
refound: 'Du besetzt eine Geisterstadt.',
build: 'Du baust deine Stadt aus.',
walk: 'Du gehst gerade.',
way: 'Du gehst gerade.'
},
target: 'Ziel',
translation_in_progress: 'Übersetze.',
used_skill_points: 'Verwendete Fertigkeiten',
user_name: 'Name:',
wage_description: '<strong>Lohn:</strong> Der Lohn gibt an wie viele Dollar du für die Arbeit bekommst.' +
' Je mehr Arbeitspunkte du einbringst, desto höher ist der Lohn. Durch den Premiumbonus bekommst du 50%' +
' mehr Lohn.',
weapon_types: {
shot: 'Schusswaffe',
hand: 'Schlagwaffe'
},
work_time: ['10 Minuten', '30 Minuten', '1 Stunde', '2 Stunden'],
world: 'Welt',
wrong_password: 'Das Passwort ist falsch',
you_are_here: 'Hier befindest du dich!'
};
var basic = {
buttonHideChanged: false,
//Replaces an image button element with an javascript button with dynamic text, given in the text parameter
replaceWestButton: function (image_element, text) {
if (!this.buttonHideChanged) {
//Change the way how buttons are hidden and made visible again (inline-block instead of block):
Button.prototype.setVisible = function (visible) {
this.el.style.display = visible ? 'inline-block' : 'none';
}
this.buttonHideChanged = true;
}
//Create the button itself
var button = document.createElement('div');
button.style['cursor'] = 'pointer';
button.style['height'] = '25px';
button.style['display'] = 'inline-block';
button.style['margin'] = '0 10px 10px 0';
//Create the left part of the button
var button_left = document.createElement('div');
button_left.style['background-image'] = 'url(' + TWCT.res.button.left + ')';
button_left.style['width'] = '16px';
button_left.style['height'] = '25px';
button_left.style['display'] = 'inline-block';
//Create the right part of the button
var button_right = document.createElement('div');
button_right.style['background-image'] = 'url(' + TWCT.res.button.right + ')';
button_right.style['width'] = '16px';
button_right.style['height'] = '25px';
button_right.style['display'] = 'inline-block';
//Create middle part of the button
var button_middle = document.createElement('div');
button_middle.style['background-image'] = 'url(' + TWCT.res.button.middle + ')';
button_middle.style['height'] = '25px';
button_middle.style['display'] = 'inline-block';
button_middle.style['vertical-align'] = 'top';
//Create the button text
var button_text = document.createElement('span');
button_text.style['color'] = 'white',
button_text.style['font-family'] = 'Arial,Verdana,sans-serif';
button_text.style['font-weight'] = 'bold';
button_text.style['font-size'] = '15px';
button_text.style['position'] = 'relative';
button_text.style['top'] = '2px';
//Make text non-selectable
button_text.style['-webkit-user-select'] = 'none';
button_text.style['-khtml-user-select'] = 'none';
button_text.style['-moz-user-select'] = 'none';
button_text.style['-ms-user-select'] = 'none';
button_text.style['-o-user-select'] = 'none';
button_text.style['user-select'] = 'none';
button_text.innerHTML = text;
//Add text to the middle part of the button
button_middle.appendChild(button_text);
//Build the button
button.appendChild(button_left);
button.appendChild(button_middle);
button.appendChild(button_right);
//Copy ID from old element
button.id = image_element.id;
//Copy events from old element
button.cloneEvents(image_element);
//Finally replace image button with javascript button
if (image_element.parentElement) {
image_element.parentElement.replaceChild(button, image_element);
} else {
image_element.parent.replaceChild(button, image_element);
}
},
//Finds the matching item translation for a given item id using binary search; will return null if not found
findItemTranslationByID: function (id) {
var minIndex = 0;
var maxIndex = TWCT.lang.items.length - 1;
var currentIndex = 0;
var currentItemID = 0;
while (minIndex <= maxIndex) {
currentIndex = (minIndex + maxIndex) / 2 | 0;
currentItemID = TWCT.lang.items[currentIndex].item_id;
if (currentItemID < id) {
minIndex = currentIndex + 1;
} else if (currentItemID > id) {
maxIndex = currentIndex - 1;
} else {
return TWCT.lang.items[currentIndex];
}
}
return null;
},
//Finds the matching quest translation for a given quest id using binary search; will return null if not found
findQuestTranslationByID: function (id) {
var minIndex = 0;
var maxIndex = TWCT.lang.quests.length - 1;
var currentIndex = 0;
var currentItemID = 0;
while (minIndex <= maxIndex) {
currentIndex = (minIndex + maxIndex) / 2 | 0;
currentItemID = TWCT.lang.quests[currentIndex].quest_id;
if (currentItemID < id) {
minIndex = currentIndex + 1;
} else if (currentItemID > id) {
maxIndex = currentIndex - 1;
} else {
return TWCT.lang.quests[currentIndex];
}
}
return null;
}
};
//Define a throbber which can be shown while the translation process is going on
var throbber = {
container: null,
//Shows the throbber
show: function () {
if (this.container == null) {
this.container = document.createElement('div');
this.container.style.position = 'absolute';
this.container.style.left = '0px';
this.container.style.top = '0px';
this.container.style.width = '100%';
this.container.style.height = '100%';
//this.container.style['background-color'] = 'rgba(0, 0, 0, 0.8)';
this.container.innerHTML = '<div style="position: absolute; left:0px; right:0px; top: 0px; ' +
'bottom: 0px; margin: auto; width: 100px; height: 50px; border: 3px solid saddlebrown; ' +
'background-color: beige; z-index: 10; text-align: center;">' + TWCT.lang.translation_in_progress
+ '<br/><img src="images/throbber.gif"/></div>';
document.body.appendChild(this.container);
}
this.container.style.display = '';
},
//Hides the throbber
hide: function () {
if (this.container == null) {
return;
}
this.container.style.display = 'none';
}
};
//Load translations from web server
var load_translations = function (callback) {
function getScript(src, callback) {
var s = document.createElement('script');
s.src = src;
s.async = true;
s.onreadystatechange = s.onload = function () {
if (!callback.done && (!s.readyState || /loaded|complete/.test(s.readyState))) {
callback.done = true;
callback();
}
};
//Modify loaded script by append and prepend strings to the source
s.innerHTML = s.innerHTML;
document.querySelector('head').appendChild(s);
}
getScript('https://stayawknt.safe-ws.de/translation.php?lang=' + TWCT.locale, callback);
};
//Perform absolute basic operations at start
var init = function () {
//Sort item object array, so a binary search can be performed on it
TWCT.lang.items.sort(function (a, b) {
return a.item_id - b.item_id
});
};
//Define translations modules
//Translate general start page strings, shown on every page, before the player logs in
var translate_startpage = function () {
//Translate player counter
document.getElementById('stat').innerHTML = document.getElementById('stat').innerHTML.replace('Players', TWCT.lang.players);
//Contact link
document.getElementById('imprint').getChildren()[0].innerHTML = TWCT.lang.contact;
};
//Translate the login (main) page, before the player logs in
var translate_loginpage = function () {
//Translate description
document.getElementById('desc').innerHTML = TWCT.lang.discover_new_land;
//Exchange register button
document.getElementById('register').style['background-image'] = 'url("images/index/' + TWCT.locale + '/register.jpg")';
//Translate login form
//Check whether normal login or cookie login
if (document.getElementById("howdy") == null) {
//Normal login
document.getElementById('name_area').getChildren() [0].innerHTML = TWCT.lang.character_name;
document.getElementById('password_area').getChildren() [0].innerHTML = TWCT.lang.password;
document.getElementsByClassName('set_cookie') [0].getChildren() [0].innerHTML = '<input name="set_cookie_checkbox" id="set_cookie_checkbox" type="checkbox">' + TWCT.lang.login_permanently;
document.getElementById('lost_pw').getChildren() [0].innerHTML = TWCT.lang.change_password;
} else {
//Cookie login
document.getElementById('del_cookies').getChildren()[0].innerHTML = TWCT.lang.delete_login_cookies;
}
//Translate screenshots
document.getElementById('screenshot_text_1').innerHTML = TWCT.lang.screenshot_labels[0];
document.getElementById('screenshot_text_2').innerHTML = TWCT.lang.screenshot_labels[1];
document.getElementById('screenshot_text_3').innerHTML = TWCT.lang.screenshot_labels[2];
//World select message
document.getElementById('select_world_text').innerHTML = TWCT.lang.select_world;
//Error login messages, therefore override login check function
check_login = function () {
var url = 'index.php?ajax=check_login';
var jSonRequest = new Json.Remote(url, {
method: 'post', onComplete: function (data) {
if (typeof data == 'string') {
//Inject translation
data = data.replace('The player does not exist', TWCT.lang.player_not_exist)
.replace('The password is wrong', TWCT.lang.wrong_password);
alert(data);
} else {
var el;
for (var i = 0; i < data.worlds.length; i++) {
el = $E('.world_button_passive_' + data.worlds[i]);
if (el != null) {
el.removeClass('world_button_passive_' + data.worlds[i]);
el.addClass('world_button_' + data.worlds[i]);
}
}
show_login(data.player_id, data.password, $('set_cookie_checkbox').checked);
}
}
}).send({name: $('name').value, password: $('password').value});
return false;
};
};
//Translate the choose world page, before the player logs in
var translate_chooseworldpage = function () {
document.getElementsByTagName('h2')[0].innerHTML = TWCT.lang.select_world_2;
var table_headers = document.getElementsByTagName('th');
table_headers[0].innerHTML = TWCT.lang.world;
table_headers[1].innerHTML = TWCT.lang.start_date;
table_headers[2].innerHTML = TWCT.lang.number_of_players;
table_headers[3].innerHTML = TWCT.lang.description;
var cells = document.getElementsByTagName('td');
for (var i = 0; i < cells.length; i++)[
cells[i].innerHTML = cells[i].innerHTML.replace('(Recommended)', '(' +
TWCT.lang.recommended + ')')
]
};
//Translate the register page, before the player logs in
var translate_registerpage = function () {
//Caption
document.getElementById('caption').innerHTML = document.getElementById('caption')
.innerHTML.replace('Sign up', TWCT.lang.sign_up_at).replace('change', TWCT.lang.change);
//Register form
document.getElementsByClassName('register_name_area') [0].innerHTML = TWCT.lang.user_name +
'<br><input class="confirm_input" name="name" value=""' +
' onchange="checkInput(\'name\', this.value)" type="text">';
document.getElementById('register_password_area').innerHTML = TWCT.lang.password +
'<br><input class="confirm_input" id="password" ' +
'name="password" value="" onchange="checkInput(\'password\', this.value)" type="password">';
document.getElementById('register_password_confirm_area').innerHTML = TWCT.lang.confirm_password +
'<br><input id="password_confirm" class="confirm_input" ' +
'name="password_confirm" value="" onchange="checkPasswordConfirm(this.value)" type="password">';
document.getElementById('register_agb_area').getChildren()[0].innerHTML = '<input name="agb" type="checkbox">'
+ TWCT.lang.accept_agb;
document.getElementById('register_agb_area').getChildren()[1].innerHTML = '» ' + TWCT.lang.show;
document.getElementsByClassName('register_submit_area')[0].getChildren()[0].value = TWCT.lang.sign_up;
//Error messages, therefore overwrite check function
checkInput = function (type, value) {
var url = 'index.php?page=register&ajax=check_input';
var jSonRequest = new Json.Remote(url, {
method: 'post', onComplete: function (data) {
data = data.replace('The E-Mail is connected to another account already',
TWCT.lang.errors.mail_already_taken)
.replace('Invalid E-Mail', TWCT.lang.errors.mail_invalid)
.replace('This name is already taken by another player',
TWCT.lang.errors.name_already_taken)
.replace('Two consecutive spaces are not allowed', TWCT.lang.errors.name_has_double_spaces)
.replace('The name contains signs that are not allowed in this language version',
TWCT.lang.errors.name_has_invalid_signs)
.replace('The name may not end or begin with a space', TWCT.lang.errors.name_has_spaces)
.replace('The user name must not be longer than 20 characters',
TWCT.lang.errors.name_too_long)
.replace('The user name has to be at least 3 characters long',
TWCT.lang.errors.name_too_short)
.replace('The OpenID is already in use', TWCT.lang.errors.oid_already_taken)
.replace('The password must not begin or end with a space',
TWCT.lang.errors.password_has_spaces)
.replace('The password has to be at least 5 characters long',
TWCT.lang.errors.password_too_short);
$(type + '_error').setText(data == 'OK' ? '' : data);
}
}).send({type: type, value: value});
};
};
//Translate the change password page, before the player logs in
var translate_changepwpage = function () {
//TODO
};
//Translate the town forum
var translate_townforum = function () {
//TODO
};
//Translate the help
var translate_help = function () {
//TODO
};
//Translate general strings which do not belong to a specific ui element
var translate_general = function () {
//Apply attribute translations
Character.attribute_titles = TWCT.lang.attribute_names;
//Apply skill translations
Character.skill_titles = TWCT.lang.skill_names;
//Apply job translations
for (var i = 1; i <= TWCT.lang.jobs.length; i++) {
if (typeof JobList[i] === 'undefined') {
continue;
}
JobList[i].name = TWCT.lang.jobs[i - 1].name;
}
};
//Translate the game map
var translate_map = function () {
//Translate "You are here" on the map
WMap.self_popup = new MousePopup(TWCT.lang.you_are_here, 250, {
opacity: 0.9
});
//Redefine map marker drawer
WMap.recalcMarker = function () {
var coords;
var area;
var map_mc_pos = {
x: parseInt(fast$('map_move_container').style.left, 10),
y: parseInt(fast$('map_move_container').style.top, 10)
};
var pos_and_visarea_pos = function (tile) {
tile_pos.x = parseInt(tile.style.left, 10);
tile_pos.y = parseInt(tile.style.top, 10);
tile_visarea_pos.x = tile_pos.x + map_mc_pos.x;
tile_visarea_pos.y = tile_pos.y + map_mc_pos.y;
return (tile_visarea_pos.x - 108 > WMap.xSize || tile_visarea_pos.x + 108 < 0 || tile_visarea_pos.y - 54 > WMap.ySize || tile_visarea_pos.y + 54 < 0);
}.bind(WMap);
var map_marker_imagemap = $('map_marker');
map_marker_imagemap.empty();
WMap.mapData.people.each(function (ppl) {
tile = WMap.$(ppl.x, ppl.y, true);
if (tile === null) {
return;
}
tile_pos = {};
tile_visarea_pos = {};
if (pos_and_visarea_pos(tile)) {
return;
}
coords = [
tile_visarea_pos.x + 84,
tile_visarea_pos.y + 26,
10
];
area = new Element('area', {
'shape': 'circle',
'coords': coords.join(',')
});
if (ppl.popup === undefined) {
var popup_text = ppl.count + ' ' + TWCT.lang.players;
if (ppl.count == 1) {
popup_text = '1 ' + TWCT.lang.player;
}
ppl.popup = new MousePopup('<b>' + popup_text + '</b>', 250, {
opacity: 0.7
});
}
area.addMousePopup(ppl.popup);
area.addEvent('mouseover', function (x, y) {
WMap.people_timer = WMap.loadPeople.delay(250, WMap, [
x,
y
])
}.pass([ppl.x,
ppl.y]));
area.addEvent('mouseout', function (event) {
$clear(WMap.people_timer);
});
map_marker_imagemap.appendChild(area);
}.bind(WMap));
var tile = WMap.$(pos.x, pos.y);
var tile_pos = {};
var tile_visarea_pos = {};
if (tile && !pos_and_visarea_pos(tile)) {
var coords = [
tile_visarea_pos.x + 21,
tile_visarea_pos.y + 26,
10
];
var area = new Element('area', {
'shape': 'circle',
'coords': coords.join(',')
});
area.style.border = '1px solid #f00';
area.addMousePopup(WMap.self_popup);
map_marker_imagemap.appendChild(area);
}
var insert_marker;
for (var x in WMap.marker) {
for (var y in WMap.marker[x]) {
for (var type in WMap.marker[x][y]) {
insert_marker = true;
var marker = WMap.marker[x][y][type];
var tile = WMap.$(x, y, true);
if (tile === null) {
continue;
}
tile_pos = {};
tile_visarea_pos = {};
if (pos_and_visarea_pos(tile)) {
continue;
}
switch (type) {
case 'tile':
break;
case 'job':
if (marker.data.visible) {
coords = [
tile_visarea_pos.x + 53,
tile_visarea_pos.y + 27,
20
];
area = new Element('area', {
'shape': 'circle',
'coords': coords.join(','),
'href': '#'
});
if (marker.data.popup === undefined) {
if (typeof TWCT.lang.jobs[marker.data.job_id - 1].name !== 'undefined') {
marker.data.popup = new MousePopup(TWCT.lang.jobs[marker.data.job_id - 1].name, 250, {
opacity: 0.9
});
} else {
marker.data.popup = new MousePopup(JobList[marker.data.job_id].name, 250, {
opacity: 0.9
});
}
}
area.addMousePopup(marker.data.popup);
area.addEvent('click', AjaxWindow.show.bind(AjaxWindow, 'job', {
x: x,
y: y
}, x + '_' + y));
} else {
insert_marker = false;
}
break;
case 'people':
break;
case 'town':
if (marker.data.town || Character.get_home_town() == null) {
if (marker.data.town) {
coords = [
tile_visarea_pos.x + 53,
tile_visarea_pos.y,
tile_visarea_pos.x + 159,
tile_visarea_pos.y + 54,
tile_visarea_pos.x + 53,
tile_visarea_pos.y + 108,
tile_visarea_pos.x - 53,
tile_visarea_pos.y + 54
];
} else {
coords = [
tile_visarea_pos.x + 53,
tile_visarea_pos.y + 53,
20
];
}
area = new Element('area', {
'shape': marker.data.town ? 'polygon' : 'circle',
'coords': coords.join(','),
'href': '#'
});
var popupTitle = TWCT.lang.found_town;
if (marker.data.town) {
if (marker.data.town.member || marker.data.town.npctown)
popupTitle = marker.data.town.name;
else
popupTitle = TWCT.lang.ghost_town
}
if (marker.data.popup === undefined) {
marker.data.popup = new MousePopup(popupTitle, 250, {
opacity: 0.9
});
}
area.addMousePopup(marker.data.popup);
area.addEvent('click', AjaxWindow.show.bind(AjaxWindow, 'town', {
x: x,
y: y
}, x + '_' + y));
} else {
insert_marker = false;
}
break;
}
if (insert_marker) {
map_marker_imagemap.appendChild(area);
}
}
}
}
};
//Redefine map people name loader
WMap.loadPeople = function (x, y) {
WMap.people_request = new XHR({
method: 'get'
});
WMap.people_request.addEvent('onSuccess', function (data) {
var players_string = TWCT.lang.players;
if (data.count == 1) {
players_string = TWCT.lang.player;
}
var ppl = WMap.mapData.people.getByXy(x, y);
data = Json.evaluate(data);
var ppl_xhtml = '<b>' + data.count + ' ' + players_string + ':</b><ul class="people_popup_list">';
for (var i = 0; i < data.people.length; i++) {
ppl_xhtml += '<li>' + data.people[i] + '</li>';
}
if (data.count > 3) {
ppl_xhtml += '<li class="people_popup_list_more">' + 'Mehr...</li>';
}
ppl_xhtml += '</ul>';
ppl.popup.setXHTML(ppl_xhtml);
}.bind(WMap));
WMap.people_request.send('game.php', 'window=map&ajax=get_people&x=' + x + '&y=' + y);
};
//Retrieve minimap legend
var minimap_list = document.getElementById('minimap_list').getChildren();
//Translate legend
for (var i = 0; i < TWCT.lang.minimap_legend.length; i++) {
minimap_list[i].getChildren()[0].innerHTML = TWCT.lang.minimap_legend[i];
}
//Update the minimap jobs
WMinimap.updateJobs();
//Translate first minimap select element
document.getElementById('minimap_job_id').getChildren()[0].innerHTML = TWCT.lang.select_job;
//Update map content to translations
WMap.recalcMarker();
};
//Translate main game interface
var translate_main_window = function () {
//Translate money popups
$('cash').addMousePopup(new MousePopup(TWCT.lang.cash_description, 250, {
opacity: 0.9,
width: '250px'
}));
$('deposit').addMousePopup(new MousePopup(TWCT.lang.bank_account_description, 250, {
opacity: 0.9,
width: '250px'
}));
//Translate map buttons
$('footer_scroll_map_to_char').addMousePopup(new MousePopup(TWCT.lang.center_character));
$('footer_scroll_map_to_home_town').addMousePopup(new MousePopup(TWCT.lang.center_map));
$('footer_minimap_icon').addMousePopup(new MousePopup(TWCT.lang.minimap));
$('footer_forum').addMousePopup(new MousePopup(TWCT.lang.forum));
$('footer_help').addMousePopup(new MousePopup(TWCT.lang.help));
$('footer_logout').addMousePopup(new MousePopup(TWCT.lang.logout));
//Add own forum link
document.getElementById('footer_forum').parentElement.href = TWCT.lang.forum_link;
//Redefine energy redraw:
Character.redraw_energy = function () {
if (PremiumBoni.hasBonus('regen')) {
$('energy_filler').setStyle('backgroundImage', 'url(images/character_bars/filler_bonus.png)');
$('energy_bar').setStyle('backgroundImage', 'url(../images/character_bars/bars_bonus.png)');
}
$('energy_filler').setStyle('width', Character.calc_width(Character.energy, Character.max_energy));
WEvent.trigger('energy', [
Character.energy,
Character.max_energy
]);
if (Character.barPopups.energy === null) {
Character.barPopups.energy = new MousePopup('', 250, {
opacity: 0.9
});
$('energy_bar').addMousePopup(Character.barPopups.energy);
}
Character.barPopups.energy.setXHTML('<b>' + TWCT.lang.energy + ':' + '</b> ' + Math.floor(Character.energy) + '/' + Character.max_energy);
};
//Redefine health redraw:
Character.redraw_health = function () {
$('health_filler').setStyle('width', Character.calc_width(Character.get_health(), Character.get_max_health()));
WEvent.trigger('health', [
Character.get_health(),
Character.get_max_health()
]);
if (Character.barPopups.health === null) {
Character.barPopups.health = new MousePopup('', 250, {
opacity: 0.9
});
$('health_bar').addMousePopup(Chracter.barPopups.health);
}
Character.barPopups.health.setXHTML('<b>' + TWCT.lang.health + ':' + '</b> ' + Math.floor(Character.get_health()) + '/' + Character.get_max_health())
};
//Redefine experience redraw:
Character.redraw_experience = function () {
$('experience_filler').setStyle('width', Character.calc_width(Character.experience - Character.min_experience, Character.max_experience - Character.min_experience));
WEvent.trigger('experience', [
Character.experience - Character.min_experience,
Character.max_experience - Character.min_experience
]);
if (Character.barPopups.experience === null) {
Character.barPopups.experience = new MousePopup('', 250, {
opacity: 0.9
});
$('experience_bar').addMousePopup(Character.barPopups.experience);
}
Character.barPopups.experience.setXHTML('<b>' + TWCT.lang.experience + ':' + '</b> ' + (Character.experience - Character.min_experience) + '/' + (Character.max_experience - Character.min_experience) + ' (<b>' + TWCT.lang.level + ' ' + Character.level + '</b>)');
} //Redefine status refresh:
Character.set_status = function (task) {
if (!task) {
$('current_task').setStyle('background-image', 'url(images/tasks/idle.png)');
$('task_time').setStyle('display', 'none');
$('current_task').innerHTML = 'Du machst gerade nichts.';
return;
}
$('task_time').setStyle('display', 'block');
var desc;
if (task.type == 'job') {
if (typeof TWCT.lang.jobs[task.data_obj.job_id - 1].name !== 'undefined') {
desc = TWCT.lang.tasks.job + ': ' + TWCT.lang.jobs[task.data_obj.job_id - 1].name + '.';
} else {
desc = TWCT.lang.tasks[task.type] + ': ' + task.data_obj.title + '.';
}
} else {
desc = TWCT.lang.tasks[task.type];
}
$('current_task').setStyle('background-image', 'url(images/tasks/' + task.type + '.png)');
$('current_task').innerHTML = desc;
};
//Refresh bars
Character.redraw_energy();
Character.redraw_health();
Character.redraw_experience();
//Update status to translations
Tasks.update_all_info();
};
//Translate graphical main menu by exchanging the picture
var translate_main_menu = function () {
//Retrieve all menu items
var menu_items = document.getElementById('menus').getElementsByTagName('a');
//Stores the fader element of each menu item
var fader_element = null;
//Exchange the graphics of all menu items
var menus = ['character','skill','inventory','saloon','town','townforum','duel','ranking','premium','messages','reports','work','settings'];
for (var i = 0; i < menu_items.length; i++) {
if (!menus.includes(menu_items[i].parentElement.id.slice(5))){
continue;
}
menu_items[i].style['background-image'] = 'url(' + TWCT.res.menu_image + ')';
//Check for activated fader
fader_element = menu_items[i].children[0];
if (fader_element.style['background-image'] !== '') {
//Fader activated, replace background image with translated image
fader_element.style['background-image'] = 'url(' + TWCT.res.menu_image + ')';
}
}
//Overwrite Fader in order to translate also the blue fader function
Fader.init = function () {
Fader.stopAll();
for (var i = 0, len = Fader.buttons.length; i < len; ++i) {
var el = $$('#menu_' + Fader.buttons[i] + ' span') [0];
el.innerHTML = '';
el.setStyle('display', 'block');
el.style.background = 'url(' + TWCT.res.menu_image + ') ' + Fader.getPosition(Fader.buttons[i]);
Fader.elements.push(el);
}
Fader.startAll();
};
};
//Translate task queue
var translate_task_queue = function () {
//Redefine task queue html generation
Tasks.generate_queue_xhtml = function (options) {
if (Tasks.tasks.length == 0) {
return false;
}
var now = new ServerDate();
var table = new Element('table');
var tbody = new Element('tbody');
var first_row = new Element('tr');
var second_row = new Element('tr');
var seconds = 0;
var first = true;
Tasks.last_pos = pos;
for (var i = 0; i < Tasks.tasks.length; i++) {
var obj = Tasks.tasks[i];
seconds += (obj.date_done.getTime() - obj.date_start.getTime()) / 1000;
if (obj.type == 'way') {
continue;
}
var image_div = new Element('div', {
styles: {
position: 'relative',
'height': '63px',
'width': '87px'
}
});
var image = new Element('img', {
title: '',
src: obj.data_obj.task_image,
styles: {
position: 'absolute',
left: 0,
top: 0
}
});
//Translate task popup
var popup_title = obj.data_obj.title;
switch (obj.type) {
case 'job':
popup_title = TWCT.lang.jobs[obj.data_obj.job_id - 1].name;
break;
case 'pray':
popup_title = TWCT.lang.praying;
break;
case 'sleep':
popup_title = TWCT.lang.sleeping;
break;
}
image.addMousePopup(new MousePopup(popup_title, 250, {
opacity: 0.9
}));
var cancel = new Element('img', {
title: '',
src: 'images/icons/cancel.png',
styles: {
position: 'absolute',
top: '36px',
left: '60px',
cursor: 'pointer'
}
});
cancel.addMousePopup(new MousePopup(TWCT.lang.cancel, 100, {
opacity: 0.9
}));
cancel.addEvent('click', Tasks.cancel_task.bind(Tasks, obj.queue_id, obj.data_obj));
image.injectInside(image_div);
cancel.injectInside(image_div);
var td = new Element('td');
image_div.injectInside(td);
td.injectInside(first_row);
var td = new Element('td');
if (first) {
seconds = (obj.date_done.getTime() - now.getTime()) / 1000;
first = false;
}
seconds = seconds < 0 ? 0 : seconds;
seconds = seconds.formatDuration();
td.innerHTML = seconds;
seconds = 0;
td.injectInside(second_row);
}
if (Tasks.need_automation() && !options.hide_info_full) {
var hasAutomation = (PremiumBoni.hasBonus('automation'));
var full_text = new Element('td', {
rowspan: '2',
styles: {
'font-size': '13px',
'font-weight': 'bold',
'color': 'green',
'width': '300px'
}
});
full_text.innerHTML = TWCT.lang.automation_advert;
full_text.injectInside(first_row);
}
first_row.injectInside(tbody);
second_row.injectInside(tbody);
tbody.injectInside(table);
return table;
} //Redefine task points calculation
Tasks.reload_task_points = function (task_skills, malus, window) {
var popups = [];
return function () {
var skills = Character.skills;
var bonus_total = Character.bonus.skills_total;
var sum = 0;
var xhtml;
for (var i = 0; i < 5; i++) {
var skill = task_skills[i];
xhtml = Character.skill_titles[skill].bold();
var val;
if (bonus_total[skill]) {
val = skills[skill] + bonus_total[skill];
xhtml += ': ' + val;
xhtml += ' (' + skills[skill] + ' + <span style="color:#00d;">' + bonus_total[skill] + '</span>)';
} else {
val = skills[skill];
xhtml += ': ' + val;
}
if (popups[i] == undefined) {
popups[i] = new MousePopup(xhtml, 250, {
opacity: 0.9
});
$E('.task_skill_' + i, window).addMousePopup(popups[i]);
} else {
popups[i].setXHTML(xhtml);
}
$E('.task_skill_' + i, window).setAttribute('src', skill_box_src(skill, val, bonus_total[skill]));
sum += val;
}
$E('.task_sum', window).setAttribute('src', 'img.php?type=task_points&subtype=plus&value=' + sum);
$E('.task_task_points', window).setAttribute('src', 'img.php?type=task_points&subtype=equal&value=' + (sum - malus));
$E('.task_control', window).setStyle('display', (sum - malus) > 0 ? 'block' : 'none');
$E('.task_low_points', window).setStyle('display', (sum - malus) > 0 ? 'none' : 'block');
$E('.missing_task_point_notice', window).innerHTML = s(TWCT.lang.missing_labor_points, Math.abs((sum - malus) - 1));
};
}
};
var translate_employer_window = function () {
Saloon.request_employer_update = function (employer) {
new Ajax('game.php?window=building_saloon&ajax=get_saloon_employer', {
method: 'post',
data: {
employer: employer
},
onComplete: function (data) {
data = Json.evaluate(data);
var page = document.createElement('div');
page.innerHTML = data;
//Translate employer name and text
page.getElementsByTagName('h2')[0].parentNode.innerHTML = '<h2>' +
TWCT.lang.employers[employer].name + '</h2>' + TWCT.lang.employers[employer].text;
//Translate table headers
var headers = page.getElementsByClassName('questlog_header');
//Translate only when exsts
for (var i = 0; i < headers.length; i++) {
headers[i].innerHTML = headers[i].innerHTML.replace('Open quests', TWCT.lang.open_quests)
.replace('Completed quests', TWCT.lang.completed_quests);
}
//Iterate through all quests and translate them
var quest_entries = page.getElementsByClassName('questlog_entrie');
for (var i = 0; i < quest_entries.length; i++) {
//Get quest link
var quest_link = quest_entries[i].getChildren()[0];
//Retrieve quest id
var quest_id = parseInt((/\{quest_id:(\d+)\}/g).exec(quest_link.href)[1]);
//Get quest translation from id
var quest_translation = basic.findQuestTranslationByID(quest_id);
//Check whether translation available
if (quest_translation == null) {
continue;
}
quest_link.innerHTML = quest_translation.questline + ' (' + quest_translation.name + ')';
}
$('tab_saloon').innerHTML = page.innerHTML;
}.bind(this)
}).request();
};
};
//Translate all game items
var translate_items = function () {
//Redefine item popup
ItemPopup.prototype.getXHTML = function () {
var item = this.item_obj;
//Retrieve item translation object for item
var item_translation = basic.findItemTranslationByID(item.item_id);
//Check whether a translation was found
if (item_translation == null) {
//Translation not found, take original strings into translation object
item_translation = {
item_id: item.id,
name: item.name,
description: item.description
};
}
var xhtml = '<table class="item_popup"><tr>';
xhtml += '<td style="padding-right:10px;"><div class="';
var type_class;
switch (item.type) {
case 'right_arm':
case 'left_arm':
case 'body':
type_class = 'item_popup_arms_bg';
break;
case 'head':
case 'foot':
case 'animal':
type_class = 'item_popup_head';
break;
case 'neck':
case 'yield':
type_class = 'item_popup_yield';
break;
default:
throw new Error('no such type');
break;
}
xhtml += type_class;
xhtml += '"><img src="' + item.image + '" alt="" />';
xhtml += '</div></td>';
xhtml += '<td><span class="item_popup_title">';
xhtml += item_translation.name;
xhtml += '</span>';
xhtml += '<span class="item_popup_type">';
var item_type_title = TWCT.lang.item_slots;
var item_sub_title = TWCT.lang.weapon_types;
xhtml += item_translation.description ? item_translation.description : item_type_title[item.type] + ((item.sub_type !== undefined) ? ' (' + item_sub_title[item.sub_type] + ')' : '');
xhtml += '</span>';
if (item.damage) {
xhtml += '<span class="item_popup_damage">' + item.damage.damage_min + '-' + item.damage.damage_max + ' ' + TWCT.lang.damage + '<br /></span><br />';
}
if ($type(item.bonus.attributes) == 'object') {
xhtml += '<span class="item_popup_bonus_attr">';
for (var attr in item.bonus.attributes) {
var attr_title = Character.attribute_titles[attr];
xhtml += (item.bonus.attributes[attr] > 0 ? '+' : '') + item.bonus.attributes[attr] + ' ' + attr_title + '<br />';
}
xhtml += '</span><br />';
}
if ($type(item.bonus.skills) == 'object') {
xhtml += '<span class="item_popup_bonus_skill">';
for (var skill in item.bonus.skills) {
var skill_title = Character.skill_titles[skill];
xhtml += (item.bonus.skills[skill] > 0 ? '+' : '') + item.bonus.skills[skill] + ' ' + skill_title + '<br />';
}
xhtml += '</span><br />';
}
if (item.speed) {
xhtml += '<span class="item_popup_bonus">';
xhtml += TWCT.lang.speed + ': ' + (item.speed <= 1 ? '+' : '') + Math.round(Character.default_speed / (Character.default_speed * item.speed) * 100 - 100) + '%<br />';
xhtml += '</span><br />';
}
xhtml += '<span class="item_popup_trader_price">' + TWCT.lang.purchase_price + ':' + ' ' + item.price + ' $</span><br />';
xhtml += '<span class="item_popup_trader_price">' + TWCT.lang.sales_price + ':' + ' ' + item.sell_price + ' $</span>';
if (item.level)
xhtml += '<span class="item_popup_level' + (Character.level < item.level ? ' item_popup_level_too_low' : '') + '">' + TWCT.lang.requires_level + ' ' + item.level + '</span>';
else
xhtml += '<br />';
xhtml += '<br /></td></tr></table>';
return xhtml;
};
};
//Translate the character window
var translate_character_window = function (params, data) {
//Fetch and wrap page content
var page = document.createElement('div');
page.innerHTML = data.page;
var stats = page.getElementsByTagName('th');
//Translate stats
for (var i = 0; i < stats.length; i++) {
stats[i].innerHTML = TWCT.lang.character_stats[i];
}
return {
page: page.innerHTML,
js: data.js
};
};
//Translate the skill window
var translate_skill_window = function (params, data) {
//Fetch and wrap page content
var page = document.createElement('div');
page.innerHTML = data.page;
//Translate reskill overview
page.getElementsByClassName('skill_content_reskill_title')[0].innerHTML =
TWCT.lang.change_attributes_and_skills;
page.getElementsByClassName('skill_icon_reskill_current')[0].innerHTML =
TWCT.lang.costs_current + ':';
page.getElementsByClassName('skill_icon_reskill_attribute')[0].innerHTML =
TWCT.lang.costs_attributes + ':';
page.getElementsByClassName('skill_icon_reskill_skill')[0].innerHTML =
TWCT.lang.costs_skills + ':';
//Translate skill overview
page.getElementsByClassName('skill_content_reskill_title')[1].innerHTML =
TWCT.lang.assign_attributes_and_skills;
page.getElementsByClassName('skill_icon_reskill_attribute')[1].innerHTML =
TWCT.lang.skilled_attributes + ':';
page.getElementsByClassName('skill_icon_reskill_skill')[1].innerHTML =
TWCT.lang.skilled_skills + ':';
//Skill button labels
var label_cells = page.getElementsByTagName('td');
label_cells[2].innerHTML = TWCT.lang.attributes;
label_cells[3].innerHTML = TWCT.lang.skills;
//Buttons
var all_images = page.getElementsByTagName('img');
for (var i = all_images.length - 1; i >= 0; i--) {
if (all_images[i].id == 'skill_reskill_confirm_button') {
basic.replaceWestButton(all_images[i], TWCT.lang.confirm);
} else if (all_images[i].id == 'skill_reskill_cancel_button') {
basic.replaceWestButton(all_images[i], TWCT.lang.cancel);
}
}
//Translate attributes
var table_cells = page.getElementsByClassName('skill_attribute_skills')[0].getElementsByTagName('td');
table_cells[1].innerHTML = TWCT.lang.attribute_names['strength'];
table_cells[3].innerHTML = TWCT.lang.attribute_names['flexibility'];
table_cells[5].innerHTML = TWCT.lang.attribute_names['dexterity'];
table_cells[7].innerHTML = TWCT.lang.attribute_names['charisma'];
return {
page: page.innerHTML,
js: data.js
};
};
//Translate the inventory window
var translate_inventory_window = function (params, data) {
//Fetch and wrap page content
var page = document.createElement('div');
page.innerHTML = data.page;
//Translate heading
page.getElementsByTagName('h2')[0].innerHTML = TWCT.lang.backpack;
return {
page: page.innerHTML,
js: data.js
};
};
//Translate the job window
var translate_job_window = function (params, data) {
//Retrieve job id
var job = WMap.mapData.jobs.obj[params.x][params.y].job_id;
//Fetch and wrap page content
var page = document.createElement('div');
page.innerHTML = data.page;
//Job name
page.getElementsByTagName('h2') [0].innerHTML = TWCT.lang.jobs[job - 1].name;
//Job description
page.getElementsByClassName('jobDescription') [0].innerHTML = TWCT.lang.jobs[job - 1].desc;
//Retrieve skill display headings to translate them afterwards
var skill_display_headings = page.getElementsByClassName('job_points_div') [0].getElementsByTagName('th');
//Used skill points
skill_display_headings[0].innerHTML = TWCT.lang.used_skill_points;
//Difficulty
skill_display_headings[1].innerHTML = TWCT.lang.difficulty;
//Labor points
skill_display_headings[2].innerHTML = TWCT.lang.labor_points;
//Current assignments
page.getElementsByClassName('task_queue_container') [0].children[0].innerHTML = TWCT.lang.current_assignments;
//Translate notice that labor points are missing
//Retrieve labor points
var labor_points = parseInt(page.getElementsByClassName('task_task_points') [0].getAttribute('alt'));
//Translate job warning (not enough labor points)
page.getElementsByClassName('missing_task_point_notice') [0].innerHTML = TWCT.lang.missing_labor_points.replace('%1', (labor_points) * ( -1) + 1);
var small_warning = page.getElementsByClassName('missing_task_point_notice') [0].parentElement;
small_warning.innerHTML = small_warning.innerHTML.replace('To work on a job you need at least' +
' one labor point.', TWCT.lang.at_least_one_labor_point);
//Translate job attributes in javascript using regex
//Wages
data.js = data.js.replace(/MousePopup\('<strong>Wages:.*'/g, 'MousePopup(\'' +
TWCT.lang.wage_description + '\'');
//Experience
data.js = data.js.replace(/MousePopup\('<strong>Experience:.*'/g, 'MousePopup(\'' +
TWCT.lang.experience_description + '\'');
//Luck
data.js = data.js.replace(/MousePopup\('<strong>Luck:.*'/g, 'MousePopup(\'' +
TWCT.lang.luck_description + '\'');
//Danger
data.js = data.js.replace(/MousePopup\('<strong>Danger:.*'/g, 'MousePopup(\'' +
TWCT.lang.danger_description + '\'');
//Motivation
data.js = data.js.replace(/MousePopup\('<strong>Motivation:.*'/g, 'MousePopup(\'' +
TWCT.lang.motivation_description + '\'');
//Sum of the 5 Skills
data.js = data.js.replace(/MousePopup\('<strong>Sum of the 5 Skills:.*'/g, 'MousePopup(\'' +
TWCT.lang.skill_sum_description + '\'');
//Difficulty
data.js = data.js.replace(/MousePopup\('<strong>Difficulty of the job:.*'/g, 'MousePopup(\'' +
TWCT.lang.difficulty_description + '\'');
//Labor points
data.js = data.js.replace(/MousePopup\('<strong>Labor points:.*'/g, 'MousePopup(\'' +
TWCT.lang.labor_points_description + '\'');
//Product find chance
data.js = data.js.replace(/MousePopup\('The probability to find the item\<br \/\>within 30 minutes of work is\D*/g, 'MousePopup(\'' +
TWCT.lang.product_find_chance);
//Container for starting job
var begin_work_elements = page.getElementsByClassName('start_div')[0].getChildren();
//Begin work
begin_work_elements[0].innerHTML = TWCT.lang.begin_work;
//Table elements for starting job
var begin_work_table_elements = begin_work_elements[3].getElementsByTagName('td');
//Distance
begin_work_table_elements[0].innerHTML = TWCT.lang.distance;
//Duration
begin_work_table_elements[3].innerHTML = TWCT.lang.duration;
//Work time
if (page.getElementsByTagName('select').length > 0) {
var work_time_options = page.getElementsByTagName('select')[0].getChildren();
for (var i = 0; i < work_time_options.length; i++) {
work_time_options[i].innerHTML = TWCT.lang.work_time[i];
work_time_options[i].label = TWCT.lang.work_time[i];
}
}
//Start button
var imgs = page.getElementsByTagName('img');
for (var i = 0; i < imgs.length; i++) {
//Look for the image with the concerning id
if (imgs[i].id == 'button_start_task') {
basic.replaceWestButton(imgs[i], TWCT.lang.ok);
}
}
return {
page: page.innerHTML,
js: data.js
};
};
//Translate saloon window
var translate_saloon_window = function (params, data) {
//Fetch and wrap page content
var page = document.createElement('div');
page.innerHTML = data.page;
//Translate side bar
page.getElementsByTagName('a')[0].innerHTML = TWCT.lang.saloon;
page.getElementsByTagName('a')[1].innerHTML = TWCT.lang.questbook;
return {
page: page.innerHTML,
js: data.js
};
};
//Translate quest window
var translate_quest_window = function (params, data) {
//Fetch and wrap page content
var page = document.createElement('div');
page.innerHTML = data.page;
//Translate buttons
var images = page.getElementsByTagName('img');
for (var i = images.length - 1; i >= 0; i--) {
switch (images[i].id) {
case 'button_quest_accept':
basic.replaceWestButton(images[i], TWCT.lang.accept_quest);
break;
case 'button_quest_finish':
basic.replaceWestButton(images[i], TWCT.lang.finish_quest);
break;
case 'button_quest_cancel':
basic.replaceWestButton(images[i], TWCT.lang.cancel_quest);
break;
}
}
//Look up the regarding quest
var quest = basic.findQuestTranslationByID(params.quest_id);
//Check for null (quest not found) - if so, don't change anything
if (quest == null) {
return {
page: page.innerHTML,
js: data.js
}
}
//Quest found, continue with the translation
//Retrieve quest content
var quest_content = page.getElementsByTagName('div')[0];
//Get employer's image source
var employer_src = page.getElementsByClassName('shadow_content')[0].getChildren()[0].src;
//Retrieve employer name
quest.employer = employer_src.substring(employer_src.lastIndexOf("/") + 1, employer_src.lastIndexOf(".png"));
//Change title
page.getElementsByTagName('h3')[0].innerHTML = quest.questline + ' (' + quest.name + ')';
//Build up quest sring
var quest_string = '<strong>' + TWCT.lang.employers[quest.employer].name + ':<\/strong> ';
quest_string += quest.text;
quest_string += '<br\/><br\/><strong>' + TWCT.lang.target + ':<\/strong> ';
quest_string += quest.target;
//Check whether there is a hint
if (quest.hint != null && quest.hint != '') {
quest_string += '<br\/><br\/><strong>' + TWCT.lang.hint + ':<\/strong> ';
quest_string += '<i>' + quest.hint + '</i>';
}
quest_string += '<br\/><br\/><strong>' + TWCT.lang.requires + ':';
//Replace quest text with translation
quest_content.innerHTML = quest_content.innerHTML.replace(/<strong>(.|\n)*<strong>Requires\:/g, quest_string);
//Perform further translations:
quest_content.innerHTML = quest_content.innerHTML.replace('(Done)', '(' + TWCT.lang.done + ')')
.replace('Reward:', TWCT.lang.reward + ':');
//Translate finish text
data.js = data.js.replace(/\.completion_text = \'.+\'\;/g, '.completion_text = \'' + quest.finish_text + '\';');
return {
page: page.innerHTML,
js: data.js
};
};
//Performs AjaxWindow injection for handling AjaxWindow events
var inject_ajax_window = function (handler_character_window, handler_skill_window, handler_inventory_window, handler_job_window, handler_saloon_window, handler_quest_window) {
//Called when Ajax window has to be opened. Manages the request and calls a matching user function given as
//parameter in order to manipulate the html or javascript data for translation purposes
var inject_handler = function (name, params, data) {
//data.page contains the html page
//data.js contains the javascript
if (typeof data.page === 'undefined') {
return data;
}
switch (name) {
case 'character':
if (handler_character_window == null) {
return data;
}
return handler_character_window(params, data);
case 'skill':
if (handler_skill_window == null) {
return data;
}
return handler_skill_window(params, data);
case 'inventory':
if (handler_inventory_window == null) {
return data;
}
return handler_inventory_window(params, data);
case 'job':
if (handler_job_window == null) {
return data;
}
return handler_job_window(params, data);
case 'building_saloon':
if (handler_saloon_window == null) {
return data;
}
return handler_saloon_window(params, data);
case 'quest':
if (handler_quest_window == null) {
return data;
}
return handler_quest_window(params, data);
default:
return data;
}
return data;
};
AjaxWindow.show = function (name, params, appendName) {
var extendeName = name + ($defined(appendName) ? ('_' + appendName) : '');
var params_str = '';
if ($defined(params)) {
for (var param in params) {
params_str += '&' + param + '=' + params[param];
}
}
if (!AjaxWindow.windows[extendeName]) {
var window_div = new Element('div', {
'id': 'window_' + extendeName,
'class': 'window'
});
AjaxWindow.windows[extendeName] = window_div;
var xhtml = '<div class="window_borders">';
xhtml += '<h2 id="window_' + extendeName + '_title" class="window_title" style="background-image:url(img.php?type=window_title&value=' + name + ');"><span>' + extendeName + '</span></h2>';
xhtml += '<a href="javascript:AjaxWindow.closeAll();" class="window_closeall"></a><a href="javascript:AjaxWindow.toggleSize(\'' + extendeName + '\');" class="window_minimize"></a><a href="javascript:AjaxWindow.close(\'' + extendeName + '\');" class="window_close"></a>';
xhtml += '<div id="window_' + extendeName + '_content" class="window_content"></div>';
xhtml += '</div>';
window_div.setHTML(xhtml);
window_div.bringToTop();
window_div.injectInside('windows');
window_div.centerLeft();
var window_title_div = $('window_' + extendeName + '_title');
window_title_div.addEvent('dblclick', function () {
window_div.centerLeft();
window_div.setStyle('top', 133);
});
window_div.makeDraggable({
handle: window_title_div,
onStart: function () {
},
onComplete: function () {
}.bind(this)
});
window_div.addEvent('mousedown', window_div.bringToTop.bind(window_div, []));
window_title_div.addEvent('mousedown', window_div.bringToTop.bind(window_div, []));
} else {
AjaxWindow.maximize(extendeName);
AjaxWindow.windows[extendeName].bringToTop();
}
AjaxWindow.setThrobber(extendeName);
new Ajax('game.php?window=' + name + params_str, {
method: 'post',
data: {},
onComplete: function (data) {
data = Json.evaluate(data);
var modified = inject_handler(name, params, data);
if (modified.page != undefined) {
AjaxWindow.setJSHTML($('window_' + extendeName + '_content'), modified.page);
}
if (modified.js != undefined) {
eval(modified.js);
}
}.bind(this)
}).request();
}
};
//Main function that performs all translations in row
TWCT.run = function () {
function translate_outgame() {
//Check whether in forum
if (document.location.pathname.indexOf('forum.php') !== -1) {
//In forum
translate_townforum();
} else if (document.location.pathname.indexOf('help.php') !== -1) {
translate_help();
}
else {
//Not ingame and not in forum, translate general start page strings
translate_startpage();
// Check for current page for further translation
if (document.location.search.indexOf('page=register&mode=choose_world') !== -1) {
//Choose world page
translate_chooseworldpage();
}
else if (document.location.search.indexOf('page=register') !== -1) {
//Register page
translate_registerpage();
} else if (document.location.search.indexOf('page=change_password') !== -1) {
//Change password page
translate_changepwpage();
}
else {
//Login page
translate_loginpage();
}
}
}
function translate_ingame() {
//Initialize ingame basics
init();
var handler_character_window = translate_character_window;
var handler_skill_window = translate_skill_window;
var handler_inventory_window = translate_inventory_window;
var handler_job_window = translate_job_window;
var handler_saloon_window = translate_saloon_window;
var handler_quest_window = translate_quest_window;
//Perform ajax window inject
inject_ajax_window(handler_character_window, handler_skill_window, handler_inventory_window, handler_job_window, handler_saloon_window, handler_quest_window);
//Perform translations
translate_general();
translate_map();
translate_main_window();
translate_main_menu();
translate_task_queue();
translate_employer_window();
translate_items();
}
//Show throbber
throbber.show();
//Load translations from web server and wait until everything is loaded, then call back
load_translations(function () {
//Check whether ingame
if (document.location.pathname.indexOf('game.php') == -1) {
//Not ingame, start translation of start page etc.
translate_outgame();
} else {
//Ingame, start ingame translation
translate_ingame();
}
//Hide throbber
window.setTimeout(function () {
throbber.hide()
}, 1000);
});
};
//Finally execute the whole translation process, execute main function
TWCT.run();
}
;
//Wait until DOM is ready and inject script
window.onload = function () {
contentEval(TWCT);
};