From 771b9e45b9974f16b6aaa2e888f1319797720203 Mon Sep 17 00:00:00 2001 From: fackman <41724374+fackman@users.noreply.github.com> Date: Sat, 29 Jun 2019 11:48:56 +0800 Subject: [PATCH 01/15] zh-cn,version:1 --- Lang/zh-cn.cfg | 680 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 680 insertions(+) create mode 100644 Lang/zh-cn.cfg diff --git a/Lang/zh-cn.cfg b/Lang/zh-cn.cfg new file mode 100644 index 00000000..2f021384 --- /dev/null +++ b/Lang/zh-cn.cfg @@ -0,0 +1,680 @@ +// Version: 2 +// Before changing the version, read the instructions in the en-us.cfg file! +// Author: RonnyWu +// Last updated: 31/12/2018 +Localization +{ + zh-cn + { + + // ********** Part: KIS.basketball + + #KIS_basketball_Part_description = 这是一个用来做引力实验的好工具. + #KIS_basketball_Part_manufacturer = KIS + #KIS_basketball_Part_tags = cck-eva-items + #KIS_basketball_Part_title = 篮球 + + // ********** Part: KIS.beer + + #KIS_beer_Part_description = 美味又实惠的啤酒.每个太空机构的管理员都应该为那些让人感动的航天员准备一些,而且这能让他们保持足够的积极性和充足的动力。 + #KIS_beer_Part_manufacturer = KIS + #KIS_beer_Part_tags = cck-eva-items + #KIS_beer_Part_title = 布勃的啤酒 + #KIS_beer_Part_useName = 饮料 + + // ********** Part: KIS.bomb1 + + #KIS_bomb1_Part_title = K4 标准炸药 + #KIS_bomb1_Part_manufacturer = KIS + #KIS_bomb1_Part_description = 想摆脱各种太空轨道垃圾?我们知道你需要的是什么.请记住,你可以通过点击右键任何部件来安装炸药. + #KIS_bomb1_Part_tags = KIS EVA portable tool destruction bomb cck-eva-items + + // ********** Part: kis.concreteBase1 + + #kis_concreteBase1_Part_title = CB1 地面地基 + #kis_concreteBase1_Part_manufacturer = KIS + #kis_concreteBase1_Part_description = 只能安装在地面上的混泥土地基.因为一场科学奇迹,工程师已找到了如何使用电动螺丝刀或扳手将其安装在地面上的方法(译者:注意看上面说明.该部件允许空手安装的). + #kis_concreteBase1_Part_tags = KIS EVA portable building construction concrete cck-eva-items + + // ********** Part: KIS.Container1 + + #KIS_Container1_Part_title = SC-62 便携式仓库 + #KIS_Container1_Part_manufacturer = KIS + #KIS_Container1_Part_description = 用于存放较小部件的便携式仓库.坎巴拉的科学家意识到,有一个存放备用部件的仓库总比在指令舱周围飘满损坏的部件垃圾却不知所措要好很多. + #KIS_Container1_Part_tags = KIS container inventory portable cck-containers + + // ********** Part: KIS.Container2 + + #KIS_Container2_Part_title = ILC-18k 仓库 + #KIS_Container2_Part_manufacturer = KIS + #KIS_Container2_Part_description = ILC-18k 是采用内部访问设计的仓库,可以从飞船内部进行访问,可以不需要进行EAV来访问该部件.但是因为飞船内部添加了气压(氧气)来支持航天员进行内部访问,所以跟其他仓库相比,拥有额外的质量,而且虽然有氧但是并没有安装乘员座椅. + #KIS_Container2_Part_tags = KIS container inventory cck-containers + + // ********** Part: KIS.Container3 + + #KIS_Container3_Part_title = ISC-6K 仓库 + #KIS_Container3_Part_manufacturer = KIS + #KIS_Container3_Part_description = ISC-6K 是采用内部访问设计的小型仓库,可以从飞船内部进行访问,可以不需要进行EAV来访问该部件.但是因为飞船内部添加了气压(氧气)来支持航天员进行内部访问,所以跟其他仓库相比,拥有额外的质量,而且虽然有氧但是并没有安装乘员座椅. + #KIS_Container3_Part_tags = KIS container inventory cck-containers + + // ********** Part: KIS.ContainerMount1 + + #KIS_ContainerMount1_Part_title = SM-62便携式仓库卡扣 + #KIS_ContainerMount1_Part_manufacturer = KIS + #KIS_ContainerMount1_Part_description = 一个小型连接柱安装附件.该卡扣可以用于连接"SC-62 便携式仓库",是避免使用支架连接器(钢筋/胶带)来固定便携式仓库的最佳解决方案. + #KIS_ContainerMount1_Part_tags = KIS EVA building portable container cck-containers + + // ********** Part: KIS.electricScrewdriver + + #KIS_electricScrewdriver_Part_title = E-SD80 电动螺丝刀 + #KIS_electricScrewdriver_Part_manufacturer = KIS + #KIS_electricScrewdriver_Part_description = 一个能将部件安装到你飞船表面或对部件进行拆卸的工具. E-SD80电动螺丝刀的设计初衷是为了让我们的工程师们在外部建设中过程中拥有更多的自主权. + #KIS_electricScrewdriver_Part_tags = KIS EVA tool building portable cck-eva-items + + // ********** Part: KIS.evapropellant + + #KIS_evapropellant_Part_title = EVA-11燃料罐 + #KIS_evapropellant_Part_manufacturer = KIS + #KIS_evapropellant_Part_description = 一款为舱外活动(EVA)设计的备用燃料箱.在部件上右键单击可以使用它,为喷气背包补充燃料. + #KIS_evapropellant_Part_tags = KIS EVA fuel portable cck-eva-items + #KIS_evapropellant_Part_useName = 补充燃料 + + // ********** Part: KIS.ghettoblaster + + #KIS_ghettoblaster_Part_description = 进行太空旅行时或者等待救援时,如何消磨时间不是一件容易的事情,磁带录音机可以让航天员们保持有事可做. + #KIS_ghettoblaster_Part_manufacturer = KIS + #KIS_ghettoblaster_Part_tags = cck-eva-items + #KIS_ghettoblaster_Part_title = 磁带录音机 + + // ********** Part: KIS.golfclub + + #KIS_golfclub_Part_description = 这是另一个未经批准的重力实验项目,玩高尔夫球. + #KIS_golfclub_Part_manufacturer = KIS + #KIS_golfclub_Part_tags = cck-eva-items + #KIS_golfclub_Part_title = 高尔夫球棒 + #KIS_golfclub_Part_useName = 挥杆 + + // ********** Part: KIS.guide + + #KIS_guide_Part_title = KIS使用指南 + #KIS_guide_Part_manufacturer = KIS + #KIS_guide_Part_description = 这里有你需要知道的关于仓库体系的一切,不需要什么复杂的电脑操作,只需要在仓库中右键点击,直接阅读. + #KIS_guide_Part_tags = KIS inventory building book portable cck-eva-items + #KIS_guide_Part_useName = 阅读 + + // ********** Part: KIS.guitar + + #KIS_guitar_Part_description = 静寂的太空,航天员需要一把吉他来解闷. + #KIS_guitar_Part_manufacturer = KIS + #KIS_guitar_Part_tags = cck-eva-items + #KIS_guitar_Part_title = 吉他 + + // ********** Part: KIS.taco + + #KIS_taco_Part_description = 添加了牛肉,蔬菜和辣椒酱的玉米薄饼卷,我们的每一位航天员都需要一份太空餐. + #KIS_taco_Part_manufacturer = KIS + #KIS_taco_Part_tags = cck-eva-items + #KIS_taco_Part_title = 墨西哥玉米薄饼卷 + #KIS_taco_Part_useName = 进餐 + + // ********** Part: KIS.wrench + + #KIS_wrench_Part_title = BS-8工具扳手 + #KIS_wrench_Part_manufacturer = KIS + #KIS_wrench_Part_description = 一个能将最小部件安装到飞船表面或拆卸下来的工具,其实没有什么复杂的,只是一个简单的扳手而已. + #KIS_wrench_Part_tags = KIS EVA tool building portable cck-eva-items + + // ********** Type: KIS.GUIUtils.VolumeLType, KSPDev Messages + + // Liter unit for a volume value. + #kisLOC_99000 = \u0020L + + // ********** Type: KIS.KIS_Item, KSPDev Messages + + // The screen message to present when the item was attempted to equip, but the + // relevant inventory slot has more than one item (stacked). + #kisLOC_02000 = 无法装备堆叠物品,请右键拆分成单个物品后重新装备 + // The screen message to present when the item was attempted to equip, but its equip + // slot is already taken by a carriable item. + // Argument <<1>> is the name of the equip slot of the item. + // Argument <<2>> is the name of the item being carried. + #kisLOC_02001 = [<<1>>]已经装备了相关物品,无法装备<<2>> + // The screen message to present when the item was attempted to equip, but a + // specific kerbal trait (skill) is required to handle the item. + // Argument <<1>> is the name of the required trait. + #kisLOC_02002 = 该物品只能由拥有<<1>>技能的航天员装备 + // The screen message to present when the item was attempted to be added to an + // existing slot stack, but the resulted inventory volume would exceed the maximum + // allowed volume. + // Argument <<1>> is the excessive volume. Format: VolumeLType. + #kisLOC_02003 = 仓库无法存储这么多物品,缺少<<1>>个物品格子. + // The screen message to present when the item was attempted to be added to an + // existing slot stack, but the item being added is currently equipped. + #kisLOC_02004 = 该物品无法堆叠 + + // ********** Type: KIS.KISAddonPickup, KSPDev Messages + + // The action status to show in the tooltip when the player presses the re-dock + // action key and the action is allowed. + #kisLOC_01000 = Re-dock + // The action status to show in the tooltip when the player presses the re-dock + // action key and the action is not allowed. + #kisLOC_01001 = Can't re-dock + // The action status to show in the tooltip when the player presses the grab action + // key while pointing on a root part, and the action is allowed. + #kisLOC_01002 = 拾取 + // The action status to show in the tooltip when the player presses the grab action + // key while pointing on an child part, and the action is allowed. + #kisLOC_01003 = 拆卸并拾取 + // The action status to show in the tooltip when the player presses the grab action + // key and the action is not allowed. + #kisLOC_01004 = 无法拾取 + // The action status to show in the tooltip when the player presses the detach + // action key and the action is allowed. + #kisLOC_01005 = 拆卸 + // The action status to show in the tooltip when the player presses the detach + // action key when a statically attached (to the ground) part is targeted, and the + // action is allowed. + #kisLOC_01006 = 拆卸 + // The action status to show in the tooltip when the player attempts to detach a + // part that cannot be detached for any reason. + #kisLOC_01007 = 无法拆卸 + // The action status to show in the tooltip when the player attempts to attach a + // part that cannot be attached for any reason. + #kisLOC_01008 = 无法安装 + // The action status to show in the tooltip when the player attempts to grab or move + // a too heavy part or assembly. + #kisLOC_01009 = 太重了 + // The action status to show in the tooltip when the player attempts to grab or move + // a part or assembly which is too far from the acting part (e.g. an EVA kerbal). + #kisLOC_01010 = 太远了 + // The action status to show in the tooltip when the action cannot complete due to + // the unexpected reasons. + #kisLOC_01011 = 不支持的操作 + // The action status to show in the tooltip when the requested action requires an + // equipped tool on the EVA kerbal, but there was none. + #kisLOC_01012 = 需要至少一种工具 + // The action status to show in the tooltip when the re-dock action is in the + // process. + // Argument <<1>> is a name of the vessel being re-docked. + // Argument <<2>> is the total mass of the vessel. Format: MassType. + #kisLOC_01013 = 航天器: <<1>>\n质量: <<2>> + // The action status to show in the tooltip when a root part of the vessel is + // targeted for an action. + #kisLOC_01014 = 根部件 + // The tooltip help string in case of the current action is dropping of a grabbed + // part. + // Argument <<1>> is the name of the node at which the part will be acted. + #kisLOC_01015 = 丢弃 (<<1>>) + // The tooltip help string in case of the current action is attaching of a grabbed + // part. + // Argument <<1>> is the name of the node at which the part will be acted. + #kisLOC_01016 = 安装 (<<1>>) + // The tooltip help string in case of the current action is re-docking of a grabbed + // vessel. + // Argument <<1>> is the name of the vessel which will be re-docked. + #kisLOC_01017 = Re-dock (<<1>>) + // The tooltip help string in case of the current action is mounting a KIS item. + #kisLOC_01018 = 安装中 + // The tooltip help string to display when the re-dock action is selected but the + // mouse cursor is not pointing to a valid docked vessel. + #kisLOC_01019 = 没有可对接的航天器 + // The tooltip help string to display when the re-dock action selected but the mouse + // cursor is not pointing any part. + #kisLOC_01020 = 选择一艘航天器 + // The tooltip help string to display when the player attempts to grab a kerbal + #kisLOC_01021 = 航天员问你"我能不能自己用喷气背包移动" + // The tooltip help string to display when the player attempts to grab a too heavy + // object. + // Argument <<1>> is the total mass of the target object. Format: MassType. + // Argument <<2>> is the maximum allowed mass. Format: MassType. + #kisLOC_01022 = 你应该叫来更多的小绿人(航天员) + // The tooltip help string to display when the player attempts to grab an object + // which is too far away. + #kisLOC_01023 = 太远了,请靠近一点 + // The tooltip help string to display when the player attempts to perfrom an attach + // action without the proper tool equipped. + #kisLOC_01024 = 缺少安装物品的工具 + // The tooltip help string to display when the player attempts to perfrom a detach + // action without the proper tool equipped. + #kisLOC_01025 = 缺少拆卸物品的工具 + // The tooltip help string to display when the player attempts to perfrom a detach + // action on a ground attched part without the proper tool equipped. + #kisLOC_01026 = 缺少拆卸物品的工具 + // The tooltip help string in the case when the action cannot complete due to the + // unexpected reasons. + #kisLOC_01027 = 该部件不支持该行为 + // The tooltip help string in the case when an attach action is attempted on a part + // which is not designed for that. + #kisLOC_01028 = 该部件不支持安装行为 + // The tooltip help string to display when a single part was targeted for an action. + // Agrument <<1>> is a name of the target part. + #kisLOC_01029 = <<1>> + // The tooltip help string to display when multiple parts was targeted for an + // action. + // Agrument <<1>> is a name of the target part. + // Agrument <<2>> is the number of the children parts attached to the target. + #kisLOC_01030 = <<1>>\n关联部件: <<2>> + // The tooltip help string for the key bindings to adjust the part's roll. + // Argument <<1>> is the "adjust left" key name. + // Argument <<2>> is the "adjust right" key name + #kisLOC_01031 = [<<1>>][<<2>>] + // The tooltip help string for the key bindings to adjust the part's pitch. + // Argument <<1>> is the "adjust left" key name. + // Argument <<2>> is the "adjust right" key name + #kisLOC_01032 = [<<1>>][<<2>>] + // The tooltip help string for the key bindings to adjust the part's yaw. + // Argument <<1>> is the "adjust left" key name. + // Argument <<2>> is the "adjust right" key name + #kisLOC_01033 = [<<1>>][<<2>>] + // The tooltip help string for the key bindings to adjust the part's rotation. + // Argument <<1>> is the keys for the roll adjustment. + // Argument <<2>> is the keys for the pitch adjustment. + // Argument <<3>> is the keys for the yaw adjustment. + #kisLOC_01034 = <<1>>/<<2>>/<<3>> 旋转部件 + // The tooltip help string for the key binding to reset all the roll and offset + // adjustments. + #kisLOC_01035 = [<<1>>] 重置方向和位置 + // The tooltip help string for the key binding to change the node snap mode. + #kisLOC_01036 = [<<1>>] 改变捕捉角度 + // The tooltip help string for the key bindings to adjust the part's offset. + // Argument <<1>> is the "adjust up" key name. + // Argument <<2>> is the "adjust down" key name + #kisLOC_01037 = [<<1>>]/[<<2>>] 上下移动 + // The tooltip help string for the key binding to switch to the attach mode. + #kisLOC_01038 = [<<1>>] 安装 + // The tooltip help string for the key binding to cancel the operation. + #kisLOC_01039 = [Escape] 取消 + + // ********** Type: KIS.KISAddonPointer, KSPDev Messages + + // The message to present when the selected action cannot be completed given the + // currently grabbed part/assembly and the target at which the mouse cursor is + // pointing. + #kisLOC_03000 = 该部件无法完成当前操作 + // The message to present when the selected action cannot be completed due to the + // source and the target are the same objects. + #kisLOC_03001 = 不能安装到自己本身 + // The message to present when a non-mountable object is attempted to be mounted. + #kisLOC_03002 = 该部件无法携带 + // The message to present when the source object is attempted to be attached to the + // target's surface of a part which doesn't allow this mode. + #kisLOC_03003 = 目标部件表面无法安装物品 + // The message to present when the source object is attempted to be attached to the + // target's surface, but the selected node on the soucre is not 'surface'. + #kisLOC_03004 = 只能安装到部件表面,无法安装到连接柱 + // The message to present when the acting kerbal is too far from the part he's + // trying to act on (source part). + // Argument <<1>> is the actual distance between the kerbal and the source part. + // Format: DistanceType. + // Argument <<2>> is the maximum allowed distance. Format: DistanceType. + #kisLOC_03005 = 当前距离<<1>>,最大距离<<2>> + // The message to present when the acting kerbal is too far from the point of the + // actual action (drop or attach). + // Argument <<1>> is the actual distance between the kerbal and the target part. + // Format: DistanceType. + // Argument <<2>> is the maximum allowed distance. Format: DistanceType. + #kisLOC_03006 = 当前距离<<1>>,最大距离<<2>> + // The message to present when a source object is attempted to be attached to a + // target part which is not allowed for this. This message is shown when the source + // object can only attach to a very specific set of the vessel's part (e.g. during + // the re-docking). + // Argument <<1>> is the name of the target part. + #kisLOC_03007 = 无法安装到部件: <<1>> + // The message to present when a 'change attach node' action is requested, but the + // source part has only one node + #kisLOC_03008 = 该部件只有一个连接柱 + + // ********** Type: KIS.ModuleKISInventory, KSPDev Messages + + // The message to present when 'use' key is pressed, but no item is equipped in the + // right hand of the EVA kerbal. + #kisLOC_00000 = 由于没有装备,不能使用装备的物品 + // The message to present when EVA kerbal enters a pod which doesn't have KIS + // inventory. + #kisLOC_00001 = <<1>>舱没有足够的空间 + // The message to present when EVA kerbal tries to put into inventory an assembly of + // multiple parts. + // Argument <<1>> is the number of the children parts atatched to the part being + // dragged. + #kisLOC_00002 = 不能将一个组建放入仓库,该组建有<<1>>个安装部件 + // The message to present when an item being dragged into an inventory whichdoesn't + // have enough free space. + // Argument <<1>> is a value of type VolumeLType which specifies the volume which is + // attempted to be moved. + // Argument <<2>> is a value of type VolumeLType which specifies the exceeding + // volume over the max inventory capacity. + #kisLOC_00003 = 当前仓库最大容积为: <<1>> , 超出 <<2>> + // The message to present when a storage, which is being carried on a back of an EVA + // kerbal, is attempted to be accessed. + #kisLOC_00004 = 无法在携带仓库时进行访问! + // The message to present when an inventory which cannot be accessed from EVA is + // attempted to be opened by an EVA kerbal. + #kisLOC_00005 = 这个仓库无法从外部访问! + // The message to present when an inventory which cannot be accessed from inside the + // vessel is attempted to be accessed while the active vessel is no an EVA kerbal. + #kisLOC_00006 = 这个仓库无法从内部访问 + // The message to present when a split action is attempted on the the inventory, but + // there are no empty slots available to fit the new pack. + #kisLOC_00009 = 仓库/背包已满, 无法拆分 + // The message to present when an item, designed to be carried by an EVA kerbal, is + // attempted to be put into a pod's seat inventory. + #kisLOC_00010 = 背包中无法存储该物品 + // The message to present when an item is attempted to be placed on an EVA kerbal, + // but there is another item already being carried. + #kisLOC_00011 = 已经装备相同部位的物品 + // The text to show in an inventory window in the editor to highlight the fact that + // the items added there will only be availabe in the flight if the seat is occupied + // at the launch. + #kisLOC_00012 = 这是航天员的背包 + // The name of the context menu item that removes kerbal's helmet if the environment + // conditions allow it. + #kisLOC_00013 = 取下头盔 + // The name of the context menu item that pust the kerbal's helmet back. + #kisLOC_00014 = 带上头盔 + // The title of the window that represents an open pod's inventory in the editor. + // Argument <<1>> is a name of the part that holds the inventory. + // Argument <<2>> is a number of the seat to which the inventory belongs. + #kisLOC_00015 = <<1>> | 乘员: <<2>> 背包 + // The title of the window that represents an open kerbal's inventory. + // Argument <<1>> is a name of the part that holds the inventory. + // Argument <<2>> is a name of the kerbal. + #kisLOC_00016 = <<1>> | <<2>> + // The title of the window that represents an open parts's inventory in the flight. + // This title is only used when the inventory has a custom name. + // Argument <<1>> is a name of the part that holds the inventory. + // Argument <<2>> is a custom name of the inventory. + #kisLOC_00017 = <<1>> | <<2>> + // The title of the window that represents a context menu for a specific item in the + // inventory. + #kisLOC_00019 = 操作项: + // The caption of the button that accepts the changed inventory name. This button is + // vary narrow, so keep the text as short as possible. + #kisLOC_00020 = 确定 + // The caption of the button that shows an input field to enter a custom name for an + // inventory. + #kisLOC_00021 = 备注 + // The caption of the button that closes the opened inventory dialog. + #kisLOC_00022 = 关闭 + // The caption of the button that triggers the uneqip action on the item in the + // inventory. The button is shown in a context menu of the selected item. + #kisLOC_00023 = 脱下 + // The caption of the button that triggers the eqip action on the item in the + // inventory. The button is shown in a context menu of the selected item. + #kisLOC_00024 = 装备 + // The caption of the button that triggers the drop action on the item in the + // inventory. The button is shown in a context menu of the selected item. + #kisLOC_00025 = 丢弃 + // The caption of the button that extracts the specified number of items from the + // selected inventory slot, and moves them into a new slot. + // Argument <<1>> is the number of items to extract. + #kisLOC_00026 = 拆分 (<<1>>) + // The text to show in the context menu of the selected inventory item that tells + // how many items are in the slot. + // Argument <<1>> is the number of items in the slot. + #kisLOC_00027 = 数量: <<1>> + // The text to show in the context menu of the selected inventory item that tells + // that no actions can be done on the item(s) in the slot. + #kisLOC_00028 = 无可执行操作 + // The name of the part's menu item that opens the inventory for a pod's seat. + // Argument <<1>> is the number of seat. + #kisLOC_00029 = 乘员: <<1>> 背包 + // The name of the part's menu item that opens the inventory of a specific kerbal. + // Argument <<1>> is the first name of the kerbal. + #kisLOC_00030 = 乘员: <<1>> 背包 + // The name of the part's menu item that opens the associated inventory. The "part" + // can be a kerbal. + #kisLOC_00031 = 打开仓库 + // The name of the part's menu item that opens the associated inventory with a + // custom name. The "part" can be a kerbal. + // Argument <<1>> is a custom name of the inventory. + #kisLOC_00032 = 关闭仓库 | <<1>> + // The text to display in the inventory slot background to tell if the item is being + // carried by the kerbal. + #kisLOC_00033 = 携带中 + // The text to display in the inventory slot background to tell if the item is being + // equipped by the kerbal. + #kisLOC_00034 = 装备. + // The text to display in the inventory slot background to identify it. + // Argument <<1>> is the number of the slot. + #kisLOC_00035 = <<1>> + // The text to display in the inventory slot background to tell ho many items are + // stacked. + // Argument <<1>> is the number of the items in the slot. + #kisLOC_00036 = x<<1>> + // The volume stat of the iventory in the main inventory window. + // Argument <<1>> is the occupied volume of the inventory of type VolumeLType. + // Argument <<2>> is the maximum volume of the inventory of type VolumeLType. + #kisLOC_00037 = 当前容积: <<1>> / <<2>> + // The total part mass in the main inventory window. It includes the combined mass + // of all the items in the inventory. + // Argument <<1>> is the total mass of type MassType. + #kisLOC_00038 = 当前质量: <<1>> + // The total part cost in the main inventory window. It includes the combined cost + // of all the items in the inventory. + // Argument <<1>> is the total cost of type CostType. + #kisLOC_00039 = 当前成本: <<1>> + // The volume of a single item in the inventory slot. It's presented in a tooltip + // window. + // Argument <<1>> is the volume of type VolumeLType. + #kisLOC_00040 = 容积: <<1>> + // The mass of a single item in the inventory slot without the resources or the + // contents. It's presented in a tooltip window. + // Argument <<1>> is the mass of type MassType. + #kisLOC_00041 = 净质量: <<1>> + // The mass of the resources in a single item in the inventory slot. It's presented + // in a tooltip window. + // Argument <<1>> is the mass of type MassType. + #kisLOC_00042 = 燃料质量: <<1>> + // The cost of a single item in the inventory slot including the cost of the + // resources. It's presented in a tooltip window. + // Argument <<1>> is the cost of type CostType. + #kisLOC_00043 = 成本: <<1>> + // The cost of the contents of a single item in the inventory slot. It's presented + // in a tooltip window. + // Argument <<1>> is the cost of type CostType. + #kisLOC_00044 = 物品质量: <<1>> + // The mass of the contents of a single item in the inventory slot. It's presented + // in a tooltip window. + // Argument <<1>> is the mass of type MassType. + #kisLOC_00045 = 物品质量: <<1>> + // The total cost of the items in the inventory slot. It's presented in a tooltip + // window. + // Argument <<1>> is the cost of type CostType. + #kisLOC_00046 = 总成本: <<1>> + // The total volume of the items in the inventory slot. It's presented in a tooltip + // window. + // Argument <<1>> is the volume of type VolumeLType. + #kisLOC_00047 = 总容积: <<1>> + // The total mass of the items in the inventory slot. It's presented in a tooltip + // window. + // Argument <<1>> is the mass of type MassType. + #kisLOC_00048 = 总质量: <<1>> + // The message to present in the tooltip window when the item has no resources. + #kisLOC_00049 = 该部件没有任何资源 + // The information for the key that activates the equipped item. It's presented in a + // tooltip window. + // Argument <<1>> is the string name of the key as set in the settings file. + #kisLOC_00051 = 按下 [<<1>>] 使用物品(装备) + // The template to present the resources reserve in the item. It's presented in a + // tooltip window. + // Argument <<1>> is the resource name of type ResourceType. + // Argument <<2>> is the current reserve of the resource. + // Argument <<3>> is the maximum amount of the resource. + #kisLOC_00052 = <<1>>: <<2>> / <<3>> + // The template to present the science data stored in the item. It's presented in a + // tooltip window. + // Argument <<1>> is the science title. + // Argument <<2>> is the science data amount. + // Argument <<3>> is the value of the science data. + #kisLOC_00053 = <<1>> (数据大小=<<2>>, 数据价值=<<3>>) + // The message to present in the tooltip window when the item has no science data. + #kisLOC_00054 = 该部件没有科学数据 + // The title of the module to present in the editor details window. + #kisLOC_00055 = 仓库 + // The info string in the editor for the maximum allowed volume of the inventory. + // Argument <<1>> is the voulme of type VolumeLType + #kisLOC_00056 = 最大容积: <<1>> + // The info string in the editor to present if kerbals can access the items in the + // inventory when staying inside the vessel. + #kisLOC_00057 = 支持舱内访问 + // The info string in the editor to present if kerbals cannot access the items in + // the inventory when staying inside the vessel. + #kisLOC_00058 = 不支持舱内访问 + // The info string in the editor to present if kerbals can access the items in the + // inventory when going EVA. + #kisLOC_00059 = 支持外部(EVA)访问 + // The info string in the editor to present if kerbals cannot access the items in + // the inventory when going EVA. + #kisLOC_00060 = 不支持外部(EVA)访问 + + // ********** Type: KIS.ModuleKISItem, KSPDev Messages + + // The title of the module to present in the editor details window. + #kisLOC_06000 = EVA装备-通用物品 + // The info string to show in the editor to state that the item can be equipped on + // the kerbal at the designated equip slot. + // Argument <<1>> is a the slot name. + #kisLOC_06001 = 装备部位: <<1>> + // The info string to show in the editor to state that the item can be carried by + // the kerbal at the designated equip slot. + // Argument <<1>> is a the slot name. + #kisLOC_06002 = 装备部位: <<1>> + // The name for the left hand equip slot. + #kisLOC_06003 = 左手 + // The name for the right hand equip slot. + #kisLOC_06004 = 右手 + // The name for the jetpack equip slot. + #kisLOC_06005 = 喷气背包 + // The name for the eye equip slot. + #kisLOC_06006 = 眼部 + // The name for the helmet equip slot. + #kisLOC_06007 = 头部 + // The info string to show in the editor to state that the item can be attached to + // another part without a need of any attach tool. + #kisLOC_06008 = 安装到该部件表面无需工具 + // The info string to show in the editor to state that the item CANNOT be attached + // to another part. + #kisLOC_06009 = 该部件表面无法安装任何部件 + // The info string to show in the editor to state that the item can be attached to + // the surface without a need of any attach tool. + #kisLOC_06010 = 该部件安装到地表无需工具 + // The info string to show in the editor to state that the item can be attached to + // the surface, but the appropriate tool will be needed. + #kisLOC_06011 = 该部件需要工具才能安装到其他部件的表面 + // The info string to show in the editor to specify with what force the part will be + // attached to the surface (if such attachment is allowed). + #kisLOC_06012 = 表面安装强度: <<1>> + // The info string to show in the editor to state that the item can be carried by + // the kerbal. I.e. it attaches on the kerbal's model and doesn't take space in the + // personal inventory. + #kisLOC_06013 = 由航天员携带 + // The info string to show in the editor to state that the item can be eqipped by + // the kerbal. I.e. it attaches on the kerbal's model and reacts to the 'use' + // hotkey. + #kisLOC_06014 = 可装备物品 + + // ********** Type: KIS.ModuleKISItemAttachTool, KSPDev Messages + + // The title of the module to present in the editor details window. + #kisLOC_04000 = EVA装备-安装工具 + // The info message to present in the editor's details window to denote that this + // tool can attach parts at the stack nodes. + #kisLOC_04001 = 该部件可以安装到连接柱 + // The info message to present in the editor's details window to denote that this + // tool can attach the parts at the surface of another part, but not at the stack + // nodes. + #kisLOC_04002 = 这个工具只能将部件安装到其他部件的表面,不能安装到连接柱上 + + // ********** Type: KIS.ModuleKISItemBomb, KSP Events + + // The name of the context menu item to activate the bomb. + #kisLOC_05009 = 激活 + // The name of the context menu item to open the bomb GUI setup window. + #kisLOC_05010 = 安放 + + // ********** Type: KIS.ModuleKISItemBomb, KSPDev Messages + + // The title of the module to present in the editor details window. + #kisLOC_05000 = EVA装备-爆破物品 + // The info message to present in the editor's details window for the maximum radius + // of explosion of the bomb. + // Argument <<1>> is the radius. Format: DistanceType. + #kisLOC_05001 = 最大爆炸半径: <<1>> + // The title of the GUI window to setup the bomb. + #kisLOC_05002 = 爆炸设置 + // The GUI section title for settig up the explosion timer. + #kisLOC_05003 = 计时器 + // The string that displays number of seconds till the bomb trigger. + #kisLOC_05004 = <<1>> s + // The GUI section title for settig up the explosion area. + #kisLOC_05005 = 爆炸半径 + // The string that displays current setting of the explosion radius. + // Argument <<1>> is the current radius. Format: DistanceType. + // Argument <<2>> is the maximum allowed radius for the part. Format: DistanceType. + #kisLOC_05006 = 当前爆炸点半径为 <<1>> 最大爆炸半径为 <<2>> + // The caption on the button that starts the timer. It cannot be stopped! + #kisLOC_05007 = 激活 (激活后无法撤销) + // The caption on the button that closes the setup menu without starting the timer + #kisLOC_05008 = 关闭 + // The mesasge to display when the bomb is activated. It's show nonly once and + // doesn't update as the bomb is ticking. + // Argument <<1>> is the timer setting in seconds. + #kisLOC_05011 = 你现在还有 <<1>> 秒用来逃跑! + + // ********** Type: KIS.ModuleKISItemBook, KSPDev Messages + + // The title of the module to present in the editor details window. + #kisLOC_07000 = EVA装备-产品说明 + // The info message to present in the editor's details window to designate the fact + // that this item is for the learning purposes only. + #kisLOC_07001 = 通用读物 + // The title for the window that shows the guide pages. + #kisLOC_07002 = 阅读 + // The caption on the button that navigates to the previous page. + #kisLOC_07003 = 上一页 + // The caption on the button that navigates to the next page. + #kisLOC_07004 = 下一页 + // The caption on the button that closes the guide window. + #kisLOC_07005 = 关闭 + // The string in the reader window that displays the current page number. + // Argument <<1>> is the number of the current page. + // Argument <<2>> is the total number of the pages. + #kisLOC_07006 = 当前页数 <<1>> / <<2>> + + // ********** Type: KIS.ModuleKISItemEvaPropellant, KSPDev Messages + + // The message to present when the jetpack is attempted to be refilled, but its' + // already full. + #kisLOC_08000 = 喷气背包燃料是满的,无需补充燃料. + // The message to present when the EVA kerbals has attempted to refill the jetpack, + // but the tank is empty. + #kisLOC_08001 = 该燃料罐是空的,无法为喷气背包补充燃料 + // The message to present when a non-full tank has successfully refilled from the + // pod's resource. + #kisLOC_08002 = 燃料罐已重新从飞船得到补充. + // The message to present when the EVA kerbals has attempted to refill the jetpack, + // but the tank didn't have enough fuel to fill the jetpack to full. + #kisLOC_08003 = 没有足够的燃料,喷气背包燃料只得到部分补充 + // The message to present when the EVA kerbals has attempted to refill the jetpack, + // and the jetpack has successfully refilled to full. + #kisLOC_08004 = 喷气背包燃料已补满 + + // ********** Type: KIS.ModuleKISItemSoundPlayer, KSPDev Messages + + // The name of the context menu item to start the playback. + #kisLOC_09000 = 播放 + // The name of the context menu item to stop the playback. + #kisLOC_09001 = 停止 + + // ********** Type: KIS.ModuleKISPartMount, KSP Actions + + // The name of the action to release the mounted part. + #kisLOC_10001 = 拆卸 + + // ********** Type: KIS.ModuleKISPartMount, KSP Events + + // The name of the context menu item to release the mounted part. + #kisLOC_10000 = 拆卸 + } +} From 59fb207d58f7a7c55944def5bf07b66ea61074f9 Mon Sep 17 00:00:00 2001 From: fackman <41724374+fackman@users.noreply.github.com> Date: Sun, 30 Jun 2019 11:40:54 +0800 Subject: [PATCH 02/15] zh-cn,ver:1 --- Lang/zh-cn.cfg | 1282 +++++++++++++++++++++++------------------------- 1 file changed, 610 insertions(+), 672 deletions(-) diff --git a/Lang/zh-cn.cfg b/Lang/zh-cn.cfg index 2f021384..b64ae500 100644 --- a/Lang/zh-cn.cfg +++ b/Lang/zh-cn.cfg @@ -1,680 +1,618 @@ -// Version: 2 -// Before changing the version, read the instructions in the en-us.cfg file! -// Author: RonnyWu -// Last updated: 31/12/2018 +// Version: 1 (2019-06-28) +//Author:facther Localization { zh-cn { - // ********** Part: KIS.basketball - - #KIS_basketball_Part_description = 这是一个用来做引力实验的好工具. - #KIS_basketball_Part_manufacturer = KIS - #KIS_basketball_Part_tags = cck-eva-items - #KIS_basketball_Part_title = 篮球 - - // ********** Part: KIS.beer - - #KIS_beer_Part_description = 美味又实惠的啤酒.每个太空机构的管理员都应该为那些让人感动的航天员准备一些,而且这能让他们保持足够的积极性和充足的动力。 - #KIS_beer_Part_manufacturer = KIS - #KIS_beer_Part_tags = cck-eva-items - #KIS_beer_Part_title = 布勃的啤酒 - #KIS_beer_Part_useName = 饮料 - - // ********** Part: KIS.bomb1 - - #KIS_bomb1_Part_title = K4 标准炸药 - #KIS_bomb1_Part_manufacturer = KIS - #KIS_bomb1_Part_description = 想摆脱各种太空轨道垃圾?我们知道你需要的是什么.请记住,你可以通过点击右键任何部件来安装炸药. - #KIS_bomb1_Part_tags = KIS EVA portable tool destruction bomb cck-eva-items - - // ********** Part: kis.concreteBase1 - - #kis_concreteBase1_Part_title = CB1 地面地基 - #kis_concreteBase1_Part_manufacturer = KIS - #kis_concreteBase1_Part_description = 只能安装在地面上的混泥土地基.因为一场科学奇迹,工程师已找到了如何使用电动螺丝刀或扳手将其安装在地面上的方法(译者:注意看上面说明.该部件允许空手安装的). - #kis_concreteBase1_Part_tags = KIS EVA portable building construction concrete cck-eva-items - - // ********** Part: KIS.Container1 - - #KIS_Container1_Part_title = SC-62 便携式仓库 - #KIS_Container1_Part_manufacturer = KIS - #KIS_Container1_Part_description = 用于存放较小部件的便携式仓库.坎巴拉的科学家意识到,有一个存放备用部件的仓库总比在指令舱周围飘满损坏的部件垃圾却不知所措要好很多. - #KIS_Container1_Part_tags = KIS container inventory portable cck-containers - - // ********** Part: KIS.Container2 - - #KIS_Container2_Part_title = ILC-18k 仓库 - #KIS_Container2_Part_manufacturer = KIS - #KIS_Container2_Part_description = ILC-18k 是采用内部访问设计的仓库,可以从飞船内部进行访问,可以不需要进行EAV来访问该部件.但是因为飞船内部添加了气压(氧气)来支持航天员进行内部访问,所以跟其他仓库相比,拥有额外的质量,而且虽然有氧但是并没有安装乘员座椅. - #KIS_Container2_Part_tags = KIS container inventory cck-containers - - // ********** Part: KIS.Container3 - - #KIS_Container3_Part_title = ISC-6K 仓库 - #KIS_Container3_Part_manufacturer = KIS - #KIS_Container3_Part_description = ISC-6K 是采用内部访问设计的小型仓库,可以从飞船内部进行访问,可以不需要进行EAV来访问该部件.但是因为飞船内部添加了气压(氧气)来支持航天员进行内部访问,所以跟其他仓库相比,拥有额外的质量,而且虽然有氧但是并没有安装乘员座椅. - #KIS_Container3_Part_tags = KIS container inventory cck-containers - - // ********** Part: KIS.ContainerMount1 - - #KIS_ContainerMount1_Part_title = SM-62便携式仓库卡扣 - #KIS_ContainerMount1_Part_manufacturer = KIS - #KIS_ContainerMount1_Part_description = 一个小型连接柱安装附件.该卡扣可以用于连接"SC-62 便携式仓库",是避免使用支架连接器(钢筋/胶带)来固定便携式仓库的最佳解决方案. - #KIS_ContainerMount1_Part_tags = KIS EVA building portable container cck-containers - - // ********** Part: KIS.electricScrewdriver - - #KIS_electricScrewdriver_Part_title = E-SD80 电动螺丝刀 - #KIS_electricScrewdriver_Part_manufacturer = KIS - #KIS_electricScrewdriver_Part_description = 一个能将部件安装到你飞船表面或对部件进行拆卸的工具. E-SD80电动螺丝刀的设计初衷是为了让我们的工程师们在外部建设中过程中拥有更多的自主权. - #KIS_electricScrewdriver_Part_tags = KIS EVA tool building portable cck-eva-items - - // ********** Part: KIS.evapropellant - - #KIS_evapropellant_Part_title = EVA-11燃料罐 - #KIS_evapropellant_Part_manufacturer = KIS - #KIS_evapropellant_Part_description = 一款为舱外活动(EVA)设计的备用燃料箱.在部件上右键单击可以使用它,为喷气背包补充燃料. - #KIS_evapropellant_Part_tags = KIS EVA fuel portable cck-eva-items - #KIS_evapropellant_Part_useName = 补充燃料 - - // ********** Part: KIS.ghettoblaster - - #KIS_ghettoblaster_Part_description = 进行太空旅行时或者等待救援时,如何消磨时间不是一件容易的事情,磁带录音机可以让航天员们保持有事可做. - #KIS_ghettoblaster_Part_manufacturer = KIS - #KIS_ghettoblaster_Part_tags = cck-eva-items - #KIS_ghettoblaster_Part_title = 磁带录音机 - - // ********** Part: KIS.golfclub - - #KIS_golfclub_Part_description = 这是另一个未经批准的重力实验项目,玩高尔夫球. - #KIS_golfclub_Part_manufacturer = KIS - #KIS_golfclub_Part_tags = cck-eva-items - #KIS_golfclub_Part_title = 高尔夫球棒 - #KIS_golfclub_Part_useName = 挥杆 - - // ********** Part: KIS.guide - - #KIS_guide_Part_title = KIS使用指南 - #KIS_guide_Part_manufacturer = KIS - #KIS_guide_Part_description = 这里有你需要知道的关于仓库体系的一切,不需要什么复杂的电脑操作,只需要在仓库中右键点击,直接阅读. - #KIS_guide_Part_tags = KIS inventory building book portable cck-eva-items - #KIS_guide_Part_useName = 阅读 - - // ********** Part: KIS.guitar - - #KIS_guitar_Part_description = 静寂的太空,航天员需要一把吉他来解闷. - #KIS_guitar_Part_manufacturer = KIS - #KIS_guitar_Part_tags = cck-eva-items - #KIS_guitar_Part_title = 吉他 - - // ********** Part: KIS.taco - - #KIS_taco_Part_description = 添加了牛肉,蔬菜和辣椒酱的玉米薄饼卷,我们的每一位航天员都需要一份太空餐. - #KIS_taco_Part_manufacturer = KIS - #KIS_taco_Part_tags = cck-eva-items - #KIS_taco_Part_title = 墨西哥玉米薄饼卷 - #KIS_taco_Part_useName = 进餐 - - // ********** Part: KIS.wrench - - #KIS_wrench_Part_title = BS-8工具扳手 - #KIS_wrench_Part_manufacturer = KIS - #KIS_wrench_Part_description = 一个能将最小部件安装到飞船表面或拆卸下来的工具,其实没有什么复杂的,只是一个简单的扳手而已. - #KIS_wrench_Part_tags = KIS EVA tool building portable cck-eva-items - - // ********** Type: KIS.GUIUtils.VolumeLType, KSPDev Messages - - // Liter unit for a volume value. - #kisLOC_99000 = \u0020L - - // ********** Type: KIS.KIS_Item, KSPDev Messages - - // The screen message to present when the item was attempted to equip, but the - // relevant inventory slot has more than one item (stacked). - #kisLOC_02000 = 无法装备堆叠物品,请右键拆分成单个物品后重新装备 - // The screen message to present when the item was attempted to equip, but its equip - // slot is already taken by a carriable item. - // Argument <<1>> is the name of the equip slot of the item. - // Argument <<2>> is the name of the item being carried. - #kisLOC_02001 = [<<1>>]已经装备了相关物品,无法装备<<2>> - // The screen message to present when the item was attempted to equip, but a - // specific kerbal trait (skill) is required to handle the item. - // Argument <<1>> is the name of the required trait. - #kisLOC_02002 = 该物品只能由拥有<<1>>技能的航天员装备 - // The screen message to present when the item was attempted to be added to an - // existing slot stack, but the resulted inventory volume would exceed the maximum - // allowed volume. - // Argument <<1>> is the excessive volume. Format: VolumeLType. - #kisLOC_02003 = 仓库无法存储这么多物品,缺少<<1>>个物品格子. - // The screen message to present when the item was attempted to be added to an - // existing slot stack, but the item being added is currently equipped. - #kisLOC_02004 = 该物品无法堆叠 - - // ********** Type: KIS.KISAddonPickup, KSPDev Messages - - // The action status to show in the tooltip when the player presses the re-dock - // action key and the action is allowed. - #kisLOC_01000 = Re-dock - // The action status to show in the tooltip when the player presses the re-dock - // action key and the action is not allowed. - #kisLOC_01001 = Can't re-dock - // The action status to show in the tooltip when the player presses the grab action - // key while pointing on a root part, and the action is allowed. - #kisLOC_01002 = 拾取 - // The action status to show in the tooltip when the player presses the grab action - // key while pointing on an child part, and the action is allowed. - #kisLOC_01003 = 拆卸并拾取 - // The action status to show in the tooltip when the player presses the grab action - // key and the action is not allowed. - #kisLOC_01004 = 无法拾取 - // The action status to show in the tooltip when the player presses the detach - // action key and the action is allowed. - #kisLOC_01005 = 拆卸 - // The action status to show in the tooltip when the player presses the detach - // action key when a statically attached (to the ground) part is targeted, and the - // action is allowed. - #kisLOC_01006 = 拆卸 - // The action status to show in the tooltip when the player attempts to detach a - // part that cannot be detached for any reason. - #kisLOC_01007 = 无法拆卸 - // The action status to show in the tooltip when the player attempts to attach a - // part that cannot be attached for any reason. - #kisLOC_01008 = 无法安装 - // The action status to show in the tooltip when the player attempts to grab or move - // a too heavy part or assembly. - #kisLOC_01009 = 太重了 - // The action status to show in the tooltip when the player attempts to grab or move - // a part or assembly which is too far from the acting part (e.g. an EVA kerbal). - #kisLOC_01010 = 太远了 - // The action status to show in the tooltip when the action cannot complete due to - // the unexpected reasons. - #kisLOC_01011 = 不支持的操作 - // The action status to show in the tooltip when the requested action requires an - // equipped tool on the EVA kerbal, but there was none. - #kisLOC_01012 = 需要至少一种工具 - // The action status to show in the tooltip when the re-dock action is in the - // process. - // Argument <<1>> is a name of the vessel being re-docked. - // Argument <<2>> is the total mass of the vessel. Format: MassType. - #kisLOC_01013 = 航天器: <<1>>\n质量: <<2>> - // The action status to show in the tooltip when a root part of the vessel is - // targeted for an action. - #kisLOC_01014 = 根部件 - // The tooltip help string in case of the current action is dropping of a grabbed - // part. - // Argument <<1>> is the name of the node at which the part will be acted. - #kisLOC_01015 = 丢弃 (<<1>>) - // The tooltip help string in case of the current action is attaching of a grabbed - // part. - // Argument <<1>> is the name of the node at which the part will be acted. - #kisLOC_01016 = 安装 (<<1>>) - // The tooltip help string in case of the current action is re-docking of a grabbed + // ********** Part: KAS.CH1 + + #KAS_CH1_Part_title = CH-1 缆绳挂钩 + #KAS_CH1_Part_manufacturer = KAS Labs, Inc. + #KAS_CH1_Part_description = 可以将缆绳挂在上面的钩子。这是“把这些东西放在一起”解决方案的另一半。 + #KAS_CH1_Part_tags = KIS KAS cable rope tie cck-kas + + // ********** Part: KAS.JS1 + + #KAS_JS1_Part_title = JS-1 连接基座 + #KAS_JS1_Part_manufacturer = KAS Labs, Inc. + #KAS_JS1_Part_description = 这个多用途的基座有多种功能:它允许牢固的连接,并提供资源传输!安装此插座需要一名具有多年经验的认证工程师,但一旦安装,即使是清洁工也可以使用它来连接容器。 + #KAS_JS1_Part_tags = KIS KAS pipe tube cck-kas + + // ********** Part: KAS.PCB1 + + #KAS_PCB1_Part_title = PCB-1 便携缆绳绞盘 + #KAS_PCB1_Part_manufacturer = KAS Labs, Inc. + #KAS_PCB1_Part_description = 这是一个带有一根钢丝绳的简单的手动绞盘,只要相距不太远就可以连接东西。 但是,另一个容器上必须有一个挂钩,用于连接缆绳,因此这种绞盘只解决了一半的问题。 + #KAS_PCB1_Part_tags = KIS KAS cable rope tie cck-kas + #KAS_PCB1_Part_LinkBreak = 断开连接 + #KAS_PCB1_Part_LinkStart = 连接 + + // ********** Part: KAS.PortPylon + + #KAS_PortPylon_Part_title = GP-20 塔架 + #KAS_PortPylon_Part_manufacturer = KAS Labs, Inc. + #KAS_PortPylon_Part_description = 我们的RTS-1产品线非常成功!不过,也有一些问题,事实证明,有时管道不够长!为了解决这个问题,我们开发了一个新的部件:一个带有连接基座的轻型塔架,它可以充当扩展器。因此,长距离资源传输是可行的,尽管可能需要建造额外的塔架。杰布真的想在中空的内部增加一个科巴可乐冰箱,但由于严格的20公斤的质量限制,研发部不得不拒绝他的建议。 + #KAS_PortPylon_Part_tags = KAS resource fuel transfer cck-kas + + // ********** Part: KAS.PortPylonPwr + + #KAS_PortPylonPwr_Part_title = BGP-400 增强版塔架 + #KAS_PortPylonPwr_Part_manufacturer = KAS Labs, Inc. + #KAS_PortPylonPwr_Part_description = 这个部件的设计灵感来自于GP-20。我们的工程师想知道:塔架的内部容积真的能被利用吗?结果证明是可以的!因此,他们决定给它装上一些Z-100电池和一个简单的控制模块。 它不像杰巴所要求的那个酷酷的科巴可乐冰箱,但它仍然非常实用。请放心,所用电池的质量是最好的,而不是从回收站回收的。 + #KAS_PortPylonPwr_Part_tags = KAS resource fuel transfer cck-kas + + // ********** Part: KAS.RTS1 + + #KAS_RTS1_Part_title = RTS-1 资源传输管道绞盘 + #KAS_RTS1_Part_manufacturer = KAS Labs, Inc. + #KAS_RTS1_Part_description = 该管道可以在飞船之间转移资源。 直径并没有那么大,但正如一个小绿家伙曾经说过的,“大小无关紧要。” 我们的专利技术允许通过它传输任何数量的东西,包括但不限于:岩石,燃料,零食,甚至是坎巴拉人。在后一种情况下,保修无效。 + #KAS_RTS1_Part_tags = KIS KAS resource fuel transfer cck-kas + + // ********** Part: KAS.TB60 + + #KAS_TB60_Part_title = TB-60 牵引杆 + #KAS_TB60_Part_manufacturer = KAS Labs, Inc. + #KAS_TB60_Part_description = 这是一种拖曳一艘不能自行移动的飞船的解决方案。如果使用一根简易的绳索,那么被牵引的飞船在刹车或操纵时可能会撞击牵引船,但使用牵引杆时就不会发生这种情况。此外,当条件符合时,它还可以操纵被拖飞船。一定要保证电量充足,否则主动转向将不起作用。 + #KAS_TB60_Part_tags = KIS KAS pipe tube tow towbar cck-kas + #KAS_TB60_Part_LinkBreak = 断开连接 + #KAS_TB60_Part_LinkStart = 连接 + #KAS_TB60_Part_Park_Forward = 固定方向:90° + #KAS_TB60_Part_Park_Up = 固定方向:0° + + // ********** Part: KAS.TJ1 + + #KAS_TJ1_Part_title = TJ-1 固定伸缩杆 + #KAS_TJ1_Part_manufacturer = KAS Labs, Inc. + #KAS_TJ1_Part_description = 这种简单的伸缩式杆可以牢固地连接两个容器。 最大连接距离比较短,但其强度足够。 设计的灵感来自Jeb在二手商店购买的自拍杆。 + #KAS_TJ1_Part_tags = KIS KAS pipe tube cck-kas + #KAS_TJ1_Part_LinkBreak = 断开连接 + #KAS_TJ1_Part_LinkStart = 连接 + #KAS_TJ1_Part_Park_Down = 固定方向:180° + #KAS_TJ1_Part_Park_Forward = 固定方向:90° + #KAS_TJ1_Part_Park_Up = 固定方向:0° + + // ********** Part: KAS.TJ2 + + #KAS_TJ2_Part_title = TJ-2 自由伸缩杆 + #KAS_TJ2_Part_manufacturer = KAS Labs, Inc. + #KAS_TJ2_Part_description = 除了铰链是解锁的,和TJ-1“自拍棒”相同。真正的最佳解决方案是保持联系船只相互分散,但也不过度限制其运动。 + #KAS_TJ2_Part_tags = KIS KAS pipe tube cck-kas + #KAS_TJ2_Part_LinkBreak = 断开连接 + #KAS_TJ2_Part_LinkStart = 连接 + #KAS_TJ2_Part_Park_Down = 固定方向:180° + #KAS_TJ2_Part_Park_Forward =固定方向:90° + #KAS_TJ2_Part_Park_Up = Park:固定方向:0° + + // ********** Part: KAS.W1 + + #KAS_W1_Part_title = W-50 绞盘 + #KAS_W1_Part_manufacturer = KAS Labs, Inc. + #KAS_W1_Part_description = 一位古老的圣人曾经说过:“给我一个正确的基座和绞盘,我能拉动Kerbin”。 这种绞盘并不是那么强大,尽管它可以抬起或牵引一艘相当庞大的飞船。 请确保目标飞船上有兼容的基座。 此外,确保飞船上有足够的电力:绞盘很费电! + #KAS_W1_Part_tags = KIS KAS winch cable connector cck-kas + + // ********** Part: KAS.W2 + + #KAS_W2_Part_title = HW-80 绞盘 + #KAS_W2_Part_manufacturer = KAS Labs, Inc. + #KAS_W2_Part_description = W-50绞车型号的重型版本。它有额外的电缆和增强的连接强度。然而,它仍然不能拉动Kerbin。注意:如果绞车用于绞车开关,则保修无效,无论是哪个绞车还是哪个开关。 + #KAS_W2_Part_tags = KIS KAS winch cable connector heavyduty cck-kas + + // ********** Type: KAS.AbstractJoint, KSPDev Messages + + // Message to display when the link cannot be established because it's too short. + // Argument <<1>> is the current link length of type DistanceType. + // Argument <<2>> is the part's config setting of type DistanceType. + // Example usage: + // Link is too short: 1.22 m < 2.33 m + #kasLOC_00000 = 连接太短: <<1>> < <<2>> + // Message to display when the link cannot be established because it's too long. + // Argument <<1>> is the current link length of type DistanceType. + // Argument <<2>> is the part's config setting of type DistanceType. + // Example usage: + // Link is too long: 2.33 m > 1.22 m + #kasLOC_00001 = 连接太长: <<1>> > <<2>> + // Message to display when the link cannot be established because the maximum angle + // between the link vector and the joint normal at the SOURCE part is to big. + // Argument <<1>> is the current link angle of type AngleType. + // Argument <<2>> is the part's config setting of type AngleType. + // Example usage: + // Source angle limit reached: 3° > 2.5° + #kasLOC_00002 = 达到源角度限制: <<1>> > <<2>> + // Message to display when the link cannot be established because the maximum angle + // between the link vector and the joint normal at the TARGET part is to big. + // Argument <<1>> is the current link angle of type AngleType. + // Argument <<2>> is the part's config setting of type AngleType. + // Example usage: + // Target angle limit reached: 3° > 2.5° + #kasLOC_00003 = 达到目标角度限制: <<1>> > <<2>> + // Info string in the editor for the link break force setting. The argument is of + // type ForceType. + // Example usage: + // Link break force: 1.2 kN + #kasLOC_00004 = 连接断开力度: <<1>> + // Info string in the editor for the link break torque setting. The argument is of + // type ForceType. + // Example usage: + // Link torque force: 1.2 kN + #kasLOC_00005 = 连杆扭矩: <<1>> + // Info string in the editor for the minimum link length setting. + // Argument <<1>> is the part's config setting of type DistanceType. + // Example usage: + // Minimum link length: 1.22 m + #kasLOC_00006 = Minimum link length: <<1>> + // Info string in the editor for the maximum link length setting. + // Argument <<1>> is the part's config setting of type DistanceType. + // Example usage: + // Maximum link length: 1.22 m + #kasLOC_00007 = 最小连接长度:<<1>> + // Info string in the editor for the maximum allowed angle at the source. + // Argument <<1>> is the part's config setting of type AngleType. + // Example usage: + // Source angle limit: 1.2° + #kasLOC_00008 = 源角限制: <<1>> + // Info string in the editor for the maximum allowed angle at the target. + // Argument <<1>> is the part's config setting of type AngleType. + // Example usage: + // Target angle limit: 1.2° + #kasLOC_00009 = 目标角度限制: <<1>> + // Title of the module to present in the editor details window. + #kasLOC_00010 = KAS接头 + + // ********** Type: KAS.AbstractPipeRenderer, KSPDev Messages + + // Message to display when the link cannot be created due to an obstacle. + // Argument <<1>> is the part that would collide with the proposed link. + // Example usage: + // Link collides with: Mk2 Cockpit + #kasLOC_07000 = 连接与以下对象冲突: <<1>> + // Message to display when the link strut orientation cannot be changed due to it + // would hit the surface. + #kasLOC_07001 = 连接与表面冲突 + + // ********** Type: KAS.ControllerWinchRemote, KSPDev Messages + + // The title of the remote control dialog. It also gives a hint on the keyboard + // sequence that brings the GUI up. + // Argument <<1>> is the keyboard even of type KeyboardEventType. + #kasLOC_11000 = 绞盘远程控制 (<<1>>) + // The caption of the button that triggers cable release. + #kasLOC_11001 = 松开 + // The GUI hint to explain the effect of the release button. + #kasLOC_11002 = 松开接头并将缆绳并将长度设置为最大值 + // The caption of the button that stretches teeh cable. + #kasLOC_11003 = 弹性 + // The GUI hint to explain the effect of the stretch button. + #kasLOC_11004 = 将缆绳长度设置为“拉伸”按钮的实际距离。 + // The caption of the button that deatches the cable from the target. + #kasLOC_11005 = 断开 + // The GUI hint to explain the effect of the detach button. + #kasLOC_11006 = 从目标部件上断开缆绳 + // The caption of the button that closes the GUI dialog. + #kasLOC_11007 = 关闭 + // The GUI hint to explain the effect of the close button. + #kasLOC_11008 = 关闭 + // The caption for the toggle control (button style) which tells if the winch should + // be highlighted in the scene. It's better keep the text as short as possible. + #kasLOC_11009 = H + // The GUI hint to explain the effect of toggling the control. + #kasLOC_11010 = 高亮绞盘 + // The text for the winch status in which it cannot be remotely operated for any + // reason. + #kasLOC_11011 = 未连接 + // The GUI hint to explain the OFFLINE state. + #kasLOC_11012 = 无法和绞盘联络。飞船是可控的吗? + // The text for the winch status that tells that the main winch attach node is + // occupied by an incompatible (non-KAS) part. + #kasLOC_11013 = 被阻挡 + // The GUI hint to explain the BLOCKED state. + #kasLOC_11014 = 绞盘连接节点被另一个部件阻挡 + // The text for the winch status that tells that the cable connector is locked to + // the winch, and the cable length is zero. + #kasLOC_11015 = 回收 + // The GUI hint to explain the RETRACTED state. + #kasLOC_11016 = 接头被锁定在绞盘中。 + // The GUI hint of the button that triggers retracting of the cable. The cable will + // be retracting until the motor status is changed or the connector get locked. + #kasLOC_11017 = 开始收回缆绳 + // The GUI hint of the button that triggers deploying of the cable. The cable will + // be deploying until the motor status is changed. + #kasLOC_11018 = 开始延长缆绳 + // The GUI hint of the button that retracts the cable. The cable will be retracting + // as long as the button is pressed. + #kasLOC_11019 = 收回缆绳 + // The GUI hint of the button that extends the cable. The cable will be extending as + // long as the button is pressed. + #kasLOC_11020 = 延长缆绳 + // The GUI hint to show for the control that changes the motor speed. It's the + // maximum speed which the motor can reach when retracting or extending the cable. + #kasLOC_11021 = 电机速度设置 + // The GUI hint to show for the area which displays two values: the deployed cable + // length and the real distance between the winch and the target (connector or + // part). The values are presented as a pair, separated by symbol '/'. + #kasLOC_11022 = 缆绳的展开/实际长度 + // The GUI hint to show for the area which displays two values: the current motro + // speed and the maximum possible motor speed. The values are presented as a pair, + // separated by symbol '/'. + #kasLOC_11023 = 当前电机转速/电机转速设置 + // The string to present when the dialog is opened, but no KAS winches found in the + // scene. + #kasLOC_11024 = 未发现绞盘! + // The formatter string for the cable lengths when the cable is *not* under strain. + // I.e. its actual length is not greater than the winch allows. + // Argument <<1>> is the length, allowed by the winch of type DistanceType. + // Argument <<1>> is the real cable length of type DistanceType. + #kasLOC_11025 = <<1>> / <<2>> + // The formatter string for the cable lengths when the cable *is* under strain. I.e. + // its actual length is greater than the winch allows. + // Argument <<1>> is the length, allowed by the winch of type DistanceType. + // Argument <<2>> is the real cable length of type DistanceType. + #kasLOC_11026 = <<1>> / <<2>> + // The formatter string for the winch motor speed. + // Argument <<1>> is the current motor speed type VelocityType. + // Argument <<2>> is the settings for the desired motor speed of type VelocityType. + #kasLOC_11027 = <<1>> / <<2>> + + // ********** Type: KAS.KASJointCableBase, KSPDev Messages + + // Info string in the editor for the cable spring force setting. + // Argument <<1>> is the force of type ForceType. + // Example usage: + // Spring force: 1.2 kN + #kasLOC_09000 = 弹力: <<1>> + // Title of the module to present in the editor details window. + #kasLOC_09001 = KAS 缆绳 + + // ********** Type: KAS.KASJointTowBar, KSP Events + + // A context menu event that starts the locking process on a linked vessel. + #kasLOC_05014 = 开始锁定 + // A context menu event that disables the locking of the tow bar joints and turns + // off the active steering mode. + #kasLOC_05015 = 解锁接头 + // A context menu event that enables the active steering mode. + #kasLOC_05016 = 启用主动转向 + // A context menu event that disables the active steering mode. + #kasLOC_05017 = 关闭主动转向 + + // ********** Type: KAS.KASJointTowBar, KSP Fields + + // A context menu item that displays the current status of the bar locking. + #kasLOC_05010 = 锁定状态 + // A context menu item that displays the current steering status. + #kasLOC_05011 = 转向状态 + // A context menu item that displays and allows changing the strength of the + // steering commands, that the tow bar sends to the linked vessel. + #kasLOC_05012 = 转向灵敏度 + // A context menu item that displays and allows changing the direction of the + // steering commands. + #kasLOC_05013 = 转向:方向 + // The name of the active steering mode, in which the steering commands are sent to + // the linked vessel in the exact form as they've emitted for the source vessel. + #kasLOC_05018 = 正常 + // The name of the active steering mode, in which the steering commands are sent to + // the linked vessel in the inverted form relative to the source vessel. + #kasLOC_05019 = 反转 + + // ********** Type: KAS.KASJointTowBar, KSPDev Messages + + // Message to display when a tow bar is not locked but the locking process has been + // started. The <<1>> argument shows the current locking error and is formatted as + // an angle type. + // Example usage: + // Tow bar is locking: diff 1.5° + #kasLOC_05000 = 牵引杆正在锁定:移动中 <<1>> + // Message to display when a tow bar locking process successfully ends with locking. + #kasLOC_05001 = 牵引杆被锁定! + // A string in the context menu that tells that the active steering mode is not + // enabled. + #kasLOC_05002 =禁用 + // A string in the context menu that tells that the active steering mode is ready + // and working. + #kasLOC_05003 = 活动的 + // A string in the context menu that tells that the active steering mode cannot work + // due to the bar's target vessel is currently under player's control. + #kasLOC_05004 = 目标是移动的飞船 + // A string in the context menu that tells that the active steering mode cannot work + // due to the linked vessel is remotely controlled. + #kasLOC_05005 = 目标无法控制 + // A string in the context menu that tells that the active steering mode is + // activated but cannot start working due to the constraints. + #kasLOC_05006 = 未锁定 + // A string in the context menu that tells that the bar joints are unlocked. + #kasLOC_05007 = 禁用 + // A string in the context menu that tells that the bar joints are locked. + #kasLOC_05008 = 已锁定 + // A string in the context menu that tells that the bar joints are unlocked but the + // part is trying to lock them. + #kasLOC_05009 = 正在锁定 + + // ********** Type: KAS.KASLinkResourceConnector, KSP Events + + // The context menu event that opens the resources transfer GUI. + #kasLOC_12015 = 打开界面 + + // ********** Type: KAS.KASLinkResourceConnector, KSPDev Messages + + // The title of the resource transfer dialog. + #kasLOC_12000 = 资源转移 + // The resource in the transfer options table. Its main purpose is dealing with the + // Lingoona modifiers, applied to the resource name. + // Argument <<1>> is the full localized resource name with the Lingoona modifiers + // (if any). + #kasLOC_12001 = <<1>> + // The string to present for a fuel mixture component. + // Argument <<1>> is the percent ratio of the component in the mixture of type + // PercentType. + // Argument <<2>> is the abbreviated localized resource name with the + // Lingoonamodifiers (if any). + // Example usage: + // 45 % Ox + #kasLOC_12002 = <<1>> <<2>> + // The status string saying current and maximum amounts of the resource in the + // vessel. The gui tags are suggested to define the minimum size of the text, to + // avoid the dialog flickering when the resource is being transferred. + // Argument <<1>> is the current amount of type CompactNumberType. + // Argument <<1>> is the maximum amount (capacity) of type CompactNumberType. + // Example usage: + // 2.56 / 1,234 + #kasLOC_12003 = <<1>> / <<2>> + // The information string that tells what is the selected or calculated tarnsfer + // speed is. + #kasLOC_12004 = 当前传输速度: <<1>> units per second + // The caption on the button that closes the trsnafer dialog. + #kasLOC_12005 = 关闭对话框 + // The string that tells which vessels owns the resource transfer part. Its stats + // are displayed on the left side of the dialog. + // Argument <<1>> is the name of the owner vessel. + #kasLOC_12006 = 本体(左): <<1>> + // The string that tells which vessels is connected to the resource transfer part. + // Its stats are displayed on the right side of the dialog. + // Argument <<1>> is the name of the connected vessel. + #kasLOC_12007 = 已连接(右): <<1>> + // The hint to explain the mixture of the fuel components to transfer. + // Argument <<1>> is the comma-separated list of the component names. + #kasLOC_12008 = 部件的混合物: <<1>> + // The caption for the control that enables the mode, which automatically deducts + // the speed of the reasource transfer. + #kasLOC_12009 = 自动改变传输速度 + // The GUI hint that explains what will happen if the auto-speed options is chosen. + #kasLOC_12010 = 将设置速度,以便在 <<1>> 秒内完成传输 + // The hint text to explain the button action that starts transferring the resource + // from the connected vessel to the owner of the resource transfer part. + #kasLOC_12011 = 开始从目标转移到本体 + // The hint text to explain the button action that does transferring the resource + // from the connected vessel to the owner of the resource transfer part. When the + // button is released, the transfer stops. + #kasLOC_12012 = 从目标转移到本体 + // The hint text to explain the button action that starts transferring the resource + // from the owner of the resources transfer part to the connected vessel. + #kasLOC_12013 = 开始从本体转移到目标 + // The hint text to explain the button action that does transferring the resource + // from the owner of the resource transfer part to the connected vessel. When the + // button is released, the transfer stops. + #kasLOC_12014 = 从本体转移到目标 + // The message to present in the transfer dialog when the parts are docked. Hence, + // the stock game functionality must be used to transfer the resources. + #kasLOC_12016 = 在对接模式下不可用 + + // ********** Type: KAS.KASLinkSourceBase, KSPDev Messages + + // Message to display when the target link type doesn't match the source type. + #kasLOC_02000 = 目标连接类型不兼容 + // Message to display when a source is refusing to start the link. + #kasLOC_02001 = 源不可用于连接 + // Message to display when the target is refusing to accept the link. + #kasLOC_02002 = 目标不可用于连接 + // Message to display when a linked source and target cannot be matched on load. + // Argument <<1>> is a name of the SOURCE part. + // Example usage: + // Cannot restore link for: KAS.TJ1 + #kasLOC_02003 = 无法恢复连接: <<1>> + // Info string in the editor for the link type setting. + // Argument <<1>> is the type string from the part's config. + #kasLOC_02004 = 按基座类型连接: <<1>> + // Title of the module to present in the editor details window. + #kasLOC_02005 = KAS 接头来源 + // The name of the part's context menu event that triggers a separtation of the + // linked parts into two different vessels if they are coupled thru this link. At + // the same time, the name of the event gives a currently selected state. + #kasLOC_02006 = 连接状态:对接 + // The name of the part's context menu event that triggers a merging of the linked + // parts if they were not coupled before. At the same time, the name of the event + // gives a currently selected state. + #kasLOC_02007 = 连接状态:未对接 + + // ********** Type: KAS.KASLinkSourceInteractive, KSPDev Messages + + // The message to display when a compatible target part is hovered over, and the + // source is in the linking mode. + // Argument <<1>> is the possible link length of type DistanceType. + // Example usage: + // Click to establish a link (length 1.22 m) + #kasLOC_01000 = 单击以建立连接 (长度 <<1>>) + // The message to display as a help string when an interactive linking mode has + // started. + #kasLOC_01001 = 选择兼容的基座或按Esc键 + // The message to present when the player requests a docking mode for the link via + // UI, but the source or target part is rejecting the action. + #kasLOC_01002 =无法对接:不支持该模式 + + // ********** Type: KAS.KASLinkSourcePhysical, KSP Events + + // A context menu event that attaches the connector to the EVA kerbal. + #kasLOC_13007 = 抓取接头 + // A context menu event that detaches the connector from the kerbal and puts it back + // to the winch. + #kasLOC_13008 = 返回接头 + // Context menu item to break the currently established link. + #kasLOC_13009 = 分离接头 + // Advanced tweakable. Context menu item to instantly lock the deployed connector + // into the base. + #kasLOC_13010 = 锁定接头 + + // ********** Type: KAS.KASLinkSourcePhysical, KSP Fields + + // Status field to display the current winch connector status in the context menu. + #kasLOC_13006 = 接头状态 + + // ********** Type: KAS.KASLinkSourcePhysical, KSPDev Messages + + // A string in the context menu that tells that the connector is rigidly attached to + // the part and is not movable. + #kasLOC_13000 = 已锁定 + // A string in the context menu that tells that the connector is deployed and + // attached to the part via a cable. + #kasLOC_13001 = 已部署 + // A string in the context menu that tells that the connector is plugged in a socked + // or is being carried by a kerbal, and attached to the part via a cable. + #kasLOC_13002 = 接通电源 + // A string in the context menu that tells that the connector is rigidly attached in + // the winch socked, and the vessel on the connector is docked to the part owner // vessel. - // Argument <<1>> is the name of the vessel which will be re-docked. - #kisLOC_01017 = Re-dock (<<1>>) - // The tooltip help string in case of the current action is mounting a KIS item. - #kisLOC_01018 = 安装中 - // The tooltip help string to display when the re-dock action is selected but the - // mouse cursor is not pointing to a valid docked vessel. - #kisLOC_01019 = 没有可对接的航天器 - // The tooltip help string to display when the re-dock action selected but the mouse - // cursor is not pointing any part. - #kisLOC_01020 = 选择一艘航天器 - // The tooltip help string to display when the player attempts to grab a kerbal - #kisLOC_01021 = 航天员问你"我能不能自己用喷气背包移动" - // The tooltip help string to display when the player attempts to grab a too heavy - // object. - // Argument <<1>> is the total mass of the target object. Format: MassType. - // Argument <<2>> is the maximum allowed mass. Format: MassType. - #kisLOC_01022 = 你应该叫来更多的小绿人(航天员) - // The tooltip help string to display when the player attempts to grab an object - // which is too far away. - #kisLOC_01023 = 太远了,请靠近一点 - // The tooltip help string to display when the player attempts to perfrom an attach - // action without the proper tool equipped. - #kisLOC_01024 = 缺少安装物品的工具 - // The tooltip help string to display when the player attempts to perfrom a detach - // action without the proper tool equipped. - #kisLOC_01025 = 缺少拆卸物品的工具 - // The tooltip help string to display when the player attempts to perfrom a detach - // action on a ground attched part without the proper tool equipped. - #kisLOC_01026 = 缺少拆卸物品的工具 - // The tooltip help string in the case when the action cannot complete due to the - // unexpected reasons. - #kisLOC_01027 = 该部件不支持该行为 - // The tooltip help string in the case when an attach action is attempted on a part - // which is not designed for that. - #kisLOC_01028 = 该部件不支持安装行为 - // The tooltip help string to display when a single part was targeted for an action. - // Agrument <<1>> is a name of the target part. - #kisLOC_01029 = <<1>> - // The tooltip help string to display when multiple parts was targeted for an - // action. - // Agrument <<1>> is a name of the target part. - // Agrument <<2>> is the number of the children parts attached to the target. - #kisLOC_01030 = <<1>>\n关联部件: <<2>> - // The tooltip help string for the key bindings to adjust the part's roll. - // Argument <<1>> is the "adjust left" key name. - // Argument <<2>> is the "adjust right" key name - #kisLOC_01031 = [<<1>>][<<2>>] - // The tooltip help string for the key bindings to adjust the part's pitch. - // Argument <<1>> is the "adjust left" key name. - // Argument <<2>> is the "adjust right" key name - #kisLOC_01032 = [<<1>>][<<2>>] - // The tooltip help string for the key bindings to adjust the part's yaw. - // Argument <<1>> is the "adjust left" key name. - // Argument <<2>> is the "adjust right" key name - #kisLOC_01033 = [<<1>>][<<2>>] - // The tooltip help string for the key bindings to adjust the part's rotation. - // Argument <<1>> is the keys for the roll adjustment. - // Argument <<2>> is the keys for the pitch adjustment. - // Argument <<3>> is the keys for the yaw adjustment. - #kisLOC_01034 = <<1>>/<<2>>/<<3>> 旋转部件 - // The tooltip help string for the key binding to reset all the roll and offset - // adjustments. - #kisLOC_01035 = [<<1>>] 重置方向和位置 - // The tooltip help string for the key binding to change the node snap mode. - #kisLOC_01036 = [<<1>>] 改变捕捉角度 - // The tooltip help string for the key bindings to adjust the part's offset. - // Argument <<1>> is the "adjust up" key name. - // Argument <<2>> is the "adjust down" key name - #kisLOC_01037 = [<<1>>]/[<<2>>] 上下移动 - // The tooltip help string for the key binding to switch to the attach mode. - #kisLOC_01038 = [<<1>>] 安装 - // The tooltip help string for the key binding to cancel the operation. - #kisLOC_01039 = [Escape] 取消 - - // ********** Type: KIS.KISAddonPointer, KSPDev Messages - - // The message to present when the selected action cannot be completed given the - // currently grabbed part/assembly and the target at which the mouse cursor is - // pointing. - #kisLOC_03000 = 该部件无法完成当前操作 - // The message to present when the selected action cannot be completed due to the - // source and the target are the same objects. - #kisLOC_03001 = 不能安装到自己本身 - // The message to present when a non-mountable object is attempted to be mounted. - #kisLOC_03002 = 该部件无法携带 - // The message to present when the source object is attempted to be attached to the - // target's surface of a part which doesn't allow this mode. - #kisLOC_03003 = 目标部件表面无法安装物品 - // The message to present when the source object is attempted to be attached to the - // target's surface, but the selected node on the soucre is not 'surface'. - #kisLOC_03004 = 只能安装到部件表面,无法安装到连接柱 - // The message to present when the acting kerbal is too far from the part he's - // trying to act on (source part). - // Argument <<1>> is the actual distance between the kerbal and the source part. - // Format: DistanceType. - // Argument <<2>> is the maximum allowed distance. Format: DistanceType. - #kisLOC_03005 = 当前距离<<1>>,最大距离<<2>> - // The message to present when the acting kerbal is too far from the point of the - // actual action (drop or attach). - // Argument <<1>> is the actual distance between the kerbal and the target part. - // Format: DistanceType. - // Argument <<2>> is the maximum allowed distance. Format: DistanceType. - #kisLOC_03006 = 当前距离<<1>>,最大距离<<2>> - // The message to present when a source object is attempted to be attached to a - // target part which is not allowed for this. This message is shown when the source - // object can only attach to a very specific set of the vessel's part (e.g. during - // the re-docking). - // Argument <<1>> is the name of the target part. - #kisLOC_03007 = 无法安装到部件: <<1>> - // The message to present when a 'change attach node' action is requested, but the - // source part has only one node - #kisLOC_03008 = 该部件只有一个连接柱 - - // ********** Type: KIS.ModuleKISInventory, KSPDev Messages - - // The message to present when 'use' key is pressed, but no item is equipped in the - // right hand of the EVA kerbal. - #kisLOC_00000 = 由于没有装备,不能使用装备的物品 - // The message to present when EVA kerbal enters a pod which doesn't have KIS - // inventory. - #kisLOC_00001 = <<1>>舱没有足够的空间 - // The message to present when EVA kerbal tries to put into inventory an assembly of - // multiple parts. - // Argument <<1>> is the number of the children parts atatched to the part being - // dragged. - #kisLOC_00002 = 不能将一个组建放入仓库,该组建有<<1>>个安装部件 - // The message to present when an item being dragged into an inventory whichdoesn't - // have enough free space. - // Argument <<1>> is a value of type VolumeLType which specifies the volume which is - // attempted to be moved. - // Argument <<2>> is a value of type VolumeLType which specifies the exceeding - // volume over the max inventory capacity. - #kisLOC_00003 = 当前仓库最大容积为: <<1>> , 超出 <<2>> - // The message to present when a storage, which is being carried on a back of an EVA - // kerbal, is attempted to be accessed. - #kisLOC_00004 = 无法在携带仓库时进行访问! - // The message to present when an inventory which cannot be accessed from EVA is - // attempted to be opened by an EVA kerbal. - #kisLOC_00005 = 这个仓库无法从外部访问! - // The message to present when an inventory which cannot be accessed from inside the - // vessel is attempted to be accessed while the active vessel is no an EVA kerbal. - #kisLOC_00006 = 这个仓库无法从内部访问 - // The message to present when a split action is attempted on the the inventory, but - // there are no empty slots available to fit the new pack. - #kisLOC_00009 = 仓库/背包已满, 无法拆分 - // The message to present when an item, designed to be carried by an EVA kerbal, is - // attempted to be put into a pod's seat inventory. - #kisLOC_00010 = 背包中无法存储该物品 - // The message to present when an item is attempted to be placed on an EVA kerbal, - // but there is another item already being carried. - #kisLOC_00011 = 已经装备相同部位的物品 - // The text to show in an inventory window in the editor to highlight the fact that - // the items added there will only be availabe in the flight if the seat is occupied - // at the launch. - #kisLOC_00012 = 这是航天员的背包 - // The name of the context menu item that removes kerbal's helmet if the environment - // conditions allow it. - #kisLOC_00013 = 取下头盔 - // The name of the context menu item that pust the kerbal's helmet back. - #kisLOC_00014 = 带上头盔 - // The title of the window that represents an open pod's inventory in the editor. - // Argument <<1>> is a name of the part that holds the inventory. - // Argument <<2>> is a number of the seat to which the inventory belongs. - #kisLOC_00015 = <<1>> | 乘员: <<2>> 背包 - // The title of the window that represents an open kerbal's inventory. - // Argument <<1>> is a name of the part that holds the inventory. - // Argument <<2>> is a name of the kerbal. - #kisLOC_00016 = <<1>> | <<2>> - // The title of the window that represents an open parts's inventory in the flight. - // This title is only used when the inventory has a custom name. - // Argument <<1>> is a name of the part that holds the inventory. - // Argument <<2>> is a custom name of the inventory. - #kisLOC_00017 = <<1>> | <<2>> - // The title of the window that represents a context menu for a specific item in the - // inventory. - #kisLOC_00019 = 操作项: - // The caption of the button that accepts the changed inventory name. This button is - // vary narrow, so keep the text as short as possible. - #kisLOC_00020 = 确定 - // The caption of the button that shows an input field to enter a custom name for an - // inventory. - #kisLOC_00021 = 备注 - // The caption of the button that closes the opened inventory dialog. - #kisLOC_00022 = 关闭 - // The caption of the button that triggers the uneqip action on the item in the - // inventory. The button is shown in a context menu of the selected item. - #kisLOC_00023 = 脱下 - // The caption of the button that triggers the eqip action on the item in the - // inventory. The button is shown in a context menu of the selected item. - #kisLOC_00024 = 装备 - // The caption of the button that triggers the drop action on the item in the - // inventory. The button is shown in a context menu of the selected item. - #kisLOC_00025 = 丢弃 - // The caption of the button that extracts the specified number of items from the - // selected inventory slot, and moves them into a new slot. - // Argument <<1>> is the number of items to extract. - #kisLOC_00026 = 拆分 (<<1>>) - // The text to show in the context menu of the selected inventory item that tells - // how many items are in the slot. - // Argument <<1>> is the number of items in the slot. - #kisLOC_00027 = 数量: <<1>> - // The text to show in the context menu of the selected inventory item that tells - // that no actions can be done on the item(s) in the slot. - #kisLOC_00028 = 无可执行操作 - // The name of the part's menu item that opens the inventory for a pod's seat. - // Argument <<1>> is the number of seat. - #kisLOC_00029 = 乘员: <<1>> 背包 - // The name of the part's menu item that opens the inventory of a specific kerbal. - // Argument <<1>> is the first name of the kerbal. - #kisLOC_00030 = 乘员: <<1>> 背包 - // The name of the part's menu item that opens the associated inventory. The "part" - // can be a kerbal. - #kisLOC_00031 = 打开仓库 - // The name of the part's menu item that opens the associated inventory with a - // custom name. The "part" can be a kerbal. - // Argument <<1>> is a custom name of the inventory. - #kisLOC_00032 = 关闭仓库 | <<1>> - // The text to display in the inventory slot background to tell if the item is being - // carried by the kerbal. - #kisLOC_00033 = 携带中 - // The text to display in the inventory slot background to tell if the item is being - // equipped by the kerbal. - #kisLOC_00034 = 装备. - // The text to display in the inventory slot background to identify it. - // Argument <<1>> is the number of the slot. - #kisLOC_00035 = <<1>> - // The text to display in the inventory slot background to tell ho many items are - // stacked. - // Argument <<1>> is the number of the items in the slot. - #kisLOC_00036 = x<<1>> - // The volume stat of the iventory in the main inventory window. - // Argument <<1>> is the occupied volume of the inventory of type VolumeLType. - // Argument <<2>> is the maximum volume of the inventory of type VolumeLType. - #kisLOC_00037 = 当前容积: <<1>> / <<2>> - // The total part mass in the main inventory window. It includes the combined mass - // of all the items in the inventory. - // Argument <<1>> is the total mass of type MassType. - #kisLOC_00038 = 当前质量: <<1>> - // The total part cost in the main inventory window. It includes the combined cost - // of all the items in the inventory. - // Argument <<1>> is the total cost of type CostType. - #kisLOC_00039 = 当前成本: <<1>> - // The volume of a single item in the inventory slot. It's presented in a tooltip - // window. - // Argument <<1>> is the volume of type VolumeLType. - #kisLOC_00040 = 容积: <<1>> - // The mass of a single item in the inventory slot without the resources or the - // contents. It's presented in a tooltip window. - // Argument <<1>> is the mass of type MassType. - #kisLOC_00041 = 净质量: <<1>> - // The mass of the resources in a single item in the inventory slot. It's presented - // in a tooltip window. - // Argument <<1>> is the mass of type MassType. - #kisLOC_00042 = 燃料质量: <<1>> - // The cost of a single item in the inventory slot including the cost of the - // resources. It's presented in a tooltip window. - // Argument <<1>> is the cost of type CostType. - #kisLOC_00043 = 成本: <<1>> - // The cost of the contents of a single item in the inventory slot. It's presented - // in a tooltip window. - // Argument <<1>> is the cost of type CostType. - #kisLOC_00044 = 物品质量: <<1>> - // The mass of the contents of a single item in the inventory slot. It's presented - // in a tooltip window. - // Argument <<1>> is the mass of type MassType. - #kisLOC_00045 = 物品质量: <<1>> - // The total cost of the items in the inventory slot. It's presented in a tooltip - // window. - // Argument <<1>> is the cost of type CostType. - #kisLOC_00046 = 总成本: <<1>> - // The total volume of the items in the inventory slot. It's presented in a tooltip - // window. - // Argument <<1>> is the volume of type VolumeLType. - #kisLOC_00047 = 总容积: <<1>> - // The total mass of the items in the inventory slot. It's presented in a tooltip - // window. - // Argument <<1>> is the mass of type MassType. - #kisLOC_00048 = 总质量: <<1>> - // The message to present in the tooltip window when the item has no resources. - #kisLOC_00049 = 该部件没有任何资源 - // The information for the key that activates the equipped item. It's presented in a - // tooltip window. - // Argument <<1>> is the string name of the key as set in the settings file. - #kisLOC_00051 = 按下 [<<1>>] 使用物品(装备) - // The template to present the resources reserve in the item. It's presented in a - // tooltip window. - // Argument <<1>> is the resource name of type ResourceType. - // Argument <<2>> is the current reserve of the resource. - // Argument <<3>> is the maximum amount of the resource. - #kisLOC_00052 = <<1>>: <<2>> / <<3>> - // The template to present the science data stored in the item. It's presented in a - // tooltip window. - // Argument <<1>> is the science title. - // Argument <<2>> is the science data amount. - // Argument <<3>> is the value of the science data. - #kisLOC_00053 = <<1>> (数据大小=<<2>>, 数据价值=<<3>>) - // The message to present in the tooltip window when the item has no science data. - #kisLOC_00054 = 该部件没有科学数据 - // The title of the module to present in the editor details window. - #kisLOC_00055 = 仓库 - // The info string in the editor for the maximum allowed volume of the inventory. - // Argument <<1>> is the voulme of type VolumeLType - #kisLOC_00056 = 最大容积: <<1>> - // The info string in the editor to present if kerbals can access the items in the - // inventory when staying inside the vessel. - #kisLOC_00057 = 支持舱内访问 - // The info string in the editor to present if kerbals cannot access the items in - // the inventory when staying inside the vessel. - #kisLOC_00058 = 不支持舱内访问 - // The info string in the editor to present if kerbals can access the items in the - // inventory when going EVA. - #kisLOC_00059 = 支持外部(EVA)访问 - // The info string in the editor to present if kerbals cannot access the items in - // the inventory when going EVA. - #kisLOC_00060 = 不支持外部(EVA)访问 - - // ********** Type: KIS.ModuleKISItem, KSPDev Messages - - // The title of the module to present in the editor details window. - #kisLOC_06000 = EVA装备-通用物品 - // The info string to show in the editor to state that the item can be equipped on - // the kerbal at the designated equip slot. - // Argument <<1>> is a the slot name. - #kisLOC_06001 = 装备部位: <<1>> - // The info string to show in the editor to state that the item can be carried by - // the kerbal at the designated equip slot. - // Argument <<1>> is a the slot name. - #kisLOC_06002 = 装备部位: <<1>> - // The name for the left hand equip slot. - #kisLOC_06003 = 左手 - // The name for the right hand equip slot. - #kisLOC_06004 = 右手 - // The name for the jetpack equip slot. - #kisLOC_06005 = 喷气背包 - // The name for the eye equip slot. - #kisLOC_06006 = 眼部 - // The name for the helmet equip slot. - #kisLOC_06007 = 头部 - // The info string to show in the editor to state that the item can be attached to - // another part without a need of any attach tool. - #kisLOC_06008 = 安装到该部件表面无需工具 - // The info string to show in the editor to state that the item CANNOT be attached - // to another part. - #kisLOC_06009 = 该部件表面无法安装任何部件 - // The info string to show in the editor to state that the item can be attached to - // the surface without a need of any attach tool. - #kisLOC_06010 = 该部件安装到地表无需工具 - // The info string to show in the editor to state that the item can be attached to - // the surface, but the appropriate tool will be needed. - #kisLOC_06011 = 该部件需要工具才能安装到其他部件的表面 - // The info string to show in the editor to specify with what force the part will be - // attached to the surface (if such attachment is allowed). - #kisLOC_06012 = 表面安装强度: <<1>> - // The info string to show in the editor to state that the item can be carried by - // the kerbal. I.e. it attaches on the kerbal's model and doesn't take space in the - // personal inventory. - #kisLOC_06013 = 由航天员携带 - // The info string to show in the editor to state that the item can be eqipped by - // the kerbal. I.e. it attaches on the kerbal's model and reacts to the 'use' - // hotkey. - #kisLOC_06014 = 可装备物品 - - // ********** Type: KIS.ModuleKISItemAttachTool, KSPDev Messages - - // The title of the module to present in the editor details window. - #kisLOC_04000 = EVA装备-安装工具 - // The info message to present in the editor's details window to denote that this - // tool can attach parts at the stack nodes. - #kisLOC_04001 = 该部件可以安装到连接柱 - // The info message to present in the editor's details window to denote that this - // tool can attach the parts at the surface of another part, but not at the stack - // nodes. - #kisLOC_04002 = 这个工具只能将部件安装到其他部件的表面,不能安装到连接柱上 - - // ********** Type: KIS.ModuleKISItemBomb, KSP Events - - // The name of the context menu item to activate the bomb. - #kisLOC_05009 = 激活 - // The name of the context menu item to open the bomb GUI setup window. - #kisLOC_05010 = 安放 - - // ********** Type: KIS.ModuleKISItemBomb, KSPDev Messages - - // The title of the module to present in the editor details window. - #kisLOC_05000 = EVA装备-爆破物品 - // The info message to present in the editor's details window for the maximum radius - // of explosion of the bomb. - // Argument <<1>> is the radius. Format: DistanceType. - #kisLOC_05001 = 最大爆炸半径: <<1>> - // The title of the GUI window to setup the bomb. - #kisLOC_05002 = 爆炸设置 - // The GUI section title for settig up the explosion timer. - #kisLOC_05003 = 计时器 - // The string that displays number of seconds till the bomb trigger. - #kisLOC_05004 = <<1>> s - // The GUI section title for settig up the explosion area. - #kisLOC_05005 = 爆炸半径 - // The string that displays current setting of the explosion radius. - // Argument <<1>> is the current radius. Format: DistanceType. - // Argument <<2>> is the maximum allowed radius for the part. Format: DistanceType. - #kisLOC_05006 = 当前爆炸点半径为 <<1>> 最大爆炸半径为 <<2>> - // The caption on the button that starts the timer. It cannot be stopped! - #kisLOC_05007 = 激活 (激活后无法撤销) - // The caption on the button that closes the setup menu without starting the timer - #kisLOC_05008 = 关闭 - // The mesasge to display when the bomb is activated. It's show nonly once and - // doesn't update as the bomb is ticking. - // Argument <<1>> is the timer setting in seconds. - #kisLOC_05011 = 你现在还有 <<1>> 秒用来逃跑! - - // ********** Type: KIS.ModuleKISItemBook, KSPDev Messages - - // The title of the module to present in the editor details window. - #kisLOC_07000 = EVA装备-产品说明 - // The info message to present in the editor's details window to designate the fact - // that this item is for the learning purposes only. - #kisLOC_07001 = 通用读物 - // The title for the window that shows the guide pages. - #kisLOC_07002 = 阅读 - // The caption on the button that navigates to the previous page. - #kisLOC_07003 = 上一页 - // The caption on the button that navigates to the next page. - #kisLOC_07004 = 下一页 - // The caption on the button that closes the guide window. - #kisLOC_07005 = 关闭 - // The string in the reader window that displays the current page number. - // Argument <<1>> is the number of the current page. - // Argument <<2>> is the total number of the pages. - #kisLOC_07006 = 当前页数 <<1>> / <<2>> - - // ********** Type: KIS.ModuleKISItemEvaPropellant, KSPDev Messages - - // The message to present when the jetpack is attempted to be refilled, but its' - // already full. - #kisLOC_08000 = 喷气背包燃料是满的,无需补充燃料. - // The message to present when the EVA kerbals has attempted to refill the jetpack, - // but the tank is empty. - #kisLOC_08001 = 该燃料罐是空的,无法为喷气背包补充燃料 - // The message to present when a non-full tank has successfully refilled from the - // pod's resource. - #kisLOC_08002 = 燃料罐已重新从飞船得到补充. - // The message to present when the EVA kerbals has attempted to refill the jetpack, - // but the tank didn't have enough fuel to fill the jetpack to full. - #kisLOC_08003 = 没有足够的燃料,喷气背包燃料只得到部分补充 - // The message to present when the EVA kerbals has attempted to refill the jetpack, - // and the jetpack has successfully refilled to full. - #kisLOC_08004 = 喷气背包燃料已补满 - - // ********** Type: KIS.ModuleKISItemSoundPlayer, KSPDev Messages - - // The name of the context menu item to start the playback. - #kisLOC_09000 = 播放 - // The name of the context menu item to stop the playback. - #kisLOC_09001 = 停止 - - // ********** Type: KIS.ModuleKISPartMount, KSP Actions - - // The name of the action to release the mounted part. - #kisLOC_10001 = 拆卸 - - // ********** Type: KIS.ModuleKISPartMount, KSP Events - - // The name of the context menu item to release the mounted part. - #kisLOC_10000 = 拆卸 + #kasLOC_13003 = 已对接 + // A message to display when a link between the part and the connector has broke due + // to the unexpected external forces or actions. + #kasLOC_13004 = 接头和零件之间的连接已断开 + // The error message to present when a part is being attached externally to the + // source's attach node, and it's not a valid link target for the source. + // Argument <<1>> is the name of the part being attached. + #kasLOC_13005 = 无法连接到: <<1>> + + // ********** Type: KAS.KASLinkTargetBase, KSPDev Messages + + // Info string in the editor for the link type setting. + // Argument <<1>> is the type string from the part's config. + #kasLOC_03000 = 接受连接类型: <<1>> + // Title of the module to present in the editor details window. + #kasLOC_03001 = KAS 接头 目标 + + // ********** Type: KAS.KASLinkTargetKerbal, KSP Events + + // A context menu item that picks up the cable connector in range. + #kasLOC_10000 = 捡起接头 + + // ********** Type: KAS.KASLinkTargetKerbal, KSPDev Messages + + // A hint string, instructing what to press in order to drop the currently + // carriedcable connector. + // Argument <<1>> is the current key binding of type KeyboardEventType. + // Example usage: + // To drop the connector press: [Ctrl+Y] + #kasLOC_100001 = 要卸下接头,请按: [<<1>>] + // A hint string, instructing what to press in order to pickup a cable + // connectorwhich is currently in range. + // Argument <<1>> is the current key binding of typeKeyboardEventType. + // Example usage: + // [Y]: Pickup connector + #kasLOC_100002 = [<<1>>]: 捡起接头 + // Context menu item that appear on the target part and transfers the EVA carried + // connector to it. + #kasLOC_10003 = 连接接头 + + // ********** Type: KAS.KASLinkWinch, KSP Actions + + // Name of the action that starts the cable extending. + #kasLOC_08015 = 伸长缆绳 + // Name of the action that starts the cable retracting. + #kasLOC_08016 = 收回缆绳 + // Name of the action that stops the motor. + #kasLOC_08017 = 停止电机 + // name of the action that sets the cable length to the maximum, and unlocks the + // connector if it was locked. + #kasLOC_08018 = 释放缆绳 + + // ********** Type: KAS.KASLinkWinch, KSP Events + + // A context menu item that opens the remote control GUI to operate the winches in + // the scene. + #kasLOC_08010 = 打开绞盘界面 + // A context menu item that sets the cable length to the maximum, and unlocks the + // connector if it was locked. + #kasLOC_08011 = 释放缆绳 + // A context menu event that sets the cable length to the current distance to the + // connector. + #kasLOC_08012 = 回收多余 + + // ********** Type: KAS.KASLinkWinch, KSP Fields + + // A context menu item that presents the length of the currently deployed cable. + #kasLOC_08009 = 展开缆绳长度 + + // ********** Type: KAS.KASLinkWinch, KSPDev Messages + + // Error message to present when the electricity charge has exhausted. + #kasLOC_08000 = 没有能源! + // Error message to present when an improperly aligned cable connector has attempted + // to lock with the winch. + #kasLOC_08001 = 无法锁定接头:未对齐 + // Info message to present when a cable connector has successfully locked to the + // winch. + #kasLOC_08002 = 接头已锁定! + // Info message to present when a cable connector has successfully docked to the + // winch. + #kasLOC_08003 = 连接到绞车的接头 + // An info message to present when the cable is extended at its maximum length. + // Argument <<1>> is the current cable length of type DistanceType. + // Example usage: + // Maximum cable length reached: 1.23 m + #kasLOC_08004 = 已达到最大缆绳长度: <<1>> + // Name of the context menu item that stops the cable extending. + #kasLOC_08005 = 停止伸长 + // Name of the context menu item that starts the cable extending. + #kasLOC_08006 = 伸长缆绳 + // Name of the context menu item that stops the cable retracting. + #kasLOC_08007 = 停止收回 + // Name of the context menu item that starts the cable retracting. + #kasLOC_08008 = 收回缆绳 + // Title of the module to present in the editor details window. + #kasLOC_08013 = KAS 绞盘 + // Info string that tells how fast the winch can extend or retract the cable. + // Argument <<1>> is the speed of type VelocityType. + #kasLOC_08014 = 最大电机转速: <<1>> + + // ********** Type: KAS.KASRendererTelescopicPipe, KSP Events + + // A context menu item that expands a non-linked telescopic pipe to its maximum + // length. + #kasLOC_04002 = 伸长到最大值 + // A context menu item that shrinks a non-linked telescopic pipe to its minimum + // length. + #kasLOC_04003 = 收回至最小值 + + // ********** Type: KAS.KASRendererTelescopicPipe, KSPDev Messages + + // Message to display when the link cannot be created due to an obstacle. + // Argument <<1>> is the part that would collide with the proposed link. + // Example usage: + // Link collides with: Mk2 Cockpit + #kasLOC_04000 = 连接与以下对象冲突: <<1>> + // Message to display when the link strut orientation cannot be changed due to it + // would hit the surface. + #kasLOC_04001 = 连接与表面冲突 + + // ********** Global strings + + // Small strut link type. + #kasLOC_99000 = 管道-40 + // Small cable link type. + #kasLOC_99001 = 缆绳-10 + // Small hose link type. + #kasLOC_99002 = 软管-30 + // Medium strut link type. + #kasLOC_99003 = 管道-100 + // Medium cable link type. + #kasLOC_99004 = 缆绳-35 + // Medium hose link type. + #kasLOC_99005 = 软管-70 + // Large strut link type. + #kasLOC_99006 = 管道-150 + // Large cable link type. + #kasLOC_99007 = 缆绳-60 + // Large hose link type. + #kasLOC_99008 = 软管-100 + + // KAS parts filter in the editor. + #kasLOC_99009 = 坎巴拉附件系统 } } From 69ed8f98290156e87fc31c3163d9b4202fcdb50d Mon Sep 17 00:00:00 2001 From: fackman <41724374+fackman@users.noreply.github.com> Date: Sun, 30 Jun 2019 11:53:42 +0800 Subject: [PATCH 03/15] Delete zh-cn.cfg --- Lang/zh-cn.cfg | 618 ------------------------------------------------- 1 file changed, 618 deletions(-) delete mode 100644 Lang/zh-cn.cfg diff --git a/Lang/zh-cn.cfg b/Lang/zh-cn.cfg deleted file mode 100644 index b64ae500..00000000 --- a/Lang/zh-cn.cfg +++ /dev/null @@ -1,618 +0,0 @@ -// Version: 1 (2019-06-28) -//Author:facther -Localization -{ - zh-cn - { - - // ********** Part: KAS.CH1 - - #KAS_CH1_Part_title = CH-1 缆绳挂钩 - #KAS_CH1_Part_manufacturer = KAS Labs, Inc. - #KAS_CH1_Part_description = 可以将缆绳挂在上面的钩子。这是“把这些东西放在一起”解决方案的另一半。 - #KAS_CH1_Part_tags = KIS KAS cable rope tie cck-kas - - // ********** Part: KAS.JS1 - - #KAS_JS1_Part_title = JS-1 连接基座 - #KAS_JS1_Part_manufacturer = KAS Labs, Inc. - #KAS_JS1_Part_description = 这个多用途的基座有多种功能:它允许牢固的连接,并提供资源传输!安装此插座需要一名具有多年经验的认证工程师,但一旦安装,即使是清洁工也可以使用它来连接容器。 - #KAS_JS1_Part_tags = KIS KAS pipe tube cck-kas - - // ********** Part: KAS.PCB1 - - #KAS_PCB1_Part_title = PCB-1 便携缆绳绞盘 - #KAS_PCB1_Part_manufacturer = KAS Labs, Inc. - #KAS_PCB1_Part_description = 这是一个带有一根钢丝绳的简单的手动绞盘,只要相距不太远就可以连接东西。 但是,另一个容器上必须有一个挂钩,用于连接缆绳,因此这种绞盘只解决了一半的问题。 - #KAS_PCB1_Part_tags = KIS KAS cable rope tie cck-kas - #KAS_PCB1_Part_LinkBreak = 断开连接 - #KAS_PCB1_Part_LinkStart = 连接 - - // ********** Part: KAS.PortPylon - - #KAS_PortPylon_Part_title = GP-20 塔架 - #KAS_PortPylon_Part_manufacturer = KAS Labs, Inc. - #KAS_PortPylon_Part_description = 我们的RTS-1产品线非常成功!不过,也有一些问题,事实证明,有时管道不够长!为了解决这个问题,我们开发了一个新的部件:一个带有连接基座的轻型塔架,它可以充当扩展器。因此,长距离资源传输是可行的,尽管可能需要建造额外的塔架。杰布真的想在中空的内部增加一个科巴可乐冰箱,但由于严格的20公斤的质量限制,研发部不得不拒绝他的建议。 - #KAS_PortPylon_Part_tags = KAS resource fuel transfer cck-kas - - // ********** Part: KAS.PortPylonPwr - - #KAS_PortPylonPwr_Part_title = BGP-400 增强版塔架 - #KAS_PortPylonPwr_Part_manufacturer = KAS Labs, Inc. - #KAS_PortPylonPwr_Part_description = 这个部件的设计灵感来自于GP-20。我们的工程师想知道:塔架的内部容积真的能被利用吗?结果证明是可以的!因此,他们决定给它装上一些Z-100电池和一个简单的控制模块。 它不像杰巴所要求的那个酷酷的科巴可乐冰箱,但它仍然非常实用。请放心,所用电池的质量是最好的,而不是从回收站回收的。 - #KAS_PortPylonPwr_Part_tags = KAS resource fuel transfer cck-kas - - // ********** Part: KAS.RTS1 - - #KAS_RTS1_Part_title = RTS-1 资源传输管道绞盘 - #KAS_RTS1_Part_manufacturer = KAS Labs, Inc. - #KAS_RTS1_Part_description = 该管道可以在飞船之间转移资源。 直径并没有那么大,但正如一个小绿家伙曾经说过的,“大小无关紧要。” 我们的专利技术允许通过它传输任何数量的东西,包括但不限于:岩石,燃料,零食,甚至是坎巴拉人。在后一种情况下,保修无效。 - #KAS_RTS1_Part_tags = KIS KAS resource fuel transfer cck-kas - - // ********** Part: KAS.TB60 - - #KAS_TB60_Part_title = TB-60 牵引杆 - #KAS_TB60_Part_manufacturer = KAS Labs, Inc. - #KAS_TB60_Part_description = 这是一种拖曳一艘不能自行移动的飞船的解决方案。如果使用一根简易的绳索,那么被牵引的飞船在刹车或操纵时可能会撞击牵引船,但使用牵引杆时就不会发生这种情况。此外,当条件符合时,它还可以操纵被拖飞船。一定要保证电量充足,否则主动转向将不起作用。 - #KAS_TB60_Part_tags = KIS KAS pipe tube tow towbar cck-kas - #KAS_TB60_Part_LinkBreak = 断开连接 - #KAS_TB60_Part_LinkStart = 连接 - #KAS_TB60_Part_Park_Forward = 固定方向:90° - #KAS_TB60_Part_Park_Up = 固定方向:0° - - // ********** Part: KAS.TJ1 - - #KAS_TJ1_Part_title = TJ-1 固定伸缩杆 - #KAS_TJ1_Part_manufacturer = KAS Labs, Inc. - #KAS_TJ1_Part_description = 这种简单的伸缩式杆可以牢固地连接两个容器。 最大连接距离比较短,但其强度足够。 设计的灵感来自Jeb在二手商店购买的自拍杆。 - #KAS_TJ1_Part_tags = KIS KAS pipe tube cck-kas - #KAS_TJ1_Part_LinkBreak = 断开连接 - #KAS_TJ1_Part_LinkStart = 连接 - #KAS_TJ1_Part_Park_Down = 固定方向:180° - #KAS_TJ1_Part_Park_Forward = 固定方向:90° - #KAS_TJ1_Part_Park_Up = 固定方向:0° - - // ********** Part: KAS.TJ2 - - #KAS_TJ2_Part_title = TJ-2 自由伸缩杆 - #KAS_TJ2_Part_manufacturer = KAS Labs, Inc. - #KAS_TJ2_Part_description = 除了铰链是解锁的,和TJ-1“自拍棒”相同。真正的最佳解决方案是保持联系船只相互分散,但也不过度限制其运动。 - #KAS_TJ2_Part_tags = KIS KAS pipe tube cck-kas - #KAS_TJ2_Part_LinkBreak = 断开连接 - #KAS_TJ2_Part_LinkStart = 连接 - #KAS_TJ2_Part_Park_Down = 固定方向:180° - #KAS_TJ2_Part_Park_Forward =固定方向:90° - #KAS_TJ2_Part_Park_Up = Park:固定方向:0° - - // ********** Part: KAS.W1 - - #KAS_W1_Part_title = W-50 绞盘 - #KAS_W1_Part_manufacturer = KAS Labs, Inc. - #KAS_W1_Part_description = 一位古老的圣人曾经说过:“给我一个正确的基座和绞盘,我能拉动Kerbin”。 这种绞盘并不是那么强大,尽管它可以抬起或牵引一艘相当庞大的飞船。 请确保目标飞船上有兼容的基座。 此外,确保飞船上有足够的电力:绞盘很费电! - #KAS_W1_Part_tags = KIS KAS winch cable connector cck-kas - - // ********** Part: KAS.W2 - - #KAS_W2_Part_title = HW-80 绞盘 - #KAS_W2_Part_manufacturer = KAS Labs, Inc. - #KAS_W2_Part_description = W-50绞车型号的重型版本。它有额外的电缆和增强的连接强度。然而,它仍然不能拉动Kerbin。注意:如果绞车用于绞车开关,则保修无效,无论是哪个绞车还是哪个开关。 - #KAS_W2_Part_tags = KIS KAS winch cable connector heavyduty cck-kas - - // ********** Type: KAS.AbstractJoint, KSPDev Messages - - // Message to display when the link cannot be established because it's too short. - // Argument <<1>> is the current link length of type DistanceType. - // Argument <<2>> is the part's config setting of type DistanceType. - // Example usage: - // Link is too short: 1.22 m < 2.33 m - #kasLOC_00000 = 连接太短: <<1>> < <<2>> - // Message to display when the link cannot be established because it's too long. - // Argument <<1>> is the current link length of type DistanceType. - // Argument <<2>> is the part's config setting of type DistanceType. - // Example usage: - // Link is too long: 2.33 m > 1.22 m - #kasLOC_00001 = 连接太长: <<1>> > <<2>> - // Message to display when the link cannot be established because the maximum angle - // between the link vector and the joint normal at the SOURCE part is to big. - // Argument <<1>> is the current link angle of type AngleType. - // Argument <<2>> is the part's config setting of type AngleType. - // Example usage: - // Source angle limit reached: 3° > 2.5° - #kasLOC_00002 = 达到源角度限制: <<1>> > <<2>> - // Message to display when the link cannot be established because the maximum angle - // between the link vector and the joint normal at the TARGET part is to big. - // Argument <<1>> is the current link angle of type AngleType. - // Argument <<2>> is the part's config setting of type AngleType. - // Example usage: - // Target angle limit reached: 3° > 2.5° - #kasLOC_00003 = 达到目标角度限制: <<1>> > <<2>> - // Info string in the editor for the link break force setting. The argument is of - // type ForceType. - // Example usage: - // Link break force: 1.2 kN - #kasLOC_00004 = 连接断开力度: <<1>> - // Info string in the editor for the link break torque setting. The argument is of - // type ForceType. - // Example usage: - // Link torque force: 1.2 kN - #kasLOC_00005 = 连杆扭矩: <<1>> - // Info string in the editor for the minimum link length setting. - // Argument <<1>> is the part's config setting of type DistanceType. - // Example usage: - // Minimum link length: 1.22 m - #kasLOC_00006 = Minimum link length: <<1>> - // Info string in the editor for the maximum link length setting. - // Argument <<1>> is the part's config setting of type DistanceType. - // Example usage: - // Maximum link length: 1.22 m - #kasLOC_00007 = 最小连接长度:<<1>> - // Info string in the editor for the maximum allowed angle at the source. - // Argument <<1>> is the part's config setting of type AngleType. - // Example usage: - // Source angle limit: 1.2° - #kasLOC_00008 = 源角限制: <<1>> - // Info string in the editor for the maximum allowed angle at the target. - // Argument <<1>> is the part's config setting of type AngleType. - // Example usage: - // Target angle limit: 1.2° - #kasLOC_00009 = 目标角度限制: <<1>> - // Title of the module to present in the editor details window. - #kasLOC_00010 = KAS接头 - - // ********** Type: KAS.AbstractPipeRenderer, KSPDev Messages - - // Message to display when the link cannot be created due to an obstacle. - // Argument <<1>> is the part that would collide with the proposed link. - // Example usage: - // Link collides with: Mk2 Cockpit - #kasLOC_07000 = 连接与以下对象冲突: <<1>> - // Message to display when the link strut orientation cannot be changed due to it - // would hit the surface. - #kasLOC_07001 = 连接与表面冲突 - - // ********** Type: KAS.ControllerWinchRemote, KSPDev Messages - - // The title of the remote control dialog. It also gives a hint on the keyboard - // sequence that brings the GUI up. - // Argument <<1>> is the keyboard even of type KeyboardEventType. - #kasLOC_11000 = 绞盘远程控制 (<<1>>) - // The caption of the button that triggers cable release. - #kasLOC_11001 = 松开 - // The GUI hint to explain the effect of the release button. - #kasLOC_11002 = 松开接头并将缆绳并将长度设置为最大值 - // The caption of the button that stretches teeh cable. - #kasLOC_11003 = 弹性 - // The GUI hint to explain the effect of the stretch button. - #kasLOC_11004 = 将缆绳长度设置为“拉伸”按钮的实际距离。 - // The caption of the button that deatches the cable from the target. - #kasLOC_11005 = 断开 - // The GUI hint to explain the effect of the detach button. - #kasLOC_11006 = 从目标部件上断开缆绳 - // The caption of the button that closes the GUI dialog. - #kasLOC_11007 = 关闭 - // The GUI hint to explain the effect of the close button. - #kasLOC_11008 = 关闭 - // The caption for the toggle control (button style) which tells if the winch should - // be highlighted in the scene. It's better keep the text as short as possible. - #kasLOC_11009 = H - // The GUI hint to explain the effect of toggling the control. - #kasLOC_11010 = 高亮绞盘 - // The text for the winch status in which it cannot be remotely operated for any - // reason. - #kasLOC_11011 = 未连接 - // The GUI hint to explain the OFFLINE state. - #kasLOC_11012 = 无法和绞盘联络。飞船是可控的吗? - // The text for the winch status that tells that the main winch attach node is - // occupied by an incompatible (non-KAS) part. - #kasLOC_11013 = 被阻挡 - // The GUI hint to explain the BLOCKED state. - #kasLOC_11014 = 绞盘连接节点被另一个部件阻挡 - // The text for the winch status that tells that the cable connector is locked to - // the winch, and the cable length is zero. - #kasLOC_11015 = 回收 - // The GUI hint to explain the RETRACTED state. - #kasLOC_11016 = 接头被锁定在绞盘中。 - // The GUI hint of the button that triggers retracting of the cable. The cable will - // be retracting until the motor status is changed or the connector get locked. - #kasLOC_11017 = 开始收回缆绳 - // The GUI hint of the button that triggers deploying of the cable. The cable will - // be deploying until the motor status is changed. - #kasLOC_11018 = 开始延长缆绳 - // The GUI hint of the button that retracts the cable. The cable will be retracting - // as long as the button is pressed. - #kasLOC_11019 = 收回缆绳 - // The GUI hint of the button that extends the cable. The cable will be extending as - // long as the button is pressed. - #kasLOC_11020 = 延长缆绳 - // The GUI hint to show for the control that changes the motor speed. It's the - // maximum speed which the motor can reach when retracting or extending the cable. - #kasLOC_11021 = 电机速度设置 - // The GUI hint to show for the area which displays two values: the deployed cable - // length and the real distance between the winch and the target (connector or - // part). The values are presented as a pair, separated by symbol '/'. - #kasLOC_11022 = 缆绳的展开/实际长度 - // The GUI hint to show for the area which displays two values: the current motro - // speed and the maximum possible motor speed. The values are presented as a pair, - // separated by symbol '/'. - #kasLOC_11023 = 当前电机转速/电机转速设置 - // The string to present when the dialog is opened, but no KAS winches found in the - // scene. - #kasLOC_11024 = 未发现绞盘! - // The formatter string for the cable lengths when the cable is *not* under strain. - // I.e. its actual length is not greater than the winch allows. - // Argument <<1>> is the length, allowed by the winch of type DistanceType. - // Argument <<1>> is the real cable length of type DistanceType. - #kasLOC_11025 = <<1>> / <<2>> - // The formatter string for the cable lengths when the cable *is* under strain. I.e. - // its actual length is greater than the winch allows. - // Argument <<1>> is the length, allowed by the winch of type DistanceType. - // Argument <<2>> is the real cable length of type DistanceType. - #kasLOC_11026 = <<1>> / <<2>> - // The formatter string for the winch motor speed. - // Argument <<1>> is the current motor speed type VelocityType. - // Argument <<2>> is the settings for the desired motor speed of type VelocityType. - #kasLOC_11027 = <<1>> / <<2>> - - // ********** Type: KAS.KASJointCableBase, KSPDev Messages - - // Info string in the editor for the cable spring force setting. - // Argument <<1>> is the force of type ForceType. - // Example usage: - // Spring force: 1.2 kN - #kasLOC_09000 = 弹力: <<1>> - // Title of the module to present in the editor details window. - #kasLOC_09001 = KAS 缆绳 - - // ********** Type: KAS.KASJointTowBar, KSP Events - - // A context menu event that starts the locking process on a linked vessel. - #kasLOC_05014 = 开始锁定 - // A context menu event that disables the locking of the tow bar joints and turns - // off the active steering mode. - #kasLOC_05015 = 解锁接头 - // A context menu event that enables the active steering mode. - #kasLOC_05016 = 启用主动转向 - // A context menu event that disables the active steering mode. - #kasLOC_05017 = 关闭主动转向 - - // ********** Type: KAS.KASJointTowBar, KSP Fields - - // A context menu item that displays the current status of the bar locking. - #kasLOC_05010 = 锁定状态 - // A context menu item that displays the current steering status. - #kasLOC_05011 = 转向状态 - // A context menu item that displays and allows changing the strength of the - // steering commands, that the tow bar sends to the linked vessel. - #kasLOC_05012 = 转向灵敏度 - // A context menu item that displays and allows changing the direction of the - // steering commands. - #kasLOC_05013 = 转向:方向 - // The name of the active steering mode, in which the steering commands are sent to - // the linked vessel in the exact form as they've emitted for the source vessel. - #kasLOC_05018 = 正常 - // The name of the active steering mode, in which the steering commands are sent to - // the linked vessel in the inverted form relative to the source vessel. - #kasLOC_05019 = 反转 - - // ********** Type: KAS.KASJointTowBar, KSPDev Messages - - // Message to display when a tow bar is not locked but the locking process has been - // started. The <<1>> argument shows the current locking error and is formatted as - // an angle type. - // Example usage: - // Tow bar is locking: diff 1.5° - #kasLOC_05000 = 牵引杆正在锁定:移动中 <<1>> - // Message to display when a tow bar locking process successfully ends with locking. - #kasLOC_05001 = 牵引杆被锁定! - // A string in the context menu that tells that the active steering mode is not - // enabled. - #kasLOC_05002 =禁用 - // A string in the context menu that tells that the active steering mode is ready - // and working. - #kasLOC_05003 = 活动的 - // A string in the context menu that tells that the active steering mode cannot work - // due to the bar's target vessel is currently under player's control. - #kasLOC_05004 = 目标是移动的飞船 - // A string in the context menu that tells that the active steering mode cannot work - // due to the linked vessel is remotely controlled. - #kasLOC_05005 = 目标无法控制 - // A string in the context menu that tells that the active steering mode is - // activated but cannot start working due to the constraints. - #kasLOC_05006 = 未锁定 - // A string in the context menu that tells that the bar joints are unlocked. - #kasLOC_05007 = 禁用 - // A string in the context menu that tells that the bar joints are locked. - #kasLOC_05008 = 已锁定 - // A string in the context menu that tells that the bar joints are unlocked but the - // part is trying to lock them. - #kasLOC_05009 = 正在锁定 - - // ********** Type: KAS.KASLinkResourceConnector, KSP Events - - // The context menu event that opens the resources transfer GUI. - #kasLOC_12015 = 打开界面 - - // ********** Type: KAS.KASLinkResourceConnector, KSPDev Messages - - // The title of the resource transfer dialog. - #kasLOC_12000 = 资源转移 - // The resource in the transfer options table. Its main purpose is dealing with the - // Lingoona modifiers, applied to the resource name. - // Argument <<1>> is the full localized resource name with the Lingoona modifiers - // (if any). - #kasLOC_12001 = <<1>> - // The string to present for a fuel mixture component. - // Argument <<1>> is the percent ratio of the component in the mixture of type - // PercentType. - // Argument <<2>> is the abbreviated localized resource name with the - // Lingoonamodifiers (if any). - // Example usage: - // 45 % Ox - #kasLOC_12002 = <<1>> <<2>> - // The status string saying current and maximum amounts of the resource in the - // vessel. The gui tags are suggested to define the minimum size of the text, to - // avoid the dialog flickering when the resource is being transferred. - // Argument <<1>> is the current amount of type CompactNumberType. - // Argument <<1>> is the maximum amount (capacity) of type CompactNumberType. - // Example usage: - // 2.56 / 1,234 - #kasLOC_12003 = <<1>> / <<2>> - // The information string that tells what is the selected or calculated tarnsfer - // speed is. - #kasLOC_12004 = 当前传输速度: <<1>> units per second - // The caption on the button that closes the trsnafer dialog. - #kasLOC_12005 = 关闭对话框 - // The string that tells which vessels owns the resource transfer part. Its stats - // are displayed on the left side of the dialog. - // Argument <<1>> is the name of the owner vessel. - #kasLOC_12006 = 本体(左): <<1>> - // The string that tells which vessels is connected to the resource transfer part. - // Its stats are displayed on the right side of the dialog. - // Argument <<1>> is the name of the connected vessel. - #kasLOC_12007 = 已连接(右): <<1>> - // The hint to explain the mixture of the fuel components to transfer. - // Argument <<1>> is the comma-separated list of the component names. - #kasLOC_12008 = 部件的混合物: <<1>> - // The caption for the control that enables the mode, which automatically deducts - // the speed of the reasource transfer. - #kasLOC_12009 = 自动改变传输速度 - // The GUI hint that explains what will happen if the auto-speed options is chosen. - #kasLOC_12010 = 将设置速度,以便在 <<1>> 秒内完成传输 - // The hint text to explain the button action that starts transferring the resource - // from the connected vessel to the owner of the resource transfer part. - #kasLOC_12011 = 开始从目标转移到本体 - // The hint text to explain the button action that does transferring the resource - // from the connected vessel to the owner of the resource transfer part. When the - // button is released, the transfer stops. - #kasLOC_12012 = 从目标转移到本体 - // The hint text to explain the button action that starts transferring the resource - // from the owner of the resources transfer part to the connected vessel. - #kasLOC_12013 = 开始从本体转移到目标 - // The hint text to explain the button action that does transferring the resource - // from the owner of the resource transfer part to the connected vessel. When the - // button is released, the transfer stops. - #kasLOC_12014 = 从本体转移到目标 - // The message to present in the transfer dialog when the parts are docked. Hence, - // the stock game functionality must be used to transfer the resources. - #kasLOC_12016 = 在对接模式下不可用 - - // ********** Type: KAS.KASLinkSourceBase, KSPDev Messages - - // Message to display when the target link type doesn't match the source type. - #kasLOC_02000 = 目标连接类型不兼容 - // Message to display when a source is refusing to start the link. - #kasLOC_02001 = 源不可用于连接 - // Message to display when the target is refusing to accept the link. - #kasLOC_02002 = 目标不可用于连接 - // Message to display when a linked source and target cannot be matched on load. - // Argument <<1>> is a name of the SOURCE part. - // Example usage: - // Cannot restore link for: KAS.TJ1 - #kasLOC_02003 = 无法恢复连接: <<1>> - // Info string in the editor for the link type setting. - // Argument <<1>> is the type string from the part's config. - #kasLOC_02004 = 按基座类型连接: <<1>> - // Title of the module to present in the editor details window. - #kasLOC_02005 = KAS 接头来源 - // The name of the part's context menu event that triggers a separtation of the - // linked parts into two different vessels if they are coupled thru this link. At - // the same time, the name of the event gives a currently selected state. - #kasLOC_02006 = 连接状态:对接 - // The name of the part's context menu event that triggers a merging of the linked - // parts if they were not coupled before. At the same time, the name of the event - // gives a currently selected state. - #kasLOC_02007 = 连接状态:未对接 - - // ********** Type: KAS.KASLinkSourceInteractive, KSPDev Messages - - // The message to display when a compatible target part is hovered over, and the - // source is in the linking mode. - // Argument <<1>> is the possible link length of type DistanceType. - // Example usage: - // Click to establish a link (length 1.22 m) - #kasLOC_01000 = 单击以建立连接 (长度 <<1>>) - // The message to display as a help string when an interactive linking mode has - // started. - #kasLOC_01001 = 选择兼容的基座或按Esc键 - // The message to present when the player requests a docking mode for the link via - // UI, but the source or target part is rejecting the action. - #kasLOC_01002 =无法对接:不支持该模式 - - // ********** Type: KAS.KASLinkSourcePhysical, KSP Events - - // A context menu event that attaches the connector to the EVA kerbal. - #kasLOC_13007 = 抓取接头 - // A context menu event that detaches the connector from the kerbal and puts it back - // to the winch. - #kasLOC_13008 = 返回接头 - // Context menu item to break the currently established link. - #kasLOC_13009 = 分离接头 - // Advanced tweakable. Context menu item to instantly lock the deployed connector - // into the base. - #kasLOC_13010 = 锁定接头 - - // ********** Type: KAS.KASLinkSourcePhysical, KSP Fields - - // Status field to display the current winch connector status in the context menu. - #kasLOC_13006 = 接头状态 - - // ********** Type: KAS.KASLinkSourcePhysical, KSPDev Messages - - // A string in the context menu that tells that the connector is rigidly attached to - // the part and is not movable. - #kasLOC_13000 = 已锁定 - // A string in the context menu that tells that the connector is deployed and - // attached to the part via a cable. - #kasLOC_13001 = 已部署 - // A string in the context menu that tells that the connector is plugged in a socked - // or is being carried by a kerbal, and attached to the part via a cable. - #kasLOC_13002 = 接通电源 - // A string in the context menu that tells that the connector is rigidly attached in - // the winch socked, and the vessel on the connector is docked to the part owner - // vessel. - #kasLOC_13003 = 已对接 - // A message to display when a link between the part and the connector has broke due - // to the unexpected external forces or actions. - #kasLOC_13004 = 接头和零件之间的连接已断开 - // The error message to present when a part is being attached externally to the - // source's attach node, and it's not a valid link target for the source. - // Argument <<1>> is the name of the part being attached. - #kasLOC_13005 = 无法连接到: <<1>> - - // ********** Type: KAS.KASLinkTargetBase, KSPDev Messages - - // Info string in the editor for the link type setting. - // Argument <<1>> is the type string from the part's config. - #kasLOC_03000 = 接受连接类型: <<1>> - // Title of the module to present in the editor details window. - #kasLOC_03001 = KAS 接头 目标 - - // ********** Type: KAS.KASLinkTargetKerbal, KSP Events - - // A context menu item that picks up the cable connector in range. - #kasLOC_10000 = 捡起接头 - - // ********** Type: KAS.KASLinkTargetKerbal, KSPDev Messages - - // A hint string, instructing what to press in order to drop the currently - // carriedcable connector. - // Argument <<1>> is the current key binding of type KeyboardEventType. - // Example usage: - // To drop the connector press: [Ctrl+Y] - #kasLOC_100001 = 要卸下接头,请按: [<<1>>] - // A hint string, instructing what to press in order to pickup a cable - // connectorwhich is currently in range. - // Argument <<1>> is the current key binding of typeKeyboardEventType. - // Example usage: - // [Y]: Pickup connector - #kasLOC_100002 = [<<1>>]: 捡起接头 - // Context menu item that appear on the target part and transfers the EVA carried - // connector to it. - #kasLOC_10003 = 连接接头 - - // ********** Type: KAS.KASLinkWinch, KSP Actions - - // Name of the action that starts the cable extending. - #kasLOC_08015 = 伸长缆绳 - // Name of the action that starts the cable retracting. - #kasLOC_08016 = 收回缆绳 - // Name of the action that stops the motor. - #kasLOC_08017 = 停止电机 - // name of the action that sets the cable length to the maximum, and unlocks the - // connector if it was locked. - #kasLOC_08018 = 释放缆绳 - - // ********** Type: KAS.KASLinkWinch, KSP Events - - // A context menu item that opens the remote control GUI to operate the winches in - // the scene. - #kasLOC_08010 = 打开绞盘界面 - // A context menu item that sets the cable length to the maximum, and unlocks the - // connector if it was locked. - #kasLOC_08011 = 释放缆绳 - // A context menu event that sets the cable length to the current distance to the - // connector. - #kasLOC_08012 = 回收多余 - - // ********** Type: KAS.KASLinkWinch, KSP Fields - - // A context menu item that presents the length of the currently deployed cable. - #kasLOC_08009 = 展开缆绳长度 - - // ********** Type: KAS.KASLinkWinch, KSPDev Messages - - // Error message to present when the electricity charge has exhausted. - #kasLOC_08000 = 没有能源! - // Error message to present when an improperly aligned cable connector has attempted - // to lock with the winch. - #kasLOC_08001 = 无法锁定接头:未对齐 - // Info message to present when a cable connector has successfully locked to the - // winch. - #kasLOC_08002 = 接头已锁定! - // Info message to present when a cable connector has successfully docked to the - // winch. - #kasLOC_08003 = 连接到绞车的接头 - // An info message to present when the cable is extended at its maximum length. - // Argument <<1>> is the current cable length of type DistanceType. - // Example usage: - // Maximum cable length reached: 1.23 m - #kasLOC_08004 = 已达到最大缆绳长度: <<1>> - // Name of the context menu item that stops the cable extending. - #kasLOC_08005 = 停止伸长 - // Name of the context menu item that starts the cable extending. - #kasLOC_08006 = 伸长缆绳 - // Name of the context menu item that stops the cable retracting. - #kasLOC_08007 = 停止收回 - // Name of the context menu item that starts the cable retracting. - #kasLOC_08008 = 收回缆绳 - // Title of the module to present in the editor details window. - #kasLOC_08013 = KAS 绞盘 - // Info string that tells how fast the winch can extend or retract the cable. - // Argument <<1>> is the speed of type VelocityType. - #kasLOC_08014 = 最大电机转速: <<1>> - - // ********** Type: KAS.KASRendererTelescopicPipe, KSP Events - - // A context menu item that expands a non-linked telescopic pipe to its maximum - // length. - #kasLOC_04002 = 伸长到最大值 - // A context menu item that shrinks a non-linked telescopic pipe to its minimum - // length. - #kasLOC_04003 = 收回至最小值 - - // ********** Type: KAS.KASRendererTelescopicPipe, KSPDev Messages - - // Message to display when the link cannot be created due to an obstacle. - // Argument <<1>> is the part that would collide with the proposed link. - // Example usage: - // Link collides with: Mk2 Cockpit - #kasLOC_04000 = 连接与以下对象冲突: <<1>> - // Message to display when the link strut orientation cannot be changed due to it - // would hit the surface. - #kasLOC_04001 = 连接与表面冲突 - - // ********** Global strings - - // Small strut link type. - #kasLOC_99000 = 管道-40 - // Small cable link type. - #kasLOC_99001 = 缆绳-10 - // Small hose link type. - #kasLOC_99002 = 软管-30 - // Medium strut link type. - #kasLOC_99003 = 管道-100 - // Medium cable link type. - #kasLOC_99004 = 缆绳-35 - // Medium hose link type. - #kasLOC_99005 = 软管-70 - // Large strut link type. - #kasLOC_99006 = 管道-150 - // Large cable link type. - #kasLOC_99007 = 缆绳-60 - // Large hose link type. - #kasLOC_99008 = 软管-100 - - // KAS parts filter in the editor. - #kasLOC_99009 = 坎巴拉附件系统 - } -} From 93e399754d0e139abc4934344c7bcc94ffee9067 Mon Sep 17 00:00:00 2001 From: fackman <41724374+fackman@users.noreply.github.com> Date: Sun, 30 Jun 2019 12:00:19 +0800 Subject: [PATCH 04/15] zh-cn.ver.1 --- Lang/zh-cn.cfg | 618 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 618 insertions(+) create mode 100644 Lang/zh-cn.cfg diff --git a/Lang/zh-cn.cfg b/Lang/zh-cn.cfg new file mode 100644 index 00000000..b64ae500 --- /dev/null +++ b/Lang/zh-cn.cfg @@ -0,0 +1,618 @@ +// Version: 1 (2019-06-28) +//Author:facther +Localization +{ + zh-cn + { + + // ********** Part: KAS.CH1 + + #KAS_CH1_Part_title = CH-1 缆绳挂钩 + #KAS_CH1_Part_manufacturer = KAS Labs, Inc. + #KAS_CH1_Part_description = 可以将缆绳挂在上面的钩子。这是“把这些东西放在一起”解决方案的另一半。 + #KAS_CH1_Part_tags = KIS KAS cable rope tie cck-kas + + // ********** Part: KAS.JS1 + + #KAS_JS1_Part_title = JS-1 连接基座 + #KAS_JS1_Part_manufacturer = KAS Labs, Inc. + #KAS_JS1_Part_description = 这个多用途的基座有多种功能:它允许牢固的连接,并提供资源传输!安装此插座需要一名具有多年经验的认证工程师,但一旦安装,即使是清洁工也可以使用它来连接容器。 + #KAS_JS1_Part_tags = KIS KAS pipe tube cck-kas + + // ********** Part: KAS.PCB1 + + #KAS_PCB1_Part_title = PCB-1 便携缆绳绞盘 + #KAS_PCB1_Part_manufacturer = KAS Labs, Inc. + #KAS_PCB1_Part_description = 这是一个带有一根钢丝绳的简单的手动绞盘,只要相距不太远就可以连接东西。 但是,另一个容器上必须有一个挂钩,用于连接缆绳,因此这种绞盘只解决了一半的问题。 + #KAS_PCB1_Part_tags = KIS KAS cable rope tie cck-kas + #KAS_PCB1_Part_LinkBreak = 断开连接 + #KAS_PCB1_Part_LinkStart = 连接 + + // ********** Part: KAS.PortPylon + + #KAS_PortPylon_Part_title = GP-20 塔架 + #KAS_PortPylon_Part_manufacturer = KAS Labs, Inc. + #KAS_PortPylon_Part_description = 我们的RTS-1产品线非常成功!不过,也有一些问题,事实证明,有时管道不够长!为了解决这个问题,我们开发了一个新的部件:一个带有连接基座的轻型塔架,它可以充当扩展器。因此,长距离资源传输是可行的,尽管可能需要建造额外的塔架。杰布真的想在中空的内部增加一个科巴可乐冰箱,但由于严格的20公斤的质量限制,研发部不得不拒绝他的建议。 + #KAS_PortPylon_Part_tags = KAS resource fuel transfer cck-kas + + // ********** Part: KAS.PortPylonPwr + + #KAS_PortPylonPwr_Part_title = BGP-400 增强版塔架 + #KAS_PortPylonPwr_Part_manufacturer = KAS Labs, Inc. + #KAS_PortPylonPwr_Part_description = 这个部件的设计灵感来自于GP-20。我们的工程师想知道:塔架的内部容积真的能被利用吗?结果证明是可以的!因此,他们决定给它装上一些Z-100电池和一个简单的控制模块。 它不像杰巴所要求的那个酷酷的科巴可乐冰箱,但它仍然非常实用。请放心,所用电池的质量是最好的,而不是从回收站回收的。 + #KAS_PortPylonPwr_Part_tags = KAS resource fuel transfer cck-kas + + // ********** Part: KAS.RTS1 + + #KAS_RTS1_Part_title = RTS-1 资源传输管道绞盘 + #KAS_RTS1_Part_manufacturer = KAS Labs, Inc. + #KAS_RTS1_Part_description = 该管道可以在飞船之间转移资源。 直径并没有那么大,但正如一个小绿家伙曾经说过的,“大小无关紧要。” 我们的专利技术允许通过它传输任何数量的东西,包括但不限于:岩石,燃料,零食,甚至是坎巴拉人。在后一种情况下,保修无效。 + #KAS_RTS1_Part_tags = KIS KAS resource fuel transfer cck-kas + + // ********** Part: KAS.TB60 + + #KAS_TB60_Part_title = TB-60 牵引杆 + #KAS_TB60_Part_manufacturer = KAS Labs, Inc. + #KAS_TB60_Part_description = 这是一种拖曳一艘不能自行移动的飞船的解决方案。如果使用一根简易的绳索,那么被牵引的飞船在刹车或操纵时可能会撞击牵引船,但使用牵引杆时就不会发生这种情况。此外,当条件符合时,它还可以操纵被拖飞船。一定要保证电量充足,否则主动转向将不起作用。 + #KAS_TB60_Part_tags = KIS KAS pipe tube tow towbar cck-kas + #KAS_TB60_Part_LinkBreak = 断开连接 + #KAS_TB60_Part_LinkStart = 连接 + #KAS_TB60_Part_Park_Forward = 固定方向:90° + #KAS_TB60_Part_Park_Up = 固定方向:0° + + // ********** Part: KAS.TJ1 + + #KAS_TJ1_Part_title = TJ-1 固定伸缩杆 + #KAS_TJ1_Part_manufacturer = KAS Labs, Inc. + #KAS_TJ1_Part_description = 这种简单的伸缩式杆可以牢固地连接两个容器。 最大连接距离比较短,但其强度足够。 设计的灵感来自Jeb在二手商店购买的自拍杆。 + #KAS_TJ1_Part_tags = KIS KAS pipe tube cck-kas + #KAS_TJ1_Part_LinkBreak = 断开连接 + #KAS_TJ1_Part_LinkStart = 连接 + #KAS_TJ1_Part_Park_Down = 固定方向:180° + #KAS_TJ1_Part_Park_Forward = 固定方向:90° + #KAS_TJ1_Part_Park_Up = 固定方向:0° + + // ********** Part: KAS.TJ2 + + #KAS_TJ2_Part_title = TJ-2 自由伸缩杆 + #KAS_TJ2_Part_manufacturer = KAS Labs, Inc. + #KAS_TJ2_Part_description = 除了铰链是解锁的,和TJ-1“自拍棒”相同。真正的最佳解决方案是保持联系船只相互分散,但也不过度限制其运动。 + #KAS_TJ2_Part_tags = KIS KAS pipe tube cck-kas + #KAS_TJ2_Part_LinkBreak = 断开连接 + #KAS_TJ2_Part_LinkStart = 连接 + #KAS_TJ2_Part_Park_Down = 固定方向:180° + #KAS_TJ2_Part_Park_Forward =固定方向:90° + #KAS_TJ2_Part_Park_Up = Park:固定方向:0° + + // ********** Part: KAS.W1 + + #KAS_W1_Part_title = W-50 绞盘 + #KAS_W1_Part_manufacturer = KAS Labs, Inc. + #KAS_W1_Part_description = 一位古老的圣人曾经说过:“给我一个正确的基座和绞盘,我能拉动Kerbin”。 这种绞盘并不是那么强大,尽管它可以抬起或牵引一艘相当庞大的飞船。 请确保目标飞船上有兼容的基座。 此外,确保飞船上有足够的电力:绞盘很费电! + #KAS_W1_Part_tags = KIS KAS winch cable connector cck-kas + + // ********** Part: KAS.W2 + + #KAS_W2_Part_title = HW-80 绞盘 + #KAS_W2_Part_manufacturer = KAS Labs, Inc. + #KAS_W2_Part_description = W-50绞车型号的重型版本。它有额外的电缆和增强的连接强度。然而,它仍然不能拉动Kerbin。注意:如果绞车用于绞车开关,则保修无效,无论是哪个绞车还是哪个开关。 + #KAS_W2_Part_tags = KIS KAS winch cable connector heavyduty cck-kas + + // ********** Type: KAS.AbstractJoint, KSPDev Messages + + // Message to display when the link cannot be established because it's too short. + // Argument <<1>> is the current link length of type DistanceType. + // Argument <<2>> is the part's config setting of type DistanceType. + // Example usage: + // Link is too short: 1.22 m < 2.33 m + #kasLOC_00000 = 连接太短: <<1>> < <<2>> + // Message to display when the link cannot be established because it's too long. + // Argument <<1>> is the current link length of type DistanceType. + // Argument <<2>> is the part's config setting of type DistanceType. + // Example usage: + // Link is too long: 2.33 m > 1.22 m + #kasLOC_00001 = 连接太长: <<1>> > <<2>> + // Message to display when the link cannot be established because the maximum angle + // between the link vector and the joint normal at the SOURCE part is to big. + // Argument <<1>> is the current link angle of type AngleType. + // Argument <<2>> is the part's config setting of type AngleType. + // Example usage: + // Source angle limit reached: 3° > 2.5° + #kasLOC_00002 = 达到源角度限制: <<1>> > <<2>> + // Message to display when the link cannot be established because the maximum angle + // between the link vector and the joint normal at the TARGET part is to big. + // Argument <<1>> is the current link angle of type AngleType. + // Argument <<2>> is the part's config setting of type AngleType. + // Example usage: + // Target angle limit reached: 3° > 2.5° + #kasLOC_00003 = 达到目标角度限制: <<1>> > <<2>> + // Info string in the editor for the link break force setting. The argument is of + // type ForceType. + // Example usage: + // Link break force: 1.2 kN + #kasLOC_00004 = 连接断开力度: <<1>> + // Info string in the editor for the link break torque setting. The argument is of + // type ForceType. + // Example usage: + // Link torque force: 1.2 kN + #kasLOC_00005 = 连杆扭矩: <<1>> + // Info string in the editor for the minimum link length setting. + // Argument <<1>> is the part's config setting of type DistanceType. + // Example usage: + // Minimum link length: 1.22 m + #kasLOC_00006 = Minimum link length: <<1>> + // Info string in the editor for the maximum link length setting. + // Argument <<1>> is the part's config setting of type DistanceType. + // Example usage: + // Maximum link length: 1.22 m + #kasLOC_00007 = 最小连接长度:<<1>> + // Info string in the editor for the maximum allowed angle at the source. + // Argument <<1>> is the part's config setting of type AngleType. + // Example usage: + // Source angle limit: 1.2° + #kasLOC_00008 = 源角限制: <<1>> + // Info string in the editor for the maximum allowed angle at the target. + // Argument <<1>> is the part's config setting of type AngleType. + // Example usage: + // Target angle limit: 1.2° + #kasLOC_00009 = 目标角度限制: <<1>> + // Title of the module to present in the editor details window. + #kasLOC_00010 = KAS接头 + + // ********** Type: KAS.AbstractPipeRenderer, KSPDev Messages + + // Message to display when the link cannot be created due to an obstacle. + // Argument <<1>> is the part that would collide with the proposed link. + // Example usage: + // Link collides with: Mk2 Cockpit + #kasLOC_07000 = 连接与以下对象冲突: <<1>> + // Message to display when the link strut orientation cannot be changed due to it + // would hit the surface. + #kasLOC_07001 = 连接与表面冲突 + + // ********** Type: KAS.ControllerWinchRemote, KSPDev Messages + + // The title of the remote control dialog. It also gives a hint on the keyboard + // sequence that brings the GUI up. + // Argument <<1>> is the keyboard even of type KeyboardEventType. + #kasLOC_11000 = 绞盘远程控制 (<<1>>) + // The caption of the button that triggers cable release. + #kasLOC_11001 = 松开 + // The GUI hint to explain the effect of the release button. + #kasLOC_11002 = 松开接头并将缆绳并将长度设置为最大值 + // The caption of the button that stretches teeh cable. + #kasLOC_11003 = 弹性 + // The GUI hint to explain the effect of the stretch button. + #kasLOC_11004 = 将缆绳长度设置为“拉伸”按钮的实际距离。 + // The caption of the button that deatches the cable from the target. + #kasLOC_11005 = 断开 + // The GUI hint to explain the effect of the detach button. + #kasLOC_11006 = 从目标部件上断开缆绳 + // The caption of the button that closes the GUI dialog. + #kasLOC_11007 = 关闭 + // The GUI hint to explain the effect of the close button. + #kasLOC_11008 = 关闭 + // The caption for the toggle control (button style) which tells if the winch should + // be highlighted in the scene. It's better keep the text as short as possible. + #kasLOC_11009 = H + // The GUI hint to explain the effect of toggling the control. + #kasLOC_11010 = 高亮绞盘 + // The text for the winch status in which it cannot be remotely operated for any + // reason. + #kasLOC_11011 = 未连接 + // The GUI hint to explain the OFFLINE state. + #kasLOC_11012 = 无法和绞盘联络。飞船是可控的吗? + // The text for the winch status that tells that the main winch attach node is + // occupied by an incompatible (non-KAS) part. + #kasLOC_11013 = 被阻挡 + // The GUI hint to explain the BLOCKED state. + #kasLOC_11014 = 绞盘连接节点被另一个部件阻挡 + // The text for the winch status that tells that the cable connector is locked to + // the winch, and the cable length is zero. + #kasLOC_11015 = 回收 + // The GUI hint to explain the RETRACTED state. + #kasLOC_11016 = 接头被锁定在绞盘中。 + // The GUI hint of the button that triggers retracting of the cable. The cable will + // be retracting until the motor status is changed or the connector get locked. + #kasLOC_11017 = 开始收回缆绳 + // The GUI hint of the button that triggers deploying of the cable. The cable will + // be deploying until the motor status is changed. + #kasLOC_11018 = 开始延长缆绳 + // The GUI hint of the button that retracts the cable. The cable will be retracting + // as long as the button is pressed. + #kasLOC_11019 = 收回缆绳 + // The GUI hint of the button that extends the cable. The cable will be extending as + // long as the button is pressed. + #kasLOC_11020 = 延长缆绳 + // The GUI hint to show for the control that changes the motor speed. It's the + // maximum speed which the motor can reach when retracting or extending the cable. + #kasLOC_11021 = 电机速度设置 + // The GUI hint to show for the area which displays two values: the deployed cable + // length and the real distance between the winch and the target (connector or + // part). The values are presented as a pair, separated by symbol '/'. + #kasLOC_11022 = 缆绳的展开/实际长度 + // The GUI hint to show for the area which displays two values: the current motro + // speed and the maximum possible motor speed. The values are presented as a pair, + // separated by symbol '/'. + #kasLOC_11023 = 当前电机转速/电机转速设置 + // The string to present when the dialog is opened, but no KAS winches found in the + // scene. + #kasLOC_11024 = 未发现绞盘! + // The formatter string for the cable lengths when the cable is *not* under strain. + // I.e. its actual length is not greater than the winch allows. + // Argument <<1>> is the length, allowed by the winch of type DistanceType. + // Argument <<1>> is the real cable length of type DistanceType. + #kasLOC_11025 = <<1>> / <<2>> + // The formatter string for the cable lengths when the cable *is* under strain. I.e. + // its actual length is greater than the winch allows. + // Argument <<1>> is the length, allowed by the winch of type DistanceType. + // Argument <<2>> is the real cable length of type DistanceType. + #kasLOC_11026 = <<1>> / <<2>> + // The formatter string for the winch motor speed. + // Argument <<1>> is the current motor speed type VelocityType. + // Argument <<2>> is the settings for the desired motor speed of type VelocityType. + #kasLOC_11027 = <<1>> / <<2>> + + // ********** Type: KAS.KASJointCableBase, KSPDev Messages + + // Info string in the editor for the cable spring force setting. + // Argument <<1>> is the force of type ForceType. + // Example usage: + // Spring force: 1.2 kN + #kasLOC_09000 = 弹力: <<1>> + // Title of the module to present in the editor details window. + #kasLOC_09001 = KAS 缆绳 + + // ********** Type: KAS.KASJointTowBar, KSP Events + + // A context menu event that starts the locking process on a linked vessel. + #kasLOC_05014 = 开始锁定 + // A context menu event that disables the locking of the tow bar joints and turns + // off the active steering mode. + #kasLOC_05015 = 解锁接头 + // A context menu event that enables the active steering mode. + #kasLOC_05016 = 启用主动转向 + // A context menu event that disables the active steering mode. + #kasLOC_05017 = 关闭主动转向 + + // ********** Type: KAS.KASJointTowBar, KSP Fields + + // A context menu item that displays the current status of the bar locking. + #kasLOC_05010 = 锁定状态 + // A context menu item that displays the current steering status. + #kasLOC_05011 = 转向状态 + // A context menu item that displays and allows changing the strength of the + // steering commands, that the tow bar sends to the linked vessel. + #kasLOC_05012 = 转向灵敏度 + // A context menu item that displays and allows changing the direction of the + // steering commands. + #kasLOC_05013 = 转向:方向 + // The name of the active steering mode, in which the steering commands are sent to + // the linked vessel in the exact form as they've emitted for the source vessel. + #kasLOC_05018 = 正常 + // The name of the active steering mode, in which the steering commands are sent to + // the linked vessel in the inverted form relative to the source vessel. + #kasLOC_05019 = 反转 + + // ********** Type: KAS.KASJointTowBar, KSPDev Messages + + // Message to display when a tow bar is not locked but the locking process has been + // started. The <<1>> argument shows the current locking error and is formatted as + // an angle type. + // Example usage: + // Tow bar is locking: diff 1.5° + #kasLOC_05000 = 牵引杆正在锁定:移动中 <<1>> + // Message to display when a tow bar locking process successfully ends with locking. + #kasLOC_05001 = 牵引杆被锁定! + // A string in the context menu that tells that the active steering mode is not + // enabled. + #kasLOC_05002 =禁用 + // A string in the context menu that tells that the active steering mode is ready + // and working. + #kasLOC_05003 = 活动的 + // A string in the context menu that tells that the active steering mode cannot work + // due to the bar's target vessel is currently under player's control. + #kasLOC_05004 = 目标是移动的飞船 + // A string in the context menu that tells that the active steering mode cannot work + // due to the linked vessel is remotely controlled. + #kasLOC_05005 = 目标无法控制 + // A string in the context menu that tells that the active steering mode is + // activated but cannot start working due to the constraints. + #kasLOC_05006 = 未锁定 + // A string in the context menu that tells that the bar joints are unlocked. + #kasLOC_05007 = 禁用 + // A string in the context menu that tells that the bar joints are locked. + #kasLOC_05008 = 已锁定 + // A string in the context menu that tells that the bar joints are unlocked but the + // part is trying to lock them. + #kasLOC_05009 = 正在锁定 + + // ********** Type: KAS.KASLinkResourceConnector, KSP Events + + // The context menu event that opens the resources transfer GUI. + #kasLOC_12015 = 打开界面 + + // ********** Type: KAS.KASLinkResourceConnector, KSPDev Messages + + // The title of the resource transfer dialog. + #kasLOC_12000 = 资源转移 + // The resource in the transfer options table. Its main purpose is dealing with the + // Lingoona modifiers, applied to the resource name. + // Argument <<1>> is the full localized resource name with the Lingoona modifiers + // (if any). + #kasLOC_12001 = <<1>> + // The string to present for a fuel mixture component. + // Argument <<1>> is the percent ratio of the component in the mixture of type + // PercentType. + // Argument <<2>> is the abbreviated localized resource name with the + // Lingoonamodifiers (if any). + // Example usage: + // 45 % Ox + #kasLOC_12002 = <<1>> <<2>> + // The status string saying current and maximum amounts of the resource in the + // vessel. The gui tags are suggested to define the minimum size of the text, to + // avoid the dialog flickering when the resource is being transferred. + // Argument <<1>> is the current amount of type CompactNumberType. + // Argument <<1>> is the maximum amount (capacity) of type CompactNumberType. + // Example usage: + // 2.56 / 1,234 + #kasLOC_12003 = <<1>> / <<2>> + // The information string that tells what is the selected or calculated tarnsfer + // speed is. + #kasLOC_12004 = 当前传输速度: <<1>> units per second + // The caption on the button that closes the trsnafer dialog. + #kasLOC_12005 = 关闭对话框 + // The string that tells which vessels owns the resource transfer part. Its stats + // are displayed on the left side of the dialog. + // Argument <<1>> is the name of the owner vessel. + #kasLOC_12006 = 本体(左): <<1>> + // The string that tells which vessels is connected to the resource transfer part. + // Its stats are displayed on the right side of the dialog. + // Argument <<1>> is the name of the connected vessel. + #kasLOC_12007 = 已连接(右): <<1>> + // The hint to explain the mixture of the fuel components to transfer. + // Argument <<1>> is the comma-separated list of the component names. + #kasLOC_12008 = 部件的混合物: <<1>> + // The caption for the control that enables the mode, which automatically deducts + // the speed of the reasource transfer. + #kasLOC_12009 = 自动改变传输速度 + // The GUI hint that explains what will happen if the auto-speed options is chosen. + #kasLOC_12010 = 将设置速度,以便在 <<1>> 秒内完成传输 + // The hint text to explain the button action that starts transferring the resource + // from the connected vessel to the owner of the resource transfer part. + #kasLOC_12011 = 开始从目标转移到本体 + // The hint text to explain the button action that does transferring the resource + // from the connected vessel to the owner of the resource transfer part. When the + // button is released, the transfer stops. + #kasLOC_12012 = 从目标转移到本体 + // The hint text to explain the button action that starts transferring the resource + // from the owner of the resources transfer part to the connected vessel. + #kasLOC_12013 = 开始从本体转移到目标 + // The hint text to explain the button action that does transferring the resource + // from the owner of the resource transfer part to the connected vessel. When the + // button is released, the transfer stops. + #kasLOC_12014 = 从本体转移到目标 + // The message to present in the transfer dialog when the parts are docked. Hence, + // the stock game functionality must be used to transfer the resources. + #kasLOC_12016 = 在对接模式下不可用 + + // ********** Type: KAS.KASLinkSourceBase, KSPDev Messages + + // Message to display when the target link type doesn't match the source type. + #kasLOC_02000 = 目标连接类型不兼容 + // Message to display when a source is refusing to start the link. + #kasLOC_02001 = 源不可用于连接 + // Message to display when the target is refusing to accept the link. + #kasLOC_02002 = 目标不可用于连接 + // Message to display when a linked source and target cannot be matched on load. + // Argument <<1>> is a name of the SOURCE part. + // Example usage: + // Cannot restore link for: KAS.TJ1 + #kasLOC_02003 = 无法恢复连接: <<1>> + // Info string in the editor for the link type setting. + // Argument <<1>> is the type string from the part's config. + #kasLOC_02004 = 按基座类型连接: <<1>> + // Title of the module to present in the editor details window. + #kasLOC_02005 = KAS 接头来源 + // The name of the part's context menu event that triggers a separtation of the + // linked parts into two different vessels if they are coupled thru this link. At + // the same time, the name of the event gives a currently selected state. + #kasLOC_02006 = 连接状态:对接 + // The name of the part's context menu event that triggers a merging of the linked + // parts if they were not coupled before. At the same time, the name of the event + // gives a currently selected state. + #kasLOC_02007 = 连接状态:未对接 + + // ********** Type: KAS.KASLinkSourceInteractive, KSPDev Messages + + // The message to display when a compatible target part is hovered over, and the + // source is in the linking mode. + // Argument <<1>> is the possible link length of type DistanceType. + // Example usage: + // Click to establish a link (length 1.22 m) + #kasLOC_01000 = 单击以建立连接 (长度 <<1>>) + // The message to display as a help string when an interactive linking mode has + // started. + #kasLOC_01001 = 选择兼容的基座或按Esc键 + // The message to present when the player requests a docking mode for the link via + // UI, but the source or target part is rejecting the action. + #kasLOC_01002 =无法对接:不支持该模式 + + // ********** Type: KAS.KASLinkSourcePhysical, KSP Events + + // A context menu event that attaches the connector to the EVA kerbal. + #kasLOC_13007 = 抓取接头 + // A context menu event that detaches the connector from the kerbal and puts it back + // to the winch. + #kasLOC_13008 = 返回接头 + // Context menu item to break the currently established link. + #kasLOC_13009 = 分离接头 + // Advanced tweakable. Context menu item to instantly lock the deployed connector + // into the base. + #kasLOC_13010 = 锁定接头 + + // ********** Type: KAS.KASLinkSourcePhysical, KSP Fields + + // Status field to display the current winch connector status in the context menu. + #kasLOC_13006 = 接头状态 + + // ********** Type: KAS.KASLinkSourcePhysical, KSPDev Messages + + // A string in the context menu that tells that the connector is rigidly attached to + // the part and is not movable. + #kasLOC_13000 = 已锁定 + // A string in the context menu that tells that the connector is deployed and + // attached to the part via a cable. + #kasLOC_13001 = 已部署 + // A string in the context menu that tells that the connector is plugged in a socked + // or is being carried by a kerbal, and attached to the part via a cable. + #kasLOC_13002 = 接通电源 + // A string in the context menu that tells that the connector is rigidly attached in + // the winch socked, and the vessel on the connector is docked to the part owner + // vessel. + #kasLOC_13003 = 已对接 + // A message to display when a link between the part and the connector has broke due + // to the unexpected external forces or actions. + #kasLOC_13004 = 接头和零件之间的连接已断开 + // The error message to present when a part is being attached externally to the + // source's attach node, and it's not a valid link target for the source. + // Argument <<1>> is the name of the part being attached. + #kasLOC_13005 = 无法连接到: <<1>> + + // ********** Type: KAS.KASLinkTargetBase, KSPDev Messages + + // Info string in the editor for the link type setting. + // Argument <<1>> is the type string from the part's config. + #kasLOC_03000 = 接受连接类型: <<1>> + // Title of the module to present in the editor details window. + #kasLOC_03001 = KAS 接头 目标 + + // ********** Type: KAS.KASLinkTargetKerbal, KSP Events + + // A context menu item that picks up the cable connector in range. + #kasLOC_10000 = 捡起接头 + + // ********** Type: KAS.KASLinkTargetKerbal, KSPDev Messages + + // A hint string, instructing what to press in order to drop the currently + // carriedcable connector. + // Argument <<1>> is the current key binding of type KeyboardEventType. + // Example usage: + // To drop the connector press: [Ctrl+Y] + #kasLOC_100001 = 要卸下接头,请按: [<<1>>] + // A hint string, instructing what to press in order to pickup a cable + // connectorwhich is currently in range. + // Argument <<1>> is the current key binding of typeKeyboardEventType. + // Example usage: + // [Y]: Pickup connector + #kasLOC_100002 = [<<1>>]: 捡起接头 + // Context menu item that appear on the target part and transfers the EVA carried + // connector to it. + #kasLOC_10003 = 连接接头 + + // ********** Type: KAS.KASLinkWinch, KSP Actions + + // Name of the action that starts the cable extending. + #kasLOC_08015 = 伸长缆绳 + // Name of the action that starts the cable retracting. + #kasLOC_08016 = 收回缆绳 + // Name of the action that stops the motor. + #kasLOC_08017 = 停止电机 + // name of the action that sets the cable length to the maximum, and unlocks the + // connector if it was locked. + #kasLOC_08018 = 释放缆绳 + + // ********** Type: KAS.KASLinkWinch, KSP Events + + // A context menu item that opens the remote control GUI to operate the winches in + // the scene. + #kasLOC_08010 = 打开绞盘界面 + // A context menu item that sets the cable length to the maximum, and unlocks the + // connector if it was locked. + #kasLOC_08011 = 释放缆绳 + // A context menu event that sets the cable length to the current distance to the + // connector. + #kasLOC_08012 = 回收多余 + + // ********** Type: KAS.KASLinkWinch, KSP Fields + + // A context menu item that presents the length of the currently deployed cable. + #kasLOC_08009 = 展开缆绳长度 + + // ********** Type: KAS.KASLinkWinch, KSPDev Messages + + // Error message to present when the electricity charge has exhausted. + #kasLOC_08000 = 没有能源! + // Error message to present when an improperly aligned cable connector has attempted + // to lock with the winch. + #kasLOC_08001 = 无法锁定接头:未对齐 + // Info message to present when a cable connector has successfully locked to the + // winch. + #kasLOC_08002 = 接头已锁定! + // Info message to present when a cable connector has successfully docked to the + // winch. + #kasLOC_08003 = 连接到绞车的接头 + // An info message to present when the cable is extended at its maximum length. + // Argument <<1>> is the current cable length of type DistanceType. + // Example usage: + // Maximum cable length reached: 1.23 m + #kasLOC_08004 = 已达到最大缆绳长度: <<1>> + // Name of the context menu item that stops the cable extending. + #kasLOC_08005 = 停止伸长 + // Name of the context menu item that starts the cable extending. + #kasLOC_08006 = 伸长缆绳 + // Name of the context menu item that stops the cable retracting. + #kasLOC_08007 = 停止收回 + // Name of the context menu item that starts the cable retracting. + #kasLOC_08008 = 收回缆绳 + // Title of the module to present in the editor details window. + #kasLOC_08013 = KAS 绞盘 + // Info string that tells how fast the winch can extend or retract the cable. + // Argument <<1>> is the speed of type VelocityType. + #kasLOC_08014 = 最大电机转速: <<1>> + + // ********** Type: KAS.KASRendererTelescopicPipe, KSP Events + + // A context menu item that expands a non-linked telescopic pipe to its maximum + // length. + #kasLOC_04002 = 伸长到最大值 + // A context menu item that shrinks a non-linked telescopic pipe to its minimum + // length. + #kasLOC_04003 = 收回至最小值 + + // ********** Type: KAS.KASRendererTelescopicPipe, KSPDev Messages + + // Message to display when the link cannot be created due to an obstacle. + // Argument <<1>> is the part that would collide with the proposed link. + // Example usage: + // Link collides with: Mk2 Cockpit + #kasLOC_04000 = 连接与以下对象冲突: <<1>> + // Message to display when the link strut orientation cannot be changed due to it + // would hit the surface. + #kasLOC_04001 = 连接与表面冲突 + + // ********** Global strings + + // Small strut link type. + #kasLOC_99000 = 管道-40 + // Small cable link type. + #kasLOC_99001 = 缆绳-10 + // Small hose link type. + #kasLOC_99002 = 软管-30 + // Medium strut link type. + #kasLOC_99003 = 管道-100 + // Medium cable link type. + #kasLOC_99004 = 缆绳-35 + // Medium hose link type. + #kasLOC_99005 = 软管-70 + // Large strut link type. + #kasLOC_99006 = 管道-150 + // Large cable link type. + #kasLOC_99007 = 缆绳-60 + // Large hose link type. + #kasLOC_99008 = 软管-100 + + // KAS parts filter in the editor. + #kasLOC_99009 = 坎巴拉附件系统 + } +} From 40f2a3a01c0f234be7777204cf19c20d21bfdcac Mon Sep 17 00:00:00 2001 From: ihsoft Date: Sun, 27 Oct 2019 20:49:06 -0700 Subject: [PATCH 05/15] Start v1.5 --- CHANGELOG.md | 2 ++ Source/Properties/AssemblyInfo.cs | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 97cc48bc..fcba08d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +# 1.5 (pre-release): + # 1.4 (June 7th, 2019): * [Change] Update ES-ES localization. * [Enhancement] Use icon of better resolution in the editor to avoid bluring. diff --git a/Source/Properties/AssemblyInfo.cs b/Source/Properties/AssemblyInfo.cs index 45df306b..04b653db 100644 --- a/Source/Properties/AssemblyInfo.cs +++ b/Source/Properties/AssemblyInfo.cs @@ -29,7 +29,7 @@ // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion ("1.4.*")] -[assembly: AssemblyInformationalVersion ("1.4 for KSP 1.7.1+")] -[assembly: KSPAssembly ("KAS", 1, 4)] +[assembly: AssemblyVersion ("1.5.*")] +[assembly: AssemblyInformationalVersion ("1.5 for KSP 1.8+")] +[assembly: KSPAssembly ("KAS", 1, 5)] [assembly: AssemblyFlags (AssemblyNameFlags.PublicKey)] From e63e8b1dceb085c71eecfaebae6258c27570ae90 Mon Sep 17 00:00:00 2001 From: ihsoft Date: Sun, 27 Oct 2019 20:50:55 -0700 Subject: [PATCH 06/15] Move out abstract module to KSPDev --- Source/KAS.csproj | 1 - Source/modules/AbstractJoint.cs | 1 + Source/modules/AbstractLinkPeer.cs | 1 + Source/modules/AbstractPartModule.cs | 180 ---------------------- Source/modules/AbstractProceduralModel.cs | 1 + 5 files changed, 3 insertions(+), 181 deletions(-) delete mode 100644 Source/modules/AbstractPartModule.cs diff --git a/Source/KAS.csproj b/Source/KAS.csproj index 2932b222..7c242935 100644 --- a/Source/KAS.csproj +++ b/Source/KAS.csproj @@ -99,7 +99,6 @@ - diff --git a/Source/modules/AbstractJoint.cs b/Source/modules/AbstractJoint.cs index 4aa74a81..4ba6eaf0 100644 --- a/Source/modules/AbstractJoint.cs +++ b/Source/modules/AbstractJoint.cs @@ -9,6 +9,7 @@ using KSPDev.GUIUtils.TypeFormatters; using KSPDev.KSPInterfaces; using KSPDev.LogUtils; +using KSPDev.PartUtils; using KSPDev.ProcessingUtils; using System.Collections.Generic; using System.Linq; diff --git a/Source/modules/AbstractLinkPeer.cs b/Source/modules/AbstractLinkPeer.cs index f68c9988..6f4174cb 100644 --- a/Source/modules/AbstractLinkPeer.cs +++ b/Source/modules/AbstractLinkPeer.cs @@ -6,6 +6,7 @@ using KASAPIv2; using KSPDev.KSPInterfaces; using KSPDev.LogUtils; +using KSPDev.PartUtils; using KSPDev.ProcessingUtils; using System; using System.Linq; diff --git a/Source/modules/AbstractPartModule.cs b/Source/modules/AbstractPartModule.cs deleted file mode 100644 index 06fde32b..00000000 --- a/Source/modules/AbstractPartModule.cs +++ /dev/null @@ -1,180 +0,0 @@ -// Kerbal Attachment System -// Mod idea: KospY (http://forum.kerbalspaceprogram.com/index.php?/profile/33868-kospy/) -// Module author: igor.zavoychinskiy@gmail.com -// License: Public Domain - -using KSPDev.ConfigUtils; -using KSPDev.DebugUtils; -using KSPDev.GUIUtils; -using KSPDev.KSPInterfaces; -using KSPDev.LogUtils; -using System; -using System.Collections.Generic; - -namespace KAS { - -/// Base class for the KAS modules. -/// -/// This module implements common logic to deal with part's configuration, persistence and -/// localization. -/// -/// The descendants of this module can use the custom persistent fields of groups: -/// -/// -/// StdPersistentGroups.PartConfigLoadGroup -/// StdPersistentGroups.PartPersistant -/// -/// -/// -/// -/// -public abstract class AbstractPartModule : PartModule, - // KSPDev interfaces - IsLocalizableModule, IHasDebugAdjustables, - // KSPDev syntax sugar interfaces. - IPartModule, IsDestroyable { - - #region IHasDebugAdjustables implementation - /// - public virtual void OnBeforeDebugAdjustablesUpdate() { - } - - /// - public virtual void OnDebugAdjustablesUpdated() { - InitModuleSettings(); - } - #endregion - - #region Local fields - /// Tells if was called on the part. - bool moduleSettingsLoaded; - - /// List of events to call to cleanup registered game event listeners. - /// They are called from the destroy method. - readonly List unregisterListenerActions = new List(); - #endregion - - #region IsLocalizableModule implementation - /// - public virtual void LocalizeModule() { - LocalizationLoader.LoadItemsInModule(this); - } - #endregion - - #region PartModule overrides - /// - public override void OnAwake() { - ConfigAccessor.CopyPartConfigFromPrefab(this); - base.OnAwake(); - LocalizeModule(); - } - - /// - public override void OnLoad(ConfigNode node) { - ConfigAccessor.ReadPartConfig(this, cfgNode: node); - ConfigAccessor.ReadFieldsFromNode(node, GetType(), this, StdPersistentGroups.PartPersistant); - base.OnLoad(node); - if (!moduleSettingsLoaded) { - moduleSettingsLoaded = true; - InitModuleSettings(); - } - } - - /// - public override void OnStart(StartState state) { - base.OnStart(state); - if (!moduleSettingsLoaded) { - moduleSettingsLoaded = true; - if (!HighLogic.LoadedSceneIsEditor) { - HostedDebugLog.Fine(this, "Late load of module settings. Save file inconsistency?"); - } - InitModuleSettings(); - } - } - - /// - public override void OnSave(ConfigNode node) { - base.OnSave(node); - ConfigAccessor.WriteFieldsIntoNode(node, GetType(), this, StdPersistentGroups.PartPersistant); - } - #endregion - - #region IsDestroyable implementation - /// - public virtual void OnDestroy() { - unregisterListenerActions.ForEach(x => x.Invoke()); - } - #endregion - - #region New inheritable methods - /// Verifies that all part's settings are consistent. - /// - /// If there are contradicting settings detected, they must be fixed so that the part could behave - /// consistently. A warning must be logged to point out what was fixed and to what value. - /// - /// Implementations may call this method multiple times at different stages. At the very least it - /// get called on the module load, but this must not be assumed the only use-case. - /// - /// - /// - protected virtual void CheckSettingsConsistency() { - } - - /// Shows a UI messages with regard to the currently active vessel. - /// - /// The UI messages from the active vessel are shown at the highest priority to bring attention - /// of the player. The messages from the inactive vessels are shown only as a status, that is not - /// intended to distract the player from the current vessel operations. - /// - /// The message to show. - /// - /// Tells if the messages is an error condition report. Such messages will be highlighed with the - /// color. - /// - protected void ShowStatusMessage(string msg, bool isError = false) { - if (FlightGlobals.ActiveVessel != vessel) { - msg = string.Format("[{0}]: {1}", vessel.vesselName, msg); - } - if (isError) { - msg = ScreenMessaging.SetColorToRichText(msg, ScreenMessaging.ErrorColor); - } - var duration = isError - ? ScreenMessaging.DefaultErrorTimeout - : ScreenMessaging.DefaultMessageTimeout; - var location = FlightGlobals.ActiveVessel == vessel - ? ScreenMessageStyle.UPPER_CENTER - : (isError ? ScreenMessageStyle.UPPER_RIGHT : ScreenMessageStyle.UPPER_LEFT); - ScreenMessages.PostScreenMessage(msg, duration, location); - } - - /// Initializes the module state according to the settings. - /// - /// This method is normally called from OnLoad method, when all the part components are - /// created, but some of them may be not initialized yet. Under some circumstances it can be - /// called from the OnStart method (e.g. in the editor or when loading an inconsistent save - /// file). - /// - /// This method is a good place for the module to become aware of the other part modules, but it's - /// not the right place to deal with the other module settings. - /// - /// - /// This method can be called multiple times in the part's life time, so keep this method - /// ideponent. Repetative calls to this method should not break the part's logic. - /// - /// - protected virtual void InitModuleSettings() { - CheckSettingsConsistency(); - } - - /// Registers a game event listenr and cleans it up on module destruction. - /// The game event to register for. - /// The event listener. - protected void RegisterGameEventListener( - EventData eventData, EventData.OnEvent listener) { - eventData.Add(listener); - unregisterListenerActions.Add(() => eventData.Remove(listener)); - } - #endregion -} - -} // namespace diff --git a/Source/modules/AbstractProceduralModel.cs b/Source/modules/AbstractProceduralModel.cs index 56adb718..b4c253a7 100644 --- a/Source/modules/AbstractProceduralModel.cs +++ b/Source/modules/AbstractProceduralModel.cs @@ -10,6 +10,7 @@ using KSPDev.KSPInterfaces; using KSPDev.LogUtils; using KSPDev.ModelUtils; +using KSPDev.PartUtils; using KSPDev.ProcessingUtils; using UnityEngine; From 7b0f67ebbcd2139f6ef381f209c57d84fe61b2fd Mon Sep 17 00:00:00 2001 From: ihsoft Date: Sun, 27 Oct 2019 20:51:35 -0700 Subject: [PATCH 07/15] Tiny import cleanup --- Source/modules/AbstractProceduralModel.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/Source/modules/AbstractProceduralModel.cs b/Source/modules/AbstractProceduralModel.cs index b4c253a7..b78420ff 100644 --- a/Source/modules/AbstractProceduralModel.cs +++ b/Source/modules/AbstractProceduralModel.cs @@ -5,9 +5,6 @@ using System; using System.Collections.Generic; -using KSPDev.ConfigUtils; -using KSPDev.GUIUtils; -using KSPDev.KSPInterfaces; using KSPDev.LogUtils; using KSPDev.ModelUtils; using KSPDev.PartUtils; From 28ed77a7b29c62d78040aceb478a63983ff22b86 Mon Sep 17 00:00:00 2001 From: ihsoft Date: Sun, 27 Oct 2019 20:51:56 -0700 Subject: [PATCH 08/15] Fix netkan to require MM & CCK --- KAS.netkan | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/KAS.netkan b/KAS.netkan index 709c7495..7745252c 100644 --- a/KAS.netkan +++ b/KAS.netkan @@ -8,6 +8,10 @@ "repository": "https://github.com/ihsoft/KAS", "bugtracker": "https://github.com/ihsoft/KAS/issues" }, + "depends" : [ + { "name": "CommunityCategoryKit" }, + { "name": "ModuleManager" } + ], "recommends" : [ { "name": "KIS" }, { "name": "EasyVesselSwitch" } From 9fa9416781ee00417a8ae48aa7dbb2dcd769257f Mon Sep 17 00:00:00 2001 From: ihsoft Date: Sun, 27 Oct 2019 20:52:57 -0700 Subject: [PATCH 09/15] Upgrade to KSP 1.8 --- Binaries/KAS-API-v2.dll | Bin 20480 -> 20480 bytes Binaries/KAS-API-v2.xml | 2 +- Binaries/KSPDev_Utils.1.2.dll | Bin 122880 -> 0 bytes Binaries/KSPDev_Utils.2.0.dll | Bin 0 -> 135168 bytes ...Dev_Utils.1.2.xml => KSPDev_Utils.2.0.xml} | 373 +++++++++++++++++- Binaries/KSPDev_Utils_README.md | 5 + CHANGELOG.md | 1 + Source-API/KAS-API.csproj | 9 +- Source/KAS.csproj | 28 +- 9 files changed, 401 insertions(+), 17 deletions(-) delete mode 100644 Binaries/KSPDev_Utils.1.2.dll create mode 100644 Binaries/KSPDev_Utils.2.0.dll rename Binaries/{KSPDev_Utils.1.2.xml => KSPDev_Utils.2.0.xml} (95%) diff --git a/Binaries/KAS-API-v2.dll b/Binaries/KAS-API-v2.dll index 37272e1f321d0c916301780ec05131de6e5c6e1f..5cc16fc5840ea5c4b24f857ca9f9c039a4d0fad2 100644 GIT binary patch delta 3261 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 Actor who changed the links tate. - The actor type that initated teh action. + The actor type that initated the action. Base interface for an end of the link. diff --git a/Binaries/KSPDev_Utils.1.2.dll b/Binaries/KSPDev_Utils.1.2.dll deleted file mode 100644 index 04e4db745c685dbb2af8682dd2003eb1d64775c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122880 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 F{{v-abYuVk diff --git a/Binaries/KSPDev_Utils.2.0.dll b/Binaries/KSPDev_Utils.2.0.dll new file mode 100644 index 0000000000000000000000000000000000000000..cd9f79b9f219a4551396e2d87f7533e946f70c4b GIT binary patch literal 135168 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 literal 0 HcmV?d00001 diff --git a/Binaries/KSPDev_Utils.1.2.xml b/Binaries/KSPDev_Utils.2.0.xml similarity index 95% rename from Binaries/KSPDev_Utils.1.2.xml rename to Binaries/KSPDev_Utils.2.0.xml index 13eca4e8..cc396c40 100644 --- a/Binaries/KSPDev_Utils.1.2.xml +++ b/Binaries/KSPDev_Utils.2.0.xml @@ -1,7 +1,7 @@ - KSPDev_Utils.1.2 + KSPDev_Utils.2.0 @@ -255,7 +255,7 @@ - Unix Epoch timesmap of when the patch was created. + Unix Epoch timestamp of when the patch was created. It doesn't need to be precise. The main goal of this timestamp is to order patches on the same part. The patches created earlier will be applied first. This timestamp can also be used to @@ -1567,6 +1567,7 @@ Helper class to deal with the debug GUI functionality. + Dumps the objects hierarchy to the logs. @@ -1607,6 +1608,11 @@ Creates a debug dialog for the parts. + + Implement a code that would react on user interactions and invoke this method to show a debug + dialog. The dialog can be bound to a specific part, in which case it only showns for that + part, or the dialog may allow interactively selecting a part from the scene. + The titile of the dialog. The width of the dialog. If omitted, then the code will decide. @@ -1618,7 +1624,9 @@ The group of the controls to present. If empty, then all the controls are shown. - The fixed part to attach the dialog to. The dialog won't allow changing the part. + The part to attach the dialog to. If set, then the dialog won't allow changing the part via + GUI. Otherwise, there will be controls in the dialog that allow selection a part from the + scene. The created dialog. @@ -2811,7 +2819,7 @@ The original KSP attributes don't need to specify guiName field since it will be - overwritten anyways. However, it's a good idea to give a default value just in case. + overwritten anyway. However, it's a good idea to give a default value just in case. This method can be called at any time during the module's life. However, the @@ -3023,6 +3031,13 @@ Precalculated style for the hint overlay window. + + Texture to use as the hint background. + + It's important to keep a reference to it in a C# realm. Since otherwise it will be GC'ed by + Unity that doesn't recognize references from the GUIStyle objects. As of Unity 2019.2.2. + + Constructs an overaly. Size of the text font in the hint. @@ -3040,7 +3055,10 @@ Shows hint at the absolute screen position. - If hint content goes out of the screen it's clipped. + + If hint content goes out of the screen it's clipped. + This method must be called from the OnGUI() method. + X position is screen coordinates. Y position is screen coordinates. @@ -3464,7 +3482,8 @@ Message formatting class for a numeric value. For the values below 1000 the resulted - message is formatted so that it takes no more than 4 digits. + message is formatted so that it takes approximately 4 digits. Too small values will be padded + with zeros after the dot. @@ -3761,11 +3780,16 @@ Localized message formatting class for a Unity keyboard event. Use it as a generic parameter when creating a descendants. + Even though the name assumes it's only relevant to keyboard, it is not! A mouse or + joystick action can also be a part of a "keyboard event", e.g. Ctrl + LMB. + + Name overrides for special keys. + A wrapped event value. @@ -4273,6 +4297,58 @@ A string representing the value. + + + Message formatting class for a numeric value. For the values below 1000 the resulted + message is formatted so that it takes 4 digits or less. + + + + Use it as a generic parameter when creating a descendants. + + + + + + + + A wrapped numeric value. + This is the original non-rounded and unscaled value. + + + Constructs an object from a numeric value. + The numeric value in the base units. + + + + Converts a numeric value into a type object. + The numeric value to convert. + An object. + + + Converts a type object into a numeric value. + The object type to convert. + A numeric value. + + + Formats the value into a human friendly string. + + When the value is below 1000, the method tries to present the result in as smal digits + as possible. If the value is greater, then the whole integer part is shown and the fractionap + part is hidden. + + The unscaled numeric value to format. + + The specific float number format to use. If the format is not specified, then it's choosen + basing on the value. + + A formatted and localized string + + + Returns a string formatted as a human friendly distance specification. + A string representing the value. + + Localized message formatting class for a numeric value that represents a velocity. The @@ -4467,6 +4543,72 @@ true when exactly the requested combination is pressed. + + + Verifies if the left-side "symmetrical" keyboard modifiers, defined in the event, are + currently in effect (pressed and hold). The exact match is required. + + + The "symmetrical modifiers" are modifier keys that are represented on the both sides of a + standard 101-key keyboard and, thus, have "left" and "right" keys. + These are: ALT, CTRL, SHIFT, and COMMAND. + + + + + + + Verifies if the right-side "symmetrical" keyboard modifiers, defined in the event, are + currently in effect (pressed and hold). The exact match is required. + + + The "symmetrical modifiers" are modifier keys that are represented on the both sides of a + standard 101-key keyboard and, thus, have "left" and "right" keys. + These are: ALT, CTRL, SHIFT, and COMMAND. + + + + + + + Verifies if any of the "symmetrical" keyboard modifiers, defined in the event, are + currently in effect (pressed and hold). The exact match is required. + + + The "symmetrical modifiers" are modifier keys that are represented on the both sides of a + standard 101-key keyboard and, thus, have "left" and "right" keys. + These are: ALT, CTRL, SHIFT, and COMMAND. + + + + + + Extracts mouse button from a keyboard event definition. + + Only three basic buttons are supported: Left, Right, and Middle. + + The event to extract the button from. + + The button or null if event doesn't have any recognizable mouse button. + + + + Checks if the mouse click event has happen during the frame. + + This check treats "left" and "right" modifiers equally. And it doesn't consider any of the + state modifiers (CAPS, NUM, SCROLL, etc.). + + The event to match for. + + The mouse button that was clicked. If this parameter is omitted, then only the event modifiers + are checked. It can be used to check the "pre-condition". + + + true if the requested combination has matched the current frame state. + + + + Wrapper around a keyboard key code that incapsulates the persiting and the handling logic into @@ -5887,11 +6029,14 @@ side-effects happen and it doesn't use physics incompatible DestroyImmediate method. - The object to destroy. + The object to destroy. Can be null. + + + Searches thru the nodes, implementing the BFS algorithm. @@ -6082,6 +6227,105 @@ Scale for the vertex positions. If not specified then the scale is not affected. + + Base class for the KSP modules. + + This module implements common logic to deal with part's configuration, persistence and + localization. + + The descendants of this module can use the custom persistent fields of groups: + + + + + + + + + + + + + + + + + + Tells if was called on the part. + + + List of events to call to cleanup registered game event listeners. + They are called from the destroy method. + + + + + + + + + + + + + + + + + + + + + Verifies that all part's settings are consistent. + + If there are contradicting settings detected, they must be fixed so that the part could behave + consistently. A warning must be logged to point out what was fixed and to what value. + + Implementations may call this method multiple times at different stages. At the very least + it's called on the module load, but this must not be assumed the only use-case. + + + + + + Shows a UI messages with regard to the currently active vessel. + + The UI messages from the active vessel are shown at the highest priority to bring attention + of the player. The messages from the inactive vessels are shown only as a status, that is not + intended to distract the player from the current vessel operations. + + The message to show. + + Tells if the messages is an error condition report. Such messages will be highlighed. + + + + Initializes the module state according to the settings. + + This method is normally called from OnLoad method, when all the part components are + created, but some of them may be not initialized yet. Under some circumstances it can be + called from the OnStart method (e.g. in the editor or when loading an inconsistent save + file). + + This method is a good place for the module to become aware of the other part modules, but it's + not the right place to deal with the other module settings. + + + This method can be called multiple times in the part's life time, so keep this method + ideponent. Repetative calls to this method should not break the part's logic. + + + + + Registers a game event listener and cleans it up on module destruction. + + Instead of overriding both OnAwake and OnDestroy methods to register/unregister + KSP event listeners, do register via this method. The unregistration will be done + automatically when the component dies. + + The game event to register for. + The event listener. + Helper methods to deal with the part models. @@ -6227,7 +6471,7 @@ Gets the part's variant. The part proto to get the variant for. The part's persistent state. - The part's variant. + The part's variant or null if none defined. Gets the part variant. @@ -6262,6 +6506,93 @@ trigger collisions in the scene, so use carefully. + + Utility class to load Unity assets and bundles into the game in runtime. + + This module works best in conjunction with the UnityDev library. The dynamic assets can + be loaded via this utility, and UnityDev can be used to retrieve the assets. + + + + + Loads an asset from the specified bundle. + + The loaded bundles are cached, so multiple calls for the same bundle won't impact performance + or cause errors. + + + The type of component to retrieve from the prefab object. If it's GameObject, then the + prefab itself is returned. + + The full path to the bundle. + + The prefab name. It can be a GameObject name, or it can be a full Unity path to the + object, which lets avoiding name collisions. + + + If true, then method InitPrefab will be attempted to invoke on + all the components of the loaded prefab. The method can be instance or static, but it + must be public. If the method is absent, it's not an error. Use this ability if Unity + prefabs need some setup before being exposed to the game. + + + The component of type . Can be null if the prefab cannot be + found or the bundle cannot be loaded. + + + + + Loads and initializes all the assets from the bundle file. + + This method extracts all prefabs from teh asset file and makes them availabe to the game. It + also looks for method InitPrefab() thru all the components of at the root prefab object, + and invokes it if found. This method can be implemented by the components to bring the prefab + into a "default" state. + + Every asset bundle is loaded exactly one time and cached. Repetative calls for the same bundle + will be NO-OP. + + + true if bundle has been successfully loaded or found in cache. + The full path to the bundle. + + + + Returns a bundle either from the cache or loads it. + The full path to the bundle. + The asset bundle or null if cannot be loaded. + + + + + Lookups the bundle in the cache. + Only bundles loaded thru KSPDev are considered. + The full path to the bundle. + The asset bundle or null if none found in the cache. + + + + Base script that reacts to the game UI scale changes. + + This component needs to be added to a game object to have effect. The primary targets of this + component are the dynamic prefabs. On scale change, the GUI object will be repositioned + according to its anchors. A message ControlUpdated will be broadcasted to the components + on the parent object to let them updating as needed. + + + + + + + + + + Callback that is called when game settings, like UI scale, are changed. + + + Previously known scale onf UI. + + Set of tools to check the API method arguments. @@ -6550,6 +6881,32 @@ The arguments to format the message. The complete error string. + + Set of tools to invoke callbacks so that the main flow is not affected. + + + Executes an action, intercepting any exceptions that it rises. + + The exceptions that the callback may rise are logged as errors, but the flow is not get + interrupted. Such behavior may be handy when calling cleanup methods or notifying multiple + recepients where the failure is not an option. + + The action to exectue. + + + Executes a function, intercepting any exceptions that it rises. + + The exceptions that the callback may rise are logged as errors, but the flow is not get + interrupted. Such behavior may be handy when calling cleanup methods or notifying multiple + recepients where the failure is not an option. + + The function to call. + + The value that will be returned in case of the function has failed. + + The function return value or if it failed. + The return type. + Simple state machine that allows tracking of the states and checking the basic transition diff --git a/Binaries/KSPDev_Utils_README.md b/Binaries/KSPDev_Utils_README.md index 1b21ba5b..186277f3 100644 --- a/Binaries/KSPDev_Utils_README.md +++ b/Binaries/KSPDev_Utils_README.md @@ -27,3 +27,8 @@ are _much more_ features (read the API docs!): * Well documented KSP interfaces. * Methods to deal with procedural models in the game. * Different helpers for common processing tasks like state machine or delaying a method call. +* Advanced logging system which supports game's setting `verbose logging`. +* Handy classes to deal with the localized content, including commonly used value types (mass, distance, velocity, etc.) and resources. +* Support of dynamically loaded prefabs (see [UnityDev](https://github.com/ihsoft/UnityDev) as well). +* Convience methods to deal with the Unity input. +* Fast an easy way of making debug GUI for your modules: simply annotate the fields that you want adjusting in the game and you are done. diff --git a/CHANGELOG.md b/CHANGELOG.md index fcba08d4..9aa57f0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ # 1.5 (pre-release): +* [Change] `KSP 1.8` compatibility. __WARNING__: the mod won't work with version lower than `KSP 1.8`! # 1.4 (June 7th, 2019): * [Change] Update ES-ES localization. diff --git a/Source-API/KAS-API.csproj b/Source-API/KAS-API.csproj index b79a6c54..7d91d8d5 100644 --- a/Source-API/KAS-API.csproj +++ b/Source-API/KAS-API.csproj @@ -8,7 +8,7 @@ Library KAS KAS-API-v2 - v3.5 + v4.5 False OnBuildSuccess @@ -53,8 +53,11 @@ Q:\KSP_x64_Data\Managed\Assembly-CSharp.dll - - Q:\KSP_x64_Data\Managed\UnityEngine.dll + + Q:\KSP_x64_Data\Managed\UnityEngine.CoreModule.dll + + + Q:\KSP_x64_Data\Managed\UnityEngine.PhysicsModule.dll Q:\KSP_x64_Data\Managed\UnityEngine.UI.dll diff --git a/Source/KAS.csproj b/Source/KAS.csproj index 7c242935..cdc1ae6f 100644 --- a/Source/KAS.csproj +++ b/Source/KAS.csproj @@ -8,7 +8,7 @@ Library KAS KAS - v3.5 + v4.5 False OnBuildSuccess @@ -58,8 +58,11 @@ ..\Binaries\KAS-API-v2.dll - - ..\Binaries\KSPDev_Utils.1.2.dll + + ..\Binaries\KSPDev_Utils.2.0.dll + + + 4.0 Q:\KSP_x64_Data\Managed\System.dll @@ -67,8 +70,23 @@ Q:\KSP_x64_Data\Managed\System.Core.dll - - Q:\KSP_x64_Data\Managed\UnityEngine.dll + + Q:\KSP_x64_Data\Managed\UnityEngine.AudioModule.dll + + + Q:\KSP_x64_Data\Managed\UnityEngine.CoreModule.dll + + + Q:\KSP_x64_Data\Managed\UnityEngine.IMGUIModule.dll + + + Q:\KSP_x64_Data\Managed\UnityEngine.InputLegacyModule.dll + + + Q:\KSP_x64_Data\Managed\UnityEngine.PhysicsModule.dll + + + Q:\KSP_x64_Data\Managed\UnityEngine.TextRenderingModule.dll Q:\KSP_x64_Data\Managed\UnityEngine.UI.dll From f9b9ae57dfe7fe57c44a58cd9f9a7925f0c7fb6a Mon Sep 17 00:00:00 2001 From: ihsoft Date: Sun, 27 Oct 2019 20:53:14 -0700 Subject: [PATCH 10/15] Upgrade examples project --- .../Examples/ILinkSource-Examples.cs | 1 + .../Examples/KAS-API-Examples.csproj | 16 +++++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Source-API/docs_project/Examples/ILinkSource-Examples.cs b/Source-API/docs_project/Examples/ILinkSource-Examples.cs index 5eef4c1a..aa286069 100644 --- a/Source-API/docs_project/Examples/ILinkSource-Examples.cs +++ b/Source-API/docs_project/Examples/ILinkSource-Examples.cs @@ -209,6 +209,7 @@ void InitRenderer() { public abstract AttachNode coupleNode { get; } public abstract AttachNode attachNode { get; } public abstract bool isNodeBlocked { get; } + public abstract string linkNodeName { get; } } #region ILinkSourceExample_BreakFromPhysyicalMethod diff --git a/Source-API/docs_project/Examples/KAS-API-Examples.csproj b/Source-API/docs_project/Examples/KAS-API-Examples.csproj index 1dc46306..615baa9b 100644 --- a/Source-API/docs_project/Examples/KAS-API-Examples.csproj +++ b/Source-API/docs_project/Examples/KAS-API-Examples.csproj @@ -8,7 +8,7 @@ Library Examples Examples - v3.5 + v4.5 Properties False @@ -63,15 +63,21 @@ Q:\KSP_x64_Data\Managed\Assembly-CSharp-firstpass.dll - - ..\..\..\Binaries\KAS-API-v1.dll + + ..\..\..\Binaries\KAS-API-v2.dll - - ..\..\..\Binaries\KSPDev_Utils.0.37.dll + + ..\..\..\Binaries\KSPDev_Utils.2.0.dll Q:\KSP_x64_Data\Managed\UnityEngine.dll + + Q:\KSP_x64_Data\Managed\UnityEngine.CoreModule.dll + + + Q:\KSP_x64_Data\Managed\UnityEngine.IMGUIModule.dll + Q:\KSP_x64_Data\Managed\UnityEngine.UI.dll From 8054d46fa72f232c47affe1f282fbd2692b318e7 Mon Sep 17 00:00:00 2001 From: ihsoft Date: Sun, 27 Oct 2019 20:58:07 -0700 Subject: [PATCH 11/15] Add Chinese loaclization desc --- CHANGELOG.md | 1 + README.md | 2 ++ WikiImages/Chineese-small-flag.png | Bin 0 -> 617 bytes 3 files changed, 3 insertions(+) create mode 100644 WikiImages/Chineese-small-flag.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 9aa57f0c..3f6b0328 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # 1.5 (pre-release): * [Change] `KSP 1.8` compatibility. __WARNING__: the mod won't work with version lower than `KSP 1.8`! +* [Enhancement] Add Chinese localization. # 1.4 (June 7th, 2019): * [Change] Update ES-ES localization. diff --git a/README.md b/README.md index 297a4342..9468650d 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,8 @@ Almost any type allows remotely docking the vessels. Once docked, the vessels be ![Español](https://github.com/ihsoft/KAS/raw/master/WikiImages/Spanish-small-flag.png) Español +![简体中文](https://github.com/ihsoft/KAS/raw/master/WikiImages/Chineese-small-flag.png) 简体中文 + ![Português](https://github.com/ihsoft/KAS/raw/master/WikiImages/Brazil-small-flag.png) Português ![Français](https://github.com/ihsoft/KAS/raw/master/WikiImages/French-small-flag.png) Français diff --git a/WikiImages/Chineese-small-flag.png b/WikiImages/Chineese-small-flag.png new file mode 100644 index 0000000000000000000000000000000000000000..81a0a170ae2964d507e5b658b942c5c7cbef1919 GIT binary patch literal 617 zcmV-v0+#)WP)+8$xU`SJ+Uftu?JA z7GCXtV55bNu`>Pz#=pUYgqWBZV?tsg2M7p=+}-ZJeb3_H;5-!ej_8!Lnfc7jcQS9K zR;xMwgLwciRu=L_S#U;Bk;TQ58#-H^?0|DuJ8lW5Q*_0$@q7gGvr&Kgpeq&?9j$^( zU}P#qMGh$rG3x%zP@YaP%bMmpudk!*yQ1+ZB)DpE?Y;8dpdDLqvEX7M+YzGM3DHbU z_CvaU>_MPtNEQ_?h45C&=$$whyxVawk#Xi;44L4>QMi^-xROzQ+(dMz#LZU$Y2%PO z0{$h-=-n89JY(l=0hh>$H1C4jA3Rj#7@KS2U9@02{%|HHUDT{SDUp0ph))mLtSXl4 zA>Nn;J;11?;AqWzEIo*@+Xp3^uZpF)i1?H4g&xY_45TXx*On7+c<)vV_!le^II?ZQ z?g}b&=!!iyp#%)3@xB$O46S*e^=Bo-cbu;`DNY!Eek&Zg{kmc~dq2jnW~@IgW7cwN zyl?SG&DQInvrq_)dPwnx>2&jZLIJa?vAcq8Dbf`|ya79IzxVc_y}q8su^nAi=)l6x zn*f{87nkpV9Cgcd|H&-hG^lfy&6h>YhIA(|^vV32xwcTQ#rT&ks^m`bWFBMLme6<@ zQMjIATXMRO#7QEP&w3!}aNr@MhXW7$2Qpio{O90b6(hahvTAD800000NkvXXu0mjf DT4N?r literal 0 HcmV?d00001 From 060309db3bc9cfde31ff1760d7b9db31ae1780a9 Mon Sep 17 00:00:00 2001 From: ihsoft Date: Sun, 27 Oct 2019 20:58:52 -0700 Subject: [PATCH 12/15] Fix #279 --- CHANGELOG.md | 1 + Parts/Winch2/part.cfg | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f6b0328..40c7328e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # 1.5 (pre-release): * [Change] `KSP 1.8` compatibility. __WARNING__: the mod won't work with version lower than `KSP 1.8`! * [Enhancement] Add Chinese localization. +* [Fix #279] Can't surface attach the hw-80 winch. # 1.4 (June 7th, 2019): * [Change] Update ES-ES localization. diff --git a/Parts/Winch2/part.cfg b/Parts/Winch2/part.cfg index cb67ab20..355bc9d8 100644 --- a/Parts/Winch2/part.cfg +++ b/Parts/Winch2/part.cfg @@ -7,6 +7,7 @@ PART node_stack_front = -0.155, 0.0, -0.241805, 0.0, 0.0, -1.0, 0 node_stack_top = 0.0, 0.1, 0.0, 0.0, 1.0, 0.0, 0 node_stack_bottom = 0.0, -0.1, 0.0, 0.0, -1.0, 0.0, 0 + node_attach = 0.0, 0.1, 0.0, 0.0, 1.0, 0.0, 0 TechRequired = actuators entryCost = 24400 cost = 2400 From c2932ca542a53d611537cf08e0e736f1b627c1e5 Mon Sep 17 00:00:00 2001 From: ihsoft Date: Sun, 27 Oct 2019 21:11:56 -0700 Subject: [PATCH 13/15] Point CKAN to Spacedock --- KAS.netkan | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/KAS.netkan b/KAS.netkan index 7745252c..35cdf445 100644 --- a/KAS.netkan +++ b/KAS.netkan @@ -19,6 +19,5 @@ "license" : "public-domain", "author" : [ "IgorZ" ], "$vref" : "#/ckan/ksp-avc", - "$kref" : "#/ckan/curse/223900", - "x_netkan_version_edit" : "^v(?.+)$" + "$kref" : "#/ckan/spacedock/1987" } From 1ba71f5a5236a2d7a4720262bfd602126f85c10f Mon Sep 17 00:00:00 2001 From: ihsoft Date: Sun, 27 Oct 2019 21:12:18 -0700 Subject: [PATCH 14/15] Fix .version to KSP 1.8 --- KAS.version | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/KAS.version b/KAS.version index 4b0f7067..a0f3d10a 100644 --- a/KAS.version +++ b/KAS.version @@ -7,18 +7,18 @@ }, "KSP_VERSION": { "MAJOR": 1, - "MINOR": 7, - "PATCH": 1 + "MINOR": 8, + "PATCH": 0 }, "KSP_VERSION_MAX": { "MAJOR": 1, - "MINOR": 7, + "MINOR": 8, "PATCH": 99 }, "KSP_VERSION_MIN": { "MAJOR": 1, - "MINOR": 7, - "PATCH": 1 + "MINOR": 8, + "PATCH": 0 }, "NAME": "KAS", "URL": "https://github.com/ihsoft/KAS/blob/master/KAS.version", From e1b09a4423e222b39ff1f604aeb65f8fb2c490ee Mon Sep 17 00:00:00 2001 From: ihsoft Date: Sun, 27 Oct 2019 21:13:52 -0700 Subject: [PATCH 15/15] Release v1.5 --- KAS.version | 6 +++--- Tools/publish_curseforge_args.txt | 2 +- Tools/publish_github_args.txt | 2 +- Tools/publish_spacedock_args.txt | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/KAS.version b/KAS.version index a0f3d10a..bbd10942 100644 --- a/KAS.version +++ b/KAS.version @@ -23,9 +23,9 @@ "NAME": "KAS", "URL": "https://github.com/ihsoft/KAS/blob/master/KAS.version", "VERSION": { - "BUILD": 36908, + "BUILD": 36384, "MAJOR": 1, - "MINOR": 4, - "PATCH": 7097 + "MINOR": 5, + "PATCH": 7239 } } \ No newline at end of file diff --git a/Tools/publish_curseforge_args.txt b/Tools/publish_curseforge_args.txt index 33b1b96b..7a85f9fd 100644 --- a/Tools/publish_curseforge_args.txt +++ b/Tools/publish_curseforge_args.txt @@ -4,4 +4,4 @@ --github=ihsoft/KAS --versions=latest_all_builds --title=KAS {tag} ---archive=../KAS_v1.4.zip +--archive=../KAS_v1.5.zip diff --git a/Tools/publish_github_args.txt b/Tools/publish_github_args.txt index 19e62535..f847da5a 100644 --- a/Tools/publish_github_args.txt +++ b/Tools/publish_github_args.txt @@ -4,4 +4,4 @@ --changelog=../CHANGELOG.md --as_draft --title=KAS v{tag} ---archive=../KAS_v1.4.zip +--archive=../KAS_v1.5.zip diff --git a/Tools/publish_spacedock_args.txt b/Tools/publish_spacedock_args.txt index 333a3521..71a659b4 100644 --- a/Tools/publish_spacedock_args.txt +++ b/Tools/publish_spacedock_args.txt @@ -3,4 +3,4 @@ --changelog=../CHANGELOG.md --github=ihsoft/KAS --ksp_version=latest ---archive=../KAS_v1.4.zip +--archive=../KAS_v1.5.zip