您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Stellar Odyssey汉化插件!
当前为
// ==UserScript== // @name Stellar Odyssey汉化插件 // @namespace http://tampermonkey.net/ // @version 2025-04-01-2 // @description Stellar Odyssey汉化插件! // @author hewilson // @match https://game.stellarodyssey.app/* // @icon https://game.stellarodyssey.app/favicon.ico // @grant none // @license MIT // ==/UserScript== const excludeRegs = [ // 一个字母都不包含 /^[^a-zA-Z]*$/, ]; const excludes = [ "k", "m", "b", "Lv", "Lvl", "xp", "n/a", "x", "wiki", "discord", "cookie", "COSO", "NPC", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", ]; const excludeSelectors = [ //图标 '.q-icon', //排除右上角人名 'header > div:first-child > div:nth-child(2) > div:last-child > button:first-child > span:nth-child(2) > div:first-child > span', //排除右上角展开的人名 '[role="menu"] > div:first-child > div:first-child > div:nth-child(2)', //排除整个聊天框(临时) 'footer *', //星图里的星系名 'div.Atype+div>span:first-child', '.custom_ship_tooltip div:has(> div > svg) *', //星系详情里的星系名 '.galaxy_container > div > div:nth-child(2) > div > div:nth-child(1) > span:nth-child(2)', //星系详情里的星系发现者名 '.galaxy_container > div > div:nth-child(2) > div > div:nth-child(2) > :nth-child(5) > span:nth-child(2)', //星系详情里的星系占领方 '.galaxy_container > div > div:nth-child(2) > div > div:nth-child(2) > :nth-child(6) > span:nth-child(2)', //玩家日志里的星球名 '.q-timeline__title', //舰队列表里舰队名 'div.custom_squadron_avatar + div > span', //舰队队长 '.squadron_info > div:nth-child(2) > div:first-child > div:first-child > div:nth-child(2) *', //舰队自定义描述 '.custom_description', //舰队成员列表 '.custom_description ~ ul li', //舰队成员列表里人名 'i.squadron_user_status+span', ]; const excludeHashSelectors = [ //发送物资里的搜索玩家名 ['#/player', '[id^="q-portal--menu"] > [role="listbox"] > [class^="q-virtual"] *'], //个人资料名字 ['#/profile', '.q-page div > .items-start:first-child > div:nth-child(2) > div > div:first-child > span:nth-child(2)'], //个人资料email ['#/profile', '.q-page div > .items-start:first-child > div:nth-child(2) > div > div:nth-child(3) > span:nth-child(2)'], //星图里快速跃迁的星系名 ['#/galaxy', '[id^="q-portal--menu"] > [role="listbox"] > [class^="q-virtual"] *'], //SOS信号记录用户名 ['#/galaxy', 'tbody > tr > td:nth-child(2)'], //SOS信号记录星系名 ['#/galaxy', 'tbody > tr > td:nth-child(4)'], //排除 最常访问星系 ['#/galaxy', '.q-dialog__inner > div > div > div:nth-child(5) > span'], //星系里恒星的悬浮框里的星系名 ['#/system', '.q-tooltip:has(> div:nth-child(2)) > div:nth-child(1)'], //星图集里第1个table的星系名和发现者名 ["#/atlas", 'tbody:has(.star_container) > tr > td:nth-child(4)'], ["#/atlas", 'tbody:has(.star_container) > tr > td:nth-child(6)'], ["#/atlas", 'tbody:has(.star_container) > tr > td:nth-child(7)'], //星图集里第2个table的星系名 ["#/atlas", 'table:not(:has(.star_container)):has(>thead > tr > th:nth-child(8)) tbody > tr > td:nth-child(3)'], //星图集里第3个table的舰队名,空间站名,星系名 ["#/atlas", 'table:not(:has(>thead > tr > th:nth-child(5))) tbody > tr > td:nth-child(1)'], ["#/atlas", 'table:not(:has(>thead > tr > th:nth-child(5))) tbody > tr > td:nth-child(2)'], ["#/atlas", 'table:not(:has(>thead > tr > th:nth-child(5))) tbody > tr > td:nth-child(3)'], // 排除舰队里所有table的1,4列 ["#/squadron", '.squadron_info_layout tbody > tr > td:nth-child(1)'], ["#/squadron", '.squadron_info_layout tbody > tr > td:nth-child(1) *'], ["#/squadron", '.squadron_info_layout tbody > tr > td:nth-child(4)'], //空间站名称 ['#/squadron', '.right_panel_container .q-tab-panel .flex_30 .flex.column .flex>.flex.row.justify-between.items-center:nth-child(2)>div'], ['#/squadron', 'div[role="dialog"] .q-card__section > .row > .col > span:nth-child(1)'], //物品卖单里的玩家名 ['#/market', '.market_table_container tbody > tr > td:nth-child(6)'], //社交中心里的玩家名 ['#/socialhub', '.custom_socialhub_grid > div .user_squad > div > span:first-child'], ] const tranDate = { 'ms': '毫秒', 'millisecond': '毫秒', 'milliseconds': '毫秒', 's': '秒', 'sec': '秒', 'second': '秒', 'seconds': '秒', 'm': '分', 'min': '分', 'minute': '分', 'minutes': '分', 'h': '时', 'hr': '时', 'hour': '时', 'hours': '时', 'd': '天', 'day': '天', 'days': '天', "Jan": "一月", "Feb": "二月", "Mar": "三月", "Apr": "四月", "May": "五月", "Jun": "六月", "Jul": "七月", "Aug": "八月", "Sep": "九月", "Oct": "十月", "Nov": "十一月", "Dec": "十二月" } const tranItem = { "Weapon": "武器", "damage": "伤害", "Shield": "护盾", "Defense": "防御", "Engine": "引擎", "Travel Boost": "航行增益", "Sensors": "传感器", "Scan Boost": "扫描增益", "Laser": "激光", "Probes": "探测器", "Gather Boost": "采集增益", "Rocky type": "岩石型", "Icy type": "冰型", "Gas type": "气态型", "Crystal type": "晶体型", "rocky": "岩石", "Icy": "冰", "gas": "气态", "Crystal": "晶体", "copper": "铜", "gold": "金", "silver": "银", "platinum": "铂", "dark matter": "暗物质", "water": "水", "nitrogen": "氮", "sulfur": "硫", "carbon": "碳", "silicon": "硅", "ammonia": "氨", "hydrogen": "氢", "helium": "氦", "methane": "甲烷", "argon": "氩", "diamond": "钻石", "ruby": "红宝石", "emerald": "绿宝石", "sapphire": "蓝宝石", "cobalt": "钴", "brute": "蛮兵", "spectres": "幽灵", "Glacial": "冰川族", "machiner": "机械师", "Scorcher": "灼烧者", "Toxoid": "毒蚀体", "Miner": "矿工", "Duster": "尘暴兵", "bones": "骨头", "Obtained from killing Brutes": "击杀蛮兵获得", "ectoplasm": "灵质", "Obtained from killing Spectres": "击杀幽灵获得", "frost shard": "霜屑", "Obtained from killing Glacials": "击杀冰川族获得", "cog": "齿轮", "Obtained from killing Machiners": "击杀机械师获得", "flame": "火焰", "Obtained from killing Scorchers": "击杀灼烧者获得", "slime": "粘液", "Obtained from killing Toxoids": "击杀毒蚀体获得", "horn": "兽角", "Obtained from killing Miners": "击杀矿工获得", "condensed sand": "压缩砂砾", "Obtained from killing Dusters": "击杀尘暴兵获得", "ingots": "金属锭", "Produced at the Foundry. Used for Fuel Cell Casings at the Module Assembly Plant": "在铸造厂生产,用于模块组装厂的燃料舱外壳", "refined crystals": "精炼晶体", "high end crystals": "高端晶体", "propulsors": "推进器", "Produced at the Noble Gas Processing Station. Used for Unstable Fuel at the Fuel Lab": "在惰性气体处理站生产,用于燃料实验室的不稳定燃料", "nanoconductors": "纳米导体", "microcircuits": "微电路", "fusion cells": "融合细胞", "fuel cell casing": "燃料电池外壳", "unstable fuel": "不稳定的燃料", "Warp capsule": "跃迁舱", "Metal Scrap": "金属碎片", "Obtained scrapping ship parts": "拆解飞船部件获得", } const tranHeader = { "Playing": "游戏中", "Game Rules": "游戏规则", "Patch notes": "补丁说明", "Privacy Policy": "隐私政策", "Report Bug": "报告Bug", "Rankings": "排名", "Starter guide": "入门指南", "Connected to game server": "已连接至游戏服务器", "Profile": "个人资料", "Logout": "退出登录", "Average ping": "平均延迟", "Battling": "战斗", "Gathering": "采集", "Crafting": "制造", "Exploring": "探索", } const tranSideBar = { "Stellar Odyssey": "恒星奥德赛", "Version": "版本", "Player": "玩家", "Laboratory": "实验室", "Galaxy Map": "星图", "Atlas": "星图集", "Base Building": "基地建设", "Squadron": "舰队", "Social Hub": "社交中心", "Market": "市场", "Trophy Room": "荣誉室", "Premium store": "精品商店", } const tranPlayInfo = { "Stats": "属性", "Points": "点数", "Power": "能量", "Adds damage to your weapon": "提升武器伤害值", "Precision": "精准", "Increases your hit chance": "提高命中几率", "Evasion": "闪避", "Increases your evade chance": "增加闪避几率", "Hull": "船体", "Increases your health points. Additive with your shield defense": "增加生命值.与护盾防御值叠加计算", "Statistics": "统计", "Player Damage": "玩家伤害", "Damage Bonuses": "伤害加成", "Player Health": "玩家生命值", "Clones Health": "克隆体生命值", "Bonuses": "加成效果", "Droids dodge chance": "机器人闪避率", "Rare Resources Drop Chance": "稀有资源掉落率", } const transPage = { //登录页面 "Welcome adventurer": "欢迎,探险家", "Prepare your journey through unexplored galaxies, push the limits of space": "准备启程穿越未知星系,突破宇宙的边界", "and begin your space adventure exploring the Wonders of the Universe": "开启探索宇宙奇观的太空冒险", "Enter your username and password to start the adventure": "输入用户名和密码以开始冒险", "Password": "密码", "Remember me": "记住我", "Log in": "登录", "Forgot your password": "忘记密码", "Don't have an account": "没有账号", "Sign up": "注册", "or play as": "或作为", "Guest": "游客", "We use cookies to enhance your browsing experience, saving your in-game identification across our servers. By clicking \"Accept\" you consent to our use of cookies": "我们使用Cookie来提升您的浏览体验,在服务器间保存您的游戏身份信息。点击\"接受\"即表示同意我们使用Cookie", "Cookie policy": "Cookie政策", "Reject": "拒绝", "Accept": "接受", "Register a new account to start playing": "注册新账号开始游戏", "Repeat password": "重复密码", "Beta code": "测试邀请码", "By selecting Register, you acknowledge that you have read and agree to our": "点击注册即表示您已阅读并同意", "and": "和", "Register": "注册", "Already have an account": "已有账号?", "Sign in": "登录", "Play as Guest and try the game without registering. Game features are limited": "以游客身份试玩(无需注册),部分游戏功能将受限", "I agree that there is a risk of losing account info without registering": "我知悉未注册状态下存在游戏进度丢失的风险", "Play as Guest": "游客试玩", //入门指南 "Congratulations on joining forces with us": "欢迎加入我们的行列", "Welcome to the Critical Orientation System Office (COSO": "欢迎来到关键导航系统办公室(COSO", "Here at COSO, we will show you some suggestions tailored by our experts specifically for you": "在COSO,我们将为您展示专家团队为您量身定制的建议", "Don't forget to check our Wiki": "别忘了查阅我们的维基百科", "Where am I": "我的位置", "Your ship has been sent to 1 out of 5 starter systems. Each of them has different bodies with different": "您的飞船已被派往5个初始星系之一。每个星系都有不同的星体,包含不同的", "NPCs": "NPC角色", "You can travel between them at the": "您可以通过", "Understood": "明白了", "About Actions": "关于行动", "About Battling": "关于战斗", "About Gathering": "关于采集", "Do the Science": "科学研究", "Skip": "跳过", "Actions are": "所有行动都是", "server-side": "服务器端处理", "so you can close your browser and the game will continue executing them": "因此即使关闭浏览器,游戏仍会继续执行这些行动", "Each action takes": "每个行动需要", "Remember! You can": "记住!您可以同时", "Gather": "采集", "Battle": "战斗", "at the same time": "进行", "Wait, what": "等等,什么?", "Defeating": "击败", "will give you credits, and also gives you a chance of obtaining": "将获得信用点,并有几率获得", "Each enemy type provides different drop possibilities": "每种敌人类型都有不同的掉落物品", "You can mine nodes from systems to get resources": "您可以通过开采星系节点获取资源", "Remember! Each body has a quality % assigned, affecting the resource quantity obtained on each action": "注意!每个星体都有质量百分比设定,这将影响每次行动获取的资源数量", "The": "该", "includes a total of 10 buildings that you can unlock to create greater materials": "包含10种可解锁的建筑,用于制造高级材料", "used to recharge fuel on your Ship and explore unknown systems": "用于为飞船补充燃料并探索未知星系", "OK LET'S PLAY": "好的,开始游戏", } const transNotification = { "Actions replenished": "行动已补充", "Stats modified": "属性已修改", "Item drop logs cleared": "物品掉落记录已清空", } const tranCommon = { "Starter normal": "初级", "normal": "普通", "uncommon": "罕见", "rare": "稀有", "unique": "独特", "epic": "史诗", "legendary": "传奇", "chemical": "化学", "electromagnetic": "电磁", "energy": "能量", "explosive": "爆炸", "incendiary": "燃烧", "kinetic": "动能", "Category": "类别", "Ship parts": "飞船部件", "Gathering Resources": "采集资源", "Consumables": "消耗品", "Material": "材料", "Materials": "材料", "Blueprints": "蓝图", "Node type": "节点类型", "Modification": "修改", "Actions": "行动", "Reward": "奖励", "Fuel": "燃料", "System": "星系", "Assign": "分配", "Reset": "重置", "Save": "保存", "cancel": "取消", "Replenish": "补充", "Starting battle": "开始战斗", "Game info": "游戏信息", "SHIP": "飞船", "Filter": "筛选", "Rarity": "稀有度", "Description": "描述", "Quantity": "数量", "Slot": "插槽", "Normal Currency": "普通货币", "Rare Currency": "稀有货币", "Inventory": "物品栏", "Currencies": "货币", "No items yet": "暂无物品", "Available": "可用的", "This field is required": "此字段是必需的", } const tranOther = { "No item drops yet": "暂无物品掉落记录", "Ship Skins": "飞船涂装", "Available Ship Skins": "可用飞船涂装", "Starter Ship": "初始飞船", "Sentinel": "哨兵型", "Eclipse": "日蚀型", "Ship effects": "飞船特效", "Available Ship Effects": "可用飞船特效", "Red Glow": "红色光效", "Blue Glow": "蓝色光效", "Link in chat": "在聊天中分享链接", "Unequip": "卸下", "Buy more from the premium store": "前往精品商店购买更多", "Remove effect": "移除特效", "Equip": "装备", "Scrap": "拆解", "Wire": "定向发送", "Search Player": "搜索玩家", "Send": "发送", "No results": "没有结果", "Enemies": "敌人", "Weak against": "弱点", "Drops": "掉落", "Level": "等级", "Winrate": "胜率", "Start battling": "开始战斗", "Stop battling": "停止战斗", "You": "你", "won": "获胜", "after": "经过", "rounds": "回合", "Next fight in": "下一场战斗倒计时", "Clones": "克隆体", "Hit": "命中", "Dodge": "闪避", "Credits": "信用点", "Experience": "经验值", "Level up in": "升级还需", "Current bonuses": "当前加成", "Battle rounds log": "战斗回合日志", "Round": "回合", "hits": "击中", "Clone": "克隆体", "for": "造成", "misses hit on": "未击中", "died": "死亡", "Item drop log": "物品掉落日志", "Clear": "清除", "Buy Clone": "购买克隆体", "Crit. Chance": "暴击几率", "Crit. Damage": "暴击伤害", "Dual Shot": "双重射击", "Upgrade": "升级", "Records per page": "每页记录数", "of": "的", "Not Battling": "非战斗状态", "You are not battling right now": "当前未处于战斗中", "Please select an enemy from the list to start battling": "请从列表中选择敌人开始战斗", "No battling right now": "当前无战斗", "lost": "战败", "All clones": "全体克隆体", "Gathering nodes": "采集节点", "Nebula": "星云", "Quality": "品质", "quality": "品质", "Stop gathering": "停止采集", "Asteroid": "小行星", "Start gathering": "开始采集", "Gathering statistics": "采集统计", "Next action in": "下次行动倒计时", "Droids statistics from last gathering action": "上次采集的机器人统计", "Droid": "机器人", "Status": "状态", "Destroyed": "已损毁", "Resource": "资源", "Amount": "数量", "Taxed": "已征税", "Survived": "存活", "Currencies by node types": "节点类型对应资源", "Droids": "机器人", "Buy droid": "购买机器人", "Efficiency": "效率", "Storage": "存储量", "Maneuverability": "机动性", "none": "无", "Not Gathering": "未采集中", "No gathering right now": "当前无采集活动", "Available Blueprints": "可用蓝图", "Charges": "充能次数", "No blueprint selected": "未选择蓝图", "Choose one to start crafting": "请选择蓝图开始制作", "Missing some requirements": "未满足全部条件", "Craft": "制作", "Requirements": "需求材料", "Modifications": "改造选项", "You can select up to two different damage types. Having one gives 30% bonus but two gives 15% each": "最多可选择两种伤害类型。选择一种可获得30%加成,选择两种则每种获得15%加成", "Select bonus type": "选择加成类型", "Max 2 selections": "最多选择2项", "Current applied": "当前应用", "Item value range": "物品数值范围", "The base value applied to the formula can be modified paying with rare gathering currency": "可通过消耗稀有采集货币来调整基础数值", "The range goes between -30% and 30%. You can only reduce the negative range": "调整范围为-30%至30%,仅可减少负面范围", "Select one or leave the sliders as default. Crafting level also adds a multiplicative bonus": "选择一项或保持默认设置,制作等级还会提供额外加成", "Output": "成品预览", "Damage range": "伤害范围", "Craft item": "制作物品", "This is the last charge. The blueprint will be destroyed after this use": "这是最后一次使用,制作后蓝图将消失", "Defense range": "防御范围", "Modules": "模块", "Queue Status": "队列状态", "Buildings": "建筑设施", "Foundry": "铸造厂", "Refinery": "精炼厂", "Crystal Synthesis Lab": "晶体合成实验室", "Noble Gas Processing Station": "惰性气体处理站", "Nanotech Complex": "纳米科技复合体", "Circuit Integration Facility": "电路集成设施", "Build next": "建造下一个", "The Laboratory is a central feature in your spaceship, allowing you to build and manage up to": "实验室是您飞船的核心设施,最多可建造和管理", "unique structures": "独特建筑结构", "essential for your space journey. These buildings form a supply chain, using resources gathered from various systems to produce materials needed by others": "这些建筑构成完整的供应链,通过整合各星系采集的资源来生产其他设施所需的材料", "The main objective is to construct": "主要目标是制造", "These are used for interstellar travel, enabling exploration of new solar systems. Managing the Laboratory effectively is key to expanding your galactic reach": "用于星际旅行以探索新星系,高效管理实验室是扩展银河版图的关键", "Queue statistics": "生产队列统计", "Queue size": "队列容量", "No laboratory building's queues pending": "无待处理的实验室生产队列", "Uses": "消耗材料", "Produces": "产出物品", "Queue": "生产队列", "Max": "最大", "Timer": "计时器", "Queue production": "开始队列生产", "Upgrade building": "升级建筑", "Level up": "等级提升", "Next laboratory building": "下一实验室建筑", "Energetic Fusion Center": "高能聚变中心", "Cost": "消耗", "Buy building": "购买建筑", "Module Assembly Plant": "模块组装工厂", "Fuel Lab": "燃料实验室", "Space Capsule Complex": "太空舱综合体", "Enemies in your current system. Go to the Atlas or Galaxy Map to travel to other system and find more enemies": "当前星系内的敌人。前往星图或银河地图可跃迁至其他星系寻找更多敌人", "Not enough credits": "信用点不足", "Clones fight for you against enemies. Their stats depend on your ship stats, weapon and shields. They also have their own skills. Each one performs an individual action every fight": "克隆体将为你作战,其属性取决于飞船状态、武器和护盾。每个克隆体都拥有独特技能,每场战斗可执行独立行动", "Upgrade Clone": "克隆体升级", "Critical Chance": "暴击几率", "Purchase": "购买", "Critical Damage": "暴击伤害", "Total Upgrade Costs": "升级总消耗", "Confirm upgrades": "确认升级", "Available nodes in your current system. Go to the Atlas or Galaxy Map to travel to other system and find other nodes": "当前星系可用节点。前往星图或银河地图可跃迁至其他星系探索更多节点", "Droids collect resource ores you get while mining. Each one performs an individual action": "采矿机器人会自动收集矿物资源,每个机器人可执行独立采集动作", "Upgrade Droid": "机器人升级", "Engine cooldown": "引擎冷却中", "Fast travel": "快速跃迁", "SOS Signals": "求救信号", "Journal": "航行日志", "Camera controls": "镜头控制", "Ready": "就绪", "Distance": "距离", "ly": "光年", "Discovered by": "发现者", "Gathering Bodies": "星体数据采集中", "Inhabited": "已殖民", "yes": "是", "no": "否", "Unknown system": "未识别星系", "Online SOS Signals": "在线求救信号", "Date": "日期", "User": "用户", "No SOS Signals available": "无可用求救信号", "Close": "关闭", "Player Journal": "飞行员日志", "Systems visited": "已访问星系", "Systems discovered": "已发现星系", "Total distance traveled": "总航行距离", "Ly": "光年", "Most frequent system": "最常访问星系", "Bodies": "星体", "SYSTEM MAP": "星系星图", "System info": "星系信息", "Main Star": "主恒星", "A type": "A型恒星", "Claimed by": "占领方", "Belt": "小行星带", "Has gathering nodes": "含采集节点", "Travel": "跃迁", "Recharge fuel with": "燃料补充方式", "Mark on map": "标记星图", "Bookmark": "星标", "View system map": "查看星图", "Not enough fuel": "燃料不足", "Remove pin": "移除标记", "K type": "K型恒星", "Crystal Planet": "水晶行星", "Neutron Star": "中子星", "Comet": "彗星", "Icy Planet": "冰封行星", "type": "类型", "Rocky Planet": "岩质行星", "Gas Planet": "气态巨行星", "G type": "G型恒星", "Black Hole": "黑洞", "O type": "O型恒星", "F type": "F型恒星", "Binary Stars": "联星系统", "Ringed Dwarf": "环带矮星", "Starter system. You can travel between starter systems without fuel": "起始星系. 可在起始星系间免燃料跃迁", "Add system bookmark": "添加星系书签", "Atlas Systems": "星系集", "Space Stations": "空间站", "This is the public list of systems discovered by players. Private systems are only shown to users who discovered it or if you travelled at least once": "本列表展示玩家发现的公开星系,私有星系仅对发现者或曾到访者可见", "System Name": "星系名称", "Coordinates": "坐标", "nobody": "暂无记录", "Highlight": "高亮标记", "This is a bookmark list to save your favourite systems": "此收藏夹用于保存你标记的常用星系", "Date added": "收藏日期", "List of Squadrons' space stations with public information. If the Space Station is parked in a private system, coordinates are hidden": "舰队空间站公开信息列表。若空间站位于私有星系,坐标将隐藏", "Station Name": "空间站名称", "unknown": "未知的", "Search": "搜索", "Squadron Name": "舰队名称", "Members": "成员", "Loading": "加载中", "Applications": "申请", "Donations": "捐赠", "Stellar Dock": "星际船坞", "Galaxy Power": "银河势力", "Squadron members list": "舰队成员列表", "Rank": "排名", "Batling": "战斗状态", "Current System": "当前星系", "Current Node": "当前节点", "No data available": "暂无数据", "Leader": "队长", "Created": "创建时间", "Reputation": "声望", "Squadron description": "舰队简介", "Member list": "成员名单", "Leave squadron": "退出舰队", "Applications activity": "申请动态", "Message": "消息", "No Applications": "暂无申请", "Invites registered yet": "尚未登记邀请", "apply": "申请", "accepted": "已接受", "invite": "邀请", "Your": "你的", "Donate": "捐赠", "cosmic dust": "宇宙尘埃", "stellar tokens": "星币", "Member's Donations": "成员捐赠榜", "Ranking of Squadron members donations, not including taxes": "舰队成员捐赠排名(不含税收)", "No donations registered yet": "暂无捐赠记录", "Donation succeeded": "捐赠成功", "Stellar Dock buildings": "星际船坞建筑", "These buildings collect resources via taxes. Each one produces one of the four parts needed to build a Space Station to be able to claim a system": "这些建筑通过税收收集资源,各自生产空间站所需的四种部件之一,用于建立星系主权", "Workshop": "船体工坊", "A mega factory where the space station structure is built": "建造空间站主体结构的巨型工厂", "hull parts": "船体部件", "Offline": "离线", "Tax": "税率", "Select tax": "选择税率", "Unlock Cost": "解锁成本", "Only the Leader can unlock it": "仅队长可解锁", "AI": "智能中枢", "The AI centre will provide all the necessary technology to operate the space station": "智能中枢提供空间站运作所需的全套技术", "control systems": "控制系统", "Bioscience": "生态科学", "Dedicated to life support, waste recycling and medical attendance": "负责生命维持、废物循环及医疗系统", "ambient systems": "环境系统", "Engineering": "工程中心", "The Engineering centre will produce engines and the internal gravity module for the space station": "工程中心制造推进器及空间站内部重力模块", "propulsion systems": "推进系统", "Space stations management where you can build an update ever space station located on your clamed systems": "空间站管理系统 - 可建造及升级已占领星系的空间站", "Available Space Station parts": "可用空间站部件", "Space Stations available for deploy": "可部署空间站", "Build Space Station": "建造空间站", "The Squadron doesn't have claimed systems": "舰队尚未占领任何星系", "Build Space Stations and claim any system": "建造空间站以占领星系", "Member": "成员", "No Squadron": "无舰队", "Market listings": "市场挂牌", "My Listings": "我的挂牌", "Laboratory Materials": "实验室材料", "Enemy Drop Materials": "战利品材料", "Items": "物品", "Listings": "挂牌订单", "Select a currency from the list to show its listing orders": "选择货币类型以查看对应挂牌订单", "Listings history": "挂牌历史", "My item listings": "我的物品挂牌", "Item listings history": "物品挂牌历史", "Listing date": "挂牌日期", "Currency": "交易货币", "Operation": "操作", "Unit Price": "单价", "Qty Remaining": "剩余数量", "Total": "总价", "Price": "价格", "Buy orders": "收购订单", "New buy listing": "新建收购订单", "Action": "操作", "No listings yet": "暂无订单记录", "Sell orders": "出售订单", "New sell listing": "新建出售订单", "Buy": "收购", "My items": "我的物品", "Crafted": "自制", "Value": "估值", "Sell": "出售", "All rarities": "全部稀有度", "Filter rarity": "筛选稀有度", "Filter value": "筛选价值", "Value greater than": "价值大于", "Name": "名称", "Seller": "卖家", "You have": "当前持有", "Best buy offer": "最优收购报价", "My offer": "我的报价", "Each": "单价", "Total listing price": "挂牌总价", "You pay now as listing fee": "需预付挂牌手续费", "Total payment": "应付总额", "Create listing": "创建订单", "Best sell offer": "最优出售报价", "My price": "我的定价", "sale": "出售", "Sell order sent": "出售订单已发送", "Order details": "订单详情", "You can only have one listing order active per currency": "每种货币只能有一个活跃的挂牌订单", "Available Trophies": "可收集勋章", "Collections": "收藏系列", "Ringed Dwarf Runes": "环状矮星符文", "Binary Stars Runes": "双星系统符文", "Black Hole Runes": "黑洞符文", "Neutron Star Runes": "中子星符文", "No collection selected": "未选择收藏系列", "Choose one to learn more": "选择系列查看详情", "Ringed Dwarf Runes Collection": "环状矮星符文收藏集", "Binary Stars Runes Collection": "双星系统符文收藏集", "Black Hole Runes Collection": "黑洞符文收藏集", "Neutron Star Runes Collection": "中子星符文收藏集", "No matching records found": "未找到匹配的记录", "User information": "用户信息", "Current user information and email address": "当前用户信息及电子邮箱地址", "Username": "用户名", "Guest account": "游客账户", "Email": "电子邮箱", "Registered": "已注册", "Security": "安全设置", "Enable or disable two factor authentication": "启用或禁用双重认证", "Disabled": "已禁用", "Enable": "启用", "Update password": "更新密码", "Secure your account with a strong password with at least 8 characters": "请使用至少8个字符的强密码保护账户安全", "Your current password": "当前密码", "New Password": "新密码", "Confirm new password": "确认新密码", "Reset password": "重置密码", "Premium Subscription": "高级订阅", "Check your subscription status here": "在此查看订阅状态", "Inactive": "未激活", "Max Actions": "最大行动值", "Max Fuel": "最大燃料值", "It looks like you are lost in space": "您似乎迷失在太空中", "The page you requested cannot be found": "无法找到请求的页面", "Go Home": "返回首页", "Mass scrap filtered items": "批量分解筛选物品", "Are you sure you want to scrap all items filtered": "确定要分解所有筛选物品吗?", "Scrap all": "全部分解", "Crafted bonus": "制造加成", "The current system is not inhabited. There is no galaxy market network available": "当前星系未被殖民,无法接入银河市场网络", "Engine cooldown reduction": "引擎冷却加速", "Produced at the Nanotech Complex. Used for Unstable Fuel at the Fuel Lab": "由纳米科技中心生产,用于燃料实验室的不稳定燃料", "Produced at the Energetic Fusion Center. Used for Fuel Cell Casings at the Module Assembly Plant": "由高能聚变中心生产,用于模块组装工厂的燃料舱外壳", "Produced at the Refinery. Used for Fuel Cell Casings at the Module Assembly Plant": "由精炼厂生产,用于模块组装工厂的燃料舱外壳", "Produced at the Space Capsule Complex. Used for Interstellar travel": "由太空舱综合体生产,用于星际航行", "You can select up to two different damage types. Having one gives 10% bonus but two gives 5% each": "最多选择两种伤害类型:单一类型提供10%加成,双类型各提供5%", "Current applied modificators": "当前生效的改造效果", "Scan Boost range": "扫描范围增幅", "Scan reward boost": "扫描奖励加成", "Done": "完成", "Remaining": "剩余", "Time remaining": "剩余时间", "Ancient": "远古文明", "Engine is cooling down": "引擎冷却中", "Ancient's space station": "远古文明空间站", "A laboratory queue has finished": "实验室队列已完成", "go": "前往", "Fuel restored": "燃料已补充", "New system discovered": "发现新星系", "System Data": "星系数据", "Distance from nearest starter system": "距最近初始星系距离", "Exploring Experience": "探索经验值", "Ship stats": "飞船状态", "Detailed cosmic dust gain": "宇宙尘获取详情", "Atlas information": "星图数据库信息", "You need to take a decision about the current discovered system. You can choose make it public for everyone and get a reward, or you can make it private only for you (no reward": "请决定新发现星系的处理方式:公开可获得奖励,私有化则独享信息(无奖励", "Reward for make it public": "公开奖励", "Keep info for myself": "私有化信息", "Make it public": "公开星系", "Droids have stopped gathering the node": "采集无人机已停止工作", "Clones have stopped battling dusters": "克隆体已终止清剿宇宙尘", "You need to make a decision about the current discovered system. You can choose to make it public for everyone and get a reward, or you can make it private only for you (no reward": "你需要对当前发现的系统做出决定。你可以选择将其公开给所有人并获得奖励,或者仅将其设为私有仅供自己使用(无奖励", "Reward for making it public": "公开系统的奖励", "There are no gathering nodes on this system. Go to the": "该系统上没有采集节点。前往", "and find another system": "并寻找另一个系统", "Enhances laser and probes efficiency": "提升激光与探测器的效率", "Increases droids carrying capacity": "增加机器人的运载容量", "Increases droid chance to accomplish gathering task without dying": "提高机器人在采集任务中存活并完成的概率", "Building": "建造中", "Space stations management where you can build an update ever space station located on your claimed systems": "空间站管理界面,可对已占领星系中的空间站进行建造与升级", "Move camera to the left": "向左移动镜头", "Move camera to the right": "向右移动镜头", "Center camera in your current system": "将镜头居中到当前星系", "Move camera up": "向上移动镜头", "Move camera down": "向下移动镜头", "Center camera in the marked system": "将镜头居中到标记星系", "Only available between starter systems": "仅在初始星系之间可用", "Produced at the Circuit Integration Facility. Used for Fuel Cell Casings at the Module Assembly Plant": "在电路集成设施生产。用于模块组装厂的燃料电池外壳", "Produced at the Crystal Synthesis Lab. Used for Unstable Fuel at the Fuel Lab": "在晶体合成实验室生产。用于燃料实验室的不稳定燃料", "Rare Resource drop chance": "稀有资源掉落几率", "Travel Boost range": "旅行推进范围", "spectre": "幽灵", "Squadron galaxy power management": "舰队星系能源管理", "Space Station name": "空间站名称", "Rare Resources": "稀有资源", "Create": "创建", "Missing requirements": "缺少必要条件", "Only the Leader can build this": "仅领袖可建造此项目", "Ready to deploy": "准备部署", "Go to Galaxy Map and claim a system to deploy it": "前往银河地图并占领星系以部署", "Manage": "管理", "Income boost": "收益加成", "Defense portal": "防御传送门", "Defense boost": "防御加成", "Attack delay": "攻击延迟", "Terraforming": "地形改造", "Station upgrades": "空间站升级", "defense level": "防御等级", "portal level": "传送门等级", "Income boost level": "收益加成等级", "attack delay level": "攻击延迟等级", "One time purchases": "一次性购买", "Available only while deployed into a System": "仅在部署到星系时可用", "Gives multiplicative boost to defender's stats. Each level gives 5% boost": "为防御者属性提供倍率加成,每级提升5%", "Increases the range where players can defend from distance. Each lvl increases the range by 50ly": "增加玩家远程防御范围,每级提升50光年", "Increases battling and gathering income. Each level gives 2% boost": "提升战斗和采集收益,每级增加2%", "Each level increases the attack delay by 1 minute. Base attack delay is 15m": "每级增加1分钟攻击延迟,基础延迟为15分钟", "Remove": "移除", "Each building upgrade reduces the queue time by 0.1 second": "每次建筑升级可缩短队列时间0.1秒", } let translates = {}; for (let trans of [ tranDate, tranItem, tranHeader, tranSideBar, tranPlayInfo, transPage, transNotification, tranCommon, tranOther, ]) { for (let key in trans) { translates[key.toLowerCase()] = trans[key]; } } var unSet = new Set(); function baseTranslate(text) { if (translates[text.toLowerCase()]) { return translates[text.toLowerCase()]; } else if (text.toLowerCase().endsWith("es") && translates[text.toLowerCase().slice(0, -2)]) { return translates[text.toLowerCase().slice(0, -2)]; } else if (text.toLowerCase().endsWith("s") && translates[text.toLowerCase().slice(0, -1)]) { return translates[text.toLowerCase().slice(0, -1)]; } else { unSet.add(text); return text; } } function cnItem(text, node) { if (typeof text != "string") return text; // 排除不需要翻译的 for (const exclude of excludes) { if (exclude.toLowerCase() === text.toLowerCase()) { return text; } } // 排除不需要翻译的(使用正则) for (const excludeReg of excludeRegs) { if (excludeReg.test(text)) { return text; } } // 排除不需要翻译的(使用css选择器) for (const excludeSelector of excludeSelectors) { const realNode = node.nodeName !== "#text" ? node : node.parentNode; if (realNode.matches(excludeSelector)) { return text; } } // 排除不需要翻译的(使用css选择器和hash) for (const [hash, excludeSelector] of excludeHashSelectors) { if (window.location.hash === hash) { const realNode = node.nodeName !== "#text" ? node : node.parentNode; if (realNode.matches(excludeSelector)) { return text; } } } // 消除后面空格 if (/^(.+?)(\s+)$/.test(text)) { let res = /^(.+?)(\s+)$/.exec(text); return cnItem(res[1], node) + res[2]; } // 消除前面空格 if (/^(\s+)(.+)$/.test(text)) { let res = /^(\s+)(.+)$/.exec(text); return res[1] + cnItem(res[2], node); } //星系里的发现者 if (/^(Discovered by): (.+)$/.test(text)) { let res = /^(Discovered by): (.+)$/.exec(text); return cnItem(res[1], node) + ': ' + res[2]; } //星系里的占领方 if (/^(Claimed by): (.+)$/.test(text)) { let res = /^(Claimed by): (.+)$/.exec(text); return cnItem(res[1], node) + ': ' + res[2]; } //星系里的空间站 if (/^(.+)'s space station$/.test(text)) { let res = /^(.+) space station$/.exec(text); return res[1] + ' 的空间站'; } //拆分所有的 some:some if (/^(.+)(\s*:\s*)(.+)$/.test(text)) { let res = /^(.+)(\s*:\s*)(.+)$/.exec(text); return cnItem(res[1], node) + res[2] + cnItem(res[3], node); } //拆分所有的 some/some if (/^(.+)(\s*\/\s*)(.+)$/.test(text)) { let res = /^(.+)(\s*\/\s*)(.+)$/.exec(text); return cnItem(res[1], node) + res[2] + cnItem(res[3], node); } //"1 days 1 hours 1 minutes 1 seconds" if (/^(\d+ days )?(\d+ hours )?(\d+ minutes )(\d+) seconds$/.test(text)) { let res = /^(\d+ days )?(\d+ hours )?(\d+ minutes )(\d+) seconds$/.exec(text); if (res[1]) { return cnItem(res[1], node) + cnItem(res[2], node) + cnItem(res[3], node) + `${res[4]} 秒`; } else if (res[2]) { return cnItem(res[2], node) + cnItem(res[3], node) + `${res[4]} 秒`; } return cnItem(res[3], node) + `${res[4]} 秒`; } //"Available probes" if (/^(Available )(Weapon|Shield|Engine|Sensors|Laser|Probes)$/i.test(text)) { let res = /^(Available )(Weapon|Shield|Engine|Sensors|Laser|Probes)$/i.exec(text); return cnItem(res[1], node) + cnItem(res[2], node); } //"after 7 rounds" if (/^(after)( \d+ )(rounds)$/.test(text)) { let res = /^(after)( \d+ )(rounds)$/.exec(text); return cnItem(res[1], node) + res[2] + cnItem(res[3], node); } //"You gained 23 battling XP and 1,230 credits" if (/^You gained ([0-9,]+) battling XP and ([0-9,]+) credits$/.test(text)) { let res = /^You gained ([0-9,]+) battling XP and ([0-9,]+) credits$/.exec(text); return `你中获得了 ${res[1]} 战斗经验值和 ${res[2]} 信用点`; } if (/^(starter normal|normal|uncommon|rare|unique|epic|legendary) (weapon|Shield|Engine|Sensors|Laser|Probes)$/i.test(text)) { let res = /^(starter normal|normal|uncommon|rare|unique|epic|legendary) (weapon|Shield|Engine|Sensors|Laser|Probes)$/i.exec(text); return `${cnItem(res[1], node)}${cnItem(res[2], node)}`; } if (/^(.+) blueprint$/i.test(text)) { let res = /^(.+) blueprint$/i.exec(text); return `${cnItem(res[1], node)}蓝图`; } //"You have no sensors to sell" if (/^You have no (.+) to sell$/i.test(text)) { let res = /^You have no (.+) to sell$/i.exec(text); return `你没有 ${cnItem(res[1], node)} 可出售`; } //"Uncommon Shield Lvl" if (/^(.+) Lvl$/.test(text)) { let res = /^(.+) Lvl$/.exec(text); return `${cnItem(res[1], node)}等级`; } if (/^([0-9\.]+k|m|b) (.+)$/i.test(text)) { let res = /^([0-9\.]+k|m|b) (.+)$/i.exec(text); return `${res[1]} ${cnItem(res[2], node)}`; } // 消除后面的非字母 if (/^(.+?)([^a-zA-Z]+)$/.test(text)) { let res = /^(.+?)([^a-zA-Z]+)$/.exec(text); return cnItem(res[1], node) + res[2]; } // 消除前面的非字母 if (/^([^a-zA-Z]+)(.+)$/.test(text)) { let res = /^([^a-zA-Z]+)(.+)$/.exec(text); return res[1] + cnItem(res[2], node); } return baseTranslate(text); } const transTaskMgr = { tasks: [], addTask: function (node, attr, text) { this.tasks.push({ node, attr, text, }); }, doTask: async function () { let task = null; while ((task = this.tasks.pop())) { task.node.parentNode.setAttribute("script_translatedfrom", task.node[task.attr]); task.node[task.attr] = task.text; } }, }; function TransSubTextNode(node) { if (node.childNodes.length > 0) { for (let subnode of node.childNodes) { if (subnode.placeholder) { let text = subnode.placeholder; let cnText = cnItem(text, subnode); cnText !== text && transTaskMgr.addTask(subnode, "placeholder", cnText); } if (subnode.nodeName === "#text") { let text = subnode.textContent; let cnText = cnItem(text, subnode); cnText !== text && transTaskMgr.addTask(subnode, "textContent", cnText); } else if (subnode.nodeName !== "SCRIPT" && subnode.nodeName !== "STYLE" && subnode.nodeName !== "TEXTAREA") { if (!subnode.childNodes || subnode.childNodes.length == 0) { let text = subnode.innerText; let cnText = cnItem(text, subnode); cnText !== text && transTaskMgr.addTask(subnode, "innerText", cnText); } else { TransSubTextNode(subnode); } } } } } (function () { 'use strict'; //汉化静态页面内容 TransSubTextNode(document.body); transTaskMgr.doTask(); //监听页面变化并汉化动态内容 const observer_config = { attributes: false, characterData: true, childList: true, subtree: true, }; const observer = new MutationObserver(function (e) { observer.disconnect(); for (let mutation of e) { if (mutation.target.nodeName === "SCRIPT" || mutation.target.nodeName === "STYLE" || mutation.target.nodeName === "TEXTAREA") continue; if (mutation.target.nodeName === "#text") { mutation.target.textContent = cnItem(mutation.target.textContent, mutation.target); } else if (!mutation.target.childNodes || mutation.target.childNodes.length == 0) { mutation.target.innerText = cnItem(mutation.target.innerText, mutation.target); if (mutation.target.placeholder) { mutation.target.placeholder = cnItem(mutation.target.placeholder, mutation.target); } } else if (mutation.addedNodes.length > 0) { for (let node of mutation.addedNodes) { if (node.placeholder) { node.placeholder = cnItem(node.placeholder, node); } if (node.nodeName === "#text") { node.textContent = cnItem(node.textContent, node); } else if (node.nodeName !== "SCRIPT" && node.nodeName !== "STYLE" && node.nodeName !== "TEXTAREA") { if (!node.childNodes || node.childNodes.length == 0) { if (node.innerText) node.innerText = cnItem(node.innerText, node); } else { TransSubTextNode(node); transTaskMgr.doTask(); const unMap = new Map(Array.from(unSet).map(item => [item, item])); const unObj = Array.from(unSet).reduce((obj, item) => { obj[item] = item; return obj; }, {}); console.log(JSON.stringify(unObj)) } } } } } observer.observe(document.body, observer_config); }); observer.observe(document.body, observer_config); })();