diff --git a/js/app.js b/js/app.js
index 80dfe72..3a4e9e6 100644
--- a/js/app.js
+++ b/js/app.js
@@ -1,5 +1,6 @@
import { AVATAR_METADATA, getAvatarInfo } from './avatars-data.js';
-import { SUPPORTED_LANGUAGES, getCurrentLanguage, setLanguage, t, translateElement, translatePath } from './i18n.js';
+import { getLightconeInfo, getRelicSetInfo } from './equipment-data.js';
+import { SUPPORTED_LANGUAGES, TRANSLATIONS, getCurrentLanguage, setLanguage, t, translateElement, translatePath } from './i18n.js';
// Application State
const state = {
@@ -143,6 +144,7 @@ const el = {
valCharEnergy: document.getElementById('val-char-energy'),
modalLcId: document.getElementById('modal-lc-id'),
+ modalLcPreview: document.getElementById('modal-lc-preview'),
modalLcLevel: document.getElementById('modal-lc-level'),
btnModalMaxLc: document.getElementById('btn-modal-max-lc'),
modalLcRankBtns: document.getElementById('modal-lc-rank-btns'),
@@ -271,18 +273,78 @@ function getPathIconHtml(path, size = 20) {
`;
}
+// Update filter dropdown options to current language
+function updateFilterDropdownTranslations() {
+ if (el.avatarFilterElement) {
+ const selected = el.avatarFilterElement.value;
+ const elements = ['Fire', 'Ice', 'Lightning', 'Wind', 'Physical', 'Quantum', 'Imaginary'];
+ if (el.avatarFilterElement.options[0]) {
+ el.avatarFilterElement.options[0].textContent = t('filterAllElements') || 'ทุกธาตุ';
+ }
+ elements.forEach((elemKey, idx) => {
+ if (el.avatarFilterElement.options[idx + 1]) {
+ el.avatarFilterElement.options[idx + 1].textContent = translateElement(elemKey);
+ }
+ });
+ el.avatarFilterElement.value = selected;
+ }
+
+ if (el.avatarFilterPath) {
+ const selected = el.avatarFilterPath.value;
+ const paths = ['Destruction', 'Hunt', 'Erudition', 'Harmony', 'Nihility', 'Preservation', 'Abundance', 'Remembrance', 'Elation'];
+ if (el.avatarFilterPath.options[0]) {
+ el.avatarFilterPath.options[0].textContent = t('filterAllPaths') || 'ทุกประเภท';
+ }
+ paths.forEach((pathKey, idx) => {
+ if (el.avatarFilterPath.options[idx + 1]) {
+ el.avatarFilterPath.options[idx + 1].textContent = translatePath(pathKey);
+ }
+ });
+ el.avatarFilterPath.value = selected;
+ }
+
+ const dict = TRANSLATIONS[getCurrentLanguage()] || TRANSLATIONS.en || TRANSLATIONS.th;
+ if (el.persistentMcSelect && dict.tbOptions) {
+ const curVal = el.persistentMcSelect.value;
+ Array.from(el.persistentMcSelect.options).forEach(opt => {
+ if (dict.tbOptions[opt.value]) {
+ opt.textContent = dict.tbOptions[opt.value];
+ }
+ });
+ el.persistentMcSelect.value = curVal;
+ }
+
+ if (el.persistentMarchSelect && dict.marchOptions) {
+ const curVal = el.persistentMarchSelect.value;
+ Array.from(el.persistentMarchSelect.options).forEach(opt => {
+ if (dict.marchOptions[opt.value]) {
+ opt.textContent = dict.marchOptions[opt.value];
+ }
+ });
+ el.persistentMarchSelect.value = curVal;
+ }
+}
+
// Apply multi-language translations across UI
function applyTranslations() {
document.querySelectorAll('[data-i18n]').forEach(elem => {
const key = elem.getAttribute('data-i18n');
- elem.textContent = t(key);
+ const val = t(key);
+ if (val) elem.textContent = val;
});
document.querySelectorAll('[data-i18n-placeholder]').forEach(elem => {
const key = elem.getAttribute('data-i18n-placeholder');
- elem.placeholder = t(key);
+ const val = t(key);
+ if (val) elem.placeholder = val;
});
+ // Update dynamic filter dropdown options
+ updateFilterDropdownTranslations();
+
+ // Update connection status text with new language
+ setConnectionStatus(state.isConnected);
+
renderLineup(state.statusData?.lineups);
if (state.statusData?.ex_ranks) {
renderExRanks(state.statusData.ex_ranks);
@@ -290,6 +352,7 @@ function applyTranslations() {
if (state.avatarsList.length > 0) {
renderAvatarsGrid();
}
+ loadEquipment();
}
// Setup Language Selector
@@ -350,7 +413,7 @@ function setupServerModes() {
if (el.serverModeSelect) {
el.serverModeSelect.addEventListener('change', (e) => {
updateModeDisplay(e.target.value);
- showToast(`สลับโหมดเซิร์ฟเวอร์เป็น: ${el.lblActiveMode ? el.lblActiveMode.textContent : e.target.value}`, 'info');
+ showToast(t('toastServerSwitched', { mode: el.lblActiveMode ? el.lblActiveMode.textContent : e.target.value }), 'info');
refreshStatus();
});
}
@@ -358,7 +421,7 @@ function setupServerModes() {
if (el.settingServerMode) {
el.settingServerMode.addEventListener('change', (e) => {
updateModeDisplay(e.target.value);
- showToast(`สลับโหมดเซิร์ฟเวอร์เป็น: ${el.lblActiveMode ? el.lblActiveMode.textContent : e.target.value}`, 'info');
+ showToast(t('toastServerSwitched', { mode: el.lblActiveMode ? el.lblActiveMode.textContent : e.target.value }), 'info');
refreshStatus();
});
}
@@ -456,13 +519,13 @@ function renderLineup(lineups) {
const avatarId = currentLineup[slot] || currentLineup[String(slot)] || 0;
const slotCard = document.createElement('div');
slotCard.className = `lineup-slot-card ${avatarId ? 'filled' : ''}`;
- slotCard.title = 'คลิกเพื่อเลือกตัวละครลงตำแหน่งนี้';
+ slotCard.title = t('slotTooltip');
if (avatarId === 0) {
slotCard.innerHTML = `
Slot ${slot + 1}
➕
-
ว่าง (คลิกเพื่อเพิ่ม)
+
${t('slotEmpty')}
`;
} else {
const info = getAvatarInfo(avatarId);
@@ -491,7 +554,7 @@ function renderLineup(lineups) {
// Lineup Picker Modal
function openLineupPicker(slotIndex) {
state.selectedLineupSlot = slotIndex;
- el.modalPickerTitle.textContent = `เลือกตัวละครเข้าสู่ Slot ${slotIndex + 1}`;
+ el.modalPickerTitle.textContent = `${t('pickerTitle')} - Slot ${slotIndex + 1}`;
el.pickerSearch.value = '';
renderPickerGrid();
el.modalLineupPicker.classList.add('active');
@@ -509,7 +572,7 @@ function renderPickerGrid() {
removeCard.style.cursor = 'pointer';
removeCard.innerHTML = `
❌
-
นำออกจากทีม
+
${t('removeFromTeam')}
`;
removeCard.addEventListener('click', async () => {
await assignAvatarToLineup(state.selectedLineupSlot, 0);
@@ -575,10 +638,10 @@ async function assignAvatarToLineup(slot, avatarId) {
}
renderLineup(lineups);
- const name = avatarId ? getAvatarInfo(avatarId).name : 'ว่าง';
- showToast(`อัปเดตทีม Slot ${slot + 1} เป็น: ${name}`, 'success');
+ const name = avatarId ? getAvatarInfo(avatarId).name : t('slotEmpty');
+ showToast(t('toastSlotUpdated', { slot: slot + 1, name }), 'success');
} catch (err) {
- showToast(`เกิดข้อผิดพลาดในการเปลี่ยนทีม: ${err.message}`, 'error');
+ showToast(err.message, 'error');
}
}
@@ -621,7 +684,7 @@ function renderAvatarsGrid() {
});
if (filtered.length === 0) {
- el.avatarsGrid.innerHTML = '
ไม่พบตัวละครที่ตรงกับเงื่อนไข
';
+ el.avatarsGrid.innerHTML = `
${t('noAvatarsFound')}
`;
return;
}
@@ -703,12 +766,12 @@ async function maxSingleAvatar(avatarId) {
} else {
await saveFreesrChangesToServer();
}
- showToast(`⭐ ปรับ ${getAvatarInfo(avatarId).name} เป็น Lv. 80 E6 เรียบร้อย`, 'success');
+ showToast(t('toastCharMaxed', { name: getAvatarInfo(avatarId).name }), 'success');
} catch (err) {
- showToast(`⭐ ปรับ ${getAvatarInfo(avatarId).name} เป็น Lv. 80 E6 (บันทึกในเครื่อง)`, 'info');
+ showToast(t('toastCharMaxed', { name: getAvatarInfo(avatarId).name }), 'info');
}
} else {
- showToast(`⭐ ปรับ ${getAvatarInfo(avatarId).name} เป็น Lv. 80 E6 (บันทึกในเครื่อง)`, 'info');
+ showToast(t('toastCharMaxed', { name: getAvatarInfo(avatarId).name }), 'info');
}
}
@@ -748,13 +811,27 @@ function updateLcRankPips(rank) {
});
}
+function updateModalLcPreview(lcId) {
+ if (!el.modalLcPreview) return;
+ const id = parseInt(lcId, 10);
+ if (!id) {
+ el.modalLcPreview.innerHTML = '';
+ return;
+ }
+ const info = getLightconeInfo(id);
+ el.modalLcPreview.innerHTML = `
+
${info.name}
+
★ ${info.rarity}
+ `;
+}
+
// Character Detail / Build Modal (Inspired by srtools.punklorde.org/skills-info)
function openAvatarDetailModal(avatarItem) {
state.selectedAvatarDetail = avatarItem;
const aid = avatarItem.avatar_id;
const meta = getAvatarInfo(aid);
- el.modalCharTitle.textContent = `ปรับแต่งตัวละคร: ${meta.name} (ID: ${aid})`;
+ el.modalCharTitle.textContent = `${t('modalTitleCharEdit')}: ${meta.name} (ID: ${aid})`;
el.modalCharImg.src = `./assets/avatars/${aid}.png`;
el.modalCharImg.onerror = function() {
this.src = `https://cdn.jsdelivr.net/gh/Mar-7th/StarRailRes@master/icon/avatar/${aid}.png`;
@@ -850,10 +927,12 @@ function openAvatarDetailModal(avatarItem) {
if (el.modalLcId) el.modalLcId.value = equippedLc.item_id || '';
if (el.modalLcLevel) el.modalLcLevel.value = equippedLc.level || 80;
selectedLcRank = equippedLc.rank || 5;
+ updateModalLcPreview(equippedLc.item_id);
} else {
if (el.modalLcId) el.modalLcId.value = '';
if (el.modalLcLevel) el.modalLcLevel.value = 80;
selectedLcRank = 5;
+ updateModalLcPreview(null);
}
updateLcRankPips(selectedLcRank);
@@ -935,7 +1014,7 @@ function maxSkillsForAvatar() {
if (el.checkTraceA6) el.checkTraceA6.checked = true;
if (el.checkTraceStats) el.checkTraceStats.checked = true;
- showToast('⭐ ปรับสกิลและร่องรอยเต็มทั้งหมดแล้ว', 'info');
+ showToast(t('toastAllSkillsMaxed'), 'info');
}
// Max All Build For Current Avatar (Lv.80, Prom 6, E6, Max Skills, Max Traces, 100% Energy, LC Lv.80 S5)
@@ -1105,12 +1184,12 @@ async function saveAvatarDetails() {
} else {
await saveFreesrChangesToServer();
}
- showToast(`บันทึกตัวละคร ${getAvatarInfo(aid).name} เรียบร้อย`, 'success');
+ showToast(t('toastCharSaved', { name: getAvatarInfo(aid).name }), 'success');
} catch (err) {
- showToast(`บันทึกในเครื่องแล้ว (ส่งเซิร์ฟเวอร์ไม่ได้: ${err.message})`, 'warning');
+ showToast(t('toastCharSaved', { name: getAvatarInfo(aid).name }), 'info');
}
} else {
- showToast(`บันทึกตัวละคร ${getAvatarInfo(aid).name} เรียบร้อย`, 'success');
+ showToast(t('toastCharSaved', { name: getAvatarInfo(aid).name }), 'success');
}
}
@@ -1186,13 +1265,13 @@ async function loadEquipment() {
}
}
- el.badgeTotalLc.textContent = `${lcs.length} ชิ้น`;
- el.badgeTotalRelics.textContent = `${relics.length} ชิ้น`;
+ el.badgeTotalLc.textContent = t('itemCount', { n: lcs.length });
+ el.badgeTotalRelics.textContent = t('itemCount', { n: relics.length });
// Render Lightcones
el.lightconesList.innerHTML = '';
if (lcs.length === 0) {
- el.lightconesList.innerHTML = '
ยังไม่มีข้อมูลกรวยแสง (สามารถอัปโหลด freesr-data.json ในแท็บ JSON เพื่อดูได้)
';
+ el.lightconesList.innerHTML = `
${t('noLcData')}
`;
} else {
lcs.slice(0, 100).forEach(lc => {
const item = document.createElement('div');
@@ -1202,12 +1281,17 @@ async function loadEquipment() {
item.style.justifyContent = 'space-between';
item.style.alignItems = 'center';
- const equipped = lc.equip_avatar ? getAvatarInfo(lc.equip_avatar).name : 'ไม่ได้สวมใส่';
+ const lcInfo = getLightconeInfo(lc.item_id);
+ const equipped = lc.equip_avatar ? getAvatarInfo(lc.equip_avatar).name : t('notEquipped');
item.innerHTML = `
-
Lightcone ID: ${lc.item_id} (UID: ${lc.internal_uid})
+
+ ${lcInfo.name}
+ ★ ${lcInfo.rarity}
+ (ID: ${lc.item_id})
+
- Lv. ${lc.level} • ขัดเกลา S${lc.rank} • สวมใส่โดย: ${equipped}
+ Lv. ${lc.level} • S${lc.rank} • ${t('equippedBy')}: ${equipped}
`;
@@ -1218,7 +1302,7 @@ async function loadEquipment() {
// Render Relics
el.relicsList.innerHTML = '';
if (relics.length === 0) {
- el.relicsList.innerHTML = '
ยังไม่มีข้อมูลรีลิกส์ (สามารถอัปโหลด freesr-data.json ในแท็บ JSON เพื่อดูได้)
';
+ el.relicsList.innerHTML = `
${t('noRelicData')}
`;
} else {
relics.slice(0, 100).forEach(r => {
const item = document.createElement('div');
@@ -1228,12 +1312,17 @@ async function loadEquipment() {
item.style.justifyContent = 'space-between';
item.style.alignItems = 'center';
- const equipped = r.equip_avatar ? getAvatarInfo(r.equip_avatar).name : 'ไม่ได้สวมใส่';
+ const setId = r.relic_set_id || r.relic_id || r.item_id;
+ const relicInfo = getRelicSetInfo(setId);
+ const equipped = r.equip_avatar ? getAvatarInfo(r.equip_avatar).name : t('notEquipped');
item.innerHTML = `
-
Relic ID: ${r.item_id} (UID: ${r.internal_uid})
+
+ ${relicInfo.name}
+ (ID: ${r.relic_id || setId})
+
- Lv. ${r.level} • สวมใส่โดย: ${equipped}
+ Lv. ${r.level} • ${t('equippedBy')}: ${equipped}
`;
@@ -1539,7 +1628,11 @@ function setupEvents() {
el.btnModalMaxLc?.addEventListener('click', () => {
if (el.modalLcLevel) el.modalLcLevel.value = 80;
updateLcRankPips(5);
- showToast('ปรับกรวยแสงเป็นเลเวล 80 ขัดเกลา 5 เรียบร้อย', 'info');
+ showToast(t('modalBtnMaxLc'), 'info');
+ });
+
+ el.modalLcId?.addEventListener('input', (e) => {
+ updateModalLcPreview(e.target.value);
});
// Quick Preset Buttons for Character Modal
diff --git a/js/avatars-data.js b/js/avatars-data.js
index 408e900..c4d1c05 100644
--- a/js/avatars-data.js
+++ b/js/avatars-data.js
@@ -1,15 +1,21 @@
-import { getCurrentLanguage, translateElement, translatePath } from './i18n.js';
+import { getCurrentLanguage, translateElement, translatePath } from "./i18n.js";
export const AVATAR_METADATA = {
"1001": {
"names": {
+ "th": "March 7th",
"en": "March 7th",
- "th": "มาร์ช 7th",
"zh-CN": "三月七",
"zh-TW": "三月七",
"ja": "三月なのか",
- "ko": "March 7th",
- "ru": "Март 7"
+ "ko": "Mar. 7th",
+ "ru": "Март 7",
+ "vi": "March 7th",
+ "id": "March 7th",
+ "es": "Siete de Marzo",
+ "fr": "March 7th",
+ "de": "7. März",
+ "pt": "7 de Março"
},
"path": "Preservation",
"element": "Ice",
@@ -18,13 +24,19 @@ export const AVATAR_METADATA = {
},
"1002": {
"names": {
+ "th": "Dan Heng",
"en": "Dan Heng",
- "th": "ดันเฮง",
"zh-CN": "丹恒",
"zh-TW": "丹恆",
"ja": "丹恒",
"ko": "단항",
- "ru": "Дань Хэн"
+ "ru": "Дань Хэн",
+ "vi": "Dan Heng",
+ "id": "Dan Heng",
+ "es": "Dan Heng",
+ "fr": "Dan Heng",
+ "de": "Dan Heng",
+ "pt": "Dan Heng"
},
"path": "Hunt",
"element": "Wind",
@@ -33,13 +45,19 @@ export const AVATAR_METADATA = {
},
"1003": {
"names": {
+ "th": "Himeko",
"en": "Himeko",
- "th": "ฮิเมโกะ",
"zh-CN": "姬子",
"zh-TW": "姬子",
"ja": "姫子",
"ko": "히메코",
- "ru": "Химеко"
+ "ru": "Химеко",
+ "vi": "Himeko",
+ "id": "Himeko",
+ "es": "Himeko",
+ "fr": "Himeko",
+ "de": "Himeko",
+ "pt": "Himeko"
},
"path": "Erudition",
"element": "Fire",
@@ -48,13 +66,19 @@ export const AVATAR_METADATA = {
},
"1004": {
"names": {
+ "th": "Welt",
"en": "Welt",
- "th": "เวิลต์",
"zh-CN": "瓦尔特",
"zh-TW": "瓦爾特",
"ja": "ヴェルト",
"ko": "웰트",
- "ru": "Вельт"
+ "ru": "Вельт",
+ "vi": "Welt",
+ "id": "Welt",
+ "es": "Welt",
+ "fr": "Welt",
+ "de": "Welt",
+ "pt": "Welt"
},
"path": "Nihility",
"element": "Imaginary",
@@ -63,13 +87,19 @@ export const AVATAR_METADATA = {
},
"1005": {
"names": {
+ "th": "Kafka",
"en": "Kafka",
- "th": "คาฟกา",
"zh-CN": "卡芙卡",
"zh-TW": "卡芙卡",
"ja": "カフカ",
"ko": "카프카",
- "ru": "Кафка"
+ "ru": "Кафка",
+ "vi": "Kafka",
+ "id": "Kafka",
+ "es": "Kafka",
+ "fr": "Kafka",
+ "de": "Kafka",
+ "pt": "Kafka"
},
"path": "Nihility",
"element": "Lightning",
@@ -78,13 +108,19 @@ export const AVATAR_METADATA = {
},
"1006": {
"names": {
+ "th": "Silver Wolf",
"en": "Silver Wolf",
- "th": "ซิลเวอร์วูล์ฟ",
"zh-CN": "银狼",
"zh-TW": "銀狼",
"ja": "銀狼",
"ko": "은랑",
- "ru": "Серебряный Волк"
+ "ru": "Серебряный Волк",
+ "vi": "Sói Bạc",
+ "id": "Silver Wolf",
+ "es": "Silver Wolf",
+ "fr": "Louve d'argent",
+ "de": "Silberwolf",
+ "pt": "Loba Prateada"
},
"path": "Nihility",
"element": "Quantum",
@@ -93,13 +129,19 @@ export const AVATAR_METADATA = {
},
"1008": {
"names": {
+ "th": "Arlan",
"en": "Arlan",
- "th": "อาร์ลัน",
"zh-CN": "阿兰",
"zh-TW": "阿蘭",
"ja": "アーラン",
"ko": "아를란",
- "ru": "Арлан"
+ "ru": "Арлан",
+ "vi": "Arlan",
+ "id": "Arlan",
+ "es": "Arlan",
+ "fr": "Arlan",
+ "de": "Arlan",
+ "pt": "Arlan"
},
"path": "Destruction",
"element": "Lightning",
@@ -108,13 +150,19 @@ export const AVATAR_METADATA = {
},
"1009": {
"names": {
+ "th": "Asta",
"en": "Asta",
- "th": "แอสต้า",
"zh-CN": "艾丝妲",
"zh-TW": "艾絲妲",
"ja": "アスター",
"ko": "아스타",
- "ru": "Аста"
+ "ru": "Аста",
+ "vi": "Asta",
+ "id": "Asta",
+ "es": "Asta",
+ "fr": "Asta",
+ "de": "Asta",
+ "pt": "Asta"
},
"path": "Harmony",
"element": "Fire",
@@ -123,13 +171,19 @@ export const AVATAR_METADATA = {
},
"1013": {
"names": {
+ "th": "Herta",
"en": "Herta",
- "th": "เฮอร์ต้า",
"zh-CN": "黑塔",
"zh-TW": "黑塔",
"ja": "ヘルタ",
"ko": "헤르타",
- "ru": "Герта"
+ "ru": "Герта",
+ "vi": "Herta",
+ "id": "Herta",
+ "es": "Herta",
+ "fr": "Herta",
+ "de": "Herta",
+ "pt": "Herta"
},
"path": "Erudition",
"element": "Ice",
@@ -138,13 +192,19 @@ export const AVATAR_METADATA = {
},
"1014": {
"names": {
+ "th": "Saber",
"en": "Saber",
- "th": "เซเบอร์",
- "zh-CN": "阿尔托莉雅·潘德拉贡 (塞巴)",
- "zh-TW": "阿爾托莉雅·潘德拉貢",
+ "zh-CN": "Saber",
+ "zh-TW": "Saber",
"ja": "セイバー",
"ko": "세이버",
- "ru": "Сэйбер"
+ "ru": "Сэйбер",
+ "vi": "Saber",
+ "id": "Saber",
+ "es": "Saber",
+ "fr": "Saber",
+ "de": "Saber",
+ "pt": "Saber"
},
"path": "Destruction",
"element": "Wind",
@@ -153,13 +213,19 @@ export const AVATAR_METADATA = {
},
"1015": {
"names": {
+ "th": "Archer",
"en": "Archer",
- "th": "อาร์เชอร์",
- "zh-CN": "卫宫士郎 (红A/阿茶)",
- "zh-TW": "衛宮士郎 (紅A)",
+ "zh-CN": "Archer",
+ "zh-TW": "Archer",
"ja": "アーチャー",
"ko": "아처",
- "ru": "Арчер"
+ "ru": "Арчер",
+ "vi": "Archer",
+ "id": "Archer",
+ "es": "Archer",
+ "fr": "Archer",
+ "de": "Archer",
+ "pt": "Archer"
},
"path": "Hunt",
"element": "Quantum",
@@ -168,13 +234,19 @@ export const AVATAR_METADATA = {
},
"1101": {
"names": {
+ "th": "Bronya",
"en": "Bronya",
- "th": "โบรเนีย",
"zh-CN": "布洛妮娅",
"zh-TW": "布洛妮婭",
"ja": "ブローニャ",
"ko": "브로냐",
- "ru": "Броня"
+ "ru": "Броня",
+ "vi": "Bronya",
+ "id": "Bronya",
+ "es": "Bronya",
+ "fr": "Bronya",
+ "de": "Bronya",
+ "pt": "Bronya"
},
"path": "Harmony",
"element": "Wind",
@@ -183,13 +255,19 @@ export const AVATAR_METADATA = {
},
"1102": {
"names": {
+ "th": "Seele",
"en": "Seele",
- "th": "เซเล่",
"zh-CN": "希儿",
"zh-TW": "希兒",
"ja": "ゼーレ",
"ko": "제레",
- "ru": "Зеле"
+ "ru": "Зеле",
+ "vi": "Seele",
+ "id": "Seele",
+ "es": "Seele",
+ "fr": "Seele",
+ "de": "Seele",
+ "pt": "Seele"
},
"path": "Hunt",
"element": "Quantum",
@@ -198,13 +276,19 @@ export const AVATAR_METADATA = {
},
"1103": {
"names": {
+ "th": "Serval",
"en": "Serval",
- "th": "เซอวัล",
"zh-CN": "希露瓦",
"zh-TW": "希露瓦",
"ja": "セーバル",
"ko": "서벌",
- "ru": "Сервал"
+ "ru": "Сервал",
+ "vi": "Serval",
+ "id": "Serval",
+ "es": "Serval",
+ "fr": "Serval",
+ "de": "Serval",
+ "pt": "Serval"
},
"path": "Erudition",
"element": "Lightning",
@@ -213,13 +297,19 @@ export const AVATAR_METADATA = {
},
"1104": {
"names": {
+ "th": "Gepard",
"en": "Gepard",
- "th": "เกพาร์ด",
"zh-CN": "杰帕德",
"zh-TW": "傑帕德",
"ja": "ジェパード",
"ko": "게파드",
- "ru": "Гепард"
+ "ru": "Гепард",
+ "vi": "Gepard",
+ "id": "Gepard",
+ "es": "Gepard",
+ "fr": "Gepard",
+ "de": "Gepard",
+ "pt": "Gepard"
},
"path": "Preservation",
"element": "Ice",
@@ -228,13 +318,19 @@ export const AVATAR_METADATA = {
},
"1105": {
"names": {
+ "th": "Natasha",
"en": "Natasha",
- "th": "นาตาชา",
"zh-CN": "娜塔莎",
"zh-TW": "娜塔莎",
"ja": "ナターシャ",
"ko": "나타샤",
- "ru": "Наташа"
+ "ru": "Наташа",
+ "vi": "Natasha",
+ "id": "Natasha",
+ "es": "Natasha",
+ "fr": "Natasha",
+ "de": "Natasha",
+ "pt": "Natasha"
},
"path": "Abundance",
"element": "Physical",
@@ -243,13 +339,19 @@ export const AVATAR_METADATA = {
},
"1106": {
"names": {
+ "th": "Pela",
"en": "Pela",
- "th": "เพล่า",
"zh-CN": "佩拉",
"zh-TW": "佩拉",
"ja": "ペラ",
"ko": "페라",
- "ru": "Пела"
+ "ru": "Пела",
+ "vi": "Pela",
+ "id": "Pela",
+ "es": "Pela",
+ "fr": "Pela",
+ "de": "Pela",
+ "pt": "Pela"
},
"path": "Nihility",
"element": "Ice",
@@ -258,13 +360,19 @@ export const AVATAR_METADATA = {
},
"1107": {
"names": {
+ "th": "Clara",
"en": "Clara",
- "th": "คลารา",
"zh-CN": "克拉拉",
"zh-TW": "克拉拉",
"ja": "クラーラ",
"ko": "클라라",
- "ru": "Клара"
+ "ru": "Клара",
+ "vi": "Clara",
+ "id": "Clara",
+ "es": "Clara",
+ "fr": "Clara",
+ "de": "Clara",
+ "pt": "Clara"
},
"path": "Destruction",
"element": "Physical",
@@ -273,13 +381,19 @@ export const AVATAR_METADATA = {
},
"1108": {
"names": {
+ "th": "Sampo",
"en": "Sampo",
- "th": "ซัมโป",
"zh-CN": "桑博",
"zh-TW": "桑博",
"ja": "サンポ",
"ko": "삼포",
- "ru": "Сампо"
+ "ru": "Сампо",
+ "vi": "Sampo",
+ "id": "Sampo",
+ "es": "Sampo",
+ "fr": "Sampo",
+ "de": "Sampo",
+ "pt": "Sampo"
},
"path": "Nihility",
"element": "Wind",
@@ -288,13 +402,19 @@ export const AVATAR_METADATA = {
},
"1109": {
"names": {
+ "th": "Hook",
"en": "Hook",
- "th": "ฮุค",
"zh-CN": "虎克",
"zh-TW": "虎克",
"ja": "フック",
"ko": "후크",
- "ru": "Хук"
+ "ru": "Хук",
+ "vi": "Hook",
+ "id": "Hook",
+ "es": "Hook",
+ "fr": "Hook",
+ "de": "Hook",
+ "pt": "Hook"
},
"path": "Destruction",
"element": "Fire",
@@ -303,13 +423,19 @@ export const AVATAR_METADATA = {
},
"1110": {
"names": {
+ "th": "Lynx",
"en": "Lynx",
- "th": "ลิงซ์",
"zh-CN": "玲可",
"zh-TW": "玲可",
"ja": "リンクス",
- "ko": "링크스",
- "ru": "Рысь"
+ "ko": "링스",
+ "ru": "Рысь",
+ "vi": "Lynx",
+ "id": "Lynx",
+ "es": "Lynx",
+ "fr": "Lynx",
+ "de": "Lynx",
+ "pt": "Lynx"
},
"path": "Abundance",
"element": "Quantum",
@@ -318,13 +444,19 @@ export const AVATAR_METADATA = {
},
"1111": {
"names": {
+ "th": "Luka",
"en": "Luka",
- "th": "ลูกา",
"zh-CN": "卢卡",
"zh-TW": "盧卡",
"ja": "ルカ",
"ko": "루카",
- "ru": "Лука"
+ "ru": "Лука",
+ "vi": "Luka",
+ "id": "Luka",
+ "es": "Luka",
+ "fr": "Luka",
+ "de": "Luka",
+ "pt": "Luka"
},
"path": "Nihility",
"element": "Physical",
@@ -333,13 +465,19 @@ export const AVATAR_METADATA = {
},
"1112": {
"names": {
+ "th": "Topaz & Numby",
"en": "Topaz & Numby",
- "th": "โทพาซ & นัมบี้",
"zh-CN": "托帕&账账",
- "zh-TW": "托帕&賬賬",
+ "zh-TW": "托帕&帳帳",
"ja": "トパーズ&カブ",
"ko": "토파즈&복순이",
- "ru": "Топаз и Счетовод"
+ "ru": "Топаз и Счетовод",
+ "vi": "Topaz & Numby",
+ "id": "Topaz & Numby",
+ "es": "Topaz y Conti",
+ "fr": "Topaz et Compti",
+ "de": "Topaz & Kontie",
+ "pt": "Topaz e Dinheirinho"
},
"path": "Hunt",
"element": "Fire",
@@ -348,13 +486,19 @@ export const AVATAR_METADATA = {
},
"1201": {
"names": {
+ "th": "Qingque",
"en": "Qingque",
- "th": "ชิงเชวี่ย",
"zh-CN": "青雀",
"zh-TW": "青雀",
"ja": "青雀",
"ko": "청작",
- "ru": "Цинцюэ"
+ "ru": "Цинцюэ",
+ "vi": "Qingque",
+ "id": "Qingque",
+ "es": "Qingque",
+ "fr": "Qingque",
+ "de": "Qingque",
+ "pt": "Qingque"
},
"path": "Erudition",
"element": "Quantum",
@@ -363,13 +507,19 @@ export const AVATAR_METADATA = {
},
"1202": {
"names": {
+ "th": "Tingyun",
"en": "Tingyun",
- "th": "ถิงหยุน",
"zh-CN": "停云",
"zh-TW": "停雲",
"ja": "停雲",
"ko": "정운",
- "ru": "Тинъюнь"
+ "ru": "Тинъюнь",
+ "vi": "Tingyun",
+ "id": "Tingyun",
+ "es": "Tingyun",
+ "fr": "Tingyun",
+ "de": "Tingyun",
+ "pt": "Tingyun"
},
"path": "Harmony",
"element": "Lightning",
@@ -378,13 +528,19 @@ export const AVATAR_METADATA = {
},
"1203": {
"names": {
+ "th": "Luocha",
"en": "Luocha",
- "th": "หลัวชา",
"zh-CN": "罗刹",
"zh-TW": "羅剎",
"ja": "羅刹",
"ko": "나찰",
- "ru": "Лоча"
+ "ru": "Лоча",
+ "vi": "Luocha",
+ "id": "Luocha",
+ "es": "Luocha",
+ "fr": "Luocha",
+ "de": "Luocha",
+ "pt": "Luocha"
},
"path": "Abundance",
"element": "Imaginary",
@@ -393,13 +549,19 @@ export const AVATAR_METADATA = {
},
"1204": {
"names": {
+ "th": "Jing Yuan",
"en": "Jing Yuan",
- "th": "จิ่งหยวน",
"zh-CN": "景元",
"zh-TW": "景元",
"ja": "景元",
"ko": "경원",
- "ru": "Цзин Юань"
+ "ru": "Цзин Юань",
+ "vi": "Jing Yuan",
+ "id": "Jing Yuan",
+ "es": "Jing Yuan",
+ "fr": "Jing Yuan",
+ "de": "Jing Yuan",
+ "pt": "Jing Yuan"
},
"path": "Erudition",
"element": "Lightning",
@@ -408,13 +570,19 @@ export const AVATAR_METADATA = {
},
"1205": {
"names": {
+ "th": "Blade",
"en": "Blade",
- "th": "เบลด",
"zh-CN": "刃",
"zh-TW": "刃",
"ja": "刃",
"ko": "블레이드",
- "ru": "Блэйд"
+ "ru": "Блэйд",
+ "vi": "Blade",
+ "id": "Blade",
+ "es": "Blade",
+ "fr": "Blade",
+ "de": "Blade",
+ "pt": "Blade"
},
"path": "Destruction",
"element": "Wind",
@@ -423,13 +591,19 @@ export const AVATAR_METADATA = {
},
"1206": {
"names": {
+ "th": "Sushang",
"en": "Sushang",
- "th": "ซูซาง",
"zh-CN": "素裳",
"zh-TW": "素裳",
"ja": "素裳",
"ko": "소상",
- "ru": "Сушан"
+ "ru": "Сушан",
+ "vi": "Sushang",
+ "id": "Sushang",
+ "es": "Sushang",
+ "fr": "Sushang",
+ "de": "Sushang",
+ "pt": "Sushang"
},
"path": "Hunt",
"element": "Physical",
@@ -438,13 +612,19 @@ export const AVATAR_METADATA = {
},
"1207": {
"names": {
+ "th": "Yukong",
"en": "Yukong",
- "th": "อวี้คง",
"zh-CN": "驭空",
"zh-TW": "馭空",
"ja": "御空",
"ko": "어공",
- "ru": "Юйкун"
+ "ru": "Юйкун",
+ "vi": "Yukong",
+ "id": "Yukong",
+ "es": "Yukong",
+ "fr": "Yukong",
+ "de": "Yukong",
+ "pt": "Yukong"
},
"path": "Harmony",
"element": "Imaginary",
@@ -453,13 +633,19 @@ export const AVATAR_METADATA = {
},
"1208": {
"names": {
+ "th": "Fu Xuan",
"en": "Fu Xuan",
- "th": "ฟู่เสวียน",
"zh-CN": "符玄",
"zh-TW": "符玄",
"ja": "符玄",
"ko": "부현",
- "ru": "Фу Сюань"
+ "ru": "Фу Сюань",
+ "vi": "Fu Xuan",
+ "id": "Fu Xuan",
+ "es": "Fu Xuan",
+ "fr": "Fu Xuan",
+ "de": "Fu Xuan",
+ "pt": "Fu Xuan"
},
"path": "Preservation",
"element": "Quantum",
@@ -468,13 +654,19 @@ export const AVATAR_METADATA = {
},
"1209": {
"names": {
+ "th": "Yanqing",
"en": "Yanqing",
- "th": "เหยียนชิง",
"zh-CN": "彦卿",
"zh-TW": "彥卿",
"ja": "彦卿",
"ko": "연경",
- "ru": "Яньцин"
+ "ru": "Яньцин",
+ "vi": "Yanqing",
+ "id": "Yanqing",
+ "es": "Yanqing",
+ "fr": "Yanqing",
+ "de": "Yanqing",
+ "pt": "Yanqing"
},
"path": "Hunt",
"element": "Ice",
@@ -483,13 +675,19 @@ export const AVATAR_METADATA = {
},
"1210": {
"names": {
+ "th": "Guinaifen",
"en": "Guinaifen",
- "th": "กุ้ยหน่ายเฟิน",
"zh-CN": "桂乃芬",
"zh-TW": "桂乃芬",
"ja": "桂乃芬",
"ko": "계네빈",
- "ru": "Гуйнайфэнь"
+ "ru": "Гуйнайфэнь",
+ "vi": "Guinaifen",
+ "id": "Guinaifen",
+ "es": "Guinaifen",
+ "fr": "Guinaifen",
+ "de": "Guinaifen",
+ "pt": "Guinaifen"
},
"path": "Nihility",
"element": "Fire",
@@ -498,13 +696,19 @@ export const AVATAR_METADATA = {
},
"1211": {
"names": {
+ "th": "Bailu",
"en": "Bailu",
- "th": "ไป๋ลู่",
"zh-CN": "白露",
"zh-TW": "白露",
"ja": "白露",
"ko": "백로",
- "ru": "Байлу"
+ "ru": "Байлу",
+ "vi": "Bailu",
+ "id": "Bailu",
+ "es": "Bailu",
+ "fr": "Bailu",
+ "de": "Bailu",
+ "pt": "Bailu"
},
"path": "Abundance",
"element": "Lightning",
@@ -513,13 +717,19 @@ export const AVATAR_METADATA = {
},
"1212": {
"names": {
+ "th": "Jingliu",
"en": "Jingliu",
- "th": "จิ้งหลิว",
"zh-CN": "镜流",
"zh-TW": "鏡流",
"ja": "鏡流",
"ko": "경류",
- "ru": "Цзинлю"
+ "ru": "Цзинлю",
+ "vi": "Jingliu",
+ "id": "Jingliu",
+ "es": "Jingliu",
+ "fr": "Jingliu",
+ "de": "Jingliu",
+ "pt": "Jingliu"
},
"path": "Destruction",
"element": "Ice",
@@ -528,13 +738,19 @@ export const AVATAR_METADATA = {
},
"1213": {
"names": {
+ "th": "Dan Heng - จ้าวยลจันทรา",
"en": "Dan Heng • Imbibitor Lunae",
- "th": "ดันเฮง จ้าวยลจันทรา",
- "zh-CN": "丹恒·饮月",
- "zh-TW": "丹恆·飲月",
+ "zh-CN": "丹恒•饮月",
+ "zh-TW": "丹恆•飲月",
"ja": "丹恒・飲月",
- "ko": "단항·음월",
- "ru": "Дань Хэн: Пожиратель Луны"
+ "ko": "단항•음월",
+ "ru": "Дань Хэн: Пожиратель Луны",
+ "vi": "Dan Heng - Ẩm Nguyệt",
+ "id": "Dan Heng · Imbibitor Lunae",
+ "es": "Dan Heng - Imbibitor Lunae",
+ "fr": "Dan Heng • Imbibitor Lunae",
+ "de": "Dan Heng – Imbibitor Lunae",
+ "pt": "Dan Heng - Embebidor Lunae"
},
"path": "Destruction",
"element": "Imaginary",
@@ -543,13 +759,19 @@ export const AVATAR_METADATA = {
},
"1214": {
"names": {
+ "th": "Xueyi",
"en": "Xueyi",
- "th": "เสวียอี้",
"zh-CN": "雪衣",
"zh-TW": "雪衣",
"ja": "雪衣",
"ko": "설의",
- "ru": "Сюэи"
+ "ru": "Сюэи",
+ "vi": "Xueyi",
+ "id": "Xueyi",
+ "es": "Xueyi",
+ "fr": "Xueyi",
+ "de": "Xueyi",
+ "pt": "Xueyi"
},
"path": "Destruction",
"element": "Quantum",
@@ -558,13 +780,19 @@ export const AVATAR_METADATA = {
},
"1215": {
"names": {
+ "th": "Hanya",
"en": "Hanya",
- "th": "ฮันย่า",
"zh-CN": "寒鸦",
"zh-TW": "寒鴉",
"ja": "寒鴉",
"ko": "한아",
- "ru": "Ханья"
+ "ru": "Ханья",
+ "vi": "Hanya",
+ "id": "Hanya",
+ "es": "Hanya",
+ "fr": "Hanya",
+ "de": "Hanya",
+ "pt": "Hanya"
},
"path": "Harmony",
"element": "Physical",
@@ -573,13 +801,19 @@ export const AVATAR_METADATA = {
},
"1217": {
"names": {
+ "th": "Huohuo",
"en": "Huohuo",
- "th": "ฮัวฮัว",
"zh-CN": "藿藿",
"zh-TW": "藿藿",
"ja": "フォフォ",
"ko": "곽향",
- "ru": "Хохо"
+ "ru": "Хохо",
+ "vi": "Huohuo",
+ "id": "Huohuo",
+ "es": "Huohuo",
+ "fr": "Huohuo",
+ "de": "Huohuo",
+ "pt": "Huohuo"
},
"path": "Abundance",
"element": "Wind",
@@ -588,13 +822,19 @@ export const AVATAR_METADATA = {
},
"1218": {
"names": {
+ "th": "Jiaoqiu",
"en": "Jiaoqiu",
- "th": "เจียวชิว",
"zh-CN": "椒丘",
"zh-TW": "椒丘",
"ja": "椒丘",
"ko": "초구",
- "ru": "Цзяоцю"
+ "ru": "Цзяоцю",
+ "vi": "Jiaoqiu",
+ "id": "Jiaoqiu",
+ "es": "Jiaoqiu",
+ "fr": "Jiaoqiu",
+ "de": "Jiaoqiu",
+ "pt": "Jiaoqiu"
},
"path": "Nihility",
"element": "Fire",
@@ -603,13 +843,19 @@ export const AVATAR_METADATA = {
},
"1220": {
"names": {
+ "th": "Feixiao",
"en": "Feixiao",
- "th": "เฟยเซียว",
"zh-CN": "飞霄",
"zh-TW": "飛霄",
"ja": "飛霄",
"ko": "비소",
- "ru": "Фэйсяо"
+ "ru": "Фэйсяо",
+ "vi": "Feixiao",
+ "id": "Feixiao",
+ "es": "Feixiao",
+ "fr": "Feixiao",
+ "de": "Feixiao",
+ "pt": "Feixiao"
},
"path": "Hunt",
"element": "Wind",
@@ -618,13 +864,19 @@ export const AVATAR_METADATA = {
},
"1221": {
"names": {
+ "th": "Yunli",
"en": "Yunli",
- "th": "หยุนหลี่",
"zh-CN": "云璃",
"zh-TW": "雲璃",
"ja": "雲璃",
"ko": "운리",
- "ru": "Юньли"
+ "ru": "Юньли",
+ "vi": "Yunli",
+ "id": "Yunli",
+ "es": "Yunli",
+ "fr": "Yunli",
+ "de": "Yunli",
+ "pt": "Yunli"
},
"path": "Destruction",
"element": "Physical",
@@ -633,13 +885,19 @@ export const AVATAR_METADATA = {
},
"1222": {
"names": {
+ "th": "Lingsha",
"en": "Lingsha",
- "th": "หลิงซา",
"zh-CN": "灵砂",
"zh-TW": "靈砂",
"ja": "霊砂",
"ko": "영사",
- "ru": "Линша"
+ "ru": "Линша",
+ "vi": "Lingsha",
+ "id": "Lingsha",
+ "es": "Lingsha",
+ "fr": "Lingsha",
+ "de": "Lingsha",
+ "pt": "Lingsha"
},
"path": "Abundance",
"element": "Fire",
@@ -648,13 +906,19 @@ export const AVATAR_METADATA = {
},
"1223": {
"names": {
+ "th": "Moze",
"en": "Moze",
- "th": "โม่เจ๋อ",
"zh-CN": "貊泽",
"zh-TW": "貊澤",
"ja": "モゼ",
"ko": "맥택",
- "ru": "Моцзэ"
+ "ru": "Моцзэ",
+ "vi": "Moze",
+ "id": "Moze",
+ "es": "Moze",
+ "fr": "Moze",
+ "de": "Moze",
+ "pt": "Moze"
},
"path": "Hunt",
"element": "Lightning",
@@ -663,13 +927,19 @@ export const AVATAR_METADATA = {
},
"1224": {
"names": {
- "en": "March 7th • The Hunt",
- "th": "ล่าสังหาร",
- "zh-CN": "三月七·巡猎",
- "zh-TW": "三月七·巡獵",
- "ja": "三月なのか・巡狩",
- "ko": "March 7th·수렵",
- "ru": "Март 7 • Охота"
+ "th": "March 7th",
+ "en": "March 7th",
+ "zh-CN": "三月七",
+ "zh-TW": "三月七",
+ "ja": "三月なのか",
+ "ko": "Mar. 7th",
+ "ru": "Март 7",
+ "vi": "March 7th",
+ "id": "March 7th",
+ "es": "Siete de Marzo",
+ "fr": "March 7th",
+ "de": "7. März",
+ "pt": "7 de Março"
},
"path": "Hunt",
"element": "Imaginary",
@@ -678,13 +948,19 @@ export const AVATAR_METADATA = {
},
"1225": {
"names": {
+ "th": "ผู้จากจรลืมหวน",
"en": "Fugue",
- "th": "ฟิวก์",
"zh-CN": "忘归人",
"zh-TW": "忘歸人",
- "ja": "忘帰人",
+ "ja": "帰忘の流離人",
"ko": "망귀인",
- "ru": "Фуга"
+ "ru": "Фуга",
+ "vi": "Fugue",
+ "id": "Fugue",
+ "es": "Fugue",
+ "fr": "Pérégrine",
+ "de": "Fugue",
+ "pt": "Fugue"
},
"path": "Nihility",
"element": "Fire",
@@ -693,13 +969,19 @@ export const AVATAR_METADATA = {
},
"1301": {
"names": {
+ "th": "Gallagher",
"en": "Gallagher",
- "th": "กัลลาเกอร์",
"zh-CN": "加拉赫",
"zh-TW": "加拉赫",
"ja": "ギャラガー",
"ko": "갤러거",
- "ru": "Галлахер"
+ "ru": "Галлахер",
+ "vi": "Gallagher",
+ "id": "Gallagher",
+ "es": "Gallagher",
+ "fr": "Gallagher",
+ "de": "Gallagher",
+ "pt": "Gallagher"
},
"path": "Abundance",
"element": "Fire",
@@ -708,13 +990,19 @@ export const AVATAR_METADATA = {
},
"1302": {
"names": {
+ "th": "Argenti",
"en": "Argenti",
- "th": "อาร์เจนติ",
"zh-CN": "银枝",
"zh-TW": "銀枝",
"ja": "アルジェンティ",
"ko": "아젠티",
- "ru": "Аргенти"
+ "ru": "Аргенти",
+ "vi": "Argenti",
+ "id": "Argenti",
+ "es": "Argenti",
+ "fr": "Argenti",
+ "de": "Argenti",
+ "pt": "Argenti"
},
"path": "Erudition",
"element": "Physical",
@@ -723,13 +1011,19 @@ export const AVATAR_METADATA = {
},
"1303": {
"names": {
+ "th": "Ruan Mei",
"en": "Ruan Mei",
- "th": "รวน เหมย",
- "zh-CN": "阮·梅",
- "zh-TW": "阮·梅",
+ "zh-CN": "阮•梅",
+ "zh-TW": "阮•梅",
"ja": "ルアン・メェイ",
- "ko": "완·매",
- "ru": "Жуань Мэй"
+ "ko": "완•매",
+ "ru": "Жуань Мэй",
+ "vi": "Ruan Mei",
+ "id": "Ruan Mei",
+ "es": "Ruan Mei",
+ "fr": "Ruan Mei",
+ "de": "Ruan Mei",
+ "pt": "Ruan Mei"
},
"path": "Harmony",
"element": "Ice",
@@ -738,13 +1032,19 @@ export const AVATAR_METADATA = {
},
"1304": {
"names": {
+ "th": "Aventurine",
"en": "Aventurine",
- "th": "อเวนทูรีน",
"zh-CN": "砂金",
"zh-TW": "砂金",
"ja": "アベンチュリン",
"ko": "어벤츄린",
- "ru": "Авантюрин"
+ "ru": "Авантюрин",
+ "vi": "Aventurine",
+ "id": "Aventurine",
+ "es": "Aventurino",
+ "fr": "Aventurine",
+ "de": "Aventurin",
+ "pt": "Aventurine"
},
"path": "Preservation",
"element": "Imaginary",
@@ -753,13 +1053,19 @@ export const AVATAR_METADATA = {
},
"1305": {
"names": {
+ "th": "Dr. Ratio",
"en": "Dr. Ratio",
- "th": "ดร. เรโช",
"zh-CN": "真理医生",
"zh-TW": "真理醫生",
"ja": "Dr.レイシオ",
"ko": "Dr. 레이시오",
- "ru": "Д-р Рацио"
+ "ru": "Доктор Рацио",
+ "vi": "Dr. Ratio",
+ "id": "Dr. Ratio",
+ "es": "Dr. Ratio",
+ "fr": "Dr Ratio",
+ "de": "Dr. Wahrheit",
+ "pt": "Dr. Ratio"
},
"path": "Hunt",
"element": "Imaginary",
@@ -768,13 +1074,19 @@ export const AVATAR_METADATA = {
},
"1306": {
"names": {
+ "th": "Sparkle",
"en": "Sparkle",
- "th": "สปาร์กเคิล",
"zh-CN": "花火",
"zh-TW": "花火",
"ja": "花火",
"ko": "스파클",
- "ru": "Искорка"
+ "ru": "Искорка",
+ "vi": "Sparkle",
+ "id": "Sparkle",
+ "es": "Sparkle",
+ "fr": "Sparkle",
+ "de": "Sparkle",
+ "pt": "Sparkle"
},
"path": "Harmony",
"element": "Quantum",
@@ -783,13 +1095,19 @@ export const AVATAR_METADATA = {
},
"1307": {
"names": {
+ "th": "Black Swan",
"en": "Black Swan",
- "th": "แบล็กสวอน",
"zh-CN": "黑天鹅",
"zh-TW": "黑天鵝",
"ja": "ブラックスワン",
"ko": "블랙 스완",
- "ru": "Черный Лебедь"
+ "ru": "Чёрный Лебедь",
+ "vi": "Black Swan",
+ "id": "Black Swan",
+ "es": "Cisne Negro",
+ "fr": "Cygne noir",
+ "de": "Schwarzer Schwan",
+ "pt": "Cisne Negro"
},
"path": "Nihility",
"element": "Wind",
@@ -798,13 +1116,19 @@ export const AVATAR_METADATA = {
},
"1308": {
"names": {
+ "th": "Acheron",
"en": "Acheron",
- "th": "อาเคอรอน",
"zh-CN": "黄泉",
"zh-TW": "黃泉",
"ja": "黄泉",
"ko": "아케론",
- "ru": "Ахерон"
+ "ru": "Ахерон",
+ "vi": "Acheron",
+ "id": "Acheron",
+ "es": "Acheron",
+ "fr": "Achéron",
+ "de": "Acheron",
+ "pt": "Acheron"
},
"path": "Nihility",
"element": "Lightning",
@@ -813,13 +1137,19 @@ export const AVATAR_METADATA = {
},
"1309": {
"names": {
+ "th": "Robin",
"en": "Robin",
- "th": "โรบิน",
"zh-CN": "知更鸟",
"zh-TW": "知更鳥",
"ja": "ロビン",
"ko": "로빈",
- "ru": "Зарянка"
+ "ru": "Зарянка",
+ "vi": "Robin",
+ "id": "Robin",
+ "es": "Robin",
+ "fr": "Robin",
+ "de": "Robin",
+ "pt": "Robin"
},
"path": "Harmony",
"element": "Physical",
@@ -828,13 +1158,19 @@ export const AVATAR_METADATA = {
},
"1310": {
"names": {
+ "th": "Firefly",
"en": "Firefly",
- "th": "ไฟร์ฟลาย",
"zh-CN": "流萤",
"zh-TW": "流螢",
"ja": "ホタル",
"ko": "반디",
- "ru": "Светлячок"
+ "ru": "Светлячок",
+ "vi": "Firefly",
+ "id": "Firefly",
+ "es": "Luciérnaga",
+ "fr": "Luciole",
+ "de": "Glühwürmchen",
+ "pt": "Vaga-lume"
},
"path": "Destruction",
"element": "Fire",
@@ -843,13 +1179,19 @@ export const AVATAR_METADATA = {
},
"1312": {
"names": {
+ "th": "Misha",
"en": "Misha",
- "th": "มิชา",
"zh-CN": "米沙",
"zh-TW": "米沙",
"ja": "ミーシャ",
"ko": "미샤",
- "ru": "Миша"
+ "ru": "Миша",
+ "vi": "Misha",
+ "id": "Misha",
+ "es": "Misha",
+ "fr": "Micha",
+ "de": "Misha",
+ "pt": "Misha"
},
"path": "Destruction",
"element": "Ice",
@@ -858,13 +1200,19 @@ export const AVATAR_METADATA = {
},
"1313": {
"names": {
+ "th": "Sunday",
"en": "Sunday",
- "th": "ซันเดย์",
"zh-CN": "星期日",
"zh-TW": "星期日",
"ja": "サンデー",
"ko": "선데이",
- "ru": "Воскресенье"
+ "ru": "Воскресенье",
+ "vi": "Sunday",
+ "id": "Sunday",
+ "es": "Sunday",
+ "fr": "Sunday",
+ "de": "Sonntag",
+ "pt": "Sunday"
},
"path": "Harmony",
"element": "Imaginary",
@@ -873,13 +1221,19 @@ export const AVATAR_METADATA = {
},
"1314": {
"names": {
+ "th": "Jade",
"en": "Jade",
- "th": "เจด",
"zh-CN": "翡翠",
"zh-TW": "翡翠",
"ja": "ジェイド",
- "ko": "ジェイド",
- "ru": "Яшма"
+ "ko": "제이드",
+ "ru": "Яшма",
+ "vi": "Jade",
+ "id": "Jade",
+ "es": "Jade",
+ "fr": "Jade",
+ "de": "Jade",
+ "pt": "Jade"
},
"path": "Erudition",
"element": "Quantum",
@@ -888,13 +1242,19 @@ export const AVATAR_METADATA = {
},
"1315": {
"names": {
+ "th": "Boothill",
"en": "Boothill",
- "th": "บูทฮิลล์",
"zh-CN": "波提欧",
"zh-TW": "波提歐",
"ja": "ブートヒル",
"ko": "부트힐",
- "ru": "Бутхилл"
+ "ru": "Бутхилл",
+ "vi": "Boothill",
+ "id": "Boothill",
+ "es": "Boothill",
+ "fr": "Le Fossoyeur",
+ "de": "Boothill",
+ "pt": "Boothill"
},
"path": "Hunt",
"element": "Physical",
@@ -903,13 +1263,19 @@ export const AVATAR_METADATA = {
},
"1317": {
"names": {
+ "th": "Rappa",
"en": "Rappa",
- "th": "แรปปา",
"zh-CN": "乱破",
"zh-TW": "亂破",
"ja": "乱破",
"ko": "라파",
- "ru": "Раппа"
+ "ru": "Раппа",
+ "vi": "Rappa",
+ "id": "Rappa",
+ "es": "Rappa",
+ "fr": "Rappa",
+ "de": "Rappa",
+ "pt": "Rappa"
},
"path": "Erudition",
"element": "Imaginary",
@@ -918,13 +1284,19 @@ export const AVATAR_METADATA = {
},
"1321": {
"names": {
- "en": "Dahlia",
- "th": "ดาเลีย",
- "zh-CN": "达莉亚",
- "zh-TW": "達莉亞",
+ "th": "ดอกดาห์เลีย",
+ "en": "The Dahlia",
+ "zh-CN": "大丽花",
+ "zh-TW": "大理花",
"ja": "ダリア",
"ko": "달리아",
- "ru": "Далия"
+ "ru": "Георгина",
+ "vi": "Dahlia",
+ "id": "The Dahlia",
+ "es": "La Dalia",
+ "fr": "Le Dahlia",
+ "de": "Die Dahlie",
+ "pt": "A Dália"
},
"path": "Nihility",
"element": "Fire",
@@ -933,13 +1305,19 @@ export const AVATAR_METADATA = {
},
"1401": {
"names": {
+ "th": "ท่าน Herta",
"en": "The Herta",
- "th": "เดอะ เฮอร์ต้า",
"zh-CN": "大黑塔",
"zh-TW": "大黑塔",
- "ja": "ザ・ヘルタ",
+ "ja": "マダム・ヘルタ",
"ko": "더 헤르타",
- "ru": "Великая Герта"
+ "ru": "Великая Герта",
+ "vi": "Đại Herta",
+ "id": "The Herta",
+ "es": "Sra. Herta",
+ "fr": "La Grande Herta",
+ "de": "Große Herta",
+ "pt": "A Herta"
},
"path": "Erudition",
"element": "Ice",
@@ -948,13 +1326,19 @@ export const AVATAR_METADATA = {
},
"1402": {
"names": {
+ "th": "Aglaea",
"en": "Aglaea",
- "th": "อักเลีย",
"zh-CN": "阿格莱雅",
"zh-TW": "阿格萊雅",
- "ja": "アグラエア",
+ "ja": "アグライア",
"ko": "아글라이아",
- "ru": "Аглая"
+ "ru": "Аглая",
+ "vi": "Aglaea",
+ "id": "Aglaea",
+ "es": "Aglaea",
+ "fr": "Aglaé",
+ "de": "Aglaea",
+ "pt": "Aglaea"
},
"path": "Remembrance",
"element": "Lightning",
@@ -963,13 +1347,19 @@ export const AVATAR_METADATA = {
},
"1403": {
"names": {
+ "th": "Tribbie",
"en": "Tribbie",
- "th": "ทริบบี้",
- "zh-CN": "提比",
- "zh-TW": "提比",
+ "zh-CN": "缇宝",
+ "zh-TW": "緹寶",
"ja": "トリビー",
"ko": "트리비",
- "ru": "Трибби"
+ "ru": "Трибби",
+ "vi": "Tribbie",
+ "id": "Tribbie",
+ "es": "Tribbie",
+ "fr": "Tribbie",
+ "de": "Tribbie",
+ "pt": "Tribbie"
},
"path": "Harmony",
"element": "Quantum",
@@ -978,13 +1368,19 @@ export const AVATAR_METADATA = {
},
"1404": {
"names": {
+ "th": "Mydei",
"en": "Mydei",
- "th": "ไมเดย์",
- "zh-CN": "麦狄",
- "zh-TW": "麥狄",
- "ja": "マイディ",
+ "zh-CN": "万敌",
+ "zh-TW": "萬敵",
+ "ja": "モーディス",
"ko": "마이데이",
- "ru": "Мидей"
+ "ru": "Мидей",
+ "vi": "Mydei",
+ "id": "Mydei",
+ "es": "Midei",
+ "fr": "Mydei",
+ "de": "Mydei",
+ "pt": "Mydei"
},
"path": "Destruction",
"element": "Imaginary",
@@ -993,13 +1389,19 @@ export const AVATAR_METADATA = {
},
"1405": {
"names": {
+ "th": "Anaxa",
"en": "Anaxa",
- "th": "อนากซา",
- "zh-CN": "阿那克萨",
- "zh-TW": "阿那克薩",
- "ja": "アナクサ",
+ "zh-CN": "那刻夏",
+ "zh-TW": "那刻夏",
+ "ja": "アナイクス",
"ko": "아낙사",
- "ru": "Анакса"
+ "ru": "Анакса",
+ "vi": "Anaxa",
+ "id": "Anaxa",
+ "es": "Anaxa",
+ "fr": "Anaxa",
+ "de": "Anaxa",
+ "pt": "Anaxa"
},
"path": "Erudition",
"element": "Wind",
@@ -1008,13 +1410,19 @@ export const AVATAR_METADATA = {
},
"1406": {
"names": {
+ "th": "Cipher",
"en": "Cipher",
- "th": "ไซเฟอร์",
- "zh-CN": "赛弗",
- "zh-TW": "賽弗",
- "ja": "サイファー",
+ "zh-CN": "赛飞儿",
+ "zh-TW": "賽飛兒",
+ "ja": "サフェル",
"ko": "사이퍼",
- "ru": "Сайфер"
+ "ru": "Цифер",
+ "vi": "Cipher",
+ "id": "Cipher",
+ "es": "Cífer",
+ "fr": "Cipher",
+ "de": "Cipher",
+ "pt": "Cipher"
},
"path": "Nihility",
"element": "Quantum",
@@ -1023,13 +1431,19 @@ export const AVATAR_METADATA = {
},
"1407": {
"names": {
+ "th": "Castorice",
"en": "Castorice",
- "th": "แคสโตริซ",
"zh-CN": "遐蝶",
"zh-TW": "遐蝶",
- "ja": "カストリセ",
- "ko": "카스토리체",
- "ru": "Касторисе"
+ "ja": "キャストリス",
+ "ko": "카스토리스",
+ "ru": "Кастория",
+ "vi": "Castorice",
+ "id": "Castorice",
+ "es": "Castorice",
+ "fr": "Castorice",
+ "de": "Castorice",
+ "pt": "Castorice"
},
"path": "Remembrance",
"element": "Quantum",
@@ -1038,13 +1452,19 @@ export const AVATAR_METADATA = {
},
"1408": {
"names": {
+ "th": "Phainon",
"en": "Phainon",
- "th": "ไฟนอน",
- "zh-CN": "法埃农",
- "zh-TW": "法埃農",
+ "zh-CN": "白厄",
+ "zh-TW": "白厄",
"ja": "ファイノン",
"ko": "파이논",
- "ru": "Файнон"
+ "ru": "Фаенон",
+ "vi": "Phainon",
+ "id": "Phainon",
+ "es": "Fainón",
+ "fr": "Phaénon",
+ "de": "Phainon",
+ "pt": "Phainon"
},
"path": "Destruction",
"element": "Physical",
@@ -1053,13 +1473,19 @@ export const AVATAR_METADATA = {
},
"1409": {
"names": {
+ "th": "Hyacine",
"en": "Hyacine",
- "th": "ไฮยาซีน",
- "zh-CN": "风信子",
- "zh-TW": "風信子",
- "ja": "ヒヤシンス",
- "ko": "히아신스",
- "ru": "Гиацинт"
+ "zh-CN": "风堇",
+ "zh-TW": "風堇",
+ "ja": "ヒアンシー",
+ "ko": "히아킨",
+ "ru": "Гиацина",
+ "vi": "Hyacine",
+ "id": "Hyacine",
+ "es": "Hyacine",
+ "fr": "Hyacine",
+ "de": "Hyacine",
+ "pt": "Hyacine"
},
"path": "Remembrance",
"element": "Wind",
@@ -1068,13 +1494,19 @@ export const AVATAR_METADATA = {
},
"1410": {
"names": {
+ "th": "Hysilens",
"en": "Hysilens",
- "th": "ไฮซิเลนส์",
- "zh-CN": "海西伦斯",
- "zh-TW": "海西倫斯",
- "ja": "ヒシレンス",
+ "zh-CN": "海瑟音",
+ "zh-TW": "海瑟音",
+ "ja": "セイレンス",
"ko": "히실렌스",
- "ru": "Гисиленс"
+ "ru": "Гисиленса",
+ "vi": "Hysilens",
+ "id": "Hysilens",
+ "es": "Hysilens",
+ "fr": "Hysilens",
+ "de": "Hysilens",
+ "pt": "Hysilens"
},
"path": "Nihility",
"element": "Physical",
@@ -1083,13 +1515,19 @@ export const AVATAR_METADATA = {
},
"1412": {
"names": {
+ "th": "Cerydra",
"en": "Cerydra",
- "th": "เซอรีดรา",
- "zh-CN": "塞利德拉",
- "zh-TW": "塞利德拉",
- "ja": "セリドラ",
- "ko": "세리드라",
- "ru": "Серидра"
+ "zh-CN": "刻律德菈",
+ "zh-TW": "刻律德菈",
+ "ja": "ケリュドラ",
+ "ko": "케리드라",
+ "ru": "Керидра",
+ "vi": "Cerydra",
+ "id": "Cerydra",
+ "es": "Céridra",
+ "fr": "Cérydra",
+ "de": "Cerydra",
+ "pt": "Cerydra"
},
"path": "Harmony",
"element": "Wind",
@@ -1098,13 +1536,19 @@ export const AVATAR_METADATA = {
},
"1413": {
"names": {
+ "th": "Evernight",
"en": "Evernight",
- "th": "เอเวอร์ไนท์",
- "zh-CN": "永夜",
- "zh-TW": "永夜",
- "ja": "エバーナイト",
+ "zh-CN": "长夜月",
+ "zh-TW": "長夜月",
+ "ja": "長夜月",
"ko": "에버나이트",
- "ru": "Эвернайт"
+ "ru": "Темень",
+ "vi": "Evernight",
+ "id": "Evernight",
+ "es": "Larganoche",
+ "fr": "Nocterna",
+ "de": "Evernight",
+ "pt": "Noite Eterna"
},
"path": "Remembrance",
"element": "Ice",
@@ -1113,13 +1557,19 @@ export const AVATAR_METADATA = {
},
"1414": {
"names": {
- "en": "Dan Heng • Permeating Thunder",
- "th": "ดันเฮงร่างใหม่",
- "zh-CN": "丹恒·行者",
- "zh-TW": "丹恆·行者",
- "ja": "丹恒・行者",
- "ko": "단항·행자",
- "ru": "Дань Хэн • Странник"
+ "th": "Dan Heng - จ้าวทระนงคงปฐพี",
+ "en": "Dan Heng • Permansor Terrae",
+ "zh-CN": "丹恒•腾荒",
+ "zh-TW": "丹恆•騰荒",
+ "ja": "丹恒・騰荒",
+ "ko": "단항•등황",
+ "ru": "Дань Хэн: Освободитель Пустошей",
+ "vi": "Dan Heng - Permansor Terrae",
+ "id": "Dan Heng • Permansor Terrae",
+ "es": "Dan Heng - Permansor Terrae",
+ "fr": "Dan Heng • Permansor Terrae",
+ "de": "Dan Heng – Permansor Terrae",
+ "pt": "Dan Heng - Permansor Terrae"
},
"path": "Preservation",
"element": "Physical",
@@ -1128,13 +1578,19 @@ export const AVATAR_METADATA = {
},
"1415": {
"names": {
+ "th": "Cyrene",
"en": "Cyrene",
- "th": "ไซรีน",
- "zh-CN": "赛琳",
- "zh-TW": "賽琳",
- "ja": "サイリーン",
+ "zh-CN": "昔涟",
+ "zh-TW": "昔漣",
+ "ja": "キュレネ",
"ko": "키레네",
- "ru": "Кирена"
+ "ru": "Кирена",
+ "vi": "Cyrene",
+ "id": "Cyrene",
+ "es": "Cirene",
+ "fr": "Cyrène",
+ "de": "Cyrene",
+ "pt": "Cyrene"
},
"path": "Remembrance",
"element": "Ice",
@@ -1143,13 +1599,19 @@ export const AVATAR_METADATA = {
},
"1501": {
"names": {
+ "th": "Sparxie",
"en": "Sparxie",
- "th": "สปาร์กซี่",
- "zh-CN": "斯帕克茜",
- "zh-TW": "斯帕克茜",
- "ja": "スパーキー",
- "ko": "스팍시",
- "ru": "Спаркси"
+ "zh-CN": "火花",
+ "zh-TW": "火花",
+ "ja": "火花",
+ "ko": "스파키",
+ "ru": "Искра",
+ "vi": "Sparxie",
+ "id": "Sparxie",
+ "es": "Chispa",
+ "fr": "Sparxie",
+ "de": "Sparxie",
+ "pt": "Sparxie"
},
"path": "Elation",
"element": "Fire",
@@ -1158,13 +1620,19 @@ export const AVATAR_METADATA = {
},
"1502": {
"names": {
- "en": "Yaoguang",
- "th": "เย่ากวง",
- "zh-CN": "瑶光",
- "zh-TW": "瑤光",
- "ja": "瑤光",
- "ko": "요광",
- "ru": "Яогуан"
+ "th": "Yao Guang",
+ "en": "Yao Guang",
+ "zh-CN": "爻光",
+ "zh-TW": "爻光",
+ "ja": "爻光",
+ "ko": "효광",
+ "ru": "Яо Гуан",
+ "vi": "Yao Guang",
+ "id": "Yao Guang",
+ "es": "Yao Guang",
+ "fr": "Yao Guang",
+ "de": "Yao Guang",
+ "pt": "Yao Guang"
},
"path": "Elation",
"element": "Physical",
@@ -1173,13 +1641,19 @@ export const AVATAR_METADATA = {
},
"1503": {
"names": {
+ "th": "Pearl",
"en": "Pearl",
- "th": "เพิร์ล",
- "zh-CN": "佩尔 (Pearl)",
- "zh-TW": "佩爾",
+ "zh-CN": "真珠",
+ "zh-TW": "真珠",
"ja": "パール",
"ko": "펄",
- "ru": "Перл"
+ "ru": "Жемчуг",
+ "vi": "Pearl",
+ "id": "Pearl",
+ "es": "Perla",
+ "fr": "Perle",
+ "de": "Pearl",
+ "pt": "Pearl"
},
"path": "Elation",
"element": "Ice",
@@ -1188,13 +1662,19 @@ export const AVATAR_METADATA = {
},
"1504": {
"names": {
+ "th": "Ashveil",
"en": "Ashveil",
- "th": "แอชเวล",
- "zh-CN": "灰纱",
- "zh-TW": "灰紗",
- "ja": "アッシュヴェイル",
+ "zh-CN": "不死途",
+ "zh-TW": "不死途",
+ "ja": "不死途",
"ko": "애쉬베일",
- "ru": "Эшвейл"
+ "ru": "Эшвейл",
+ "vi": "Ashveil",
+ "id": "Ashveil",
+ "es": "Ashveil",
+ "fr": "Ashveil",
+ "de": "Ashveil",
+ "pt": "Ashveil"
},
"path": "Hunt",
"element": "Lightning",
@@ -1203,13 +1683,19 @@ export const AVATAR_METADATA = {
},
"1505": {
"names": {
+ "th": "Evanescia",
"en": "Evanescia",
- "th": "เอวาเนสเซีย",
- "zh-CN": "埃瓦内西亚",
- "zh-TW": "埃瓦內西亞",
- "ja": "エヴァネシア",
+ "zh-CN": "绯英",
+ "zh-TW": "緋英",
+ "ja": "緋英",
"ko": "에바네시아",
- "ru": "Эванесия"
+ "ru": "Эванесса",
+ "vi": "Evanescia",
+ "id": "Evanescia",
+ "es": "Evanescia",
+ "fr": "Evanescia",
+ "de": "Evanescia",
+ "pt": "Evanescia"
},
"path": "Elation",
"element": "Physical",
@@ -1218,13 +1704,19 @@ export const AVATAR_METADATA = {
},
"1506": {
"names": {
- "en": "Silver Wolf Lv.999",
- "th": "ซิลเวอร์วูล์ฟ Lv.999",
- "zh-CN": "银狼 Lv.999",
- "zh-TW": "銀狼 Lv.999",
- "ja": "銀狼 Lv.999",
- "ko": "은랑 Lv.999",
- "ru": "Серебряный Волк Lv.999"
+ "th": "Silver Wolf LV.999",
+ "en": "Silver Wolf LV.999",
+ "zh-CN": "银狼LV.999",
+ "zh-TW": "銀狼LV.999",
+ "ja": "銀狼LV.999",
+ "ko": "은랑 LV.999",
+ "ru": "Серебряный Волк ур. 999",
+ "vi": "Sói Bạc LV.999",
+ "id": "Silver Wolf LV.999",
+ "es": "Silver Wolf Niv. 999",
+ "fr": "Louve d'argent Niv. 999",
+ "de": "Silberwolf St. 999",
+ "pt": "Loba Prateada Nv. 999"
},
"path": "Elation",
"element": "Imaginary",
@@ -1233,13 +1725,19 @@ export const AVATAR_METADATA = {
},
"1507": {
"names": {
+ "th": "ผู้ฝ่าบ่วงมฤตยู Blade",
"en": "Mortenax Blade",
- "th": "มอร์เทแนกซ์ เบลด",
- "zh-CN": "摩天之刃",
- "zh-TW": "摩天之刃",
- "ja": "摩天の刃",
- "ko": "모르테낙스 블레이드",
- "ru": "Мортенакс Блейд"
+ "zh-CN": "千冶•刃",
+ "zh-TW": "千冶•刃",
+ "ja": "千冶・刃",
+ "ko": "천야•블레이드",
+ "ru": "Мортенакс Блэйд",
+ "vi": "Mortenax Blade",
+ "id": "Mortenax Blade",
+ "es": "Mortenax Blade",
+ "fr": "Blade Mortenax",
+ "de": "Mortenax Blade",
+ "pt": "Mortenax Blade"
},
"path": "Nihility",
"element": "Fire",
@@ -1248,13 +1746,19 @@ export const AVATAR_METADATA = {
},
"1508": {
"names": {
- "en": "Tohsaka Rin",
- "th": "โทซากะ ริน",
+ "th": "Rin Tohsaka",
+ "en": "Rin Tohsaka",
"zh-CN": "远坂凛",
"zh-TW": "遠坂凜",
"ja": "遠坂凛",
"ko": "토오사카 린",
- "ru": "Рин Тосака"
+ "ru": "Рин Тосака",
+ "vi": "Rin Tohsaka",
+ "id": "Rin Tohsaka",
+ "es": "Rin Tohsaka",
+ "fr": "Rin Tohsaka",
+ "de": "Rin Tohsaka",
+ "pt": "Rin Tohsaka"
},
"path": "Erudition",
"element": "Quantum",
@@ -1263,13 +1767,19 @@ export const AVATAR_METADATA = {
},
"1509": {
"names": {
+ "th": "Gilgamesh",
"en": "Gilgamesh",
- "th": "กิลกาเมช",
- "zh-CN": "吉尔伽美什 (金闪闪)",
+ "zh-CN": "吉尔伽美什",
"zh-TW": "吉爾伽美什",
"ja": "ギルガメッシュ",
"ko": "길가메시",
- "ru": "Гильгамеш"
+ "ru": "Гильгамеш",
+ "vi": "Gilgamesh",
+ "id": "Gilgamesh",
+ "es": "Gilgamesh",
+ "fr": "Gilgamesh",
+ "de": "Gilgamesh",
+ "pt": "Gilgamesh"
},
"path": "Destruction",
"element": "Lightning",
@@ -1278,43 +1788,40 @@ export const AVATAR_METADATA = {
},
"1510": {
"names": {
- "en": "Himeko Nova",
- "th": "ฮิเมโกะ โนวา",
- "zh-CN": "姬子·新星",
- "zh-TW": "姬子·新星",
- "ja": "姫子・ノヴァ",
- "ko": "히메코 노바",
- "ru": "Химеко Нова"
+ "th": "Himeko - นวดารา",
+ "en": "Himeko • Nova",
+ "zh-CN": "姬子•启行",
+ "zh-TW": "姬子•啟行",
+ "ja": "姫子・旅立ち",
+ "ko": "히메코•노바",
+ "ru": "Химеко: Нова",
+ "vi": "Himeko - Nova",
+ "id": "Himeko • Nova",
+ "es": "Himeko Nova",
+ "fr": "Himeko • Nova",
+ "de": "Himeko – Nova",
+ "pt": "Himeko - Nova"
},
"path": "Erudition",
"element": "Fire",
"rarity": 5,
"hasExRank": false
},
- "1511": {
- "names": {
- "en": "Nihilux",
- "th": "นิฮิลักซ์",
- "zh-CN": "虚无之神·尼希卢克斯",
- "zh-TW": "虛無之神·尼希盧克斯",
- "ja": "ニヒラックス",
- "ko": "니힐룩스",
- "ru": "Нихилюкс"
- },
- "path": "Elation",
- "element": "Quantum",
- "rarity": 5,
- "hasExRank": false
- },
"1512": {
"names": {
+ "th": "Robin - คีตะคิมหันต์",
"en": "Robin • Summeretto",
- "th": "โรบิน ซัมเมอร์",
- "zh-CN": "知更鸟·夏日",
- "zh-TW": "知更鳥·夏日",
- "ja": "ロビン・サマー",
- "ko": "로빈·서머",
- "ru": "Зарянка • Лето"
+ "zh-CN": "知更鸟•晴歌",
+ "zh-TW": "知更鳥•晴歌",
+ "ja": "ロビン・夏空の歌",
+ "ko": "로빈•서머레토",
+ "ru": "Зарянка: Яснопея",
+ "vi": "Robin - Summeretto",
+ "id": "Robin • Summeretto",
+ "es": "Robin Estival",
+ "fr": "Robin • Estivaria",
+ "de": "Robin – Summeretto",
+ "pt": "Robin - Summeretto"
},
"path": "Remembrance",
"element": "Wind",
@@ -1323,13 +1830,19 @@ export const AVATAR_METADATA = {
},
"1513": {
"names": {
+ "th": "Aventurine - คลื่นสำราญ",
"en": "Aventurine • Waveflair",
- "th": "อเวนทูรีน คลื่นทะเล",
- "zh-CN": "砂金·夏日浪潮",
- "zh-TW": "砂金·夏日浪潮",
- "ja": "アベンチュリン・サマー",
- "ko": "어벤츄린·웨이브",
- "ru": "Авантюрин • Волна"
+ "zh-CN": "砂金•戏浪",
+ "zh-TW": "砂金•戲浪",
+ "ja": "アベンチュリン・波と戯れる夏",
+ "ko": "어벤츄린•웨이브",
+ "ru": "Авантюрин: Прибой",
+ "vi": "Aventurine - Waveflair",
+ "id": "Aventurine • Waveflair",
+ "es": "Aventurino Oleaje",
+ "fr": "Aventurine • Croisette",
+ "de": "Aventurin – Wellenflair",
+ "pt": "Aventurine - Veraneio"
},
"path": "Elation",
"element": "Quantum",
@@ -1338,13 +1851,19 @@ export const AVATAR_METADATA = {
},
"8001": {
"names": {
- "en": "Trailblazer (Physical ♂)",
"th": "ผู้บุกเบิก (กายภาพ ♂)",
- "zh-CN": "开拓者 (物理 ♂)",
- "zh-TW": "開拓者 (物理 ♂)",
- "ja": "開拓者 (物理 ♂)",
- "ko": "개척자 (물리 ♂)",
- "ru": "Первопроходец (Физ. ♂)"
+ "en": "Trailblazer (Physical ♂)",
+ "zh-CN": "开拓者 (物理 男)",
+ "zh-TW": "開拓者 (物理 男)",
+ "ja": "開拓者 (物理 男)",
+ "ko": "개척자 (물리 남)",
+ "ru": "Первопроходец (Физический ♂)",
+ "vi": "{NICKNAME}",
+ "id": "{NICKNAME}",
+ "es": "{NICKNAME}",
+ "fr": "{NICKNAME}",
+ "de": "{NICKNAME}",
+ "pt": "{NICKNAME}"
},
"path": "Destruction",
"element": "Physical",
@@ -1353,13 +1872,19 @@ export const AVATAR_METADATA = {
},
"8002": {
"names": {
- "en": "Trailblazer (Physical ♀)",
"th": "ผู้บุกเบิก (กายภาพ ♀)",
- "zh-CN": "开拓者 (物理 ♀)",
- "zh-TW": "開拓者 (物理 ♀)",
- "ja": "開拓者 (物理 ♀)",
- "ko": "개척자 (물리 ♀)",
- "ru": "Первопроходец (Физ. ♀)"
+ "en": "Trailblazer (Physical ♀)",
+ "zh-CN": "开拓者 (物理 女)",
+ "zh-TW": "開拓者 (物理 女)",
+ "ja": "開拓者 (物理 女)",
+ "ko": "개척자 (물리 여)",
+ "ru": "Первопроходец (Физический ♀)",
+ "vi": "{NICKNAME}",
+ "id": "{NICKNAME}",
+ "es": "{NICKNAME}",
+ "fr": "{NICKNAME}",
+ "de": "{NICKNAME}",
+ "pt": "{NICKNAME}"
},
"path": "Destruction",
"element": "Physical",
@@ -1368,13 +1893,19 @@ export const AVATAR_METADATA = {
},
"8003": {
"names": {
- "en": "Trailblazer (Fire ♂)",
"th": "ผู้บุกเบิก (ไฟ ♂)",
- "zh-CN": "开拓者 (火 ♂)",
- "zh-TW": "開拓者 (火 ♂)",
- "ja": "開拓者 (炎 ♂)",
- "ko": "개척자 (화염 ♂)",
- "ru": "Первопроходец (Огонь ♂)"
+ "en": "Trailblazer (Fire ♂)",
+ "zh-CN": "开拓者 (火 男)",
+ "zh-TW": "開拓者 (火 男)",
+ "ja": "開拓者 (炎 男)",
+ "ko": "개척자 (화염 남)",
+ "ru": "Первопроходец (Огненный ♂)",
+ "vi": "{NICKNAME}",
+ "id": "{NICKNAME}",
+ "es": "{NICKNAME}",
+ "fr": "{NICKNAME}",
+ "de": "{NICKNAME}",
+ "pt": "{NICKNAME}"
},
"path": "Preservation",
"element": "Fire",
@@ -1383,13 +1914,19 @@ export const AVATAR_METADATA = {
},
"8004": {
"names": {
- "en": "Trailblazer (Fire ♀)",
"th": "ผู้บุกเบิก (ไฟ ♀)",
- "zh-CN": "开拓者 (火 ♀)",
- "zh-TW": "開拓者 (火 ♀)",
- "ja": "開拓者 (炎 ♀)",
- "ko": "개척자 (화염 ♀)",
- "ru": "Первопроходец (Огонь ♀)"
+ "en": "Trailblazer (Fire ♀)",
+ "zh-CN": "开拓者 (火 女)",
+ "zh-TW": "開拓者 (火 女)",
+ "ja": "開拓者 (炎 女)",
+ "ko": "개척자 (화염 여)",
+ "ru": "Первопроходец (Огненный ♀)",
+ "vi": "{NICKNAME}",
+ "id": "{NICKNAME}",
+ "es": "{NICKNAME}",
+ "fr": "{NICKNAME}",
+ "de": "{NICKNAME}",
+ "pt": "{NICKNAME}"
},
"path": "Preservation",
"element": "Fire",
@@ -1398,13 +1935,19 @@ export const AVATAR_METADATA = {
},
"8005": {
"names": {
- "en": "Trailblazer (Harmony ♂)",
"th": "ผู้บุกเบิก (ประสาน ♂)",
- "zh-CN": "开拓者 (同谐 ♂)",
- "zh-TW": "開拓者 (同諧 ♂)",
- "ja": "開拓者 (調和 ♂)",
- "ko": "개척자 (화합 ♂)",
- "ru": "Первопроходец (Гармония ♂)"
+ "en": "Trailblazer (Harmony ♂)",
+ "zh-CN": "开拓者 (同谐 男)",
+ "zh-TW": "開拓者 (同諧 男)",
+ "ja": "開拓者 (調和 男)",
+ "ko": "개척자 (화합 남)",
+ "ru": "Первопроходец (Гармония ♂)",
+ "vi": "{NICKNAME}",
+ "id": "{NICKNAME}",
+ "es": "{NICKNAME}",
+ "fr": "{NICKNAME}",
+ "de": "{NICKNAME}",
+ "pt": "{NICKNAME}"
},
"path": "Harmony",
"element": "Imaginary",
@@ -1413,13 +1956,19 @@ export const AVATAR_METADATA = {
},
"8006": {
"names": {
- "en": "Trailblazer (Harmony ♀)",
"th": "ผู้บุกเบิก (ประสาน ♀)",
- "zh-CN": "开拓者 (同谐 ♀)",
- "zh-TW": "開拓者 (同諧 ♀)",
- "ja": "開拓者 (調和 ♀)",
- "ko": "개척자 (화합 ♀)",
- "ru": "Первопроходец (Гармония ♀)"
+ "en": "Trailblazer (Harmony ♀)",
+ "zh-CN": "开拓者 (同谐 女)",
+ "zh-TW": "開拓者 (同諧 女)",
+ "ja": "開拓者 (調和 女)",
+ "ko": "개척자 (화합 여)",
+ "ru": "Первопроходец (Гармония ♀)",
+ "vi": "{NICKNAME}",
+ "id": "{NICKNAME}",
+ "es": "{NICKNAME}",
+ "fr": "{NICKNAME}",
+ "de": "{NICKNAME}",
+ "pt": "{NICKNAME}"
},
"path": "Harmony",
"element": "Imaginary",
@@ -1428,13 +1977,19 @@ export const AVATAR_METADATA = {
},
"8007": {
"names": {
- "en": "Trailblazer (Remembrance ♂)",
"th": "ผู้บุกเบิก (ความทรงจำ ♂)",
- "zh-CN": "开拓者 (记忆 ♂)",
- "zh-TW": "開拓者 (記憶 ♂)",
- "ja": "開拓者 (記憶 ♂)",
- "ko": "개척자 (기억 ♂)",
- "ru": "Первопроходец (Память ♂)"
+ "en": "Trailblazer (Remembrance ♂)",
+ "zh-CN": "开拓者 (记忆 男)",
+ "zh-TW": "開拓者 (記憶 男)",
+ "ja": "開拓者 (記憶 男)",
+ "ko": "개척자 (기억 남)",
+ "ru": "Первопроходец (Память ♂)",
+ "vi": "{NICKNAME}",
+ "id": "{NICKNAME}",
+ "es": "{NICKNAME}",
+ "fr": "{NICKNAME}",
+ "de": "{NICKNAME}",
+ "pt": "{NICKNAME}"
},
"path": "Remembrance",
"element": "Ice",
@@ -1443,13 +1998,19 @@ export const AVATAR_METADATA = {
},
"8008": {
"names": {
- "en": "Trailblazer (Remembrance ♀)",
"th": "ผู้บุกเบิก (ความทรงจำ ♀)",
- "zh-CN": "开拓者 (记忆 ♀)",
- "zh-TW": "開拓者 (記憶 ♀)",
- "ja": "開拓者 (記憶 ♀)",
- "ko": "개척자 (기억 ♀)",
- "ru": "Первопроходец (Память ♀)"
+ "en": "Trailblazer (Remembrance ♀)",
+ "zh-CN": "开拓者 (记忆 女)",
+ "zh-TW": "開拓者 (记忆 女)",
+ "ja": "開拓者 (記憶 女)",
+ "ko": "개척자 (기억 여)",
+ "ru": "Первопроходец (Память ♀)",
+ "vi": "{NICKNAME}",
+ "id": "{NICKNAME}",
+ "es": "{NICKNAME}",
+ "fr": "{NICKNAME}",
+ "de": "{NICKNAME}",
+ "pt": "{NICKNAME}"
},
"path": "Remembrance",
"element": "Ice",
@@ -1458,13 +2019,19 @@ export const AVATAR_METADATA = {
},
"8009": {
"names": {
- "en": "Trailblazer (Elation ♂)",
- "th": "ผู้บุกเบิก (ปีติ ♂)",
- "zh-CN": "开拓者 (欢愉 ♂)",
- "zh-TW": "開拓者 (歡愉 ♂)",
- "ja": "開拓者 (愉悦 ♂)",
- "ko": "개척자 (환락 ♂)",
- "ru": "Первопроходец (Радость ♂)"
+ "th": "{NICKNAME}",
+ "en": "{NICKNAME}",
+ "zh-CN": "{NICKNAME}",
+ "zh-TW": "{NICKNAME}",
+ "ja": "{NICKNAME}",
+ "ko": "{NICKNAME}",
+ "ru": "{NICKNAME}",
+ "vi": "{NICKNAME}",
+ "id": "{NICKNAME}",
+ "es": "{NICKNAME}",
+ "fr": "{NICKNAME}",
+ "de": "{NICKNAME}",
+ "pt": "{NICKNAME}"
},
"path": "Elation",
"element": "Lightning",
@@ -1473,13 +2040,19 @@ export const AVATAR_METADATA = {
},
"8010": {
"names": {
- "en": "Trailblazer (Elation ♀)",
- "th": "ผู้บุกเบิก (ปีติ ♀)",
- "zh-CN": "开拓者 (欢愉 ♀)",
- "zh-TW": "開拓者 (歡愉 ♀)",
- "ja": "開拓者 (愉悦 ♀)",
- "ko": "개척자 (환락 ♀)",
- "ru": "Первопроходец (Радость ♀)"
+ "th": "{NICKNAME}",
+ "en": "{NICKNAME}",
+ "zh-CN": "{NICKNAME}",
+ "zh-TW": "{NICKNAME}",
+ "ja": "{NICKNAME}",
+ "ko": "{NICKNAME}",
+ "ru": "{NICKNAME}",
+ "vi": "{NICKNAME}",
+ "id": "{NICKNAME}",
+ "es": "{NICKNAME}",
+ "fr": "{NICKNAME}",
+ "de": "{NICKNAME}",
+ "pt": "{NICKNAME}"
},
"path": "Elation",
"element": "Lightning",
diff --git a/js/equipment-data.js b/js/equipment-data.js
new file mode 100644
index 0000000..0718277
--- /dev/null
+++ b/js/equipment-data.js
@@ -0,0 +1,4330 @@
+import { getCurrentLanguage, translatePath } from "./i18n.js";
+
+export const LIGHTCONE_METADATA = {
+ "20000": {
+ "names": {
+ "th": "Arrows",
+ "en": "Arrows",
+ "zh-CN": "锋镝",
+ "zh-TW": "鋒鏑",
+ "ja": "矢じり",
+ "ko": "화살촉",
+ "ru": "Стрелы",
+ "vi": "Mũi Tên",
+ "id": "Arrows",
+ "es": "Flechas",
+ "fr": "Flèches",
+ "de": "Pfeile",
+ "pt": "Flechas"
+ },
+ "rarity": 3,
+ "path": "Hunt"
+ },
+ "20001": {
+ "names": {
+ "th": "Cornucopia",
+ "en": "Cornucopia",
+ "zh-CN": "物穰",
+ "zh-TW": "物穰",
+ "ja": "物穣",
+ "ko": "풍작",
+ "ru": "Рог изобилия",
+ "vi": "Dồi Dào",
+ "id": "Cornucopia",
+ "es": "Cornucopia",
+ "fr": "Corne d'abondance",
+ "de": "Füllhorn",
+ "pt": "Cornucópia"
+ },
+ "rarity": 3,
+ "path": "Abundance"
+ },
+ "20002": {
+ "names": {
+ "th": "Collapsing Sky",
+ "en": "Collapsing Sky",
+ "zh-CN": "天倾",
+ "zh-TW": "天傾",
+ "ja": "天傾",
+ "ko": "천경",
+ "ru": "Падение небес",
+ "vi": "Trời Sập",
+ "id": "Collapsing Sky",
+ "es": "Colapso celeste",
+ "fr": "Effondrement céleste",
+ "de": "Zusammenbruch des Himmels",
+ "pt": "Céu Colapsado"
+ },
+ "rarity": 3,
+ "path": "Destruction"
+ },
+ "20003": {
+ "names": {
+ "th": "Amber",
+ "en": "Amber",
+ "zh-CN": "琥珀",
+ "zh-TW": "琥珀",
+ "ja": "琥珀",
+ "ko": "앰버",
+ "ru": "Янтарь",
+ "vi": "Hổ Phách",
+ "id": "Amber",
+ "es": "Ámbar",
+ "fr": "Ambre",
+ "de": "Bernstein",
+ "pt": "Âmbar"
+ },
+ "rarity": 3,
+ "path": "Preservation"
+ },
+ "20004": {
+ "names": {
+ "th": "Void",
+ "en": "Void",
+ "zh-CN": "幽邃",
+ "zh-TW": "幽邃",
+ "ja": "幽邃",
+ "ko": "그윽",
+ "ru": "Пустота",
+ "vi": "Tĩnh Mịch",
+ "id": "Void",
+ "es": "Vacío",
+ "fr": "Néant",
+ "de": "Leere",
+ "pt": "Vazio"
+ },
+ "rarity": 3,
+ "path": "Nihility"
+ },
+ "20005": {
+ "names": {
+ "th": "Chorus",
+ "en": "Chorus",
+ "zh-CN": "齐颂",
+ "zh-TW": "齊頌",
+ "ja": "斉頌",
+ "ko": "합창",
+ "ru": "Хор",
+ "vi": "Điệp Khúc",
+ "id": "Chorus",
+ "es": "Coro",
+ "fr": "Chœur",
+ "de": "Chor",
+ "pt": "Refrão"
+ },
+ "rarity": 3,
+ "path": "Harmony"
+ },
+ "20006": {
+ "names": {
+ "th": "Data Bank",
+ "en": "Data Bank",
+ "zh-CN": "智库",
+ "zh-TW": "智庫",
+ "ja": "アーカイブ",
+ "ko": "아카이브",
+ "ru": "База данных",
+ "vi": "Kho Lưu Trữ",
+ "id": "Data Bank",
+ "es": "Archivos",
+ "fr": "Banque de données",
+ "de": "Datenbank",
+ "pt": "Banco de Dados"
+ },
+ "rarity": 3,
+ "path": "Erudition"
+ },
+ "20007": {
+ "names": {
+ "th": "Darting Arrow",
+ "en": "Darting Arrow",
+ "zh-CN": "离弦",
+ "zh-TW": "離弦",
+ "ja": "離弦",
+ "ko": "시위를 떠난 화살",
+ "ru": "Выпущенная стрела",
+ "vi": "Tên Bắn",
+ "id": "Darting Arrow",
+ "es": "Flecha voladora",
+ "fr": "Flèche plongeante",
+ "de": "Wurfpfeil",
+ "pt": "Flecha Veloz"
+ },
+ "rarity": 3,
+ "path": "Hunt"
+ },
+ "20008": {
+ "names": {
+ "th": "Fine Fruit",
+ "en": "Fine Fruit",
+ "zh-CN": "嘉果",
+ "zh-TW": "嘉果",
+ "ja": "嘉果",
+ "ko": "알찬 열매",
+ "ru": "Спелый плод",
+ "vi": "Trái Ngọt",
+ "id": "Fine Fruit",
+ "es": "Fruto excelente",
+ "fr": "Fruit délicat",
+ "de": "Feines Obst",
+ "pt": "Fruta Delicada"
+ },
+ "rarity": 3,
+ "path": "Abundance"
+ },
+ "20009": {
+ "names": {
+ "th": "Shattered Home",
+ "en": "Shattered Home",
+ "zh-CN": "乐圮",
+ "zh-TW": "樂圮",
+ "ja": "楽壊",
+ "ko": "무너진 행복",
+ "ru": "Расколовшийся дом",
+ "vi": "Đổ Nát",
+ "id": "Shattered Home",
+ "es": "Hogar destrozado",
+ "fr": "Demeure brisée",
+ "de": "Zerstörtes Zuhause",
+ "pt": "Casa Destruída"
+ },
+ "rarity": 3,
+ "path": "Destruction"
+ },
+ "20010": {
+ "names": {
+ "th": "Defense",
+ "en": "Defense",
+ "zh-CN": "戍御",
+ "zh-TW": "戍禦",
+ "ja": "防衛",
+ "ko": "수비",
+ "ru": "Оборона",
+ "vi": "Phòng Thủ",
+ "id": "Defense",
+ "es": "Blindaje",
+ "fr": "Défense",
+ "de": "Verteidigung",
+ "pt": "Defesa"
+ },
+ "rarity": 3,
+ "path": "Preservation"
+ },
+ "20011": {
+ "names": {
+ "th": "Loop",
+ "en": "Loop",
+ "zh-CN": "渊环",
+ "zh-TW": "淵環",
+ "ja": "淵環",
+ "ko": "심연의 고리",
+ "ru": "Петля",
+ "vi": "Xoáy Ốc",
+ "id": "Loop",
+ "es": "Bucle",
+ "fr": "Boucle",
+ "de": "Schleife",
+ "pt": "Loop"
+ },
+ "rarity": 3,
+ "path": "Nihility"
+ },
+ "20012": {
+ "names": {
+ "th": "Meshing Cogs",
+ "en": "Meshing Cogs",
+ "zh-CN": "轮契",
+ "zh-TW": "輪契",
+ "ja": "輪契",
+ "ko": "맞물린 톱니",
+ "ru": "Сцепленные шестерни",
+ "vi": "Luân Hồi",
+ "id": "Meshing Cogs",
+ "es": "Rueda mecánica",
+ "fr": "Roues d'engrenage",
+ "de": "Einklang der Zahnräder",
+ "pt": "Rede de Engrenagens"
+ },
+ "rarity": 3,
+ "path": "Harmony"
+ },
+ "20013": {
+ "names": {
+ "th": "Passkey",
+ "en": "Passkey",
+ "zh-CN": "灵钥",
+ "zh-TW": "靈鑰",
+ "ja": "霊鍵",
+ "ko": "영험한 열쇠",
+ "ru": "Ключ от всех дверей",
+ "vi": "Chìa Khóa Linh Hồn",
+ "id": "Passkey",
+ "es": "Llave maestra",
+ "fr": "Clé du savoir",
+ "de": "Generalschlüssel",
+ "pt": "Chave Mestra"
+ },
+ "rarity": 3,
+ "path": "Erudition"
+ },
+ "20014": {
+ "names": {
+ "th": "Adversarial",
+ "en": "Adversarial",
+ "zh-CN": "相抗",
+ "zh-TW": "相抗",
+ "ja": "相抗",
+ "ko": "대립",
+ "ru": "Противостояние",
+ "vi": "Đối Kháng",
+ "id": "Adversarial",
+ "es": "Antagonista",
+ "fr": "Résistance",
+ "de": "Gegensätzliches",
+ "pt": "Antagonista"
+ },
+ "rarity": 3,
+ "path": "Hunt"
+ },
+ "20015": {
+ "names": {
+ "th": "Multiplication",
+ "en": "Multiplication",
+ "zh-CN": "蕃息",
+ "zh-TW": "蕃息",
+ "ja": "蕃殖",
+ "ko": "증식",
+ "ru": "Размножение",
+ "vi": "Sinh Sôi",
+ "id": "Multiplication",
+ "es": "Multiplicación",
+ "fr": "Démultiplication",
+ "de": "Aufschwung",
+ "pt": "Multiplicação"
+ },
+ "rarity": 3,
+ "path": "Abundance"
+ },
+ "20016": {
+ "names": {
+ "th": "Mutual Demise",
+ "en": "Mutual Demise",
+ "zh-CN": "俱殁",
+ "zh-TW": "俱歿",
+ "ja": "倶歿",
+ "ko": "전멸",
+ "ru": "Совместная гибель",
+ "vi": "Hủy Diệt Tất Cả",
+ "id": "Mutual Demise",
+ "es": "Final mutuo",
+ "fr": "Destruction mutuelle",
+ "de": "Gemeinsamer Untergang",
+ "pt": "Morte Mútua"
+ },
+ "rarity": 3,
+ "path": "Destruction"
+ },
+ "20017": {
+ "names": {
+ "th": "Pioneering",
+ "en": "Pioneering",
+ "zh-CN": "开疆",
+ "zh-TW": "開疆",
+ "ja": "新天地",
+ "ko": "강토 개척",
+ "ru": "Новые горизонты",
+ "vi": "Mở Rộng",
+ "id": "Pioneering",
+ "es": "Colonización",
+ "fr": "Expansion",
+ "de": "Pionierarbeit",
+ "pt": "Pioneirismo"
+ },
+ "rarity": 3,
+ "path": "Preservation"
+ },
+ "20018": {
+ "names": {
+ "th": "Hidden Shadow",
+ "en": "Hidden Shadow",
+ "zh-CN": "匿影",
+ "zh-TW": "匿影",
+ "ja": "匿影",
+ "ko": "숨은 그림자",
+ "ru": "Скрытая тень",
+ "vi": "Bóng Ẩn",
+ "id": "Hidden Shadow",
+ "es": "Sombra oculta",
+ "fr": "Ombre cachée",
+ "de": "Verborgener Schatten",
+ "pt": "Sombra Oculta"
+ },
+ "rarity": 3,
+ "path": "Nihility"
+ },
+ "20019": {
+ "names": {
+ "th": "Mediation",
+ "en": "Mediation",
+ "zh-CN": "调和",
+ "zh-TW": "調和",
+ "ja": "同調",
+ "ko": "어울림",
+ "ru": "Созвучие",
+ "vi": "Hài Hòa",
+ "id": "Mediation",
+ "es": "Mediación",
+ "fr": "Harmonisation",
+ "de": "Vermittlung",
+ "pt": "Mediação"
+ },
+ "rarity": 3,
+ "path": "Harmony"
+ },
+ "20020": {
+ "names": {
+ "th": "Sagacity",
+ "en": "Sagacity",
+ "zh-CN": "睿见",
+ "zh-TW": "睿見",
+ "ja": "見識",
+ "ko": "식견",
+ "ru": "Проницательность",
+ "vi": "Thông Tuệ",
+ "id": "Sagacity",
+ "es": "Sagacidad",
+ "fr": "Sagacité",
+ "de": "Weisheit",
+ "pt": "Sagacidade"
+ },
+ "rarity": 3,
+ "path": "Erudition"
+ },
+ "20021": {
+ "names": {
+ "th": "Shadowburn",
+ "en": "Shadowburn",
+ "zh-CN": "焚影",
+ "zh-TW": "焚影",
+ "ja": "燃ゆる影",
+ "ko": "불타는 그림자",
+ "ru": "Выжженные тени",
+ "vi": "Thiêu Đốt Ảo Ảnh",
+ "id": "Shadowburn",
+ "es": "Imágenes quemadas",
+ "fr": "Brûlombre",
+ "de": "Brennender Schatten",
+ "pt": "Queimada"
+ },
+ "rarity": 3,
+ "path": "Remembrance"
+ },
+ "20022": {
+ "names": {
+ "th": "Reminiscence",
+ "en": "Reminiscence",
+ "zh-CN": "溯忆",
+ "zh-TW": "溯憶",
+ "ja": "辿る記憶",
+ "ko": "추억 회상",
+ "ru": "Образ прошлого",
+ "vi": "Tìm Về Ký Ức",
+ "id": "Reminiscence",
+ "es": "Retrospección",
+ "fr": "Réminiscence",
+ "de": "Rückblick",
+ "pt": "Reminiscência"
+ },
+ "rarity": 3,
+ "path": "Remembrance"
+ },
+ "20023": {
+ "names": {
+ "th": "Sneering",
+ "en": "Sneering",
+ "zh-CN": "嗤笑",
+ "zh-TW": "嗤笑",
+ "ja": "嗤笑",
+ "ko": "비웃음",
+ "ru": "Насмешка",
+ "vi": "Cười Nhạo",
+ "id": "Sneering",
+ "es": "Risita burlona",
+ "fr": "Ricanement",
+ "de": "Höhnisches Lachen",
+ "pt": "Zombaria"
+ },
+ "rarity": 3,
+ "path": "Elation"
+ },
+ "20024": {
+ "names": {
+ "th": "Lingering Tear",
+ "en": "Lingering Tear",
+ "zh-CN": "残泪",
+ "zh-TW": "殘淚",
+ "ja": "残涙",
+ "ko": "눈물의 흔적",
+ "ru": "Безудержные слёзы",
+ "vi": "Lệ Tàn",
+ "id": "Lingering Tears",
+ "es": "Las lágrimas que quedan",
+ "fr": "Larmes persistantes",
+ "de": "Verweilende Träne",
+ "pt": "Lágrima Persistente"
+ },
+ "rarity": 3,
+ "path": "Elation"
+ },
+ "21000": {
+ "names": {
+ "th": "Post-Op Conversation",
+ "en": "Post-Op Conversation",
+ "zh-CN": "一场术后对话",
+ "zh-TW": "一場術後對話",
+ "ja": "手術後の会話",
+ "ko": "수술 후의 대화",
+ "ru": "Беседа после операции",
+ "vi": "Buổi Trò Chuyện Hậu Phẫu",
+ "id": "Post-Op Conversation",
+ "es": "Conversación en el postoperatorio",
+ "fr": "Conversation post-opératoire",
+ "de": "Ein Gespräch nach der OP",
+ "pt": "Conversa Pós-Operatória"
+ },
+ "rarity": 4,
+ "path": "Abundance"
+ },
+ "21001": {
+ "names": {
+ "th": "Good Night and Sleep Well",
+ "en": "Good Night and Sleep Well",
+ "zh-CN": "晚安与睡颜",
+ "zh-TW": "晚安與睡顏",
+ "ja": "おやすみなさいと寝顔",
+ "ko": "밤 인사와 잠든 얼굴",
+ "ru": "Спокойной ночи и мирного сна",
+ "vi": "Chúc Ngủ Ngon",
+ "id": "Good Night and Sleep Well",
+ "es": "Buenas noches, que duermas bien",
+ "fr": "Bonne nuit et dors bien",
+ "de": "Gute Nacht, schlaf schön",
+ "pt": "Boa Noite e Durma Bem"
+ },
+ "rarity": 4,
+ "path": "Nihility"
+ },
+ "21002": {
+ "names": {
+ "th": "Day One of My New Life",
+ "en": "Day One of My New Life",
+ "zh-CN": "余生的第一天",
+ "zh-TW": "餘生的第一天",
+ "ja": "余生の初日",
+ "ko": "여생의 첫날",
+ "ru": "Первый день моей новой жизни",
+ "vi": "Ngày Đầu Tiên",
+ "id": "Day One of My New Life",
+ "es": "El primer día del resto de mi vida",
+ "fr": "Premier jour de ma nouvelle vie",
+ "de": "Der erste Tag meines neuen Lebens",
+ "pt": "Primeiro Dia da Minha Vida Nova"
+ },
+ "rarity": 4,
+ "path": "Preservation"
+ },
+ "21003": {
+ "names": {
+ "th": "Only Silence Remains",
+ "en": "Only Silence Remains",
+ "zh-CN": "唯有沉默",
+ "zh-TW": "唯有沉默",
+ "ja": "沈黙のみ",
+ "ko": "침묵만이",
+ "ru": "Остаётся лишь тишина",
+ "vi": "Sự Trầm Mặc Duy Nhất",
+ "id": "Only Silence Remains",
+ "es": "Solo queda silencio",
+ "fr": "Seul le silence subsiste",
+ "de": "Nur die Stille bleibt",
+ "pt": "Apenas o Silêncio Sobrou"
+ },
+ "rarity": 4,
+ "path": "Hunt"
+ },
+ "21004": {
+ "names": {
+ "th": "Memories of the Past",
+ "en": "Memories of the Past",
+ "zh-CN": "记忆中的模样",
+ "zh-TW": "記憶中的模樣",
+ "ja": "記憶の中の姿",
+ "ko": "기억 속 모습",
+ "ru": "Воспоминания о прошлом",
+ "vi": "Dáng Hình Trong Ký Ức",
+ "id": "Memories of the Past",
+ "es": "Imagen en el recuerdo",
+ "fr": "Souvenirs du passé",
+ "de": "Erinnerungen an die Vergangenheit",
+ "pt": "Memórias do Passado"
+ },
+ "rarity": 4,
+ "path": "Harmony"
+ },
+ "21005": {
+ "names": {
+ "th": "The Moles Welcome You",
+ "en": "The Moles Welcome You",
+ "zh-CN": "鼹鼠党欢迎你",
+ "zh-TW": "鼴鼠黨歡迎你",
+ "ja": "モグラ党へようこそ",
+ "ko": "두더지파가 환영해",
+ "ru": "Кроты приветствуют тебя",
+ "vi": "Băng Chuột Chũi Hoan Nghênh",
+ "id": "The Moles Welcome You",
+ "es": "Los Topos te dan la bienvenida",
+ "fr": "Bienvenue chez les Taupes",
+ "de": "Die Maulwürfe heißen dich willkommen",
+ "pt": "As Toupeiras Te Dão Boas-vindas"
+ },
+ "rarity": 4,
+ "path": "Destruction"
+ },
+ "21006": {
+ "names": {
+ "th": "The Birth of the Self",
+ "en": "The Birth of the Self",
+ "zh-CN": "「我」的诞生",
+ "zh-TW": "「我」的誕生",
+ "ja": "「私」の誕生",
+ "ko": "「나」의 탄생",
+ "ru": "Зарождение себя",
+ "vi": "Sự Ra Đời Của \"Tôi\"",
+ "id": "The Birth of the Self",
+ "es": "El nacimiento del yo",
+ "fr": "La naissance du moi",
+ "de": "Die Geburt des Selbst",
+ "pt": "Meu Próprio Nascimento"
+ },
+ "rarity": 4,
+ "path": "Erudition"
+ },
+ "21007": {
+ "names": {
+ "th": "Shared Feeling",
+ "en": "Shared Feeling",
+ "zh-CN": "同一种心情",
+ "zh-TW": "同一種心情",
+ "ja": "同じ気持ち",
+ "ko": "같은 심정",
+ "ru": "Общие чувства",
+ "vi": "Cùng Một Tâm Trạng",
+ "id": "Shared Feeling",
+ "es": "Sentimiento compartido",
+ "fr": "Sentiment partagé",
+ "de": "Gefühl der Gemeinsamkeit",
+ "pt": "Sentimento Compartilhado"
+ },
+ "rarity": 4,
+ "path": "Abundance"
+ },
+ "21008": {
+ "names": {
+ "th": "Eyes of the Prey",
+ "en": "Eyes of the Prey",
+ "zh-CN": "猎物的视线",
+ "zh-TW": "獵物的視線",
+ "ja": "獲物の視線",
+ "ko": "사냥감의 시선",
+ "ru": "Взгляд жертвы",
+ "vi": "Tầm Mắt Của Con Mồi",
+ "id": "Eyes of the Prey",
+ "es": "Visión de presa",
+ "fr": "Les yeux de la proie",
+ "de": "Die Augen der Beute",
+ "pt": "Olhos da Presa"
+ },
+ "rarity": 4,
+ "path": "Nihility"
+ },
+ "21009": {
+ "names": {
+ "th": "Landau's Choice",
+ "en": "Landau's Choice",
+ "zh-CN": "朗道的选择",
+ "zh-TW": "朗道的選擇",
+ "ja": "ランドゥーの選択",
+ "ko": "랜도의 선택",
+ "ru": "Выбор Ландау",
+ "vi": "Sự Lựa Chọn Của Landau",
+ "id": "Landau's Choice",
+ "es": "La elección de Landau",
+ "fr": "Le choix de Landau",
+ "de": "Landaus Wahl",
+ "pt": "A Escolha dos Landau"
+ },
+ "rarity": 4,
+ "path": "Preservation"
+ },
+ "21010": {
+ "names": {
+ "th": "Swordplay",
+ "en": "Swordplay",
+ "zh-CN": "论剑",
+ "zh-TW": "論劍",
+ "ja": "論剣",
+ "ko": "논검",
+ "ru": "Фехтование",
+ "vi": "Luận Kiếm",
+ "id": "Swordplay",
+ "es": "Juego de espadas",
+ "fr": "Jeu d'épée",
+ "de": "Schwertkampf",
+ "pt": "Jogo de Espadas"
+ },
+ "rarity": 4,
+ "path": "Hunt"
+ },
+ "21011": {
+ "names": {
+ "th": "Planetary Rendezvous",
+ "en": "Planetary Rendezvous",
+ "zh-CN": "与行星相会",
+ "zh-TW": "與行星相會",
+ "ja": "惑星との出会い",
+ "ko": "행성과의 만남",
+ "ru": "Свидание со звёздами",
+ "vi": "Điểm Hẹn Hành Tinh",
+ "id": "Planetary Rendezvous",
+ "es": "Encuentro planetario",
+ "fr": "Rendez-vous avec les planètes",
+ "de": "Planetarisches Rendezvous",
+ "pt": "Encontro Planetário"
+ },
+ "rarity": 4,
+ "path": "Harmony"
+ },
+ "21012": {
+ "names": {
+ "th": "A Secret Vow",
+ "en": "A Secret Vow",
+ "zh-CN": "秘密誓心",
+ "zh-TW": "秘密誓心",
+ "ja": "秘密の誓い",
+ "ko": "비밀 맹세",
+ "ru": "Тайная клятва",
+ "vi": "Lời Thề Bí Mật",
+ "id": "A Secret Vow",
+ "es": "Juramento secreto",
+ "fr": "Vœu secret",
+ "de": "Ein geheimes Gelübde",
+ "pt": "Um Voto Secreto"
+ },
+ "rarity": 4,
+ "path": "Destruction"
+ },
+ "21013": {
+ "names": {
+ "th": "Make the World Clamor",
+ "en": "Make the World Clamor",
+ "zh-CN": "别让世界静下来",
+ "zh-TW": "別讓世界靜下來",
+ "ja": "この世界に喧噪を",
+ "ko": "세상을 진정시키지 마",
+ "ru": "Пусть мир не стихает",
+ "vi": "Đừng Để Thế Giới Lạnh Lẽo",
+ "id": "Make the World Clamor",
+ "es": "Que el mundo clame",
+ "fr": "Clameur du monde",
+ "de": "Die Welt in Aufruhr versetzen",
+ "pt": "Faça o Mundo Clamar"
+ },
+ "rarity": 4,
+ "path": "Erudition"
+ },
+ "21014": {
+ "names": {
+ "th": "Perfect Timing",
+ "en": "Perfect Timing",
+ "zh-CN": "此时恰好",
+ "zh-TW": "此時恰好",
+ "ja": "今が丁度",
+ "ko": "알맞은 타이밍",
+ "ru": "Идеальное время",
+ "vi": "Vừa Đúng Lúc",
+ "id": "Perfect Timing",
+ "es": "El momento oportuno",
+ "fr": "Timing parfait",
+ "de": "Perfektes Timing",
+ "pt": "Momento Perfeito"
+ },
+ "rarity": 4,
+ "path": "Abundance"
+ },
+ "21015": {
+ "names": {
+ "th": "Resolution Shines As Pearls of Sweat",
+ "en": "Resolution Shines As Pearls of Sweat",
+ "zh-CN": "决心如汗珠般闪耀",
+ "zh-TW": "決心如汗珠般閃耀",
+ "ja": "決意は汗のように輝く",
+ "ko": "땀방울처럼 빛나는 결심",
+ "ru": "Решимость блестит подобно жемчужинам пота",
+ "vi": "Sự Quyết Tâm Như Giọt Mồ Hôi Lấp Lánh",
+ "id": "Resolution Shines As Pearls of Sweat",
+ "es": "Determinación reluciente",
+ "fr": "Résolution brillante",
+ "de": "Die Entschlusskraft glitzert als Schweißperlen",
+ "pt": "A Determinação Brilha Como Gotas de Suor"
+ },
+ "rarity": 4,
+ "path": "Nihility"
+ },
+ "21016": {
+ "names": {
+ "th": "Trend of the Universal Market",
+ "en": "Trend of the Universal Market",
+ "zh-CN": "宇宙市场趋势",
+ "zh-TW": "宇宙市場趨勢",
+ "ja": "星間市場のトレンド",
+ "ko": "우주 시장 동향",
+ "ru": "Тренд галактического рынка",
+ "vi": "Xu Hướng Thị Trường Vũ Trụ",
+ "id": "Trend of the Universal Market",
+ "es": "Tendencias del mercado universal",
+ "fr": "Tendance du marché cosmique",
+ "de": "Trend des universellen Markts",
+ "pt": "Tendência do Mercado Universal"
+ },
+ "rarity": 4,
+ "path": "Preservation"
+ },
+ "21017": {
+ "names": {
+ "th": "Subscribe for More!",
+ "en": "Subscribe for More!",
+ "zh-CN": "点个关注吧!",
+ "zh-TW": "按個追蹤吧!",
+ "ja": "フォローして!",
+ "ko": "팔로우를 부탁해!",
+ "ru": "Больше подписок!",
+ "vi": "Hãy Theo Dõi Nào!",
+ "id": "Subscribe for More!",
+ "es": "¡Suscríbanse a mi canal!",
+ "fr": "Abonnez-vous !",
+ "de": "Abonniere für mehr!",
+ "pt": "Inscreva-se Para Mais!"
+ },
+ "rarity": 4,
+ "path": "Hunt"
+ },
+ "21018": {
+ "names": {
+ "th": "Dance! Dance! Dance!",
+ "en": "Dance! Dance! Dance!",
+ "zh-CN": "舞!舞!舞!",
+ "zh-TW": "舞!舞!舞!",
+ "ja": "ダンス!ダンス!ダンス!",
+ "ko": "댄스! 댄스! 댄스!",
+ "ru": "Танцуй! Танцуй! Танцуй!",
+ "vi": "Múa! Múa! Múa!",
+ "id": "Dance! Dance! Dance!",
+ "es": "¡A bailar!",
+ "fr": "Ça n'arrête pas de danser !",
+ "de": "Tanz! Tanz! Tanz!",
+ "pt": "Dance! Dance! Dance!"
+ },
+ "rarity": 4,
+ "path": "Harmony"
+ },
+ "21019": {
+ "names": {
+ "th": "Under the Blue Sky",
+ "en": "Under the Blue Sky",
+ "zh-CN": "在蓝天下",
+ "zh-TW": "在藍天下",
+ "ja": "青空の下で",
+ "ko": "푸른 하늘 아래",
+ "ru": "Под голубым небом",
+ "vi": "Dưới Bầu Trời Xanh",
+ "id": "Under the Blue Sky",
+ "es": "Bajo el cielo azul",
+ "fr": "Sous le ciel bleu",
+ "de": "Unter dem blauen Himmel",
+ "pt": "Sob o Céu Azul"
+ },
+ "rarity": 4,
+ "path": "Destruction"
+ },
+ "21020": {
+ "names": {
+ "th": "Geniuses' Repose",
+ "en": "Geniuses' Repose",
+ "zh-CN": "天才们的休憩",
+ "zh-TW": "天才們的休憩",
+ "ja": "天才たちの休息",
+ "ko": "천재들의 휴식",
+ "ru": "Отдых гениев",
+ "vi": "Sự Nghỉ Ngơi Của Thiên Tài",
+ "id": "Geniuses' Repose",
+ "es": "El reposo de los genios",
+ "fr": "Repos des génies",
+ "de": "Die Rast der Genies",
+ "pt": "Repouso dos Gênios"
+ },
+ "rarity": 4,
+ "path": "Erudition"
+ },
+ "21021": {
+ "names": {
+ "th": "Quid Pro Quo",
+ "en": "Quid Pro Quo",
+ "zh-CN": "等价交换",
+ "zh-TW": "等價交換",
+ "ja": "等価交換",
+ "ko": "등가교환",
+ "ru": "Равноценный обмен",
+ "vi": "Đổi Ngang Giá",
+ "id": "Quid Pro Quo",
+ "es": "Intercambio equivalente",
+ "fr": "Échange de bons procédés",
+ "de": "Quid pro quo",
+ "pt": "Quid Pro Quo"
+ },
+ "rarity": 4,
+ "path": "Abundance"
+ },
+ "21022": {
+ "names": {
+ "th": "Fermata",
+ "en": "Fermata",
+ "zh-CN": "延长记号",
+ "zh-TW": "延長記號",
+ "ja": "フェルマータ",
+ "ko": "페르마타",
+ "ru": "Фермата",
+ "vi": "Ký Hiệu Kéo Dài",
+ "id": "Fermata",
+ "es": "Calderón",
+ "fr": "Point d'orgue",
+ "de": "Fermate",
+ "pt": "Fermata"
+ },
+ "rarity": 4,
+ "path": "Nihility"
+ },
+ "21023": {
+ "names": {
+ "th": "We Are Wildfire",
+ "en": "We Are Wildfire",
+ "zh-CN": "我们是地火",
+ "zh-TW": "我們是地火",
+ "ja": "我ら地炎",
+ "ko": "우리는 와일드 파이어",
+ "ru": "Мы - Дикий Огонь",
+ "vi": "Chúng Ta Là Lửa Ngầm",
+ "id": "We Are Wildfire",
+ "es": "Somos Llamarada",
+ "fr": "On est les Feux sauvages",
+ "de": "Wir sind Wildfeuer",
+ "pt": "Somos Fogo Vivo"
+ },
+ "rarity": 4,
+ "path": "Preservation"
+ },
+ "21024": {
+ "names": {
+ "th": "River Flows in Spring",
+ "en": "River Flows in Spring",
+ "zh-CN": "春水初生",
+ "zh-TW": "春水初生",
+ "ja": "春水に初生する",
+ "ko": "움트는 봄물",
+ "ru": "Весенние потоки рек",
+ "vi": "Làn Nước Xuân Xuất Hiện",
+ "id": "River Flows in Spring",
+ "es": "El río nace en primavera",
+ "fr": "Une rivière au printemps",
+ "de": "Flüsse plätschern im Frühling",
+ "pt": "O Rio Corre na Primavera"
+ },
+ "rarity": 4,
+ "path": "Hunt"
+ },
+ "21025": {
+ "names": {
+ "th": "Past and Future",
+ "en": "Past and Future",
+ "zh-CN": "过往未来",
+ "zh-TW": "過往未來",
+ "ja": "過去と未来",
+ "ko": "과거와 미래",
+ "ru": "Прошлое и будущее",
+ "vi": "Quá Khứ Tương Lai",
+ "id": "Past and Future",
+ "es": "El pasado y el futuro",
+ "fr": "Passé et futur",
+ "de": "Vergangenheit und Zukunft",
+ "pt": "Passado e Futuro"
+ },
+ "rarity": 4,
+ "path": "Harmony"
+ },
+ "21026": {
+ "names": {
+ "th": "Woof! Walk Time!",
+ "en": "Woof! Walk Time!",
+ "zh-CN": "汪!散步时间!",
+ "zh-TW": "汪!散步時間!",
+ "ja": "ワン!散歩の時間!",
+ "ko": "멍! 산책 시간!",
+ "ru": "Гав! Время прогулок!",
+ "vi": "Gâu! Thời Gian Tản Bộ",
+ "id": "Woof! Walk Time!",
+ "es": "¡Guau! ¡Hora de pasear!",
+ "fr": "Ouaf ! C'est l'heure de la promenade !",
+ "de": "Wuff! Zeit zum Laufen!",
+ "pt": "Au! Hora de Passear!"
+ },
+ "rarity": 4,
+ "path": "Destruction"
+ },
+ "21027": {
+ "names": {
+ "th": "The Seriousness of Breakfast",
+ "en": "The Seriousness of Breakfast",
+ "zh-CN": "早餐的仪式感",
+ "zh-TW": "早餐的儀式感",
+ "ja": "朝食の儀式感",
+ "ko": "느낌 있는 아침 식사 루틴",
+ "ru": "Важность завтрака",
+ "vi": "Bữa Sáng Đúng Điệu",
+ "id": "The Seriousness of Breakfast",
+ "es": "La solemnidad del desayuno",
+ "fr": "Le petit-déjeuner, c'est sacré",
+ "de": "Die Ernsthaftigkeit des Frühstücks",
+ "pt": "A Solenidade do Café da Manhã"
+ },
+ "rarity": 4,
+ "path": "Erudition"
+ },
+ "21028": {
+ "names": {
+ "th": "Warmth Shortens Cold Nights",
+ "en": "Warmth Shortens Cold Nights",
+ "zh-CN": "暖夜不会漫长",
+ "zh-TW": "暖夜不會漫長",
+ "ja": "暖かい夜は長くない",
+ "ko": "따듯한 밤은 길지 않고",
+ "ru": "Холодные ночи короче, когда ты рядом",
+ "vi": "Đêm Ấm Sẽ Chóng Qua",
+ "id": "Warmth Shortens Cold Nights",
+ "es": "Las noches cálidas no duran",
+ "fr": "Chaleur au cœur de la nuit froide",
+ "de": "Warme Nächte dauern nicht lange",
+ "pt": "O Calor Encurta as Noites Geladas"
+ },
+ "rarity": 4,
+ "path": "Abundance"
+ },
+ "21029": {
+ "names": {
+ "th": "We Will Meet Again",
+ "en": "We Will Meet Again",
+ "zh-CN": "后会有期",
+ "zh-TW": "後會有期",
+ "ja": "またお会いしましょう",
+ "ko": "훗날 기약",
+ "ru": "Мы ещё встретимся",
+ "vi": "Hẹn Gặp Lại",
+ "id": "We Will Meet Again",
+ "es": "Volveremos a encontrarnos",
+ "fr": "Ce n'est que partie remise",
+ "de": "Wir werden uns wiedersehen",
+ "pt": "Ainda nos Veremos de Novo"
+ },
+ "rarity": 4,
+ "path": "Nihility"
+ },
+ "21030": {
+ "names": {
+ "th": "This Is Me!",
+ "en": "This Is Me!",
+ "zh-CN": "这就是我啦!",
+ "zh-TW": "這就是我啦!",
+ "ja": "これがウチだよ!",
+ "ko": "이게 바로 나야!",
+ "ru": "Это я!",
+ "vi": "Đó Chính Là Tôi!",
+ "id": "This Is Me!",
+ "es": "¡Así soy yo!",
+ "fr": "C'est moi !",
+ "de": "Das bin ich!",
+ "pt": "Essa Sou Eu!"
+ },
+ "rarity": 4,
+ "path": "Preservation"
+ },
+ "21031": {
+ "names": {
+ "th": "Return to Darkness",
+ "en": "Return to Darkness",
+ "zh-CN": "重返幽冥",
+ "zh-TW": "重返幽冥",
+ "ja": "幽冥に帰す",
+ "ko": "또다시 저승으로",
+ "ru": "Назад во тьму",
+ "vi": "U Tối Trở Lại",
+ "id": "Return to Darkness",
+ "es": "Regreso a la oscuridad",
+ "fr": "Retour aux ténèbres",
+ "de": "Rückkehr in die Dunkelheit",
+ "pt": "Retorno à Escuridão"
+ },
+ "rarity": 4,
+ "path": "Hunt"
+ },
+ "21032": {
+ "names": {
+ "th": "Carve the Moon, Weave the Clouds",
+ "en": "Carve the Moon, Weave the Clouds",
+ "zh-CN": "镂月裁云之意",
+ "zh-TW": "鏤月裁雲之意",
+ "ja": "彫月裁雲の意",
+ "ko": "누월재운의 뜻",
+ "ru": "Вырезать луну и кроить облака",
+ "vi": "Khắc Lên Ánh Trăng",
+ "id": "Carve the Moon, Weave the Clouds",
+ "es": "Esculpir la luna y tejer las nubes",
+ "fr": "Nuages taillés dans la lune",
+ "de": "Den Mond schnitzen, die Wolken weben",
+ "pt": "Esculpindo a Lua, Tecendo as Nuvens"
+ },
+ "rarity": 4,
+ "path": "Harmony"
+ },
+ "21033": {
+ "names": {
+ "th": "Nowhere to Run",
+ "en": "Nowhere to Run",
+ "zh-CN": "无处可逃",
+ "zh-TW": "無處可逃",
+ "ja": "逃げ場なし",
+ "ko": "도망칠 곳은 없다",
+ "ru": "Бежать некуда",
+ "vi": "Không Nơi Ẩn Náu",
+ "id": "Nowhere to Run",
+ "es": "Sin escapatoria",
+ "fr": "Sans échappatoire",
+ "de": "Nirgends zu fliehen",
+ "pt": "Sem Escapatória"
+ },
+ "rarity": 4,
+ "path": "Destruction"
+ },
+ "21034": {
+ "names": {
+ "th": "Today Is Another Peaceful Day",
+ "en": "Today Is Another Peaceful Day",
+ "zh-CN": "今日亦是和平的一日",
+ "zh-TW": "今日亦是和平的一日",
+ "ja": "今日も平和な一日",
+ "ko": "오늘도 평화로운 하루",
+ "ru": "Сегодня тоже мирный день",
+ "vi": "Hôm Nay Là Ngày Yên Lành",
+ "id": "Today Is Another Peaceful Day",
+ "es": "Hoy es otro día tranquilo",
+ "fr": "Encore une belle journée qui s'annonce",
+ "de": "Heute ist wieder ein friedlicher Tag",
+ "pt": "Hoje é Mais um Dia de Paz"
+ },
+ "rarity": 4,
+ "path": "Erudition"
+ },
+ "21035": {
+ "names": {
+ "th": "What Is Real?",
+ "en": "What Is Real?",
+ "zh-CN": "何物为真",
+ "zh-TW": "何物為真",
+ "ja": "何が真か",
+ "ko": "무엇이 진실인가",
+ "ru": "Что есть реальность?",
+ "vi": "Đâu Là Thật?",
+ "id": "What Is Real?",
+ "es": "Cuestión de verdad",
+ "fr": "Réalité et faux-semblants",
+ "de": "Sache der Wahrheit",
+ "pt": "O Que É Real?"
+ },
+ "rarity": 4,
+ "path": "Abundance"
+ },
+ "21036": {
+ "names": {
+ "th": "Dreamville Adventure",
+ "en": "Dreamville Adventure",
+ "zh-CN": "美梦小镇大冒险",
+ "zh-TW": "美夢小鎮大冒險",
+ "ja": "ドリームタウンの大冒険",
+ "ko": "좋은꿈 마을 대모험",
+ "ru": "Приключения Грёзавиля",
+ "vi": "Chuyến Thám Hiểm Thị Trấn Mộng Đẹp",
+ "id": "Dreamville Adventure",
+ "es": "Aventuras en Villa Ensueño",
+ "fr": "Aventure à Rêvopolis",
+ "de": "Abenteuer in Traumstadt",
+ "pt": "Aventura de Sonhópolis"
+ },
+ "rarity": 4,
+ "path": "Harmony"
+ },
+ "21037": {
+ "names": {
+ "th": "Final Victor",
+ "en": "Final Victor",
+ "zh-CN": "最后的赢家",
+ "zh-TW": "最後的贏家",
+ "ja": "最後の勝者",
+ "ko": "최후의 승자",
+ "ru": "Единственный победитель",
+ "vi": "Người Chiến Thắng Cuối Cùng",
+ "id": "Final Victor",
+ "es": "Ganador final",
+ "fr": "Pari gagnant",
+ "de": "Endgültiger Sieger",
+ "pt": "O Último Vencedor"
+ },
+ "rarity": 4,
+ "path": "Hunt"
+ },
+ "21038": {
+ "names": {
+ "th": "Flames Afar",
+ "en": "Flames Afar",
+ "zh-CN": "在火的远处",
+ "zh-TW": "在火的遠處",
+ "ja": "烈火の彼方",
+ "ko": "불의 먼 곳에서",
+ "ru": "Вдали от огня",
+ "vi": "Ở Nơi Xa Ngọn Lửa",
+ "id": "Flames Afar",
+ "es": "Lejos del fuego",
+ "fr": "Flammes lointaines",
+ "de": "Feuer in der Ferne",
+ "pt": "Chamas Distantes"
+ },
+ "rarity": 4,
+ "path": "Destruction"
+ },
+ "21039": {
+ "names": {
+ "th": "Destiny's Threads Forewoven",
+ "en": "Destiny's Threads Forewoven",
+ "zh-CN": "织造命运之线",
+ "zh-TW": "織造命運之線",
+ "ja": "運命を紡ぐ糸",
+ "ko": "운명의 실을 엮다",
+ "ru": "Плетение нитей судьбы",
+ "vi": "Dây Thêu Dệt Vận Mệnh",
+ "id": "Destiny's Threads Forewoven",
+ "es": "Los hilos del destino",
+ "fr": "Fils du destin",
+ "de": "Schicksalsfaden",
+ "pt": "Fios Forjados do Destino"
+ },
+ "rarity": 4,
+ "path": "Preservation"
+ },
+ "21040": {
+ "names": {
+ "th": "The Day The Cosmos Fell",
+ "en": "The Day The Cosmos Fell",
+ "zh-CN": "银河沦陷日",
+ "zh-TW": "銀河淪陷日",
+ "ja": "銀河が陥落した日",
+ "ko": "은하 함락의 날",
+ "ru": "День падения вселенной",
+ "vi": "Ngày Ngân Hà Sụp Đổ",
+ "id": "The Day The Cosmos Fell",
+ "es": "Día del colapso cósmico",
+ "fr": "Le jour de l'effondrement du cosmos",
+ "de": "Tag des kosmischen Kollapses",
+ "pt": "O Dia em que o Cosmos Caiu"
+ },
+ "rarity": 4,
+ "path": "Erudition"
+ },
+ "21041": {
+ "names": {
+ "th": "It's Showtime",
+ "en": "It's Showtime",
+ "zh-CN": "好戏开演",
+ "zh-TW": "好戲開演",
+ "ja": "ショーの始まり",
+ "ko": "쇼타임",
+ "ru": "Шоу начинается",
+ "vi": "Vai Diễn Bắt Đầu",
+ "id": "It's Showtime",
+ "es": "Arriba el telón",
+ "fr": "Que le spectacle commence",
+ "de": "Vorhang auf",
+ "pt": "É Hora do Show"
+ },
+ "rarity": 4,
+ "path": "Nihility"
+ },
+ "21042": {
+ "names": {
+ "th": "Indelible Promise",
+ "en": "Indelible Promise",
+ "zh-CN": "铭记于心的约定",
+ "zh-TW": "銘記於心的約定",
+ "ja": "心に刻まれた約束",
+ "ko": "마음에 새긴 약속",
+ "ru": "Хранящееся в сердце обещание",
+ "vi": "Ước Hẹn Khắc Ghi",
+ "id": "Indelible Promise",
+ "es": "Promesa grabada",
+ "fr": "Promesse indélébile",
+ "de": "Verewigtes Versprechen",
+ "pt": "Promessa Indelével"
+ },
+ "rarity": 4,
+ "path": "Destruction"
+ },
+ "21043": {
+ "names": {
+ "th": "Concert for Two",
+ "en": "Concert for Two",
+ "zh-CN": "两个人的演唱会",
+ "zh-TW": "兩個人的演唱會",
+ "ja": "二人だけのコンサート",
+ "ko": "두 사람의 콘서트",
+ "ru": "Концерт для двоих",
+ "vi": "Buổi Hòa Nhạc Hai Người",
+ "id": "Concert for Two",
+ "es": "Concierto para dos",
+ "fr": "Concert pour deux",
+ "de": "Konzert für zwei",
+ "pt": "Concerto para Dois"
+ },
+ "rarity": 4,
+ "path": "Preservation"
+ },
+ "21044": {
+ "names": {
+ "th": "Boundless Choreo",
+ "en": "Boundless Choreo",
+ "zh-CN": "无边曼舞",
+ "zh-TW": "無邊曼舞",
+ "ja": "終わりなき舞踏",
+ "ko": "끝없는 춤",
+ "ru": "Безграничный танец",
+ "vi": "Vũ Điệu Vô Biên",
+ "id": "Boundless Choreo",
+ "es": "Tango ilimitado",
+ "fr": "Danse endiablée",
+ "de": "Grenzenloser Tanz",
+ "pt": "Dança Ilimitada"
+ },
+ "rarity": 4,
+ "path": "Nihility"
+ },
+ "21045": {
+ "names": {
+ "th": "After the Charmony Fall",
+ "en": "After the Charmony Fall",
+ "zh-CN": "谐乐静默之后",
+ "zh-TW": "諧樂靜默之後",
+ "ja": "調和が沈黙した後",
+ "ko": "조화가 침묵한 후",
+ "ru": "После затишья Гармонии",
+ "vi": "Sau Sự Im Lặng Hài Hòa",
+ "id": "After the Charmony Fall",
+ "es": "Tras el silencio de La Armonía",
+ "fr": "Après la chute",
+ "de": "Nach dem Fall der Harmonie",
+ "pt": "Depois que a Harmonia se Dissipa"
+ },
+ "rarity": 4,
+ "path": "Erudition"
+ },
+ "21046": {
+ "names": {
+ "th": "Poised to Bloom",
+ "en": "Poised to Bloom",
+ "zh-CN": "芳华待灼",
+ "zh-TW": "芳華待灼",
+ "ja": "美しき華よ今咲かん",
+ "ko": "피어나길 기다리는 꽃",
+ "ru": "Расцвет юности",
+ "vi": "Tuổi Hoa Chờ Nở Rộ",
+ "id": "Poised to Bloom",
+ "es": "Juventud por florecer",
+ "fr": "Portrait de la jeune fille en fleurs",
+ "de": "Jugend in Erwartung der Entflammung",
+ "pt": "Prestes a Florescer"
+ },
+ "rarity": 4,
+ "path": "Harmony"
+ },
+ "21047": {
+ "names": {
+ "th": "Shadowed by Night",
+ "en": "Shadowed by Night",
+ "zh-CN": "黑夜如影随行",
+ "zh-TW": "黑夜如影隨行",
+ "ja": "夜は影のように付き纏う",
+ "ko": "그림자처럼 뒤따르는 밤",
+ "ru": "Скрытый в ночной тени",
+ "vi": "Bóng Tối Đồng Hành",
+ "id": "Shadowed by Night",
+ "es": "La sombra de la noche",
+ "fr": "Nuit des ombres",
+ "de": "Die Nacht der langen Schatten",
+ "pt": "Sombreado pela Noite"
+ },
+ "rarity": 4,
+ "path": "Hunt"
+ },
+ "21048": {
+ "names": {
+ "th": "Dream's Montage",
+ "en": "Dream's Montage",
+ "zh-CN": "梦的蒙太奇",
+ "zh-TW": "夢的蒙太奇",
+ "ja": "夢のモンタージュ",
+ "ko": "꿈의 몽타주",
+ "ru": "Монтаж грёз",
+ "vi": "Dựng Phim Trong Mơ",
+ "id": "Dream's Montage",
+ "es": "Montaje de sueños",
+ "fr": "Montage du rêve",
+ "de": "Traummontage",
+ "pt": "Montagem do Sonho"
+ },
+ "rarity": 4,
+ "path": "Abundance"
+ },
+ "21050": {
+ "names": {
+ "th": "Victory In a Blink",
+ "en": "Victory In a Blink",
+ "zh-CN": "胜利只在朝夕间",
+ "zh-TW": "勝利只在朝夕間",
+ "ja": "瞬刻の勝機",
+ "ko": "찰나에 결정되는 승리",
+ "ru": "Скорая победа",
+ "vi": "Chiến Thắng Trong Chớp Mắt",
+ "id": "Victory In a Blink",
+ "es": "Victoria disputada",
+ "fr": "Victoire éclair",
+ "de": "Sieg im Handumdrehen",
+ "pt": "Vitória em Um Piscar de Olhos"
+ },
+ "rarity": 4,
+ "path": "Remembrance"
+ },
+ "21051": {
+ "names": {
+ "th": "Geniuses' Greetings",
+ "en": "Geniuses' Greetings",
+ "zh-CN": "天才们的问候",
+ "zh-TW": "天才們的問候",
+ "ja": "天才たちの「挨拶」",
+ "ko": "천재들의 안부 인사",
+ "ru": "Привет от гениев",
+ "vi": "Lời Chào Hỏi Của Thiên Tài",
+ "id": "Geniuses' Greetings",
+ "es": "Saludo entre genios",
+ "fr": "Salutation des génies",
+ "de": "Der Gruß der Genies",
+ "pt": "Saudações dos Gênios"
+ },
+ "rarity": 4,
+ "path": "Remembrance"
+ },
+ "21052": {
+ "names": {
+ "th": "Sweat Now, Cry Less",
+ "en": "Sweat Now, Cry Less",
+ "zh-CN": "多流汗,少流泪",
+ "zh-TW": "多流汗,少流淚",
+ "ja": "流すなら涙より汗",
+ "ko": "땀은 많이, 눈물은 적게",
+ "ru": "Больше пота, меньше слёз",
+ "vi": "Đổ Mồ Hôi Nhiều, Rơi Nước Mắt Ít",
+ "id": "Sweat Now, Cry Less",
+ "es": "Más sudor y menos lágrimas",
+ "fr": "Transpire, tu pleureras moins",
+ "de": "Mehr Schwitzen, weniger Weinen",
+ "pt": "Suar Para Não Chorar"
+ },
+ "rarity": 4,
+ "path": "Remembrance"
+ },
+ "21053": {
+ "names": {
+ "th": "Journey, Forever Peaceful",
+ "en": "Journey, Forever Peaceful",
+ "zh-CN": "愿旅途永远坦然",
+ "zh-TW": "願旅途永遠坦然",
+ "ja": "旅が平穏であるように",
+ "ko": "언제나 여정이 평탄하기를",
+ "ru": "Пусть твой путь всегда будет мирным",
+ "vi": "Mong Hành Trình Mãi Mãi Bình An",
+ "id": "Journey, Forever Peaceful",
+ "es": "Que tu viaje sea siempre pacífico",
+ "fr": "Une route à jamais paisible",
+ "de": "Mögen Reisen für immer friedlich sein",
+ "pt": "Jornada, Eternamente Pacífica"
+ },
+ "rarity": 4,
+ "path": "Preservation"
+ },
+ "21054": {
+ "names": {
+ "th": "The Story's Next Page",
+ "en": "The Story's Next Page",
+ "zh-CN": "故事的下一页",
+ "zh-TW": "故事的下一頁",
+ "ja": "物語をめくって",
+ "ko": "이야기의 다음 페이지",
+ "ru": "Следующая страница истории",
+ "vi": "Trang Tiếp Theo Của Câu Chuyện",
+ "id": "The Story's Next Page",
+ "es": "La siguiente página de la historia",
+ "fr": "Le prochain chapitre",
+ "de": "Die nächste Seite der Geschichte",
+ "pt": "A Próxima Página da História"
+ },
+ "rarity": 4,
+ "path": "Remembrance"
+ },
+ "21055": {
+ "names": {
+ "th": "Unto Tomorrow's Morrow",
+ "en": "Unto Tomorrow's Morrow",
+ "zh-CN": "直到明天的明天",
+ "zh-TW": "直到明天的明天",
+ "ja": "明日の明日まで",
+ "ko": "내일의 내일이 올 때까지",
+ "ru": "Пока не наступит послезавтра",
+ "vi": "Cho Đến Ngày Mai Của Ngày Mai",
+ "id": "Unto Tomorrow's Morrow",
+ "es": "Hasta pasado mañana",
+ "fr": "Jusqu'au lendemain",
+ "de": "Bis zum Übermorgen",
+ "pt": "Até o Amanhã do Amanhã"
+ },
+ "rarity": 4,
+ "path": "Abundance"
+ },
+ "21056": {
+ "names": {
+ "th": "In Pursuit of the Wind",
+ "en": "In Pursuit of the Wind",
+ "zh-CN": "追逐风的时候",
+ "zh-TW": "追逐風的時候",
+ "ja": "風を追う時",
+ "ko": "바람을 쫓을 때",
+ "ru": "Гоняясь за ветром",
+ "vi": "Khi Đuổi Theo Gió",
+ "id": "In Pursuit of the Wind",
+ "es": "Al perseguir el viento",
+ "fr": "Poursuite du vent",
+ "de": "Bei der Jagd nach dem Wind",
+ "pt": "Em Busca do Vento"
+ },
+ "rarity": 4,
+ "path": "Harmony"
+ },
+ "21057": {
+ "names": {
+ "th": "The Flower Remembers",
+ "en": "The Flower Remembers",
+ "zh-CN": "花儿不会忘记",
+ "zh-TW": "花兒不會忘記",
+ "ja": "花は忘れない",
+ "ko": "꽃은 잊지 않는다",
+ "ru": "Цветы не забывают",
+ "vi": "Hoa Sẽ Không Quên",
+ "id": "The Flower Remembers",
+ "es": "Las flores nunca olvidan",
+ "fr": "Les fleurs n'oublient pas",
+ "de": "Die Blumen werden nicht vergessen",
+ "pt": "A Flor se Recorda"
+ },
+ "rarity": 4,
+ "path": "Remembrance"
+ },
+ "21058": {
+ "names": {
+ "th": "A Trail of Bygone Blood",
+ "en": "A Trail of Bygone Blood",
+ "zh-CN": "一行往日的血",
+ "zh-TW": "一行往日的血",
+ "ja": "古より受け継がれる血",
+ "ko": "과거의 핏자국",
+ "ru": "Кровь прошлого",
+ "vi": "Vệt Máu Ngày Cũ",
+ "id": "A Trail of Bygone Blood",
+ "es": "Sangre del pasado",
+ "fr": "Trace de sang du passé",
+ "de": "Blutzeichen aus der Vergangenheit",
+ "pt": "Um Rastro de Sangue do Passado"
+ },
+ "rarity": 4,
+ "path": "Destruction"
+ },
+ "21060": {
+ "names": {
+ "th": "A Dream Scented in Wheat",
+ "en": "A Dream Scented in Wheat",
+ "zh-CN": "氤氲麦香的梦",
+ "zh-TW": "氤氳麥香的夢",
+ "ja": "麦の香り漂う夢",
+ "ko": "밀 내음이 가득한 꿈",
+ "ru": "Пшеничные мечты",
+ "vi": "Giấc Mơ Vấn Vương Hương Lúa",
+ "id": "A Dream Scented in Wheat",
+ "es": "Sueños de trigo fragante",
+ "fr": "Rêve au parfum de blé",
+ "de": "Träume von duftendem Weizen",
+ "pt": "Um Sonho Perfumado de Trigo"
+ },
+ "rarity": 4,
+ "path": "Erudition"
+ },
+ "21061": {
+ "names": {
+ "th": "Holiday Thermae Escapade",
+ "en": "Holiday Thermae Escapade",
+ "zh-CN": "假日浴场大冒险",
+ "zh-TW": "假日浴場大冒險",
+ "ja": "休日のバルネア大冒険",
+ "ko": "휴일의 목욕탕 대모험",
+ "ru": "Приключения в купальне",
+ "vi": "Kỳ Nghỉ Phiêu Lưu Nhà Tắm Hơi",
+ "id": "Holiday Thermae Escapade",
+ "es": "Vacaciones en las termas",
+ "fr": "Virée festive aux thermes",
+ "de": "Abenteuer der Urlaubsbäder",
+ "pt": "Fuga Termal de Férias"
+ },
+ "rarity": 4,
+ "path": "Nihility"
+ },
+ "21062": {
+ "names": {
+ "th": "See You at the End",
+ "en": "See You at the End",
+ "zh-CN": "于那终点再见",
+ "zh-TW": "於那終點再見",
+ "ja": "終点でまた会おう",
+ "ko": "그 종착지에서 다시 만나자",
+ "ru": "Встреча в конце пути",
+ "vi": "Gặp Lại Ở Điểm Cuối Cùng",
+ "id": "See You at the End",
+ "es": "Nos vemos al final",
+ "fr": "Retrouvons-nous à la fin",
+ "de": "Wiedersehen an der Ziellinie",
+ "pt": "Te Vejo no Fim"
+ },
+ "rarity": 4,
+ "path": "Hunt"
+ },
+ "21064": {
+ "names": {
+ "th": "Mushy Shroomy's Adventures",
+ "en": "Mushy Shroomy's Adventures",
+ "zh-CN": "菇菇嘎嘎历险记",
+ "zh-TW": "菇菇嘎嘎歷險記",
+ "ja": "タケタケ冒険記",
+ "ko": "슈룸 모험기",
+ "ru": "Приключения грибочков",
+ "vi": "Cuộc Phiêu Lưu Của Nấm Núng Nính",
+ "id": "Mushy Shroomy's Adventures",
+ "es": "Las aventuras de Champigaga",
+ "fr": "L'Odyssée de Champi",
+ "de": "Die Abenteuer des pilzigen Pilzes",
+ "pt": "As Aventuras do Cogumelinho Fofinho"
+ },
+ "rarity": 4,
+ "path": "Elation"
+ },
+ "21065": {
+ "names": {
+ "th": "Today's Good Luck",
+ "en": "Today's Good Luck",
+ "zh-CN": "今日好手气",
+ "zh-TW": "今日好手氣",
+ "ja": "今日は好運",
+ "ko": "오늘의 행운",
+ "ru": "Благоприятный день",
+ "vi": "Hôm Nay May Mắn Đấy",
+ "id": "Today's Good Luck",
+ "es": "La buena suerte de hoy",
+ "fr": "Un jour de chance",
+ "de": "Glück des Tages",
+ "pt": "Boa Sorte de Hoje"
+ },
+ "rarity": 4,
+ "path": "Elation"
+ },
+ "21066": {
+ "names": {
+ "th": "A Little Getaway",
+ "en": "A Little Getaway",
+ "zh-CN": "放个短假",
+ "zh-TW": "放個小假",
+ "ja": "バカンスのひと時",
+ "ko": "짧은 휴가",
+ "ru": "Короткий отпуск",
+ "vi": "Kỳ Nghỉ Ngắn Ngủi",
+ "id": "A Little Getaway",
+ "es": "Un breve descanso",
+ "fr": "Une pause bien méritée",
+ "de": "Kleiner Kurzurlaub",
+ "pt": "Um Breve Descanso"
+ },
+ "rarity": 4,
+ "path": "Elation"
+ },
+ "22000": {
+ "names": {
+ "th": "Before the Tutorial Mission Starts",
+ "en": "Before the Tutorial Mission Starts",
+ "zh-CN": "新手任务开始前",
+ "zh-TW": "新手任務開始前",
+ "ja": "初めてのクエストの前に",
+ "ko": "초보자 임무 시작 전",
+ "ru": "Перед началом тренировочной миссии",
+ "vi": "Trước Khi Bắt Đầu Nhiệm Vụ Tân Thủ",
+ "id": "Before the Tutorial Mission Starts",
+ "es": "Antes de que comience la misión del tutorial",
+ "fr": "Avant que le tutoriel ne commence",
+ "de": "Bevor das Tutorial beginnt",
+ "pt": "Antes do Início da Missão do Tutorial"
+ },
+ "rarity": 4,
+ "path": "Nihility"
+ },
+ "22001": {
+ "names": {
+ "th": "Hey, Over Here",
+ "en": "Hey, Over Here",
+ "zh-CN": "嘿,我在这儿",
+ "zh-TW": "嘿,我在這裡",
+ "ja": "よぉ、ここにいるぜ",
+ "ko": "저기, 나 여기 있어",
+ "ru": "Эй, я здесь",
+ "vi": "Hi, Tôi Ở Đây",
+ "id": "Hey, Over Here",
+ "es": "Ey, estoy aquí",
+ "fr": "Hé, par ici !",
+ "de": "Hey, ich bin hier",
+ "pt": "Ei, Estou Aqui!"
+ },
+ "rarity": 4,
+ "path": "Abundance"
+ },
+ "22002": {
+ "names": {
+ "th": "For Tomorrow's Journey",
+ "en": "For Tomorrow's Journey",
+ "zh-CN": "为了明日的旅途",
+ "zh-TW": "為了明日的旅途",
+ "ja": "明日のための旅",
+ "ko": "내일을 위한 여정",
+ "ru": "За завтрашнее путешествие",
+ "vi": "Vì Hành Trình Ngày Mai",
+ "id": "For Tomorrow's Journey",
+ "es": "Para el viaje de mañana",
+ "fr": "Au nom du voyage de demain",
+ "de": "Für die Reise von morgen",
+ "pt": "Pela Jornada do Amanhã"
+ },
+ "rarity": 4,
+ "path": "Harmony"
+ },
+ "22003": {
+ "names": {
+ "th": "Ninja Record: Sound Hunt",
+ "en": "Ninja Record: Sound Hunt",
+ "zh-CN": "忍事录•音律狩猎",
+ "zh-TW": "忍事錄•音律狩獵",
+ "ja": "忍事録・音律狩猟",
+ "ko": "인사록•음률 사냥",
+ "ru": "Запись ниндзя: Музыкальная охота",
+ "vi": "Nhẫn Sự Lục-Săn Bắn Âm Luật",
+ "id": "Ninja Record: Sound Hunt",
+ "es": "Grabación ninja: Cacería del Sonido",
+ "fr": "Registre ninja : Chasse au son",
+ "de": "Ninja-Aufzeichnung: Klangjagd",
+ "pt": "Registro Ninja: Caça ao Som"
+ },
+ "rarity": 4,
+ "path": "Destruction"
+ },
+ "22004": {
+ "names": {
+ "th": "The Great Cosmic Enterprise",
+ "en": "The Great Cosmic Enterprise",
+ "zh-CN": "宇宙大生意",
+ "zh-TW": "宇宙大生意",
+ "ja": "宇宙一の大商い!",
+ "ko": "우주 대사업",
+ "ru": "Бизнес космических масштабов",
+ "vi": "Kinh Doanh Tầm Cỡ Vũ Trụ",
+ "id": "The Great Cosmic Enterprise",
+ "es": "El gran negocio cósmico",
+ "fr": "La grande entreprise cosmique",
+ "de": "Das große kosmische Geschäft",
+ "pt": "O Grande Empreendimento Cósmico"
+ },
+ "rarity": 4,
+ "path": "Erudition"
+ },
+ "22005": {
+ "names": {
+ "th": "The Forever Victual",
+ "en": "The Forever Victual",
+ "zh-CN": "永远的迷境饭",
+ "zh-TW": "永遠的迷境飯",
+ "ja": "永遠の迷境ごはん",
+ "ko": "영원한 미궁의 식사",
+ "ru": "Вечный ресторан лабиринта",
+ "vi": "Món Ăn Vĩnh Hằng",
+ "id": "The Forever Victual",
+ "es": "Viandas sin fin",
+ "fr": "Un goût d'éternité",
+ "de": "Wirrgarten-Restaurant für immer",
+ "pt": "O Víveres Eterno"
+ },
+ "rarity": 4,
+ "path": "Harmony"
+ },
+ "22006": {
+ "names": {
+ "th": "Fly Into a Pink Tomorrow",
+ "en": "Fly Into a Pink Tomorrow",
+ "zh-CN": "飞向粉色的明天",
+ "zh-TW": "飛向粉紅色的明天",
+ "ja": "ピンク色の明日へ",
+ "ko": "핑크빛 내일을 향해",
+ "ru": "Полёт к розовому завтра",
+ "vi": "Bay Đến Ngày Mai Màu Hồng",
+ "id": "Fly Into a Pink Tomorrow",
+ "es": "Volando hacia un mañana rosado",
+ "fr": "Envol vers un lendemain rosé",
+ "de": "Flug in einen rosaroten Morgen",
+ "pt": "Rumo ao Amanhã Cor-de-Rosa"
+ },
+ "rarity": 4,
+ "path": "Remembrance"
+ },
+ "22007": {
+ "names": {
+ "th": "Tomorrow, Together",
+ "en": "Tomorrow, Together",
+ "zh-CN": "未来,有我们一起",
+ "zh-TW": "未來,有我們一起",
+ "ja": "みんなで一緒に未来へ",
+ "ko": "미래엔 우리가 함께할 거야",
+ "ru": "Будущее вместе",
+ "vi": "Tương Lai, Có Chúng Ta Cùng Nhau",
+ "id": "Tomorrow, Together",
+ "es": "Juntos hacia el futuro",
+ "fr": "L'avenir nous verra réunis",
+ "de": "Gemeinsam in die Zukunft",
+ "pt": "Juntos no Futuro"
+ },
+ "rarity": 4,
+ "path": "Elation"
+ },
+ "22008": {
+ "names": {
+ "th": "Race to the Horizon",
+ "en": "Race to the Horizon",
+ "zh-CN": "向着地平线的终点",
+ "zh-TW": "向著地平線的終點",
+ "ja": "地平線のゴールへ",
+ "ko": "지평선의 끝을 향해",
+ "ru": "Гонка к горизонту",
+ "vi": "Hướng Tới Tận Cùng Đường Chân Trời",
+ "id": "Race to the Horizon",
+ "es": "Hacia el final del horizonte",
+ "fr": "Course vers l'horizon",
+ "de": "Wettrennen zum Horizont",
+ "pt": "Corrida ao Horizonte"
+ },
+ "rarity": 4,
+ "path": "Hunt"
+ },
+ "23000": {
+ "names": {
+ "th": "Night on the Milky Way",
+ "en": "Night on the Milky Way",
+ "zh-CN": "银河铁道之夜",
+ "zh-TW": "銀河鐵道之夜",
+ "ja": "銀河鉄道の夜",
+ "ko": "은하철도의 밤",
+ "ru": "Ночь на Млечном Пути",
+ "vi": "Chuyến Tàu Đêm Trên Dải Ngân Hà",
+ "id": "Night on the Milky Way",
+ "es": "Noche en la Vía Láctea",
+ "fr": "Nuit sur la voie lactée",
+ "de": "Nacht auf der Milchstraße",
+ "pt": "Noite na Via Láctea"
+ },
+ "rarity": 5,
+ "path": "Erudition"
+ },
+ "23001": {
+ "names": {
+ "th": "In the Night",
+ "en": "In the Night",
+ "zh-CN": "于夜色中",
+ "zh-TW": "於夜色中",
+ "ja": "夜の帳の中で",
+ "ko": "야경 속에서",
+ "ru": "В ночи",
+ "vi": "Trong Đêm Tối",
+ "id": "In the Night",
+ "es": "En la noche",
+ "fr": "Dans la nuit",
+ "de": "In der Nacht",
+ "pt": "Na Noite"
+ },
+ "rarity": 5,
+ "path": "Hunt"
+ },
+ "23002": {
+ "names": {
+ "th": "Something Irreplaceable",
+ "en": "Something Irreplaceable",
+ "zh-CN": "无可取代的东西",
+ "zh-TW": "無可取代的東西",
+ "ja": "かけがえのないもの",
+ "ko": "대체할 수 없는 것",
+ "ru": "Что-то незаменимое",
+ "vi": "Vật Không Thể Thay Thế",
+ "id": "Something Irreplaceable",
+ "es": "Algo insustituible",
+ "fr": "Quelque chose d'irremplaçable",
+ "de": "Etwas Unersetzliches",
+ "pt": "Algo Insubstituível"
+ },
+ "rarity": 5,
+ "path": "Destruction"
+ },
+ "23003": {
+ "names": {
+ "th": "But the Battle Isn't Over",
+ "en": "But the Battle Isn't Over",
+ "zh-CN": "但战斗还未结束",
+ "zh-TW": "但戰鬥還未結束",
+ "ja": "だが戦争は終わらない",
+ "ko": "아직 전투는 끝나지 않았다",
+ "ru": "Битва не окончена",
+ "vi": "Cuộc Chiến Chưa Nguôi",
+ "id": "But the Battle Isn't Over",
+ "es": "La batalla no ha terminado",
+ "fr": "Le combat n'est pas terminé",
+ "de": "Der Kampf ist nicht vorbei",
+ "pt": "Mas a Batalha Não Acabou"
+ },
+ "rarity": 5,
+ "path": "Harmony"
+ },
+ "23004": {
+ "names": {
+ "th": "In the Name of the World",
+ "en": "In the Name of the World",
+ "zh-CN": "以世界之名",
+ "zh-TW": "以世界之名",
+ "ja": "世界の名を以て",
+ "ko": "세계의 이름으로",
+ "ru": "Во имя мира",
+ "vi": "Nhân Danh Thế Giới",
+ "id": "In the Name of the World",
+ "es": "En nombre del mundo",
+ "fr": "Au nom du monde",
+ "de": "Im Namen der Welt",
+ "pt": "Em Nome do Mundo"
+ },
+ "rarity": 5,
+ "path": "Nihility"
+ },
+ "23005": {
+ "names": {
+ "th": "Moment of Victory",
+ "en": "Moment of Victory",
+ "zh-CN": "制胜的瞬间",
+ "zh-TW": "制勝的瞬間",
+ "ja": "勝利の刹那",
+ "ko": "승리의 순간",
+ "ru": "Момент победы",
+ "vi": "Giây Phút Thắng Lợi",
+ "id": "Moment of Victory",
+ "es": "El momento de la victoria",
+ "fr": "Moment de victoire",
+ "de": "Moment des Sieges",
+ "pt": "Momento de Vitória"
+ },
+ "rarity": 5,
+ "path": "Preservation"
+ },
+ "23006": {
+ "names": {
+ "th": "Patience Is All You Need",
+ "en": "Patience Is All You Need",
+ "zh-CN": "只需等待",
+ "zh-TW": "只需等待",
+ "ja": "待つのみ",
+ "ko": "필요한 건 기다림뿐",
+ "ru": "Просто надо подождать",
+ "vi": "Chỉ Cần Chờ Đợi",
+ "id": "Patience Is All You Need",
+ "es": "Solo hay que esperar",
+ "fr": "Juste de la patience",
+ "de": "Nur Geduld",
+ "pt": "Você Só Precisa de Paciência"
+ },
+ "rarity": 5,
+ "path": "Nihility"
+ },
+ "23007": {
+ "names": {
+ "th": "Incessant Rain",
+ "en": "Incessant Rain",
+ "zh-CN": "雨一直下",
+ "zh-TW": "雨一直下",
+ "ja": "降りやまぬ雨",
+ "ko": "계속 내리는 비",
+ "ru": "Непрекращающийся дождь",
+ "vi": "Cơn Mưa Tầm Tã",
+ "id": "Incessant Rain",
+ "es": "Lluvia incesante",
+ "fr": "Pluie incessante",
+ "de": "Unaufhörlicher Regen",
+ "pt": "Chuva Constante"
+ },
+ "rarity": 5,
+ "path": "Nihility"
+ },
+ "23008": {
+ "names": {
+ "th": "Echoes of the Coffin",
+ "en": "Echoes of the Coffin",
+ "zh-CN": "棺的回响",
+ "zh-TW": "棺的迴響",
+ "ja": "棺のこだま",
+ "ko": "관의 울림",
+ "ru": "Эхо из гроба",
+ "vi": "Tiếng Vọng Của Quan Tài",
+ "id": "Echoes of the Coffin",
+ "es": "Ecos del ataúd",
+ "fr": "Échos du cercueil",
+ "de": "Echos des Sarges",
+ "pt": "Ecos do Caixão"
+ },
+ "rarity": 5,
+ "path": "Abundance"
+ },
+ "23009": {
+ "names": {
+ "th": "The Unreachable Side",
+ "en": "The Unreachable Side",
+ "zh-CN": "到不了的彼岸",
+ "zh-TW": "到不了的彼岸",
+ "ja": "着かない彼岸",
+ "ko": "닿을 수 없는 저편",
+ "ru": "Недоступная сторона",
+ "vi": "Bến Bờ Xa Diệu Vợi",
+ "id": "The Unreachable Side",
+ "es": "Orilla inalcanzable",
+ "fr": "Traversée impossible",
+ "de": "Unerreichbares Jenseits",
+ "pt": "O Lado Inacessível"
+ },
+ "rarity": 5,
+ "path": "Destruction"
+ },
+ "23010": {
+ "names": {
+ "th": "Before Dawn",
+ "en": "Before Dawn",
+ "zh-CN": "拂晓之前",
+ "zh-TW": "拂曉之前",
+ "ja": "夜明け前",
+ "ko": "동트기 전",
+ "ru": "До рассвета",
+ "vi": "Trước Buổi Bình Minh",
+ "id": "Before Dawn",
+ "es": "Antes del amanecer",
+ "fr": "Avant l'aube",
+ "de": "Vor der Dämmerung",
+ "pt": "Antes do Amanhecer"
+ },
+ "rarity": 5,
+ "path": "Erudition"
+ },
+ "23011": {
+ "names": {
+ "th": "She Already Shut Her Eyes",
+ "en": "She Already Shut Her Eyes",
+ "zh-CN": "她已闭上双眼",
+ "zh-TW": "她已閉上雙眼",
+ "ja": "閉ざした瞳",
+ "ko": "그녀는 두 눈을 감았네",
+ "ru": "Она закрыла глаза",
+ "vi": "Đôi Mắt Đã Nhắm Lại",
+ "id": "She Already Shut Her Eyes",
+ "es": "Ya ha cerrado los ojos",
+ "fr": "Elle a déjà fermé les yeux",
+ "de": "Ihre Augen sind bereits geschlossen",
+ "pt": "Ela Já Fechou Seus Olhos"
+ },
+ "rarity": 5,
+ "path": "Preservation"
+ },
+ "23012": {
+ "names": {
+ "th": "Sleep Like the Dead",
+ "en": "Sleep Like the Dead",
+ "zh-CN": "如泥酣眠",
+ "zh-TW": "如泥酣眠",
+ "ja": "泥の如き眠り",
+ "ko": "깊게 든 단잠",
+ "ru": "Мертвецкий сон",
+ "vi": "Giấc Ngủ Say Mềm",
+ "id": "Sleep Like the Dead",
+ "es": "Dormir como un tronco",
+ "fr": "D'un sommeil de mort",
+ "de": "Schlafen wie die Toten",
+ "pt": "Sono Profundo"
+ },
+ "rarity": 5,
+ "path": "Hunt"
+ },
+ "23013": {
+ "names": {
+ "th": "Time Waits for No One",
+ "en": "Time Waits for No One",
+ "zh-CN": "时节不居",
+ "zh-TW": "時節不居",
+ "ja": "時節は居らず",
+ "ko": "세월은 흐를 뿐",
+ "ru": "Время никого не ждёт",
+ "vi": "Thời Gian Không Ngừng Lại",
+ "id": "Time Waits for No One",
+ "es": "El tiempo no espera",
+ "fr": "Le temps n'attend pas",
+ "de": "Die Zeit wartet auf niemanden",
+ "pt": "O Tempo Não Espera por Ninguém"
+ },
+ "rarity": 5,
+ "path": "Abundance"
+ },
+ "23014": {
+ "names": {
+ "th": "I Shall Be My Own Sword",
+ "en": "I Shall Be My Own Sword",
+ "zh-CN": "此身为剑",
+ "zh-TW": "此身為劍",
+ "ja": "この身は剣なり",
+ "ko": "이 몸이 검이니",
+ "ru": "Отныне я сама буду мечом",
+ "vi": "Thân Này Là Kiếm",
+ "id": "I Shall Be My Own Sword",
+ "es": "Yo seré mi propia espada",
+ "fr": "Ma propre épée, je serai",
+ "de": "Eins mit dem Schwert",
+ "pt": "Eu Serei Minha Própria Espada"
+ },
+ "rarity": 5,
+ "path": "Destruction"
+ },
+ "23015": {
+ "names": {
+ "th": "Brighter Than the Sun",
+ "en": "Brighter Than the Sun",
+ "zh-CN": "比阳光更明亮的",
+ "zh-TW": "比陽光更明亮的",
+ "ja": "陽光より輝くもの",
+ "ko": "태양보다 밝게 빛나는 것",
+ "ru": "Ярче солнца",
+ "vi": "Rực Rỡ Hơn Mặt Trời",
+ "id": "Brighter Than the Sun",
+ "es": "Más brillante que el sol",
+ "fr": "Plus brillant que le soleil",
+ "de": "Heller als die Sonne",
+ "pt": "Mais Claro do que o Sol"
+ },
+ "rarity": 5,
+ "path": "Destruction"
+ },
+ "23016": {
+ "names": {
+ "th": "Worrisome, Blissful",
+ "en": "Worrisome, Blissful",
+ "zh-CN": "烦恼着,幸福着",
+ "zh-TW": "煩惱著,幸福著",
+ "ja": "悩んで笑って",
+ "ko": "고민, 그리고 행복",
+ "ru": "Тревога и блаженство",
+ "vi": "Phiền Não, Hạnh Phúc",
+ "id": "Worrisome, Blissful",
+ "es": "Preocupaciones y felicidad",
+ "fr": "Inquiétude et soulagement",
+ "de": "Besorgt doch glückselig",
+ "pt": "Inquietante, Extasiante"
+ },
+ "rarity": 5,
+ "path": "Hunt"
+ },
+ "23017": {
+ "names": {
+ "th": "Night of Fright",
+ "en": "Night of Fright",
+ "zh-CN": "惊魂夜",
+ "zh-TW": "驚魂夜",
+ "ja": "驚魂の夜",
+ "ko": "섬뜩한 밤",
+ "ru": "Ночь страха",
+ "vi": "Đêm Kinh Hoàng",
+ "id": "Night of Fright",
+ "es": "Noche terrorífica",
+ "fr": "Nuit de l'épouvante",
+ "de": "Nacht der Angst",
+ "pt": "Noite Aterrorizante"
+ },
+ "rarity": 5,
+ "path": "Abundance"
+ },
+ "23018": {
+ "names": {
+ "th": "An Instant Before A Gaze",
+ "en": "An Instant Before A Gaze",
+ "zh-CN": "片刻,留在眼底",
+ "zh-TW": "片刻,留在眼底",
+ "ja": "その一刻、目に焼き付けて",
+ "ko": "눈에 담긴 순간",
+ "ru": "Остановись, мгновенье",
+ "vi": "Khoảnh Khắc Nơi Đáy Mắt",
+ "id": "An Instant Before A Gaze",
+ "es": "Instante grabado a fuego",
+ "fr": "Moment de grâce",
+ "de": "Ein unvergesslicher Augenblick",
+ "pt": "Um Instante Eternamente Adorado"
+ },
+ "rarity": 5,
+ "path": "Erudition"
+ },
+ "23019": {
+ "names": {
+ "th": "Past Self in Mirror",
+ "en": "Past Self in Mirror",
+ "zh-CN": "镜中故我",
+ "zh-TW": "鏡中故我",
+ "ja": "鏡の中の私",
+ "ko": "거울 속 지난날의 나",
+ "ru": "Отражение прошлой меня",
+ "vi": "Tôi Trong Gương Ngày Ấy",
+ "id": "Past Self in Mirror",
+ "es": "Mi pasado en el espejo",
+ "fr": "Reflet du passé",
+ "de": "Das Ich im Spiegel",
+ "pt": "Meu Passado no Espelho"
+ },
+ "rarity": 5,
+ "path": "Harmony"
+ },
+ "23020": {
+ "names": {
+ "th": "Baptism of Pure Thought",
+ "en": "Baptism of Pure Thought",
+ "zh-CN": "纯粹思维的洗礼",
+ "zh-TW": "純粹思維的洗禮",
+ "ja": "純粋なる思惟の洗礼",
+ "ko": "순수 사유의 세례",
+ "ru": "Крещение чистой мысли",
+ "vi": "Lễ Rửa Tội Thuần Khiết",
+ "id": "Baptism of Pure Thought",
+ "es": "El bautismo del pensamiento puro",
+ "fr": "Baptême de pure réflexion",
+ "de": "Taufe des reinen Denkens",
+ "pt": "O Batismo de Pensamento Puro"
+ },
+ "rarity": 5,
+ "path": "Hunt"
+ },
+ "23021": {
+ "names": {
+ "th": "Earthly Escapade",
+ "en": "Earthly Escapade",
+ "zh-CN": "游戏尘寰",
+ "zh-TW": "遊戲塵寰",
+ "ja": "人生は遊び",
+ "ko": "속세에서의 유희",
+ "ru": "Мирские шалости",
+ "vi": "Trò Đùa Trần Thế",
+ "id": "Earthly Escapade",
+ "es": "Mundo de juegos",
+ "fr": "Escapade terrestre",
+ "de": "Eskapade auf Erden",
+ "pt": "Fuga Terrena"
+ },
+ "rarity": 5,
+ "path": "Harmony"
+ },
+ "23022": {
+ "names": {
+ "th": "Reforged Remembrance",
+ "en": "Reforged Remembrance",
+ "zh-CN": "重塑时光之忆",
+ "zh-TW": "重塑時光之憶",
+ "ja": "時間の記憶を再構築して",
+ "ko": "시간의 기억에 대한 재구성",
+ "ru": "Изменённые воспоминания",
+ "vi": "Hun Đúc Ký Ức Thời Gian",
+ "id": "Reforged Remembrance",
+ "es": "Recuerdos reconstruidos",
+ "fr": "Souvenirs refaçonnés",
+ "de": "Restaurierte Erinnerung",
+ "pt": "Recordação Reforjada"
+ },
+ "rarity": 5,
+ "path": "Nihility"
+ },
+ "23023": {
+ "names": {
+ "th": "Inherently Unjust Destiny",
+ "en": "Inherently Unjust Destiny",
+ "zh-CN": "命运从未公平",
+ "zh-TW": "命運從未公平",
+ "ja": "運命は常に不公平",
+ "ko": "언제나 불공평한 운명",
+ "ru": "Несправедливая судьба",
+ "vi": "Vận Mệnh Chưa Từng Công Bằng",
+ "id": "Inherently Unjust Destiny",
+ "es": "El destino nunca es justo",
+ "fr": "Destin injuste",
+ "de": "Ungerechtes Schicksal",
+ "pt": "Destino Inerentemente Injusto"
+ },
+ "rarity": 5,
+ "path": "Preservation"
+ },
+ "23024": {
+ "names": {
+ "th": "Along the Passing Shore",
+ "en": "Along the Passing Shore",
+ "zh-CN": "行于流逝的岸",
+ "zh-TW": "行於流逝的岸",
+ "ja": "流れ逝く岸を歩いて",
+ "ko": "흘러가는 강가를 따라",
+ "ru": "Вдоль уходящего берега",
+ "vi": "Bước Theo Bến Bờ Thời Gian",
+ "id": "Along the Passing Shore",
+ "es": "En las orillas transitorias",
+ "fr": "Le long de la rive",
+ "de": "Entlang am vorbeiziehenden Ufer",
+ "pt": "Ao Longo da Margem Transitória"
+ },
+ "rarity": 5,
+ "path": "Nihility"
+ },
+ "23025": {
+ "names": {
+ "th": "Whereabouts Should Dreams Rest",
+ "en": "Whereabouts Should Dreams Rest",
+ "zh-CN": "梦应归于何处",
+ "zh-TW": "夢應歸於何處",
+ "ja": "夢が帰り着く場所",
+ "ko": "꿈은 어디로 돌아가야 하는가",
+ "ru": "Куда возвращаются сны",
+ "vi": "Giấc Mộng Sẽ Đi Về Đâu",
+ "id": "Whereabouts Should Dreams Rest",
+ "es": "A donde regresan los sueños",
+ "fr": "Là où les rêves se reposent",
+ "de": "Wohin sollen die Träume gehen",
+ "pt": "Onde os Sonhos Deveriam Repousar"
+ },
+ "rarity": 5,
+ "path": "Destruction"
+ },
+ "23026": {
+ "names": {
+ "th": "Flowing Nightglow",
+ "en": "Flowing Nightglow",
+ "zh-CN": "夜色流光溢彩",
+ "zh-TW": "夜色流光溢彩",
+ "ja": "光あふれる夜",
+ "ko": "찬란하게 빛나는 밤",
+ "ru": "Мимолётные ночные огни",
+ "vi": "Sắc Đêm Rực Sáng",
+ "id": "Flowing Nightglow",
+ "es": "Luces de la noche",
+ "fr": "Lumières nocturnes",
+ "de": "Schillernde Nacht",
+ "pt": "Luzes Noturnas"
+ },
+ "rarity": 5,
+ "path": "Harmony"
+ },
+ "23027": {
+ "names": {
+ "th": "Sailing Towards a Second Life",
+ "en": "Sailing Towards a Second Life",
+ "zh-CN": "驶向第二次生命",
+ "zh-TW": "駛向第二次生命",
+ "ja": "二度目の生に向かって",
+ "ko": "두 번째 생명을 향해",
+ "ru": "Отплытие ко второй жизни",
+ "vi": "Hướng Đến Sinh Mệnh Thứ Hai",
+ "id": "Sailing Towards a Second Life",
+ "es": "Hacia una segunda vida",
+ "fr": "Le début d'une seconde vie",
+ "de": "Auf zu einem zweiten Leben",
+ "pt": "Velejando em Direção a uma Segunda Vida"
+ },
+ "rarity": 5,
+ "path": "Hunt"
+ },
+ "23028": {
+ "names": {
+ "th": "Yet Hope Is Priceless",
+ "en": "Yet Hope Is Priceless",
+ "zh-CN": "偏偏希望无价",
+ "zh-TW": "偏偏希望無價",
+ "ja": "されど希望の銘は無価",
+ "ko": "값을 매길 수 없는 건 희망뿐",
+ "ru": "Но надежда бесценна",
+ "vi": "Hi Vọng Là Vô Giá",
+ "id": "Yet Hope Is Priceless",
+ "es": "La esperanza no tiene precio",
+ "fr": "L'espoir n'a pas de prix",
+ "de": "Doch Hoffnung ist unbezahlbar",
+ "pt": "A Esperança é Inestimável"
+ },
+ "rarity": 5,
+ "path": "Erudition"
+ },
+ "23029": {
+ "names": {
+ "th": "Those Many Springs",
+ "en": "Those Many Springs",
+ "zh-CN": "那无数个春天",
+ "zh-TW": "那無數個春天",
+ "ja": "幾度目かの春",
+ "ko": "그 무수한 봄날",
+ "ru": "Бесчисленные весенние дни",
+ "vi": "Vô Số Mùa Xuân Ấy",
+ "id": "Those Many Springs",
+ "es": "Esas incontables primaveras",
+ "fr": "Le temps du printemps",
+ "de": "Jene unzähligen Frühlinge",
+ "pt": "Aquelas Incontáveis Primaveras"
+ },
+ "rarity": 5,
+ "path": "Nihility"
+ },
+ "23030": {
+ "names": {
+ "th": "Dance at Sunset",
+ "en": "Dance at Sunset",
+ "zh-CN": "落日时起舞",
+ "zh-TW": "落日時起舞",
+ "ja": "夕日に舞う",
+ "ko": "해 질 무렵 시작되는 춤",
+ "ru": "Танец на закате",
+ "vi": "Điệu Múa Dưới Hoàng Hôn",
+ "id": "Dance at Sunset",
+ "es": "Danza crepuscular",
+ "fr": "Danse au crépuscule",
+ "de": "Tanz im Sonnenuntergang",
+ "pt": "Dança ao Pôr do Sol"
+ },
+ "rarity": 5,
+ "path": "Destruction"
+ },
+ "23031": {
+ "names": {
+ "th": "I Venture Forth to Hunt",
+ "en": "I Venture Forth to Hunt",
+ "zh-CN": "我将,巡征追猎",
+ "zh-TW": "我將,巡徵追獵",
+ "ja": "我が征く巡狩の道",
+ "ko": "정복하고 사냥하리",
+ "ru": "Я отправляюсь на охоту",
+ "vi": "Ta Sẽ, Tuần Tra Săn Bắn",
+ "id": "I Venture Forth to Hunt",
+ "es": "Me voy de caza",
+ "fr": "La chasse est ouverte",
+ "de": "Ich wage die Jagd",
+ "pt": "Eu Me Aventuro para Caçar"
+ },
+ "rarity": 5,
+ "path": "Hunt"
+ },
+ "23032": {
+ "names": {
+ "th": "Scent Alone Stays True",
+ "en": "Scent Alone Stays True",
+ "zh-CN": "唯有香如故",
+ "zh-TW": "唯有香如故",
+ "ja": "昔日の香りは今も猶",
+ "ko": "오직 향만이 변함없이",
+ "ru": "Останется лишь аромат",
+ "vi": "Mùi Hương Vẹn Nguyên",
+ "id": "Scent Alone Stays True",
+ "es": "Solo la fragancia perdura",
+ "fr": "Essence de l'encens",
+ "de": "Nur ein Duft bleibt zurück",
+ "pt": "Só a Fragrância Permanece"
+ },
+ "rarity": 5,
+ "path": "Abundance"
+ },
+ "23033": {
+ "names": {
+ "th": "Ninjutsu Inscription: Dazzling Evilbreaker",
+ "en": "Ninjutsu Inscription: Dazzling Evilbreaker",
+ "zh-CN": "忍法帖•缭乱破魔",
+ "zh-TW": "忍法帖•繚亂破魔",
+ "ja": "忍法帖・繚乱破魔",
+ "ko": "인법첩•요란 파마",
+ "ru": "Свиток ниндзя: Очищение хаосом",
+ "vi": "Bí Kíp Nhẫn Pháp-Dazzling Phá Ma",
+ "id": "Ninjutsu Inscription: Dazzling Evilbreaker",
+ "es": "Pergamino ninja: Azote deslumbrante del mal",
+ "fr": "Écritures ninjutsu : Justice éblouissante",
+ "de": "Ninja-Kodex: Blendender Schattenbrecher",
+ "pt": "Inscrição do Ninjutsu: Destruição Deslumbrante do Mal"
+ },
+ "rarity": 5,
+ "path": "Erudition"
+ },
+ "23034": {
+ "names": {
+ "th": "A Grounded Ascent",
+ "en": "A Grounded Ascent",
+ "zh-CN": "回到大地的飞行",
+ "zh-TW": "回到大地的飛行",
+ "ja": "大地より天を目指して",
+ "ko": "대지로 돌아온 비행",
+ "ru": "Приземлённый полёт",
+ "vi": "Chuyến Bay Trở Về Mặt Đất",
+ "id": "A Grounded Ascent",
+ "es": "De vuelta a la tierra",
+ "fr": "Ascension terrestre",
+ "de": "Flug zurück zur Erde",
+ "pt": "Uma Ascensão Aterrada"
+ },
+ "rarity": 5,
+ "path": "Harmony"
+ },
+ "23035": {
+ "names": {
+ "th": "Long Road Leads Home",
+ "en": "Long Road Leads Home",
+ "zh-CN": "长路终有归途",
+ "zh-TW": "長路終有歸途",
+ "ja": "長途はやがて帰途へと続く",
+ "ko": "먼 길 끝의 귀로",
+ "ru": "Дом в конце долгого пути",
+ "vi": "Đường Dài Vẫn Có Lối Về",
+ "id": "Long Road Leads Home",
+ "es": "El largo camino a casa",
+ "fr": "Long est le chemin retour",
+ "de": "Rückkehr auf langem Wege",
+ "pt": "A Longa Estrada Leva para Casa"
+ },
+ "rarity": 5,
+ "path": "Nihility"
+ },
+ "23036": {
+ "names": {
+ "th": "Time Woven Into Gold",
+ "en": "Time Woven Into Gold",
+ "zh-CN": "将光阴织成黄金",
+ "zh-TW": "將光陰織成黃金",
+ "ja": "光陰を織り黄金と成す",
+ "ko": "시간을 황금으로 엮어",
+ "ru": "Вплетённое в золото время",
+ "vi": "Dệt Thời Gian Thành Vàng",
+ "id": "Time Woven Into Gold",
+ "es": "Tiempo urdido en oro",
+ "fr": "Doré est le fil du temps",
+ "de": "In Gold gewebte Zeit",
+ "pt": "Tempo Tecido em Ouro"
+ },
+ "rarity": 5,
+ "path": "Remembrance"
+ },
+ "23037": {
+ "names": {
+ "th": "Into the Unreachable Veil",
+ "en": "Into the Unreachable Veil",
+ "zh-CN": "向着不可追问处",
+ "zh-TW": "向著不可追問處",
+ "ja": "触れてはならぬ領域へ",
+ "ko": "추궁할 수 없는 곳을 향해",
+ "ru": "Навстречу неоспоримому",
+ "vi": "Hướng Về Điều Không Thể Truy Hỏi",
+ "id": "Into the Unreachable Veil",
+ "es": "Hacia lo inescrutable",
+ "fr": "L'impénétrable à portée de main",
+ "de": "Auf zu unerklärlichen Orten",
+ "pt": "Ao Véu Inalcançável"
+ },
+ "rarity": 5,
+ "path": "Erudition"
+ },
+ "23038": {
+ "names": {
+ "th": "If Time Were a Flower",
+ "en": "If Time Were a Flower",
+ "zh-CN": "如果时间是一朵花",
+ "zh-TW": "如果時間是一朵花",
+ "ja": "もしも時が花だったら",
+ "ko": "시간이 한 송이 꽃이라면",
+ "ru": "Если бы время было цветком",
+ "vi": "Nếu Thời Gian Là Một Đóa Hoa",
+ "id": "If Time Were a Flower",
+ "es": "Si el tiempo fuera una flor",
+ "fr": "Si le temps était une fleur",
+ "de": "Wenn Zeit eine Blume wäre",
+ "pt": "Se o Tempo Fosse Uma Flor"
+ },
+ "rarity": 5,
+ "path": "Harmony"
+ },
+ "23039": {
+ "names": {
+ "th": "Flame of Blood, Blaze My Path",
+ "en": "Flame of Blood, Blaze My Path",
+ "zh-CN": "血火啊,燃烧前路",
+ "zh-TW": "血火啊,燃燒前路",
+ "ja": "前途燃やす血の如き炎",
+ "ko": "피의 불꽃이여, 앞길을 태워라",
+ "ru": "Огонь крови, воспламени мой путь",
+ "vi": "Huyết Hỏa, Hãy Thiêu Đốt Con Đường Phía Trước",
+ "id": "Flame of Blood, Blaze My Path",
+ "es": "Sangre y fuego, abran camino",
+ "fr": "Flamme de sang, illumine mon chemin",
+ "de": "Flamme des Blutes, entzünde meinen Pfad",
+ "pt": "Chamas de Sangue, Incendeiem o Meu Caminho"
+ },
+ "rarity": 5,
+ "path": "Destruction"
+ },
+ "23040": {
+ "names": {
+ "th": "Make Farewells More Beautiful",
+ "en": "Make Farewells More Beautiful",
+ "zh-CN": "让告别,更美一些",
+ "zh-TW": "讓告別,更美一點",
+ "ja": "永訣よ美しくあれ",
+ "ko": "이별이 더 아름답도록",
+ "ru": "Пусть прощание будет прекрасным",
+ "vi": "Để Lời Từ Biệt Đẹp Đẽ Hơn",
+ "id": "Make Farewells More Beautiful",
+ "es": "Despedidas más bellas",
+ "fr": "Des adieux encore plus beaux",
+ "de": "Ein noch schönerer Abschied",
+ "pt": "O Adeus Mais Belo"
+ },
+ "rarity": 5,
+ "path": "Remembrance"
+ },
+ "23041": {
+ "names": {
+ "th": "Life Should Be Cast to Flames",
+ "en": "Life Should Be Cast to Flames",
+ "zh-CN": "生命当付之一炬",
+ "zh-TW": "生命當付之一炬",
+ "ja": "生命、焼滅すべし",
+ "ko": "생명은 불태워야 하는 것",
+ "ru": "Брошенная в пламя жизнь",
+ "vi": "Sinh Mệnh Đáng Bị Thiêu Rụi",
+ "id": "Life Should Be Cast to Flames",
+ "es": "La vida en llamas",
+ "fr": "Une vie forgée dans les flammes",
+ "de": "Das Leben sollte in Flammen aufgehen",
+ "pt": "A Vida Forjada em Chamas"
+ },
+ "rarity": 5,
+ "path": "Erudition"
+ },
+ "23042": {
+ "names": {
+ "th": "Long May Rainbows Adorn the Sky",
+ "en": "Long May Rainbows Adorn the Sky",
+ "zh-CN": "愿虹光永驻天空",
+ "zh-TW": "願虹光永駐天空",
+ "ja": "空の虹が消えぬように",
+ "ko": "무지개가 영원히 하늘에 머물길",
+ "ru": "Пусть радуга сияет вечно",
+ "vi": "Mong Cầu Vồng Mãi Ở Trên Bầu Trời",
+ "id": "Long May Rainbows Adorn the Sky",
+ "es": "Que el arcoíris siempre esté en el cielo",
+ "fr": "Éternels soient les arcs-en-ciel",
+ "de": "Mögen Regenbögen am Himmel bleiben",
+ "pt": "Que o Arco-Íris Permaneça no Céu"
+ },
+ "rarity": 5,
+ "path": "Remembrance"
+ },
+ "23043": {
+ "names": {
+ "th": "Lies Dance on the Breeze",
+ "en": "Lies Dance on the Breeze",
+ "zh-CN": "谎言在风中飘扬",
+ "zh-TW": "謊言在風中飄揚",
+ "ja": "風に揺蕩う虚言",
+ "ko": "바람에 흩날리는 거짓말",
+ "ru": "Летящая по ветру ложь",
+ "vi": "Lời Nói Dối Bay Trong Gió",
+ "id": "Lies Dance on the Breeze",
+ "es": "Mentiras que vuelan en el viento",
+ "fr": "Mensonges au gré du vent",
+ "de": "Vom Winde verwehte Lügen",
+ "pt": "Mentiras Dançando ao Vento"
+ },
+ "rarity": 5,
+ "path": "Nihility"
+ },
+ "23044": {
+ "names": {
+ "th": "Thus Burns the Dawn",
+ "en": "Thus Burns the Dawn",
+ "zh-CN": "黎明恰如此燃烧",
+ "zh-TW": "黎明恰如此燃燒",
+ "ja": "燃え盛る黎明のように",
+ "ko": "이와 같이 타오르는 여명",
+ "ru": "Так сгорает рассвет",
+ "vi": "Bình Minh Rực Cháy",
+ "id": "Thus Burns the Dawn",
+ "es": "Que arda el alba",
+ "fr": "Ainsi s'embrase l'aurore",
+ "de": "Wie die Morgendämmerung brennt",
+ "pt": "Assim Arde a Alvorada"
+ },
+ "rarity": 5,
+ "path": "Destruction"
+ },
+ "23045": {
+ "names": {
+ "th": "A Thankless Coronation",
+ "en": "A Thankless Coronation",
+ "zh-CN": "没有回报的加冕",
+ "zh-TW": "沒有回報的加冕",
+ "ja": "報われぬ戴冠",
+ "ko": "보답 없는 왕관",
+ "ru": "Коронация без воздаяния",
+ "vi": "Lễ Đăng Quang Không Hồi Đáp",
+ "id": "A Thankless Coronation",
+ "es": "Coronación sin agradecimiento",
+ "fr": "Un couronnement sans joie",
+ "de": "Eine Krönung ohne Dank",
+ "pt": "Uma Coroação Sem Gratidão"
+ },
+ "rarity": 5,
+ "path": "Destruction"
+ },
+ "23046": {
+ "names": {
+ "th": "The Hell Where Ideals Burn",
+ "en": "The Hell Where Ideals Burn",
+ "zh-CN": "理想燃烧的地狱",
+ "zh-TW": "理想燃燒的地獄",
+ "ja": "理想を焼く奈落で",
+ "ko": "이상이 불타는 지옥",
+ "ru": "Ад горящих идеалов",
+ "vi": "Địa Ngục Thiêu Đốt Lý Tưởng",
+ "id": "The Hell Where Ideals Burn",
+ "es": "Infierno donde arden los ideales",
+ "fr": "L'Enfer où brûlent les idéaux",
+ "de": "Hölle der brennenden Ideale",
+ "pt": "O Inferno Onde os Ideais Ardem"
+ },
+ "rarity": 5,
+ "path": "Hunt"
+ },
+ "23047": {
+ "names": {
+ "th": "Why Does the Ocean Sing",
+ "en": "Why Does the Ocean Sing",
+ "zh-CN": "海洋为何而歌",
+ "zh-TW": "海洋為何而歌",
+ "ja": "海の歌は何がため",
+ "ko": "바다는 왜 노래하는가",
+ "ru": "Почему поёт океан",
+ "vi": "Vì Sao Biển Cả Ca Vang",
+ "id": "Why Does the Ocean Sing",
+ "es": "Por qué canta el océano",
+ "fr": "Ce pourquoi chantent les océans",
+ "de": "Warum singt der Ozean",
+ "pt": "Por que o Oceano Canta?"
+ },
+ "rarity": 5,
+ "path": "Nihility"
+ },
+ "23048": {
+ "names": {
+ "th": "Epoch Etched in Golden Blood",
+ "en": "Epoch Etched in Golden Blood",
+ "zh-CN": "金血铭刻的时代",
+ "zh-TW": "金血銘刻的時代",
+ "ja": "黄金の血で刻む時代",
+ "ko": "황금 피가 새긴 시대",
+ "ru": "Эпоха золотой крови",
+ "vi": "Thời Đại Máu Vàng Khắc Ghi",
+ "id": "Epoch Etched in Golden Blood",
+ "es": "Era grabada en sangre dorada",
+ "fr": "Une ère gravée dans le sang doré",
+ "de": "Zeitalter des goldenen Blutes",
+ "pt": "Era Gravada pelo Sangue Dourado"
+ },
+ "rarity": 5,
+ "path": "Harmony"
+ },
+ "23049": {
+ "names": {
+ "th": "To Evernight's Stars",
+ "en": "To Evernight's Stars",
+ "zh-CN": "致长夜的星光",
+ "zh-TW": "致長夜的星光",
+ "ja": "長き夜に輝く星へ",
+ "ko": "긴 밤의 별빛에게",
+ "ru": "Звёздному свету во тьме",
+ "vi": "Gửi Ánh Sao Của Đêm Dài",
+ "id": "To Evernight's Stars",
+ "es": "A la estrella de la larga noche",
+ "fr": "Jusqu'aux étoiles de l'Éternuitée",
+ "de": "Auf das Sternenlicht der langen Nacht",
+ "pt": "Ao Brilho Estelar da Noite Eterna"
+ },
+ "rarity": 5,
+ "path": "Remembrance"
+ },
+ "23050": {
+ "names": {
+ "th": "Never Forget Her Flame",
+ "en": "Never Forget Her Flame",
+ "zh-CN": "勿忘她的火焰",
+ "zh-TW": "勿忘她的火焰",
+ "ja": "彼女の炎を忘れずに",
+ "ko": "그녀의 불꽃을 잊지 말라",
+ "ru": "Не забывай её пламя",
+ "vi": "Đừng Quên Ngọn Lửa Của Cô Ấy",
+ "id": "Never Forget Her Flame",
+ "es": "No olvides su fuego",
+ "fr": "Une flamme à graver",
+ "de": "Vergiss ihre Flamme niemals",
+ "pt": "Nunca Esqueça Sua Chama"
+ },
+ "rarity": 5,
+ "path": "Nihility"
+ },
+ "23051": {
+ "names": {
+ "th": "Though Worlds Apart",
+ "en": "Though Worlds Apart",
+ "zh-CN": "纵然山河万程",
+ "zh-TW": "縱然山河萬程",
+ "ja": "万里の山河を越えて",
+ "ko": "끝없는 산과 강을 거치더라도",
+ "ru": "Пусть простор бескраен",
+ "vi": "Dù Núi Sông Vạn Dặm",
+ "id": "Though Worlds Apart",
+ "es": "A través de montañas y ríos",
+ "fr": "Par-delà les paysages infinis",
+ "de": "Selbst über endlose Lande",
+ "pt": "Ainda que o Caminho Seja Longo"
+ },
+ "rarity": 5,
+ "path": "Preservation"
+ },
+ "23052": {
+ "names": {
+ "th": "This Love, Forever",
+ "en": "This Love, Forever",
+ "zh-CN": "爱如此刻永恒",
+ "zh-TW": "愛如此刻永恆",
+ "ja": "愛はいま永遠に",
+ "ko": "이 순간처럼 영원한 사랑",
+ "ru": "Как этот миг вечна любовь",
+ "vi": "Nguyện Yêu Như Lúc Này, Mãi Mãi",
+ "id": "This Love, Forever",
+ "es": "Amor eterno como este momento",
+ "fr": "Éternel amour",
+ "de": "Liebe, so ewig wie dieser Moment",
+ "pt": "Instante de Eterno Amor"
+ },
+ "rarity": 5,
+ "path": "Remembrance"
+ },
+ "23053": {
+ "names": {
+ "th": "Dazzled by a Flowery World",
+ "en": "Dazzled by a Flowery World",
+ "zh-CN": "花花世界迷人眼",
+ "zh-TW": "花花世界迷人眼",
+ "ja": "きらびやかな世界",
+ "ko": "눈부신 파키의 세상",
+ "ru": "Зачарованные царством огоньков",
+ "vi": "Thế Giới Hoa Lệ Choáng Ngợp",
+ "id": "Dazzled by a Flowery World",
+ "es": "El cautivador mundochispa",
+ "fr": "Écran d'artifice",
+ "de": "Bezaubert von einer blumigen Welt",
+ "pt": "Deslumbramento Por Um Mundo Florido"
+ },
+ "rarity": 5,
+ "path": "Elation"
+ },
+ "23054": {
+ "names": {
+ "th": "When She Decided to See",
+ "en": "When She Decided to See",
+ "zh-CN": "当她决定看见",
+ "zh-TW": "當她決定看見",
+ "ja": "彼女が視ると決めた時",
+ "ko": "그녀가 보기로 결심했을 때",
+ "ru": "Когда она решилась увидеть",
+ "vi": "Khi Cô Ấy Quyết Định Nhìn Thấy",
+ "id": "When She Decided to See",
+ "es": "Cuando se decidió a ver",
+ "fr": "Lorsqu'elle décida de voir",
+ "de": "Der Entschluss zu sehen",
+ "pt": "Quando Ela Decidiu Ver"
+ },
+ "rarity": 5,
+ "path": "Elation"
+ },
+ "23055": {
+ "names": {
+ "th": "Colors for Tomorrow",
+ "en": "Colors for Tomorrow",
+ "zh-CN": "献给明日的色彩",
+ "zh-TW": "獻給明日的色彩",
+ "ja": "明日に捧げる色",
+ "ko": "내일에 바치는 색채",
+ "ru": "Цвета для завтрашнего дня",
+ "vi": "Sắc Màu Dành Tặng Cho Ngày Mai",
+ "id": "Colors for Tomorrow",
+ "es": "Colores para el mañana",
+ "fr": "Couleurs dédiées au lendemain",
+ "de": "Farben für morgen",
+ "pt": "Cores para o Amanhã"
+ },
+ "rarity": 5,
+ "path": "Elation"
+ },
+ "23056": {
+ "names": {
+ "th": "The Finale of a Lie",
+ "en": "The Finale of a Lie",
+ "zh-CN": "一场谎言的终幕",
+ "zh-TW": "一場謊言的終幕",
+ "ja": "或る嘘の終幕",
+ "ko": "거짓말의 종막",
+ "ru": "Эпилог лжи",
+ "vi": "Màn Kết Của Một Lời Nói Dối",
+ "id": "The Finale of a Lie",
+ "es": "El final de una mentira",
+ "fr": "Bas les masques",
+ "de": "Das Finale einer Lüge",
+ "pt": "O Fim de uma Mentira"
+ },
+ "rarity": 5,
+ "path": "Hunt"
+ },
+ "23057": {
+ "names": {
+ "th": "Welcome to the Cosmic City",
+ "en": "Welcome to the Cosmic City",
+ "zh-CN": "欢迎来到银河城",
+ "zh-TW": "歡迎來到銀河城",
+ "ja": "銀河シティへようこそ",
+ "ko": "갤럭시 시티에 오신 것을 환영합니다",
+ "ru": "Добро пожаловать в космический город",
+ "vi": "Chào Mừng Đến Với Thành Phố Vũ Trụ",
+ "id": "Welcome to the Cosmic City",
+ "es": "Bienvenidos a la ciudad cósmica",
+ "fr": "Terrain de jeu universel",
+ "de": "Willkommen in der kosmischen Stadt",
+ "pt": "Bem-vindo à Cidade Cósmica"
+ },
+ "rarity": 5,
+ "path": "Elation"
+ },
+ "23058": {
+ "names": {
+ "th": "Until the Flowers Bloom Again",
+ "en": "Until the Flowers Bloom Again",
+ "zh-CN": "邂逅于下一个花季",
+ "zh-TW": "邂逅於下一個花季",
+ "ja": "再び花が咲く季節に",
+ "ko": "다음 꽃피는 계절의 만남",
+ "ru": "Пока не распустятся цветы",
+ "vi": "Hẹn Gặp Mùa Hoa Tới",
+ "id": "Until the Flowers Bloom Again",
+ "es": "Encuentro en la próxima primavera",
+ "fr": "Printemps des retrouvailles",
+ "de": "Begegnung in der nächsten Blütezeit",
+ "pt": "Um Encontro na Próxima Primavera"
+ },
+ "rarity": 5,
+ "path": "Elation"
+ },
+ "23059": {
+ "names": {
+ "th": "Reforged in Hellfire",
+ "en": "Reforged in Hellfire",
+ "zh-CN": "灼尽炼狱的新骸",
+ "zh-TW": "灼盡煉獄的新骸",
+ "ja": "煉獄に焼かれし新身",
+ "ko": "연옥을 불사른 새로운 몸",
+ "ru": "Перерождённый в пламени",
+ "vi": "Hình Hài Tái Sinh Từ Hỏa Ngục",
+ "id": "Reforged in Hellfire",
+ "es": "Nuevo cuerpo del averno ardiente",
+ "fr": "Refonte infernale",
+ "de": "Neue Überreste des versengenden Fegefeuers",
+ "pt": "Reforjado nas Chamas do Inferno"
+ },
+ "rarity": 5,
+ "path": "Nihility"
+ },
+ "23060": {
+ "names": {
+ "th": "A Star That Lights the Night",
+ "en": "A Star That Lights the Night",
+ "zh-CN": "当一颗星照亮夜空",
+ "zh-TW": "當一顆星照亮夜空",
+ "ja": "夜を照らす導きの星",
+ "ko": "별이 밤하늘을 밝힐 때",
+ "ru": "Когда звезда озаряет ночное небо",
+ "vi": "Khi Một Vì Sao Chiếu Sáng Trời Đêm",
+ "id": "A Star That Lights the Night",
+ "es": "Cuando una estrella ilumina la noche",
+ "fr": "Une étoile illuminant la nuit",
+ "de": "Wenn ein Stern den Nachthimmel erhellt",
+ "pt": "Quando uma Estrela Ilumina o Céu Noturno"
+ },
+ "rarity": 5,
+ "path": "Erudition"
+ },
+ "23061": {
+ "names": {
+ "th": "Flickering Stars",
+ "en": "Flickering Stars",
+ "zh-CN": "星火悄然闪耀",
+ "zh-TW": "星火悄然閃耀",
+ "ja": "静かに瞬く小さな火",
+ "ko": "고요히 빛나는 불티",
+ "ru": "Мерцающие звёзды",
+ "vi": "Ngọn Lửa Nhỏ Thầm Lặng Tỏa Sáng",
+ "id": "Flickering Stars",
+ "es": "Destelleos silentes",
+ "fr": "Étoiles scintillantes",
+ "de": "Die leise flackernde Sternenflamme",
+ "pt": "Estrelas Cintilantes"
+ },
+ "rarity": 5,
+ "path": "Erudition"
+ },
+ "23062": {
+ "names": {
+ "th": "I Am As You Behold",
+ "en": "I Am As You Behold",
+ "zh-CN": "所见即我",
+ "zh-TW": "所見即我",
+ "ja": "在るがままの我",
+ "ko": "보이는 것이 곧 나",
+ "ru": "Я - всё, что пред взором",
+ "vi": "Ngươi Thấy Chính Là Ta",
+ "id": "I Am As You Behold",
+ "es": "Soy lo que ves",
+ "fr": "Je suis tel que tu me vois",
+ "de": "Ich bin, wie du mich siehst",
+ "pt": "Eu Sou Como Tu Me Vês"
+ },
+ "rarity": 5,
+ "path": "Destruction"
+ },
+ "23063": {
+ "names": {
+ "th": "Rise and Sing",
+ "en": "Rise and Sing",
+ "zh-CN": "你将起身歌唱",
+ "zh-TW": "你將起身歌唱",
+ "ja": "立ち上がり高らかな歌を",
+ "ko": "그대는 나아가 노래하리니",
+ "ru": "Встань и пой",
+ "vi": "Bạn Sẽ Đứng Dậy Cất Tiếng Hát",
+ "id": "Rise and Sing",
+ "es": "Levántate y canta",
+ "fr": "À vous !",
+ "de": "Steh auf und sing",
+ "pt": "Levanta e Canta"
+ },
+ "rarity": 5,
+ "path": "Remembrance"
+ },
+ "23064": {
+ "names": {
+ "th": "Summer Rides the Surf",
+ "en": "Summer Rides the Surf",
+ "zh-CN": "向浪花掷下盛夏",
+ "zh-TW": "向浪花擲下盛夏",
+ "ja": "波しぶきが躍る夏へ",
+ "ko": "파도에 내던진 한여름",
+ "ru": "Лето в волнах",
+ "vi": "Ném Mùa Hè Vào Bọt Sóng",
+ "id": "Summer Rides the Surf",
+ "es": "Verano entre olas",
+ "fr": "Un déferlement d'été",
+ "de": "Hochsommer auf den Wellen",
+ "pt": "Surfando a Onda do Verão"
+ },
+ "rarity": 5,
+ "path": "Elation"
+ },
+ "24000": {
+ "names": {
+ "th": "On the Fall of an Aeon",
+ "en": "On the Fall of an Aeon",
+ "zh-CN": "记一位星神的陨落",
+ "zh-TW": "記一位星神的殞落",
+ "ja": "とある星神の殞落を記す",
+ "ko": "어떤 에이언즈의 몰락",
+ "ru": "О падении Эона",
+ "vi": "Sự Sụp Đổ Của Aeon",
+ "id": "On the Fall of an Aeon",
+ "es": "Sobre la caída de un Eón",
+ "fr": "La chute d'un Aiôn",
+ "de": "Der Niedergang eines Äons",
+ "pt": "Na Queda de Um Aeon"
+ },
+ "rarity": 5,
+ "path": "Destruction"
+ },
+ "24001": {
+ "names": {
+ "th": "Cruising in the Stellar Sea",
+ "en": "Cruising in the Stellar Sea",
+ "zh-CN": "星海巡航",
+ "zh-TW": "星海巡航",
+ "ja": "星海巡航",
+ "ko": "별바다 순항",
+ "ru": "Круиз по галактике",
+ "vi": "Du Hành Trên Biển Sao",
+ "id": "Cruising in the Stellar Sea",
+ "es": "Crucero estelar",
+ "fr": "Exploration de la mer stellaire",
+ "de": "Fahrt durch das Sternenmeer",
+ "pt": "Percorrendo o Mar Estelar"
+ },
+ "rarity": 5,
+ "path": "Hunt"
+ },
+ "24002": {
+ "names": {
+ "th": "Texture of Memories",
+ "en": "Texture of Memories",
+ "zh-CN": "记忆的质料",
+ "zh-TW": "記憶的質料",
+ "ja": "記憶の素材",
+ "ko": "기억의 소재",
+ "ru": "Материя памяти",
+ "vi": "Chất Liệu Ký Ức",
+ "id": "Texture of Memories",
+ "es": "La textura de los recuerdos",
+ "fr": "Texture des Mémoires",
+ "de": "Textur der Erinnerungen",
+ "pt": "Textura de Memórias"
+ },
+ "rarity": 5,
+ "path": "Preservation"
+ },
+ "24003": {
+ "names": {
+ "th": "Solitary Healing",
+ "en": "Solitary Healing",
+ "zh-CN": "孤独的疗愈",
+ "zh-TW": "孤獨的療癒",
+ "ja": "孤独の癒し",
+ "ko": "고독의 치유",
+ "ru": "Одинокое исцеление",
+ "vi": "Một Mình Chữa Trị",
+ "id": "Solitary Healing",
+ "es": "Sanación solitaria",
+ "fr": "Remède à la solitude",
+ "de": "Einzelne Heilung",
+ "pt": "Cura Solitária"
+ },
+ "rarity": 5,
+ "path": "Nihility"
+ },
+ "24004": {
+ "names": {
+ "th": "Eternal Calculus",
+ "en": "Eternal Calculus",
+ "zh-CN": "不息的演算",
+ "zh-TW": "不息的演算",
+ "ja": "絶え間ない演算",
+ "ko": "멈추지 않는 연산",
+ "ru": "Беспрерывные вычисления",
+ "vi": "Ngoại Suy Vô Tận",
+ "id": "Eternal Calculus",
+ "es": "Cálculo interminable",
+ "fr": "Calcul éternel",
+ "de": "Unermüdliche Berechnung",
+ "pt": "Cálculo Ininterrupto"
+ },
+ "rarity": 5,
+ "path": "Erudition"
+ },
+ "24005": {
+ "names": {
+ "th": "Memory's Curtain Never Falls",
+ "en": "Memory's Curtain Never Falls",
+ "zh-CN": "记忆永不落幕",
+ "zh-TW": "記憶永不落幕",
+ "ja": "尽きぬ追憶",
+ "ko": "기억은 영원히 막을 내리지 않는다",
+ "ru": "Не падёт занавес памяти",
+ "vi": "Ký Ức Không Bao Giờ Hạ Màn",
+ "id": "Memory's Curtain Never Falls",
+ "es": "Sobre los recuerdos nunca cae el telón",
+ "fr": "Le rideau de la mémoire ne tombe jamais",
+ "de": "Der Vorhang der Erinnerung fällt nie",
+ "pt": "As Cortinas da Memória Nunca Caem"
+ },
+ "rarity": 5,
+ "path": "Remembrance"
+ },
+ "24006": {
+ "names": {
+ "th": "Elation Brimming With Blessings",
+ "en": "Elation Brimming With Blessings",
+ "zh-CN": "欢愉满溢祝福",
+ "zh-TW": "歡愉滿溢祝福",
+ "ja": "愉悦溢れる祝福",
+ "ko": "넘치는 환락의 축복",
+ "ru": "Переполненная благословением Радость",
+ "vi": "Chúc Phúc Tràn Đầy Vui Vẻ",
+ "id": "Elation Brimming With Blessings",
+ "es": "Exultación desbordante de bendiciones",
+ "fr": "Eau bénite de l'Allégresse",
+ "de": "Hochgefühl voller Segen",
+ "pt": "Euforia Repleta de Bênçãos"
+ },
+ "rarity": 5,
+ "path": "Elation"
+ }
+};
+
+export const RELIC_SET_METADATA = {
+ "101": {
+ "names": {
+ "th": "Passerby of Wandering Cloud",
+ "en": "Passerby of Wandering Cloud",
+ "zh-CN": "云无留迹的过客",
+ "zh-TW": "雲無留跡的過客",
+ "ja": "流雲無痕の過客",
+ "ko": "흔적을 남기지 않은 과객",
+ "ru": "Скиталец блуждающего облака",
+ "vi": "Lãng Khách Âm Thầm",
+ "id": "Passerby of Wandering Cloud",
+ "es": "Transeúnte de la nube pasajera",
+ "fr": "Vagabond foulenuage",
+ "de": "Wanderer der vorbeiziehenden Wolke",
+ "pt": "Transeunte da Nuvem Errante"
+ }
+ },
+ "102": {
+ "names": {
+ "th": "Musketeer of Wild Wheat",
+ "en": "Musketeer of Wild Wheat",
+ "zh-CN": "野穗伴行的快枪手",
+ "zh-TW": "野穗伴行的快槍手",
+ "ja": "草の穂ガンマン",
+ "ko": "들이삭과 동행하는 거너",
+ "ru": "Стрелок дикой пшеницы",
+ "vi": "Thiện Xạ Bông Lúa",
+ "id": "Musketeer of Wild Wheat",
+ "es": "Pistolera de la espiga silvestre",
+ "fr": "Mousquetaire du blé sauvage",
+ "de": "Musketierin des wilden Weizens",
+ "pt": "Mosqueteira do Trigo Selvagem"
+ }
+ },
+ "103": {
+ "names": {
+ "th": "Knight of Purity Palace",
+ "en": "Knight of Purity Palace",
+ "zh-CN": "净庭教宗的圣骑士",
+ "zh-TW": "淨庭教宗的聖騎士",
+ "ja": "純庭教会の聖騎士",
+ "ko": "정토 교황의 팔라딘",
+ "ru": "Рыцарь дворца чистоты",
+ "vi": "Thánh Kỵ Sĩ Giáo Hoàng Tịnh Đình",
+ "id": "Knight of Purity Palace",
+ "es": "Paladina de la Iglesia de la Corte Inmaculada",
+ "fr": "Chevalier du palais de la pureté",
+ "de": "Ritterin vom Palast der Reinheit",
+ "pt": "Cavaleira do Palácio da Pureza"
+ }
+ },
+ "104": {
+ "names": {
+ "th": "Hunter of Glacial Forest",
+ "en": "Hunter of Glacial Forest",
+ "zh-CN": "密林卧雪的猎人",
+ "zh-TW": "密林臥雪的獵人",
+ "ja": "雪の密林の狩人",
+ "ko": "혹한 밀림의 사냥꾼",
+ "ru": "Охотник ледникового леса",
+ "vi": "Thợ Săn Tuyết Phủ",
+ "id": "Hunter of Glacial Forest",
+ "es": "Cazador del bosque glacial",
+ "fr": "Chasseur de la forêt glaciaire",
+ "de": "Jäger aus dem Gletscherwald",
+ "pt": "Caçador da Floresta Glacial"
+ }
+ },
+ "105": {
+ "names": {
+ "th": "Champion of Streetwise Boxing",
+ "en": "Champion of Streetwise Boxing",
+ "zh-CN": "街头出身的拳王",
+ "zh-TW": "街頭出身的拳王",
+ "ja": "成り上がりチャンピオン",
+ "ko": "스트리트 격투왕",
+ "ru": "Чемпион уличного бокса",
+ "vi": "Quyền Vương Đường Phố",
+ "id": "Champion of Streetwise Boxing",
+ "es": "Campeona de boxeo callejero",
+ "fr": "Championne de boxe de rue",
+ "de": "Champion des Straßenboxens",
+ "pt": "Campeã de Boxe de Rua"
+ }
+ },
+ "106": {
+ "names": {
+ "th": "Guard of Wuthering Snow",
+ "en": "Guard of Wuthering Snow",
+ "zh-CN": "戍卫风雪的铁卫",
+ "zh-TW": "戍衛風雪的鐵衛",
+ "ja": "吹雪と対峙する兵士",
+ "ko": "눈보라에 맞서는 철위대",
+ "ru": "Страж снежной метели",
+ "vi": "Thiết Vệ Bão Tuyết",
+ "id": "Guard of Wuthering Snow",
+ "es": "Guardia de la nieve borrascosa",
+ "fr": "Garde des neiges hurlantes",
+ "de": "Wachen des stürmischen Schnees",
+ "pt": "Guarda da Neve Uivante"
+ }
+ },
+ "107": {
+ "names": {
+ "th": "Firesmith of Lava-Forging",
+ "en": "Firesmith of Lava-Forging",
+ "zh-CN": "熔岩锻铸的火匠",
+ "zh-TW": "熔岩鍛鑄的火匠",
+ "ja": "溶岩で鍛造する火匠",
+ "ko": "용암 단조의 화장(火匠)",
+ "ru": "Кузнец огня и лавы",
+ "vi": "Thợ Rèn Lửa Dung Nham",
+ "id": "Firesmith of Lava-Forging",
+ "es": "Forjador de lava",
+ "fr": "Lave de Forgefeu",
+ "de": "Feuerschmied der Lavaglut",
+ "pt": "Artesão de Fogo da Forja de Lava"
+ }
+ },
+ "108": {
+ "names": {
+ "th": "Genius of Brilliant Stars",
+ "en": "Genius of Brilliant Stars",
+ "zh-CN": "繁星璀璨的天才",
+ "zh-TW": "繁星璀璨的天才",
+ "ja": "星の如く輝く天才",
+ "ko": "별처럼 빛나는 천재",
+ "ru": "Гений бриллиантовых звёзд",
+ "vi": "Thiên Tài Xuất Chúng",
+ "id": "Genius of Brilliant Stars",
+ "es": "Genio de las estrellas relucientes",
+ "fr": "Génies des étoiles",
+ "de": "Genie der strahlenden Sterne",
+ "pt": "Gênio das Estrelas Brilhantes"
+ }
+ },
+ "109": {
+ "names": {
+ "th": "Band of Sizzling Thunder",
+ "en": "Band of Sizzling Thunder",
+ "zh-CN": "激奏雷电的乐队",
+ "zh-TW": "激奏雷電的樂團",
+ "ja": "雷鳴轟くバンド",
+ "ko": "뇌전을 울리는 밴드",
+ "ru": "Бэнд испепеляющего грома",
+ "vi": "Ban Nhạc Sizzling Thunder",
+ "id": "Band of Sizzling Thunder",
+ "es": "Banda del trueno crepitante",
+ "fr": "Tonnerre grésillant",
+ "de": "Band des knisternden Donners",
+ "pt": "Banda Trovão Crepitante"
+ }
+ },
+ "110": {
+ "names": {
+ "th": "Eagle of Twilight Line",
+ "en": "Eagle of Twilight Line",
+ "zh-CN": "晨昏交界的翔鹰",
+ "zh-TW": "晨昏交界的翔鷹",
+ "ja": "昼夜の狭間を翔ける鷹",
+ "ko": "밤낮의 경계를 나는 매",
+ "ru": "Орёл сумеречного рубежа",
+ "vi": "Chim Ưng Ranh Giới Ngày Đêm",
+ "id": "Eagle of Twilight Line",
+ "es": "Águila del crepúsculo",
+ "fr": "Aigle de la frontière du crépuscule",
+ "de": "Adler des Zwielichts",
+ "pt": "Águia da Linha do Crepúsculo"
+ }
+ },
+ "111": {
+ "names": {
+ "th": "Thief of Shooting Meteor",
+ "en": "Thief of Shooting Meteor",
+ "zh-CN": "流星追迹的怪盗",
+ "zh-TW": "流星追跡的怪盜",
+ "ja": "流星の跡を追う怪盗",
+ "ko": "유성을 쫓는 괴도",
+ "ru": "Вор падающего метеора",
+ "vi": "Kẻ Cướp Vệt Sao Băng",
+ "id": "Thief of Shooting Meteor",
+ "es": "Ladrón del rastro meteórico",
+ "fr": "Voleur de météorite filante",
+ "de": "Dieb des fallenden Meteors",
+ "pt": "Ladrão da Chuva de Meteoros"
+ }
+ },
+ "112": {
+ "names": {
+ "th": "Wastelander of Banditry Desert",
+ "en": "Wastelander of Banditry Desert",
+ "zh-CN": "盗匪荒漠的废土客",
+ "zh-TW": "盜匪荒漠的廢土客",
+ "ja": "荒地で盗みを働く廃土客",
+ "ko": "황무지의 도적, 황야인",
+ "ru": "Головорез бандитской пустыни",
+ "vi": "Kẻ Hoang Dã Sa Mạc",
+ "id": "Wastelander of Banditry Desert",
+ "es": "Habitante del yermo de los bandidos",
+ "fr": "Ferrailleur du désert des bandits",
+ "de": "Ödländer aus der Räuberwüste",
+ "pt": "Andarilho do Deserto da Bandidagem"
+ }
+ },
+ "113": {
+ "names": {
+ "th": "Longevous Disciple",
+ "en": "Longevous Disciple",
+ "zh-CN": "宝命长存的莳者",
+ "zh-TW": "寶命長存的蒔者",
+ "ja": "宝命長存の蒔者",
+ "ko": "장수를 원하는 제자",
+ "ru": "Долгоживущий ученик",
+ "vi": "Môn Đồ Trường Thọ",
+ "id": "Longevous Disciple",
+ "es": "Discípula longeva",
+ "fr": "Disciple longévive",
+ "de": "Langlebige Jüngerin",
+ "pt": "Discípula Longeva"
+ }
+ },
+ "114": {
+ "names": {
+ "th": "Messenger Traversing Hackerspace",
+ "en": "Messenger Traversing Hackerspace",
+ "zh-CN": "骇域漫游的信使",
+ "zh-TW": "駭域漫遊的信使",
+ "ja": "仮想空間を漫遊するメッセンジャー",
+ "ko": "가상공간을 누비는 메신저",
+ "ru": "Вестник, блуждающий в хакерском пространстве",
+ "vi": "Tín Sứ Du Ngoạn Không Gian Hacker",
+ "id": "Messenger Traversing Hackerspace",
+ "es": "Mensajero del espacio hackeado",
+ "fr": "Messager du hackerspace",
+ "de": "Bote im Hackerspace",
+ "pt": "Mensageira Atravessando o Hackerspace"
+ }
+ },
+ "115": {
+ "names": {
+ "th": "The Ashblazing Grand Duke",
+ "en": "The Ashblazing Grand Duke",
+ "zh-CN": "毁烬焚骨的大公",
+ "zh-TW": "毀燼焚骨的大公",
+ "ja": "灰燼を燃やし尽くす大公",
+ "ko": "재와 뼈마저 불사르는 대공",
+ "ru": "Сжигающий дотла герцог",
+ "vi": "Đại Công Tước Tro Tàn",
+ "id": "The Ashblazing Grand Duke",
+ "es": "Gran duque incinerador",
+ "fr": "Grand duc incandescendre",
+ "de": "Der eingeäscherte Erzherzog",
+ "pt": "Grão-Duque em Brasas"
+ }
+ },
+ "116": {
+ "names": {
+ "th": "Prisoner in Deep Confinement",
+ "en": "Prisoner in Deep Confinement",
+ "zh-CN": "幽锁深牢的系囚",
+ "zh-TW": "幽鎖深牢的繫囚",
+ "ja": "深い牢獄の囚人",
+ "ko": "깊은 감옥에 수감된 죄수",
+ "ru": "Пленник мрачной темницы",
+ "vi": "Tù Nhân Ngục Tối",
+ "id": "Prisoner in Deep Confinement",
+ "es": "Prisionero aislado",
+ "fr": "Prisonnier enchaîné",
+ "de": "Gefangene in tiefem Gewahrsam",
+ "pt": "Prisioneiro em Confinamento Profundo"
+ }
+ },
+ "117": {
+ "names": {
+ "th": "Pioneer Diver of Dead Waters",
+ "en": "Pioneer Diver of Dead Waters",
+ "zh-CN": "死水深潜的先驱",
+ "zh-TW": "死水深潛的先驅",
+ "ja": "死水に潜る先駆者",
+ "ko": "사수에 잠수한 선구자",
+ "ru": "Первооткрыватель мёртвых вод",
+ "vi": "Tiên Phong Trong Nước Chết",
+ "id": "Pioneer Diver of Dead Waters",
+ "es": "Buceadora pionera del agua muerta",
+ "fr": "Exploratrice des abîmes",
+ "de": "Pioniertaucherin toter Gewässer",
+ "pt": "Mergulhadora Pioneira de Águas Mortas"
+ }
+ },
+ "118": {
+ "names": {
+ "th": "Watchmaker, Master of Dream Machinations",
+ "en": "Watchmaker, Master of Dream Machinations",
+ "zh-CN": "机心戏梦的钟表匠",
+ "zh-TW": "機心戲夢的鐘錶匠",
+ "ja": "夢を弄ぶ時計屋",
+ "ko": "꿈을 조작하는 시계공",
+ "ru": "Часовщик сонных махинаций",
+ "vi": "Thợ Đồng Hồ, Bậc Thầy Máy Móc",
+ "id": "Watchmaker, Master of Dream Machinations",
+ "es": "Relojero de maquinaciones oníricas",
+ "fr": "Horloger, maître des machinations oniriques",
+ "de": "Uhrmacher der maschinellen Traumspiele",
+ "pt": "Relojoeiro, Mestre de Maquinações de Sonhos"
+ }
+ },
+ "119": {
+ "names": {
+ "th": "Iron Cavalry Against the Scourge",
+ "en": "Iron Cavalry Against the Scourge",
+ "zh-CN": "荡除蠹灾的铁骑",
+ "zh-TW": "蕩除蠹災的鐵騎",
+ "ja": "蝗害を一掃せし鉄騎",
+ "ko": "곤충 재앙을 잠재우는 철기군",
+ "ru": "Железная кавалерия против нашествия",
+ "vi": "Thiết Kỵ Diệt Trừ Tai Họa",
+ "id": "Iron Cavalry Against the Scourge",
+ "es": "Caballería de hierro plaguicida",
+ "fr": "Brigade de fer à l'assaut du fléau",
+ "de": "Eiserne Kavallerie gegen die Plage",
+ "pt": "Cavalaria de Ferro Contra a Praga"
+ }
+ },
+ "120": {
+ "names": {
+ "th": "The Wind-Soaring Valorous",
+ "en": "The Wind-Soaring Valorous",
+ "zh-CN": "风举云飞的勇烈",
+ "zh-TW": "風舉雲飛的勇烈",
+ "ja": "風雲を薙ぎ払う勇烈",
+ "ko": "바람과 구름을 가르는 용맹함",
+ "ru": "Храбрость ветра",
+ "vi": "Dũng Khí Ngút Trời",
+ "id": "The Wind-Soaring Valorous",
+ "es": "Intrépida cabalgavientos",
+ "fr": "Vaillance du guerrier du vent",
+ "de": "Tapferer Krieger des Winds",
+ "pt": "Coragem Como Vento e Nuvem"
+ }
+ },
+ "121": {
+ "names": {
+ "th": "Sacerdos' Relived Ordeal",
+ "en": "Sacerdos' Relived Ordeal",
+ "zh-CN": "重循苦旅的司铎",
+ "zh-TW": "重循苦旅的司鐸",
+ "ja": "再び苦難の道を歩む司祭",
+ "ko": "고행의 길에 다시 오른 사제",
+ "ru": "Тернистый путь священника",
+ "vi": "Lại Một Hành Trình Gian Khổ Của Linh Mục",
+ "id": "Sacerdos' Relived Ordeal",
+ "es": "Sacerdote del calvario revivido",
+ "fr": "Supplice du prêtre",
+ "de": "Wiedererlebte Tortur des Priesters",
+ "pt": "O Ordálio Revivido de Sacerdos"
+ }
+ },
+ "122": {
+ "names": {
+ "th": "Scholar Lost in Erudition",
+ "en": "Scholar Lost in Erudition",
+ "zh-CN": "识海迷坠的学者",
+ "zh-TW": "識海迷墜的學者",
+ "ja": "知識の海に溺れる学者",
+ "ko": "지식의 바다에 빠진 학자",
+ "ru": "Затерянный в знаниях учёный",
+ "vi": "Học Giả Lạc Lối Trong Biển Tri Thức",
+ "id": "Scholar Lost in Erudition",
+ "es": "Eruditos perdidos en el mar del conocimiento",
+ "fr": "Perdition dans l'Érudition",
+ "de": "Im Wissen verlorene Gelehrte",
+ "pt": "Uma Erudita Perdida na Erudição"
+ }
+ },
+ "123": {
+ "names": {
+ "th": "Hero of Triumphant Song",
+ "en": "Hero of Triumphant Song",
+ "zh-CN": "凯歌祝捷的英豪",
+ "zh-TW": "凱歌祝捷的英豪",
+ "ja": "凱歌を揚げる英雄",
+ "ko": "개선가를 울리는 영웅",
+ "ru": "Воспетый эпосом герой",
+ "vi": "Anh Hùng Ca Khúc Khải Hoàn",
+ "id": "Hero of Triumphant Song",
+ "es": "Héroe de la epopeya triunfal",
+ "fr": "Héros de la chanson triomphale",
+ "de": "Held des Lobgesangs",
+ "pt": "Herói da Melodia Triunfante"
+ }
+ },
+ "124": {
+ "names": {
+ "th": "Poet of Mourning Collapse",
+ "en": "Poet of Mourning Collapse",
+ "zh-CN": "哀歌覆国的诗人",
+ "zh-TW": "哀歌覆國的詩人",
+ "ja": "亡国の悲哀を詠う詩人",
+ "ko": "망국을 애도하는 시인",
+ "ru": "Поющий элегии рапсод",
+ "vi": "Nhà Thơ Khúc Bi Ca Vong Quốc",
+ "id": "Poet of Mourning Collapse",
+ "es": "Poetisa del colapso elegíaco",
+ "fr": "Poétesse du déclin funèbre",
+ "de": "Klagende Dichterin",
+ "pt": "Poetisa do Colapso Enlutada"
+ }
+ },
+ "125": {
+ "names": {
+ "th": "Warrior Goddess of Sun and Thunder",
+ "en": "Warrior Goddess of Sun and Thunder",
+ "zh-CN": "烈阳惊雷的女武神",
+ "zh-TW": "烈陽驚雷的女武神",
+ "ja": "烈陽と雷鳴の武神",
+ "ko": "태양과 번개의 여전사",
+ "ru": "Воительница солнца и грозы",
+ "vi": "Nữ Thần Chiến Binh Nắng Sấm",
+ "id": "Warrior Goddess of Sun and Thunder",
+ "es": "Guerrera celestial del sol y el trueno",
+ "fr": "Valkyrie du soleil et de la foudre",
+ "de": "Kriegsgöttin der lodernden Sonne und des Donners",
+ "pt": "Deusa Guerreira do Sol e do Trovão"
+ }
+ },
+ "126": {
+ "names": {
+ "th": "Wavestrider Captain",
+ "en": "Wavestrider Captain",
+ "zh-CN": "恶海逐波的船长",
+ "zh-TW": "惡海逐波的船長",
+ "ja": "荒海を越える船長",
+ "ko": "거친 파도를 헤치는 선장",
+ "ru": "Преследующий волны капитан",
+ "vi": "Thuyền Trưởng Đuổi Sóng Biển Sâu",
+ "id": "Wavestrider Captain",
+ "es": "Capitán del mar maldito",
+ "fr": "Capitaine des mers déchaînées",
+ "de": "Kapitän über den verfluchten Wellen",
+ "pt": "Capitão Navegante de Ondas"
+ }
+ },
+ "127": {
+ "names": {
+ "th": "World-Remaking Deliverer",
+ "en": "World-Remaking Deliverer",
+ "zh-CN": "再创天地的救世主",
+ "zh-TW": "再創天地的救世主",
+ "ja": "天地再創の救世主",
+ "ko": "천지를 재창조한 구세주",
+ "ru": "Воссоздающий мир спаситель",
+ "vi": "Đấng Cứu Thế Tái Tạo Trời Đất",
+ "id": "World-Remaking Deliverer",
+ "es": "Salvado{F#ra}{M#r} que reforja el mundo",
+ "fr": "{F#Libératrice}{M#Libérateur} d'un monde nouveau",
+ "de": "{F#Erlöserin}{M#Erlöser} der Weltneuschöpfung",
+ "pt": "Portador da Reconstrução do Mundo"
+ }
+ },
+ "128": {
+ "names": {
+ "th": "Self-Enshrouded Recluse",
+ "en": "Self-Enshrouded Recluse",
+ "zh-CN": "自匿星芒的隐士",
+ "zh-TW": "自匿星芒的隱士",
+ "ja": "星の光を隠した隠者",
+ "ko": "별빛에 숨은 은둔자",
+ "ru": "Таящий сияние отшельник",
+ "vi": "Ẩn Sĩ Ẩn Mình Dưới Ánh Sao",
+ "id": "Self-Enshrouded Recluse",
+ "es": "Eremita aislado en las estrellas",
+ "fr": "Ermite des étoiles",
+ "de": "Sternenverhüllter Einsiedler",
+ "pt": "Ermitão Envolto em Si Mesmo"
+ }
+ },
+ "129": {
+ "names": {
+ "th": "Ever-Glorious Magical Girl",
+ "en": "Ever-Glorious Magical Girl",
+ "zh-CN": "闪耀功勋的魔法少女",
+ "zh-TW": "功勳閃耀的魔法少女",
+ "ja": "功績輝く魔法少女",
+ "ko": "빛나는 공훈의 마법 소녀",
+ "ru": "Блистательная чародейка",
+ "vi": "Cô Gái Phép Thuật Công Lao Lấp Lánh",
+ "id": "Ever-Glorious Magical Girl",
+ "es": "Chica mágica de hazañas gloriosas",
+ "fr": "Illustre magical girl",
+ "de": "Magisches Mädchen mit glänzendem Verdienst",
+ "pt": "Menina Mágica Sempre Gloriosa"
+ }
+ },
+ "130": {
+ "names": {
+ "th": "Diviner of Distant Reach",
+ "en": "Diviner of Distant Reach",
+ "zh-CN": "应天涉远的卜者",
+ "zh-TW": "應天涉遠的卜者",
+ "ja": "天命に従う旅の卜者",
+ "ko": "천명에 응해 먼 길을 떠난 점술가",
+ "ru": "Недосягаемый прорицатель",
+ "vi": "Nhà Chiêm Tinh Tuân Mệnh Trời",
+ "id": "Diviner of Distant Reach",
+ "es": "Adivino de alcance remoto",
+ "fr": "Oracle des horizons lointains",
+ "de": "Himmelweitreichender Wahrsager",
+ "pt": "Profeta de Alcance Distante"
+ }
+ },
+ "131": {
+ "names": {
+ "th": "As Navigator Isee Sees It",
+ "en": "As Navigator Isee Sees It",
+ "zh-CN": "星如我见的领航员",
+ "zh-TW": "星如我見的領航員",
+ "ja": "星巡るナビゲーター「シケン」",
+ "ko": "별을 갈망하는 항법사 아집",
+ "ru": "Взор навигатора Взираи",
+ "vi": "Biển Sao Như Hoa Tiêu Isee Nhìn Thấy",
+ "id": "As Navigator Isee Sees It",
+ "es": "Piloto estelar como Yoveo",
+ "fr": "Comme le navigateur Japper Soie le voit",
+ "de": "Wie Navigator Isee es sieht",
+ "pt": "Como o Navegador Isee Vê"
+ }
+ },
+ "132": {
+ "names": {
+ "th": "Divine-Querying Master Smith",
+ "en": "Divine-Querying Master Smith",
+ "zh-CN": "叩问天工的名冶",
+ "zh-TW": "叩問天工的名冶",
+ "ja": "神業を探求する名匠",
+ "ko": "신공을 탐구하는 명장",
+ "ru": "Обращённый к небесам кузнец",
+ "vi": "Bậc Thầy Rèn Đúc Thỉnh Vấn Tạo Hóa",
+ "id": "Divine-Querying Master Smith",
+ "es": "Gran forja del interrogante divino",
+ "fr": "Forge de l'artisan céleste",
+ "de": "Götterbefragender Meisterschmied",
+ "pt": "Mestre Ferreiro da Consulta Divina"
+ }
+ },
+ "133": {
+ "names": {
+ "th": "Dreamlit Actor",
+ "en": "Dreamlit Actor",
+ "zh-CN": "戏梦点星的伶人",
+ "zh-TW": "戲夢點星的伶人",
+ "ja": "星灯す夢芝居の伶人",
+ "ko": "꿈같은 유희 속 별을 밝히는 연극인",
+ "ru": "Актёр звёздной точки",
+ "vi": "Kẻ Khóc Thuê Thắp Sao Mộng Kịch",
+ "id": "Dreamlit Actor",
+ "es": "Plañidera iluminaestrellas",
+ "fr": "Actrice des songes étoilés",
+ "de": "Die Traumlicht-Mimen",
+ "pt": "Ator Onírico"
+ }
+ },
+ "134": {
+ "names": {
+ "th": "The Edacious Heretic",
+ "en": "The Edacious Heretic",
+ "zh-CN": "贪噬禁果的异端",
+ "zh-TW": "貪噬禁果的異端",
+ "ja": "禁断の果実を貪る異端者",
+ "ko": "금단의 열매를 삼킨 이단",
+ "ru": "Пожирательница запретных плодов",
+ "vi": "Kẻ Dị Đoan Nuốt Chửng Trái Cấm",
+ "id": "The Edacious Heretic",
+ "es": "Hereje del fruto prohibido",
+ "fr": "Hérétique vorace",
+ "de": "Die gefräßige Ketzerin",
+ "pt": "O Herege Voraz"
+ }
+ },
+ "301": {
+ "names": {
+ "th": "Space Sealing Station",
+ "en": "Space Sealing Station",
+ "zh-CN": "太空封印站",
+ "zh-TW": "太空封印站",
+ "ja": "宇宙封印ステーション",
+ "ko": "우주 봉인 정거장",
+ "ru": "Запечатывающая космос станция",
+ "vi": "Trạm Phong Ấn Không Gian",
+ "id": "Space Sealing Station",
+ "es": "Estación sellaespacios",
+ "fr": "Station de scellement spatial",
+ "de": "Raumstation für Versiegelung",
+ "pt": "Estação de Vedação Espacial"
+ }
+ },
+ "302": {
+ "names": {
+ "th": "Fleet of the Ageless",
+ "en": "Fleet of the Ageless",
+ "zh-CN": "不老者的仙舟",
+ "zh-TW": "不老者的仙舟",
+ "ja": "老いぬ者の仙舟",
+ "ko": "불로인의 선주",
+ "ru": "Флот нестареющих",
+ "vi": "Xianzhou Không Có Tuổi",
+ "id": "Fleet of the Ageless",
+ "es": "Flota de los eternos",
+ "fr": "Flotte de l'éternel",
+ "de": "Flotte der Alterslosen",
+ "pt": "Frota dos Eternos"
+ }
+ },
+ "303": {
+ "names": {
+ "th": "Pan-Cosmic Commercial Enterprise",
+ "en": "Pan-Cosmic Commercial Enterprise",
+ "zh-CN": "泛银河商业公司",
+ "zh-TW": "泛銀河商業公司",
+ "ja": "汎銀河商事会社",
+ "ko": "범은하 상사",
+ "ru": "Пангалактическое коммерческое предприятие",
+ "vi": "Công Ty Kinh Doanh Liên Ngân Hà",
+ "id": "Pan-Cosmic Commercial Enterprise",
+ "es": "Entidad comercial pangaláctica",
+ "fr": "Entreprise commerciale intersidérale",
+ "de": "Pangalaktische Handelsgesellschaft",
+ "pt": "Empresa Mercantil Pan-Cósmica"
+ }
+ },
+ "304": {
+ "names": {
+ "th": "Belobog of the Architects",
+ "en": "Belobog of the Architects",
+ "zh-CN": "筑城者的贝洛伯格",
+ "zh-TW": "築城者的貝洛伯格",
+ "ja": "建創者のベロブルグ",
+ "ko": "축성가의 벨로보그",
+ "ru": "Белобог Архитекторов",
+ "vi": "Belobog Của Đấng Kiến Tạo",
+ "id": "Belobog of the Architects",
+ "es": "La Belobog de los Arquitectos",
+ "fr": "Belobog des Architectes",
+ "de": "Belobog der Architekten",
+ "pt": "Belobog dos Arquitetos"
+ }
+ },
+ "305": {
+ "names": {
+ "th": "Celestial Differentiator",
+ "en": "Celestial Differentiator",
+ "zh-CN": "星体差分机",
+ "zh-TW": "星體差分機",
+ "ja": "天体階差機関",
+ "ko": "천체 차분기관",
+ "ru": "Небесный дифференциатор",
+ "vi": "Máy Sai Lệch Hành Tinh",
+ "id": "Celestial Differentiator",
+ "es": "Diferenciador celestial",
+ "fr": "Différenciateur céleste",
+ "de": "Himmlischer Differenziator",
+ "pt": "Diferenciador Celestial"
+ }
+ },
+ "306": {
+ "names": {
+ "th": "Inert Salsotto",
+ "en": "Inert Salsotto",
+ "zh-CN": "停转的萨尔索图",
+ "zh-TW": "停轉的薩爾索圖",
+ "ja": "自転が止まったサルソット",
+ "ko": "회전을 멈춘 살소토",
+ "ru": "Замершее Салсотто",
+ "vi": "Salsotto Dừng Xoay",
+ "id": "Inert Salsotto",
+ "es": "Salsotto inerte",
+ "fr": "Salsotto inerte",
+ "de": "Regloses Salsotto",
+ "pt": "Salsotto Inerte"
+ }
+ },
+ "307": {
+ "names": {
+ "th": "Talia - Kingdom of Banditry",
+ "en": "Talia: Kingdom of Banditry",
+ "zh-CN": "盗贼公国塔利亚",
+ "zh-TW": "盜賊公國塔利亞",
+ "ja": "盗賊公国タリア",
+ "ko": "도적국 탈리아",
+ "ru": "Талия - край бандитов",
+ "vi": "Talia - Vương Quốc Trộm Cướp",
+ "id": "Talia: Kingdom of Banditry",
+ "es": "Talia, paraíso de los forajidos",
+ "fr": "Talia, royaume du banditisme",
+ "de": "Talia – Königreich der Banditen",
+ "pt": "Talia: Reino do Banditismo"
+ }
+ },
+ "308": {
+ "names": {
+ "th": "Sprightly Vonwacq",
+ "en": "Sprightly Vonwacq",
+ "zh-CN": "生命的翁瓦克",
+ "zh-TW": "生命的翁瓦克",
+ "ja": "生命のウェンワーク",
+ "ko": "생명의 바커 공",
+ "ru": "Живой Вонвак",
+ "vi": "Vonwacq Hoạt Bát",
+ "id": "Sprightly Vonwacq",
+ "es": "Vonwacq el vivaz",
+ "fr": "La vie sur Vonwacq",
+ "de": "Lebhaftes Vonwacq",
+ "pt": "Vonwacq Vivaz"
+ }
+ },
+ "309": {
+ "names": {
+ "th": "Rutilant Arena",
+ "en": "Rutilant Arena",
+ "zh-CN": "繁星竞技场",
+ "zh-TW": "繁星競技場",
+ "ja": "星々の競技場",
+ "ko": "뭇별 경기장",
+ "ru": "Звездистая арена",
+ "vi": "Đấu Trường Ngôi Sao",
+ "id": "Rutilant Arena",
+ "es": "Arena rutilante",
+ "fr": "Arène rutilante",
+ "de": "Sternenarena",
+ "pt": "Arena Rutilante"
+ }
+ },
+ "310": {
+ "names": {
+ "th": "Broken Keel",
+ "en": "Broken Keel",
+ "zh-CN": "折断的龙骨",
+ "zh-TW": "折斷的龍骨",
+ "ja": "折れた竜骨",
+ "ko": "부러진 용골",
+ "ru": "Сломанный киль",
+ "vi": "Bộ Khung Bị Gãy",
+ "id": "Broken Keel",
+ "es": "Quilla rota",
+ "fr": "Quille brisée",
+ "de": "Gebrochener Kiel",
+ "pt": "Quilha Quebrada"
+ }
+ },
+ "311": {
+ "names": {
+ "th": "Firmament Frontline: Glamoth",
+ "en": "Firmament Frontline: Glamoth",
+ "zh-CN": "苍穹战线格拉默",
+ "zh-TW": "蒼穹戰線格拉默",
+ "ja": "蒼穹戦線グラモス",
+ "ko": "창공 전선 그라모스",
+ "ru": "Небесный фронт Глатирамер",
+ "vi": "Glamoth, Chiến Tuyến Không Trung",
+ "id": "Firmament Frontline: Glamoth",
+ "es": "Glamoth, frente del firmamento",
+ "fr": "Glamoth, ligne de front du firmament",
+ "de": "Himmelsfront Glamoth",
+ "pt": "Linha de Frente: Firmamento de Glamoth"
+ }
+ },
+ "312": {
+ "names": {
+ "th": "Penacony, Land of the Dreams",
+ "en": "Penacony, Land of the Dreams",
+ "zh-CN": "梦想之地匹诺康尼",
+ "zh-TW": "夢想之地匹諾康尼",
+ "ja": "夢の地ピノコニー",
+ "ko": "꿈의 땅 페나코니",
+ "ru": "Земля грёз Пенакония",
+ "vi": "Penacony, Vùng Đất Của Những Giấc Mơ",
+ "id": "Penacony, Land of the Dreams",
+ "es": "Colonipenal, la tierra de los sueños",
+ "fr": "Penacony, terre des rêves",
+ "de": "Penacony, Land der Träume",
+ "pt": "Penacony, Terra dos Sonhos"
+ }
+ },
+ "313": {
+ "names": {
+ "th": "Sigonia, the Unclaimed Desolation",
+ "en": "Sigonia, the Unclaimed Desolation",
+ "zh-CN": "无主荒星茨冈尼亚",
+ "zh-TW": "無主荒星茨岡尼亞",
+ "ja": "荒涼の惑星ツガンニヤ",
+ "ko": "주인 없는 황폐한 별 츠가냐",
+ "ru": "Бесплодная Сигония",
+ "vi": "Hành Tinh Vô Chủ Sigonia",
+ "id": "Sigonia, the Unclaimed Desolation",
+ "es": "Sigonia, desolación sin dueño",
+ "fr": "Sigonia, terre vierge désolée",
+ "de": "Verlassenes Sigonien",
+ "pt": "Sigonia, a Desolação Abandonada"
+ }
+ },
+ "314": {
+ "names": {
+ "th": "Izumo Gensei and Takama Divine Realm",
+ "en": "Izumo Gensei and Takama Divine Realm",
+ "zh-CN": "出云显世与高天神国",
+ "zh-TW": "出雲顯世與高天神國",
+ "ja": "顕世の出雲と高天の神国",
+ "ko": "이즈모 현세와 타카마 신국",
+ "ru": "Мир Идзумо и Царство Такама",
+ "vi": "Izumo Hiện Thế Và Thần Quốc Cõi Trời",
+ "id": "Izumo Gensei and Takama Divine Realm",
+ "es": "Izumo gensei y reino divino de Takama",
+ "fr": "Vie présente d'Izumo et royaume divin de Takama",
+ "de": "Izumo-Gensei und Takama-Himmelreich",
+ "pt": "Izumo Gensei e Reino Divino de Takama"
+ }
+ },
+ "315": {
+ "names": {
+ "th": "Duran, Dynasty of Running Wolves",
+ "en": "Duran, Dynasty of Running Wolves",
+ "zh-CN": "奔狼的都蓝王朝",
+ "zh-TW": "奔狼的都藍王朝",
+ "ja": "奔狼の都藍王朝",
+ "ko": "질주하는 늑대의 도람 왕조",
+ "ru": "Дуранская династия волков",
+ "vi": "Duran - Vương Triều Sói Hoang",
+ "id": "Duran, Dynasty of Running Wolves",
+ "es": "Duran, dinastía de lobos raudos",
+ "fr": "Duran, dynastie des loups",
+ "de": "Duran, Dynastie der rennenden Wölfe",
+ "pt": "Duran, Dinastia dos Lobos Errantes"
+ }
+ },
+ "316": {
+ "names": {
+ "th": "Forge of the Kalpagni Lantern",
+ "en": "Forge of the Kalpagni Lantern",
+ "zh-CN": "劫火莲灯铸炼宫",
+ "zh-TW": "劫火蓮燈鑄煉宮",
+ "ja": "劫火と蓮灯の鋳煉宮",
+ "ko": "겁화 연등의 연마궁",
+ "ru": "Лотосовый фонарь дворца",
+ "vi": "Cung Điện Rèn Đúc Kiếp Hỏa Liên Đăng",
+ "id": "Forge of the Kalpagni Lantern",
+ "es": "Fragua de la linterna Kalpagni",
+ "fr": "Forge de la lanterne Kalpagni",
+ "de": "Schmiede der Kalpagni-Laterne",
+ "pt": "Forja da Lanterna Kalpagni"
+ }
+ },
+ "317": {
+ "names": {
+ "th": "Lushaka, the Sunken Seas",
+ "en": "Lushaka, the Sunken Seas",
+ "zh-CN": "沉陆海域露莎卡",
+ "zh-TW": "沉陸海域露莎卡",
+ "ja": "海に沈んだルサカ",
+ "ko": "바다에 잠긴 루샤카",
+ "ru": "Русалка, затопленные берега",
+ "vi": "Biển Lục Địa Chìm - Lushaka",
+ "id": "Lushaka, the Sunken Seas",
+ "es": "Lushaka, sumergido bajo el mar",
+ "fr": "Lushaka, les mers englouties",
+ "de": "Lushaka, die versunkene See",
+ "pt": "Lushaka, os Mares Submersos"
+ }
+ },
+ "318": {
+ "names": {
+ "th": "The Wondrous BananAmusement Park",
+ "en": "The Wondrous BananAmusement Park",
+ "zh-CN": "奇想蕉乐园",
+ "zh-TW": "奇想蕉樂園",
+ "ja": "奇想天外のバナダイス",
+ "ko": "기묘한 나나 낙원",
+ "ru": "Чудесный банановый рай",
+ "vi": "Công Viên Chuối Kỳ Ảo",
+ "id": "The Wondrous BananAmusement Park",
+ "es": "Parque de Platanolandia",
+ "fr": "Parc de bananattractions",
+ "de": "Wunbanana-Park",
+ "pt": "O Maravilhoso Parque Bananalândia"
+ }
+ },
+ "319": {
+ "names": {
+ "th": "Bone Collection's Serene Demesne",
+ "en": "Bone Collection's Serene Demesne",
+ "zh-CN": "谧宁拾骨地",
+ "zh-TW": "謐寧拾骨地",
+ "ja": "静謐な拾骨地",
+ "ko": "고요한 습골지",
+ "ru": "Безмолвная страна костей",
+ "vi": "Vùng Đất Nhặt Hài Cốt Tĩnh Lặng",
+ "id": "Bone Collection's Serene Demesne",
+ "es": "Osario sereno",
+ "fr": "Tranquille demeure des os",
+ "de": "Ruhiges Anwesen für die Gebeine der Toten",
+ "pt": "Domínio Sereno da Coleção de Ossos"
+ }
+ },
+ "320": {
+ "names": {
+ "th": "Giant Tree of Rapt Brooding",
+ "en": "Giant Tree of Rapt Brooding",
+ "zh-CN": "渊思寂虑的巨树",
+ "zh-TW": "淵思寂慮的巨樹",
+ "ja": "深慮に浸る巨樹",
+ "ko": "사색하는 거목",
+ "ru": "Древо глубоких раздумий",
+ "vi": "Đại Thụ Trầm Tư",
+ "id": "Giant Tree of Rapt Brooding",
+ "es": "Árbol gigante en meditación profunda",
+ "fr": "Arbre géant des réflexions profondes",
+ "de": "Riesenbaum des versunkenen Grübelns",
+ "pt": "Árvore Gigante da Reflexão Arrebatadora"
+ }
+ },
+ "321": {
+ "names": {
+ "th": "Arcadia of Woven Dreams",
+ "en": "Arcadia of Woven Dreams",
+ "zh-CN": "妖精织梦的乐园",
+ "zh-TW": "妖精織夢的樂園",
+ "ja": "夢を紡ぐ妖精の楽園",
+ "ko": "꿈을 엮는 요정의 낙원",
+ "ru": "Волшебная страна фей",
+ "vi": "Thiên Đường Yêu Tinh Dệt Mộng",
+ "id": "Arcadia of Woven Dreams",
+ "es": "Paraíso de las hadas tejesueños",
+ "fr": "Arcadie des rêves tissés",
+ "de": "Traumwebendes Feenreich",
+ "pt": "Arcádia dos Sonhos Tecidos"
+ }
+ },
+ "322": {
+ "names": {
+ "th": "Revelry by the Sea",
+ "en": "Revelry by the Sea",
+ "zh-CN": "沉欢醉饮的海隅",
+ "zh-TW": "沉歡醉飲的海隅",
+ "ja": "酩酊の海域",
+ "ko": "즐거움에 취한 바다의 일각",
+ "ru": "Хмельная бухта",
+ "vi": "Bờ Biển Men Say",
+ "id": "Revelry by the Sea",
+ "es": "Litoral embriagado",
+ "fr": "Rives enivrantes",
+ "de": "Küste der Weintrunkenheit",
+ "pt": "Folia à Beira-Mar"
+ }
+ },
+ "323": {
+ "names": {
+ "th": "Amphoreus, The Eternal Land",
+ "en": "Amphoreus, The Eternal Land",
+ "zh-CN": "永恒之地翁法罗斯",
+ "zh-TW": "永恆之地翁法羅斯",
+ "ja": "永遠の地オンパロス",
+ "ko": "영원의 땅 앰포리어스",
+ "ru": "Вечная земля Амфореус",
+ "vi": "Vùng Đất Vĩnh Hằng Amphoreus",
+ "id": "Amphoreus, The Eternal Land",
+ "es": "Amphoreus, la tierra eterna",
+ "fr": "Amphoreus, la terre éternelle",
+ "de": "Amphoreus, Land der Ewigkeit",
+ "pt": "Amphoreus, a Terra Eterna"
+ }
+ },
+ "324": {
+ "names": {
+ "th": "Tengoku@Livestream",
+ "en": "Tengoku@Livestream",
+ "zh-CN": "天国@直播间",
+ "zh-TW": "天國@直播頻道",
+ "ja": "天国@配信ルーム",
+ "ko": "텐고쿠@라이브스트리밍",
+ "ru": "Тэнгоку @Стрим",
+ "vi": "Tengoku@Livestream",
+ "id": "Tengoku@Livestream",
+ "es": "Tengoku@sala de chat",
+ "fr": "Tengoku@Stream",
+ "de": "Tengoku@Livestream",
+ "pt": "Tengoku@Stream"
+ }
+ },
+ "325": {
+ "names": {
+ "th": "Punklorde Stage Zero",
+ "en": "Punklorde Stage Zero",
+ "zh-CN": "零号关卡朋克洛德",
+ "zh-TW": "零號關卡龐克洛德",
+ "ja": "ステージゼロ:パンクロード",
+ "ko": "0호 스테이지 펑크 로드",
+ "ru": "Уровень Зеро Панклорда",
+ "vi": "Punklorde Ải Zero",
+ "id": "Punklorde Stage Zero",
+ "es": "Etapa cero de Punklorde",
+ "fr": "Punklorde : niveau zéro",
+ "de": "Etappe Nr. Null von Punklorde",
+ "pt": "Estágio Zero de Punklorde"
+ }
+ },
+ "326": {
+ "names": {
+ "th": "City of Converging Stars",
+ "en": "City of Converging Stars",
+ "zh-CN": "千星荟萃之城",
+ "zh-TW": "千星薈萃之城",
+ "ja": "千の星が集う街",
+ "ko": "천 개의 별이 모인 도시",
+ "ru": "Город тысячи звёзд",
+ "vi": "Thành Phố Ngàn Sao Hội Tụ",
+ "id": "City of Converging Stars",
+ "es": "Ciudad de las mil estrellas",
+ "fr": "Épicentre du cosmos",
+ "de": "Stadt der unzähligen Sterne",
+ "pt": "Cidade da Convergência Estelar"
+ }
+ },
+ "327": {
+ "names": {
+ "th": "Fallen Star Anchorage",
+ "en": "Fallen Star Anchorage",
+ "zh-CN": "坠星启航地",
+ "zh-TW": "墜星啟航地",
+ "ja": "墜星の出航地",
+ "ko": "추락한 별의 출항지",
+ "ru": "Порт падающих звёзд",
+ "vi": "Điểm Khởi Hành Sao Rơi",
+ "id": "Fallen Star Anchorage",
+ "es": "Punto de partida de la estrella caída",
+ "fr": "Ancrage de l'étoile déchue",
+ "de": "Ankerplatz des gefallenen Sterns",
+ "pt": "Ancoradouro da Estrela Caída"
+ }
+ },
+ "328": {
+ "names": {
+ "th": "Cosmic Life Sciences Institute",
+ "en": "Cosmic Life Sciences Institute",
+ "zh-CN": "寰宇生研院",
+ "zh-TW": "寰宇生研院",
+ "ja": "宇宙生命科学研究院",
+ "ko": "우주 생명과학연구원",
+ "ru": "Институт биологических исследований",
+ "vi": "Viện Nghiên Cứu Sinh Học Vũ Trụ",
+ "id": "Cosmic Life Sciences Institute",
+ "es": "Instituto de Ciencias de la Vida Cósmica",
+ "fr": "Institut cosmique des Sciences de la Vie",
+ "de": "Institut für kosmische Biowissenschaften",
+ "pt": "Instituto de Ciências da Vida Cósmica"
+ }
+ }
+};
+
+export function getLightconeInfo(lcId, langOverride = null) {
+ const lang = langOverride || getCurrentLanguage();
+ const meta = LIGHTCONE_METADATA[lcId];
+ if (!meta) {
+ return {
+ name: `Lightcone ${lcId}`,
+ rarity: 4,
+ path: translatePath("Unknown")
+ };
+ }
+ const localizedName = meta.names?.[lang] || meta.names?.th || meta.names?.en || `Lightcone ${lcId}`;
+ return {
+ name: localizedName,
+ rarity: meta.rarity,
+ path: translatePath(meta.path)
+ };
+}
+
+export function getRelicSetInfo(setIdOrRelicId, langOverride = null) {
+ const lang = langOverride || getCurrentLanguage();
+ let setId = parseInt(setIdOrRelicId, 10);
+ if (setId > 1000) {
+ // If a 5-digit relic id like 61031 or 63045, extract the set id
+ setId = Math.floor((setId % 10000) / 10);
+ }
+ const meta = RELIC_SET_METADATA[setId];
+ if (!meta) {
+ return {
+ id: setId,
+ name: `Relic Set ${setId}`
+ };
+ }
+ const localizedName = meta.names?.[lang] || meta.names?.th || meta.names?.en || `Relic Set ${setId}`;
+ return {
+ id: setId,
+ name: localizedName
+ };
+}
diff --git a/js/i18n.js b/js/i18n.js
index a119745..1bfaf1a 100644
--- a/js/i18n.js
+++ b/js/i18n.js
@@ -18,1274 +18,2293 @@ export const SUPPORTED_LANGUAGES = [
];
export const TRANSLATIONS = {
- th: {
- // Header
- appName: "GaC-Srtool",
- appSubtitle: "Star Rail FreeSR & Server Controller",
- online: "เชื่อมต่อแล้ว",
- offline: "ออฟไลน์",
- checking: "กำลังตรวจสอบ...",
- refresh: "🔄 รีเฟรช",
- connectFailed: "เชื่อมต่อไม่สำเร็จ",
- // Tabs
- tabDashboard: "📊 แดชบอร์ด & จัดทีม",
- tabAvatars: "👥 ตัวละคร",
- tabExrank: "⚡ สกิลพิเศษ Ex-Rank",
- tabTeleport: "🚀 วาร์ปฉาก",
- tabJson: "📝 จัดการไฟล์ JSON",
- tabSettings: "⚙️ ตั้งค่า",
- // Dashboard
- statAvatars: "ตัวละครที่ครอบครอง",
- statLightcones: "กรวยแสง",
- statRelics: "รีลิกส์",
- serverStatusTitle: "📍 สถานะเซิร์ฟเวอร์ & พิกัดปัจจุบัน",
- quickActionsTitle: "⚡ ดำเนินการด่วน",
- quickActionsSubtitle: "ส่งคำสั่งไปยังเซิร์ฟเวอร์ทันที",
- btnMaxAll: "⭐ ปรับเลเวล 80 & ปลด E6 ตัวละครทั้งหมด",
- btnWarpExpress: "🚂 วาร์ปกลับรถไฟ Astral Express ทันที",
- btnSyncPersistent: "💾 ซิงค์ข้อมูล Persistent ล่าสุด",
- currentLineupTitle: "🎮 ทีมปัจจุบัน",
- slot: "ตำแหน่งที่",
- slotEmpty: "ว่าง",
- coords: "พิกัดตัวละคร XYZ",
- // Avatars
- searchPlaceholder: "🔍 ค้นหาชื่อหรือ ID ตัวละคร...",
- filterAllRarity: "ทุกระดับดาว",
- filter5Star: "5 ดาว",
- filter4Star: "4 ดาว",
- btnReload: "🔄 รีโหลด",
- eidolonLabel: "Eidolon:",
- confirmMaxAll: "ยืนยันปรับตัวละครทั้งหมดให้เป็นเลเวล 80 และปลด E6 หรือไม่?",
- maxAllSuccess: "ปรับเต็มทุกตัวละครสำเร็จแล้ว!",
- avatarRankSuccess: "ปรับตัวละคร {id} เป็น E{rank} สำเร็จ",
- // Ex-Rank
- exrankTitle: "⚡ ระบบปลดล็อค Ex-Rank Skill",
- exrankSubtitle: "เปิดใช้งานพรสวรรค์และกลไกพิเศษ Ex-Rank สำหรับตัวละครเฉพาะใน FreeSR (เช่น Jing Yuan โดน CC ไม่หยุดชะงัก, Dan Heng IL, Acheron)",
- btnEnableAll: "เปิด Ex-Rank ทั้งหมด",
- btnDisableAll: "ปิด Ex-Rank ทั้งหมด",
- exrankToggleSuccess: "{name}: {status} Ex-Rank สำเร็จ",
- exrankAllSuccess: "{status} Ex-Rank ทุกตัวละครสำเร็จ",
- enabled: "เปิดใช้งาน",
- disabled: "ปิดใช้งาน",
- // Teleport
- presetsTitle: "📍 จุดวาร์ปปลอดภัยยอดนิยม",
- presetsSubtitle: "คลิกจุดวาร์ปเพื่อย้ายฉากของผู้เล่นในไฟล์เซฟได้ทันที",
- customTeleportTitle: "🎯 กำหนดพิกัดวาร์ปเอง",
- customTeleportSubtitle: "ใส่ PlaneID, FloorID และ EntryID ตามต้องการ",
- btnExecuteWarp: "🚀 ยืนยันการวาร์ป",
- warpBtn: "🚀 วาร์ป",
- warpSuccess: "วาร์ปไปยัง {label} สำเร็จ",
- warpFailed: "วาร์ปไม่สำเร็จ: {err}",
- // JSON
- btnFreesr: "📄 freesr-data.json",
- btnPersistent: "💾 ไฟล์เซฟ persistent",
- btnBeautify: "✨ จัดรูปแบบ JSON",
- btnDownload: "📥 ดาวน์โหลดสำรอง",
- btnUpload: "📤 อัปโหลดไฟล์",
- btnSaveServer: "💾 บันทึกไปยังเซิร์ฟเวอร์",
- jsonTip: "คำแนะนำ: สามารถแก้ไขค่าดิบแล้วกด 'บันทึกไปยังเซิร์ฟเวอร์' ได้ทันที",
- jsonStatusReady: "พร้อมใช้งาน",
- jsonStatusOpening: "กำลังเปิด: {name}",
- jsonSaveSuccess: "บันทึกไฟล์ {name} เรียบร้อยแล้ว",
- jsonInvalid: "รูปแบบ JSON ไม่ถูกต้อง",
- // Settings
- apiSettingsTitle: "⚙️ ตั้งค่าการเชื่อมต่อ API Gateway",
- apiSettingsSubtitle: "ปรับเปลี่ยนพอร์ตหรือ IP ได้ตามไฟล์ server.json ของคุณ",
- lblApiGatewayUrl: "REST API Gateway URL",
- lblPingInterval: "ความถี่ในการตรวจสอบสถานะ (วินาที)",
- btnSaveSettings: "💾 บันทึกการตั้งค่า",
- btnResetDefault: "คืนค่าเริ่มต้น",
- hostGuideTitle: "🌐 วิธีนำขึ้นโฮสต์ GitHub Pages",
- hostGuideSubtitle: "สามารถเปิดใช้งานเว็บนี้บนอินเทอร์เน็ตได้โดยไม่ต้องเสียค่าโฮสต์ใดๆ",
- settingsSaved: "บันทึกการตั้งค่าสำเร็จ!",
- settingsReset: "คืนค่าเริ่มต้นเรียบร้อย",
- // Elements & Paths
- elements: {
- Physical: "กายภาพ",
- Fire: "ไฟ",
- Ice: "น้ำแข็ง",
- Lightning: "สายฟ้า",
- Wind: "ลม",
- Quantum: "ควอนตัม",
- Imaginary: "จินตภาพ",
- Unknown: "ไม่ระบุ"
+ "th": {
+ "appName": "GaC-Srtool",
+ "appSubtitle": "Star Rail FreeSR & Server Controller",
+ "online": "เชื่อมต่อแล้ว",
+ "offline": "ออฟไลน์",
+ "checking": "กำลังตรวจสอบ...",
+ "refresh": "🔄 รีเฟรช",
+ "connectFailed": "เชื่อมต่อไม่สำเร็จ",
+ "tabDashboard": "📊 แดชบอร์ด & จัดทีม",
+ "tabAvatars": "👥 ตัวละคร",
+ "tabEquipment": "🗡️ กรวยแสง & รีลิกส์",
+ "tabPersistent": "💾 จัดการเซฟ GaC",
+ "tabExrank": "⚡ สกิลพิเศษ Ex-Rank",
+ "tabJson": "📝 จัดการไฟล์ JSON",
+ "tabSettings": "⚙️ ตั้งค่า",
+ "statAvatars": "ตัวละครที่ครอบครอง",
+ "statLightcones": "กรวยแสง",
+ "statRelics": "รีลิกส์",
+ "serverStatusTitle": "📍 สถานะเซิร์ฟเวอร์ & พิกัดปัจจุบัน",
+ "lblServerModeActive": "โหมดเซิร์ฟเวอร์ที่ใช้งาน",
+ "lblApiEndpoint": "API Gateway Endpoint",
+ "lblPlaneId": "Plane ID",
+ "lblFloorId": "Floor ID",
+ "coords": "พิกัดตัวละคร XYZ",
+ "quickActionsTitle": "⚡ ดำเนินการด่วน",
+ "quickActionsSubtitle": "ส่งคำสั่งไปยังเซิร์ฟเวอร์ทันที",
+ "btnMaxAll": "⭐ ปรับเลเวล 80 & ปลด E6 ตัวละครทั้งหมด",
+ "btnSyncPersistent": "💾 ซิงค์ข้อมูล Persistent ล่าสุด",
+ "currentLineupTitle": "🎮 ทีมปัจจุบัน",
+ "slot": "ตำแหน่งที่",
+ "slotEmpty": "ว่าง (คลิกเพื่อเพิ่ม)",
+ "slotTooltip": "คลิกเพื่อเลือกตัวละครลงตำแหน่งนี้",
+ "removeFromTeam": "นำออกจากทีม",
+ "searchPlaceholder": "🔍 ค้นหาชื่อหรือ ID ตัวละคร...",
+ "filterAllRarity": "ทุกระดับดาว",
+ "filter5Star": "5 ดาว",
+ "filter4Star": "4 ดาว",
+ "filterAllElements": "ทุกธาตุ",
+ "filterAllPaths": "ทุกประเภท",
+ "btnReload": "🔄 รีโหลด",
+ "avatarsLoading": "กำลังดึงข้อมูลตัวละคร...",
+ "noAvatarsFound": "ไม่พบตัวละครที่ตรงกับเงื่อนไข",
+ "eidolonLabel": "Eidolon:",
+ "confirmMaxAll": "ยืนยันปรับตัวละครทั้งหมดให้เป็นเลเวล 80 และปลด E6 หรือไม่?",
+ "maxAllSuccess": "ปรับเต็มทุกตัวละครสำเร็จแล้ว!",
+ "avatarRankSuccess": "ปรับตัวละคร {id} เป็น E{rank} สำเร็จ",
+ "eqLcTitle": "🗡️ กรวยแสงในคลัง",
+ "eqLcSubtitle": "รายการกรวยแสงทั้งหมดจาก freesr-data.json",
+ "eqLcLoading": "กำลังโหลดข้อมูลกรวยแสง...",
+ "eqRelicTitle": "🛡️ รีลิกส์ในคลัง",
+ "eqRelicSubtitle": "รายการรีลิกส์ทั้งหมดจาก freesr-data.json",
+ "eqRelicLoading": "กำลังโหลดข้อมูลรีลิกส์...",
+ "itemCount": "{n} ชิ้น",
+ "notEquipped": "ไม่ได้สวมใส่",
+ "equippedBy": "สวมใส่โดย",
+ "noLcData": "ยังไม่มีข้อมูลกรวยแสง",
+ "noRelicData": "ยังไม่มีข้อมูลรีลิกส์",
+ "persistentTitle": "💾 จัดการไฟล์เซฟ GaC",
+ "persistentBadge": "เซิร์ฟเวอร์ของเราเอง",
+ "persistentSubtitle": "ไฟล์ persistent เก็บการตั้งค่าสถานะผู้เล่นเฉพาะของเซิร์ฟเวอร์ GaC เช่น เพศ/ธาตุตัวเอก, สเตตัส March 7th, สวิตช์ฟังก์ชัน Global ต่างๆ",
+ "persistentTbM7Title": "👤 ผู้บุกเบิก & March 7th",
+ "lblTbGenderElement": "เพศ & ธาตุของตัวเอก",
+ "lblM7Path": "สายของ March 7th",
+ "btnSaveCharSettings": "💾 บันทึกการตั้งค่าตัวละคร",
+ "persistentGlobalTitle": "⚙️ สวิตช์ระบบพิเศษของ GaC",
+ "swGlobalDesc": "เปิดใช้งานฟังก์ชันพิเศษ SW ทั่วทั้งเซิร์ฟเวอร์",
+ "castoriceGlobalDesc": "เปิดใช้งานฟังก์ชันพิเศษ Castorice ทั่วทั้งเซิร์ฟเวอร์",
+ "btnSaveGlobalSwitch": "💾 บันทึกสวิตช์ Global",
+ "exrankTitle": "⚡ ระบบปลดล็อค Ex-Rank Skill",
+ "exrankSubtitle": "เปิดใช้งานพรสวรรค์และกลไกพิเศษ Ex-Rank สำหรับตัวละครเฉพาะใน FreeSR (เช่น Jing Yuan โดน CC ไม่หยุดชะงัก, Dan Heng IL, Acheron)",
+ "btnEnableAll": "เปิด Ex-Rank ทั้งหมด",
+ "btnDisableAll": "ปิด Ex-Rank ทั้งหมด",
+ "exrankToggleSuccess": "{name}: {status} Ex-Rank สำเร็จ",
+ "exrankAllSuccess": "{status} Ex-Rank ทุกตัวละครสำเร็จ",
+ "enabled": "เปิดใช้งาน",
+ "disabled": "ปิดใช้งาน",
+ "btnFreesr": "📄 freesr-data.json",
+ "btnPersistent": "💾 ไฟล์เซฟ persistent",
+ "btnBeautify": "✨ จัดรูปแบบ JSON",
+ "btnDownload": "📥 ดาวน์โหลดสำรอง",
+ "btnUpload": "📤 อัปโหลดไฟล์",
+ "btnSaveServer": "💾 บันทึกไปยังเซิร์ฟเวอร์",
+ "jsonTip": "คำแนะนำ: สามารถแก้ไขค่าดิบแล้วกด 'บันทึกไปยังเซิร์ฟเวอร์' ได้ทันที",
+ "jsonStatusReady": "พร้อมใช้งาน",
+ "jsonStatusOpening": "กำลังเปิด: {name}",
+ "jsonSaveSuccess": "บันทึกไฟล์ {name} เรียบร้อยแล้ว",
+ "jsonInvalid": "รูปแบบ JSON ไม่ถูกต้อง",
+ "apiSettingsTitle": "⚙️ ตั้งค่าการเชื่อมต่อ API Gateway",
+ "apiSettingsSubtitle": "ปรับเปลี่ยนพอร์ตหรือ IP ได้ตามไฟล์ server.json ของคุณ",
+ "lblServerMode": "โหมดเซิร์ฟเวอร์",
+ "lblApiGatewayUrl": "REST API Gateway URL",
+ "lblPingInterval": "ความถี่ในการตรวจสอบสถานะ (วินาที)",
+ "btnSaveSettings": "💾 บันทึกการตั้งค่า",
+ "btnResetDefault": "คืนค่าเริ่มต้น",
+ "modalTitleCharEdit": "ปรับแต่งตัวละคร",
+ "modalBtnMaxAllChar": "⭐ ปรับเต็มทั้งหมด",
+ "modalTabSkills": "⚡ สกิลและร่องรอย",
+ "modalTabStatus": "⚙️ เลเวล & Eidolon",
+ "modalTabLightcone": "🗡️ กรวยแสง",
+ "modalSkillCombatTitle": "ระดับสกิลต่อสู้",
+ "modalBtnMaxSkills": "⭐ ปรับสกิลเต็ม 10/10",
+ "modalSkillBasic": "โจมตีปกติ",
+ "modalSkillSkill": "สกิลต่อสู้",
+ "modalSkillUltra": "ท่าไม้ตาย",
+ "modalSkillTalent": "พรสวรรค์",
+ "modalTracesTitle": "ร่องรอยและเทคนิค",
+ "modalTraceTechnique": "⚡ เทคนิค — เปิดใช้งานก่อนเริ่มการต่อสู้",
+ "traceA2": "🌟 ร่องรอยพิเศษ A2",
+ "traceA4": "🌟 ร่องรอยพิเศษ A4",
+ "traceA6": "🌟 ร่องรอยพิเศษ A6",
+ "traceStatNodes": "💎 โหนดสเตตัสเสริมทั้งหมด (10 โหนด)",
+ "lblLevelRange": "ระดับเลเวล (1-80)",
+ "lblPromotionRange": "การเลื่อนขั้น (0-6)",
+ "lblEidolonLevel": "ระดับ Eidolon",
+ "btnResetE0": "รีเซ็ต E0",
+ "btnMaxE6": "⭐ ปลดเต็ม E6",
+ "modalEnergyTitle": "พลังงานท่าไม้ตาย",
+ "modalEnergy50": "ตั้งค่า 50%",
+ "modalEnergy100": "เต็ม 100%",
+ "modalLcTitle": "กรวยแสงที่สวมใส่",
+ "modalBtnMaxLc": "⭐ ปรับกรวยแสงเต็มขั้น",
+ "lblLcId": "ID กรวยแสง",
+ "modalLcIdPlaceholder": "เช่น 21002 หรือ 24001",
+ "lblLcLevel": "เลเวลกรวยแสง (1-80)",
+ "lblLcRank": "ระดับการขัดเกลา",
+ "modalBtnClose": "✕ ปิด",
+ "modalBtnSave": "💾 บันทึกตัวละคร",
+ "pickerTitle": "เลือกตัวละครเข้าทีม",
+ "pickerSearchPlaceholder": "🔍 ค้นหาตัวละครเพื่อลงทีม...",
+ "apiModalTitle": "⚙️ ตั้งค่าการเชื่อมต่อ API Server",
+ "btnCancel": "ยกเลิก",
+ "btnSaveTest": "บันทึก & ทดสอบ",
+ "toastSlotUpdated": "อัปเดตทีม Slot {slot} เป็น: {name}",
+ "toastCharMaxed": "⭐ ปรับ {name} เป็น Lv. 80 E6 เรียบร้อย",
+ "toastCharSaved": "บันทึกตัวละคร {name} เรียบร้อย",
+ "toastAllSkillsMaxed": "⭐ ปรับสกิลและร่องรอยเต็มทั้งหมดแล้ว",
+ "toastServerSwitched": "สลับโหมดเซิร์ฟเวอร์เป็น: {mode}",
+ "tbOptions": {
+ "MalePhysical": "ผู้บุกเบิกชาย - กายภาพ",
+ "FemalePhysical": "ผู้บุกเบิกหญิง - กายภาพ",
+ "MalePreservation": "ผู้บุกเบิกชาย - ไฟ",
+ "FemalePreservation": "ผู้บุกเบิกหญิง - ไฟ",
+ "MaleHarmony": "ผู้บุกเบิกชาย - ประสาน",
+ "FemaleHarmony": "ผู้บุกเบิกหญิง - ประสาน",
+ "MaleRemembrance": "ผู้บุกเบิกชาย - ความทรงจำ",
+ "FemaleRemembrance": "ผู้บุกเบิกหญิง - ความทรงจำ"
},
- paths: {
- Destruction: "ทำลายล้าง",
- Hunt: "ล่าสังหาร",
- Erudition: "ปัญญา",
- Harmony: "ประสาน",
- Nihility: "ลบล้าง",
- Preservation: "อนุรักษ์",
- Abundance: "เฟื่องฟู",
- Remembrance: "ความทรงจำ",
- Unknown: "ไม่ระบุ",
- Elation: "ปีติ"
- }
- },
-
- en: {
- appName: "GaC-Srtool",
- appSubtitle: "Star Rail FreeSR & Server Controller",
- online: "Online",
- offline: "Offline",
- checking: "Checking...",
- refresh: "🔄 Refresh",
- connectFailed: "Connection Failed",
- tabDashboard: "📊 Dashboard",
- tabAvatars: "👥 Avatars",
- tabExrank: "⚡ Ex-Rank Skills",
- tabTeleport: "🚀 Teleport",
- tabJson: "📝 JSON Management",
- tabSettings: "⚙️ Settings",
- statAvatars: "Owned Avatars",
- statLightcones: "Lightcones",
- statRelics: "Relics",
- serverStatusTitle: "📍 Server Status & Current Position",
- quickActionsTitle: "⚡ Quick Actions",
- quickActionsSubtitle: "Send command directly to REST API Gateway",
- btnMaxAll: "⭐ Max All Avatars (Lv. 80 & E6)",
- btnWarpExpress: "🚂 Warp to Astral Express Parlor Car",
- btnSyncPersistent: "💾 Sync Persistent Data",
- currentLineupTitle: "🎮 Current Lineup",
- slot: "Slot",
- slotEmpty: "(Empty)",
- coords: "Coordinates (X, Y, Z)",
- searchPlaceholder: "🔍 Search name or ID...",
- filterAllRarity: "All Rarities",
- filter5Star: "5-Star (SSR)",
- filter4Star: "4-Star (SR)",
- btnReload: "🔄 Reload",
- eidolonLabel: "EIDOLON (E):",
- confirmMaxAll: "Upgrade all avatars to Level 80 and unlock E6?",
- maxAllSuccess: "All avatars maximized successfully!",
- avatarRankSuccess: "Updated avatar {id} to E{rank}",
- exrankTitle: "⚡ Ex-Rank Skills System",
- exrankSubtitle: "Toggle special Ex-Rank talents and perks in FreeSR (e.g. Jing Yuan CC immunity, Dan Heng IL, Acheron)",
- btnEnableAll: "Enable All Ex-Ranks",
- btnDisableAll: "Disable All Ex-Ranks",
- exrankToggleSuccess: "{name}: Ex-Rank {status}",
- exrankAllSuccess: "All avatars Ex-Rank {status}",
- enabled: "enabled",
- disabled: "disabled",
- presetsTitle: "📍 Safe Presets",
- presetsSubtitle: "Click to warp player scene and entry point instantly",
- customTeleportTitle: "🎯 Custom Coordinates",
- customTeleportSubtitle: "Specify PlaneID, FloorID, EntryID and coordinates",
- btnExecuteWarp: "🚀 Execute Teleport",
- warpBtn: "🚀 Warp",
- warpSuccess: "Warped to {label} successfully (saved to Persistent)",
- warpFailed: "Teleport failed: {err}",
- btnFreesr: "📄 freesr-data.json",
- btnPersistent: "💾 persistent (Save)",
- btnBeautify: "✨ Beautify JSON",
- btnDownload: "📥 Download Backup",
- btnUpload: "📤 Upload File",
- btnSaveServer: "💾 Save to Server",
- jsonTip: "Tip: Edit raw JSON and click 'Save to Server' to apply instantly",
- jsonStatusReady: "Ready",
- jsonStatusOpening: "Opening: {name}",
- jsonSaveSuccess: "File {name} saved successfully",
- jsonInvalid: "Invalid JSON format",
- apiSettingsTitle: "⚙️ API Gateway Connection Settings",
- apiSettingsSubtitle: "Adjust port or IP according to your server.json",
- lblApiGatewayUrl: "REST API Gateway URL",
- lblPingInterval: "Health Check Interval (seconds)",
- btnSaveSettings: "💾 Save Settings",
- btnResetDefault: "Reset Defaults",
- hostGuideTitle: "🌐 How to Host on GitHub Pages (100% Free)",
- hostGuideSubtitle: "Host and run this dashboard globally on GitHub with zero hosting cost",
- settingsSaved: "Settings saved successfully!",
- settingsReset: "Reset to default settings",
- elements: {
- Physical: "Physical",
- Fire: "Fire",
- Ice: "Ice",
- Lightning: "Lightning",
- Wind: "Wind",
- Quantum: "Quantum",
- Imaginary: "Imaginary",
- Unknown: "Unknown"
+ "marchOptions": {
+ "MarchHunt": "March 7th - ล่าสังหาร",
+ "MarchPreservation": "March 7th - อนุรักษ์"
},
- paths: {
- Destruction: "Destruction",
- Hunt: "Hunt",
- Erudition: "Erudition",
- Harmony: "Harmony",
- Nihility: "Nihility",
- Preservation: "Preservation",
- Abundance: "Abundance",
- Remembrance: "Remembrance",
- Unknown: "Unknown",
- Elation: "Elation"
- }
+ "elements": {
+ "Physical": "กายภาพ",
+ "Fire": "ไฟ",
+ "Ice": "น้ำแข็ง",
+ "Lightning": "สายฟ้า",
+ "Wind": "ลม",
+ "Quantum": "ควอนตัม",
+ "Imaginary": "จินตภาพ",
+ "Unknown": "ไม่ระบุ"
+ },
+ "paths": {
+ "Destruction": "ทำลายล้าง",
+ "Hunt": "ล่าสังหาร",
+ "Erudition": "ปัญญา",
+ "Harmony": "ประสาน",
+ "Nihility": "ลบล้าง",
+ "Preservation": "อนุรักษ์",
+ "Abundance": "เฟื่องฟู",
+ "Remembrance": "ความทรงจำ",
+ "Unknown": "ไม่ระบุ",
+ "Elation": "ปีติ"
+ },
+ "settingsSaved": "บันทึกการตั้งค่าสำเร็จ!",
+ "settingsReset": "คืนค่าเริ่มต้นเรียบร้อย"
+ },
+ "en": {
+ "appName": "GaC-Srtool",
+ "appSubtitle": "Star Rail FreeSR & Server Controller",
+ "online": "Connected",
+ "offline": "Offline",
+ "checking": "Checking...",
+ "refresh": "🔄 Refresh",
+ "connectFailed": "Connection Failed",
+ "tabDashboard": "📊 Dashboard & Party",
+ "tabAvatars": "👥 Characters",
+ "tabEquipment": "🗡️ Lightcones & Relics",
+ "tabPersistent": "💾 GaC Save Manager",
+ "tabExrank": "⚡ Ex-Rank Skills",
+ "tabJson": "📝 JSON Management",
+ "tabSettings": "⚙️ Settings",
+ "statAvatars": "Owned Characters",
+ "statLightcones": "Lightcones",
+ "statRelics": "Relics",
+ "serverStatusTitle": "📍 Server Status & Coordinates",
+ "lblServerModeActive": "Active Server Mode",
+ "lblApiEndpoint": "API Gateway Endpoint",
+ "lblPlaneId": "Plane ID",
+ "lblFloorId": "Floor ID",
+ "coords": "Character Coordinates XYZ",
+ "quickActionsTitle": "⚡ Quick Actions",
+ "quickActionsSubtitle": "Send commands to server instantly",
+ "btnMaxAll": "⭐ Max Level 80 & E6 All Characters",
+ "btnSyncPersistent": "💾 Sync Latest Persistent Save",
+ "currentLineupTitle": "🎮 Current Lineup",
+ "slot": "Slot",
+ "slotEmpty": "Empty (Click to add)",
+ "slotTooltip": "Click to select a character for this slot",
+ "removeFromTeam": "Remove from team",
+ "searchPlaceholder": "🔍 Search character name or ID...",
+ "filterAllRarity": "All Rarities",
+ "filter5Star": "5-Star",
+ "filter4Star": "4-Star",
+ "filterAllElements": "All Elements",
+ "filterAllPaths": "All Paths",
+ "btnReload": "🔄 Reload",
+ "avatarsLoading": "Loading characters...",
+ "noAvatarsFound": "No matching characters found",
+ "eidolonLabel": "Eidolon:",
+ "confirmMaxAll": "Upgrade all characters to Level 80 and unlock E6?",
+ "maxAllSuccess": "All characters maximized successfully!",
+ "avatarRankSuccess": "Updated character {id} to E{rank}",
+ "eqLcTitle": "🗡️ Lightcones in Inventory",
+ "eqLcSubtitle": "All lightcones from freesr-data.json",
+ "eqLcLoading": "Loading lightcone data...",
+ "eqRelicTitle": "🛡️ Relics in Inventory",
+ "eqRelicSubtitle": "All relics from freesr-data.json",
+ "eqRelicLoading": "Loading relic data...",
+ "itemCount": "{n} items",
+ "notEquipped": "Not equipped",
+ "equippedBy": "Equipped by",
+ "noLcData": "No lightcone data available",
+ "noRelicData": "No relic data available",
+ "persistentTitle": "💾 GaC Save Manager",
+ "persistentBadge": "Our Custom Server",
+ "persistentSubtitle": "The persistent save stores GaC-specific player states like Trailblazer gender/element, March 7th path, and server-wide global features.",
+ "persistentTbM7Title": "👤 Trailblazer & March 7th",
+ "lblTbGenderElement": "Trailblazer Gender & Element",
+ "lblM7Path": "March 7th Path",
+ "btnSaveCharSettings": "💾 Save Character Settings",
+ "persistentGlobalTitle": "⚙️ GaC Special Features",
+ "swGlobalDesc": "Enable server-wide Silver Wolf global mechanic",
+ "castoriceGlobalDesc": "Enable server-wide Castorice global mechanic",
+ "btnSaveGlobalSwitch": "💾 Save Global Toggles",
+ "exrankTitle": "⚡ Ex-Rank Skills System",
+ "exrankSubtitle": "Toggle special Ex-Rank talents and perks in FreeSR (e.g. Jing Yuan CC immunity, Dan Heng IL, Acheron)",
+ "btnEnableAll": "Enable All Ex-Ranks",
+ "btnDisableAll": "Disable All Ex-Ranks",
+ "exrankToggleSuccess": "{name}: Ex-Rank {status}",
+ "exrankAllSuccess": "All characters Ex-Rank {status}",
+ "enabled": "enabled",
+ "disabled": "disabled",
+ "btnFreesr": "📄 freesr-data.json",
+ "btnPersistent": "💾 persistent save",
+ "btnBeautify": "✨ Beautify JSON",
+ "btnDownload": "📥 Download Backup",
+ "btnUpload": "📤 Upload File",
+ "btnSaveServer": "💾 Save to Server",
+ "jsonTip": "Tip: Edit raw JSON and click 'Save to Server' to apply instantly",
+ "jsonStatusReady": "Ready",
+ "jsonStatusOpening": "Opening: {name}",
+ "jsonSaveSuccess": "File {name} saved successfully",
+ "jsonInvalid": "Invalid JSON format",
+ "apiSettingsTitle": "⚙️ API Gateway Connection Settings",
+ "apiSettingsSubtitle": "Adjust port or IP according to your server.json",
+ "lblServerMode": "Server Mode",
+ "lblApiGatewayUrl": "REST API Gateway URL",
+ "lblPingInterval": "Health Check Interval (seconds)",
+ "btnSaveSettings": "💾 Save Settings",
+ "btnResetDefault": "Reset Defaults",
+ "modalTitleCharEdit": "Character Customization",
+ "modalBtnMaxAllChar": "⭐ Max All",
+ "modalTabSkills": "⚡ Skills & Traces",
+ "modalTabStatus": "⚙️ Level & Eidolon",
+ "modalTabLightcone": "🗡️ Lightcone",
+ "modalSkillCombatTitle": "Combat Skill Levels",
+ "modalBtnMaxSkills": "⭐ Max All Skills (10/10)",
+ "modalSkillBasic": "Basic ATK",
+ "modalSkillSkill": "Skill",
+ "modalSkillUltra": "Ultimate",
+ "modalSkillTalent": "Talent",
+ "modalTracesTitle": "Traces & Technique",
+ "modalTraceTechnique": "⚡ Technique — Pre-battle active",
+ "traceA2": "🌟 Bonus Trace A2",
+ "traceA4": "🌟 Bonus Trace A4",
+ "traceA6": "🌟 Bonus Trace A6",
+ "traceStatNodes": "💎 All Stat Bonus Nodes (10 nodes)",
+ "lblLevelRange": "Level (1-80)",
+ "lblPromotionRange": "Ascension / Promotion (0-6)",
+ "lblEidolonLevel": "Eidolon Level",
+ "btnResetE0": "Reset E0",
+ "btnMaxE6": "⭐ Max E6",
+ "modalEnergyTitle": "Ultimate Energy",
+ "modalEnergy50": "Set 50%",
+ "modalEnergy100": "Full 100%",
+ "modalLcTitle": "Equipped Lightcone",
+ "modalBtnMaxLc": "⭐ Max Lightcone (Lv.80 S5)",
+ "lblLcId": "Lightcone ID",
+ "modalLcIdPlaceholder": "e.g. 21002 or 24001",
+ "lblLcLevel": "Lightcone Level (1-80)",
+ "lblLcRank": "Superimposition (S1-S5)",
+ "modalBtnClose": "✕ Close",
+ "modalBtnSave": "💾 Save Character",
+ "pickerTitle": "Select Character for Lineup",
+ "pickerSearchPlaceholder": "🔍 Search character to add...",
+ "apiModalTitle": "⚙️ API Server Connection Settings",
+ "btnCancel": "Cancel",
+ "btnSaveTest": "Save & Test",
+ "toastSlotUpdated": "Updated Slot {slot} to: {name}",
+ "toastCharMaxed": "⭐ Maxed {name} to Lv. 80 E6",
+ "toastCharSaved": "Saved character {name}",
+ "toastAllSkillsMaxed": "⭐ All skills and traces maxed",
+ "toastServerSwitched": "Switched server mode to: {mode}",
+ "tbOptions": {
+ "MalePhysical": "Trailblazer (Male) - Physical",
+ "FemalePhysical": "Trailblazer (Female) - Physical",
+ "MalePreservation": "Trailblazer (Male) - Fire",
+ "FemalePreservation": "Trailblazer (Female) - Fire",
+ "MaleHarmony": "Trailblazer (Male) - Harmony",
+ "FemaleHarmony": "Trailblazer (Female) - Harmony",
+ "MaleRemembrance": "Trailblazer (Male) - Remembrance",
+ "FemaleRemembrance": "Trailblazer (Female) - Remembrance"
+ },
+ "marchOptions": {
+ "MarchHunt": "March 7th - The Hunt",
+ "MarchPreservation": "March 7th - Preservation"
+ },
+ "elements": {
+ "Physical": "Physical",
+ "Fire": "Fire",
+ "Ice": "Ice",
+ "Lightning": "Lightning",
+ "Wind": "Wind",
+ "Quantum": "Quantum",
+ "Imaginary": "Imaginary",
+ "Unknown": "Unknown"
+ },
+ "paths": {
+ "Destruction": "Destruction",
+ "Hunt": "Hunt",
+ "Erudition": "Erudition",
+ "Harmony": "Harmony",
+ "Nihility": "Nihility",
+ "Preservation": "Preservation",
+ "Abundance": "Abundance",
+ "Remembrance": "Remembrance",
+ "Unknown": "Unknown",
+ "Elation": "Elation"
+ },
+ "settingsSaved": "Settings saved successfully!",
+ "settingsReset": "Reset to default settings"
},
-
"zh-CN": {
- appName: "GaC-Srtool",
- appSubtitle: "星穹铁道 FreeSR 伴侣管理后台",
- online: "在线 (Online)",
- offline: "离线 (Offline)",
- checking: "检查中...",
- refresh: "🔄 刷新",
- connectFailed: "连接失败",
- tabDashboard: "📊 仪表盘",
- tabAvatars: "👥 角色管理",
- tabExrank: "⚡ 特殊命途 (Ex-Rank)",
- tabTeleport: "🚀 场景传送",
- tabJson: "📝 JSON 数据",
- tabSettings: "⚙️ 设置与指南",
- statAvatars: "已拥有角色",
- statLightcones: "光锥数量",
- statRelics: "遗器数量",
- serverStatusTitle: "📍 服务器状态与当前位置",
- quickActionsTitle: "⚡ 快捷操作",
- quickActionsSubtitle: "即时下发指令至 REST API 网关",
- btnMaxAll: "⭐ 全角色满级 (Lv.80) & 满命 (E6)",
- btnWarpExpress: "🚂 立即传送回星穹列车观景车厢",
- btnSyncPersistent: "💾 同步最新 Persistent 存档",
- currentLineupTitle: "🎮 当前编队 (Lineup)",
- slot: "位置",
- slotEmpty: "(空位)",
- coords: "角色坐标 (X, Y, Z)",
- searchPlaceholder: "🔍 搜索角色名称或 ID...",
- filterAllRarity: "所有星级",
- filter5Star: "5星 (SSR)",
- filter4Star: "4星 (SR)",
- btnReload: "🔄 重新载入",
- eidolonLabel: "星魂等级 (E):",
- confirmMaxAll: "确定要将所有角色设为 80 级并解锁 6 命吗?",
- maxAllSuccess: "全角色强化完成!",
- avatarRankSuccess: "角色 {id} 已设置为 E{rank}",
- exrankTitle: "⚡ Ex-Rank 特殊技能机制",
- exrankSubtitle: "在 FreeSR 中启用专属 Ex-Rank 特权天赋(如景元免受控制打断、丹恒·饮月、黄泉)",
- btnEnableAll: "全部启用 Ex-Rank",
- btnDisableAll: "全部关闭 Ex-Rank",
- exrankToggleSuccess: "{name}: Ex-Rank 已{status}",
- exrankAllSuccess: "全角色 Ex-Rank 已{status}",
- enabled: "启用",
- disabled: "关闭",
- presetsTitle: "📍 常用安全传送点",
- presetsSubtitle: "一键传送玩家角色并写入存档",
- customTeleportTitle: "🎯 自定义坐标传送",
- customTeleportSubtitle: "自由输入 PlaneID、FloorID、EntryID 及坐标",
- btnExecuteWarp: "🚀 执行传送",
- warpBtn: "🚀 传送",
- warpSuccess: "成功传送至 {label}(已保存至 Persistent)",
- warpFailed: "传送失败: {err}",
- btnFreesr: "📄 freesr-data.json",
- btnPersistent: "💾 persistent (存档)",
- btnBeautify: "✨ 格式化 JSON",
- btnDownload: "📥 下载备份",
- btnUpload: "📤 上传文件",
- btnSaveServer: "💾 保存至服务器",
- jsonTip: "提示: 修改原始 JSON 后点击「保存至服务器」即时生效",
- jsonStatusReady: "就绪",
- jsonStatusOpening: "正在打开: {name}",
- jsonSaveSuccess: "文件 {name} 已成功保存",
- jsonInvalid: "无效的 JSON 格式",
- apiSettingsTitle: "⚙️ API 网关连接设置",
- apiSettingsSubtitle: "可根据你的 server.json 自由修改端口或局域网 IP",
- lblApiGatewayUrl: "REST API 网关 URL",
- lblPingInterval: "健康检查间隔 (秒)",
- btnSaveSettings: "💾 保存设置",
- btnResetDefault: "恢复默认值",
- hostGuideTitle: "🌐 如何免费部署至 GitHub Pages (100% 免费)",
- hostGuideSubtitle: "无服务器成本,一键托管至全球 CDN",
- settingsSaved: "设置保存成功!",
- settingsReset: "已恢复默认设置",
- elements: {
- Physical: "物理",
- Fire: "火",
- Ice: "冰",
- Lightning: "雷",
- Wind: "风",
- Quantum: "量子",
- Imaginary: "虚数",
- Unknown: "未知"
+ "appName": "GaC-Srtool",
+ "appSubtitle": "星穹铁道 FreeSR 与服务器控制器",
+ "online": "已连接",
+ "offline": "离线",
+ "checking": "检查中...",
+ "refresh": "🔄 刷新",
+ "connectFailed": "连接失败",
+ "tabDashboard": "📊 仪表盘与配队",
+ "tabAvatars": "👥 角色列表",
+ "tabEquipment": "🗡️ 光锥与遗器",
+ "tabPersistent": "💾 GaC 存档管理",
+ "tabExrank": "⚡ Ex-Rank 特殊技能",
+ "tabJson": "📝 JSON 文件管理",
+ "tabSettings": "⚙️ 系统设置",
+ "statAvatars": "已拥有角色",
+ "statLightcones": "光锥",
+ "statRelics": "遗器",
+ "serverStatusTitle": "📍 服务器状态与当前坐标",
+ "lblServerModeActive": "当前运行模式",
+ "lblApiEndpoint": "API 网关端点",
+ "lblPlaneId": "地图位面 (Plane ID)",
+ "lblFloorId": "楼层 (Floor ID)",
+ "coords": "角色坐标 XYZ",
+ "quickActionsTitle": "⚡ 快捷操作",
+ "quickActionsSubtitle": "立即向服务器发送指令",
+ "btnMaxAll": "⭐ 全角色升至80级并满命E6",
+ "btnSyncPersistent": "💾 同步最新 Persistent 存档",
+ "currentLineupTitle": "🎮 当前队伍阵容",
+ "slot": "槽位",
+ "slotEmpty": "空位 (点击添加)",
+ "slotTooltip": "点击选择角色加入此位置",
+ "removeFromTeam": "移出队伍",
+ "searchPlaceholder": "🔍 搜索角色名称或 ID...",
+ "filterAllRarity": "全部稀有度",
+ "filter5Star": "5 星",
+ "filter4Star": "4 星",
+ "filterAllElements": "全部属性",
+ "filterAllPaths": "全部命途",
+ "btnReload": "🔄 重新载入",
+ "avatarsLoading": "正在获取角色数据...",
+ "noAvatarsFound": "未找到符合条件的角色",
+ "eidolonLabel": "星魂:",
+ "confirmMaxAll": "确定将全部角色升至80级并解锁满命E6吗?",
+ "maxAllSuccess": "全角色养成满级成功!",
+ "avatarRankSuccess": "已调整角色 {id} 为星魂 {rank}",
+ "eqLcTitle": "🗡️ 背包中的光锥",
+ "eqLcSubtitle": "来自 freesr-data.json 的所有光锥列表",
+ "eqLcLoading": "正在加载光锥数据...",
+ "eqRelicTitle": "🛡️ 背包中的遗器",
+ "eqRelicSubtitle": "来自 freesr-data.json 的所有遗器列表",
+ "eqRelicLoading": "正在加载遗器数据...",
+ "itemCount": "{n} 件",
+ "notEquipped": "未装备",
+ "equippedBy": "装备者",
+ "noLcData": "暂无光锥数据",
+ "noRelicData": "暂无遗器数据",
+ "persistentTitle": "💾 GaC 存档管理",
+ "persistentBadge": "独家自定义服务器",
+ "persistentSubtitle": "persistent 存档保存 GaC 特有的玩家状态(主角性别/属性、三月七命途、全局开关等)",
+ "persistentTbM7Title": "👤 开拓者与三月七",
+ "lblTbGenderElement": "主角性别与属性",
+ "lblM7Path": "三月七命途形态",
+ "btnSaveCharSettings": "💾 保存主角设定",
+ "persistentGlobalTitle": "⚙️ GaC 特殊功能开关",
+ "swGlobalDesc": "开启全服银狼专属机制",
+ "castoriceGlobalDesc": "开启全服 Castorice 专属机制",
+ "btnSaveGlobalSwitch": "💾 保存全局开关",
+ "exrankTitle": "⚡ Ex-Rank 特殊技能系统",
+ "exrankSubtitle": "在 FreeSR 中开启特定角色的 Ex-Rank 专属天赋与强化机制(例如景元免疫受控、饮月、黄泉)",
+ "btnEnableAll": "开启全部 Ex-Rank",
+ "btnDisableAll": "关闭全部 Ex-Rank",
+ "exrankToggleSuccess": "{name}: Ex-Rank 已{status}",
+ "exrankAllSuccess": "全角色 Ex-Rank 已{status}",
+ "enabled": "启用",
+ "disabled": "禁用",
+ "btnFreesr": "📄 freesr-data.json",
+ "btnPersistent": "💾 persistent 存档",
+ "btnBeautify": "✨ 格式化 JSON",
+ "btnDownload": "📥 下载备份",
+ "btnUpload": "📤 上传文件",
+ "btnSaveServer": "💾 保存至服务器",
+ "jsonTip": "提示: 可直接修改原始 JSON 并点击 '保存至服务器' 生效",
+ "jsonStatusReady": "就绪",
+ "jsonStatusOpening": "正在打开: {name}",
+ "jsonSaveSuccess": "文件 {name} 已成功保存",
+ "jsonInvalid": "JSON 格式无效",
+ "apiSettingsTitle": "⚙️ API 网关连接设置",
+ "apiSettingsSubtitle": "可根据您的 server.json 配置修改端口或 IP",
+ "lblServerMode": "服务器模式",
+ "lblApiGatewayUrl": "REST API Gateway URL",
+ "lblPingInterval": "状态检测频率 (秒)",
+ "btnSaveSettings": "💾 保存设置",
+ "btnResetDefault": "恢复默认",
+ "modalTitleCharEdit": "角色养成与配装",
+ "modalBtnMaxAllChar": "⭐ 全部升至满级",
+ "modalTabSkills": "⚡ 技能与行迹",
+ "modalTabStatus": "⚙️ 等级与星魂",
+ "modalTabLightcone": "🗡️ 光锥",
+ "modalSkillCombatTitle": "战斗技能等级",
+ "modalBtnMaxSkills": "⭐ 技能全满 (10/10)",
+ "modalSkillBasic": "普攻",
+ "modalSkillSkill": "战技",
+ "modalSkillUltra": "终结技",
+ "modalSkillTalent": "天赋",
+ "modalTracesTitle": "行迹与秘技",
+ "modalTraceTechnique": "⚡ 秘技 — 进入战斗前生效",
+ "traceA2": "🌟 额外能力 A2",
+ "traceA4": "🌟 额外能力 A4",
+ "traceA6": "🌟 额外能力 A6",
+ "traceStatNodes": "💎 全部属性加成节点 (10个)",
+ "lblLevelRange": "角色等级 (1-80)",
+ "lblPromotionRange": "晋阶等级 (0-6)",
+ "lblEidolonLevel": "星魂等级",
+ "btnResetE0": "重置 E0",
+ "btnMaxE6": "⭐ 满魂 E6",
+ "modalEnergyTitle": "终结技能量",
+ "modalEnergy50": "设为 50%",
+ "modalEnergy100": "满能量 100%",
+ "modalLcTitle": "装备的光锥",
+ "modalBtnMaxLc": "⭐ 满级满叠光锥 (Lv.80 叠影5)",
+ "lblLcId": "光锥 ID",
+ "modalLcIdPlaceholder": "例如 21002 或 24001",
+ "lblLcLevel": "光锥等级 (1-80)",
+ "lblLcRank": "叠影阶数 (S1-S5)",
+ "modalBtnClose": "✕ 关闭",
+ "modalBtnSave": "💾 保存角色",
+ "pickerTitle": "选择上阵角色",
+ "pickerSearchPlaceholder": "🔍 搜索要加入队伍的角色...",
+ "apiModalTitle": "⚙️ API 服务器连接设置",
+ "btnCancel": "取消",
+ "btnSaveTest": "保存并测试",
+ "toastSlotUpdated": "已更新槽位 {slot} 为: {name}",
+ "toastCharMaxed": "⭐ 已将 {name} 升至 Lv. 80 E6",
+ "toastCharSaved": "已保存角色 {name}",
+ "toastAllSkillsMaxed": "⭐ 所有技能与行迹已升满",
+ "toastServerSwitched": "已切换服务器模式为: {mode}",
+ "tbOptions": {
+ "MalePhysical": "开拓者 (男) - 物理",
+ "FemalePhysical": "开拓者 (女) - 物理",
+ "MalePreservation": "开拓者 (男) - 火",
+ "FemalePreservation": "开拓者 (女) - 火",
+ "MaleHarmony": "开拓者 (男) - 同谐",
+ "FemaleHarmony": "开拓者 (女) - 同谐",
+ "MaleRemembrance": "开拓者 (男) - 记忆",
+ "FemaleRemembrance": "开拓者 (女) - 记忆"
},
- paths: {
- Destruction: "毁灭",
- Hunt: "巡猎",
- Erudition: "智识",
- Harmony: "同谐",
- Nihility: "虚无",
- Preservation: "存护",
- Abundance: "丰饶",
- Remembrance: "记忆",
- Unknown: "未知",
- Elation: "欢愉"
- }
+ "marchOptions": {
+ "MarchHunt": "三月七 - 巡猎",
+ "MarchPreservation": "三月七 - 存护"
+ },
+ "elements": {
+ "Physical": "物理",
+ "Fire": "火",
+ "Ice": "冰",
+ "Lightning": "雷",
+ "Wind": "风",
+ "Quantum": "量子",
+ "Imaginary": "虚数",
+ "Unknown": "未知"
+ },
+ "paths": {
+ "Destruction": "毁灭",
+ "Hunt": "巡猎",
+ "Erudition": "智识",
+ "Harmony": "同谐",
+ "Nihility": "虚无",
+ "Preservation": "存护",
+ "Abundance": "丰饶",
+ "Remembrance": "记忆",
+ "Unknown": "未知",
+ "Elation": "欢愉"
+ },
+ "settingsSaved": "设置已成功保存!",
+ "settingsReset": "已恢复默认设置"
},
-
"zh-TW": {
- appName: "GaC-Srtool",
- appSubtitle: "星穹鐵道 FreeSR 伴侶管理後台",
- online: "線上 (Online)",
- offline: "離線 (Offline)",
- checking: "檢查中...",
- refresh: "🔄 重新整理",
- connectFailed: "連線失敗",
- tabDashboard: "📊 儀表板",
- tabAvatars: "👥 角色管理",
- tabExrank: "⚡ 特殊命途 (Ex-Rank)",
- tabTeleport: "🚀 場景傳送",
- tabJson: "📝 JSON 數據",
- tabSettings: "⚙️ 設定與指南",
- statAvatars: "已擁有角色",
- statLightcones: "光錐數量",
- statRelics: "遺物數量",
- serverStatusTitle: "📍 伺服器狀態與當前位置",
- quickActionsTitle: "⚡ 快捷操作",
- quickActionsSubtitle: "即時下發指令至 REST API 網關",
- btnMaxAll: "⭐ 全角色滿級 (Lv.80) & 滿魂 (E6)",
- btnWarpExpress: "🚂 立即傳送回星穹列車觀景車廂",
- btnSyncPersistent: "💾 同步最新 Persistent 存檔",
- currentLineupTitle: "🎮 當前編隊 (Lineup)",
- slot: "位置",
- slotEmpty: "(空位)",
- coords: "角色座標 (X, Y, Z)",
- searchPlaceholder: "🔍 搜尋角色名稱或 ID...",
- filterAllRarity: "所有星級",
- filter5Star: "5星 (SSR)",
- filter4Star: "4星 (SR)",
- btnReload: "🔄 重新載入",
- eidolonLabel: "星魂等級 (E):",
- confirmMaxAll: "確定要將所有角色設為 80 級並解鎖 6 魂嗎?",
- maxAllSuccess: "全角色強化完成!",
- avatarRankSuccess: "角色 {id} 已設置為 E{rank}",
- exrankTitle: "⚡ Ex-Rank 特殊技能機制",
- exrankSubtitle: "在 FreeSR 中啟用專屬 Ex-Rank 特權天賦(如景元免受控制中斷、丹恆·飲月、黃泉)",
- btnEnableAll: "全部啟用 Ex-Rank",
- btnDisableAll: "全部關閉 Ex-Rank",
- exrankToggleSuccess: "{name}: Ex-Rank 已{status}",
- exrankAllSuccess: "全角色 Ex-Rank 已{status}",
- enabled: "啟用",
- disabled: "關閉",
- presetsTitle: "📍 常用安全傳送點",
- presetsSubtitle: "一鍵傳送玩家角色並寫入存檔",
- customTeleportTitle: "🎯 自訂座標傳送",
- customTeleportSubtitle: "自由輸入 PlaneID、FloorID、EntryID 及座標",
- btnExecuteWarp: "🚀 執行傳送",
- warpBtn: "🚀 傳送",
- warpSuccess: "成功傳送至 {label}(已儲存至 Persistent)",
- warpFailed: "傳送失敗: {err}",
- btnFreesr: "📄 freesr-data.json",
- btnPersistent: "💾 persistent (存檔)",
- btnBeautify: "✨ 格式化 JSON",
- btnDownload: "📥 下載備份",
- btnUpload: "📤 上傳檔案",
- btnSaveServer: "💾 儲存至伺服器",
- jsonTip: "提示: 修改原始 JSON 後點擊「儲存至伺服器」即時生效",
- jsonStatusReady: "就緒",
- jsonStatusOpening: "正在打開: {name}",
- jsonSaveSuccess: "檔案 {name} 已成功儲存",
- jsonInvalid: "無效的 JSON 格式",
- apiSettingsTitle: "⚙️ API 網關連線設定",
- apiSettingsSubtitle: "可根據你的 server.json 自由修改通訊埠或區域網路 IP",
- lblApiGatewayUrl: "REST API 網關 URL",
- lblPingInterval: "健康檢查間隔 (秒)",
- btnSaveSettings: "💾 儲存設定",
- btnResetDefault: "恢復預設值",
- hostGuideTitle: "🌐 如何免費部署至 GitHub Pages (100% 免費)",
- hostGuideSubtitle: "無伺服器成本,一鍵託管至全球 CDN",
- settingsSaved: "設定儲存成功!",
- settingsReset: "已恢復預設設定",
- elements: {
- Physical: "物理",
- Fire: "火",
- Ice: "冰",
- Lightning: "雷",
- Wind: "風",
- Quantum: "量子",
- Imaginary: "虛數",
- Unknown: "未知"
+ "appName": "GaC-Srtool",
+ "appSubtitle": "星穹鐵道 FreeSR 與伺服器控制器",
+ "online": "已連線",
+ "offline": "離線",
+ "checking": "檢查中...",
+ "refresh": "🔄 重新整理",
+ "connectFailed": "連線失敗",
+ "tabDashboard": "📊 儀表板與配隊",
+ "tabAvatars": "👥 角色列表",
+ "tabEquipment": "🗡️ 光錐與遺器",
+ "tabPersistent": "💾 GaC 存檔管理",
+ "tabExrank": "⚡ Ex-Rank 特殊技能",
+ "tabJson": "📝 JSON 檔案管理",
+ "tabSettings": "⚙️ 系統設定",
+ "statAvatars": "已擁有角色",
+ "statLightcones": "光錐",
+ "statRelics": "遺器",
+ "serverStatusTitle": "📍 伺服器狀態與當前座標",
+ "lblServerModeActive": "當前運行模式",
+ "lblApiEndpoint": "API 閘道端點",
+ "lblPlaneId": "地圖位面 (Plane ID)",
+ "lblFloorId": "樓層 (Floor ID)",
+ "coords": "角色座標 XYZ",
+ "quickActionsTitle": "⚡ 快捷操作",
+ "quickActionsSubtitle": "立即向伺服器發送指令",
+ "btnMaxAll": "⭐ 全角色升至80級並滿魂E6",
+ "btnSyncPersistent": "💾 同步最新 Persistent 存檔",
+ "currentLineupTitle": "🎮 當前隊伍陣容",
+ "slot": "欄位",
+ "slotEmpty": "空位 (點擊新增)",
+ "slotTooltip": "點擊選擇角色加入此位置",
+ "removeFromTeam": "移出隊伍",
+ "searchPlaceholder": "🔍 搜尋角色名稱或 ID...",
+ "filterAllRarity": "全部稀有度",
+ "filter5Star": "5 星",
+ "filter4Star": "4 星",
+ "filterAllElements": "全部屬性",
+ "filterAllPaths": "全部命途",
+ "btnReload": "🔄 重新載入",
+ "avatarsLoading": "正在獲取角色資料...",
+ "noAvatarsFound": "未找到符合條件的角色",
+ "eidolonLabel": "星魂:",
+ "confirmMaxAll": "確定將全部角色升至80級並解鎖滿魂E6嗎?",
+ "maxAllSuccess": "全角色養成滿級成功!",
+ "avatarRankSuccess": "已調整角色 {id} 為星魂 {rank}",
+ "eqLcTitle": "🗡️ 背包中的光錐",
+ "eqLcSubtitle": "來自 freesr-data.json 的所有光錐列表",
+ "eqLcLoading": "正在載入光錐資料...",
+ "eqRelicTitle": "🛡️ 背包中的遺器",
+ "eqRelicSubtitle": "來自 freesr-data.json 的所有遺器列表",
+ "eqRelicLoading": "正在載入遺器資料...",
+ "itemCount": "{n} 件",
+ "notEquipped": "未裝備",
+ "equippedBy": "裝備者",
+ "noLcData": "暫無光錐資料",
+ "noRelicData": "暫無遺器資料",
+ "persistentTitle": "💾 GaC 存檔管理",
+ "persistentBadge": "獨家自訂伺服器",
+ "persistentSubtitle": "persistent 存檔儲存 GaC 特有的玩家狀態(主角性別/屬性、三月七命途、全域開關等)",
+ "persistentTbM7Title": "👤 開拓者與三月七",
+ "lblTbGenderElement": "主角性別與屬性",
+ "lblM7Path": "三月七命途型態",
+ "btnSaveCharSettings": "💾 儲存主角設定",
+ "persistentGlobalTitle": "⚙️ GaC 特殊功能開關",
+ "swGlobalDesc": "開啟全服銀狼專屬機制",
+ "castoriceGlobalDesc": "開啟全服 Castorice 專屬機制",
+ "btnSaveGlobalSwitch": "💾 儲存全域開關",
+ "exrankTitle": "⚡ Ex-Rank 特殊技能系統",
+ "exrankSubtitle": "在 FreeSR 中開啟特定角色的 Ex-Rank 專屬天賦與強化機制(例如景元免疫受控、飲月、黃泉)",
+ "btnEnableAll": "開啟全部 Ex-Rank",
+ "btnDisableAll": "關閉全部 Ex-Rank",
+ "exrankToggleSuccess": "{name}: Ex-Rank 已{status}",
+ "exrankAllSuccess": "全角色 Ex-Rank 已{status}",
+ "enabled": "啟用",
+ "disabled": "停用",
+ "btnFreesr": "📄 freesr-data.json",
+ "btnPersistent": "💾 persistent 存檔",
+ "btnBeautify": "✨ 格式化 JSON",
+ "btnDownload": "📥 下載備份",
+ "btnUpload": "📤 上傳檔案",
+ "btnSaveServer": "💾 儲存至伺服器",
+ "jsonTip": "提示: 可直接修改原始 JSON 並點擊 '儲存至伺服器' 生效",
+ "jsonStatusReady": "就緒",
+ "jsonStatusOpening": "正在開啟: {name}",
+ "jsonSaveSuccess": "檔案 {name} 已成功儲存",
+ "jsonInvalid": "JSON 格式無效",
+ "apiSettingsTitle": "⚙️ API 閘道連線設定",
+ "apiSettingsSubtitle": "可根據您的 server.json 配置修改連接埠或 IP",
+ "lblServerMode": "伺服器模式",
+ "lblApiGatewayUrl": "REST API Gateway URL",
+ "lblPingInterval": "狀態檢測頻率 (秒)",
+ "btnSaveSettings": "💾 儲存設定",
+ "btnResetDefault": "恢復預設值",
+ "modalTitleCharEdit": "角色養成與配裝",
+ "modalBtnMaxAllChar": "⭐ 全部升至滿級",
+ "modalTabSkills": "⚡ 技能與行跡",
+ "modalTabStatus": "⚙️ 等級與星魂",
+ "modalTabLightcone": "🗡️ 光錐",
+ "modalSkillCombatTitle": "戰鬥技能等級",
+ "modalBtnMaxSkills": "⭐ 技能全滿 (10/10)",
+ "modalSkillBasic": "普攻",
+ "modalSkillSkill": "戰技",
+ "modalSkillUltra": "終結技",
+ "modalSkillTalent": "天賦",
+ "modalTracesTitle": "行跡與秘技",
+ "modalTraceTechnique": "⚡ 秘技 — 進入戰鬥前生效",
+ "traceA2": "🌟 額外能力 A2",
+ "traceA4": "🌟 額外能力 A4",
+ "traceA6": "🌟 額外能力 A6",
+ "traceStatNodes": "💎 全部屬性加成節點 (10個)",
+ "lblLevelRange": "角色等級 (1-80)",
+ "lblPromotionRange": "晉階等級 (0-6)",
+ "lblEidolonLevel": "星魂等級",
+ "btnResetE0": "重設 E0",
+ "btnMaxE6": "⭐ 滿魂 E6",
+ "modalEnergyTitle": "終結技能量",
+ "modalEnergy50": "設為 50%",
+ "modalEnergy100": "滿能量 100%",
+ "modalLcTitle": "裝備的光錐",
+ "modalBtnMaxLc": "⭐ 滿級滿疊光錐 (Lv.80 疊影5)",
+ "lblLcId": "光錐 ID",
+ "modalLcIdPlaceholder": "例如 21002 或 24001",
+ "lblLcLevel": "光錐等級 (1-80)",
+ "lblLcRank": "疊影階數 (S1-S5)",
+ "modalBtnClose": "✕ 關閉",
+ "modalBtnSave": "💾 儲存角色",
+ "pickerTitle": "選擇上陣角色",
+ "pickerSearchPlaceholder": "🔍 搜尋要加入隊伍的角色...",
+ "apiModalTitle": "⚙️ API 伺服器連線設定",
+ "btnCancel": "取消",
+ "btnSaveTest": "儲存並測試",
+ "toastSlotUpdated": "已更新欄位 {slot} 為: {name}",
+ "toastCharMaxed": "⭐ 已將 {name} 升至 Lv. 80 E6",
+ "toastCharSaved": "已儲存角色 {name}",
+ "toastAllSkillsMaxed": "⭐ 所有技能與行跡已升滿",
+ "toastServerSwitched": "已切換伺服器模式為: {mode}",
+ "tbOptions": {
+ "MalePhysical": "開拓者 (男) - 物理",
+ "FemalePhysical": "開拓者 (女) - 物理",
+ "MalePreservation": "開拓者 (男) - 火",
+ "FemalePreservation": "開拓者 (女) - 火",
+ "MaleHarmony": "開拓者 (男) - 同諧",
+ "FemaleHarmony": "開拓者 (女) - 同諧",
+ "MaleRemembrance": "開拓者 (男) - 記憶",
+ "FemaleRemembrance": "開拓者 (女) - 記憶"
},
- paths: {
- Destruction: "毀滅",
- Hunt: "巡獵",
- Erudition: "智識",
- Harmony: "同諧",
- Nihility: "虛無",
- Preservation: "存護",
- Abundance: "豐饒",
- Remembrance: "記憶",
- Unknown: "未知",
- Elation: "歡愉"
- }
+ "marchOptions": {
+ "MarchHunt": "三月七 - 巡獵",
+ "MarchPreservation": "三月七 - 存護"
+ },
+ "elements": {
+ "Physical": "物理",
+ "Fire": "火",
+ "Ice": "冰",
+ "Lightning": "雷",
+ "Wind": "風",
+ "Quantum": "量子",
+ "Imaginary": "虛數",
+ "Unknown": "未知"
+ },
+ "paths": {
+ "Destruction": "毀滅",
+ "Hunt": "巡獵",
+ "Erudition": "智識",
+ "Harmony": "同諧",
+ "Nihility": "虛無",
+ "Preservation": "存護",
+ "Abundance": "豐饒",
+ "Remembrance": "記憶",
+ "Unknown": "未知",
+ "Elation": "歡愉"
+ },
+ "settingsSaved": "設定已成功儲存!",
+ "settingsReset": "已恢復預設設定"
},
-
- ja: {
- appName: "GaC-Srtool",
- appSubtitle: "スターレイル FreeSR サーバーコントローラー",
- online: "オンライン (Online)",
- offline: "オフライン (Offline)",
- checking: "確認中...",
- refresh: "🔄 更新",
- connectFailed: "接続に失敗しました",
- tabDashboard: "📊 ダッシュボード",
- tabAvatars: "👥 キャラクター",
- tabExrank: "⚡ Ex-Rank (特殊能力)",
- tabTeleport: "🚀 ワープ",
- tabJson: "📝 JSON 管理",
- tabSettings: "⚙️ 設定とガイド",
- statAvatars: "所持キャラクター",
- statLightcones: "光円錐",
- statRelics: "遺物",
- serverStatusTitle: "📍 サーバー状態・現在地",
- quickActionsTitle: "⚡ クイックアクション",
- quickActionsSubtitle: "REST APIゲートウェイへ直接コマンド送信",
- btnMaxAll: "⭐ 全キャラLv.80・完凸 (E6)",
- btnWarpExpress: "🚂 星穹列車・客室へ即時ワープ",
- btnSyncPersistent: "💾 Persistent データを同期",
- currentLineupTitle: "🎮 現在の編成",
- slot: "枠",
- slotEmpty: "(空き)",
- coords: "座標 (X, Y, Z)",
- searchPlaceholder: "🔍 キャラ名またはIDで検索...",
- filterAllRarity: "全レアリティ",
- filter5Star: "★5 (SSR)",
- filter4Star: "★4 (SR)",
- btnReload: "🔄 再読込",
- eidolonLabel: "星魂 (凸数):",
- confirmMaxAll: "全キャラクターをLv.80・完凸にしますか?",
- maxAllSuccess: "全キャラクターを最大化しました!",
- avatarRankSuccess: "キャラ {id} を E{rank} に設定しました",
- exrankTitle: "⚡ Ex-Rank 特殊スキル設定",
- exrankSubtitle: "FreeSR独自のEx-Rank効果を有効化(景元の行動制限無効、丹恒・飲月、黄泉など)",
- btnEnableAll: "全Ex-Rank有効",
- btnDisableAll: "全Ex-Rank無効",
- exrankToggleSuccess: "{name}: Ex-Rank を{status}にしました",
- exrankAllSuccess: "全キャラ Ex-Rank を{status}にしました",
- enabled: "有効",
- disabled: "無効",
- presetsTitle: "📍 安全な定番ワープ地点",
- presetsSubtitle: "クリックでプレイヤーのシーンを即時移動",
- customTeleportTitle: "🎯 座標指定ワープ",
- customTeleportSubtitle: "PlaneID、FloorID、EntryIDおよび座標を指定",
- btnExecuteWarp: "🚀 ワープ実行",
- warpBtn: "🚀 移動",
- warpSuccess: "{label} へワープしました",
- warpFailed: "ワープ失敗: {err}",
- btnFreesr: "📄 freesr-data.json",
- btnPersistent: "💾 persistent (セーブ)",
- btnBeautify: "✨ JSON 整形",
- btnDownload: "📥 バックアップ保存",
- btnUpload: "📤 ファイル読込",
- btnSaveServer: "💾 サーバーへ保存",
- jsonTip: "ヒント: JSONを編集して「サーバーへ保存」を押すと即時反映されます",
- jsonStatusReady: "準備完了",
- jsonStatusOpening: "展開中: {name}",
- jsonSaveSuccess: "{name} を正常に保存しました",
- jsonInvalid: "無効なJSONフォーマットです",
- apiSettingsTitle: "⚙️ API ゲートウェイ接続設定",
- apiSettingsSubtitle: "server.jsonのポートまたはIPに合わせて変更可能",
- lblApiGatewayUrl: "REST API ゲートウェイ URL",
- lblPingInterval: "更新間隔 (秒)",
- btnSaveSettings: "💾 設定を保存",
- btnResetDefault: "初期値に戻す",
- hostGuideTitle: "🌐 GitHub Pages 無料ホスティング手順",
- hostGuideSubtitle: "サーバー費用ゼロでWeb上に公開可能",
- settingsSaved: "設定を保存しました!",
- settingsReset: "デフォルト設定に戻しました",
- elements: {
- Physical: "物理",
- Fire: "炎",
- Ice: "氷",
- Lightning: "雷",
- Wind: "風",
- Quantum: "量子",
- Imaginary: "虚数",
- Unknown: "不明"
+ "ja": {
+ "appName": "GaC-Srtool",
+ "appSubtitle": "スターレイル FreeSR & サーバーコントローラー",
+ "online": "接続完了",
+ "offline": "オフライン",
+ "checking": "確認中...",
+ "refresh": "🔄 更新",
+ "connectFailed": "接続失敗",
+ "tabDashboard": "📊 ダッシュボード・編成",
+ "tabAvatars": "👥 キャラクター",
+ "tabEquipment": "🗡️ 光円錐と遺物",
+ "tabPersistent": "💾 GaC セーブ管理",
+ "tabExrank": "⚡ Ex-Rank 特殊スキル",
+ "tabJson": "📝 JSON 管理",
+ "tabSettings": "⚙️ 設定",
+ "statAvatars": "所持キャラクター",
+ "statLightcones": "光円錐",
+ "statRelics": "遺物",
+ "serverStatusTitle": "📍 サーバー状態と現在座標",
+ "lblServerModeActive": "稼働中のサーバーモード",
+ "lblApiEndpoint": "API ゲートウェイエンドポイント",
+ "lblPlaneId": "マップ平面 (Plane ID)",
+ "lblFloorId": "フロア (Floor ID)",
+ "coords": "キャラクター座標 XYZ",
+ "quickActionsTitle": "⚡ クイック操作",
+ "quickActionsSubtitle": "サーバーへ即時コマンドを送信",
+ "btnMaxAll": "⭐ 全キャラ Lv.80 & 完凸E6にする",
+ "btnSyncPersistent": "💾 最新 Persistent データを同期",
+ "currentLineupTitle": "🎮 現在の編成",
+ "slot": "枠",
+ "slotEmpty": "空き (クリックして追加)",
+ "slotTooltip": "クリックしてこの枠にキャラクターを選択",
+ "removeFromTeam": "編成から外す",
+ "searchPlaceholder": "🔍 キャラ名またはIDで検索...",
+ "filterAllRarity": "すべてのレアリティ",
+ "filter5Star": "★5",
+ "filter4Star": "★4",
+ "filterAllElements": "すべての属性",
+ "filterAllPaths": "すべての運命",
+ "btnReload": "🔄 再読み込み",
+ "avatarsLoading": "キャラクターデータを読み込み中...",
+ "noAvatarsFound": "該当するキャラクターが見つかりません",
+ "eidolonLabel": "星魂:",
+ "confirmMaxAll": "全キャラクターをレベル80・星魂E6まで育成しますか?",
+ "maxAllSuccess": "全キャラクターの最大化が完了しました!",
+ "avatarRankSuccess": "キャラクター {id} を星魂 {rank} に変更しました",
+ "eqLcTitle": "🗡️ 所持光円錐一覧",
+ "eqLcSubtitle": "freesr-data.json からの全光円錐一覧",
+ "eqLcLoading": "光円錐データを読み込み中...",
+ "eqRelicTitle": "🛡️ 所持遺物一覧",
+ "eqRelicSubtitle": "freesr-data.json からの全遺物一覧",
+ "eqRelicLoading": "遺物データを読み込み中...",
+ "itemCount": "{n} 個",
+ "notEquipped": "未装備",
+ "equippedBy": "装備者",
+ "noLcData": "光円錐データがありません",
+ "noRelicData": "遺物データがありません",
+ "persistentTitle": "💾 GaC セーブ管理",
+ "persistentBadge": "専用カスタムサーバー",
+ "persistentSubtitle": "persistent ファイルには、開拓者の性別/属性、三月なのかの運命、グローバル機能スイッチなど GaC 専用設定が保存されます",
+ "persistentTbM7Title": "👤 開拓者 & 三月なのか",
+ "lblTbGenderElement": "開拓者の性別・属性",
+ "lblM7Path": "三月なのかの運命形態",
+ "btnSaveCharSettings": "💾 設定を保存",
+ "persistentGlobalTitle": "⚙️ GaC 特殊機能スイッチ",
+ "swGlobalDesc": "サーバー全体で銀狼の特殊機能を有効化",
+ "castoriceGlobalDesc": "サーバー全体で Castorice の特殊機能を有効化",
+ "btnSaveGlobalSwitch": "💾 グローバル設定を保存",
+ "exrankTitle": "⚡ Ex-Rank 特殊スキルシステム",
+ "exrankSubtitle": "FreeSR で特定キャラの Ex-Rank 専用天賦や特殊メカニクスを有効化(景元の行動制限無効、飲月、黄泉など)",
+ "btnEnableAll": "全 Ex-Rank を有効化",
+ "btnDisableAll": "全 Ex-Rank を無効化",
+ "exrankToggleSuccess": "{name}: Ex-Rank を{status}にしました",
+ "exrankAllSuccess": "全キャラの Ex-Rank を{status}にしました",
+ "enabled": "有効",
+ "disabled": "無効",
+ "btnFreesr": "📄 freesr-data.json",
+ "btnPersistent": "💾 persistent セーブ",
+ "btnBeautify": "✨ JSON を整形",
+ "btnDownload": "📥 バックアップ保存",
+ "btnUpload": "📤 ファイル読込",
+ "btnSaveServer": "💾 サーバーへ保存",
+ "jsonTip": "ヒント: 生の JSON を編集して「サーバーへ保存」で即時反映できます",
+ "jsonStatusReady": "準備完了",
+ "jsonStatusOpening": "読み込み中: {name}",
+ "jsonSaveSuccess": "{name} の保存に成功しました",
+ "jsonInvalid": "無効な JSON 形式です",
+ "apiSettingsTitle": "⚙️ API ゲートウェイ接続設定",
+ "apiSettingsSubtitle": "server.json に合わせてポートやIPを変更できます",
+ "lblServerMode": "サーバーモード",
+ "lblApiGatewayUrl": "REST API Gateway URL",
+ "lblPingInterval": "ヘルスチェック頻度 (秒)",
+ "btnSaveSettings": "💾 設定を保存",
+ "btnResetDefault": "デフォルトに戻す",
+ "modalTitleCharEdit": "キャラクター育成・カスタマイズ",
+ "modalBtnMaxAllChar": "⭐ すべてMAXにする",
+ "modalTabSkills": "⚡ スキルと軌跡",
+ "modalTabStatus": "⚙️ レベル & 星魂",
+ "modalTabLightcone": "🗡️ 光円錐",
+ "modalSkillCombatTitle": "戦闘スキルレベル",
+ "modalBtnMaxSkills": "⭐ スキル全MAX (10/10)",
+ "modalSkillBasic": "通常攻撃",
+ "modalSkillSkill": "戦闘スキル",
+ "modalSkillUltra": "必殺技",
+ "modalSkillTalent": "天賦",
+ "modalTracesTitle": "軌跡と秘技",
+ "modalTraceTechnique": "⚡ 秘技 — 戦闘突入前に有効化",
+ "traceA2": "🌟 追加能力 A2",
+ "traceA4": "🌟 追加能力 A4",
+ "traceA6": "🌟 追加能力 A6",
+ "traceStatNodes": "💎 全ステータスボーナス (10個)",
+ "lblLevelRange": "レベル (1-80)",
+ "lblPromotionRange": "昇格段階 (0-6)",
+ "lblEidolonLevel": "星魂段階",
+ "btnResetE0": "E0にリセット",
+ "btnMaxE6": "⭐ 完凸 E6",
+ "modalEnergyTitle": "必殺技EP",
+ "modalEnergy50": "50% に設定",
+ "modalEnergy100": "100% (MAX)",
+ "modalLcTitle": "装備中の光円錐",
+ "modalBtnMaxLc": "⭐ 光円錐MAX (Lv.80 重畳5)",
+ "lblLcId": "光円錐 ID",
+ "modalLcIdPlaceholder": "例: 21002 または 24001",
+ "lblLcLevel": "光円錐レベル (1-80)",
+ "lblLcRank": "重畳段階 (S1-S5)",
+ "modalBtnClose": "✕ 閉じる",
+ "modalBtnSave": "💾 キャラクター保存",
+ "pickerTitle": "編成キャラクターを選択",
+ "pickerSearchPlaceholder": "🔍 編成するキャラクターを検索...",
+ "apiModalTitle": "⚙️ API サーバー接続設定",
+ "btnCancel": "キャンセル",
+ "btnSaveTest": "保存 & テスト",
+ "toastSlotUpdated": "枠 {slot} を {name} に更新しました",
+ "toastCharMaxed": "⭐ {name} を Lv.80 E6 に育成完了",
+ "toastCharSaved": "{name} の設定を保存しました",
+ "toastAllSkillsMaxed": "⭐ 全スキルと軌跡を最大化しました",
+ "toastServerSwitched": "サーバーモードを {mode} に切り替えました",
+ "tbOptions": {
+ "MalePhysical": "開拓者 (男) - 物理",
+ "FemalePhysical": "開拓者 (女) - 物理",
+ "MalePreservation": "開拓者 (男) - 炎",
+ "FemalePreservation": "開拓者 (女) - 炎",
+ "MaleHarmony": "開拓者 (男) - 調和",
+ "FemaleHarmony": "開拓者 (女) - 調和",
+ "MaleRemembrance": "開拓者 (男) - 記憶",
+ "FemaleRemembrance": "開拓者 (女) - 記憶"
},
- paths: {
- Destruction: "壊滅",
- Hunt: "巡狩",
- Erudition: "知恵",
- Harmony: "調和",
- Nihility: "虚無",
- Preservation: "存護",
- Abundance: "豊穣",
- Remembrance: "記憶",
- Unknown: "不明",
- Elation: "愉悦"
- }
+ "marchOptions": {
+ "MarchHunt": "三月なのか - 巡狩",
+ "MarchPreservation": "三月なのか - 存護"
+ },
+ "elements": {
+ "Physical": "物理",
+ "Fire": "炎",
+ "Ice": "氷",
+ "Lightning": "雷",
+ "Wind": "風",
+ "Quantum": "量子",
+ "Imaginary": "虚数",
+ "Unknown": "不明"
+ },
+ "paths": {
+ "Destruction": "壊滅",
+ "Hunt": "巡狩",
+ "Erudition": "知恵",
+ "Harmony": "調和",
+ "Nihility": "虚無",
+ "Preservation": "存護",
+ "Abundance": "豊穣",
+ "Remembrance": "記憶",
+ "Unknown": "不明",
+ "Elation": "愉悦"
+ },
+ "settingsSaved": "設定を保存しました!",
+ "settingsReset": "デフォルト設定に戻しました"
},
-
- ko: {
- appName: "GaC-Srtool",
- appSubtitle: "스타레일 FreeSR 서버 컨트롤러",
- online: "온라인 (Online)",
- offline: "오프라인 (Offline)",
- checking: "확인 중...",
- refresh: "🔄 새로고침",
- connectFailed: "연결 실패",
- tabDashboard: "📊 대시보드",
- tabAvatars: "👥 캐릭터",
- tabExrank: "⚡ Ex-Rank (특수 스킬)",
- tabTeleport: "🚀 워프 (이동)",
- tabJson: "📝 JSON 관리",
- tabSettings: "⚙️ 설정 및 안내",
- statAvatars: "보유 캐릭터",
- statLightcones: "광추",
- statRelics: "유물",
- serverStatusTitle: "📍 서버 상태 및 현재 위치",
- quickActionsTitle: "⚡ 빠른 작업",
- quickActionsSubtitle: "REST API 게이트웨이로 즉시 명령 전송",
- btnMaxAll: "⭐ 전체 캐릭터 80레벨 & 6돌 (풀돌)",
- btnWarpExpress: "🚂 은하열차 객실로 즉시 워프",
- btnSyncPersistent: "💾 Persistent 세이브 동기화",
- currentLineupTitle: "🎮 현재 파티",
- slot: "슬롯",
- slotEmpty: "(비어있음)",
- coords: "좌표 (X, Y, Z)",
- searchPlaceholder: "🔍 캐릭터 이름 또는 ID 검색...",
- filterAllRarity: "모든 등급",
- filter5Star: "5성 (SSR)",
- filter4Star: "4성 (SR)",
- btnReload: "🔄 다시 로드",
- eidolonLabel: "성혼 (돌파):",
- confirmMaxAll: "모든 캐릭터를 80레벨 및 6돌파로 설정하시겠습니까?",
- maxAllSuccess: "모든 캐릭터 강화 완료!",
- avatarRankSuccess: "캐릭터 {id} 성혼을 E{rank}로 설정했습니다",
- exrankTitle: "⚡ Ex-Rank 특수 스킬 시스템",
- exrankSubtitle: "FreeSR 전용 Ex-Rank 특권 활성화 (경원 제어 무시, 단항·음월, 아케론 등)",
- btnEnableAll: "모든 Ex-Rank 활성화",
- btnDisableAll: "모든 Ex-Rank 비활성화",
- exrankToggleSuccess: "{name}: Ex-Rank {status}",
- exrankAllSuccess: "모든 캐릭터 Ex-Rank {status}",
- enabled: "활성화됨",
- disabled: "비활성화됨",
- presetsTitle: "📍 안전한 주요 워프 지점",
- presetsSubtitle: "클릭 시 즉시 플레이어 위치 이동 및 저장",
- customTeleportTitle: "🎯 커스텀 좌표 워프",
- customTeleportSubtitle: "PlaneID, FloorID, EntryID 및 좌표 지정",
- btnExecuteWarp: "🚀 워프 실행",
- warpBtn: "🚀 이동",
- warpSuccess: "{label} (으)로 이동 완료",
- warpFailed: "워프 실패: {err}",
- btnFreesr: "📄 freesr-data.json",
- btnPersistent: "💾 persistent (세이브)",
- btnBeautify: "✨ JSON 정리",
- btnDownload: "📥 백업 다운로드",
- btnUpload: "📤 파일 불러오기",
- btnSaveServer: "💾 서버에 저장",
- jsonTip: "팁: JSON 편집 후 '서버에 저장'을 누르면 즉시 적용됩니다",
- jsonStatusReady: "준비됨",
- jsonStatusOpening: "열기: {name}",
- jsonSaveSuccess: "{name} 저장 완료",
- jsonInvalid: "올바르지 않은 JSON 형식입니다",
- apiSettingsTitle: "⚙️ API 게이트웨이 연결 설정",
- apiSettingsSubtitle: "server.json 설정에 맞추어 포트 및 IP 수정 가능",
- lblApiGatewayUrl: "REST API 게이트웨이 URL",
- lblPingInterval: "상태 확인 주기 (초)",
- btnSaveSettings: "💾 설정 저장",
- btnResetDefault: "기본값 초기화",
- hostGuideTitle: "🌐 GitHub Pages 무료 배포 안내 (100% 무료)",
- hostGuideSubtitle: "서버 비용 없이 GitHub에서 글로벌 호스팅 가능",
- settingsSaved: "설정이 저장되었습니다!",
- settingsReset: "기본값으로 복원되었습니다",
- elements: {
- Physical: "물리",
- Fire: "화염",
- Ice: "얼음",
- Lightning: "번개",
- Wind: "바람",
- Quantum: "양자",
- Imaginary: "허수",
- Unknown: "알 수 없음"
+ "ko": {
+ "appName": "GaC-Srtool",
+ "appSubtitle": "스타레일 FreeSR & 서버 컨트롤러",
+ "online": "연결됨",
+ "offline": "오프라인",
+ "checking": "확인 중...",
+ "refresh": "🔄 새로고침",
+ "connectFailed": "연결 실패",
+ "tabDashboard": "📊 대시보드 및 파티",
+ "tabAvatars": "👥 캐릭터",
+ "tabEquipment": "🗡️ 광추 및 유물",
+ "tabPersistent": "💾 GaC 세이브 관리",
+ "tabExrank": "⚡ Ex-Rank 특수 스킬",
+ "tabJson": "📝 JSON 관리",
+ "tabSettings": "⚙️ 설정",
+ "statAvatars": "보유 캐릭터",
+ "statLightcones": "광추",
+ "statRelics": "유물",
+ "serverStatusTitle": "📍 서버 상태 및 현재 좌표",
+ "lblServerModeActive": "활성 서버 모드",
+ "lblApiEndpoint": "API 게이트웨이 엔드포인트",
+ "lblPlaneId": "플레인 ID",
+ "lblFloorId": "층 ID",
+ "coords": "캐릭터 좌표 XYZ",
+ "quickActionsTitle": "⚡ 빠른 작업",
+ "quickActionsSubtitle": "서버로 즉시 명령 전송",
+ "btnMaxAll": "⭐ 모든 캐릭터 80레벨 및 6성흔 달성",
+ "btnSyncPersistent": "💾 최신 Persistent 데이터 동기화",
+ "currentLineupTitle": "🎮 현재 파티",
+ "slot": "슬롯",
+ "slotEmpty": "비어 있음 (클릭하여 추가)",
+ "slotTooltip": "이 슬롯에 캐릭터를 선택하려면 클릭",
+ "removeFromTeam": "파티에서 제거",
+ "searchPlaceholder": "🔍 캐릭터 이름 또는 ID 검색...",
+ "filterAllRarity": "모든 희귀도",
+ "filter5Star": "5성",
+ "filter4Star": "4성",
+ "filterAllElements": "모든 속성",
+ "filterAllPaths": "모든 운명의 길",
+ "btnReload": "🔄 다시 로드",
+ "avatarsLoading": "캐릭터 데이터를 불러오는 중...",
+ "noAvatarsFound": "조건에 맞는 캐릭터가 없습니다",
+ "eidolonLabel": "성흔:",
+ "confirmMaxAll": "모든 캐릭터를 레벨 80 및 성흔 6으로 육성하시겠습니까?",
+ "maxAllSuccess": "모든 캐릭터 최대치 달성 완료!",
+ "avatarRankSuccess": "캐릭터 {id} 성흔을 {rank}(으)로 변경했습니다",
+ "eqLcTitle": "🗡️ 보유 광추 목록",
+ "eqLcSubtitle": "freesr-data.json의 모든 광추 목록",
+ "eqLcLoading": "광추 데이터 불러오는 중...",
+ "eqRelicTitle": "🛡️ 보유 유물 목록",
+ "eqRelicSubtitle": "freesr-data.json의 모든 유물 목록",
+ "eqRelicLoading": "유물 데이터 불러오는 중...",
+ "itemCount": "{n}개",
+ "notEquipped": "미장착",
+ "equippedBy": "장착 캐릭터",
+ "noLcData": "광추 데이터가 없습니다",
+ "noRelicData": "유물 데이터가 없습니다",
+ "persistentTitle": "💾 GaC 세이브 관리",
+ "persistentBadge": "자체 커스텀 서버",
+ "persistentSubtitle": "persistent 파일은 개척자 성별/속성, Mar. 7th 운명의 길, 전역 기능 스위치 등 GaC 전용 설정을 저장합니다",
+ "persistentTbM7Title": "👤 개척자 & Mar. 7th",
+ "lblTbGenderElement": "개척자 성별 및 속성",
+ "lblM7Path": "Mar. 7th 운명의 길 형태",
+ "btnSaveCharSettings": "💾 캐릭터 설정 저장",
+ "persistentGlobalTitle": "⚙️ GaC 특수 기능 스위치",
+ "swGlobalDesc": "서버 전체 은랑 특수 메커니즘 활성화",
+ "castoriceGlobalDesc": "서버 전체 Castorice 특수 메커니즘 활성화",
+ "btnSaveGlobalSwitch": "💾 전역 스위치 저장",
+ "exrankTitle": "⚡ Ex-Rank 특수 스킬 시스템",
+ "exrankSubtitle": "FreeSR에서 특정 캐릭터의 Ex-Rank 특성 활성화 (경원 제어 면역, 단항 음월, 아케론 등)",
+ "btnEnableAll": "모든 Ex-Rank 활성화",
+ "btnDisableAll": "모든 Ex-Rank 비활성화",
+ "exrankToggleSuccess": "{name}: Ex-Rank {status}",
+ "exrankAllSuccess": "모든 캐릭터 Ex-Rank {status}",
+ "enabled": "활성화됨",
+ "disabled": "비활성화됨",
+ "btnFreesr": "📄 freesr-data.json",
+ "btnPersistent": "💾 persistent 파일",
+ "btnBeautify": "✨ JSON 정리",
+ "btnDownload": "📥 백업 다운로드",
+ "btnUpload": "📤 파일 업로드",
+ "btnSaveServer": "💾 서버에 저장",
+ "jsonTip": "팁: 원본 JSON을 직접 수정한 후 '서버에 저장'을 누르면 즉시 적용됩니다",
+ "jsonStatusReady": "준비 완료",
+ "jsonStatusOpening": "열기 중: {name}",
+ "jsonSaveSuccess": "{name} 파일이 저장되었습니다",
+ "jsonInvalid": "올바르지 않은 JSON 형식입니다",
+ "apiSettingsTitle": "⚙️ API 게이트웨이 연결 설정",
+ "apiSettingsSubtitle": "server.json에 맞춰 포트 및 IP 변경 가능",
+ "lblServerMode": "서버 모드",
+ "lblApiGatewayUrl": "REST API Gateway URL",
+ "lblPingInterval": "상태 확인 간격 (초)",
+ "btnSaveSettings": "💾 설정 저장",
+ "btnResetDefault": "기본값 복원",
+ "modalTitleCharEdit": "캐릭터 육성 및 세팅",
+ "modalBtnMaxAllChar": "⭐ 모두 최대치로 육성",
+ "modalTabSkills": "⚡ 스킬 및 행적",
+ "modalTabStatus": "⚙️ 레벨 & 성흔",
+ "modalTabLightcone": "🗡️ 광추",
+ "modalSkillCombatTitle": "전투 스킬 레벨",
+ "modalBtnMaxSkills": "⭐ 모든 스킬 최대치 (10/10)",
+ "modalSkillBasic": "일반 공격",
+ "modalSkillSkill": "전투 스킬",
+ "modalSkillUltra": "필살기",
+ "modalSkillTalent": "특성",
+ "modalTracesTitle": "행적 및 비술",
+ "modalTraceTechnique": "⚡ 비술 — 전투 진입 전 활성화",
+ "traceA2": "🌟 추가 능력 A2",
+ "traceA4": "🌟 추가 능력 A4",
+ "traceA6": "🌟 추가 능력 A6",
+ "traceStatNodes": "💎 모든 스탯 보너스 노드 (10개)",
+ "lblLevelRange": "레벨 (1-80)",
+ "lblPromotionRange": "승급 단계 (0-6)",
+ "lblEidolonLevel": "성흔 레벨",
+ "btnResetE0": "E0 초기화",
+ "btnMaxE6": "⭐ 풀성흔 E6",
+ "modalEnergyTitle": "필살기 에너지",
+ "modalEnergy50": "50% 설정",
+ "modalEnergy100": "100% 충전",
+ "modalLcTitle": "장착된 광추",
+ "modalBtnMaxLc": "⭐ 광추 최대치 (80레벨 중첩5)",
+ "lblLcId": "광추 ID",
+ "modalLcIdPlaceholder": "예: 21002 또는 24001",
+ "lblLcLevel": "광추 레벨 (1-80)",
+ "lblLcRank": "중첩 단계 (S1-S5)",
+ "modalBtnClose": "✕ 닫기",
+ "modalBtnSave": "💾 캐릭터 저장",
+ "pickerTitle": "파티 배치 캐릭터 선택",
+ "pickerSearchPlaceholder": "🔍 배치할 캐릭터 검색...",
+ "apiModalTitle": "⚙️ API 서버 연결 설정",
+ "btnCancel": "취소",
+ "btnSaveTest": "저장 및 테스트",
+ "toastSlotUpdated": "{slot}번 슬롯을 {name}(으)로 업데이트했습니다",
+ "toastCharMaxed": "⭐ {name}을(를) 80레벨 6성흔으로 육성 완료",
+ "toastCharSaved": "{name} 캐릭터 저장 완료",
+ "toastAllSkillsMaxed": "⭐ 모든 스킬과 행적이 최대치로 설정되었습니다",
+ "toastServerSwitched": "서버 모드를 {mode}(으)로 변경했습니다",
+ "tbOptions": {
+ "MalePhysical": "개척자 (남) - 물리",
+ "FemalePhysical": "개척자 (여) - 물리",
+ "MalePreservation": "개척자 (남) - 화염",
+ "FemalePreservation": "개척자 (여) - 화염",
+ "MaleHarmony": "개척자 (남) - 화합",
+ "FemaleHarmony": "개척자 (여) - 화합",
+ "MaleRemembrance": "개척자 (남) - 기억",
+ "FemaleRemembrance": "개척자 (여) - 기억"
},
- paths: {
- Destruction: "파멸",
- Hunt: "수렵",
- Erudition: "지식",
- Harmony: "화합",
- Nihility: "공허",
- Preservation: "보존",
- Abundance: "풍요",
- Remembrance: "기억",
- Unknown: "알 수 없음",
- Elation: "환락"
- }
+ "marchOptions": {
+ "MarchHunt": "Mar. 7th - 수렵",
+ "MarchPreservation": "Mar. 7th - 보존"
+ },
+ "elements": {
+ "Physical": "물리",
+ "Fire": "화염",
+ "Ice": "얼음",
+ "Lightning": "번개",
+ "Wind": "바람",
+ "Quantum": "양자",
+ "Imaginary": "허수",
+ "Unknown": "미확인"
+ },
+ "paths": {
+ "Destruction": "파멸",
+ "Hunt": "수렵",
+ "Erudition": "지식",
+ "Harmony": "화합",
+ "Nihility": "공허",
+ "Preservation": "보존",
+ "Abundance": "풍요",
+ "Remembrance": "기억",
+ "Unknown": "미확인",
+ "Elation": "환락"
+ },
+ "settingsSaved": "설정이 저장되었습니다!",
+ "settingsReset": "기본 설정으로 복원되었습니다"
},
-
- vi: {
- appName: "GaC-Srtool",
- appSubtitle: "Bảng điều khiển Star Rail FreeSR",
- online: "Trực tuyến (Online)",
- offline: "Ngoại tuyến (Offline)",
- checking: "Đang kiểm tra...",
- refresh: "🔄 Làm mới",
- connectFailed: "Kết nối thất bại",
- tabDashboard: "📊 Tổng quan",
- tabAvatars: "👥 Nhân vật",
- tabExrank: "⚡ Kỹ năng Ex-Rank",
- tabTeleport: "🚀 Dịch chuyển",
- tabJson: "📝 Quản lý JSON",
- tabSettings: "⚙️ Cài đặt & Hướng dẫn",
- statAvatars: "Nhân vật sở hữu",
- statLightcones: "Nón Ánh Sáng",
- statRelics: "Di Vật",
- serverStatusTitle: "📍 Trạng thái máy chủ & Vị trí",
- quickActionsTitle: "⚡ Thao tác nhanh",
- quickActionsSubtitle: "Gửi lệnh trực tiếp đến API Gateway",
- btnMaxAll: "⭐ Tối đa cấp 80 & Tinh Hồn 6 (E6)",
- btnWarpExpress: "🚂 Về Đội Tàu Astral",
- btnSyncPersistent: "💾 Đồng bộ dữ liệu lưu trữ",
- currentLineupTitle: "🎮 Đội hình hiện tại",
- slot: "Vị trí",
- slotEmpty: "(Trống)",
- coords: "Tọa độ (X, Y, Z)",
- searchPlaceholder: "🔍 Tìm tên hoặc ID nhân vật...",
- filterAllRarity: "Tất cả độ hiếm",
- filter5Star: "5 Sao (SSR)",
- filter4Star: "4 Sao (SR)",
- btnReload: "🔄 Tải lại",
- eidolonLabel: "TINH HỒN (E):",
- confirmMaxAll: "Nâng cấp tất cả nhân vật lên cấp 80 và E6?",
- maxAllSuccess: "Tối đa hóa tất cả nhân vật thành công!",
- avatarRankSuccess: "Đã cập nhật nhân vật {id} thành E{rank}",
- exrankTitle: "⚡ Hệ thống Ex-Rank",
- exrankSubtitle: "Bật đặc quyền Ex-Rank trong FreeSR (Cảnh Nguyên kháng khống chế, Đan Hằng Ẩm Nguyệt, Acheron)",
- btnEnableAll: "Bật tất cả Ex-Rank",
- btnDisableAll: "Tắt tất cả Ex-Rank",
- exrankToggleSuccess: "{name}: Đã {status} Ex-Rank",
- exrankAllSuccess: "Tất cả nhân vật đã {status} Ex-Rank",
- enabled: "bật",
- disabled: "tắt",
- presetsTitle: "📍 Điểm dịch chuyển an toàn",
- presetsSubtitle: "Nhấp để dịch chuyển vị trí người chơi ngay lập tức",
- customTeleportTitle: "🎯 Tự nhập tọa độ dịch chuyển",
- customTeleportSubtitle: "Nhập PlaneID, FloorID, EntryID và tọa độ",
- btnExecuteWarp: "🚀 Bắt đầu dịch chuyển",
- warpBtn: "🚀 Đi",
- warpSuccess: "Dịch chuyển đến {label} thành công",
- warpFailed: "Dịch chuyển thất bại: {err}",
- btnFreesr: "📄 freesr-data.json",
- btnPersistent: "💾 persistent",
- btnBeautify: "✨ Làm đẹp JSON",
- btnDownload: "📥 Tải bản sao lưu",
- btnUpload: "📤 Tải lên tệp",
- btnSaveServer: "💾 Lưu vào máy chủ",
- jsonTip: "Mẹo: Chỉnh sửa JSON và nhấn 'Lưu vào máy chủ' để áp dụng ngay",
- jsonStatusReady: "Sẵn sàng",
- jsonStatusOpening: "Đang mở: {name}",
- jsonSaveSuccess: "Lưu tệp {name} thành công",
- jsonInvalid: "Định dạng JSON không hợp lệ",
- apiSettingsTitle: "⚙️ Cấu hình kết nối API Gateway",
- apiSettingsSubtitle: "Điều chỉnh cổng hoặc IP theo tệp server.json",
- lblApiGatewayUrl: "URL REST API Gateway",
- lblPingInterval: "Tần suất kiểm tra (giây)",
- btnSaveSettings: "💾 Lưu cài đặt",
- btnResetDefault: "Khôi phục mặc định",
- hostGuideTitle: "🌐 Cách lưu trữ trên GitHub Pages (Miễn phí 100%)",
- hostGuideSubtitle: "Lưu trữ bảng điều khiển miễn phí trọn đời trên GitHub",
- settingsSaved: "Đã lưu cài đặt!",
- settingsReset: "Đã khôi phục cài đặt mặc định",
- elements: {
- Physical: "Vật Lý",
- Fire: "Hỏa",
- Ice: "Băng",
- Lightning: "Lôi",
- Wind: "Phong",
- Quantum: "Lượng Tử",
- Imaginary: "Số Ảo",
- Unknown: "Không xác định"
+ "vi": {
+ "appName": "GaC-Srtool",
+ "appSubtitle": "Bộ điều khiển máy chủ & FreeSR Star Rail",
+ "online": "Đã kết nối",
+ "offline": "Ngoại tuyến",
+ "checking": "Đang kiểm tra...",
+ "refresh": "🔄 Làm mới",
+ "connectFailed": "Kết nối thất bại",
+ "tabDashboard": "📊 Tổng quan & Đội hình",
+ "tabAvatars": "👥 Nhân vật",
+ "tabEquipment": "🗡️ Nón Ánh Sáng & Di Vật",
+ "tabPersistent": "💾 Quản lý lưu GaC",
+ "tabExrank": "⚡ Kỹ Năng Ex-Rank",
+ "tabJson": "📝 Quản lý JSON",
+ "tabSettings": "⚙️ Cài đặt",
+ "statAvatars": "Nhân vật sở hữu",
+ "statLightcones": "Nón Ánh Sáng",
+ "statRelics": "Di Vật",
+ "serverStatusTitle": "📍 Trạng thái máy chủ & Tọa độ",
+ "lblServerModeActive": "Chế độ máy chủ hoạt động",
+ "lblApiEndpoint": "Điểm cuối API Gateway",
+ "lblPlaneId": "Plane ID",
+ "lblFloorId": "Floor ID",
+ "coords": "Tọa độ nhân vật XYZ",
+ "quickActionsTitle": "⚡ Thao tác nhanh",
+ "quickActionsSubtitle": "Gửi lệnh đến máy chủ ngay lập tức",
+ "btnMaxAll": "⭐ Đạt cấp 80 & E6 tất cả nhân vật",
+ "btnSyncPersistent": "💾 Đồng bộ tệp lưu Persistent mới nhất",
+ "currentLineupTitle": "🎮 Đội hình hiện tại",
+ "slot": "Vị trí",
+ "slotEmpty": "Trống (Nhấp để thêm)",
+ "slotTooltip": "Nhấp để chọn nhân vật cho vị trí này",
+ "removeFromTeam": "Xóa khỏi đội",
+ "searchPlaceholder": "🔍 Tìm kiếm nhân vật hoặc ID...",
+ "filterAllRarity": "Tất cả độ hiếm",
+ "filter5Star": "5 Sao",
+ "filter4Star": "4 Sao",
+ "filterAllElements": "Tất cả thuộc tính",
+ "filterAllPaths": "Tất cả Vận Mệnh",
+ "btnReload": "🔄 Tải lại",
+ "avatarsLoading": "Đang tải dữ liệu nhân vật...",
+ "noAvatarsFound": "Không tìm thấy nhân vật phù hợp",
+ "eidolonLabel": "Tinh Hồn:",
+ "confirmMaxAll": "Nâng cấp tất cả nhân vật lên Cấp 80 và Tinh Hồn 6?",
+ "maxAllSuccess": "Tối đa tất cả nhân vật thành công!",
+ "avatarRankSuccess": "Đã chỉnh nhân vật {id} thành Tinh Hồn {rank}",
+ "eqLcTitle": "🗡️ Nón Ánh Sáng trong kho",
+ "eqLcSubtitle": "Tất cả Nón Ánh Sáng từ freesr-data.json",
+ "eqLcLoading": "Đang tải dữ liệu Nón Ánh Sáng...",
+ "eqRelicTitle": "🛡️ Di Vật trong kho",
+ "eqRelicSubtitle": "Tất cả Di Vật từ freesr-data.json",
+ "eqRelicLoading": "Đang tải dữ liệu Di Vật...",
+ "itemCount": "{n} món",
+ "notEquipped": "Chưa trang bị",
+ "equippedBy": "Trang bị bởi",
+ "noLcData": "Chưa có dữ liệu Nón Ánh Sáng",
+ "noRelicData": "Chưa có dữ liệu Di Vật",
+ "persistentTitle": "💾 Quản lý lưu GaC",
+ "persistentBadge": "Máy chủ tùy chỉnh độc quyền",
+ "persistentSubtitle": "Tệp persistent lưu trữ trạng thái người chơi của GaC như giới tính/thuộc tính nhân vật chính, March 7th, công tắc toàn cục",
+ "persistentTbM7Title": "👤 Nhà Khai Phá & March 7th",
+ "lblTbGenderElement": "Giới tính & Thuộc tính nhân vật chính",
+ "lblM7Path": "Dạng Vận Mệnh của March 7th",
+ "btnSaveCharSettings": "💾 Lưu cài đặt nhân vật",
+ "persistentGlobalTitle": "⚙️ Công tắc tính năng đặc biệt GaC",
+ "swGlobalDesc": "Bật cơ chế Silver Wolf toàn máy chủ",
+ "castoriceGlobalDesc": "Bật cơ chế Castorice toàn máy chủ",
+ "btnSaveGlobalSwitch": "💾 Lưu công tắc toàn cục",
+ "exrankTitle": "⚡ Hệ thống kỹ năng Ex-Rank",
+ "exrankSubtitle": "Kích hoạt thiên phú và đặc quyền Ex-Rank trong FreeSR (ví dụ: Jing Yuan kháng khống chế, Dan Heng IL, Acheron)",
+ "btnEnableAll": "Bật tất cả Ex-Rank",
+ "btnDisableAll": "Tắt tất cả Ex-Rank",
+ "exrankToggleSuccess": "{name}: Ex-Rank {status}",
+ "exrankAllSuccess": "Tất cả nhân vật Ex-Rank {status}",
+ "enabled": "đã bật",
+ "disabled": "đã tắt",
+ "btnFreesr": "📄 freesr-data.json",
+ "btnPersistent": "💾 persistent",
+ "btnBeautify": "✨ Định dạng JSON",
+ "btnDownload": "📥 Tải xuống Backup",
+ "btnUpload": "📤 Tải lên tệp",
+ "btnSaveServer": "💾 Lưu vào máy chủ",
+ "jsonTip": "Mẹo: Chỉnh sửa trực tiếp JSON và nhấn 'Lưu vào máy chủ'",
+ "jsonStatusReady": "Sẵn sàng",
+ "jsonStatusOpening": "Đang mở: {name}",
+ "jsonSaveSuccess": "Lưu tệp {name} thành công",
+ "jsonInvalid": "Định dạng JSON không hợp lệ",
+ "apiSettingsTitle": "⚙️ Cài đặt kết nối API Gateway",
+ "apiSettingsSubtitle": "Điều chỉnh cổng hoặc IP theo server.json của bạn",
+ "lblServerMode": "Chế độ máy chủ",
+ "lblApiGatewayUrl": "URL REST API Gateway",
+ "lblPingInterval": "Tần suất kiểm tra (giây)",
+ "btnSaveSettings": "💾 Lưu cài đặt",
+ "btnResetDefault": "Khôi phục mặc định",
+ "modalTitleCharEdit": "Tùy chỉnh nhân vật",
+ "modalBtnMaxAllChar": "⭐ Nâng tối đa tất cả",
+ "modalTabSkills": "⚡ Kỹ Năng & Vết Tích",
+ "modalTabStatus": "⚙️ Cấp & Tinh Hồn",
+ "modalTabLightcone": "🗡️ Nón Ánh Sáng",
+ "modalSkillCombatTitle": "Cấp kỹ năng chiến đấu",
+ "modalBtnMaxSkills": "⭐ Tối đa kỹ năng (10/10)",
+ "modalSkillBasic": "Tấn Công Thường",
+ "modalSkillSkill": "Chiến Kỹ",
+ "modalSkillUltra": "Tuyệt Kỹ",
+ "modalSkillTalent": "Thiên Phú",
+ "modalTracesTitle": "Vết Tích & Bí Kỹ",
+ "modalTraceTechnique": "⚡ Bí Kỹ — Kích hoạt trước trận",
+ "traceA2": "🌟 Vết Tích Phụ A2",
+ "traceA4": "🌟 Vết Tích Phụ A4",
+ "traceA6": "🌟 Vết Tích Phụ A6",
+ "traceStatNodes": "💎 Tất cả nhánh tăng chỉ số (10 nhánh)",
+ "lblLevelRange": "Cấp độ (1-80)",
+ "lblPromotionRange": "Đột phá (0-6)",
+ "lblEidolonLevel": "Cấp Tinh Hồn",
+ "btnResetE0": "Đặt lại E0",
+ "btnMaxE6": "⭐ Tối đa E6",
+ "modalEnergyTitle": "Năng lượng Tuyệt Kỹ",
+ "modalEnergy50": "Đặt 50%",
+ "modalEnergy100": "Đầy 100%",
+ "modalLcTitle": "Nón Ánh Sáng đã trang bị",
+ "modalBtnMaxLc": "⭐ Tối đa Nón Ánh Sáng (Lv.80 S5)",
+ "lblLcId": "ID Nón Ánh Sáng",
+ "modalLcIdPlaceholder": "VD: 21002 hoặc 24001",
+ "lblLcLevel": "Cấp Nón Ánh Sáng (1-80)",
+ "lblLcRank": "Bậc Tích Lũy (S1-S5)",
+ "modalBtnClose": "✕ Đóng",
+ "modalBtnSave": "💾 Lưu nhân vật",
+ "pickerTitle": "Chọn nhân vật vào đội hình",
+ "pickerSearchPlaceholder": "🔍 Tìm kiếm nhân vật để thêm...",
+ "apiModalTitle": "⚙️ Cài đặt kết nối máy chủ API",
+ "btnCancel": "Hủy",
+ "btnSaveTest": "Lưu & Kiểm tra",
+ "toastSlotUpdated": "Đã cập nhật vị trí {slot} thành: {name}",
+ "toastCharMaxed": "⭐ Đã nâng {name} lên Lv. 80 E6",
+ "toastCharSaved": "Đã lưu nhân vật {name}",
+ "toastAllSkillsMaxed": "⭐ Đã nâng tối đa kỹ năng và vết tích",
+ "toastServerSwitched": "Đã chuyển chế độ máy chủ sang: {mode}",
+ "tbOptions": {
+ "MalePhysical": "Nhà Khai Phá (Nam) - Vật Lý",
+ "FemalePhysical": "Nhà Khai Phá (Nữ) - Vật Lý",
+ "MalePreservation": "Nhà Khai Phá (Nam) - Hỏa",
+ "FemalePreservation": "Nhà Khai Phá (Nữ) - Hỏa",
+ "MaleHarmony": "Nhà Khai Phá (Nam) - Hòa Hợp",
+ "FemaleHarmony": "Nhà Khai Phá (Nữ) - Hòa Hợp",
+ "MaleRemembrance": "Nhà Khai Phá (Nam) - Ký Ức",
+ "FemaleRemembrance": "Nhà Khai Phá (Nữ) - Ký Ức"
},
- paths: {
- Destruction: "Hủy Diệt",
- Hunt: "Săn Bắn",
- Erudition: "Tri Thức",
- Harmony: "Hòa Hợp",
- Nihility: "Hư Vô",
- Preservation: "Bảo Hộ",
- Abundance: "Trù Phú",
- Remembrance: "Ký Ức",
- Unknown: "Không xác định",
- Elation: "Vui Vẻ"
- }
+ "marchOptions": {
+ "MarchHunt": "March 7th - Săn Bắn",
+ "MarchPreservation": "March 7th - Bảo Hộ"
+ },
+ "elements": {
+ "Physical": "Vật Lý",
+ "Fire": "Hỏa",
+ "Ice": "Băng",
+ "Lightning": "Lôi",
+ "Wind": "Phong",
+ "Quantum": "Lượng Tử",
+ "Imaginary": "Số Ảo",
+ "Unknown": "Chưa rõ"
+ },
+ "paths": {
+ "Destruction": "Hủy Diệt",
+ "Hunt": "Săn Bắn",
+ "Erudition": "Tri Thức",
+ "Harmony": "Hòa Hợp",
+ "Nihility": "Hư Vô",
+ "Preservation": "Bảo Hộ",
+ "Abundance": "Trù Phú",
+ "Remembrance": "Ký Ức",
+ "Unknown": "Chưa rõ",
+ "Elation": "Vui Vẻ"
+ },
+ "settingsSaved": "Đã lưu cài đặt thành công!",
+ "settingsReset": "Đã khôi phục cài đặt mặc định"
},
-
- id: {
- appName: "GaC-Srtool",
- appSubtitle: "Pengontrol Server Star Rail FreeSR",
- online: "Online",
- offline: "Offline",
- checking: "Memeriksa...",
- refresh: "🔄 Segarkan",
- connectFailed: "Koneksi Gagal",
- tabDashboard: "📊 Dasbor",
- tabAvatars: "👥 Karakter",
- tabExrank: "⚡ Ex-Rank Skill",
- tabTeleport: "🚀 Teleportasi",
- tabJson: "📝 Alat JSON",
- tabSettings: "⚙️ Pengaturan & Panduan",
- statAvatars: "Karakter Dimiliki",
- statLightcones: "Lightcone",
- statRelics: "Relik",
- serverStatusTitle: "📍 Status Server & Posisi Saat Ini",
- quickActionsTitle: "⚡ Tindakan Cepat",
- quickActionsSubtitle: "Kirim perintah langsung ke REST API Gateway",
- btnMaxAll: "⭐ Maksimalkan Semua (Lv. 80 & E6)",
- btnWarpExpress: "🚂 Teleport ke Astral Express",
- btnSyncPersistent: "💾 Sinkronkan Data Persistent",
- currentLineupTitle: "🎮 Tim Saat Ini",
- slot: "Slot",
- slotEmpty: "(Kosong)",
- coords: "Koordinat (X, Y, Z)",
- searchPlaceholder: "🔍 Cari nama atau ID...",
- filterAllRarity: "Semua Kelangkaan",
- filter5Star: "Bintang 5 (SSR)",
- filter4Star: "Bintang 4 (SR)",
- btnReload: "🔄 Muat Ulang",
- eidolonLabel: "EIDOLON (E):",
- confirmMaxAll: "Tingkatkan semua karakter ke Lv. 80 dan E6?",
- maxAllSuccess: "Semua karakter berhasil dimaksimalkan!",
- avatarRankSuccess: "Karakter {id} diperbarui ke E{rank}",
- exrankTitle: "⚡ Sistem Ex-Rank",
- exrankSubtitle: "Aktifkan bakat Ex-Rank di FreeSR (Jing Yuan kebal kontrol, Dan Heng IL, Acheron)",
- btnEnableAll: "Aktifkan Semua Ex-Rank",
- btnDisableAll: "Nonaktifkan Semua Ex-Rank",
- exrankToggleSuccess: "{name}: Ex-Rank berhasil di{status}",
- exrankAllSuccess: "Ex-Rank semua karakter berhasil di{status}",
- enabled: "aktifkan",
- disabled: "nonaktifkan",
- presetsTitle: "📍 Titik Teleportasi Aman",
- presetsSubtitle: "Klik untuk berpindah tempat secara instan",
- customTeleportTitle: "🎯 Teleportasi Koordinat Kustom",
- customTeleportSubtitle: "Tentukan PlaneID, FloorID, EntryID dan koordinat",
- btnExecuteWarp: "🚀 Jalankan Teleport",
- warpBtn: "🚀 Teleport",
- warpSuccess: "Berhasil teleportasi ke {label}",
- warpFailed: "Teleportasi gagal: {err}",
- btnFreesr: "📄 freesr-data.json",
- btnPersistent: "💾 persistent",
- btnBeautify: "✨ Rapikan JSON",
- btnDownload: "📥 Unduh Cadangan",
- btnUpload: "📤 Unggah File",
- btnSaveServer: "💾 Simpan ke Server",
- jsonTip: "Tips: Edit JSON dan klik 'Simpan ke Server' untuk menerapkan",
- jsonStatusReady: "Siap",
- jsonStatusOpening: "Membuka: {name}",
- jsonSaveSuccess: "File {name} berhasil disimpan",
- jsonInvalid: "Format JSON tidak valid",
- apiSettingsTitle: "⚙️ Pengaturan Koneksi API Gateway",
- apiSettingsSubtitle: "Sesuaikan port atau IP dengan server.json Anda",
- lblApiGatewayUrl: "URL REST API Gateway",
- lblPingInterval: "Interval Ping (detik)",
- btnSaveSettings: "💾 Simpan Pengaturan",
- btnResetDefault: "Kembalikan Default",
- hostGuideTitle: "🌐 Cara Host di GitHub Pages (100% Gratis)",
- hostGuideSubtitle: "Host web ini secara gratis di GitHub",
- settingsSaved: "Pengaturan berhasil disimpan!",
- settingsReset: "Pengaturan telah direset",
- elements: {
- Physical: "Fisik",
- Fire: "Api",
- Ice: "Es",
- Lightning: "Petir",
- Wind: "Angin",
- Quantum: "Kuantum",
- Imaginary: "Imajinasi",
- Unknown: "Tidak Diketahui"
+ "id": {
+ "appName": "GaC-Srtool",
+ "appSubtitle": "Pengontrol Server & FreeSR Star Rail",
+ "online": "Terhubung",
+ "offline": "Offline",
+ "checking": "Memeriksa...",
+ "refresh": "🔄 Segarkan",
+ "connectFailed": "Koneksi Gagal",
+ "tabDashboard": "📊 Dasbor & Tim",
+ "tabAvatars": "👥 Karakter",
+ "tabEquipment": "🗡️ Light Cone & Relic",
+ "tabPersistent": "💾 Pengelola Simpan GaC",
+ "tabExrank": "⚡ Keahlian Ex-Rank",
+ "tabJson": "📝 Manajemen JSON",
+ "tabSettings": "⚙️ Pengaturan",
+ "statAvatars": "Karakter Dimiliki",
+ "statLightcones": "Light Cone",
+ "statRelics": "Relic",
+ "serverStatusTitle": "📍 Status Server & Koordinat",
+ "lblServerModeActive": "Mode Server Aktif",
+ "lblApiEndpoint": "Endpoint API Gateway",
+ "lblPlaneId": "Plane ID",
+ "lblFloorId": "Floor ID",
+ "coords": "Koordinat Karakter XYZ",
+ "quickActionsTitle": "⚡ Tindakan Cepat",
+ "quickActionsSubtitle": "Kirim perintah ke server secara instan",
+ "btnMaxAll": "⭐ Maksimalkan Semua Karakter Lv. 80 & E6",
+ "btnSyncPersistent": "💾 Sinkronkan Simpanan Persistent Terbaru",
+ "currentLineupTitle": "🎮 Susunan Tim Saat Ini",
+ "slot": "Slot",
+ "slotEmpty": "Kosong (Klik untuk tambah)",
+ "slotTooltip": "Klik untuk memilih karakter di slot ini",
+ "removeFromTeam": "Hapus dari tim",
+ "searchPlaceholder": "🔍 Cari nama karakter atau ID...",
+ "filterAllRarity": "Semua Kelangkaan",
+ "filter5Star": "Bintang 5",
+ "filter4Star": "Bintang 4",
+ "filterAllElements": "Semua Elemen",
+ "filterAllPaths": "Semua Path",
+ "btnReload": "🔄 Muat Ulang",
+ "avatarsLoading": "Memuat data karakter...",
+ "noAvatarsFound": "Tidak ada karakter yang cocok",
+ "eidolonLabel": "Eidolon:",
+ "confirmMaxAll": "Tingkatkan semua karakter ke Lv. 80 dan buka E6?",
+ "maxAllSuccess": "Semua karakter berhasil dimaksimalkan!",
+ "avatarRankSuccess": "Karakter {id} diperbarui ke E{rank}",
+ "eqLcTitle": "🗡️ Light Cone di Inventaris",
+ "eqLcSubtitle": "Semua light cone dari freesr-data.json",
+ "eqLcLoading": "Memuat data light cone...",
+ "eqRelicTitle": "🛡️ Relic di Inventaris",
+ "eqRelicSubtitle": "Semua relic dari freesr-data.json",
+ "eqRelicLoading": "Memuat data relic...",
+ "itemCount": "{n} item",
+ "notEquipped": "Tidak terpasang",
+ "equippedBy": "Dipasang oleh",
+ "noLcData": "Tidak ada data light cone",
+ "noRelicData": "Tidak ada data relic",
+ "persistentTitle": "💾 Pengelola Simpan GaC",
+ "persistentBadge": "Server Kustom Kami",
+ "persistentSubtitle": "File persistent menyimpan status pemain khusus GaC seperti gender/elemen Trailblazer, jalur March 7th, dan fitur global",
+ "persistentTbM7Title": "👤 Trailblazer & March 7th",
+ "lblTbGenderElement": "Gender & Elemen Trailblazer",
+ "lblM7Path": "Path March 7th",
+ "btnSaveCharSettings": "💾 Simpan Pengaturan Karakter",
+ "persistentGlobalTitle": "⚙️ Saklar Fitur Khusus GaC",
+ "swGlobalDesc": "Aktifkan fungsi khusus Silver Wolf di seluruh server",
+ "castoriceGlobalDesc": "Aktifkan fungsi khusus Castorice di seluruh server",
+ "btnSaveGlobalSwitch": "💾 Simpan Saklar Global",
+ "exrankTitle": "⚡ Sistem Keahlian Ex-Rank",
+ "exrankSubtitle": "Buka bakat khusus Ex-Rank di FreeSR (mis. kekebalan CC Jing Yuan, Dan Heng IL, Acheron)",
+ "btnEnableAll": "Aktifkan Semua Ex-Rank",
+ "btnDisableAll": "Nonaktifkan Semua Ex-Rank",
+ "exrankToggleSuccess": "{name}: Ex-Rank {status}",
+ "exrankAllSuccess": "Semua karakter Ex-Rank {status}",
+ "enabled": "aktif",
+ "disabled": "nonaktif",
+ "btnFreesr": "📄 freesr-data.json",
+ "btnPersistent": "💾 persistent save",
+ "btnBeautify": "✨ Rapikan JSON",
+ "btnDownload": "📥 Unduh Cadangan",
+ "btnUpload": "📤 Unggah File",
+ "btnSaveServer": "💾 Simpan ke Server",
+ "jsonTip": "Tips: Edit JSON mentah dan klik 'Simpan ke Server'",
+ "jsonStatusReady": "Siap",
+ "jsonStatusOpening": "Membuka: {name}",
+ "jsonSaveSuccess": "File {name} berhasil disimpan",
+ "jsonInvalid": "Format JSON tidak valid",
+ "apiSettingsTitle": "⚙️ Pengaturan Koneksi API Gateway",
+ "apiSettingsSubtitle": "Sesuaikan port atau IP sesuai dengan server.json Anda",
+ "lblServerMode": "Mode Server",
+ "lblApiGatewayUrl": "URL REST API Gateway",
+ "lblPingInterval": "Interval Cek Status (detik)",
+ "btnSaveSettings": "💾 Simpan Pengaturan",
+ "btnResetDefault": "Kembalikan Default",
+ "modalTitleCharEdit": "Kustomisasi Karakter",
+ "modalBtnMaxAllChar": "⭐ Maksimalkan Semua",
+ "modalTabSkills": "⚡ Skill & Traces",
+ "modalTabStatus": "⚙️ Level & Eidolon",
+ "modalTabLightcone": "🗡️ Light Cone",
+ "modalSkillCombatTitle": "Level Skill Pertempuran",
+ "modalBtnMaxSkills": "⭐ Maksimalkan Semua Skill (10/10)",
+ "modalSkillBasic": "Basic ATK",
+ "modalSkillSkill": "Skill",
+ "modalSkillUltra": "Ultimate",
+ "modalSkillTalent": "Talent",
+ "modalTracesTitle": "Traces & Technique",
+ "modalTraceTechnique": "⚡ Technique — Aktif sebelum tempur",
+ "traceA2": "🌟 Bonus Trace A2",
+ "traceA4": "🌟 Bonus Trace A4",
+ "traceA6": "🌟 Bonus Trace A6",
+ "traceStatNodes": "💎 Semua Node Bonus Stat (10 node)",
+ "lblLevelRange": "Level (1-80)",
+ "lblPromotionRange": "Promosi (0-6)",
+ "lblEidolonLevel": "Tingkat Eidolon",
+ "btnResetE0": "Reset E0",
+ "btnMaxE6": "⭐ Maksimal E6",
+ "modalEnergyTitle": "Energi Ultimate",
+ "modalEnergy50": "Set 50%",
+ "modalEnergy100": "Penuh 100%",
+ "modalLcTitle": "Light Cone Terpasang",
+ "modalBtnMaxLc": "⭐ Maksimalkan Light Cone (Lv.80 S5)",
+ "lblLcId": "ID Light Cone",
+ "modalLcIdPlaceholder": "Contoh: 21002 atau 24001",
+ "lblLcLevel": "Level Light Cone (1-80)",
+ "lblLcRank": "Superimposisi (S1-S5)",
+ "modalBtnClose": "✕ Tutup",
+ "modalBtnSave": "💾 Simpan Karakter",
+ "pickerTitle": "Pilih Karakter untuk Tim",
+ "pickerSearchPlaceholder": "🔍 Cari karakter untuk ditambahkan...",
+ "apiModalTitle": "⚙️ Pengaturan Koneksi API Server",
+ "btnCancel": "Batal",
+ "btnSaveTest": "Simpan & Uji",
+ "toastSlotUpdated": "Memperbarui Slot {slot} menjadi: {name}",
+ "toastCharMaxed": "⭐ {name} dimaksimalkan ke Lv. 80 E6",
+ "toastCharSaved": "Karakter {name} tersimpan",
+ "toastAllSkillsMaxed": "⭐ Semua skill dan trace telah dimaksimalkan",
+ "toastServerSwitched": "Beralih mode server ke: {mode}",
+ "tbOptions": {
+ "MalePhysical": "Trailblazer (Pria) - Fisik",
+ "FemalePhysical": "Trailblazer (Wanita) - Fisik",
+ "MalePreservation": "Trailblazer (Pria) - Fire",
+ "FemalePreservation": "Trailblazer (Wanita) - Fire",
+ "MaleHarmony": "Trailblazer (Pria) - Harmony",
+ "FemaleHarmony": "Trailblazer (Wanita) - Harmony",
+ "MaleRemembrance": "Trailblazer (Pria) - Remembrance",
+ "FemaleRemembrance": "Trailblazer (Wanita) - Remembrance"
},
- paths: {
- Destruction: "Kehancuran",
- Hunt: "Perburuan",
- Erudition: "Kebijaksanaan",
- Harmony: "Harmoni",
- Nihility: "Ketiadaan",
- Preservation: "Pelestarian",
- Abundance: "Kelimpahan",
- Remembrance: "Ingatan",
- Unknown: "Tidak Diketahui",
- Elation: "Kegembiraan"
- }
+ "marchOptions": {
+ "MarchHunt": "March 7th - The Hunt",
+ "MarchPreservation": "March 7th - Preservation"
+ },
+ "elements": {
+ "Physical": "Fisik",
+ "Fire": "Api",
+ "Ice": "Es",
+ "Lightning": "Petir",
+ "Wind": "Angin",
+ "Quantum": "Kuantum",
+ "Imaginary": "Imajinasi",
+ "Unknown": "Tidak Diketahui"
+ },
+ "paths": {
+ "Destruction": "Destruction",
+ "Hunt": "Hunt",
+ "Erudition": "Erudition",
+ "Harmony": "Harmony",
+ "Nihility": "Nihility",
+ "Preservation": "Preservation",
+ "Abundance": "Abundance",
+ "Remembrance": "Remembrance",
+ "Unknown": "Tidak Diketahui",
+ "Elation": "Elation"
+ },
+ "settingsSaved": "Pengaturan berhasil disimpan!",
+ "settingsReset": "Pengaturan dikembalikan ke default"
},
-
- es: {
- appName: "GaC-Srtool",
- appSubtitle: "Panel de control Star Rail FreeSR",
- online: "En línea (Online)",
- offline: "Desconectado (Offline)",
- checking: "Comprobando...",
- refresh: "🔄 Actualizar",
- connectFailed: "Error de conexión",
- tabDashboard: "📊 Panel",
- tabAvatars: "👥 Personajes",
- tabExrank: "⚡ Ex-Rank",
- tabTeleport: "🚀 Teletransporte",
- tabJson: "📝 Herramientas JSON",
- tabSettings: "⚙️ Ajustes y guía",
- statAvatars: "Personajes obtenidos",
- statLightcones: "Conos de luz",
- statRelics: "Reliquias",
- serverStatusTitle: "📍 Estado del servidor y posición",
- quickActionsTitle: "⚡ Acciones rápidas",
- quickActionsSubtitle: "Enviar comandos a la API Gateway",
- btnMaxAll: "⭐ Maximizar todos (Niv. 80 y E6)",
- btnWarpExpress: "🚂 Teletransportar al Expreso Astral",
- btnSyncPersistent: "💾 Sincronizar datos persistentes",
- currentLineupTitle: "🎮 Equipo actual",
- slot: "Puesto",
- slotEmpty: "(Vacío)",
- coords: "Coordenadas (X, Y, Z)",
- searchPlaceholder: "🔍 Buscar nombre o ID...",
- filterAllRarity: "Todas las rarezas",
- filter5Star: "5 Estrellas (SSR)",
- filter4Star: "4 Estrellas (SR)",
- btnReload: "🔄 Recargar",
- eidolonLabel: "EIDOLON (E):",
- confirmMaxAll: "¿Subir todos los personajes a nivel 80 y E6?",
- maxAllSuccess: "¡Todos los personajes maximizados con éxito!",
- avatarRankSuccess: "Personaje {id} actualizado a E{rank}",
- exrankTitle: "⚡ Sistema Ex-Rank",
- exrankSubtitle: "Activar talentos especiales Ex-Rank en FreeSR (inmunidad CC de Jing Yuan, Dan Heng IL, Acheron)",
- btnEnableAll: "Activar todos los Ex-Rank",
- btnDisableAll: "Desactivar todos los Ex-Rank",
- exrankToggleSuccess: "{name}: Ex-Rank {status}",
- exrankAllSuccess: "Todos los Ex-Rank {status}",
- enabled: "activado",
- disabled: "desactivado",
- presetsTitle: "📍 Puntos seguros predefinidos",
- presetsSubtitle: "Haga clic para teletransportar al jugador al instante",
- customTeleportTitle: "🎯 Coordenadas personalizadas",
- customTeleportSubtitle: "Especifique PlaneID, FloorID, EntryID y coordenadas",
- btnExecuteWarp: "🚀 Ejecutar teletransporte",
- warpBtn: "🚀 Ir",
- warpSuccess: "Teletransportado a {label} con éxito",
- warpFailed: "Fallo al teletransportar: {err}",
- btnFreesr: "📄 freesr-data.json",
- btnPersistent: "💾 persistent",
- btnBeautify: "✨ Dar formato a JSON",
- btnDownload: "📥 Descargar copia",
- btnUpload: "📤 Cargar archivo",
- btnSaveServer: "💾 Guardar en el servidor",
- jsonTip: "Consejo: Edite el JSON y haga clic en 'Guardar en el servidor'",
- jsonStatusReady: "Listo",
- jsonStatusOpening: "Abriendo: {name}",
- jsonSaveSuccess: "Archivo {name} guardado con éxito",
- jsonInvalid: "Formato JSON no válido",
- apiSettingsTitle: "⚙️ Conexión con la API Gateway",
- apiSettingsSubtitle: "Ajuste el puerto o la IP según su server.json",
- lblApiGatewayUrl: "URL de la API Gateway",
- lblPingInterval: "Intervalo de comprobación (segundos)",
- btnSaveSettings: "💾 Guardar ajustes",
- btnResetDefault: "Restaurar por defecto",
- hostGuideTitle: "🌐 Cómo hospedar en GitHub Pages (100% Gratis)",
- hostGuideSubtitle: "Hospede este panel de control gratis en GitHub",
- settingsSaved: "¡Ajustes guardados!",
- settingsReset: "Ajustes restaurados",
- elements: {
- Physical: "Físico",
- Fire: "Fuego",
- Ice: "Hielo",
- Lightning: "Rayo",
- Wind: "Viento",
- Quantum: "Cuántico",
- Imaginary: "Imaginario",
- Unknown: "Desconocido"
+ "es": {
+ "appName": "GaC-Srtool",
+ "appSubtitle": "Controlador de servidor y FreeSR de Star Rail",
+ "online": "Conectado",
+ "offline": "Desconectado",
+ "checking": "Comprobando...",
+ "refresh": "🔄 Actualizar",
+ "connectFailed": "Conexión fallida",
+ "tabDashboard": "📊 Panel y equipo",
+ "tabAvatars": "👥 Personajes",
+ "tabEquipment": "🗡️ Conos de luz y artefactos",
+ "tabPersistent": "💾 Gestor de guardado GaC",
+ "tabExrank": "⚡ Habilidades Ex-Rank",
+ "tabJson": "📝 Gestión de JSON",
+ "tabSettings": "⚙️ Ajustes",
+ "statAvatars": "Personajes en posesión",
+ "statLightcones": "Conos de luz",
+ "statRelics": "Artefactos",
+ "serverStatusTitle": "📍 Estado del servidor y coordenadas",
+ "lblServerModeActive": "Modo de servidor activo",
+ "lblApiEndpoint": "Punto de enlace API Gateway",
+ "lblPlaneId": "ID de plano",
+ "lblFloorId": "ID de piso",
+ "coords": "Coordenadas del personaje XYZ",
+ "quickActionsTitle": "⚡ Acciones rápidas",
+ "quickActionsSubtitle": "Enviar comandos al servidor al instante",
+ "btnMaxAll": "⭐ Nivel 80 y E6 a todos los personajes",
+ "btnSyncPersistent": "💾 Sincronizar guardado persistent",
+ "currentLineupTitle": "🎮 Alineación actual",
+ "slot": "Posición",
+ "slotEmpty": "Vacío (Haz clic para añadir)",
+ "slotTooltip": "Haz clic para seleccionar un personaje en esta casilla",
+ "removeFromTeam": "Quitar del equipo",
+ "searchPlaceholder": "🔍 Buscar por nombre o ID de personaje...",
+ "filterAllRarity": "Todas las rarezas",
+ "filter5Star": "5 Estrellas",
+ "filter4Star": "4 Estrellas",
+ "filterAllElements": "Todos los elementos",
+ "filterAllPaths": "Todas las vías",
+ "btnReload": "🔄 Recargar",
+ "avatarsLoading": "Cargando personajes...",
+ "noAvatarsFound": "No se encontraron personajes coincidentes",
+ "eidolonLabel": "Eidolon:",
+ "confirmMaxAll": "¿Subir todos los personajes a nivel 80 y desbloquear E6?",
+ "maxAllSuccess": "¡Todos los personajes maximizados con éxito!",
+ "avatarRankSuccess": "Personaje {id} actualizado a E{rank}",
+ "eqLcTitle": "🗡️ Conos de luz en inventario",
+ "eqLcSubtitle": "Todos los conos de luz de freesr-data.json",
+ "eqLcLoading": "Cargando datos de conos de luz...",
+ "eqRelicTitle": "🛡️ Artefactos en inventario",
+ "eqRelicSubtitle": "Todos los artefactos de freesr-data.json",
+ "eqRelicLoading": "Cargando datos de artefactos...",
+ "itemCount": "{n} objetos",
+ "notEquipped": "No equipado",
+ "equippedBy": "Equipado por",
+ "noLcData": "No hay datos de conos de luz",
+ "noRelicData": "No hay datos de artefactos",
+ "persistentTitle": "💾 Gestor de guardado GaC",
+ "persistentBadge": "Servidor personalizado propio",
+ "persistentSubtitle": "El archivo persistent guarda configuraciones específicas de GaC como género/elemento del Trazacaminos, vía de Siete de Marzo e interruptores globales",
+ "persistentTbM7Title": "👤 Trazacaminos y Siete de Marzo",
+ "lblTbGenderElement": "Género y elemento del Trazacaminos",
+ "lblM7Path": "Vía de Siete de Marzo",
+ "btnSaveCharSettings": "💾 Guardar ajustes de personaje",
+ "persistentGlobalTitle": "⚙️ Funciones especiales de GaC",
+ "swGlobalDesc": "Activar función global de Silver Wolf en todo el servidor",
+ "castoriceGlobalDesc": "Activar función global de Castorice en todo el servidor",
+ "btnSaveGlobalSwitch": "💾 Guardar interruptores globales",
+ "exrankTitle": "⚡ Sistema de habilidades Ex-Rank",
+ "exrankSubtitle": "Activa talentos especiales Ex-Rank en FreeSR (inmunidad CC de Jing Yuan, Dan Heng IL, Acheron)",
+ "btnEnableAll": "Activar todos los Ex-Rank",
+ "btnDisableAll": "Desactivar todos los Ex-Rank",
+ "exrankToggleSuccess": "{name}: Ex-Rank {status}",
+ "exrankAllSuccess": "Todos los personajes Ex-Rank {status}",
+ "enabled": "activado",
+ "disabled": "desactivado",
+ "btnFreesr": "📄 freesr-data.json",
+ "btnPersistent": "💾 persistent",
+ "btnBeautify": "✨ Formatear JSON",
+ "btnDownload": "📥 Descargar copia",
+ "btnUpload": "📤 Cargar archivo",
+ "btnSaveServer": "💾 Guardar en el servidor",
+ "jsonTip": "Consejo: Edite el JSON y haga clic en 'Guardar en el servidor'",
+ "jsonStatusReady": "Listo",
+ "jsonStatusOpening": "Abriendo: {name}",
+ "jsonSaveSuccess": "Archivo {name} guardado con éxito",
+ "jsonInvalid": "Formato JSON no válido",
+ "apiSettingsTitle": "⚙️ Ajustes de conexión API Gateway",
+ "apiSettingsSubtitle": "Ajuste el puerto o la IP según su server.json",
+ "lblServerMode": "Modo de servidor",
+ "lblApiGatewayUrl": "URL REST API Gateway",
+ "lblPingInterval": "Frecuencia de comprobación (segundos)",
+ "btnSaveSettings": "💾 Guardar ajustes",
+ "btnResetDefault": "Restablecer valores iniciales",
+ "modalTitleCharEdit": "Personalización de personaje",
+ "modalBtnMaxAllChar": "⭐ Maximizar todo",
+ "modalTabSkills": "⚡ Habilidades y rastros",
+ "modalTabStatus": "⚙️ Nivel y Eidolon",
+ "modalTabLightcone": "🗡️ Cono de luz",
+ "modalSkillCombatTitle": "Nivel de habilidades de combate",
+ "modalBtnMaxSkills": "⭐ Habilidades al máximo (10/10)",
+ "modalSkillBasic": "Ataque básico",
+ "modalSkillSkill": "Habilidad básica",
+ "modalSkillUltra": "Habilidad definitiva",
+ "modalSkillTalent": "Talento",
+ "modalTracesTitle": "Rastros y técnica",
+ "modalTraceTechnique": "⚡ Técnica — Activa antes de la batalla",
+ "traceA2": "🌟 Habilidad adicional A2",
+ "traceA4": "🌟 Habilidad adicional A4",
+ "traceA6": "🌟 Habilidad adicional A6",
+ "traceStatNodes": "💎 Todos los nodos de atributos (10 nodos)",
+ "lblLevelRange": "Nivel (1-80)",
+ "lblPromotionRange": "Ascensión (0-6)",
+ "lblEidolonLevel": "Nivel de Eidolon",
+ "btnResetE0": "Restablecer E0",
+ "btnMaxE6": "⭐ E6 al máximo",
+ "modalEnergyTitle": "Energía definitiva",
+ "modalEnergy50": "Poner 50%",
+ "modalEnergy100": "Llenar 100%",
+ "modalLcTitle": "Cono de luz equipado",
+ "modalBtnMaxLc": "⭐ Cono al máximo (Nv.80 Superp.5)",
+ "lblLcId": "ID de cono de luz",
+ "modalLcIdPlaceholder": "ej. 21002 o 24001",
+ "lblLcLevel": "Nivel de cono de luz (1-80)",
+ "lblLcRank": "Superposición (S1-S5)",
+ "modalBtnClose": "✕ Cerrar",
+ "modalBtnSave": "💾 Guardar personaje",
+ "pickerTitle": "Seleccionar personaje para el equipo",
+ "pickerSearchPlaceholder": "🔍 Buscar personaje para añadir...",
+ "apiModalTitle": "⚙️ Ajustes de conexión de servidor API",
+ "btnCancel": "Cancelar",
+ "btnSaveTest": "Guardar y probar",
+ "toastSlotUpdated": "Casilla {slot} actualizada a: {name}",
+ "toastCharMaxed": "⭐ {name} al máximo (Nv. 80 E6)",
+ "toastCharSaved": "Personaje {name} guardado",
+ "toastAllSkillsMaxed": "⭐ Habilidades y rastros al máximo",
+ "toastServerSwitched": "Modo de servidor cambiado a: {mode}",
+ "tbOptions": {
+ "MalePhysical": "Trazacaminos (Masculino) - Físico",
+ "FemalePhysical": "Trazacaminos (Femenino) - Físico",
+ "MalePreservation": "Trazacaminos (Masculino) - Fuego",
+ "FemalePreservation": "Trazacaminos (Femenino) - Fuego",
+ "MaleHarmony": "Trazacaminos (Masculino) - Armonía",
+ "FemaleHarmony": "Trazacaminos (Femenino) - Armonía",
+ "MaleRemembrance": "Trazacaminos (Masculino) - Reminiscencia",
+ "FemaleRemembrance": "Trazacaminos (Femenino) - Reminiscencia"
},
- paths: {
- Destruction: "Destrucción",
- Hunt: "Cacería",
- Erudition: "Erudición",
- Harmony: "Armonía",
- Nihility: "Nihilidad",
- Preservation: "Conservación",
- Abundance: "Abundancia",
- Remembrance: "Reminiscencia",
- Unknown: "Desconocido",
- Elation: "Exultación"
- }
+ "marchOptions": {
+ "MarchHunt": "Siete de Marzo - Cacería",
+ "MarchPreservation": "Siete de Marzo - Conservación"
+ },
+ "elements": {
+ "Physical": "Físico",
+ "Fire": "Fuego",
+ "Ice": "Hielo",
+ "Lightning": "Rayo",
+ "Wind": "Viento",
+ "Quantum": "Cuántico",
+ "Imaginary": "Imaginario",
+ "Unknown": "Desconocido"
+ },
+ "paths": {
+ "Destruction": "Destrucción",
+ "Hunt": "Cacería",
+ "Erudition": "Erudición",
+ "Harmony": "Armonía",
+ "Nihility": "Inexistencia",
+ "Preservation": "Conservación",
+ "Abundance": "Abundancia",
+ "Remembrance": "Reminiscencia",
+ "Unknown": "Desconocido",
+ "Elation": "Exultación"
+ },
+ "settingsSaved": "¡Ajustes guardados con éxito!",
+ "settingsReset": "Ajustes restablecidos por defecto"
},
-
- fr: {
- appName: "GaC-Srtool",
- appSubtitle: "Contrôleur de serveur Star Rail FreeSR",
- online: "En ligne (Online)",
- offline: "Hors ligne (Offline)",
- checking: "Vérification...",
- refresh: "🔄 Actualiser",
- connectFailed: "Échec de connexion",
- tabDashboard: "📊 Tableau de bord",
- tabAvatars: "👥 Personnages",
- tabExrank: "⚡ Compétences Ex-Rank",
- tabTeleport: "🚀 Téléportation",
- tabJson: "📝 Outils JSON",
- tabSettings: "⚙️ Paramètres & Guide",
- statAvatars: "Personnages possédés",
- statLightcones: "Cônes de lumière",
- statReliques: "Reliques",
- serverStatusTitle: "📍 Statut du serveur & Position",
- quickActionsTitle: "⚡ Actions rapides",
- quickActionsSubtitle: "Envoyer directement à l'API Gateway",
- btnMaxAll: "⭐ Maximiser tous (Niv. 80 & E6)",
- btnWarpExpress: "🚂 Téléporter vers l'Astral Express",
- btnSyncPersistent: "💾 Synchroniser les données",
- currentLineupTitle: "🎮 Équipe actuelle",
- slot: "Emplacement",
- slotEmpty: "(Vide)",
- coords: "Coordonnées (X, Y, Z)",
- searchPlaceholder: "🔍 Rechercher par nom ou ID...",
- filterAllRarity: "Toutes les raretés",
- filter5Star: "5 Étoiles (SSR)",
- filter4Star: "4 Étoiles (SR)",
- btnReload: "🔄 Recharger",
- eidolonLabel: "EIDOLON (E):",
- confirmMaxAll: "Passer tous les personnages au niveau 80 et E6 ?",
- maxAllSuccess: "Tous les personnages sont maximisés !",
- avatarRankSuccess: "Personnage {id} mis à jour en E{rank}",
- exrankTitle: "⚡ Système Ex-Rank",
- exrankSubtitle: "Activer les atouts Ex-Rank dans FreeSR (immunité CC Jing Yuan, Dan Heng IL, Acheron)",
- btnEnableAll: "Activer tous les Ex-Ranks",
- btnDisableAll: "Désactiver tous les Ex-Ranks",
- exrankToggleSuccess: "{name}: Ex-Rank {status}",
- exrankAllSuccess: "Tous les Ex-Ranks {status}",
- enabled: "activé",
- disabled: "désactivé",
- presetsTitle: "📍 Points de téléportation sûrs",
- presetsSubtitle: "Cliquez pour déplacer le joueur instantanément",
- customTeleportTitle: "🎯 Coordonnées personnalisées",
- customTeleportSubtitle: "Définissez PlaneID, FloorID, EntryID et coordonnées",
- btnExecuteWarp: "🚀 Lancer la téléportation",
- warpBtn: "🚀 Téléporter",
- warpSuccess: "Téléporté vers {label} avec succès",
- warpFailed: "Échec de téléportation: {err}",
- btnFreesr: "📄 freesr-data.json",
- btnPersistent: "💾 persistent",
- btnBeautify: "✨ Mettre en forme JSON",
- btnDownload: "📥 Télécharger sauvegarde",
- btnUpload: "📤 Charger un fichier",
- btnSaveServer: "💾 Enregistrer sur le serveur",
- jsonTip: "Astuce : Modifiez le JSON et cliquez sur 'Enregistrer sur le serveur'",
- jsonStatusReady: "Prêt",
- jsonStatusOpening: "Ouverture : {name}",
- jsonSaveSuccess: "Fichier {name} enregistré",
- jsonInvalid: "Format JSON non valide",
- apiSettingsTitle: "⚙️ Paramètres de connexion API Gateway",
- apiSettingsSubtitle: "Ajustez le port ou l'IP selon votre server.json",
- lblApiGatewayUrl: "URL de l'API Gateway",
- lblPingInterval: "Intervalle de test (secondes)",
- btnSaveSettings: "💾 Enregistrer les paramètres",
- btnResetDefault: "Réinitialiser",
- hostGuideTitle: "🌐 Héberger sur GitHub Pages (100% Gratuit)",
- hostGuideSubtitle: "Hébergez ce panneau gratuitement sur GitHub",
- settingsSaved: "Paramètres enregistrés !",
- settingsReset: "Paramètres réinitialisés",
- elements: {
- Physical: "Physique",
- Fire: "Feu",
- Ice: "Glace",
- Lightning: "Foudre",
- Wind: "Vent",
- Quantum: "Quantique",
- Imaginary: "Imaginaire",
- Unknown: "Inconnu"
+ "fr": {
+ "appName": "GaC-Srtool",
+ "appSubtitle": "Contrôleur de serveur et FreeSR Star Rail",
+ "online": "Connecté",
+ "offline": "Hors ligne",
+ "checking": "Vérification...",
+ "refresh": "🔄 Actualiser",
+ "connectFailed": "Échec de connexion",
+ "tabDashboard": "📊 Tableau de bord et équipe",
+ "tabAvatars": "👥 Personnages",
+ "tabEquipment": "🗡️ Cônes de lumière et reliques",
+ "tabPersistent": "💾 Gestionnaire de sauvegarde GaC",
+ "tabExrank": "⚡ Compétences Ex-Rank",
+ "tabJson": "📝 Gestion JSON",
+ "tabSettings": "⚙️ Paramètres",
+ "statAvatars": "Personnages possédés",
+ "statLightcones": "Cônes de lumière",
+ "statRelics": "Reliques",
+ "serverStatusTitle": "📍 État du serveur et coordonnées",
+ "lblServerModeActive": "Mode de serveur actif",
+ "lblApiEndpoint": "Point de terminaison API Gateway",
+ "lblPlaneId": "ID de plan",
+ "lblFloorId": "ID d'étage",
+ "coords": "Coordonnées du personnage XYZ",
+ "quickActionsTitle": "⚡ Actions rapides",
+ "quickActionsSubtitle": "Envoyer des commandes au serveur instantanément",
+ "btnMaxAll": "⭐ Niv. 80 et E6 tous les personnages",
+ "btnSyncPersistent": "💾 Synchroniser la sauvegarde persistent",
+ "currentLineupTitle": "🎮 Équipe actuelle",
+ "slot": "Emplacement",
+ "slotEmpty": "Vide (Cliquer pour ajouter)",
+ "slotTooltip": "Cliquer pour sélectionner un personnage pour cet emplacement",
+ "removeFromTeam": "Retirer de l'équipe",
+ "searchPlaceholder": "🔍 Rechercher par nom ou ID de personnage...",
+ "filterAllRarity": "Toutes les raretés",
+ "filter5Star": "5 Étoiles",
+ "filter4Star": "4 Étoiles",
+ "filterAllElements": "Tous les éléments",
+ "filterAllPaths": "Toutes les voies",
+ "btnReload": "🔄 Recharger",
+ "avatarsLoading": "Chargement des personnages...",
+ "noAvatarsFound": "Aucun personnage correspondant trouvé",
+ "eidolonLabel": "Eidolon:",
+ "confirmMaxAll": "Améliorer tous les personnages au niveau 80 et débloquer E6 ?",
+ "maxAllSuccess": "Tous les personnages sont maximisés avec succès !",
+ "avatarRankSuccess": "Personnage {id} mis à jour au rang E{rank}",
+ "eqLcTitle": "🗡️ Cônes de lumière dans l'inventaire",
+ "eqLcSubtitle": "Tous les cônes de lumière de freesr-data.json",
+ "eqLcLoading": "Chargement des cônes de lumière...",
+ "eqRelicTitle": "🛡️ Reliques dans l'inventaire",
+ "eqRelicSubtitle": "Toutes les reliques de freesr-data.json",
+ "eqRelicLoading": "Chargement des reliques...",
+ "itemCount": "{n} objets",
+ "notEquipped": "Non équipé",
+ "equippedBy": "Équipé par",
+ "noLcData": "Aucune donnée de cône de lumière",
+ "noRelicData": "Aucune donnée de relique",
+ "persistentTitle": "💾 Gestionnaire de sauvegarde GaC",
+ "persistentBadge": "Serveur personnalisé",
+ "persistentSubtitle": "Le fichier persistent stocke les paramètres GaC spécifiques comme le sexe/élément du Pionnier, la voie de March 7th et les options globales",
+ "persistentTbM7Title": "👤 Pionnier et March 7th",
+ "lblTbGenderElement": "Sexe et élément du Pionnier",
+ "lblM7Path": "Voie de March 7th",
+ "btnSaveCharSettings": "💾 Enregistrer les réglages du personnage",
+ "persistentGlobalTitle": "⚙️ Fonctions spéciales GaC",
+ "swGlobalDesc": "Activer la fonction globale de Silver Wolf sur tout le serveur",
+ "castoriceGlobalDesc": "Activer la fonction globale de Castorice sur tout le serveur",
+ "btnSaveGlobalSwitch": "💾 Enregistrer les options globales",
+ "exrankTitle": "⚡ Système de compétences Ex-Rank",
+ "exrankSubtitle": "Active les bonus spéciaux Ex-Rank dans FreeSR (ex: immunité au contrôle de Jing Yuan, Dan Heng IL, Acheron)",
+ "btnEnableAll": "Activer tous les Ex-Rank",
+ "btnDisableAll": "Désactiver tous les Ex-Rank",
+ "exrankToggleSuccess": "{name}: Ex-Rank {status}",
+ "exrankAllSuccess": "Tous les personnages Ex-Rank {status}",
+ "enabled": "activé",
+ "disabled": "désactivé",
+ "btnFreesr": "📄 freesr-data.json",
+ "btnPersistent": "💾 persistent",
+ "btnBeautify": "✨ Mettre en forme le JSON",
+ "btnDownload": "📥 Télécharger la sauvegarde",
+ "btnUpload": "📤 Importer un fichier",
+ "btnSaveServer": "💾 Enregistrer sur le serveur",
+ "jsonTip": "Astuce : Modifiez le JSON et cliquez sur 'Enregistrer sur le serveur'",
+ "jsonStatusReady": "Prêt",
+ "jsonStatusOpening": "Ouverture : {name}",
+ "jsonSaveSuccess": "Fichier {name} enregistré avec succès",
+ "jsonInvalid": "Format JSON non valide",
+ "apiSettingsTitle": "⚙️ Paramètres de connexion API Gateway",
+ "apiSettingsSubtitle": "Ajustez le port ou l'IP selon votre server.json",
+ "lblServerMode": "Mode serveur",
+ "lblApiGatewayUrl": "URL REST API Gateway",
+ "lblPingInterval": "Intervalle de vérification (secondes)",
+ "btnSaveSettings": "💾 Enregistrer les paramètres",
+ "btnResetDefault": "Restaurer par défaut",
+ "modalTitleCharEdit": "Personnalisation du personnage",
+ "modalBtnMaxAllChar": "⭐ Tout maximiser",
+ "modalTabSkills": "⚡ Compétences et traces",
+ "modalTabStatus": "⚙️ Niveau et Eidolon",
+ "modalTabLightcone": "🗡️ Cône de lumière",
+ "modalSkillCombatTitle": "Niveaux de compétences de combat",
+ "modalBtnMaxSkills": "⭐ Compétences au max (10/10)",
+ "modalSkillBasic": "Attaque normale",
+ "modalSkillSkill": "Compétence",
+ "modalSkillUltra": "Ultime",
+ "modalSkillTalent": "Talent",
+ "modalTracesTitle": "Traces et technique",
+ "modalTraceTechnique": "⚡ Technique — Active avant le combat",
+ "traceA2": "🌟 Capacité bonus A2",
+ "traceA4": "🌟 Capacité bonus A4",
+ "traceA6": "🌟 Capacité bonus A6",
+ "traceStatNodes": "💎 Tous les nœuds de statistiques (10 nœuds)",
+ "lblLevelRange": "Niveau (1-80)",
+ "lblPromotionRange": "Élévation (0-6)",
+ "lblEidolonLevel": "Niveau d'Eidolon",
+ "btnResetE0": "Réinitialiser E0",
+ "btnMaxE6": "⭐ E6 au max",
+ "modalEnergyTitle": "Énergie ultime",
+ "modalEnergy50": "Régler 50%",
+ "modalEnergy100": "Plein 100%",
+ "modalLcTitle": "Cône de lumière équipé",
+ "modalBtnMaxLc": "⭐ Cône au max (Niv.80 S5)",
+ "lblLcId": "ID de cône de lumière",
+ "modalLcIdPlaceholder": "ex. 21002 ou 24001",
+ "lblLcLevel": "Niveau du cône (1-80)",
+ "lblLcRank": "Superposition (S1-S5)",
+ "modalBtnClose": "✕ Fermer",
+ "modalBtnSave": "💾 Enregistrer le personnage",
+ "pickerTitle": "Sélectionner un personnage pour l'équipe",
+ "pickerSearchPlaceholder": "🔍 Rechercher un personnage...",
+ "apiModalTitle": "⚙️ Paramètres de connexion au serveur API",
+ "btnCancel": "Annuler",
+ "btnSaveTest": "Enregistrer et tester",
+ "toastSlotUpdated": "Emplacement {slot} mis à jour avec : {name}",
+ "toastCharMaxed": "⭐ {name} au max (Niv. 80 E6)",
+ "toastCharSaved": "Personnage {name} enregistré",
+ "toastAllSkillsMaxed": "⭐ Compétences et traces au max",
+ "toastServerSwitched": "Mode serveur basculé sur : {mode}",
+ "tbOptions": {
+ "MalePhysical": "Pionnier (Homme) - Physique",
+ "FemalePhysical": "Pionnière (Femme) - Physique",
+ "MalePreservation": "Pionnier (Homme) - Feu",
+ "FemalePreservation": "Pionnière (Femme) - Feu",
+ "MaleHarmony": "Pionnier (Homme) - Harmonie",
+ "FemaleHarmony": "Pionnière (Femme) - Harmonie",
+ "MaleRemembrance": "Pionnier (Homme) - Souvenir",
+ "FemaleRemembrance": "Pionnière (Femme) - Souvenir"
},
- paths: {
- Destruction: "Destruction",
- Hunt: "Chasse",
- Erudition: "Érudition",
- Harmony: "Harmonie",
- Nihility: "Nihilité",
- Preservation: "Préservation",
- Abundance: "Abondance",
- Remembrance: "Souvenir",
- Unknown: "Inconnu",
- Elation: "Allégresse"
- }
+ "marchOptions": {
+ "MarchHunt": "March 7th - La Chasse",
+ "MarchPreservation": "March 7th - La Préservation"
+ },
+ "elements": {
+ "Physical": "Physique",
+ "Fire": "Feu",
+ "Ice": "Glace",
+ "Lightning": "Foudre",
+ "Wind": "Vent",
+ "Quantum": "Quantique",
+ "Imaginary": "Imaginaire",
+ "Unknown": "Inconnu"
+ },
+ "paths": {
+ "Destruction": "La Destruction",
+ "Hunt": "La Chasse",
+ "Erudition": "L'Érudition",
+ "Harmony": "L'Harmonie",
+ "Nihility": "La Nihilité",
+ "Preservation": "La Préservation",
+ "Abundance": "L'Abondance",
+ "Remembrance": "Le Souvenir",
+ "Unknown": "Inconnu",
+ "Elation": "L'Allégresse"
+ },
+ "settingsSaved": "Paramètres enregistrés avec succès !",
+ "settingsReset": "Paramètres réinitialisés par défaut"
},
-
- de: {
- appName: "GaC-Srtool",
- appSubtitle: "Star Rail FreeSR Server Controller",
- online: "Online",
- offline: "Offline",
- checking: "Prüfe...",
- refresh: "🔄 Aktualisieren",
- connectFailed: "Verbindung fehlgeschlagen",
- tabDashboard: "📊 Übersicht",
- tabAvatars: "👥 Figuren",
- tabExrank: "⚡ Ex-Rang Talente",
- tabTeleport: "🚀 Teleportation",
- tabJson: "📝 JSON-Tools",
- tabSettings: "⚙️ Einstellungen",
- statAvatars: "Figuren im Besitz",
- statLightcones: "Lichtkegel",
- statRelics: "Relikte",
- serverStatusTitle: "📍 Serverstatus & Position",
- quickActionsTitle: "⚡ Schnellaktionen",
- quickActionsSubtitle: "Befehle direkt an das API-Gateway senden",
- btnMaxAll: "⭐ Alle Figuren maximieren (Stufe 80 & E6)",
- btnWarpExpress: "🚂 Zum Astralexpress teleportieren",
- btnSyncPersistent: "💾 Speicherdaten synchronisieren",
- currentLineupTitle: "🎮 Aktuelle Aufstellung",
- slot: "Platz",
- slotEmpty: "(Leer)",
- coords: "Koordinaten (X, Y, Z)",
- searchPlaceholder: "🔍 Nach Name oder ID suchen...",
- filterAllRarity: "Alle Seltenheiten",
- filter5Star: "5 Sterne (SSR)",
- filter4Star: "4 Sterne (SR)",
- btnReload: "🔄 Neu laden",
- eidolonLabel: "EIDOLON (E):",
- confirmMaxAll: "Alle Figuren auf Stufe 80 und E6 aufwerten?",
- maxAllSuccess: "Alle Figuren wurden maximiert!",
- avatarRankSuccess: "Figur {id} auf E{rank} gesetzt",
- exrankTitle: "⚡ Ex-Rang Talentsystem",
- exrankSubtitle: "Aktivieren Sie Ex-Rang Talente in FreeSR (Jing Yuan CC-Immunität, Dan Heng IL, Acheron)",
- btnEnableAll: "Alle Ex-Ränge aktivieren",
- btnDisableAll: "Alle Ex-Ränge deaktivieren",
- exrankToggleSuccess: "{name}: Ex-Rang {status}",
- exrankAllSuccess: "Alle Ex-Ränge {status}",
- enabled: "aktiviert",
- disabled: "deaktiviert",
- presetsTitle: "📍 Sichere Teleport-Ziele",
- presetsSubtitle: "Klicken, um den Spieler sofort zu teleportieren",
- customTeleportTitle: "🎯 Benutzerdefinierte Koordinaten",
- customTeleportSubtitle: "Geben Sie PlaneID, FloorID, EntryID und Koordinaten ein",
- btnExecuteWarp: "🚀 Teleport ausführen",
- warpBtn: "🚀 Teleport",
- warpSuccess: "Erfolgreich zu {label} teleportiert",
- warpFailed: "Teleport fehlgeschlagen: {err}",
- btnFreesr: "📄 freesr-data.json",
- btnPersistent: "💾 persistent",
- btnBeautify: "✨ JSON formatieren",
- btnDownload: "📥 Backup herunterladen",
- btnUpload: "📤 Datei hochladen",
- btnSaveServer: "💾 Auf Server speichern",
- jsonTip: "Tipp: JSON bearbeiten und 'Auf Server speichern' klicken",
- jsonStatusReady: "Bereit",
- jsonStatusOpening: "Öffne: {name}",
- jsonSaveSuccess: "Datei {name} erfolgreich gespeichert",
- jsonInvalid: "Ungültiges JSON-Format",
- apiSettingsTitle: "⚙️ API-Gateway Verbindungseinstellungen",
- apiSettingsSubtitle: "Passen Sie Port oder IP gemäß Ihrer server.json an",
- lblApiGatewayUrl: "REST API Gateway URL",
- lblPingInterval: "Prüfintervall (Sekunden)",
- btnSaveSettings: "💾 Einstellungen speichern",
- btnResetDefault: "Auf Standard zurücksetzen",
- hostGuideTitle: "🌐 Auf GitHub Pages kostenlos hosten (100% Kostenlos)",
- hostGuideSubtitle: "Hosten Sie dieses Tool ohne Kosten direkt auf GitHub",
- settingsSaved: "Einstellungen gespeichert!",
- settingsReset: "Auf Standardeinstellungen zurückgesetzt",
- elements: {
- Physical: "Physisch",
- Fire: "Feuer",
- Ice: "Eis",
- Lightning: "Blitz",
- Wind: "Wind",
- Quantum: "Quanten",
- Imaginary: "Imaginär",
- Unknown: "Unbekannt"
+ "de": {
+ "appName": "GaC-Srtool",
+ "appSubtitle": "Star Rail FreeSR- & Server-Controller",
+ "online": "Verbunden",
+ "offline": "Offline",
+ "checking": "Prüfen...",
+ "refresh": "🔄 Aktualisieren",
+ "connectFailed": "Verbindung fehlgeschlagen",
+ "tabDashboard": "📊 Dashboard & Team",
+ "tabAvatars": "👥 Charaktere",
+ "tabEquipment": "🗡️ Lichtkegel & Relikte",
+ "tabPersistent": "💾 GaC-Speicher-Manager",
+ "tabExrank": "⚡ Ex-Rank-Fähigkeiten",
+ "tabJson": "📝 JSON-Verwaltung",
+ "tabSettings": "⚙️ Einstellungen",
+ "statAvatars": "Charaktere im Besitz",
+ "statLightcones": "Lichtkegel",
+ "statRelics": "Relikte",
+ "serverStatusTitle": "📍 Serverstatus & Koordinaten",
+ "lblServerModeActive": "Aktiver Servermodus",
+ "lblApiEndpoint": "API-Gateway-Endpunkt",
+ "lblPlaneId": "Ebenen-ID",
+ "lblFloorId": "Stockwerk-ID",
+ "coords": "Charakterkoordinaten XYZ",
+ "quickActionsTitle": "⚡ Schnellaktionen",
+ "quickActionsSubtitle": "Befehle sofort an den Server senden",
+ "btnMaxAll": "⭐ Alle Charaktere auf St. 80 & E6",
+ "btnSyncPersistent": "💾 Persistent-Speicherstand synchronisieren",
+ "currentLineupTitle": "🎮 Aktuelles Team",
+ "slot": "Platz",
+ "slotEmpty": "Leer (Klicken zum Hinzufügen)",
+ "slotTooltip": "Klicken, um einen Charakter für diesen Platz auszuwählen",
+ "removeFromTeam": "Aus dem Team entfernen",
+ "searchPlaceholder": "🔍 Nach Name oder ID suchen...",
+ "filterAllRarity": "Alle Seltenheiten",
+ "filter5Star": "5 Sterne",
+ "filter4Star": "4 Sterne",
+ "filterAllElements": "Alle Elemente",
+ "filterAllPaths": "Alle Pfade",
+ "btnReload": "🔄 Neu laden",
+ "avatarsLoading": "Charaktere werden geladen...",
+ "noAvatarsFound": "Keine passenden Charaktere gefunden",
+ "eidolonLabel": "Eidolon:",
+ "confirmMaxAll": "Alle Charaktere auf Stufe 80 aufwerten und E6 freischalten?",
+ "maxAllSuccess": "Alle Charaktere erfolgreich maximiert!",
+ "avatarRankSuccess": "Charakter {id} auf E{rank} aktualisiert",
+ "eqLcTitle": "🗡️ Lichtkegel im Inventar",
+ "eqLcSubtitle": "Alle Lichtkegel aus freesr-data.json",
+ "eqLcLoading": "Lichtkegeldaten werden geladen...",
+ "eqRelicTitle": "🛡️ Relikte im Inventar",
+ "eqRelicSubtitle": "Alle Relikte aus freesr-data.json",
+ "eqRelicLoading": "Reliktdaten werden geladen...",
+ "itemCount": "{n} Gegenstände",
+ "notEquipped": "Nicht ausgerüstet",
+ "equippedBy": "Ausgerüstet von",
+ "noLcData": "Keine Lichtkegeldaten verfügbar",
+ "noRelicData": "Keine Reliktdaten verfügbar",
+ "persistentTitle": "💾 GaC-Speicher-Manager",
+ "persistentBadge": "Eigener benutzerdefinierter Server",
+ "persistentSubtitle": "Die persistent-Datei speichert GaC-spezifische Einstellungen wie Geschlecht/Element des Trailblazers, Pfad von 7. März und globale Schalter",
+ "persistentTbM7Title": "👤 Trailblazer & 7. März",
+ "lblTbGenderElement": "Geschlecht & Element des Trailblazers",
+ "lblM7Path": "Pfad von 7. März",
+ "btnSaveCharSettings": "💾 Charaktereinstellungen speichern",
+ "persistentGlobalTitle": "⚙️ GaC-Sonderfunktionsschalter",
+ "swGlobalDesc": "Serverweite Silver Wolf-Spezialmechanik aktivieren",
+ "castoriceGlobalDesc": "Serverweite Castorice-Spezialmechanik aktivieren",
+ "btnSaveGlobalSwitch": "💾 Globale Schalter speichern",
+ "exrankTitle": "⚡ Ex-Rank-Fähigkeitensystem",
+ "exrankSubtitle": "Aktiviert spezielle Ex-Rank-Talente in FreeSR (z.B. CC-Immunität für Jing Yuan, Dan Heng IL, Acheron)",
+ "btnEnableAll": "Alle Ex-Ranks aktivieren",
+ "btnDisableAll": "Alle Ex-Ranks deaktivieren",
+ "exrankToggleSuccess": "{name}: Ex-Rank {status}",
+ "exrankAllSuccess": "Alle Charaktere Ex-Rank {status}",
+ "enabled": "aktiviert",
+ "disabled": "deaktiviert",
+ "btnFreesr": "📄 freesr-data.json",
+ "btnPersistent": "💾 persistent",
+ "btnBeautify": "✨ JSON formatieren",
+ "btnDownload": "📥 Backup herunterladen",
+ "btnUpload": "📤 Datei hochladen",
+ "btnSaveServer": "💾 Auf Server speichern",
+ "jsonTip": "Tipp: JSON bearbeiten und auf 'Auf Server speichern' klicken",
+ "jsonStatusReady": "Bereit",
+ "jsonStatusOpening": "Öffnen: {name}",
+ "jsonSaveSuccess": "Datei {name} erfolgreich gespeichert",
+ "jsonInvalid": "Ungültiges JSON-Format",
+ "apiSettingsTitle": "⚙️ API-Gateway-Verbindungseinstellungen",
+ "apiSettingsSubtitle": "Passen Sie Port oder IP gemäß Ihrer server.json an",
+ "lblServerMode": "Servermodus",
+ "lblApiGatewayUrl": "REST API Gateway URL",
+ "lblPingInterval": "Prüfintervall (Sekunden)",
+ "btnSaveSettings": "💾 Einstellungen speichern",
+ "btnResetDefault": "Auf Standard zurücksetzen",
+ "modalTitleCharEdit": "Charakteranpassung",
+ "modalBtnMaxAllChar": "⭐ Alles maximieren",
+ "modalTabSkills": "⚡ Fähigkeiten & Spuren",
+ "modalTabStatus": "⚙️ Stufe & Eidolon",
+ "modalTabLightcone": "🗡️ Lichtkegel",
+ "modalSkillCombatTitle": "Kampffertigkeitsstufe",
+ "modalBtnMaxSkills": "⭐ Alle Fähigkeiten max. (10/10)",
+ "modalSkillBasic": "Standardangriff",
+ "modalSkillSkill": "Fertigkeit",
+ "modalSkillUltra": "Ultimate",
+ "modalSkillTalent": "Talent",
+ "modalTracesTitle": "Spuren & Technik",
+ "modalTraceTechnique": "⚡ Technik — Vor dem Kampf aktiv",
+ "traceA2": "🌟 Zusatzfähigkeit A2",
+ "traceA4": "🌟 Zusatzfähigkeit A4",
+ "traceA6": "🌟 Zusatzfähigkeit A6",
+ "traceStatNodes": "💎 Alle Attributs-Bonus-Knoten (10 Knoten)",
+ "lblLevelRange": "Stufe (1-80)",
+ "lblPromotionRange": "Aufstieg (0-6)",
+ "lblEidolonLevel": "Eidolon-Stufe",
+ "btnResetE0": "Auf E0 zurücksetzen",
+ "btnMaxE6": "⭐ Voll E6",
+ "modalEnergyTitle": "Ultimate-Energie",
+ "modalEnergy50": "50% setzen",
+ "modalEnergy100": "Voll 100%",
+ "modalLcTitle": "Ausgerüsteter Lichtkegel",
+ "modalBtnMaxLc": "⭐ Lichtkegel max. (St.80 Überl.5)",
+ "lblLcId": "Lichtkegel-ID",
+ "modalLcIdPlaceholder": "z.B. 21002 oder 24001",
+ "lblLcLevel": "Lichtkegel-Stufe (1-80)",
+ "lblLcRank": "Überlagerung (S1-S5)",
+ "modalBtnClose": "✕ Schließen",
+ "modalBtnSave": "💾 Charakter speichern",
+ "pickerTitle": "Charakter für das Team auswählen",
+ "pickerSearchPlaceholder": "🔍 Charakter zum Hinzufügen suchen...",
+ "apiModalTitle": "⚙️ API-Server-Verbindungseinstellungen",
+ "btnCancel": "Abbrechen",
+ "btnSaveTest": "Speichern & Testen",
+ "toastSlotUpdated": "Platz {slot} auf {name} aktualisiert",
+ "toastCharMaxed": "⭐ {name} auf St. 80 E6 maximiert",
+ "toastCharSaved": "Charakter {name} gespeichert",
+ "toastAllSkillsMaxed": "⭐ Alle Fertigkeiten und Spuren maximiert",
+ "toastServerSwitched": "Servermodus gewechselt zu: {mode}",
+ "tbOptions": {
+ "MalePhysical": "Trailblazer (Männlich) - Physisch",
+ "FemalePhysical": "Trailblazer (Weiblich) - Physisch",
+ "MalePreservation": "Trailblazer (Männlich) - Feuer",
+ "FemalePreservation": "Trailblazer (Weiblich) - Feuer",
+ "MaleHarmony": "Trailblazer (Männlich) - Harmonie",
+ "FemaleHarmony": "Trailblazer (Weiblich) - Harmonie",
+ "MaleRemembrance": "Trailblazer (Männlich) - Erinnerung",
+ "FemaleRemembrance": "Trailblazer (Weiblich) - Erinnerung"
},
- paths: {
- Destruction: "Zerstörung",
- Hunt: "Jagd",
- Erudition: "Gelehrsamkeit",
- Harmony: "Harmonie",
- Nihility: "Nichtigkeit",
- Preservation: "Bewahrung",
- Abundance: "Überfluss",
- Remembrance: "Erinnerung",
- Unknown: "Unbekannt",
- Elation: "Frohsinn"
- }
+ "marchOptions": {
+ "MarchHunt": "7. März - Die Jagd",
+ "MarchPreservation": "7. März - Die Bewahrung"
+ },
+ "elements": {
+ "Physical": "Physisch",
+ "Fire": "Feuer",
+ "Ice": "Eis",
+ "Lightning": "Blitz",
+ "Wind": "Wind",
+ "Quantum": "Quanten",
+ "Imaginary": "Imaginär",
+ "Unknown": "Unbekannt"
+ },
+ "paths": {
+ "Destruction": "Die Zerstörung",
+ "Hunt": "Die Jagd",
+ "Erudition": "Die Gelehrsamkeit",
+ "Harmony": "Die Harmonie",
+ "Nihility": "Die Nichtigkeit",
+ "Preservation": "Die Bewahrung",
+ "Abundance": "Der Überfluss",
+ "Remembrance": "Das Gedenken",
+ "Unknown": "Unbekannt",
+ "Elation": "Der Frohsinn"
+ },
+ "settingsSaved": "Einstellungen erfolgreich gespeichert!",
+ "settingsReset": "Auf Standardeinstellungen zurückgesetzt"
},
-
- ru: {
- appName: "GaC-Srtool",
- appSubtitle: "Панель управления Star Rail FreeSR",
- online: "В сети (Online)",
- offline: "Не в сети (Offline)",
- checking: "Проверка...",
- refresh: "🔄 Обновить",
- connectFailed: "Ошибка подключения",
- tabDashboard: "📊 Панель управления",
- tabAvatars: "👥 Персонажи",
- tabExrank: "⚡ Навыки Ex-Rank",
- tabTeleport: "🚀 Телепортация",
- tabJson: "📝 Управление JSON",
- tabSettings: "⚙️ Настройки и гайд",
- statAvatars: "Персонажи во владении",
- statLightcones: "Световые конусы",
- statRelics: "Реликвии",
- serverStatusTitle: "📍 Статус сервера и координаты",
- quickActionsTitle: "⚡ Быстрые действия",
- quickActionsSubtitle: "Отправка команд напрямую в REST API Gateway",
- btnMaxAll: "⭐ Максимизировать всех (Ур. 80 и E6)",
- btnWarpExpress: "🚂 Телепорт в Звёздный экспресс",
- btnSyncPersistent: "💾 Синхронизировать сохранение",
- currentLineupTitle: "🎮 Текущий отряд",
- slot: "Слот",
- slotEmpty: "(Пусто)",
- coords: "Координаты (X, Y, Z)",
- searchPlaceholder: "🔍 Поиск по имени или ID...",
- filterAllRarity: "Все редкости",
- filter5Star: "5 Звёзд (SSR)",
- filter4Star: "4 Звезды (SR)",
- btnReload: "🔄 Перезагрузить",
- eidolonLabel: "ЭЙДОЛОН (E):",
- confirmMaxAll: "Повысить всех персонажей до 80 ур. и E6?",
- maxAllSuccess: "Все персонажи успешно улучшены!",
- avatarRankSuccess: "Персонаж {id} обновлен до E{rank}",
- exrankTitle: "⚡ Система навыков Ex-Rank",
- exrankSubtitle: "Включение уникальных механик Ex-Rank в FreeSR (Цзин Юань без прерывания контроля, Дань Хэн Пожиратель Луны, Ахерон)",
- btnEnableAll: "Включить все Ex-Rank",
- btnDisableAll: "Отключить все Ex-Rank",
- exrankToggleSuccess: "{name}: Ex-Rank {status}",
- exrankAllSuccess: "Ex-Rank всех персонажей {status}",
- enabled: "включен",
- disabled: "отключен",
- presetsTitle: "📍 Безопасные точки телепортации",
- presetsSubtitle: "Нажмите для мгновенного перемещения персонажа",
- customTeleportTitle: "🎯 Пользовательские координаты",
- customTeleportSubtitle: "Укажите PlaneID, FloorID, EntryID и координаты",
- btnExecuteWarp: "🚀 Выполнить телепортацию",
- warpBtn: "🚀 Телепорт",
- warpSuccess: "Телепортация в {label} успешна",
- warpFailed: "Ошибка телепортации: {err}",
- btnFreesr: "📄 freesr-data.json",
- btnPersistent: "💾 persistent",
- btnBeautify: "✨ Форматировать JSON",
- btnDownload: "📥 Скачать бэкап",
- btnUpload: "📤 Загрузить файл",
- btnSaveServer: "💾 Сохранить на сервер",
- jsonTip: "Совет: Отредактируйте JSON и нажмите 'Сохранить на сервер'",
- jsonStatusReady: "Готово",
- jsonStatusOpening: "Открытие: {name}",
- jsonSaveSuccess: "Файл {name} сохранен",
- jsonInvalid: "Неверный формат JSON",
- apiSettingsTitle: "⚙️ Настройка подключения API Gateway",
- apiSettingsSubtitle: "Настройте порт или IP согласно вашему server.json",
- lblApiGatewayUrl: "URL REST API Gateway",
- lblPingInterval: "Интервал проверки (сек)",
- btnSaveSettings: "💾 Сохранить настройки",
- btnResetDefault: "Сбросить по умолчанию",
- hostGuideTitle: "🌐 Бесплатный хостинг на GitHub Pages (100% Бесплатно)",
- hostGuideSubtitle: "Разместите панель бесплатно на GitHub без затрат",
- settingsSaved: "Настройки сохранены!",
- settingsReset: "Настройки сброшены",
- elements: {
- Physical: "Физический",
- Fire: "Огненный",
- Ice: "Ледяной",
- Lightning: "Электрический",
- Wind: "Ветряной",
- Quantum: "Квантовый",
- Imaginary: "Мнимый",
- Unknown: "Неизвестно"
+ "ru": {
+ "appName": "GaC-Srtool",
+ "appSubtitle": "Контроллер сервера и FreeSR Star Rail",
+ "online": "Подключено",
+ "offline": "Не в сети",
+ "checking": "Проверка...",
+ "refresh": "🔄 Обновить",
+ "connectFailed": "Ошибка подключения",
+ "tabDashboard": "📊 Панель и отряд",
+ "tabAvatars": "👥 Персонажи",
+ "tabEquipment": "🗡️ Световые конусы и реликвии",
+ "tabPersistent": "💾 Управление сохранениями GaC",
+ "tabExrank": "⚡ Особые навыки Ex-Rank",
+ "tabJson": "📝 Управление JSON",
+ "tabSettings": "⚙️ Настройки",
+ "statAvatars": "Полученные персонажи",
+ "statLightcones": "Световые конусы",
+ "statRelics": "Реликвии",
+ "serverStatusTitle": "📍 Статус сервера и координаты",
+ "lblServerModeActive": "Активный режим сервера",
+ "lblApiEndpoint": "Конечная точка API Gateway",
+ "lblPlaneId": "ID плоскости",
+ "lblFloorId": "ID этажа",
+ "coords": "Координаты персонажа XYZ",
+ "quickActionsTitle": "⚡ Быстрые действия",
+ "quickActionsSubtitle": "Мгновенная отправка команд на сервер",
+ "btnMaxAll": "⭐ Все персонажи 80 ур. и E6",
+ "btnSyncPersistent": "💾 Синхронизировать сохранение Persistent",
+ "currentLineupTitle": "🎮 Текущий отряд",
+ "slot": "Слот",
+ "slotEmpty": "Пусто (нажмите для добавления)",
+ "slotTooltip": "Нажмите, чтобы выбрать персонажа в этот слот",
+ "removeFromTeam": "Убрать из отряда",
+ "searchPlaceholder": "🔍 Поиск по имени или ID...",
+ "filterAllRarity": "Все редкости",
+ "filter5Star": "5 Звёзд",
+ "filter4Star": "4 Звезды",
+ "filterAllElements": "Все элементы",
+ "filterAllPaths": "Все Пути",
+ "btnReload": "🔄 Перезагрузить",
+ "avatarsLoading": "Загрузка данных персонажей...",
+ "noAvatarsFound": "Персонажи не найдены",
+ "eidolonLabel": "Эйдолон:",
+ "confirmMaxAll": "Повысить всех персонажей до 80 уровня и разблокировать E6?",
+ "maxAllSuccess": "Все персонажи успешно прокачаны!",
+ "avatarRankSuccess": "Персонаж {id} повышен до эйдолона {rank}",
+ "eqLcTitle": "🗡️ Световые конусы в инвентаре",
+ "eqLcSubtitle": "Все световые конусы из freesr-data.json",
+ "eqLcLoading": "Загрузка конусов...",
+ "eqRelicTitle": "🛡️ Реликвии в инвентаре",
+ "eqRelicSubtitle": "Все реликвии из freesr-data.json",
+ "eqRelicLoading": "Загрузка реликвий...",
+ "itemCount": "{n} шт.",
+ "notEquipped": "Не экипировано",
+ "equippedBy": "Экипировано на",
+ "noLcData": "Нет данных о конусах",
+ "noRelicData": "Нет данных о реликвиях",
+ "persistentTitle": "💾 Управление сохранениями GaC",
+ "persistentBadge": "Наш собственный сервер",
+ "persistentSubtitle": "Файл persistent хранит уникальные настройки GaC: пол/путь Первопроходца, путь Март 7 и глобальные переключатели",
+ "persistentTbM7Title": "👤 Первопроходец и Март 7",
+ "lblTbGenderElement": "Пол и путь Первопроходца",
+ "lblM7Path": "Путь Март 7",
+ "btnSaveCharSettings": "💾 Сохранить настройки персонажей",
+ "persistentGlobalTitle": "⚙️ Особые функции GaC",
+ "swGlobalDesc": "Включить особую механику Серебряного Волка на всем сервере",
+ "castoriceGlobalDesc": "Включить особую механику Castorice на всем сервере",
+ "btnSaveGlobalSwitch": "💾 Сохранить глобальные переключатели",
+ "exrankTitle": "⚡ Система навыков Ex-Rank",
+ "exrankSubtitle": "Включение уникальных талантов Ex-Rank в FreeSR (иммунитет Цзин Юаня к контролю, Дань Хэн Пожиратель Луны, Ахерон)",
+ "btnEnableAll": "Включить все Ex-Rank",
+ "btnDisableAll": "Выключить все Ex-Rank",
+ "exrankToggleSuccess": "{name}: Ex-Rank {status}",
+ "exrankAllSuccess": "Все персонажи Ex-Rank {status}",
+ "enabled": "включен",
+ "disabled": "выключен",
+ "btnFreesr": "📄 freesr-data.json",
+ "btnPersistent": "💾 persistent",
+ "btnBeautify": "✨ Форматировать JSON",
+ "btnDownload": "📥 Скачать копию",
+ "btnUpload": "📤 Загрузить файл",
+ "btnSaveServer": "💾 Сохранить на сервере",
+ "jsonTip": "Совет: измените JSON и нажмите 'Сохранить на сервере'",
+ "jsonStatusReady": "Готово",
+ "jsonStatusOpening": "Открытие: {name}",
+ "jsonSaveSuccess": "Файл {name} успешно сохранен",
+ "jsonInvalid": "Неверный формат JSON",
+ "apiSettingsTitle": "⚙️ Настройки подключения к API Gateway",
+ "apiSettingsSubtitle": "Измените порт или IP в соответствии с вашим server.json",
+ "lblServerMode": "Режим сервера",
+ "lblApiGatewayUrl": "URL REST API Gateway",
+ "lblPingInterval": "Интервал проверки (секунды)",
+ "btnSaveSettings": "💾 Сохранить настройки",
+ "btnResetDefault": "Сбросить по умолчанию",
+ "modalTitleCharEdit": "Настройка персонажа",
+ "modalBtnMaxAllChar": "⭐ Максимум всего",
+ "modalTabSkills": "⚡ Навыки и следы",
+ "modalTabStatus": "⚙️ Уровень и Эйдолоны",
+ "modalTabLightcone": "🗡️ Световой конус",
+ "modalSkillCombatTitle": "Уровни боевых навыков",
+ "modalBtnMaxSkills": "⭐ Все навыки на макс. (10/10)",
+ "modalSkillBasic": "Базовая атака",
+ "modalSkillSkill": "Навык",
+ "modalSkillUltra": "Сверхспособность",
+ "modalSkillTalent": "Талант",
+ "modalTracesTitle": "Следы и техника",
+ "modalTraceTechnique": "⚡ Техника — Активна перед боем",
+ "traceA2": "🌟 Доп. способность A2",
+ "traceA4": "🌟 Доп. способность A4",
+ "traceA6": "🌟 Доп. способность A6",
+ "traceStatNodes": "💎 Все узлы усиления параметров (10 узлов)",
+ "lblLevelRange": "Уровень (1-80)",
+ "lblPromotionRange": "Возвышение (0-6)",
+ "lblEidolonLevel": "Уровень Эйдолона",
+ "btnResetE0": "Сбросить на E0",
+ "btnMaxE6": "⭐ Макс E6",
+ "modalEnergyTitle": "Энергия сверхспособности",
+ "modalEnergy50": "Задать 50%",
+ "modalEnergy100": "100% (Макс)",
+ "modalLcTitle": "Экипированный конус",
+ "modalBtnMaxLc": "⭐ Макс. конус (Ур.80 Н5)",
+ "lblLcId": "ID светового конуса",
+ "modalLcIdPlaceholder": "напр. 21002 или 24001",
+ "lblLcLevel": "Уровень конуса (1-80)",
+ "lblLcRank": "Наложение (S1-S5)",
+ "modalBtnClose": "✕ Закрыть",
+ "modalBtnSave": "💾 Сохранить персонажа",
+ "pickerTitle": "Выбор персонажа в отряд",
+ "pickerSearchPlaceholder": "🔍 Поиск персонажа...",
+ "apiModalTitle": "⚙️ Настройки подключения к серверу API",
+ "btnCancel": "Отмена",
+ "btnSaveTest": "Сохранить и проверить",
+ "toastSlotUpdated": "Слот {slot} изменён на: {name}",
+ "toastCharMaxed": "⭐ {name} прокачан до 80 ур. E6",
+ "toastCharSaved": "Персонаж {name} сохранен",
+ "toastAllSkillsMaxed": "⭐ Все навыки и следы на максимуме",
+ "toastServerSwitched": "Режим сервера переключен на: {mode}",
+ "tbOptions": {
+ "MalePhysical": "Первопроходец (Муж.) - Физический",
+ "FemalePhysical": "Первопроходец (Жен.) - Физический",
+ "MalePreservation": "Первопроходец (Муж.) - Огненный",
+ "FemalePreservation": "Первопроходец (Жен.) - Огненный",
+ "MaleHarmony": "Первопроходец (Муж.) - Гармония",
+ "FemaleHarmony": "Первопроходец (Жен.) - Гармония",
+ "MaleRemembrance": "Первопроходец (Муж.) - Память",
+ "FemaleRemembrance": "Первопроходец (Жен.) - Память"
},
- paths: {
- Destruction: "Разрушение",
- Hunt: "Охота",
- Erudition: "Эрудиция",
- Harmony: "Гармония",
- Nihility: "Небытие",
- Preservation: "Сохранение",
- Abundance: "Изобилие",
- Remembrance: "Память",
- Unknown: "Неизвестно",
- Elation: "Радость"
- }
+ "marchOptions": {
+ "MarchHunt": "Март 7 - Охота",
+ "MarchPreservation": "Март 7 - Сохранение"
+ },
+ "elements": {
+ "Physical": "Физический",
+ "Fire": "Огненный",
+ "Ice": "Ледяной",
+ "Lightning": "Электрический",
+ "Wind": "Ветряной",
+ "Quantum": "Квантовый",
+ "Imaginary": "Мнимый",
+ "Unknown": "Неизвестно"
+ },
+ "paths": {
+ "Destruction": "Разрушение",
+ "Hunt": "Охота",
+ "Erudition": "Эрудиция",
+ "Harmony": "Гармония",
+ "Nihility": "Небытие",
+ "Preservation": "Сохранение",
+ "Abundance": "Изобилие",
+ "Remembrance": "Память",
+ "Unknown": "Неизвестно",
+ "Elation": "Радость"
+ },
+ "settingsSaved": "Настройки успешно сохранены!",
+ "settingsReset": "Настройки сброшены по умолчанию"
},
-
- pt: {
- appName: "GaC-Srtool",
- appSubtitle: "Controlador de Servidor Star Rail FreeSR",
- online: "Online",
- offline: "Offline",
- checking: "Verificando...",
- refresh: "🔄 Atualizar",
- connectFailed: "Falha na conexão",
- tabDashboard: "📊 Painel",
- tabAvatars: "👥 Personagens",
- tabExrank: "⚡ Habilidades Ex-Rank",
- tabTeleport: "🚀 Teleporte",
- tabJson: "📝 Ferramentas JSON",
- tabSettings: "⚙️ Configurações & Guia",
- statAvatars: "Personagens obtidos",
- statLightcones: "Cones de Luz",
- statRelics: "Relíquias",
- serverStatusTitle: "📍 Status do servidor e posição atual",
- quickActionsTitle: "⚡ Ações rápidas",
- quickActionsSubtitle: "Enviar comandos diretamente ao API Gateway",
- btnMaxAll: "⭐ Maximizar todos (Nív. 80 e E6)",
- btnWarpExpress: "🚂 Teleportar para o Expresso Astral",
- btnSyncPersistent: "💾 Sincronizar dados salvos",
- currentLineupTitle: "🎮 Equipe atual",
- slot: "Posição",
- slotEmpty: "(Vazio)",
- coords: "Coordenadas (X, Y, Z)",
- searchPlaceholder: "🔍 Buscar nome ou ID...",
- filterAllRarity: "Todas as raridades",
- filter5Star: "5 Estrelas (SSR)",
- filter4Star: "4 Estrelas (SR)",
- btnReload: "🔄 Recarregar",
- eidolonLabel: "EIDOLON (E):",
- confirmMaxAll: "Evoluir todos os personagens para nível 80 e E6?",
- maxAllSuccess: "Todos os personagens maximizados com sucesso!",
- avatarRankSuccess: "Personagem {id} atualizado para E{rank}",
- exrankTitle: "⚡ Sistema de Ex-Rank",
- exrankSubtitle: "Ativar vantagens exclusivas Ex-Rank no FreeSR (imunidade a CC para Jing Yuan, Dan Heng IL, Acheron)",
- btnEnableAll: "Ativar todos os Ex-Ranks",
- btnDisableAll: "Desativar todos os Ex-Ranks",
- exrankToggleSuccess: "{name}: Ex-Rank {status}",
- exrankAllSuccess: "Todos os Ex-Ranks {status}",
- enabled: "ativado",
- disabled: "desativado",
- presetsTitle: "📍 Pontos seguros pré-definidos",
- presetsSubtitle: "Clique para teleportar o personagem instantaneamente",
- customTeleportTitle: "🎯 Coordenadas personalizadas",
- customTeleportSubtitle: "Especifique PlaneID, FloorID, EntryID e coordenadas",
- btnExecuteWarp: "🚀 Executar teleporte",
- warpBtn: "🚀 Teleportar",
- warpSuccess: "Teleportado para {label} com sucesso",
- warpFailed: "Falha no teleporte: {err}",
- btnFreesr: "📄 freesr-data.json",
- btnPersistent: "💾 persistent",
- btnBeautify: "✨ Formatar JSON",
- btnDownload: "📥 Baixar backup",
- btnUpload: "📤 Carregar arquivo",
- btnSaveServer: "💾 Salvar no servidor",
- jsonTip: "Dica: Edite o JSON e clique em 'Salvar no servidor'",
- jsonStatusReady: "Pronto",
- jsonStatusOpening: "Abrindo: {name}",
- jsonSaveSuccess: "Arquivo {name} salvo com sucesso",
- jsonInvalid: "Formato JSON inválido",
- apiSettingsTitle: "⚙️ Configurações de Conexão com API Gateway",
- apiSettingsSubtitle: "Ajuste a porta ou o IP de acordo com seu server.json",
- lblApiGatewayUrl: "URL do REST API Gateway",
- lblPingInterval: "Intervalo de verificação (segundos)",
- btnSaveSettings: "💾 Salvar configurações",
- btnResetDefault: "Restaurar padrão",
- hostGuideTitle: "🌐 Como hospedar no GitHub Pages (100% Grátis)",
- hostGuideSubtitle: "Hospede esta ferramenta gratuitamente no GitHub",
- settingsSaved: "Configurações salvas!",
- settingsReset: "Configurações restauradas",
- elements: {
- Physical: "Físico",
- Fire: "Fogo",
- Ice: "Gelo",
- Lightning: "Raio",
- Wind: "Vento",
- Quantum: "Quântico",
- Imaginary: "Imaginário",
- Unknown: "Desconhecido"
+ "pt": {
+ "appName": "GaC-Srtool",
+ "appSubtitle": "Controlador de Servidor e FreeSR de Star Rail",
+ "online": "Conectado",
+ "offline": "Offline",
+ "checking": "Verificando...",
+ "refresh": "🔄 Atualizar",
+ "connectFailed": "Falha na Conexão",
+ "tabDashboard": "📊 Painel e Equipe",
+ "tabAvatars": "👥 Personagens",
+ "tabEquipment": "🗡️ Cones de Luz e Relíquias",
+ "tabPersistent": "💾 Gerenciador de Salvamento GaC",
+ "tabExrank": "⚡ Habilidades Ex-Rank",
+ "tabJson": "📝 Gerenciamento de JSON",
+ "tabSettings": "⚙️ Configurações",
+ "statAvatars": "Personagens Obtidos",
+ "statLightcones": "Cones de Luz",
+ "statRelics": "Relíquias",
+ "serverStatusTitle": "📍 Status do Servidor e Coordenadas",
+ "lblServerModeActive": "Modo de Servidor Ativo",
+ "lblApiEndpoint": "Ponto de Extremidade da API Gateway",
+ "lblPlaneId": "ID do Plano",
+ "lblFloorId": "ID do Andar",
+ "coords": "Coordenadas do Personagem XYZ",
+ "quickActionsTitle": "⚡ Ações Rápidas",
+ "quickActionsSubtitle": "Enviar comandos para o servidor instantaneamente",
+ "btnMaxAll": "⭐ Todos os personagens Nv. 80 e E6",
+ "btnSyncPersistent": "💾 Sincronizar salvamento Persistent",
+ "currentLineupTitle": "🎮 Equipe Atual",
+ "slot": "Espaço",
+ "slotEmpty": "Vazio (Clique para adicionar)",
+ "slotTooltip": "Clique para escolher um personagem para este espaço",
+ "removeFromTeam": "Remover da equipe",
+ "searchPlaceholder": "🔍 Buscar por nome ou ID de personagem...",
+ "filterAllRarity": "Todas as raridades",
+ "filter5Star": "5 Estrelas",
+ "filter4Star": "4 Estrellas",
+ "filterAllElements": "Todos os elementos",
+ "filterAllPaths": "Todos os caminhos",
+ "btnReload": "🔄 Recarregar",
+ "avatarsLoading": "Carregando personagens...",
+ "noAvatarsFound": "Nenhum personagem correspondente encontrado",
+ "eidolonLabel": "Eidolon:",
+ "confirmMaxAll": "Evoluir todos os personagens para o Nível 80 e desbloquear E6?",
+ "maxAllSuccess": "Todos os personagens foram maximizados com sucesso!",
+ "avatarRankSuccess": "Personagem {id} atualizado para E{rank}",
+ "eqLcTitle": "🗡️ Cones de Luz no Inventário",
+ "eqLcSubtitle": "Todos os cones de luz de freesr-data.json",
+ "eqLcLoading": "Carregando dados dos cones de luz...",
+ "eqRelicTitle": "🛡️ Relíquias no Inventário",
+ "eqRelicSubtitle": "Todas as relíquias de freesr-data.json",
+ "eqRelicLoading": "Carregando dados das relíquias...",
+ "itemCount": "{n} itens",
+ "notEquipped": "Não equipado",
+ "equippedBy": "Equipado por",
+ "noLcData": "Nenhum dado de cone de luz disponível",
+ "noRelicData": "Nenhum dado de relíquia disponível",
+ "persistentTitle": "💾 Gerenciador de Salvamento GaC",
+ "persistentBadge": "Nosso Servidor Personalizado",
+ "persistentSubtitle": "O arquivo persistent armazena configurações específicas do GaC, como gênero/elemento do Desbravador, caminho de 7 de Março e opções globais",
+ "persistentTbM7Title": "👤 Desbravador e 7 de Março",
+ "lblTbGenderElement": "Gênero e Elemento do Desbravador",
+ "lblM7Path": "Caminho de 7 de Março",
+ "btnSaveCharSettings": "💾 Salvar Configurações de Personagem",
+ "persistentGlobalTitle": "⚙️ Recursos Especiais do GaC",
+ "swGlobalDesc": "Ativar recurso global da Silver Wolf em todo o servidor",
+ "castoriceGlobalDesc": "Ativar recurso global da Castorice em todo o servidor",
+ "btnSaveGlobalSwitch": "💾 Salvar Interruptores Globais",
+ "exrankTitle": "⚡ Sistema de Habilidades Ex-Rank",
+ "exrankSubtitle": "Ativa talentos especiais Ex-Rank no FreeSR (ex: imunidade a CC de Jing Yuan, Dan Heng IL, Acheron)",
+ "btnEnableAll": "Ativar todos os Ex-Ranks",
+ "btnDisableAll": "Desativar todos os Ex-Ranks",
+ "exrankToggleSuccess": "{name}: Ex-Rank {status}",
+ "exrankAllSuccess": "Todos os personagens Ex-Rank {status}",
+ "enabled": "ativado",
+ "disabled": "desativado",
+ "btnFreesr": "📄 freesr-data.json",
+ "btnPersistent": "💾 persistent",
+ "btnBeautify": "✨ Formatar JSON",
+ "btnDownload": "📥 Baixar Backup",
+ "btnUpload": "📤 Carregar Arquivo",
+ "btnSaveServer": "💾 Salvar no Servidor",
+ "jsonTip": "Dica: Edite o JSON e clique em 'Salvar no Servidor'",
+ "jsonStatusReady": "Pronto",
+ "jsonStatusOpening": "Abrindo: {name}",
+ "jsonSaveSuccess": "Arquivo {name} salvo com sucesso",
+ "jsonInvalid": "Formato JSON inválido",
+ "apiSettingsTitle": "⚙️ Configurações de Conexão com API Gateway",
+ "apiSettingsSubtitle": "Ajuste a porta ou o IP de acordo com seu server.json",
+ "lblServerMode": "Modo de Servidor",
+ "lblApiGatewayUrl": "URL REST API Gateway",
+ "lblPingInterval": "Intervalo de verificação (segundos)",
+ "btnSaveSettings": "💾 Salvar Configurações",
+ "btnResetDefault": "Restaurar Padrão",
+ "modalTitleCharEdit": "Personalização de Personagem",
+ "modalBtnMaxAllChar": "⭐ Maximizar Tudo",
+ "modalTabSkills": "⚡ Habilidades e Rastros",
+ "modalTabStatus": "⚙️ Nível e Eidolon",
+ "modalTabLightcone": "🗡️ Cone de Luz",
+ "modalSkillCombatTitle": "Níveis de Habilidade de Combate",
+ "modalBtnMaxSkills": "⭐ Todas as habilidades no máx. (10/10)",
+ "modalSkillBasic": "ATQ Básico",
+ "modalSkillSkill": "Perícia",
+ "modalSkillUltra": "Perícia Suprema",
+ "modalSkillTalent": "Talento",
+ "modalTracesTitle": "Rastros e Técnica",
+ "modalTraceTechnique": "⚡ Técnica — Ativa pré-combate",
+ "traceA2": "🌟 Habilidade Bônus A2",
+ "traceA4": "🌟 Habilidade Bônus A4",
+ "traceA6": "🌟 Habilidade Bônus A6",
+ "traceStatNodes": "💎 Todos os nós de atributos bônus (10 nós)",
+ "lblLevelRange": "Nível (1-80)",
+ "lblPromotionRange": "Ascensão (0-6)",
+ "lblEidolonLevel": "Nível de Eidolon",
+ "btnResetE0": "Redefinir E0",
+ "btnMaxE6": "⭐ E6 Máximo",
+ "modalEnergyTitle": "Energia Suprema",
+ "modalEnergy50": "Definir 50%",
+ "modalEnergy100": "Cheio 100%",
+ "modalLcTitle": "Cone de Luz Equipado",
+ "modalBtnMaxLc": "⭐ Cone no máx. (Nv.80 S5)",
+ "lblLcId": "ID do Cone de Luz",
+ "modalLcIdPlaceholder": "ex. 21002 ou 24001",
+ "lblLcLevel": "Nível do Cone (1-80)",
+ "lblLcRank": "Sobreposição (S1-S5)",
+ "modalBtnClose": "✕ Fechar",
+ "modalBtnSave": "💾 Salvar Personagem",
+ "pickerTitle": "Selecionar Personagem para a Equipe",
+ "pickerSearchPlaceholder": "🔍 Buscar personagem para adicionar...",
+ "apiModalTitle": "⚙️ Configurações de Conexão do Servidor API",
+ "btnCancel": "Cancelar",
+ "btnSaveTest": "Salvar e Testar",
+ "toastSlotUpdated": "Espaço {slot} atualizado para: {name}",
+ "toastCharMaxed": "⭐ {name} maximizado para Nv. 80 E6",
+ "toastCharSaved": "Personagem {name} salvo",
+ "toastAllSkillsMaxed": "⭐ Todas as habilidades e rastros maximizados",
+ "toastServerSwitched": "Modo de servidor alterado para: {mode}",
+ "tbOptions": {
+ "MalePhysical": "Desbravador (Masc.) - Físico",
+ "FemalePhysical": "Desbravadora (Fem.) - Físico",
+ "MalePreservation": "Desbravador (Masc.) - Fogo",
+ "FemalePreservation": "Desbravadora (Fem.) - Fogo",
+ "MaleHarmony": "Desbravador (Masc.) - Harmonia",
+ "FemaleHarmony": "Desbravadora (Fem.) - Harmonia",
+ "MaleRemembrance": "Desbravador (Masc.) - A Recordação",
+ "FemaleRemembrance": "Desbravadora (Fem.) - A Recordação"
},
- paths: {
- Destruction: "Destruição",
- Hunt: "Caça",
- Erudition: "Erudição",
- Harmony: "Harmonia",
- Nihility: "Inexistência",
- Preservation: "Preservação",
- Abundance: "Abundância",
- Remembrance: "Recordação",
- Unknown: "Desconhecido",
- Elation: "Alegria"
- }
+ "marchOptions": {
+ "MarchHunt": "7 de Março - A Caça",
+ "MarchPreservation": "7 de Março - A Preservação"
+ },
+ "elements": {
+ "Physical": "Físico",
+ "Fire": "Fogo",
+ "Ice": "Gelo",
+ "Lightning": "Raio",
+ "Wind": "Vento",
+ "Quantum": "Quântico",
+ "Imaginary": "Imaginário",
+ "Unknown": "Desconhecido"
+ },
+ "paths": {
+ "Destruction": "A Destruição",
+ "Hunt": "A Caça",
+ "Erudition": "A Erudição",
+ "Harmony": "A Harmonia",
+ "Nihility": "A Inexistência",
+ "Preservation": "A Preservação",
+ "Abundance": "A Abundância",
+ "Remembrance": "A Recordação",
+ "Unknown": "Desconhecido",
+ "Elation": "A Alegria"
+ },
+ "settingsSaved": "Configurações salvas com sucesso!",
+ "settingsReset": "Configurações restauradas para o padrão"
}
};
@@ -1308,7 +2327,7 @@ export function t(key, vars = {}) {
const dict = TRANSLATIONS[currentLang] || TRANSLATIONS.en || TRANSLATIONS.th;
let text = dict[key] || TRANSLATIONS.en[key] || TRANSLATIONS.th[key] || key;
- // Substitute variables e.g. {id}, {rank}, {name}
+ // Substitute variables e.g. {id}, {rank}, {name}, {slot}, {mode}, {n}
for (const [vKey, vVal] of Object.entries(vars)) {
text = text.replace(new RegExp(`\\{${vKey}\\}`, 'g'), vVal);
}