Files
Gacy-Srtool/js/i18n.js
T

1326 lines
57 KiB
JavaScript
Raw Normal View History

// Multi-language (i18n) definitions for GaC-srtool
// Covers all 13 official languages supported by Honkai: Star Rail
export const SUPPORTED_LANGUAGES = [
{ code: 'th', name: 'ภาษาไทย', flag: '🇹🇭' },
{ code: 'en', name: 'English', flag: '🇺🇸' },
{ code: 'zh-CN', name: '简体中文', flag: '🇨🇳' },
{ code: 'zh-TW', name: '繁體中文', flag: '🇹🇼' },
{ code: 'ja', name: '日本語', flag: '🇯🇵' },
{ code: 'ko', name: '한국어', flag: '🇰🇷' },
{ code: 'vi', name: 'Tiếng Việt', flag: '🇻🇳' },
{ code: 'id', name: 'Bahasa Indonesia', flag: '🇮🇩' },
{ code: 'es', name: 'Español', flag: '🇪🇸' },
{ code: 'fr', name: 'Français', flag: '🇫🇷' },
{ code: 'de', name: 'Deutsch', flag: '🇩🇪' },
{ code: 'ru', name: 'Русский', flag: '🇷🇺' },
{ code: 'pt', name: 'Português', flag: '🇧🇷' }
];
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: "พิกัดตัวละคร (X, Y, Z)",
// Avatars
searchPlaceholder: "🔍 ค้นหาชื่อหรือ ID ตัวละคร...",
filterAllRarity: "ทุกระดับดาว",
filter5Star: "5 ดาว",
filter4Star: "4 ดาว",
btnReload: "🔄 รีโหลด",
eidolonLabel: "Eidolon:",
confirmMaxAll: "ยืนยันปรับตัวละครทั้งหมดให้เป็นเลเวล 80 และปลด E6 หรือไม่?",
maxAllSuccess: "ปรับ Max ทุกตัวละครสำเร็จแล้ว!",
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} สำเร็จ (บันทึกลง Persistent)",
warpFailed: "วาร์ปไม่สำเร็จ: {err}",
// JSON
btnFreesr: "📄 freesr-data.json",
btnPersistent: "💾 ไฟล์เซฟ persistent",
btnBeautify: "✨ จัดรูปแบบ JSON",
btnDownload: "📥 ดาวน์โหลด Backup",
btnUpload: "📤 อัปโหลดไฟล์",
btnSaveServer: "💾 บันทึกไปยังเซิร์ฟเวอร์",
jsonTip: "Tip: สามารถแก้ไขค่าดิบแล้วกด 'บันทึกไปยังเซิร์ฟเวอร์' ได้ทันที",
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 (ฟรี 100%)",
hostGuideSubtitle: "สามารถเปิดใช้งานเว็บนี้บนอินเทอร์เน็ตได้โดยไม่ต้องเสียค่าโฮสต์ใดๆ",
settingsSaved: "บันทึกการตั้งค่าสำเร็จ!",
settingsReset: "คืนค่าเริ่มต้นเรียบร้อย",
// Elements & Paths
elements: {
Physical: "กายภาพ",
Fire: "ไฟ",
Ice: "น้ำแข็ง",
Lightning: "สายฟ้า",
Wind: "ลม",
Quantum: "ควอนตัม",
Imaginary: "จินตภาพ",
Unknown: "ไม่ระบุ"
},
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"
},
paths: {
Destruction: "Destruction",
Hunt: "Hunt",
Erudition: "Erudition",
Harmony: "Harmony",
Nihility: "Nihility",
Preservation: "Preservation",
Abundance: "Abundance",
Remembrance: "Remembrance",
Unknown: "Unknown",
Elation: "Elation"
}
},
"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: "未知"
},
paths: {
Destruction: "毁灭",
Hunt: "巡猎",
Erudition: "智识",
Harmony: "同谐",
Nihility: "虚无",
Preservation: "存护",
Abundance: "丰饶",
Remembrance: "记忆",
Unknown: "未知",
Elation: "欢愉"
}
},
"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: "未知"
},
paths: {
Destruction: "毀滅",
Hunt: "巡獵",
Erudition: "智識",
Harmony: "同諧",
Nihility: "虛無",
Preservation: "存護",
Abundance: "豐饒",
Remembrance: "記憶",
Unknown: "未知",
Elation: "歡愉"
}
},
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: "不明"
},
paths: {
Destruction: "壊滅",
Hunt: "巡狩",
Erudition: "知恵",
Harmony: "調和",
Nihility: "虚無",
Preservation: "存護",
Abundance: "豊穣",
Remembrance: "記憶",
Unknown: "不明",
Elation: "愉悦"
}
},
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: "알 수 없음"
},
paths: {
Destruction: "파멸",
Hunt: "수렵",
Erudition: "지식",
Harmony: "화합",
Nihility: "공허",
Preservation: "보존",
Abundance: "풍요",
Remembrance: "기억",
Unknown: "알 수 없음",
Elation: "환락"
}
},
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"
},
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ẻ"
}
},
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"
},
paths: {
Destruction: "Kehancuran",
Hunt: "Perburuan",
Erudition: "Kebijaksanaan",
Harmony: "Harmoni",
Nihility: "Ketiadaan",
Preservation: "Pelestarian",
Abundance: "Kelimpahan",
Remembrance: "Ingatan",
Unknown: "Tidak Diketahui",
Elation: "Kegembiraan"
}
},
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"
},
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"
}
},
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"
},
paths: {
Destruction: "Destruction",
Hunt: "Chasse",
Erudition: "Érudition",
Harmony: "Harmonie",
Nihility: "Nihilité",
Preservation: "Préservation",
Abundance: "Abondance",
Remembrance: "Souvenir",
Unknown: "Inconnu",
Elation: "Allégresse"
}
},
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"
},
paths: {
Destruction: "Zerstörung",
Hunt: "Jagd",
Erudition: "Gelehrsamkeit",
Harmony: "Harmonie",
Nihility: "Nichtigkeit",
Preservation: "Bewahrung",
Abundance: "Überfluss",
Remembrance: "Erinnerung",
Unknown: "Unbekannt",
Elation: "Frohsinn"
}
},
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: "Неизвестно"
},
paths: {
Destruction: "Разрушение",
Hunt: "Охота",
Erudition: "Эрудиция",
Harmony: "Гармония",
Nihility: "Небытие",
Preservation: "Сохранение",
Abundance: "Изобилие",
Remembrance: "Память",
Unknown: "Неизвестно",
Elation: "Радость"
}
},
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"
},
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"
}
}
};
let currentLang = typeof localStorage !== 'undefined' ? (localStorage.getItem('gac_srtool_lang') || 'th') : 'th';
export function getCurrentLanguage() {
return currentLang;
}
export function setLanguage(langCode) {
if (TRANSLATIONS[langCode]) {
currentLang = langCode;
if (typeof localStorage !== 'undefined') {
localStorage.setItem('gac_srtool_lang', langCode);
}
}
}
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}
for (const [vKey, vVal] of Object.entries(vars)) {
text = text.replace(new RegExp(`\\{${vKey}\\}`, 'g'), vVal);
}
return text;
}
export function translateElement(elem) {
const dict = TRANSLATIONS[currentLang] || TRANSLATIONS.en;
return dict.elements?.[elem] || TRANSLATIONS.en.elements?.[elem] || elem;
}
export function translatePath(path) {
const dict = TRANSLATIONS[currentLang] || TRANSLATIONS.en;
return dict.paths?.[path] || TRANSLATIONS.en.paths?.[path] || path;
}