Files
Gacy-Srtool/js/i18n.js
T

1327 lines
57 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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 & Guide",
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;
}