From 4f310e555e7b25f351d91e30310d736f158ffd2b Mon Sep 17 00:00:00 2001 From: Crowdin Bot Date: Sun, 1 Mar 2026 07:30:22 +0000 Subject: [PATCH 1/2] Add translations through Crowdin --- .../integratedscripting/lang/zh_cn.json | 46 ------------------- 1 file changed, 46 deletions(-) diff --git a/src/main/resources/assets/integratedscripting/lang/zh_cn.json b/src/main/resources/assets/integratedscripting/lang/zh_cn.json index 052c53c14..fb185637b 100644 --- a/src/main/resources/assets/integratedscripting/lang/zh_cn.json +++ b/src/main/resources/assets/integratedscripting/lang/zh_cn.json @@ -1,9 +1,6 @@ { - "_comment": "General", "itemGroup.integratedscripting": "联合脚本", "general.integratedscripting.description": "在动态联合中编写脚本,处理复杂操作。", - - "_comment": "Achievements", "advancement.integratedscripting.mendesite": "门山岩井喷", "advancement.integratedscripting.mendesite.desc": "制作一块门山岩,它是联合脚本的基础资源。", "advancement.integratedscripting.scripting_disk": "不是软盘!", @@ -18,11 +15,7 @@ "advancement.integratedscripting.terminal_display.desc": "在显示器中展示脚本里的值", "advancement.integratedscripting.filter_chest": "强力物品列表过滤器", "advancement.integratedscripting.filter_chest.desc": "用基于脚本的函数过滤从箱子读取的物品列表。", - - "_comment": "Blocks", "block.integratedscripting.mendesite": "门山岩", - - "_comment": "Gui", "gui.integratedscripting.disk": "磁盘", "gui.integratedscripting.script": "脚本", "gui.integratedscripting.create_file": "新建文件", @@ -32,8 +25,6 @@ "gui.integratedscripting.removal_dialog.keep": "保留", "gui.integratedscripting.error.invalid_member": "在脚本编辑器中选中有效函数名或变量名以绑定。", "gui.integratedscripting.error.invalid_member.current": "当前选中:“%s”", - - "_comment": "Value Type Translation", "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的翻译器。", @@ -42,13 +33,9 @@ "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”的操作不合法。", - - "_comment": "Operators", "operator.integratedscripting.integratedscript.basename": "联合脚本%s", "operator.integratedscripting.integratedscript.graal": "Graal函数", "operator.integratedscripting.error.no_graal_serialization": "脚本无法序列化", - - "_comment": "Script Variable", "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", @@ -60,51 +47,36 @@ "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。", - - "_comment": "Items", "item.integratedscripting.scripting_disk": "脚本磁盘", "item.integratedscripting.scripting_disk.info": "存储脚本。", "item.integratedscripting.scripting_disk.id": "ID:%s", "item.integratedscripting.scripting_disk.bytes": "字节数:%s", - - "_comment": "Blocks", "block.integratedscripting.scripting_drive": "脚本驱动器", "block.integratedscripting.scripting_drive.info": "令脚本磁盘向网络公开。", - - "_comment": "Part types", "parttype.integratedscripting.terminal_scripting": "脚本终端", "parttype.integratedscripting.terminal_scripting.info": "管理网络中脚本驱动器内存储的脚本。", - - "_comment": "------ On the Dynamics of Integration contents ------", - "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),可在其中编辑脚本。", @@ -118,20 +90,15 @@ "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函数均可。", @@ -139,22 +106,18 @@ "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语言允许混用函数式编程和命令式编程,这一特性便可用于临时记录状态。", @@ -162,13 +125,11 @@ "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流输出。", @@ -176,23 +137,17 @@ "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。", @@ -200,7 +155,6 @@ "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,然后就能用到动态联合的逻辑运算中去。可用作联合管道的输出过滤器,也可用于计算复杂数值,例如列表中各物品组物品数量的中位数。", From ea03cbfce58610653f461ff70cab22a74c2d9bb7 Mon Sep 17 00:00:00 2001 From: Crowdin Bot Date: Wed, 8 Jul 2026 09:23:06 +0000 Subject: [PATCH 2/2] Add translations through Crowdin --- .../integratedscripting/lang/fr_fr.json | 162 +++++++++++++++++- 1 file changed, 161 insertions(+), 1 deletion(-) diff --git a/src/main/resources/assets/integratedscripting/lang/fr_fr.json b/src/main/resources/assets/integratedscripting/lang/fr_fr.json index 0967ef424..1291efd8f 100644 --- a/src/main/resources/assets/integratedscripting/lang/fr_fr.json +++ b/src/main/resources/assets/integratedscripting/lang/fr_fr.json @@ -1 +1,161 @@ -{} +{ + "general.integratedscripting.description": "Crée des scripts pour gérer des opérations complexes dans Integrated Dynamics.", + "advancement.integratedscripting.mendesite": "Mendésite en abondance", + "advancement.integratedscripting.mendesite.desc": "Fabriquez un bloc de mendésite, une ressource de base pour Integrated Scripting.", + "advancement.integratedscripting.scripting_disk": "Pas une disquette !", + "advancement.integratedscripting.scripting_disk.desc": "Fabriquez un disque de script, utilisé pour stocker des données de script.", + "advancement.integratedscripting.scripting_drive": "Ils me voient conduire", + "advancement.integratedscripting.scripting_drive.desc": "Fabriquez un lecteur de script, afin de charger des scripts dans votre réseau.", + "advancement.integratedscripting.terminal_open": "La découverte des scripts", + "advancement.integratedscripting.terminal_open.desc": "Ouvrez l'interface du terminal de script.", + "advancement.integratedscripting.terminal_bind": "L'essor des scripts", + "advancement.integratedscripting.terminal_bind.desc": "Créez un script et liez-le à une carte de variable.", + "advancement.integratedscripting.terminal_display": "Le déchaînement des scripts", + "advancement.integratedscripting.terminal_display.desc": "Affichez une valeur scriptée dans un panneau d'affichage", + "advancement.integratedscripting.filter_chest": "Un filtrage de liste d'objets surpuissant", + "advancement.integratedscripting.filter_chest.desc": "Filtrez une liste d'objets lue depuis un coffre à l'aide d'une fonction basée sur un script.", + "block.integratedscripting.mendesite": "Mendésite", + "gui.integratedscripting.disk": "Disque", + "gui.integratedscripting.create_file": "Créer un fichier", + "gui.integratedscripting.removal_dialog.title": "Confirmer la suppression du script", + "gui.integratedscripting.removal_dialog.message": "Voulez-vous supprimer \"%s\" ?", + "gui.integratedscripting.removal_dialog.delete": "Supprimer", + "gui.integratedscripting.removal_dialog.keep": "Conserver", + "gui.integratedscripting.error.invalid_member": "Sélectionnez un nom de fonction ou de variable valide dans l'éditeur de script pour le lier.", + "gui.integratedscripting.error.invalid_member.current": "Sélection actuelle : \"%s\"", + "valuetype.integratedscripting.error.translation.unknown_to_graal": "Impossible de trouver un traducteur des valeurs %s vers Graal.", + "valuetype.integratedscripting.error.translation.unknown_to_graal_nbt": "Impossible de trouver un traducteur des valeurs %s vers Graal lors de la traduction NBT.", + "valuetype.integratedscripting.error.translation.unknown_from_graal": "Impossible de trouver un traducteur depuis les valeurs Graal %s.", + "valuetype.integratedscripting.error.translation.list_infinite": "Impossible de traduire une liste infinie dans un langage de script.", + "valuetype.integratedscripting.error.translation.nbt_unknown": "Impossible de traduire les membres NBT de type %s.", + "valuetype.integratedscripting.error.translation.nbt_unmatched": "Impossible d'interpréter le champ %s en tant que NBT.", + "valuetype.integratedscripting.error.translation.unsupported_translateToNbt": "Conversion illégale de %s \"%s\" en NBT.", + "valuetype.integratedscripting.error.translation.proxyobject_putMember": "Ajout illégal de la clé \"%s\" à %s en lecture seule", + "operator.integratedscripting.integratedscript.basename": "Script intégré %s", + "operator.integratedscripting.integratedscript.graal": "Fonction Graal", + "operator.integratedscripting.error.no_graal_serialization": "Les scripts intégrés ne peuvent pas être sérialisés", + "script.integratedscripting.tooltip.disk": "§e§oID du disque : §r§o%s", + "script.integratedscripting.tooltip.path": "§e§oChemin du script : §r§o%s", + "script.integratedscripting.tooltip.member": "§e§oMembre : §r§o%s", + "script.integratedscripting.error.invalid_network": "Aucun réseau de script valide n'a été trouvé.", + "script.integratedscripting.error.disk_not_in_network": "Le disque avec l'ID %s est introuvable dans le réseau actuel.", + "script.integratedscripting.error.path_not_in_network": "Le disque avec l'ID %s ne contient pas le script \"%s\".", + "script.integratedscripting.error.member_not_in_network": "Le disque avec l'ID %s ne contient pas le membre \"%s\" dans le script \"%s\".", + "script.integratedscripting.error.unsupported_language": "Le langage du script \"%s\" n'est pas pris en charge.", + "script.integratedscripting.error.script_read": "Une erreur s'est produite lors de la lecture du script \"%s\" sur le disque %s : %s", + "script.integratedscripting.error.script_exec": "Une erreur s'est produite lors de l'exécution du membre \"%s\" dans le script \"%s\" sur le disque %s : %s", + "script.integratedscripting.error.invalid_type": "Le membre \"%s\" du script \"%s\" sur le disque %s devrait exposer une variable de type %s, mais %s a été trouvé.", + "item.integratedscripting.scripting_disk": "Disque de script", + "item.integratedscripting.scripting_disk.info": "Stocke des scripts.", + "item.integratedscripting.scripting_disk.id": "ID : %s", + "item.integratedscripting.scripting_disk.bytes": "Octets : %s", + "block.integratedscripting.scripting_drive": "Lecteur de script", + "block.integratedscripting.scripting_drive.info": "Expose les disques de script au réseau.", + "parttype.integratedscripting.terminal_scripting": "Terminal de script", + "parttype.integratedscripting.terminal_scripting.info": "Gère les scripts des lecteurs de script dans le réseau.", + "info_book.integratedscripting.section.main": "Script", + "info_book.integratedscripting.introduction.text1": "&lIntegrated Scripting&r est une extension d'&lIntegrated Dynamics&r permettant de créer des scripts pour gérer des opérations complexes dans les réseaux &lIntegrated Dynamics&r. Par défaut, ce mod prend en charge le langage de script JavaScript.", + "info_book.integratedscripting.introduction.text2": "Il vous permet de définir des opérations logiques &lIntegrated Dynamics&r à l'aide d'une syntaxe de script pratique, plutôt que par la méthode visuelle standard basée sur les cartes de variable, qui peut devenir fastidieuse pour des chaînes d'opérations avancées.", + "info_book.integratedscripting.introduction.text3": "Par exemple, il permet de définir facilement des filtres complexes de listes d'objets tels que &o\"les objets qui sont endommageables, appartiennent au mod X, et correspondent à des blocs qui ne peuvent être minés qu'avec une pioche en diamant.\"&r. Ou encore &o\"obtenir l'objet de cette liste ayant la deuxième plus grande taille de pile.\"&r", + "info_book.integratedscripting.introduction.text4": "Des connaissances de base en programmation sont recommandées pour utiliser ce mod, mais peuvent aussi être acquises grâce aux tutoriels présents plus loin dans ce livre.", + "info_book.integratedscripting.materials": "Matériaux", + "info_book.integratedscripting.materials.text1": "Avant de commencer à scripter, vous aurez besoin de quelques blocs de &lMendésite&r. Ces blocs sont très malléables et constituent une bonne base pour le stockage et la gestion des scripts. La &lMendésite&r est créée en combinant de la &lRésine de Menril&r et de l'&lAndésite&r dans un &lBassin de séchage&r.", + "info_book.integratedscripting.concepts.text1": "Éditer, stocker et fournir des scripts au réseau nécessite 3 éléments : le &lTerminal de script&r, le &lDisque de script&r et le &lLecteur de script&r.", + "info_book.integratedscripting.concepts.text2": "Le &lDisque de script&r est utilisé pour stocker le contenu brut des scripts, mais ne peut rien faire seul.", + "info_book.integratedscripting.concepts.text3": "Le &lLecteur de script&r vous permet d'insérer un seul &lDisque de script&r, qui exposera son contenu au réseau.", + "info_book.integratedscripting.concepts.text4": "Le &lTerminal de script&r vous permet de consulter, gérer et modifier tous les scripts du réseau actuel exposés par les &lLecteurs de script&r.", + "info_book.integratedscripting.concepts.text5": "Chacun de ces éléments sera détaillé plus loin.", + "info_book.integratedscripting.disk": "Disque de script", + "info_book.integratedscripting.disk.text1": "Les &lDisques de script&r sont responsables du stockage des scripts et doivent être insérés dans des &lLecteurs de script&r. Ils peuvent être créés en combinant des &lCartes de variable&r avec de la &lMendésite&r.", + "info_book.integratedscripting.disk.text2": "Une fois qu'un &lDisque de script&r a été inséré dans un &lLecteur de script&r, il obtient un identifiant numérique unique. Cet identifiant sera utilisé pour modifier les scripts de ce disque depuis le &lTerminal de script&r. L'identifiant sert également à lier des éléments de script à des &lCartes de variable&r.", + "info_book.integratedscripting.disk.text3": "Un &lDisque de script&r peut être déplacé en toute sécurité vers un autre &lLecteur de script&r sans perte de données, même sur un réseau différent. Cependant, les &lCartes de variable&r faisant référence à l'identifiant de ce script commenceront à générer des erreurs si elles ne sont plus sur le même réseau.", + "info_book.integratedscripting.disk.text4": "Un &lDisque de script&r n'a pas de limite de taille de stockage, mais il est recommandé de répartir les scripts sur plusieurs disques pour faciliter leur gestion.", + "info_book.integratedscripting.drive": "Lecteur de script", + "info_book.integratedscripting.drive.text1": "Chaque &lLecteur de script&r est un bloc connecté à votre réseau &lIntegrated Dynamics&r qui accepte un seul &lDisque de script&r, permettant d'exposer le contenu du disque au réseau.", + "info_book.integratedscripting.drive.text2": "Il se fabrique en combinant un &lStockage de variable&r et un &lJuke-box&r avec des &lDisques de script&r.", + "info_book.integratedscripting.terminal": "Terminal de script", + "info_book.integratedscripting.terminal.text1": "Le &lTerminal de script&r est un composant qui doit être connecté à votre réseau &lIntegrated Dynamics&r pour gérer les scripts stockés dans les &lDisques de script&r de ce réseau.", + "info_book.integratedscripting.terminal.text2": "En faisant un clic droit sur un terminal placé, un &oenvironnement de développement intégré&r (IDE) simplifié s'affiche, vous permettant d'éditer des scripts.", + "info_book.integratedscripting.terminal.text3": "En haut à gauche de l'écran, vous pouvez sélectionner l'identifiant d'un &lDisque de script&r connecté au réseau, après quoi tous les fichiers de script stockés sur ce disque s'afficheront dans la liste ci-dessous.", + "info_book.integratedscripting.terminal.text4": "Si le disque ne contient encore aucun fichier de script, vous pouvez en créer en cliquant sur le bouton \"+\" en bas à gauche de l'écran.", + "info_book.integratedscripting.terminal.text5": "La liste des fichiers de script à gauche de l'écran permet de sélectionner un script à modifier. En cliquant sur un script, son contenu modifiable s'affiche à droite de l'écran.", + "info_book.integratedscripting.terminal.text6": "Le champ de texte à droite de l'écran permet de modifier le contenu des fichiers de script, qui sera enregistré automatiquement après chaque modification.", + "info_book.integratedscripting.terminal.text7": "Bien que l'éditeur effectue une coloration syntaxique limitée, il n'est pas capable de détecter les erreurs de syntaxe pour le moment. Les erreurs de syntaxe seront signalées lors de l'exécution des scripts via les &lCartes de variable&r.", + "info_book.integratedscripting.terminal.text8": "Pour utiliser un membre de script en tant que logique &lIntegrated Dynamics&r, vous pouvez le lier à une &lCarte de variable&r.", + "info_book.integratedscripting.terminal.text9": "Pour cela, sélectionnez d'abord un membre de script dans l'éditeur de texte avec votre curseur, comme un nom de variable ou de fonction.", + "info_book.integratedscripting.terminal.text10": "Ensuite, vous pouvez insérer une &lCarte de variable&r dans l'emplacement à droite de l'écran pour la lier à ce membre de script.", + "info_book.integratedscripting.terminal.text11": "Cette &lCarte de variable&r peut désormais être utilisée ailleurs dans le réseau, par exemple en affichant un membre variable dans un &lPanneau d'affichage&r, ou en utilisant un membre fonction comme opérateur dans un filtre de liste d'objets.", + "info_book.integratedscripting.terminal.text12": "Le chapitre suivant donnera plus de détails sur la manière d'écrire des scripts.", + "info_book.integratedscripting.writing": "Écrire des scripts", + "info_book.integratedscripting.writing.js.text1": "Ce mod permet d'écrire des scripts en syntaxe JavaScript. Toutes les fonctionnalités permises par ECMAScript (ECMA-262) sont disponibles.", + "info_book.integratedscripting.writing.js.text2": "Notez que les fonctionnalités spécifiques à Node.js telles que &orequire&r et &ofs&r ne sont pas disponibles. Si vous avez l'habitude de développer des applications Node.js, vous pouvez les rendre compatibles à l'aide d'outils externes tels que Webpack.", + "info_book.integratedscripting.writing.variables": "Constantes et variables", + "info_book.integratedscripting.writing.variables.text1": "Tous les types de valeurs Integrated Dynamics que vous connaissez (comme les &6Entiers&0, &9Booléens&0, &8Objets&0, ...) sont disponibles en JavaScript, et inversement.", + "info_book.integratedscripting.writing.variables.text2": "La manière la plus simple de créer une valeur en JavaScript et de la rendre disponible en tant que valeur statique de &lCarte de variable&r est de définir un membre variable en JavaScript à l'aide de &olet&r ou &oconst&r.", + "info_book.integratedscripting.writing.variables.text3": "&olet&r définit des variables réassignables plus tard dans le script, comme des compteurs. &oconst&r définit des variables qui ne peuvent pas être réassignées.", + "info_book.integratedscripting.writing.variables.text4": "Pour utiliser cette valeur dans une &lCarte de variable&r, vous devez sélectionner le nom du membre variable dans l'éditeur de texte du Terminal de script, puis insérer une &lCarte de variable&r vide dans l'emplacement à droite. Vous pouvez maintenant utiliser cette &lCarte de variable&r comme d'habitude, par exemple en visualisant sa valeur dans un &lPanneau d'affichage&r.", + "info_book.integratedscripting.writing.variables.text5": "Créer des variables via JavaScript est surtout utile si vous devez créer des valeurs complexes difficiles à obtenir avec le &lProgrammeur logique&r, comme de longues &4Chaînes de caractères&0 ayant une valeur spécifique. Vous trouverez ci-dessous quelques exemples de création de telles valeurs.", + "info_book.integratedscripting.writing.functions": "Fonctions", + "info_book.integratedscripting.writing.functions.text1": "Comme les &2Opérateurs&0 sont des citoyens de premier ordre dans la logique d'Integrated Dynamics, ils peuvent également être créés sous forme de fonctions JavaScript.", + "info_book.integratedscripting.writing.functions.text2": "Toute méthode de création de fonctions JavaScript peut être utilisée pour créer des &2Opérateurs&0, comme via le mot-clé &ofunction&r, ou en créant des lambdas personnalisées.", + "info_book.integratedscripting.writing.functions.text3": "Les fonctions acceptent un certain nombre d'arguments qui, lorsqu'elles sont exécutées via la logique d'Integrated Dynamics, recevront des valeurs Integrated Dynamics classiques traduites en valeurs JavaScript.", + "info_book.integratedscripting.writing.functions.text4": "Lier une fonction JavaScript à une &lCarte de variable&r en tant qu'&2Opérateur&0 se fait comme pour les constantes et variables, en sélectionnant le nom du membre fonction dans l'éditeur de texte du Terminal de script et en le liant à une &lCarte de variable&r. Cette valeur peut désormais être utilisée partout où un &2Opérateur&0 est accepté.", + "info_book.integratedscripting.writing.functions.text5": "Par exemple, vous pouvez créer une fonction avec un seul argument &8Objet&0 qui renvoie un &9Booléen&0, à utiliser comme &2Opérateur&0 de filtre pour filtrer une liste d'objets lue depuis un coffre.", + "info_book.integratedscripting.writing.functions.text6": "Vous trouverez ci-dessous des exemples de différents types de fonctions que vous pourriez créer.", + "info_book.integratedscripting.writing.globals": "Fonctions globales", + "info_book.integratedscripting.writing.globals.text1": "Lorsque vous écrivez du code JavaScript, vous pouvez utiliser la variable globale &oidContext&r pour accéder à tous les opérateurs d'Integrated Dynamics sous forme de fonctions via le champ &oops&r. Cela vous permet d'utiliser des opérateurs intégrés lors de la création de nouveaux opérateurs.", + "info_book.integratedscripting.writing.globals.text2": "Par exemple, vous pouvez écrire un filtre d'&8Objet&0 qui vérifie si un objet est empilable et s'il a une taille de pile d'au moins 16, comme montré ci-dessous.", + "info_book.integratedscripting.writing.globals.text3": "Pour connaître le nom de l'opérateur que vous souhaitez exécuter, consultez son nom global via les info-bulles des opérateurs dans le &lProgrammeur logique&r ou dans la liste des opérateurs de la section Programmation logique de ce livre.", + "info_book.integratedscripting.writing.globals.text4": "Comme l'invocation d'opérateurs via &oidContext&r peut devenir assez verbeuse, vous pouvez choisir de stocker les opérateurs dans une variable constante personnalisée, comme montré dans le second exemple. Vous pouvez également utiliser des &ométhodes d'objet&r, abordées dans la section suivante.", + "info_book.integratedscripting.writing.methods": "Méthodes d'objet", + "info_book.integratedscripting.writing.methods.text1": "Pour contrer la verbosité des fonctions globales, vous pouvez écrire du code plus compact en utilisant des &lméthodes d'objet&r.", + "info_book.integratedscripting.writing.methods.text2": "Les types de valeurs objet tels que les &8Blocs&0, &8Objets&0, &8Fluides&0, ... auront des &lméthodes&r qui leur sont rattachées lorsqu'ils sont utilisés en JavaScript.", + "info_book.integratedscripting.writing.methods.text3": "Les méthodes d'objet ne sont que de simples fonctions, mais leur premier argument est lié à la valeur de l'objet.", + "info_book.integratedscripting.writing.methods.text4": "Par exemple, la fonction globale &oitemstackStackable&r prend un seul argument &8Objet&0 et renvoie un &9Booléen&0. Cette fonction est disponible en tant que méthode sur les valeurs &8Objet&0 via le nom &ostackable&r, qui ne prend aucun argument.", + "info_book.integratedscripting.writing.methods.text5": "Les fonctions globales acceptant deux arguments ou plus seront disponibles en tant que méthodes sur les valeurs objet, avec tous les arguments décalés d'un cran. Par exemple, la fonction globale &oitemstackStrength&r accepte un argument &8Objet&0 et un argument &8Bloc&0, mais est également disponible en tant que méthode sur les &8Objets&0 avec un seul argument &8Bloc&0.", + "info_book.integratedscripting.advanced": "Avancé", + "info_book.integratedscripting.advanced.transient_storage": "Stockage transitoire", + "info_book.integratedscripting.advanced.transient_storage.text1": "Comme Integrated Dynamics repose sur des principes de programmation fonctionnelle, le suivi des états est pratiquement inexistant, sauf via des approches externes telles que le &lRetardateur&r.", + "info_book.integratedscripting.advanced.transient_storage.text2": "Comme le langage JavaScript offre un mélange de programmation fonctionnelle et impérative, le suivi des états devient partiellement possible.", + "info_book.integratedscripting.advanced.transient_storage.text3": "Concrètement, si vous déclarez une variable modifiable en dehors des fonctions (par exemple avec &olet&r), vous pouvez modifier sa valeur via des appels de fonction.", + "info_book.integratedscripting.advanced.transient_storage.text4": "Ainsi, vous pouvez suivre des états, comme compter le nombre d'appels de fonction, ou calculer la moyenne courante de certaines valeurs.", + "info_book.integratedscripting.advanced.transient_storage.text5": "Un point important concernant ces variables est que leur état est uniquement transitoire. Concrètement, cela signifie que leurs valeurs peuvent être réinitialisées à chaque fois qu'une carte de variable du réseau est réinsérée, ou lorsque le serveur redémarre.", + "info_book.integratedscripting.advanced.transient_storage.text6": "Par conséquent, vous ne pouvez pas supposer que ces valeurs restent toujours présentes. Si vous avez besoin d'un stockage de données persistant, il est préférable d'utiliser le &lRetardateur&r.", + "info_book.integratedscripting.advanced.external_editing": "Édition externe", + "info_book.integratedscripting.advanced.external_editing.text1": "Si vous avez accès au système de fichiers sur lequel tourne votre partie solo ou multijoueur, vous pouvez accéder aux fichiers de script via n'importe quel éditeur externe. Cela vous permet de créer des scripts avec votre IDE préféré (comme Vi, mais certainement pas Emacs).", + "info_book.integratedscripting.advanced.external_editing.text2": "Les fichiers de script sont accessibles via le dossier &oworld/integratedscripting/&r (voir &osaves/&r pour les mondes solo). Vous y trouverez des dossiers pour tous les &lDisques de script&r, classés par identifiant. Dans chaque dossier de &lDisque de script&r, vous trouverez tous les fichiers de script stockés sur ce disque.", + "info_book.integratedscripting.advanced.external_editing.text3": "Vous pouvez modifier ces fichiers de script en toute sécurité via un éditeur externe, même si le jeu est en cours d'exécution. Après avoir enregistré le fichier en externe, il sera automatiquement mis à jour dans le jeu, et les variables dépendantes le seront également.", + "info_book.integratedscripting.advanced.external_editing.text4": "Si votre éditeur externe le prend en charge (c'est le cas des IDE modernes), la modification d'un fichier de script via le &lTerminal de script&r entraînera également la mise à jour des fichiers dans votre éditeur externe.", + "info_book.integratedscripting.advanced.logging": "Journalisation", + "info_book.integratedscripting.advanced.logging.text1": "Pour les scripts complexes, il peut être nécessaire de les déboguer en écrivant temporairement dans des fichiers journaux externes.", + "info_book.integratedscripting.advanced.logging.text2": "JavaScript vous permet d'appeler des fonctions telles que &oconsole.log()&r et &oconsole.error()&r pour écrire des messages respectivement dans les flux de sortie &oStandard Out&r et &oStandard Error&r.", + "info_book.integratedscripting.advanced.logging.text3": "Lors de l'appel de l'une de ces fonctions, les messages de journal seront respectivement écrits dans des fichiers &o.stdout&r et &o.stderr&r propres au script.", + "info_book.integratedscripting.advanced.logging.text4": "Par exemple, si votre script se trouve dans &omyfile.js&r, les messages de journal seront écrits dans &omyfile.js.stdout&r.", + "info_book.integratedscripting.advanced.logging.text5": "Ces fichiers &o.stdout&r et &o.stderr&r sont accessibles via votre &lTerminal de script&r ou via l'édition externe.", + "info_book.integratedscripting.advanced.logging.text6": "Pour éviter que les fichiers journaux ne deviennent trop volumineux, leur taille est plafonnée. Par défaut, ils sont limités à 2096 lignes. Consultez l'administrateur de votre serveur si vous avez besoin de plus de lignes.", + "info_book.integratedscripting.advanced.typescript.text1": "Le langage TypeScript est un sur-ensemble bien connu du langage JavaScript qui ajoute la prise en charge du typage. Cela permet aux développeurs d'écrire du JavaScript à typage sûr, en définissant les types des variables et des fonctions.", + "info_book.integratedscripting.advanced.typescript.text2": "Bien qu'Integrated Scripting ne prenne en charge que le JavaScript pur, un &ofichier de typage&r TypeScript est disponible pour toutes les fonctions globales, types de valeurs et méthodes disponibles.", + "info_book.integratedscripting.advanced.typescript.text3": "Lorsque vous modifiez vos scripts via un IDE externe, ce fichier de typage peut être chargé pour créer des scripts à typage sûr. Cela n'est recommandé que si vous connaissez TypeScript et savez l'utiliser.", + "info_book.integratedscripting.advanced.typescript.text4": "Le fichier de typage est disponible dans &oworld/integratedscripting/integratedscripting.d.ts&r (voir &osaves/&r pour les mondes solo). Ce fichier est automatiquement régénéré à chaque redémarrage du monde, il ne faut donc pas le modifier manuellement.", + "info_book.integratedscripting.section.tutorials": "Tutoriels de script", + "info_book.integratedscripting.tutorials.introduction.text1": "Cette section contient plusieurs tutoriels pour vous aider à apprendre &lIntegrated Scripting&r, l'extension d'&lIntegrated Dynamics&r permettant de créer des scripts pour gérer des opérations complexes.", + "info_book.integratedscripting.tutorials.basics": "Les bases du script", + "info_book.integratedscripting.tutorials.basics.text1": "Les blocs de &lMendésite&r sont les matériaux de fabrication de base pour les objets liés au script. Créons-en à l'aide du &lBassin de séchage&r !", + "info_book.integratedscripting.tutorials.basics.text2": "Ensuite, nous allons créer des &lDisques de script&r et des &lLecteurs de script&r à l'aide de ces blocs de &lMendésite&r. Les &lDisques de script&r pourront stocker des données de script, et les &lLecteurs de script&r vous permettront d'insérer ces disques dans votre réseau.", + "info_book.integratedscripting.tutorials.basics.text3": "Enfin, plaçons un &lLecteur de script&r et insérons-y un &lDisque de script&r. Cela nous permettra de stocker des scripts dans le prochain tutoriel.", + "info_book.integratedscripting.tutorials.terminal": "Utiliser le Terminal de script", + "info_book.integratedscripting.tutorials.terminal.text1": "Dans l'étape précédente, nous avons créé et placé un &lDisque de script&r et un &lLecteur de script&r. Dans ce tutoriel, nous allons voir comment &oécrire&r réellement des scripts et les lier à des &lCartes de variable&r.", + "info_book.integratedscripting.tutorials.terminal.text2": "Tout d'abord, fabriquons un &lTerminal de script&r, plaçons-le sur un câble connecté au &lLecteur de script&r, et faisons un clic droit sur le &lTerminal de script&r pour l'ouvrir.", + "info_book.integratedscripting.tutorials.terminal.text3": "Vous verrez un éditeur dans lequel vous pouvez accéder à tous les fichiers de script stockés dans les différents &lDisques de script&r accessibles au réseau. Vous pouvez basculer entre les différents &lDisques de script&r en cliquant sur les flèches en haut à gauche de l'écran.", + "info_book.integratedscripting.tutorials.terminal.text4": "À ce stade, vous n'aurez encore aucun fichier de script dans votre réseau, alors créons-en un nouveau en cliquant sur le bouton \"+\" en bas à gauche de l'écran. Cliquez maintenant sur le nouveau fichier pour l'ouvrir, puis cliquez sur le champ de texte à droite de l'écran pour modifier le fichier et écrire du code &oJavaScript&r.", + "info_book.integratedscripting.tutorials.terminal.text5": "Pour rester simple pour le moment, nous allons créer une valeur constante. Écrivons quelque chose comme &oconst myVar = 123;&r", + "info_book.integratedscripting.tutorials.terminal.text6": "Pour finir, lions cette constante à une &lCarte de variable&r en insérant une &lCarte de variable&r vide dans l'emplacement à droite de l'écran, puis sélectionnons la variable en double-cliquant dessus avec le curseur. Votre &lCarte de variable&r sera alors liée à la valeur constante. Vous pouvez maintenant utiliser cette &lCarte de variable&r n'importe où dans votre réseau. Essayons de l'afficher dans un &lPanneau d'affichage&r !", + "info_book.integratedscripting.tutorials.functions": "Fonctions de script", + "info_book.integratedscripting.tutorials.functions.text1": "Bien que créer des valeurs constantes en JavaScript puisse être amusant, la véritable puissance de ces scripts apparaît lors de la création de &ofonctions&r.", + "info_book.integratedscripting.tutorials.functions.text2": "Les fonctions créées en JavaScript peuvent être liées à des &lCartes de variable&r en tant qu'&2Opérateurs&0, qui peuvent ensuite être utilisés dans la logique Integrated Dynamics comme d'habitude. Par exemple, vous pourriez les utiliser pour définir des filtres d'exportateur Integrated Tunnels, ou pour calculer des valeurs complexes telles que la taille de pile médiane des objets d'une liste.", + "info_book.integratedscripting.tutorials.functions.text3": "Dans ce tutoriel, nous allons créer une fonction qui accepte un seul argument &8Objet&0 et renvoie un &9Booléen&0 en sortie. Cette fonction agira comme un opérateur de filtre, que nous pourrons utiliser par exemple pour filtrer une liste d'objets.", + "info_book.integratedscripting.tutorials.functions.text4": "Concrètement, nous allons lire la liste d'objets à l'aide du &lLecteur d'inventaire&r, puis la &lFiltrer&r à l'aide de notre fonction nouvellement créée. Vous pouvez lier la fonction à une &lCarte de variable&r en la sélectionnant dans l'éditeur et en insérant une &lCarte de variable&r vide, qui la stockera en tant qu'&2Opérateur&0.", + "info_book.integratedscripting.tutorials.functions.text5": "Vous êtes libre d'utiliser n'importe quelle implémentation de la fonction de filtre pour ce tutoriel. Vous trouverez ci-dessous un exemple de script valide que vous pouvez copier librement.", + "info_book.integratedscripting.tutorials.functions.text6": "Pour terminer le tutoriel, affichez le résultat de la liste filtrée dans un &lPanneau d'affichage&r.", + "info_book.integratedscripting.tutorials.functions.text7": "Dans cet exemple de script, vous verrez que vous pouvez invoquer des méthodes intégrées sur des objets telles que &oisStackable()&r et &ostacksize()&r. Plus de détails sur les méthodes disponibles se trouvent plus loin dans le manuel complet." +}