jinteki 中文化插件词库

jinteki 中文化词库

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/545902/1642106/jinteki%20%E4%B8%AD%E6%96%87%E5%8C%96%E6%8F%92%E4%BB%B6%E8%AF%8D%E5%BA%93.js

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

/*******************************************************************************

    locals.js - 搭配用户脚本插件`jinteki 中文化插件`的页面匹配规则, 翻译忽略规则,
                词条库文件

    Copyright (C) klingeling

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

*/
var I18N = {};

I18N.conf = {

    /**
     * 匹配 pathname 页面的正则
     *
     * ...
     */
    rePagePath: /^\/($|chat|cards|deckbuilder|play|help|account|stats|about)/,


    // 特定页面,忽略元素规则
    ignoreSelectorPage: {
        'play': [
            'div.username', // 用户昵称
            'span.runner-username', // 同上
            'span.corp-username', // 同上
            'div.name-area', // 同上
            'div.content', // 用户聊天
            'div.gameline h4', // 对战页面标题
            'div.game-time', // 时间
            'span.fake-link', // 卡牌名称
            'span.cardname', // 卡牌名称
        ],
        'cards': [
            'div.card-info'
        ],
        'chat': [
            'span.title',
            'div.content'
        ],
        '*': [
            'pre',
            'span.user-status', // 用户名
            'li.dropdown.usermenu',
            'div#left-menu',
            'div.card-info',
            'div#status',
            'CODE', 'SCRIPT', 'STYLE', 'LINK', 'IMG', 'MARKED-TEXT', 'PRE', 'KBD', 'SVG', 'MARK' // 特定元素标签
        ],
    },
};

I18N["zh-CN"] = {};

I18N["zh-CN"]["title"] = { // 标题翻译
    "static": { // 静态翻译
        "": "",
    },
    "regexp": [ // 正则翻译
        [/Authorized OAuth Apps/, "授权的 OAuth 应用"],
        ["_regexp_end", "end"]
    ],
};

I18N["zh-CN"]["public"] = { // 公共区域翻译
    "static": { // 静态翻译
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
    },
    "regexp": [ // 正则翻译
        /**
         * 匹配时间格式
         *
         * 月 日 或 月 日, 年
         * Mar 19, 2015 – Mar 19, 2016
         * January 26 – March 19
         * March 26
         *
         * 不知道是否稳定, 暂时先试用着. 2016-03-19 20:46:45
         *
         * 更新于 2021-10-04 15:19:18
         * 增加 带介词 on 的格式,on 翻译不体现
         * on Mar 19, 2015
         * on March 26
         *
         * 更新于 2021-10-10 13:44:36
         * on 星期(简写), 月 日 年  // 个人访问令牌 有效期
         * on Tue, Nov 9 2021
         *
         * 2021-10-19 12:04:19 融合更多规则
         *
         * 4 Sep
         * 30 Dec 2020
         *
         * on 4 Sep
         * on 30 Dec 2020
         *
         * 2021-11-22 12:51:57 新增 格式
         *
         * 星期(全称), 月 日, 年 // 仓库-->洞察-->流量 图示标识
         * Sunday, November 14, 2021
         *
         * 星期(全称), 日 月 年// 仓库-->洞察-->贡献者 和 仓库-->洞察-->代码频率
         * Sunday, 4 Jul 2023
         *
         * 更新于 2023-07-04 13:19:21
         * 新增前缀词, 减少二次组织翻译
         *  Updated Jul 4            // 仪表板页面 仓库标签卡
         *  Commits on Jul 4, 2023   // 提交页面、仓库拉取请求页->提交卡
         *  Joined on Jul 4, 2023    // 追星者,关注者页面
         *
         * 更新于 2023-11-11 16:48:02
         * 个人资料页->贡献卡
         * 日期带后缀
         * on March 19th.
         * on August 22nd.
         * on August 21st.
         *
         * Tip:
         * 正则中的 ?? 前面的字符 重复0次或1次
         * 正则中的 ?: 非捕获符号(即关闭圆括号的捕获能力) 使用方法 (?: 匹配规则) -->该匹配不会被捕获 为 $数字
         */
        [/(^Updated (?:on )?|^Commits on |^Joined on |on )?(?:(Sun(?:day)?|Mon(?:day)?|Tue(?:sday)?|Wed(?:nesday)?|Thu(?:rsday)?|Fri(?:day)?|Sat(?:urday)?)?,? )?(?:(\d{1,2})(?:st.|nd.|rd.|th.)?)? ?(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?) ?(\d{1,2})?,? (\d{4})?/g, function (all, prefix, week, date1, month, date2, year) {
            var prefixKey = {
                "Updated ": "更新于 ",
                "Commits on ": "提交于 ",
                "Joined on ": "加入于 ",
                //"Submitted ": "提交于 ", // 教育
            };
            var weekKey = {
                "Sun": "周日",
                "Mon": "周一",
                "Tue": "周二",
                "Wed": "周三",
                "Thu": "周四",
                "Fri": "周五",
                "Sat": "周六"
            };
            var monthKey = {
                "Jan": "1月",
                "Feb": "2月",
                "Mar": "3月",
                "Apr": "4月",
                "May": "5月",
                "Jun": "6月",
                "Jul": "7月",
                "Aug": "8月",
                "Sep": "9月",
                "Oct": "10月",
                "Nov": "11月",
                "Dec": "12月"
            };

            // 处理日期
            var date = date1 ? date1 : date2;
            var formattedDate = (year ? year + '年' : '') + monthKey[month.substring(0, 3)] + (date ? date + '日' : '');

            // 处理星期
            var formattedWeek = week ? ',' + weekKey[week.substring(0, 3)] : '';

            // 返回翻译结果
            return (prefixKey[prefix] ? prefixKey[prefix] : '') + formattedDate + formattedWeek;
        }],
        /**
         * 相对时间格式处理
         *
         * 更新于 2021-11-21 16:47:14
         * 1. 添加 前缀词
         *    over xxx ago // 里程碑页面 最后更新时间
         *    about xxx ago // 里程碑页面 最后更新时间
         *    almost xxx ago // 里程碑页面 最后更新时间
         *    less than xxx ago // 导出账户数据
         * 2. xxx之内的相对时间格式
         *  in 6 minutes // 拉取请求页面
         *
         * 更新于 2021-11-22 11:54:30
         * 1. 修复 Bug: 意外的扩大了匹配范围(不带前缀与后缀的时间) 干扰了带有相对时间的其他规则
         *  7 months
         */
        [/^just now|^now|^last month|^yesterday|(?:(over|about|almost|in) |)(an?|\d+)(?: |)(second|minute|hour|day|month|year)s?( ago|)/, function (all, prefix, count, unit, suffix) {
            if (all === 'now') {
                return '现在';
            }
            if (all === 'just now') {
                return '刚刚';
            }
            if (all === 'last month') {
                return '上个月';
            }
            if (all === 'yesterday') {
                return '昨天';
            }
            if (count[0] === 'a') {
                count = '1';
            } // a, an 修改为 1

            var unitKey = { second: '秒', minute: '分钟', hour: '小时', day: '天', month: '个月', year: '年' };

            if (suffix) {
                return (prefix === 'about' || prefix === 'almost' ? '大约 ' : prefix === 'less than' ? '不到 ' : '') + count + ' ' + unitKey[unit] + (prefix === 'over' ? '多之前' : '之前');
            } else {
                return count + ' ' + unitKey[unit] + (prefix === 'in' ? '之内' : '之前');
            }
        }],
        /**
         * 匹配时间格式 2
         *
         * in 5m 20s
         */
        [/^(?:(in) |)(?:(\d+)m |)(\d+)s/, function (all, prefix, minute, second) {
            all = minute ? minute + '分' + second + '秒' : second + '秒';
            return (prefix ? all + '之内' : all);
        }],

        // 其他翻译
        // Anarch - 阿巴契 "反叛者 - $1"
        [/^(Anarch|Criminal|Shaper|Adam|Apex|Sunny Lebeau|Jinteki|Haas\-Bioroid|NBN|Weyland Consortium|Neutral) \- .+$/, function (all) {
            all = all.replace(/Anarch/, "反叛者")
                .replace(/Criminal/, "逆法者")
                .replace(/Shaper/, "塑造者")
                .replace(/Adam/, "亚当")
                .replace(/Apex/, "尖峰")
                .replace(/Sunny Lebeau/, "桑妮·勒博")
                .replace(/Jinteki/, "人间会社")
                .replace(/Haas\-Bioroid/, "哈斯生化")
                .replace(/NBN/, "网际传媒")
                .replace(/Weyland Consortium/, "威兰财团")
                .replace(/Neutral/, "中立");
            return all;
        }],
    ],
    "time-regexp": [ // 时间正则翻译专项
        /**
         * 匹配时间格式
         *
         * 月 日 或 月 日, 年
         * Mar 19, 2015 – Mar 19, 2016
         * January 26 – March 19
         * March 26
         *
         * 不知道是否稳定, 暂时先试用着. 2016-03-19 20:46:45
         *
         * 更新于 2021-10-04 15:19:18
         * 增加 带介词 on 的格式,on 翻译不体现
         * on Mar 19, 2015
         * on March 26
         *
         * 更新于 2021-10-10 13:44:36
         * on 星期(简写), 月 日 年  // 个人访问令牌 有效期
         * on Tue, Nov 9 2021
         *
         * 2021-10-19 12:04:19 融合更多规则
         *
         * 4 Sep
         * 30 Dec 2020
         *
         * on 4 Sep
         * on 30 Dec 2020
         *
         * 2021-11-22 12:51:57 新增 格式
         *
         * 星期(全称), 月 日, 年 // 仓库-->洞察-->流量 图示标识
         * Sunday, November 14, 2021
         *
         * Tip:
         * 正则中的 ?? 前面的字符 重复0次或1次
         * 正则中的 ?: 非捕获符号(即关闭圆括号的捕获能力) 使用方法 (?: 匹配规则) -->该匹配不会被捕获 为 $数字
         */
        [/(?:on |)(?:(\d{1,2}) |)(?:(Sun(?:day)?|Mon(?:day)?|Tue(?:sday)?|Wed(?:nesday)?|Thu(?:rsday)?|Fri(?:day)?|Sat(?:urday)?), |)(?:(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May(?:)??|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)(?:,? |$))(\d{4}|)(\d{1,2}|)(?:,? (\d{4})|)/g, function (all, date1, week, month, year1, date2, year2) {
            var weekKey = {
                "Sun": "周日",
                "Mon": "周一",
                "Tue": "周二",
                "Wed": "周三",
                "Thu": "周四",
                "Fri": "周五",
                "Sat": "周六",
            };
            var monthKey = {
                "Jan": "1月",
                "Feb": "2月",
                "Mar": "3月",
                "Apr": "4月",
                "May": "5月",
                "Jun": "6月",
                "Jul": "7月",
                "Aug": "8月",
                "Sep": "9月",
                "Oct": "10月",
                "Nov": "11月",
                "Dec": "12月"
            };
            var date = date1 ? date1 : date2;
            var year = year1 ? year1 : year2;
            return (year ? year + '年' : '') + monthKey[month.substring(0, 3)] + (date ? date + '日' : '') + (week ? ', ' + weekKey[week.substring(0, 3)] : '');
        }],
        /**
         * 相对时间格式处理
         *
         * 更新于 2021-11-21 16:47:14
         * 1. 添加 前缀词
         *    over xxx ago // 里程碑页面 最后更新时间
         *    about xxx ago // 里程碑页面 最后更新时间
         *    almost xxx ago // 里程碑页面 最后更新时间
         *    less than xxx ago // 导出账户数据
         * 2. xxx之内的相对时间格式
         *  in 6 minutes // 拉取请求页面
         *
         * 更新于 2021-11-22 11:54:30
         * 1. 修复 Bug: 意外的扩大了匹配范围(不带前缀与后缀的时间) 干扰了带有相对时间的其他规则
         *  7 months
         */
        [/^just now|^now|^last year|^last month|^last week|^yesterday|(?:(over|about|almost|in) |)(an?|\d+)(?: |)(second|minute|hour|day|month|year|week)s?( ago|)/, function (all, prefix, count, unit, suffix) {
            if (all === 'now') {
                return '现在';
            }
            if (all === 'just now') {
                return '刚刚';
            }
            if (all === 'last year') {
                return '最近 1 年';
            }
            if (all === 'last month') {
                return '上个月';
            }
            if (all === 'last week') {
                return '上周';
            }
            if (all === 'yesterday') {
                return '昨天';
            }
            if (count[0] === 'a') {
                count = '1';
            } // a, an 修改为 1

            var unitKey = { second: '秒', minute: '分钟', hour: '小时', day: '天', month: '个月', year: '年', week: '周' };

            if (suffix) {
                return (prefix === 'about' || prefix === 'almost' ? '大约 ' : prefix === 'less than' ? '不到 ' : '') + count + ' ' + unitKey[unit] + (prefix === 'over' ? '多之前' : '之前');
            } else {
                return count + ' ' + unitKey[unit] + (prefix === 'in' ? '之内' : '之前');
            }
        }],
        [/(\d+)(y|h|d|w|m)/, function (all, count, suffix) {
            var suffixKey = { y: '年', h: '小时', d: '天', w: '周', m: '个月' };

            return count + ' ' + suffixKey[suffix] + '之前';
        }],
    ],
};

I18N["zh-CN"]["homepage"] = { // 聊天部分
    "static": { // 静态翻译
    },
    "regexp": [ // 正则翻译
    ],
};

I18N["zh-CN"]["chat"] = { // 聊天部分
    "static": { // 静态翻译
    },
    "regexp": [ // 正则翻译
    ],
};

I18N["zh-CN"]["cards"] = { // 卡牌部分
    "static": { // 静态翻译
        "Deck points: 1": "牌组点数: 1",
        "Deck points: 2": "牌组点数: 2",
        "Deck points: 3": "牌组点数: 3",
        "Deck points: 4": "牌组点数: 4",
        "Deck points: 5": "牌组点数: 5",
        "Deck points: 6": "牌组点数: 6",
        "Deck points: 7": "牌组点数: 7",
        "Rotated": "轮替",
        "Restricted": "受限",
        "Removed": "移除",
        "Throwback": "复古",
    },
    "regexp": [ // 正则翻译
    ],
};

I18N["zh-CN"]["deckbuilder"] = { // 牌组构筑部分
    "static": { // 静态翻译
        "Deck points: 1": "牌组点数: 1",
        "Deck points: 2": "牌组点数: 2",
        "Deck points: 3": "牌组点数: 3",
        "Deck points: 4": "牌组点数: 4",
        "Deck points: 5": "牌组点数: 5",
        "Deck points: 6": "牌组点数: 6",
        "Deck points: 7": "牌组点数: 7",
        "Rotated": "轮替",
        "Restricted": "受限",
        "Removed": "移除",
        "Throwback": "复古",
    },
    "regexp": [ // 正则翻译
    ],
};

I18N["zh-CN"]["play"] = { // 对战部分
    "static": { // 静态翻译
        ", and": ", 和",
        ".": "。",
        "(new remote)": "(新远程服务器)",
        "accesses an unseen card from R&D.": "从研发中心读取一张未知卡牌。",
        "accesses everything else in Archives.": "读取档案库中的其他所有内容。",
        "accesses": "读取",
        "AI - Icebreaker - Virus": "智能模块 - 破解器 - 病毒",
        "and gains 1 agenda point.": "并获得1议案分数。",
        "and pays 0": "并支付0",
        "and": "和",
        "Annotating": "注释",
        "AP - Barrier": "屏障 - 杀伤",
        "approaches Archives.": "接驳档案库。",
        "approaches HQ.": "接驳总部。",
        "approaches R&D.": "接驳研发中心。",
        "approaches": "接驳",
        "breaches Archives.": "侵入档案库。",
        "breaches HQ.": "侵入总部。",
        "breaches R&D.": "侵入研发中心。",
        "Choose 1 card to trash": "选择1张卡牌以销毁",
        "Choose a card in HQ to trash": "选择销毁总部的一张卡牌",
        "Companion - Virtual": "同伴 - 虚拟",
        "Connection": "人脉",
        "Deck points: 1": "牌组点数: 1",
        "Deck points: 2": "牌组点数: 2",
        "Deck points: 3": "牌组点数: 3",
        "Deck points: 4": "牌组点数: 4",
        "Deck points: 5": "牌组点数: 5",
        "Deck points: 6": "牌组点数: 6",
        "Deck points: 7": "牌组点数: 7",
        "Discard down to 5 cards": "弃除至5张卡牌",
        "discards 1 card from HQ at end of turn.": "从总部弃除1张卡牌在回合结束时。",
        "discards": "弃除",
        "division": "部门",
        "Do 1 net damage": "造成1点网域伤害",
        "Do 2 net damage": "造成2点网域伤害",
        "Do 1 core damage": "造成1点核心伤害",
        "Do 2 core damage": "造成2点核心伤害",
        "Do 2 net damage": "造成2点网域伤害",
        "due to net damage.": "由于网域伤害。",
        "encounters": "遭遇",
        "End the run": "终止本次潜袭",
        "from HQ.": "从总部。",
        "from their Grip at end of turn.": "从其操控器在回合结束时。",
        "from": "从",
        "G-mod": "转基因人",
        "Game Log": "游戏日志",
        "has created the game.": "创建对战。",
        "has left the game.": "离开对战。",
        "has no further action.": "无更多响应。",
        "her": "她的",
        "his": "他的",
        "indicates to fire all unbroken subroutines on": "示意启动所有未破解的子进程在",
        "is flatlined.": "宣告死亡。",
        "is trashed.": "被销毁。",
        "its": "它的",
        "joined the game as a spectator.": "作为观众加入对战。",
        "joined the game.": "加入对战。",
        "Keep hand?": "保留手牌?",
        "Keep": "保留",
        "keeps her hand.": "保留她的手牌。",
        "keeps his hand.": "保留他的手牌。",
        "keeps its hand.": "保留它的手牌。",
        "keeps their hand.": "保留其手牌。",
        "looks at her deck.": "查看其牌组。",
        "looks at his deck.": "查看其牌组。",
        "looks at its deck.": "查看其牌组。",
        "looks at their deck.": "查看其牌组。",
        "makes her mandatory start of turn draw.": "执行她的回合开始时强制抽牌。",
        "makes his mandatory start of turn draw.": "执行他的回合开始时强制抽牌。",
        "makes its mandatory start of turn draw.": "执行它的回合开始时强制抽牌。",
        "makes their mandatory start of turn draw.": "执行其回合开始时强制抽牌。",
        "Mulligan": "调度",
        "No action": "无响应",
        "passes": "通过",
        "Pause please, opponent is acting": "请暂停,对手正在响应",
        "Please pause, Corp is acting.": "请暂停,公司正在响应。",
        "Please pause, Runner is acting.": "请暂停,潜袭者正在响应。",
        "protecting R&D at position 0 +1 strength and \"End the run unless the Runner trashes 1 of their installed cards\" after its other subroutines.": "位置 0 的保护研发中心,强度+1并在其它子进程后获得“终止本次潜袭,除非潜袭者销毁1张其已安装的卡牌。”",
        "Rearrange the top 5 cards of R&D": "",
        "rejoined the game.": "重新加入对战。",
        "Removed": "移除",
        "resolves 1 unbroken subroutine on": "结算1条未破解的子进程在",
        "Restricted": "受限",
        "Rotated": "轮替",
        "Run Timing": "潜袭时序",
        "Server": "服务器",
        "Settings": "游戏设置",
        "Shared Annotations": "共享注释",
        "shuffles her deck.": "混洗其牌组。",
        "shuffles his deck.": "混洗其牌组。",
        "shuffles its deck.": "混洗其牌组。",
        "shuffles their deck.": "混洗其牌组。",
        "spends": "花费",
        "Steal": "窃取",
        "steals": "窃取",
        "stops looking at her deck.": "停止查看其牌组。",
        "stops looking at his deck.": "停止查看其牌组。",
        "stops looking at its deck.": "停止查看其牌组。",
        "stops looking at their deck.": "停止查看其牌组。",
        "takes a mulligan.": "进行一次调度。",
        "their": "其",
        "to access 1 additional card.": "以读取1张额外的卡牌。",
        "to add 1": "以增加 1",
        "to derez": "以关闭",
        "to do 1 net damage.": "以造成1点网域伤害。",
        "to do 2 net damage.": "以造成2点网域伤害。",
        "to end the run.": "以终止本次潜袭。",
        "to gain": "以获得",
        "to give": "给予",
        "to install a card in the root of HQ.": "以安装一张卡牌到总部的根目录。",
        "to install a card in the root of R&D.": "以安装一张卡牌到研发中心的根目录。",
        "to install ice protecting Archives.": "以安装防火墙保护档案库。",
        "to install ice protecting HQ.": "以安装防火墙保护总部。",
        "to install ice protecting R&D.": "以安装防火墙保护研发中心。",
        "to install": "以安装",
        "to itself.": "至其自身。",
        "to make a run on Archives.": "对档案库进行一次潜袭。",
        "to make a run on HQ.": "对总部进行一次潜袭。",
        "to make a run on R&D.": "对研发中心进行一次潜袭。",
        "to place 1 power counter on itself.": "以放置1枚能量指示物到其自身。",
        "to play": "以打出",
        "to rearrange the top 5 cards of R&D.": "以重新排列研发中心顶部5张卡牌。",
        "to rez": "以激活",
        "to use Corp Basic Action Card to draw 1 card.": "以使用公司基础行动抽1张卡牌。",
        "to use Corp Basic Action Card to purge all virus counters.": "以使用公司基础行动清除所有病毒指示物。",
        "to use Runner Basic Action Card to draw 1 card.": "以使用潜袭者基础行动抽1张卡牌。",
        "to use Runner Basic Action Card to remove 1 tag.": "以使用潜袭者基础行动移除1枚锁定标记。",
        "to use": "以使用",
        "Trash 1 card from HQ to end the run": "从总部销毁1张卡牌,以终止本次潜袭",
        "Trash a card from HQ to do 2 net damage?": "从总部销毁1张卡牌,以造成2点网域伤害?",
        "trashes 1 card from HQ to use": "从总部销毁1张卡牌以使用",
        "trashes due to net damage.": "销毁由于网域伤害。",
        "trashes": "销毁",
        "Turn Timing": "回合时序",
        "uses": "使用",
        "Waiting for Corp to keep hand or mulligan": "等待公司保留或调度手牌",
        "Waiting for Corp to make a decision": "等待公司做出决定",
        "Waiting for Runner to keep hand or mulligan": "等待潜袭者保留或调度手牌",
        "Waiting for Runner to make a decision": "等待潜袭者做出决定",
        "will continue the run.": "将继续本次潜袭。",
        "wins the game.": "赢得对战。",
        "You accessed": "你读取了",
        "to break 1 subroutine on": "以破解1条子进程在",
        "loses": "花费",
        "Do 2 net damage if the runner has 2 tags": "如果潜袭者具有至少2枚锁定标记,造成2点网域伤害",
        "Give the Runner 1 tag": "给予潜袭者1枚锁定标记",
        "to trash": "以销毁",
        "from the top of the stack.": "从存储栈顶端。",
        "from the Heap (paying 3": "从堆阵 (支付 3",
        "less).": "少)。",
        "and draw 1 card.": "并抽1张卡牌。",
        "scores": "计分",
        "to look at the top 3 cards of R&D.": "以查看研发中心顶端的3张卡牌。",
        "declines to use": "拒绝使用",
        "derezzes": "关闭",
        "Natural": "原生人",
        "The top of R&D is (top->bottom):": "研发中心顶端是 (顶端->底端):",
        ". Choose a card to trash": "。选择一张卡牌以销毁",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
    },
    "regexp": [ // 正则翻译
        [/^(.+) has created the game\.$/, "$1 创建了游戏。"],
        [/^(.+) joined the game\.$/, "$1 加入了游戏。"],
        [/^(.+) joined the game as a spectator\.$/, "$1 作为观众加入了游戏。"],
        [/^in Server (\d+)\.$/, "在服务器 $1 中。"],
        [/^Server (\d+)$/, "服务器 $1"],
        // "and pays 0": "并支付 0",
        [/^and pays (\d+)$/, "并支付$1"],
        // "pays 0": "支付 0",
        [/^pays (\d+)$/, "支付 $1"],
        // to gain 9
        [/^to gain (\d+)$/, "获得$1"],
        // started their turn 1 with 5
        [/^(is ending|started) (their|her|his|its) turn (\d+) with (\d+)$/, function (all, pre, pronoun, turn, credit) {
            if (pre == "started") pre = "开始";
            if (pre == "is ending") pre = "结束";
            return pre + "其第" + turn + "回合,拥有" + credit;
        }],
        [/^and (\d+) cards? in HQ\.$/, "和总部$1张卡牌。"],
        [/^and (\d+) cards? in (their|her|his|its) Grip\.$/, "和操控器$1张卡牌。"],
        // "to install a card in the root of Server 1 (new remote).": "安装一张卡牌到服务器 1 的根目录(新远程服务器)。",
        [/^to install a card in the root of Server (\d+)(?: \((new remote)\))?\.$/, function (all, Server, newremote) {
            newremote = newremote ? "(新远程服务器)" : "";
            return "安装一张卡牌到服务器 " + Server + " 的根目录" + newremote + "。";
        }],
        // 'to install ice protecting Server 1 (new remote).'
        [/^to install ice protecting Server (\d+) \(new remote\)\.$/, "安装防火墙保护服务器 $1(新远程服务器)。"],
        // "to install ice protecting Server 1.": "",
        [/^to install ice protecting Server (\d+)\.$/, "安装防火墙保护服务器 $1。"],
        // to draw 3 cards.
        [/^to draw (\d+) cards?\.$/, "抽$1张卡牌。"],
        // sets click to 1 (-1).
        [/^sets click to (\d+) (\(\-\d+\))\.$/, "设置时点至 $1 $2。"],
        [/^sets click to (\d+) (\(\+\d+\))\.$/, "设置时点至 $1 $2。"],
        [/^sets credit to (\d+) (\(\-\d+\))\.$/, "设置信用点数至 $1 $2。"],
        [/^sets credit to (\d+) (\(\+\d+\))\.$/, "设置信用点数至 $1 $2。"],
        // "to use Corp Basic Action Card to gain 1": "使用公司基础行动获得 1",
        [/^to use Corp Basic Action Card to gain (\d+)$/, "使用公司基础行动获得 $1"],
        [/^to use Runner Basic Action Card to gain (\d+)$/, "使用潜袭者基础行动获得 $1"],
        // "approaches ice protecting Archives at position 0.": "接驳位于位置 0 的保护档案库的防火墙。",
        [/^approaches ice protecting Archives at position (\d+)\.$/, "接驳位置 $1 的保护档案库的防火墙。"],
        [/^approaches ice protecting HQ at position (\d+)\.$/, "接驳位置 $1 的保护总部的防火墙。"],
        [/^approaches ice protecting R&D at position (\d+)\.$/, "接驳位置 $1 的保护研发中心的防火墙。"],
        [/^approaches ice protecting Server (\d+) at position (\d+)\.$/, "接驳位置 $2 的保护服务器 $1 的防火墙。"],
        [/^approaches Server (\d+)\.$/, "接驳服务器 $1。"],
        [/^breaches Server (\d+)\.$/, "侵入服务器 $1。"],
        [/^from Server (\d+)\.$/, "从服务器 $1。"],
        // protecting Archives at position 0.
        [/^protecting Archives at position (\d+)\.$/, "保护档案库位于位置 $1。"],
        [/^protecting HQ at position (\d+)\.$/, "保护总部位于位置 $1。"],
        [/^protecting R&D at position (\d+)\.$/, "保护研发中心位于位置 $1。"],
        //  protecting Server 2 at position 0.
        [/^protecting Server (\d+) at position (\d+)\.$/, "保护服务器 $1 位于位置 $2。"],
        // to draw 1 card.
        [/^to draw (\d+) cards?\.$/, "抽$1张卡牌。"],
        // discards 1 card from HQ at end of turn.
        [/^discards (\d+) cards? from HQ at end of turn\.$/, "从总部弃除$1张卡牌在回合结束时。"],
        // "and gains 1 agenda point.": "并获得1议案分数。",
        [/^and gains (\d+) agenda points?\.$/, "并获得$1议案分数。"],
        // and spends 1 hosted power counter from on
        [/^and spends (\d+) hosted power counters? from on$/, "并花费$1个所附载的能量指示物来自位于"],
        // spends 1 hosted power counter from on
        [/^spends (\d+) hosted power counters? from on$/, "花费$1个所附载的能量指示物来自位于"],
        // uses a command: /undo-turn
        [/^uses a command: (.+)$/, "使用一个指令: $1"],
        // "Trash ice protecting Server 2 (minimum 1)"
        [/^Trash ice protecting Server (\d+) \(minimum (\d+)\)$/, "销毁保护服务器 $1 的防火墙 (最少 $2)"],
        // "to make a run on Archives.": "对档案库进行一次潜袭。",to make a run on Server 2.
        [/^to make a run on Server (\d+)\.$/, "对服务器 $1 进行一次潜袭。"],
        // "resolves 1 unbroken subroutine on": "结算1条未破解的子进程在",
        [/^resolves (\d+) unbroken subroutines? on$/, "结算$1条未破解的子进程在"],
        // "identifies his mark to be HQ.": "",
        [/^identifies (their|her|his|its) mark to be HQ\.$/, "发现其目标为总部。"],
        [/^identifies (their|her|his|its) mark to be R&D\.$/, "发现其目标为研发中心。"],
        [/^identifies (their|her|his|its) mark to be Archives\.$/, "发现其目标为档案库。"],
        [/^to target ice protecting Server (\d+) at position (\d+)\.$/, "以选择位置 $2 保护服务器 $1 的防火墙。"],
        // passes ice protecting Server 1 at position 0.
        [/^passes ice protecting Server (\d+) at position (\d+)\.$/, "通过位置 $2 的保护服务器 $1 的防火墙。"],
        [/^passes ice protecting R&D at position (\d+)\.$/, "通过位置 $2 的保护研发中心的防火墙。"],
        [/^passes ice protecting HQ at position (\d+)\.$/, "通过位置 $2 的保护总部的防火墙。"],
        [/^passes ice protecting Archives at position (\d+)\.$/, "通过位置 $2 的保护档案库的防火墙。"],
        // to use Corp Basic Action Card to advance a card in Server 1.
        [/^to use Corp Basic Action Card to advance a card in Server (\d+)\.$/, "以使用公司基础行动以推进一张在服务器 $1 的卡牌。"],
        // "Do 1 net damage\").": "造成1点网域伤害\")。",
        [/^(.*)\"\)\.$/, function (all, sub) {
            sub = I18N["zh-CN"]["play"]["static"][sub] ?? sub
            return sub + "\")。";
        }],
        // "Do 1 net damage\" and \"": "",
        [/^(.*)\" and \"$/, function (all, sub) {
            sub = I18N["zh-CN"]["play"]["static"][sub] ?? sub
            return sub + "\" 和 \"";
        }],
        // "to install ice from position 2 of R&D protecting HQ.": "从研发中心位置 2 安装防火墙保护总部。",
        [/^to install ice from position (\d+) of R&D protecting HQ\.$/, "从研发中心位置 $1 安装防火墙保护总部。"],
        [/^trashes (\d+) cards? \($/, "销毁$1张卡牌 ("],
        [/^Server (\d+)$/, "服务器 $1"],

    ],
};

I18N["zh-CN"]["help"] = { // 帮助部分
    "static": { // 静态翻译
    },
    "regexp": [ // 正则翻译
    ],
};

I18N["zh-CN"]["account"] = { // 设置部分
    "static": { // 静态翻译
    },
    "regexp": [ // 正则翻译
    ],
};
I18N["zh-CN"]["stats"] = { // 统计部分
    "static": { // 静态翻译
    },
    "regexp": [ // 正则翻译
    ],
};

I18N["zh-CN"]["about"] = { // 关于部分
    "static": { // 静态翻译
        "About": "关于",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
        "": "",
    },
    "regexp": [ // 正则翻译
    ],
};