Thread Tools Display Modes
03/06/15, 01:21 AM   #1
Dingodan
 
Dingodan's Avatar
Join Date: Apr 2014
Posts: 50
Khajiit Speak

Hallo,

ist es für jemanden möglich dieses Addon Khajiit Speak für den deutschen Client zu übersetzen?

Ich finde die Idee echt genial, dass man in der gleichen Sprache den NPCs gegenüber sprechen kann wie die Khajiit im Spiel mit uns reden.
  Reply With Quote
03/06/15, 04:56 AM   #2
Baertram
Super Moderator
 
Baertram's Avatar
WoWInterface Super Mod
AddOn Author - Click to view addons
Join Date: Mar 2014
Posts: 4,989
German translations

Das Addon fragt hart im Quelltext englische Begriffe aus den Chat Texten ab und ersetzt diese dann, je nach Geschlecht und Grammatik mit anderen Begriffen (bzw. vertauscht diese dann).

Wenn du der Englischen Sprache mächtig bist lad dir das Addon herunter, geh in den Addon ordner, editiere die Datei KhajitSpeak.lua mit einem Text Editor und suche dir alle englischen Begriffe heraus.

Direkt zu Beginn findest du Tabellen mit englischen Begriffen für die Fragen z.B.
Lua Code:
  1. local fluffyQuestionsA = --NOTE: Split these into two categories. Only match the questioning ones to "Who, Where, Why, What, How"
  2. {
  3.     'I is wondering%s',
  4.     'I\'m curious%s',
  5.     'Please indulge me,',
  6.     'You will indulge me%s',
  7.     'Hmm...',
  8.     'Hmm...', --Two, for double the chance. =P
  9.     'Tell me,',
  10.     'You will tell me%s',
  11.     'Forgive me for asking, but',
  12.     'Forgive me, but',
  13.     --'I apologise for asking, but', --Too much. Too much.
  14.     'I must know%s'
  15. }

Diese kannst du z.B. übersetzen in passende Deutsche Begriffe.
Datei speichern, im Spiel /reloadui und testen als Khajit bei Questgebern etc.


Aber es sind auch viele weitere Englische Abfragen/Rückgabewerte im Quelltexte, z.B. Zeile 222:
Lua Code:
  1. local function KjtSpk_GenGndr(t)
  2.     if khajiitGender == 1 then
  3.         if t == 0 then
  4.             return "she"
  5.         else
  6.             return "her"
  7.         end
  8.     elseif khajiitGender == 2 then
  9.         if t == 0 then
  10.             return "he"
  11.         elseif t == 1 then
  12.             return "him"
  13.         elseif t == 2 then
  14.             return "his"
  15.         end
  16.     end
  17.     return "it" --Sanity check, because I'm rarely sane.
  18. end

Daraus müsste in etwa werden:
Lua Code:
  1. local function KjtSpk_GenGndr(t)
  2.     if khajiitGender == 1 then
  3.         if t == 0 then
  4.             return "sie"
  5.         else
  6.             return "ihr"
  7.         end
  8.     elseif khajiitGender == 2 then
  9.         if t == 0 then
  10.             return "er"
  11.         elseif t == 1 then
  12.             return "ihm"
  13.         elseif t == 2 then
  14.             return "sein"
  15.         end
  16.     end
  17.     return "it" --Sanity check, because I'm rarely sane.
  18. end

Am sinnvollsten wäre es ntürlich, wenn du die festen texte durch Variablen ersetzst, damit man die Sprache umstellen kann oder zur Not englische Texte als "Fallback" Lösung fungieren können.

Dazu müsstest du die bestehenden Text Tabellen, wie z.B. "fluffyQuestionsA" so in etwa umbauen:
Lua Code:
  1. local langStrings = {}
  2. langStrings['en'].fluffyQuestionsA = --NOTE: Split these into two categories. Only match the questioning ones to "Who, Where, Why, What, How"
  3. {
  4. ...
  5. }
  6. langStrings['de'].fluffyQuestionsA = --Deutsche Texte für fluffyQuestionsA
  7. {
  8. ...
  9. }
  10. langStrings['fr'].fluffyQuestionsA = --Französische Texte für fluffyQuestionsA
  11. {
  12. ...
  13. }

Zusätzlich brauchst du die eingestellte Systemsprache für das Spiel und musst dir diese merken. Das machst du dann In Zeile 1017, in Funktion local function KjtSpk_Init(eventCode, addOnName:
Lua Code:
  1. myLang = GetCVar("language.2") or "en"
in myLang steht dann "en" wenn du Englisch als Spielsprache hast, oder "de" wenn du Deutsch eingestellt hast, "fr" für Französisch usw.

An jeder Fundstelle von fluffyQuestionsA musst du dann die Variable ersetzen mit langStrings[myLang].local fluffyQuestionsA. Kannst du mit Suchen & Ersetzen machen.

Ausnahme:
NICHT in den Zeilen 3 bis ... wo du die Variable langStrings['en'].fluffyQuestionsA, langStrings['de'].fluffyQuestionsA ... usw. hast.
Dort werden Sie definiert und müssen mit dem "en", "de" stehen bleiben damit das Programm die entsprechenden Werte finden kann.

Das selbe machst du dann mit den anderen Variablen die fixe Englische Texte haben, wie z.B.
Lua Code:
  1. local fluffyYes = {
  2. ...}
wird zu
Lua Code:
  1. langStrings['en'].fluffyYes = {
  2. ...}
  3. langStrings['de'].fluffyYes = {
  4. ...}
Dann natürlich noch in der "de" Variante die Texte abändern auf Deutsch.
Die Texte stehen immer zwischen den "text hier" oder 'text hier' (Anführungszeichen). Sonderzeichen müssen escaped werden, d.h. mit einem \ davor eingetragen werden.
Beispiel wo das ' Zeichen escaped werden muss: 'I\'m thinking... Yes'

D.h. die Definitionen der Texte musst du mit langStrings['en']. für bestehende Texte bzw. Kopien der Bestehenden Text Tabellen dann mit langStrings['de]. für deutsche texte definieren.
An den Stellen wo die Variablen (z.B. fluffyYes, fluffyNo, fluffyGoodbye) verwendet wurdne musts du dann "dynamisch" die entsprechende Sprachentabelle ansteuern über
Lua Code:
  1. langStrings[myLang].fluffyYes
  2. langStrings[myLang].fluffyNo
  3. langStrings[myLang].fluffyGoodbye

Damit aus der entsprehenden Tabelle der Text gefunden wird.

Zusäztlich gibt es leider auch einige harte Abfragen im Quelltext, wie oben unter "local function KjtSpk_GenGndr(t)" beschrieben.
Dafür müsstest du dann ebenfalls, z.B. in Zeile 199, nach

Lua Code:
  1. local contConv =
  2. {
  3.     'do',
  4.     'does',
  5.     'be',
  6.     'it',
  7.     'he',
  8.     'she',
  9.     'his',
  10.     'her',
  11.     'you',
  12.     'me',
  13.     'we',
  14.     'they',
  15.     'have',
  16.  
  17.     --'the',
  18.  
  19.     'i',
  20.     'i\'ll',
  21.     'i\'m',
  22.     'we',
  23.     'we\'ll'
  24. }
dir neue Variablen Tabellen erstellen, welche zukünftig diese festen texte "er" "sie" "ihm" usw ablösen werden.
Beispiel:

Lua Code:
  1. langStrings["en"].khajitGenderFemale = {
  2.     [1] = 'she',
  3.     [2] = 'she',
  4.     [3] = 'her',
  5. }
  6. langStrings["en"].khajitGenderMale = {
  7.     [1] = 'he',
  8.     [2] = 'him',
  9.     [3] = 'his',
  10. }
  11. langStrings["de"].khajitGenderNeutral = {
  12.     [1] = 'it',
  13. }
  14.  
  15. langStrings["de"].khajitGenderFemale = {
  16.     [1] = 'sie',
  17.     [2] = 'sie',
  18.     [3] = 'ihr',
  19. }
  20. langStrings["de"].khajitGenderMale = {
  21.     [1] = 'er',
  22.     [2] = 'ihm',
  23.     [3] = 'sein',
  24. }
  25. langStrings["de"].khajitGenderNeutral = {
  26.     [1] = 'es',
  27. }

In der Funnktion KjtSpk_GenGndr() dann:

Lua Code:
  1. local function KjtSpk_GenGndr(t)
  2.     if khajiitGender == 1 then
  3.         if t == 0 then
  4.             return langStrings[myLang].khajitGenderFemale[1]
  5.         else
  6.             return langStrings[myLang].khajitGenderFemale[3]
  7.         end
  8.     elseif khajiitGender == 2 then
  9.         if t == 0 then
  10.             return langStrings[myLang].khajitGenderMale[1]
  11.         elseif t == 1 then
  12.             return langStrings[myLang].khajitGenderMale[2]
  13.         elseif t == 2 then
  14.             return langStrings[myLang].khajitGenderMale[3]
  15.         end
  16.     end
  17.     return langStrings[myLang].khajitGenderBeutral[1] --Sanity check, because I'm rarely sane.
  18. end

usw.

Das Gleiche gilt dann für alle anderen fundstellen von festen englischen Texten, welche in 'english text here' bzw. "english text here" Anführungszeichen stehen.

Ich hoffe du kommst damit klar.
Mir fehlt die Zeit das selber zu erledigen und ich denke das ist ein gutes Projekt für dich.
Wenn du fragen hast kannnst du dich gerne melden.
  Reply With Quote
03/06/15, 06:04 AM   #3
Dingodan
 
Dingodan's Avatar
Join Date: Apr 2014
Posts: 50
Vielen Dank erstmal für die Antwort.
Da aber meine Script Kenntnisse so gut sind wie meine Gehirnchirurgie Kenntnisse kann ich deine Info nur dankend an jemanden weitergeben der sich damit auskennt.
  Reply With Quote
03/06/15, 08:16 AM   #4
Baertram
Super Moderator
 
Baertram's Avatar
WoWInterface Super Mod
AddOn Author - Click to view addons
Join Date: Mar 2014
Posts: 4,989
Ich dachte es mir fast. Hatte nur angenommen, dass du für dein gewünschtes Addon auch etwa slernen möchtest damit du den Aufwand dahinter verstehst
Vielleicht komme ich ja mal irgendwann dazu. Muss ich mir aber erst einmal einen Khajit erstellen :-)

Was du aber als Vorbereitung machen kannst ist:
  • Suche dir aus der genannten LUA Datei alle englischen Texte (die Werte zwischen den ' ' bzw "" Anführungszeichen, z.B. 'he', 'she' etc.) heraus und übersetze diese in die entsprechenden Deutschen Texte. Im besten Fall kopierst du dir die ganze Datei einmal und änderst darin dann auf's Deutsch ab

Als Hintergrundinfo dazu:
Das Addon verwendet ja die Questgeber Texte vom Spiel (englischer client) und tauscht dann diese, sofern er ein Wort erkennt, aus mit den Khajit Texten.

Überprüfe daher die Texte, welche dir bei Questgebern etc. angezeigt werden (im englischen Client!) und vergleiche diese mit den Khajit Text Stückchen aus der Addon Datei.
Wenn du verstanden hast wie das Suchen und Ersetzen der Texte im Addon funktioniert (z.B. "I" wird erstzt mit "This one" etc.):
Schaue nach, wie der deutsche Client diese Texte "I" (Ich) und "This one" (Dieser hier) darstellt und übersetzte diese korrekt.
  Reply With Quote
03/06/15, 10:02 AM   #5
Dingodan
 
Dingodan's Avatar
Join Date: Apr 2014
Posts: 50
Originally Posted by Baertram View Post
Ich dachte es mir fast. Hatte nur angenommen, dass du für dein gewünschtes Addon auch etwa slernen möchtest damit du den Aufwand dahinter verstehst
Den Aufwand verstehe ich absolut.

Das mit dem direkten Addon Übersetzen ist ja auch nicht das was ich damit meinte. Meine Aussage bezog sich eher darauf, das Addon "Multi Sprachig" zu machen oder eher Sprach redundant.

Ich habe mich auch schon hingesetzt und ein paar Phrasen übersetzt. Mühsam ernährt sich der Khajiit
  Reply With Quote
03/06/15, 11:52 AM   #6
Baertram
Super Moderator
 
Baertram's Avatar
WoWInterface Super Mod
AddOn Author - Click to view addons
Join Date: Mar 2014
Posts: 4,989
Um das Addon multi sprachig zu machen muss man leider das Bestehende erst einmaö übersetzen (zumindest teilweise) um dann zu testen, wie es aussieht.
Vermutlich wird die englische Grammatik nicht mit der deutschen passen und die Texte "bescheiden" angezeigt werden

Aber daran kann man sich orientieren und dann die Texte entsprechend anpassen, bzw. die Logiken umstellen je nach Sprache.

Aber ohne vernünftige Testdaten kommt man da nur mit TryAndError weiter, was eben zuviel Zeit frisst.

Wenn du die Texte bereits übersetzt hast dann schreib Sie doch mal hier rein demnächst. Ich kann ja mal etwas herumprobieren. Vielleicht bekommen wir eine 50% Lösung hin.
Wenn das Spiel free2play wird werde ich mal schauen.
  Reply With Quote

ESOUI » AddOns » AddOn Search/Requests » Khajiit Speak


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off