Update downloader to get speeches from tolgee

This commit is contained in:
Roman Jaroš 2025-03-02 13:25:40 +01:00
parent 5f21775771
commit e37886072f
6 changed files with 139 additions and 31 deletions

View file

@ -23,7 +23,7 @@ local function GetQuestLogQuestIndex(questID)
return nil
end
local function ReplacePlaceholders(text)
local function ApplyQuestPlaceholders(text)
if text == nil then
return text
end
@ -75,16 +75,16 @@ local function ReplacePlaceholders(text)
return formatted
end
local function TransformText(text)
return ReplacePlaceholders(text)
local function TransformQuestText(text)
return ApplyQuestPlaceholders(text)
end
local function ResolveGender(maleVersion, femaleVersion)
local gender = UnitSex("player")
if gender == 2 then
return TransformText(maleVersion)
return TransformQuestText(maleVersion)
else
return femaleVersion == nil and TransformText(maleVersion) or TransformText(femaleVersion)
return femaleVersion == nil and TransformQuestText(maleVersion) or TransformQuestText(femaleVersion)
end
end
@ -114,10 +114,33 @@ local function GetQuest(id)
end
end
local function ApplySpeechPlaceholders(text)
if text == nil then
return text
end
local playerName = UnitName("player")
local formatted = text;
formatted = string.gsub(formatted, '<name>', playerName);
formatted = string.gsub(formatted, 'Champions', playerName);
return formatted
end
local function GetSpeech(message)
local speech = CzechQuestsAddon.data.speech[message];
local text = speech and speech.text or nil
return ApplySpeechPlaceholders(text)
end
function CzechQuestsAddon:GetData(key, id)
if CzechQuestsAddon.data[key] then
if key == "quest" then
return GetQuest(id)
elseif key == "speech" then
return GetSpeech(id)
elseif CzechQuestsAddon.data[key][id] then
return CzechQuestsAddon.data[key][id]
end

View file

@ -14,13 +14,20 @@ local function ReflowMessages()
offsetY = offsetY + msg:GetHeight()
end
if #messages == 0 then
CzechQuestsAddon.translationSpeechFrame:Hide()
end
CzechQuestsAddon.translationSpeechFrame.content:SetHeight(offsetY + 5)
CzechQuestsAddon.translationSpeechFrame:UpdateScrollChildRect() -- Ujistí se, že velikost obsahu je aktuální
local maxScroll = CzechQuestsAddon.translationSpeechFrame:GetVerticalScrollRange()
CzechQuestsAddon.translationSpeechFrame:SetVerticalScroll(maxScroll) -- Nastaví rolování na dolní okraj
end
local function RemoveMessage(frame)
local emptyMessages = true
for i, fs in ipairs(messages) do
emptyMessages = false
if fs == frame then
local fadeAnimationGroup = fs:CreateAnimationGroup()
local fadeOut = fadeAnimationGroup:CreateAnimation("Alpha")
@ -41,10 +48,6 @@ local function RemoveMessage(frame)
break
end
end
if emptyMessages then
CzechQuestsAddon.translationSpeechFrame:Hide()
end
end
local function AddMessage(sender, message)
@ -56,12 +59,14 @@ local function AddMessage(sender, message)
table.insert(messages, frame)
ReflowMessages()
C_Timer.After(30, function()
C_Timer.After(20, function()
RemoveMessage(frame)
end)
end
function CzechQuestsAddon:ShowSpeechTranslation(sender, message)
local text = CzechQuestsAddon:GetData("speech", message) or message
local text = CzechQuestsAddon:GetData("speech", message)
if text ~= nil then
AddMessage(sender, text)
end
end

View file

@ -538,6 +538,7 @@ CzechQuestsAddon.data.quest[82792] = {
}
CzechQuestsAddon.data.quest[83500] = {
titleMale = "Zekvir, pobočník zvěstovatele",
objectiveMale = "Porazte Zekvira, pobočníka Posla, v jeho vlastním dómu.",
descriptionMale = "Budeme si muset dávat pozor na Zekvira, až se vydáme na průzkum do delv. Myslím, že ještě nejsme dost silní na to, abychom se mu postavili, ale budeme! Budeme pokračovat v průzkumu a získávání pokladů, dokud nebudeme dost silní na to, abychom vypátrali jeho doupě a porazili ho.",
descriptionFemale = "Budeme si muset dávat pozor na Zekvira, až se vydáme na průzkum do delv. Myslím, že ještě nejsme dost silné na to, abychom se mu postavily, ale budeme! Budeme pokračovat v průzkumu a získávání pokladů, dokud nebudeme dost silné na to, abychom vypátraly jeho doupě a porazily ho.",
completionMale = "Dokázali jsme to! Udělali jsme toto místo bezpečné pro všechny dobrodruhy.\n\nTo by mělo Xal'atath dostat do těžké situace, když jí teď chybí jeden z jejích nejmocnějších přisluhovačů.",
@ -1026,6 +1027,7 @@ CzechQuestsAddon.data.quest[80214] = {
}
CzechQuestsAddon.data.quest[81595] = {
titleMale = "Sezónní začátek",
objectiveMale = "Projděte si odměny, které nabízí Reno Jackson, Sir Finley Mrrgglton a Delverův průvodce.",
descriptionMale = "Odhalil jsem spoustu nových pokladů, které můžeš najít v delvách! Není čas čekat. Připravím tě na základy, abys mohl vyrazit!",
descriptionFemale = "Odhalil jsem spoustu nových pokladů, které můžeš najít v delvách! Není čas čekat. Připravím tě na základy, abys mohla vyrazit!",
completionMale = "Není nic lepšího než hledání pokladů! Budeme to potřebovat.\n\nCo? Vypadá to, že někdo spěchá.",
@ -3893,6 +3895,7 @@ CzechQuestsAddon.data.quest[82502] = {
}
CzechQuestsAddon.data.quest[82506] = {
titleMale = "Worldsoul: Darkflame Cleft",
objectiveMale = "Dokončete dungeon Darkflame Cleft na obtížnost Mythic nebo vyšší.",
descriptionMale = "Koboldi! Mohou to být zákeřné potvory, ale... ach, nemůžu si pomoct, ale cítím s nimi jistou spřízněnost! Jejich malé svíčky... udržující jejich malé plamínky... <Faerin si s úsměvem přitiskne ruku na hruď.> Tak stateční! Byli by to ideální Světlonoši, jen kdyby se podělili! A... bylo by méně pravděpodobné, že ti vyškrábou oči. Zprávy o jejich aktivitách v Temnoplamenné štěrbině dělají zemáka starosti. I když bych si přál, aby koboldi byli laskavější, nemůžeme dopustit, aby ubližovali našim spojencům. Prosím, prošetři to!",
descriptionFemale = "Koboldi! Mohou to být zákeřné potvory, ale... ach, nemůžu si pomoct, ale cítím s nimi jistou spřízněnost! Jejich malé svíčky... udržující jejich malé plamínky... <Faerin si s úsměvem přitiskne ruku na hruď.> Tak stateční! Byli by to ideální Světlonoši, jen kdyby se podělili! A... bylo by méně pravděpodobné, že ti vyškrábou oči. Zprávy o jejich aktivitách v Temnoplamenné štěrbině dělají zemákům starosti. I když bych si přál, aby koboldi byli laskavější, nemůžeme dopustit, aby ubližovali našim spojencům. Prosím, prošetři to!",
}
@ -6350,6 +6353,7 @@ CzechQuestsAddon.data.quest[80000] = {
CzechQuestsAddon.data.quest[83333] = {
titleMale = "Připravujeme se na potíže",
objectiveMale = "Dokonč 20 vln události Probuzení stroje.",
descriptionMale = "Zdravím přítele, Stroj je opět v havarijním stavu a vyžaduje obnovu. Potřebuji tvé odborné znalosti k úspěšnému provedení údržby. Za dobře provedenou pomoc bude poskytnuta odměna.",
progressMale = "Už jsi skončil s touhle rachotinou? Stroj hučí a je spokojený, jo?",
progressFemale = "Už jsi skončila s touhle rachotinou? Stroj hučí a je spokojený, jo?",
completionMale = "Ach, všechno opravené, lesklé a hladké! Tady máš svůj lesklý kousek, dobře odvedená práce.\n\nTeď si vyměníme nějaké zboží, ano?",

View file

@ -858,6 +858,7 @@ CzechQuestsAddon.data.quest[82774] = {
}
CzechQuestsAddon.data.quest[80144] = {
titleMale = "Děravý grál",
objectiveMale = "Najděte Děravý grál.",
descriptionMale = "Děravý Grail, jedna z nejlepších relikvií, dlouho ztracená, <name>. Velmi starý, velmi mocný. Hodně by znamenalo, kdyby se našel. Vydej se na velkou výpravu za hledáním Děravého Grailu! Zkus začít s Fishcanem. Je starý jako hlína, mohl by něco vědět. Hledej ho u bazénů na severovýchodě.",
progressMale = "Máš Grail?",
completionMale = "Ještě děravější, než si pamatuješ. Také více rybího slizu.",
@ -1604,7 +1605,7 @@ CzechQuestsAddon.data.item["Sky-Captain Lancekat's Curse__1"] = {
}
CzechQuestsAddon.data.item["Sky-Captain Lancekat's Curse__2"] = {
title = "Sky-Captain Lancekat's Curse",
text = "Helm! Motory vpřed, čtvrtinová rychlost! Připravte se na příchod!\n\nOzval se jásot, když loď zrychlila vpřed, čímž se uvolnily sítě, které ji držely pevně. Několik nerubiánů bylo překvapeno, ztratili sevření a zřítili se do Podmoří. Nebeský kapitán Lancekat se vrhl k zábradlí. 'Střelci! Sundejte ty přeživší nerubiany dřív, než se dostanou k nafukovačce! Ardenti, propalte ty pavučiny Posvátným plamenem! Obsadit děla!' Posádka se dala do pohybu. Nebylo jiného kapitána, pod kterým by v boji sloužili raději.",
text = "'Helm! Motory vpřed, čtvrtinová rychlost! Připravte se na příchod!\n\nOzval se jásot, když loď zrychlila vpřed, čímž se uvolnily sítě, které ji držely pevně. Několik nerubiánů bylo překvapeno, ztratili sevření a zřítili se do Podmoří. Nebeský kapitán Lancekat se vrhl k zábradlí. 'Střelci! Sundejte ty přeživší nerubiany dřív, než se dostanou k nafukovačce! Ardenti, propalte ty pavučiny Posvátným plamenem! Obsadit děla!' Posádka se dala do pohybu. Nebylo jiného kapitána, pod kterým by v boji sloužili raději.",
}
CzechQuestsAddon.data.item["Sky-Captain Lancekat's Curse__3"] = {
title = "Sky-Captain Lancekat's Curse",
@ -1612,7 +1613,7 @@ CzechQuestsAddon.data.item["Sky-Captain Lancekat's Curse__3"] = {
}
CzechQuestsAddon.data.item["Sky-Captain Lancekat's Curse__4"] = {
title = "Sky-Captain Lancekat's Curse",
text = "Dokázal jste to, kapitáne Lancekate!' zvolal praporčík.\n\n'Ne, to vy všichni, jako posádka, jste bojovali za naši posvátnou zemi proti...'\n\nKapitán se zarazil uprostřed věty, ve tváři podivný výraz. Jako by hledal nějakou myšlenku. Jeskyněmi se znovu ozval velký úderný zvuk. Nebyla to však žádná dělová palba.",
text = "'Dokázal jste to, kapitáne Lancekate!' zvolal praporčík.\n\n'Ne, to vy všichni, jako posádka, jste bojovali za naši posvátnou zemi proti...'\n\nKapitán se zarazil uprostřed věty, ve tváři podivný výraz. Jako by hledal nějakou myšlenku. Jeskyněmi se znovu ozval velký úderný zvuk. Nebyla to však žádná dělová palba.",
}
CzechQuestsAddon.data.item["Sky-Captain Lancekat's Curse__5"] = {
title = "Sky-Captain Lancekat's Curse",
@ -2754,6 +2755,7 @@ CzechQuestsAddon.data.quest[85570] = {
}
CzechQuestsAddon.data.quest[85572] = {
titleMale = "Skupinové úsilí",
objectiveMale = "Zeptejte se Alty, Skittera a Ricketa, zda si mohou přečíst deník.",
descriptionMale = "Tohle je, ehm, pěkný nepořádek, který jsi mi předal. Všechny ty stránky... v jakém pořadí mají být? Aha! Zdá se, že tento deník patřil Kul'Tiran, který sem přišel... <Stellin vzhlédne a oči jí září vzrušením.> ...a mohl by v něm být klíč k poznání jeho pobytu na ostrově. Ale ty stránky se špatně čtou... možná bychom se měli poptat, jestli je někdo neumí přečíst? Tady, vezmi si pár stránek. Já se budu dál snažit rozluštit deník základny, zatímco ty půjdeš do tábora a poptáš se.",
descriptionFemale = "Tohle je, ehm, pěkný nepořádek, který jsi mi předala. Všechny ty stránky... v jakém pořadí mají být? Aha! Zdá se, že tento deník patřil Kul'Tiran, který sem přišel... <Stellin vzhlédne a oči jí září vzrušením.> ...a mohl by v něm být klíč k poznání jeho pobytu na ostrově. Ale ty stránky se špatně čtou... možná bychom se měli poptat, jestli je někdo neumí přečíst? Tady, vezmi si pár stránek. Já se budu dál snažit rozluštit deník základny, zatímco ty půjdeš do tábora a poptáš se.",
completionMale = "Oh! <name> Jsem ráda, že jsi tady. Měla jsem průlom s deníkem, ale nejdřív chci vědět, co jsi našel.\n\nNašel jsi něco zajímavého? Podařilo se někomu rozluštit písmo?",
@ -4171,12 +4173,10 @@ CzechQuestsAddon.data.quest[83137] = {
}
CzechQuestsAddon.data.quest[83140] = {
titleMale = "Nepřátelské pracovní prostředí",
objectiveMale = "Zabij Darkfuse, abys odvedl pozornost od Gazlowe a Renzika.",
objectiveFemale = "Zabij Darkfuse, abys odvedla pozornost od Gazlowe a Renzika.",
objectiveMale = "Zabij Darkfuse, abys odvedl pozornost od Gazlowa a Renzika.",
descriptionMale = "Větší a nebezpečnější než Opportunity Point? Tyto jižní doly zní opravdu špatně, i když máš vysokou toleranci ke špatným pracovním podmínkám. Ale co se tam těží? Něco tady stojí velké peníze. Budeme to muset prověřit. Vydám se s Renzikem kolem velkého tábora Darkfuse, ve skrytém režimu. Odvedeš na nás pozornost, ano? Určitě dokážeš zpomalit výrobu, když už tam budeš.",
descriptionFemale = "Větší a nebezpečnější než Opportunity Point? Tyto jižní doly znějí opravdu špatně, i když máš vysokou toleranci k špatným pracovním podmínkám. Ale co se tam těží? Něco tady stojí velké peníze. Budeme to muset prověřit. Vydám se kolem velkého Darkfuse campu s Renzikem ve skrytém režimu. Odvedeš na nás pozornost, ano? Určitě dokážeš zpomalit výrobu, když už tam budeš.",
completionMale = "Všechny oči byly upřeny na tebe, to bylo skvělé. A přivedl jsi nám nový zdroj, toho Zirda? Dobrý nápad.",
completionFemale = "Všechny oči byly upřeny na tebe, to bylo skvělé. A přivedla jsi nám nový zdroj, toho Zirda? Dobrý nápad.",
}
CzechQuestsAddon.data.quest[83174] = {
titleMale = "Náš dobrý kamarád",
@ -4319,7 +4319,6 @@ CzechQuestsAddon.data.quest[83141] = {
descriptionMale = "Jaké 'bohatství' těží ze země? Mohlo by toto hluboké kopání souviset s mými vizemi? Tito Goblini by jistě nenašli hodnotu v něčem takovém, jako je Black Blood. Musíme se na to podívat blíže. Společně nahlédneme do jejich činnosti.",
descriptionFemale = "Jaké 'bohatství' těží ze země? Mohlo by toto hluboké kopání souviset s mými vizemi? Tito Goblini by jistě nenašli hodnotu v něčem takovém, jako je Black Blood. Musíme se na to podívat blíž. Společně nahlédneme do jejich činnosti.",
completionMale = "Moje vize naznačují, že na jihu je toho víc. Měli bychom brzy pokračovat.\n\nMá ten goblin, kterého jsi objevil, více informací?",
completionFemale = "Moje vize naznačují, že na jihu je toho víc. Měli bychom brzy pokračovat.\n\nMá ten goblin, kterého jsi objevila, více informací?",
}
CzechQuestsAddon.data.quest[83364] = {
titleMale = "Divoká cesta časem",
@ -5487,3 +5486,69 @@ CzechQuestsAddon.data.quest[88878] = {
objectiveMale = "Promluv s Boatswainem Hardeem na Port Authority.",
descriptionMale = "Společnost Bilgewater Inc. s tvou pomocí pluje hladce. Boatswain Hardee ti připravil podíl z kořisti... tedy slušnou odměnu za tvou práci.",
}
CzechQuestsAddon.data.speech["It's just business pal."] = {
text = "Je to jen obchod, kamaráde.",
}
CzechQuestsAddon.data.speech["Where is Noggenfogger's Shipment? Don't you make me look bad in front of him."] = {
text = "Kde se nachází zásilka Noggenfogger? Nechtěj, abych před ním vypadal špatně.",
}
CzechQuestsAddon.data.speech["I had to be a... big shot..."] = {
text = "Musel jsem být... velký...",
}
CzechQuestsAddon.data.speech["You get the delivery to the secret project site yesterday! And whatever's left goes to Venture for munition's testing."] = {
text = "Dodávku na tajné místo projektu jste obdrželi včera! A co zbylo, jde do Venture na testování munice.",
}
CzechQuestsAddon.data.speech["This tollbooth has to be brand new."] = {
text = "Tato mýtná budka musí být úplně nová.",
}
CzechQuestsAddon.data.speech["Where is Noggenfogger's shipment? Don't you make me look bad in front of him."] = {
text = "Kde je zásilka Noggenfogger? Nechtěj, abych před ním vypadal špatně.",
}
CzechQuestsAddon.data.speech["You get the delivery to the secret project site yesterday! And whatever's left goes to Venture for munitions testing."] = {
text = "Dodávku na tajné místo projektu jste obdrželi včera! A co zbylo, jde do Venture na testování munice.",
}
CzechQuestsAddon.data.speech["Yer back! What happened?"] = {
text = "Jsi zpátky! Co se stalo?",
}
CzechQuestsAddon.data.speech["Aye, ye'll have tae clear out any beasties so that the anchor can be placed."] = {
text = "Ano, budete muset odstranit všechny bestie, aby bylo možné umístit kotvu.",
}
CzechQuestsAddon.data.speech["Once ye have 'em all set, we'll take the fight tae N'Zoth!"] = {
text = "Jakmile je všechny připravíte, vyrazíme do boje proti N'Zothovi!",
}
CzechQuestsAddon.data.speech["Nay, ye should keep it, my girl. It's sittin' solid in yer hands, like it belongs there. As it was meant tae."] = {
text = "Ne, měla by sis ho nechat, děvče. Sedí ti pevně v rukou, jako by tam patřil. Tak, jak to bylo zamýšleno.",
}
CzechQuestsAddon.data.speech["Well, best be setting sail to Ironforge. No sense in dawdling."] = {
text = "No, nejlépe bude, když se vydáme do Ironforge. Nemá smysl otálet.",
}
CzechQuestsAddon.data.speech["Look for those who will walk the path with you. If I've learned anythin', it's that we'll always need each other to not lose ourselves on the journey."] = {
text = "Hledejte ty, kteří půjdou po této cestě s vámi. Jestli jsem se něco naučil, tak to, že se vždycky budeme potřebovat navzájem, abychom se na cestě neztratili.",
}
CzechQuestsAddon.data.speech["Best of luck to you, Orweyna. One day when you've found what you're looking for, I hope you too find your way home."] = {
text = "Hodně štěstí, Orweyno. Doufám, že až jednoho dne najdeš, co hledáš, najdeš i ty cestu domů.",
}
CzechQuestsAddon.data.speech["Goddess? You mean Azeroth? Aye- I was her speaker for many years, but she's let me go from that service."] = {
text = "Bohyně? Myslíš Azeroth? Ano, byl jsem mnoho let jejím mluvčím, ale ona mě z této služby propustila.",
}
CzechQuestsAddon.data.speech["Aye. It can be lonely, followin' a path that others can't see. But don't make the same mistake I did, puttin' it all on yourself."] = {
text = "Ano. Může to být osamělé, jít cestou, kterou ostatní nevidí. Ale neudělej stejnou chybu jako já a nesváděj všechno na sebe.",
}
CzechQuestsAddon.data.speech["Ach, and who's this?"] = {
text = "Ach, a kdo je tohle?",
}
CzechQuestsAddon.data.speech["Champions, we're chargin' the Forge! He's gettin' weaker! Keep fightin'!"] = {
text = "Šampioni, nabíjíme kovárnu! Slábne! Bojujte dál!",
}
CzechQuestsAddon.data.speech["The Forge is nearly charged, champions! Hang in there!"] = {
text = "Kovárna je téměř nabitá, šampioni! Vydržte!",
}
CzechQuestsAddon.data.speech["Champions! N'Zoth is bridgin' dimensions tae assault the Chamber of Heart!"] = {
text = "Šampioni! N'Zoth přemosťuje dimenze, aby zaútočil na Srdcovou komnatu!",
}
CzechQuestsAddon.data.speech["We have tae defeat him before he corrupts the soul o' Azeroth!"] = {
text = "Musíme ho porazit, než zkazí duši Azerothu!",
}
CzechQuestsAddon.data.speech["Champions, we're overrun! We cannae fire!"] = {
text = "Šampioni, jsme převálcováni! Nemůžeme střílet!",
}

View file

@ -3,7 +3,7 @@ function CzechQuestsAddon:CreateTranslationSpeechFrame()
-- Speech Translation Frame
scroll = CreateFrame("ScrollFrame", "CzechQuestsTranslationSpeechFrame", UIParent, "MinimalScrollFrameTemplate")
scroll:SetSize(CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_WIDTH, 120)
scroll:SetSize(CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_WIDTH, 150)
-- Make movable
scroll:SetMovable(true)
@ -85,7 +85,7 @@ function CzechQuestsAddon:CreateTranslationSpeechFrameMessage(message)
frame.string:SetFont(
CzechQuestsAddon.fontPath .. CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_FAMILY,
CzechQuestsAddon_Store.config.TRANSLATION_SPEECH_FRAME_TEXT_FONT_SIZE,
"OUTLINE"
"THICK"
)
frame.string:SetText(message)

View file

@ -64,6 +64,12 @@ function makeChunks(input: AddonData, chunkSize: number = 1000) {
return result;
}
const splitFirst = (text: string, delimiter: string) => {
const index = text.indexOf(delimiter);
if (index === -1) return text;
return text.slice(index + delimiter.length);
};
(async () => {
const args = process.argv.slice(2);
const addonDir = path.join(process.cwd(), `../Addon/Data/${args[0]}`);
@ -129,11 +135,19 @@ function makeChunks(input: AddonData, chunkSize: number = 1000) {
: tolgeeKey.translations.csf.text,
],
}),
...(tolgeeKey.keyNamespace === 'speech' && {
speeches: [
tolgeeKey.translations.cs.text,
tolgeeKey.translations.cs.text === tolgeeKey.translations.csf.text
? null
: tolgeeKey.translations.csf.text,
tolgeeKey.translations.en.text,
],
}),
name: tolgeeKey.keyDescription,
id: tolgeeKey.keyName.replace('q', '').replace('i', ''),
isQuest: tolgeeKey.keyName.startsWith('q'),
isQuestItem: tolgeeKey.keyName.startsWith('i'),
isSpeech: tolgeeKey.keyName.startsWith('s'),
};
}
} else {
@ -175,10 +189,11 @@ function makeChunks(input: AddonData, chunkSize: number = 1000) {
fs.appendFileSync(fileName, luaQuestRecord, 'utf8');
}
if (czechQuest.isSpeech) {
if (czechQuest.speeches) {
let luaQuestRecord = '';
luaQuestRecord += `CzechQuestsAddon.data.item["${czechQuest.descriptions?.[2]}"] = {\n`;
luaQuestRecord += '\ttext = "' + normalizeTranslation(czechQuest.descriptions?.[0]) + '", \n';
const key = splitFirst(normalizeTranslation(czechQuest.speeches?.[2]) ?? '', ':').trim();
luaQuestRecord += `CzechQuestsAddon.data.speech["${key}"] = {\n`;
luaQuestRecord += '\ttext = "' + normalizeTranslation(czechQuest.speeches?.[0]).trim() + '", \n';
luaQuestRecord += `}\n`;
fs.appendFileSync(fileName, luaQuestRecord, 'utf8');
}
@ -195,17 +210,13 @@ type Quest = {
id: string;
name: string;
names?: (string | null)[];
description?: string;
descriptions?: (string | null)[];
progress?: string;
progresses?: (string | null)[];
completion?: string;
completions?: (string | null)[];
objective?: string;
objectives?: (string | null)[];
speeches?: (string | null)[];
isQuest: boolean;
isQuestItem: boolean;
isSpeech: boolean;
};
type TolgeeKeysData = {