{
  "_comment": "------ On the Dynamics of Integration contents ------",
  "itemGroup.integratedscripting": "联合脚本",
  "general.integratedscripting.description": "在动态联合中编写脚本，处理复杂操作。",
  "advancement.integratedscripting.mendesite": "门山岩井喷",
  "advancement.integratedscripting.mendesite.desc": "制作一块门山岩，它是联合脚本的基础资源。",
  "advancement.integratedscripting.scripting_disk": "不是软盘！",
  "advancement.integratedscripting.scripting_disk.desc": "制作一张脚本磁盘，用来存储脚本数据。",
  "advancement.integratedscripting.scripting_drive": "我，驱动",
  "advancement.integratedscripting.scripting_drive.desc": "制作一台脚本驱动器，可由此将脚本加载至网络。",
  "advancement.integratedscripting.terminal_open": "脚本的发现",
  "advancement.integratedscripting.terminal_open.desc": "打开脚本终端GUI。",
  "advancement.integratedscripting.terminal_bind": "脚本的崛起",
  "advancement.integratedscripting.terminal_bind.desc": "创建一份脚本，并与变量卡绑定。",
  "advancement.integratedscripting.terminal_display": "脚本的爆发",
  "advancement.integratedscripting.terminal_display.desc": "在显示器中展示脚本里的值",
  "advancement.integratedscripting.filter_chest": "强力物品列表过滤器",
  "advancement.integratedscripting.filter_chest.desc": "用基于脚本的函数过滤从箱子读取的物品列表。",
  "block.integratedscripting.mendesite": "门山岩",
  "gui.integratedscripting.disk": "磁盘",
  "gui.integratedscripting.script": "脚本",
  "gui.integratedscripting.create_file": "新建文件",
  "gui.integratedscripting.removal_dialog.title": "确认删除脚本",
  "gui.integratedscripting.removal_dialog.message": "你是否希望删除“%s”？",
  "gui.integratedscripting.removal_dialog.delete": "删除",
  "gui.integratedscripting.removal_dialog.keep": "保留",
  "gui.integratedscripting.error.invalid_member": "在脚本编辑器中选中有效函数名或变量名以绑定。",
  "gui.integratedscripting.error.invalid_member.current": "当前选中：“%s”",
  "valuetype.integratedscripting.error.translation.unknown_to_graal": "找不到值%s至Graal的翻译器。",
  "valuetype.integratedscripting.error.translation.unknown_to_graal_nbt": "在NBT翻译过程中找不到值%s至Graal的翻译器。",
  "valuetype.integratedscripting.error.translation.unknown_from_graal": "找不到Graal值%s的翻译器。",
  "valuetype.integratedscripting.error.translation.list_infinite": "无法将无限的列表翻译为脚本语言。",
  "valuetype.integratedscripting.error.translation.nbt_unknown": "无法翻译类型为%s的NBT值。",
  "valuetype.integratedscripting.error.translation.nbt_unmatched": "无法将字段%s的值解释为NBT。",
  "valuetype.integratedscripting.error.translation.unsupported_translateToNbt": "%s“%s”至NBT的转化不合法。",
  "valuetype.integratedscripting.error.translation.proxyobject_putMember": "向只读%2$s添加键“%1$s”的操作不合法。",
  "operator.integratedscripting.integratedscript.basename": "联合脚本%s",
  "operator.integratedscripting.integratedscript.graal": "Graal函数",
  "operator.integratedscripting.error.no_graal_serialization": "脚本无法序列化",
  "script.integratedscripting.tooltip.disk": "§e§o磁盘ID：§r§o%s",
  "script.integratedscripting.tooltip.path": "§e§o脚本路径：§r§o%s",
  "script.integratedscripting.tooltip.member": "§e§o成员：§r§o%s",
  "script.integratedscripting.error.invalid_network": "无法找到有效的脚本网络。",
  "script.integratedscripting.error.disk_not_in_network": "当前网络中无法找到ID为%s的磁盘。",
  "script.integratedscripting.error.path_not_in_network": "ID为%s的磁盘中不存在脚本文件“%s”。",
  "script.integratedscripting.error.member_not_in_network": "ID为%1$s的磁盘的脚本文件“%3$s”中不存在成员“%2$s”。",
  "script.integratedscripting.error.unsupported_language": "不支持脚本文件“%s”的语言。",
  "script.integratedscripting.error.script_read": "读取磁盘%2$s的脚本文件“%1$s”时出现了错误：%3$s",
  "script.integratedscripting.error.script_exec": "执行磁盘%3$s的脚本文件“%2$s”中的成员“%1$s”时出现了错误：%4$s",
  "script.integratedscripting.error.invalid_type": "磁盘%3$s的脚本文件“%2$s”中带有成员“%1$s”的脚本预期将公开类型为%4$s的变量，而实际为%5$s。",
  "item.integratedscripting.scripting_disk": "脚本磁盘",
  "item.integratedscripting.scripting_disk.info": "存储脚本。",
  "item.integratedscripting.scripting_disk.id": "ID：%s",
  "item.integratedscripting.scripting_disk.bytes": "字节数：%s",
  "block.integratedscripting.scripting_drive": "脚本驱动器",
  "block.integratedscripting.scripting_drive.info": "令脚本磁盘向网络公开。",
  "parttype.integratedscripting.terminal_scripting": "脚本终端",
  "parttype.integratedscripting.terminal_scripting.info": "管理网络中脚本驱动器内存储的脚本。",
  "info_book.integratedscripting.section.main": "脚本",
  "info_book.integratedscripting.introduction": "介绍",
  "info_book.integratedscripting.introduction.text1": "&l联合脚本&r是&l动态联合&r的扩展模组，内容包括编写脚本以处理&l动态联合&r网络中的复杂操作。默认情况下，本模组自带对JavaScript脚本语言的支持。",
  "info_book.integratedscripting.introduction.text2": "本模组允许你通过便捷的脚本语言定义&l动态联合&r的逻辑运算，而不再需要使用基于变量卡的可视化标准方法：它在面对层层链接的运算操作时太过笨重。",
  "info_book.integratedscripting.introduction.text3": "比如，本模组可以极方便地定义复杂的物品列表过滤器；形如&o“可损失耐久度的、模组X添加的、只可由钻石镐破坏的方块所对应的物品”“获取列表中堆叠数第二大的物品”&r的描述，均在其列。",
  "info_book.integratedscripting.introduction.text4": "使用此模组时具有基础编程知识为优，也可通过书中后续的教程学习。",
  "info_book.integratedscripting.materials": "材料",
  "info_book.integratedscripting.materials.text1": "在开始编写脚本之前，你需要首先制作一些&l门山岩&r。这些方块有很强的可塑性，是存储和处理脚本的优良基底。往&l烘干池&r中放入&l门瑞欧树脂&r和&l安山岩&r就可制成&l门山岩&r。",
  "info_book.integratedscripting.concepts": "概念",
  "info_book.integratedscripting.concepts.text1": "脚本的编辑、存储、运行需要三样网络组件：&l脚本终端&r、&l脚本磁盘&r，以及&l脚本驱动器&r。",
  "info_book.integratedscripting.concepts.text2": "&l脚本磁盘&r用于存储原始脚本，但它无法独立工作。",
  "info_book.integratedscripting.concepts.text3": "&l脚本驱动器&r允许你插入单张&l脚本磁盘&r，其中内容会公开至网络。",
  "info_book.integratedscripting.concepts.text4": "&l脚本终端&r则用来查看、管理、编辑当前网络中&l脚本驱动器&r公开的所有脚本。",
  "info_book.integratedscripting.concepts.text5": "后续页面将详细探讨上述三种组件。",
  "info_book.integratedscripting.disk": "脚本磁盘",
  "info_book.integratedscripting.disk.text1": "&l脚本磁盘&r的职能是存储脚本，使用时应当插入&l脚本驱动器&r。由&l门山岩&r和几张&l变量卡&r合成。",
  "info_book.integratedscripting.disk.text2": "将&l脚本磁盘&r插入&l脚本驱动器&r后，它们会获得独一无二的数字ID。在&l脚本终端&r中修改该磁盘中脚本时会用到此ID。这项ID也用于&l变量卡&r和脚本元素间的链接。",
  "info_book.integratedscripting.disk.text3": "在不同的&l脚本驱动器&r间移动&l脚本磁盘&r不会损失脚本数据，跨网络移动也是一样。不过，如果磁盘经历了跨网络转移，引用了其中脚本ID的&l变量卡&r就会开始报错，这是因为对应脚本已不再与其处于同一网络。",
  "info_book.integratedscripting.disk.text4": "&l脚本磁盘&r的存储容量没有上限，但为管理方便考虑，推荐将多个脚本分块存储至多个磁盘。",
  "info_book.integratedscripting.drive": "脚本驱动器",
  "info_book.integratedscripting.drive.text1": "&l脚本驱动器&r是连接至&l动态联合&r网络的方块，它接受单张&l脚本磁盘&r，其中脚本会公开给网络使用。",
  "info_book.integratedscripting.drive.text2": "合成它需要&l变量卡箱&r、&l唱片机&r和一些&l脚本磁盘&r。",
  "info_book.integratedscripting.terminal": "脚本终端",
  "info_book.integratedscripting.terminal.text1": "若要管理&l动态联合&r网络中各&l脚本磁盘&r存储的脚本，就必须在网络中连接一块&l脚本终端&r。",
  "info_book.integratedscripting.terminal.text2": "右击终端会打开一个简化版&o集成开发环境&r（IDE），可在其中编辑脚本。",
  "info_book.integratedscripting.terminal.text3": "界面左上角可选择连接至网络的&l脚本磁盘&r的ID，其中存储的所有脚本会显示于下方的列表。",
  "info_book.integratedscripting.terminal.text4": "如果磁盘中还未存有脚本文件，可以点击界面左下角的“+”按钮新建一份。",
  "info_book.integratedscripting.terminal.text5": "界面左侧的脚本文件列表用于选择脚本，以供编辑。点击脚本后，其中内容会显示于界面右侧的可编辑区域中。",
  "info_book.integratedscripting.terminal.text6": "界面右侧的文本编辑框用于编辑脚本文件的内容，每次修改后自动保存。",
  "info_book.integratedscripting.terminal.text7": "尽管编辑器目前已在一定程度上支持语法高亮，但仍无法检测出语法错误。使用&l变量卡&r执行脚本时会产生这些错误的提示。",
  "info_book.integratedscripting.terminal.text8": "在&l动态联合&r的逻辑运算中使用脚本成员前，需先将其绑定至&l变量卡&r。",
  "info_book.integratedscripting.terminal.text9": "使用鼠标选中编辑器中的变量名、函数名等，即可令其与变量卡绑定。",
  "info_book.integratedscripting.terminal.text10": "之后，往界面右下角的槽位中放入一张&l变量卡&r，即能令其与所选中的脚本成员绑定。",
  "info_book.integratedscripting.terminal.text11": "这张&l变量卡&r可在网络其他位置使用，比如可以在&l显示器&r中展示变量，或将函数用作物品列表的过滤运算符。",
  "info_book.integratedscripting.terminal.text12": "下一章节会详细介绍脚本的编写方式。",
  "info_book.integratedscripting.writing": "编写脚本",
  "info_book.integratedscripting.writing.js": "JavaScript",
  "info_book.integratedscripting.writing.js.text1": "此模组接受以JavaScript语法编写的脚本。ECMAScript（ECMA-262）允许的所有特性均可用。",
  "info_book.integratedscripting.writing.js.text2": "需注意，&orequire&r和&ofs&r等Node.js独占的功能不可用。如果你对Node.js应用开发很熟悉，可以使用诸如Webpack的外部工具兼容那些功能。",
  "info_book.integratedscripting.writing.variables": "常量与变量",
  "info_book.integratedscripting.writing.variables.text1": "动态联合中常见的类型（比如&6整型&0、&9布尔型&0、&8物品&0）在JavaScript中均有对应类型，反之亦然。",
  "info_book.integratedscripting.writing.variables.text2": "要在JavaScript中创建值，再把它变成静态的&l变量卡&r值，最直截了当的操作方式便是使用&olet&r或&oconst&r声明一个变量。",
  "info_book.integratedscripting.writing.variables.text3": "&olet&r声明的变量可在后续脚本中重新赋值。&oconst&r声明的变量无法再次赋值。",
  "info_book.integratedscripting.writing.variables.text4": "要在&l变量卡&r中使用该变量，需在脚本终端的编辑器中选中该变量的名称，然后往右侧槽位插入空&l变量卡&r。这张&l变量卡&r后续就可像其他变量卡一样使用，比如在&l显示器&r中展示。",
  "info_book.integratedscripting.writing.variables.text5": "用JavaScript创建变量适合用于难以用&l逻辑编程器&r编写的复杂值，例如定值长字符串。下方是创建此类变量的一些示例。",
  "info_book.integratedscripting.writing.functions": "函数",
  "info_book.integratedscripting.writing.functions.text1": "作为动态联合的首要元素，&2运算符&0可以用JavaScript函数创建。",
  "info_book.integratedscripting.writing.functions.text2": "JavaScript中所有的函数创建方式都可用来创建&2运算符&0，&ofunction&r关键字和lambda函数均可。",
  "info_book.integratedscripting.writing.functions.text3": "函数接受一定数量的参数。在动态联合中运行时，传入的JavaScript值均由动态联合的变量转化而来。",
  "info_book.integratedscripting.writing.functions.text4": "要将JavaScript函数绑定为&2运算符&0，所需的操作过程与常量和变量无二：在脚本终端的编辑器中选中函数名，再绑定至&l变量卡&r。所有接受&2运算符&0的地方都能使用该值。",
  "info_book.integratedscripting.writing.functions.text5": "比如说，创建接受单个&8物品&0参数、返回&9布尔型&0的函数，在读取箱子中物品列表时，就可用作过滤&2运算符&0。",
  "info_book.integratedscripting.writing.functions.text6": "下方是不同类型函数的创建示例。",
  "info_book.integratedscripting.writing.globals": "全局函数",
  "info_book.integratedscripting.writing.globals.text1": "编写JavaScript代码时，可以通过全局变量&oidContext&r下的&oops&r字段访问所有动态联合运算符。这些运算符均已转译为函数。在写新运算符时，可以借此方式使用自带的运算符。",
  "info_book.integratedscripting.writing.globals.text2": "比如，可以编写一个&8物品&0过滤器，以检验物品可堆叠，且堆叠数至少为16。示例如下。",
  "info_book.integratedscripting.writing.globals.text3": "如需查询运算符的名称，可以在&l逻辑编程器&r中查看运算符说明里的全局名称，或在本书的“逻辑编程”条目下查找。",
  "info_book.integratedscripting.writing.globals.text4": "通过&oidContext&r调用函数比较繁琐。可以考虑将这些运算符存储到自定义的常量中去，如后所示；此外，还可以使用&o对象方法&r，如下一条目所示。",
  "info_book.integratedscripting.writing.methods": "对象方法",
  "info_book.integratedscripting.writing.methods.text1": "全局函数的语法较为繁琐。使用更为紧凑的&l对象方法&r有时可以简化脚本。",
  "info_book.integratedscripting.writing.methods.text2": "在JavaScript中使用时，&8方块&0、&8物品s&0和&8流体s&0等对象类型均有对应&l方法&r。",
  "info_book.integratedscripting.writing.methods.text3": "对象方法与相应的普通函数一致，但在调用时会将对象绑定到首个参数上。",
  "info_book.integratedscripting.writing.methods.text4": "例如，全局函数&oitemstackStackable&r接受单个&8物品&0参数，并返回一个&9布尔型&0。相应的对象方法为&ostackable&r，不接受参数。",
  "info_book.integratedscripting.writing.methods.text5": "接受两个及以上参数的全局函数也有相应的对象方法：首个参数绑定至对象，其余参数顺延。比如，全局函数&oitemstackStrength&r接受一个&8物品&0和一个&8方块&0参数；在&8物品&0上的相应方法只接受后一&8方块&0参数。",
  "info_book.integratedscripting.advanced": "进阶",
  "info_book.integratedscripting.advanced.transient_storage": "暂态存储",
  "info_book.integratedscripting.advanced.transient_storage.text1": "动态联合的设计基于函数式编程的原则，因此基本不存在记录状态的手段，除非使用&l延迟器&r等外部方式绕过这一限制。",
  "info_book.integratedscripting.advanced.transient_storage.text2": "JavaScript语言允许混用函数式编程和命令式编程，这一特性便可用于临时记录状态。",
  "info_book.integratedscripting.advanced.transient_storage.text3": "具体说来，如果在函数外部声明了可变变量（比如说用了&olet&r），该变量就可通过后续函数调用而修改。",
  "info_book.integratedscripting.advanced.transient_storage.text4": "基于这些暂态变量，可以做到统计函数调用次数、实时统计一系列值的平均数等工作。",
  "info_book.integratedscripting.advanced.transient_storage.text5": "需要强调的是，这些变量是暂态的而非持久的；具体而言，其值会随着重新插拔变量卡和重启服务器而重置。",
  "info_book.integratedscripting.advanced.transient_storage.text6": "因此，这些值无法保证能永久存在。如果需要持久的数据存储方式，最好还是使用&l延迟器&r。",
  "info_book.integratedscripting.advanced.external_editing": "外部编辑",
  "info_book.integratedscripting.advanced.external_editing.text1": "如你能访问单人或多人世界的存档文件，就可在任意外部编辑器中打开这些脚本。你可以用你最爱的IDE（比如Vi，但肯定不会是Emacs）编写脚本。",
  "info_book.integratedscripting.advanced.external_editing.text2": "脚本文件位于&oworld/integratedscripting/&r目录下（单人世界见&osaves/&r目录）。各&l脚本磁盘&r分属不同的子目录，目录名称则分别是它们的ID。&l脚本磁盘&r的目录下即是该磁盘中存有的所有脚本文件。",
  "info_book.integratedscripting.advanced.external_editing.text3": "你可以在外部编辑器中随意修改这些文件，就算游戏开着也不会产生问题。在外部保存文件后，游戏内脚本和有关变量也会自动更新。",
  "info_book.integratedscripting.advanced.external_editing.text4": "如果你的外部编辑器有对应支持（现代IDE基本都有），在&l脚本终端&r内更新脚本文件后，外部编辑器中的文件也会同步更新。",
  "info_book.integratedscripting.advanced.logging": "日志",
  "info_book.integratedscripting.advanced.logging.text1": "复杂的脚本常需调试，因此可能需要暂时向外部日志文件输出信息。",
  "info_book.integratedscripting.advanced.logging.text2": "JavaScript中可以调用&oconsole.log()&r和&oconsole.error()&r等函数，分别向&o标准输出&r和&o标准错误&r流输出。",
  "info_book.integratedscripting.advanced.logging.text3": "调用上述函数后，日志信息会分别输出至&o.stdout&r和&o.stderr&r文件。",
  "info_book.integratedscripting.advanced.logging.text4": "比如，如果你的脚本位于&omyfile.js&r，则日志会输出至&omyfile.js.stdout&r。",
  "info_book.integratedscripting.advanced.logging.text5": "&l脚本终端&r和外部编辑器均可访问上述&o.stdout&r和&o.stderr&r文件。",
  "info_book.integratedscripting.advanced.logging.text6": "为避免日志文件过于庞大，它们的行数有一定上限，默认情况下为2096行。如有更多行数的需求，请咨询你所处服务器的管理员。",
  "info_book.integratedscripting.advanced.typescript": "TypeScript",
  "info_book.integratedscripting.advanced.typescript.text1": "TypeScript语言是JavaScript的著名超集之一，加入了类型支持。开发者可以使用这种语言为变量和函数声明类型，以此编写类型安全的JavaScript。",
  "info_book.integratedscripting.advanced.typescript.text2": "虽然联合脚本仅支持原生JavaScript，但也拥有单个TypeScript&o类型声明文件&r，其中包含所有可用的全局函数、值类型及其方法的说明。",
  "info_book.integratedscripting.advanced.typescript.text3": "在外部IDE编辑脚本时，可以加载此类型声明文件以保证类型安全。仅在了解TypeScript与其使用方法时推荐这一做法。",
  "info_book.integratedscripting.advanced.typescript.text4": "类型声明文件位于&oworld/integratedscripting/integratedscripting.d.ts&r（单人世界见&osaves/&r目录）。此文件会在每次打开世界时自动重新生成，因此不应该手动修改此文件。",
  "info_book.integratedscripting.section.tutorials": "脚本教程",
  "info_book.integratedscripting.tutorials.introduction": "介绍",
  "info_book.integratedscripting.tutorials.introduction.text1": "本节包含了几份教程，可帮助你了解和学习&l联合脚本&r⸺用于创建脚本处理复杂操作的&l动态联合&r附加组件。",
  "info_book.integratedscripting.tutorials.basics": "脚本编写基础",
  "info_book.integratedscripting.tutorials.basics.text1": "&l门山岩&r是脚本相关物品最基础、也最重要的合成材料。用&l烘干池&r制作一些吧！",
  "info_book.integratedscripting.tutorials.basics.text2": "然后，我们使用&l门山岩&r制造出一些&l脚本磁盘&r和&l脚本驱动器&r。&l脚本磁盘&r能够存储脚本数据，而&l脚本驱动器&r则用来向网络插入这些磁盘。",
  "info_book.integratedscripting.tutorials.basics.text3": "最后，放置一台&l脚本驱动器&r，并往里放入一张&l脚本磁盘&r。在下一份教程中，我们将使用这些设备存储脚本。",
  "info_book.integratedscripting.tutorials.terminal": "使用脚本终端",
  "info_book.integratedscripting.tutorials.terminal.text1": "在上一份教程里，我们制作并放置了&l脚本磁盘&r和&l脚本驱动器&r。本教程中将主要介绍实操中如何&o编写&r脚本，以及如何将其绑定至&l变量卡&r。",
  "info_book.integratedscripting.tutorials.terminal.text2": "首先，合成一个&l脚本终端&r，放到连接至&l脚本驱动器&r的线缆上，再右击打开&l脚本终端&r。",
  "info_book.integratedscripting.tutorials.terminal.text3": "网络中&l脚本磁盘&r里存储的所有脚本文件，均可在打开的编辑界面中访问。点击界面左上角的箭头可以切换活动的&l脚本磁盘&r。",
  "info_book.integratedscripting.tutorials.terminal.text4": "此时，网络中应当还没有脚本文件，我们点击界面左下角的“+”按钮新建一份。点击打开新文件，再点击右侧的文本编辑框以编辑文件，编写&oJavaScript&r代码。",
  "info_book.integratedscripting.tutorials.terminal.text5": "教程需由浅入深，此处我们先只创建一个常量。我们先编写类似&oconst myVar = 123;&r的语句。",
  "info_book.integratedscripting.tutorials.terminal.text6": "最后，我们将这个常量绑定至&l变量卡&r。将空&l变量卡&r放入界面右侧的槽位，再双击选择变量。&l变量卡&r现在就与常量绑定了。你可以在网络中任意位置使用这张&l变量卡&r。让我们放到&l显示器&r里展示一下吧！",
  "info_book.integratedscripting.tutorials.functions": "编写函数",
  "info_book.integratedscripting.tutorials.functions.text1": "通过JavaScript创建常量也许很有趣，不过脚本真正的强大之处，还需看&o函数&r。",
  "info_book.integratedscripting.tutorials.functions.text2": "在JavaScript中创建的函数可在&l变量卡&r处绑定为&2运算符&0，然后就能用到动态联合的逻辑运算中去。可用作联合管道的输出过滤器，也可用于计算复杂数值，例如列表中各物品组物品数量的中位数。",
  "info_book.integratedscripting.tutorials.functions.text3": "本教程中我们将创建接受单个&8物品&0参数，再返回一个&9布尔型&0的函数。该函数相当于一个过滤运算符，用于过滤物品列表。",
  "info_book.integratedscripting.tutorials.functions.text4": "详细说明一下，我们会通过&l物品栏读取器&r读出物品列表，再使用新建的函数&l过滤&r该列表。插入空&l变量卡&r并在编辑界面中选择函数，即可将其绑定至&l变量卡&r，此函数会存储为&2运算符&0。",
  "info_book.integratedscripting.tutorials.functions.text5": "此教程中可以使用任意方式实现过滤函数。在此给出一份有效示例脚本，以供随意复制。",
  "info_book.integratedscripting.tutorials.functions.text6": "在&l显示器&r中展示列表的过滤结果，即可完成本教程。",
  "info_book.integratedscripting.tutorials.functions.text7": "此示例脚本中调用了物品的内置方法，诸如&oisStackable()&r和&ostacksize()&r。有关哪些方法可用的详细信息，后续可见完整手册。"
}