Refactor and expand Translation and Quest management.
This commit is contained in:
parent
4660216504
commit
5f21775771
20 changed files with 2546 additions and 9969 deletions
|
@ -6,11 +6,24 @@ import dotenv from 'dotenv';
|
|||
|
||||
dotenv.config({ path: '.env' }).parsed;
|
||||
|
||||
const normalizeTranslation = (translation: string | null | undefined) => {
|
||||
if (translation == null) {
|
||||
return '';
|
||||
}
|
||||
return translation.replace(/\n/g, '\\n').replace(/"/g, "'");
|
||||
};
|
||||
|
||||
const prepareLuaWithFemaleVersion = (quest: Quest, type: keyof Quest, key: string) => {
|
||||
let text = '';
|
||||
const value = quest[type] as string;
|
||||
text += '\t' + key + 'Male = "' + (value?.[0]?.replace(/\n/g, '\\n') ?? '').replace(/"/g, "'") + '", \n';
|
||||
text += '\t' + key + 'Female = "' + (value?.[1]?.replace(/\n/g, '\\n') ?? '').replace(/"/g, "'") + '", \n';
|
||||
const normalizedMaleValue = normalizeTranslation(value?.[0]);
|
||||
const normalizedFemaleValue = normalizeTranslation(value?.[1]);
|
||||
if (normalizedMaleValue != '') {
|
||||
text += '\t' + key + 'Male = "' + normalizedMaleValue + '", \n';
|
||||
}
|
||||
if (normalizedFemaleValue != '') {
|
||||
text += '\t' + key + 'Female = "' + normalizedFemaleValue + '", \n';
|
||||
}
|
||||
return text;
|
||||
};
|
||||
|
||||
|
@ -53,7 +66,7 @@ function makeChunks(input: AddonData, chunkSize: number = 1000) {
|
|||
|
||||
(async () => {
|
||||
const args = process.argv.slice(2);
|
||||
const addonDir = path.join(process.cwd(), `../Quests/Data/${args[0]}`);
|
||||
const addonDir = path.join(process.cwd(), `../Addon/Data/${args[0]}`);
|
||||
|
||||
const addonData: Record<string, Quest> = {};
|
||||
let pageNumber = 0;
|
||||
|
@ -63,7 +76,7 @@ function makeChunks(input: AddonData, chunkSize: number = 1000) {
|
|||
while (true) {
|
||||
const response = await callTolgee<TolgeeTranslationsResponse>('GET', `/translations`, {
|
||||
filterTranslatedInLang: 'cs',
|
||||
languages: 'cs,csf',
|
||||
languages: 'cs,csf,en',
|
||||
size: 2000,
|
||||
page: pageNumber,
|
||||
});
|
||||
|
@ -97,6 +110,7 @@ function makeChunks(input: AddonData, chunkSize: number = 1000) {
|
|||
tolgeeKey.translations.cs.text === tolgeeKey.translations.csf.text
|
||||
? null
|
||||
: tolgeeKey.translations.csf.text,
|
||||
tolgeeKey.translations.en.text,
|
||||
],
|
||||
}),
|
||||
...(tolgeeKey.keyNamespace === 'progress' && {
|
||||
|
@ -117,7 +131,9 @@ function makeChunks(input: AddonData, chunkSize: number = 1000) {
|
|||
}),
|
||||
name: tolgeeKey.keyDescription,
|
||||
id: tolgeeKey.keyName.replace('q', '').replace('i', ''),
|
||||
questItem: tolgeeKey.keyName.startsWith('i'),
|
||||
isQuest: tolgeeKey.keyName.startsWith('q'),
|
||||
isQuestItem: tolgeeKey.keyName.startsWith('i'),
|
||||
isSpeech: tolgeeKey.keyName.startsWith('s'),
|
||||
};
|
||||
}
|
||||
} else {
|
||||
|
@ -136,25 +152,36 @@ function makeChunks(input: AddonData, chunkSize: number = 1000) {
|
|||
} catch (e) {}
|
||||
for (const [, czechQuest] of Object.entries(chunk)) {
|
||||
// prepare variables
|
||||
let variableTable = 'quest';
|
||||
let variableId = czechQuest.id;
|
||||
|
||||
// if quest is quest item witch pages, store it inside item table
|
||||
if (czechQuest.questItem) {
|
||||
variableTable = 'item';
|
||||
const page = czechQuest.id.split('_page')?.[1] ?? null;
|
||||
variableId = `"${czechQuest.name}${page ? `__${page}` : ''}"`;
|
||||
if (czechQuest.isQuest) {
|
||||
let luaQuestRecord = '';
|
||||
luaQuestRecord += `CzechQuestsAddon.data.quest[${czechQuest.id}] = {\n`;
|
||||
luaQuestRecord += prepareLuaWithFemaleVersion(czechQuest, 'names', 'title');
|
||||
luaQuestRecord += prepareLuaWithFemaleVersion(czechQuest, 'objectives', 'objective');
|
||||
luaQuestRecord += prepareLuaWithFemaleVersion(czechQuest, 'descriptions', 'description');
|
||||
luaQuestRecord += prepareLuaWithFemaleVersion(czechQuest, 'progresses', 'progress');
|
||||
luaQuestRecord += prepareLuaWithFemaleVersion(czechQuest, 'completions', 'completion');
|
||||
luaQuestRecord += `}\n`;
|
||||
fs.appendFileSync(fileName, luaQuestRecord, 'utf8');
|
||||
}
|
||||
|
||||
let luaQuestRecord = '';
|
||||
luaQuestRecord += `CzechQuestsAddon.data.${variableTable}[${variableId}] = {\n`;
|
||||
luaQuestRecord += prepareLuaWithFemaleVersion(czechQuest, 'names', 'title');
|
||||
luaQuestRecord += prepareLuaWithFemaleVersion(czechQuest, 'objectives', 'objective');
|
||||
luaQuestRecord += prepareLuaWithFemaleVersion(czechQuest, 'descriptions', 'description');
|
||||
luaQuestRecord += prepareLuaWithFemaleVersion(czechQuest, 'progresses', 'progress');
|
||||
luaQuestRecord += prepareLuaWithFemaleVersion(czechQuest, 'completions', 'completion');
|
||||
luaQuestRecord += `}\n`;
|
||||
fs.appendFileSync(fileName, luaQuestRecord, 'utf8');
|
||||
if (czechQuest.isQuestItem) {
|
||||
const page = czechQuest.id.split('_page')?.[1] ?? null;
|
||||
const variableId = `"${czechQuest.name}${page ? `__${page}` : ''}"`;
|
||||
let luaQuestRecord = '';
|
||||
luaQuestRecord += `CzechQuestsAddon.data.item[${variableId}] = {\n`;
|
||||
luaQuestRecord += '\ttitle = "' + normalizeTranslation(czechQuest.name) + '", \n';
|
||||
luaQuestRecord += '\ttext = "' + normalizeTranslation(czechQuest.descriptions?.[0]) + '", \n';
|
||||
luaQuestRecord += `}\n`;
|
||||
fs.appendFileSync(fileName, luaQuestRecord, 'utf8');
|
||||
}
|
||||
|
||||
if (czechQuest.isSpeech) {
|
||||
let luaQuestRecord = '';
|
||||
luaQuestRecord += `CzechQuestsAddon.data.item["${czechQuest.descriptions?.[2]}"] = {\n`;
|
||||
luaQuestRecord += '\ttext = "' + normalizeTranslation(czechQuest.descriptions?.[0]) + '", \n';
|
||||
luaQuestRecord += `}\n`;
|
||||
fs.appendFileSync(fileName, luaQuestRecord, 'utf8');
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch (e) {
|
||||
|
@ -176,7 +203,9 @@ type Quest = {
|
|||
completions?: (string | null)[];
|
||||
objective?: string;
|
||||
objectives?: (string | null)[];
|
||||
questItem: boolean;
|
||||
isQuest: boolean;
|
||||
isQuestItem: boolean;
|
||||
isSpeech: boolean;
|
||||
};
|
||||
|
||||
type TolgeeKeysData = {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue