From 70c6b3acb8044058ca8ce6b57ff4805181c2daf7 Mon Sep 17 00:00:00 2001 From: Thomas Karl Pietrowski Date: Fri, 2 Dec 2016 20:58:16 +0100 Subject: [PATCH 001/589] QML: Remove name of application For me having "Cura" under the logo actually doesn't make sense, as it is quite obvious by the logo that we are talking about _Cura_ here. So in my opinion we can prefix the application version here with "version: " instead. Untested but it should work (fingers crossed) --- resources/qml/AboutDialog.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/AboutDialog.qml b/resources/qml/AboutDialog.qml index e81c0e3ca8..3bd76ea3b3 100644 --- a/resources/qml/AboutDialog.qml +++ b/resources/qml/AboutDialog.qml @@ -40,7 +40,7 @@ UM.Dialog { id: version - text: "Cura %1".arg(UM.Application.version) + text: catalog.i18nc("@label","version: %1").arg(UM.Application.version) font: UM.Theme.getFont("large") anchors.horizontalCenter : logo.horizontalCenter anchors.horizontalCenterOffset : (logo.width * 0.25) From 326e0b2fbd3130468d04e8d1a5be888178960e69 Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Wed, 23 Aug 2017 11:28:58 +0100 Subject: [PATCH 002/589] Add relative_extrusion setting to special modes category. Default value is true for RepRap firmware, otherwise false. --- resources/definitions/fdmprinter.def.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 21de5524cf..6b2f3d9c90 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4919,6 +4919,16 @@ "enabled": "magic_spiralize", "settable_per_mesh": false, "settable_per_extruder": false + }, + "relative_extrusion": + { + "label": "Use Relative Extrusion", + "description": "Use relative extrusion rather than absolute extrusion. Before, Cura always used absolute extrusion. Most printers can cope with either relative or absolute extrusion.", + "type": "bool", + "default_value": "machine_gcode_flavor==\"RepRap (RepRap)\"", + "enabled": true, + "settable_per_mesh": false, + "settable_per_extruder": false } } }, From d536630501d0f7f73c7005f6667fe0b78049f55a Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Wed, 23 Aug 2017 11:45:35 +0100 Subject: [PATCH 003/589] Fix initial value for relative_extrusion. --- resources/definitions/fdmprinter.def.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 6b2f3d9c90..b20c43be83 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4925,7 +4925,8 @@ "label": "Use Relative Extrusion", "description": "Use relative extrusion rather than absolute extrusion. Before, Cura always used absolute extrusion. Most printers can cope with either relative or absolute extrusion.", "type": "bool", - "default_value": "machine_gcode_flavor==\"RepRap (RepRap)\"", + "default_value": false, + "value": "machine_gcode_flavor==\"RepRap (RepRap)\"", "enabled": true, "settable_per_mesh": false, "settable_per_extruder": false From 6656cd0c36bc687af0f84a7ecc96c015518adada Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 23 Aug 2017 13:26:47 +0200 Subject: [PATCH 004/589] Hide adhesion & support options if they are disabled for the current printer --- resources/qml/SidebarSimple.qml | 94 ++++++++++++++------------------- 1 file changed, 39 insertions(+), 55 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index f988ae0e8b..f3917fb444 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -248,25 +248,30 @@ Item } } - Item + Grid { id: helpersCell anchors.top: infillCellRight.bottom anchors.topMargin: UM.Theme.getSize("default_margin").height * 2 anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width anchors.right: parent.right - height: childrenRect.height + anchors.rightMargin: UM.Theme.getSize("default_margin").width + + columns: 2 + columnSpacing: UM.Theme.getSize("default_margin").width + rowSpacing: UM.Theme.getSize("default_lining").height Text { id: enableSupportLabel - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - anchors.verticalCenter: enableSupportCheckBox.verticalCenter - width: parent.width * .45 - 3 * UM.Theme.getSize("default_margin").width - text: catalog.i18nc("@label", "Generate Support"); - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); + visible: enableSupportCheckBox.visible + height: enableSupportCheckBox.height + width: base.width * .45 - 3 * UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@label", "Generate Support") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + verticalAlignment: Text.AlignVCenter } CheckBox @@ -274,14 +279,11 @@ Item id: enableSupportCheckBox property alias _hovered: enableSupportMouseArea.containsMouse - anchors.top: parent.top - anchors.left: enableSupportLabel.right - anchors.leftMargin: UM.Theme.getSize("default_margin").width - - style: UM.Theme.styles.checkbox; + style: UM.Theme.styles.checkbox enabled: base.settingsEnabled + visible: supportEnabled.properties.enabled == "True" - checked: supportEnabled.properties.value == "True"; + checked: supportEnabled.properties.value == "True" MouseArea { @@ -296,7 +298,7 @@ Item } onEntered: { - base.showTooltip(enableSupportCheckBox, Qt.point(-enableSupportCheckBox.x, 0), + base.showTooltip(enableSupportCheckBox, Qt.point(-enableSupportCheckBox.x - UM.Theme.getSize("default_margin").width, 0), catalog.i18nc("@label", "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing.")); } onExited: @@ -309,20 +311,20 @@ Item Text { id: supportExtruderLabel - visible: (supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1) - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - anchors.verticalCenter: supportExtruderCombobox.verticalCenter - width: parent.width * .45 - 3 * UM.Theme.getSize("default_margin").width - text: catalog.i18nc("@label", "Support Extruder"); - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); + visible: supportExtruderCombobox.visible + height: supportExtruderCombobox.height + + width: base.width * .45 - 3 * UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@label", "Support Extruder") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + verticalAlignment: Text.AlignVCenter } ComboBox { id: supportExtruderCombobox - visible: (supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1) + visible: height > 0 model: extruderModel property string color_override: "" // for manually setting values @@ -339,20 +341,6 @@ Item textRole: 'text' // this solves that the combobox isn't populated in the first time Cura is started - anchors.top: enableSupportCheckBox.bottom - anchors.topMargin: - { - if ((supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1)) - { - return UM.Theme.getSize("default_margin").height; - } - else - { - return 0; - } - } - anchors.left: supportExtruderLabel.right - anchors.leftMargin: UM.Theme.getSize("default_margin").width width: parent.width * .55 height: { @@ -387,7 +375,7 @@ Item acceptedButtons: Qt.NoButton onEntered: { - base.showTooltip(supportExtruderCombobox, Qt.point(-supportExtruderCombobox.x, 0), + base.showTooltip(supportExtruderCombobox, Qt.point(-supportExtruderCombobox.x - UM.Theme.getSize("default_margin").width, 0), catalog.i18nc("@label", "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air.")); } onExited: @@ -409,14 +397,14 @@ Item Text { id: adhesionHelperLabel - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - anchors.verticalCenter: adhesionCheckBox.verticalCenter - width: parent.width * .45 - 3 * UM.Theme.getSize("default_margin").width - text: catalog.i18nc("@label", "Build Plate Adhesion"); - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); + visible: adhesionCheckBox.visible + height: adhesionCheckBox.height + width: base.width * .45 - 3 * UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@label", "Build Plate Adhesion") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter } CheckBox @@ -424,14 +412,10 @@ Item id: adhesionCheckBox property alias _hovered: adhesionMouseArea.containsMouse - anchors.top: supportExtruderCombobox.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height * 2 - anchors.left: adhesionHelperLabel.right - anchors.leftMargin: UM.Theme.getSize("default_margin").width - //: Setting enable printing build-plate adhesion helper checkbox style: UM.Theme.styles.checkbox; enabled: base.settingsEnabled + visible: platformAdhesionType.properties.enabled == "True" checked: platformAdhesionType.properties.value != "skirt" && platformAdhesionType.properties.value != "none" @@ -459,7 +443,7 @@ Item } onEntered: { - base.showTooltip(adhesionCheckBox, Qt.point(-adhesionCheckBox.x, 0), + base.showTooltip(adhesionCheckBox, Qt.point(-adhesionCheckBox.x - UM.Theme.getSize("default_margin").width, 0), catalog.i18nc("@label", "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards.")); } onExited: @@ -582,7 +566,7 @@ Item containerStackId: Cura.MachineManager.activeMachineId key: "adhesion_type" - watchedProperties: [ "value" ] + watchedProperties: [ "value", "enabled" ] storeIndex: 0 } @@ -592,7 +576,7 @@ Item containerStackId: Cura.MachineManager.activeMachineId key: "support_enable" - watchedProperties: [ "value", "description" ] + watchedProperties: [ "value", "enabled", "description" ] storeIndex: 0 } From 2e60a4a5899e836e687307eb2cb41d4bde40cab6 Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Wed, 23 Aug 2017 13:57:46 +0100 Subject: [PATCH 005/589] Tweak relative_extrusion label and blurb. --- resources/definitions/fdmprinter.def.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index b20c43be83..6386e20c91 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4922,8 +4922,8 @@ }, "relative_extrusion": { - "label": "Use Relative Extrusion", - "description": "Use relative extrusion rather than absolute extrusion. Before, Cura always used absolute extrusion. Most printers can cope with either relative or absolute extrusion.", + "label": "Relative Extrusion", + "description": "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps.", "type": "bool", "default_value": false, "value": "machine_gcode_flavor==\"RepRap (RepRap)\"", From 58e2d07cbd2ae4857eb8c9925b39eb688f17e8f8 Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Thu, 31 Aug 2017 10:55:52 +0100 Subject: [PATCH 006/589] Add comment that absolute extrusion mode will always be set before start and end gcode. --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 6386e20c91..a4e3511688 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4923,7 +4923,7 @@ "relative_extrusion": { "label": "Relative Extrusion", - "description": "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps.", + "description": "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before the start and end Gcode are output.", "type": "bool", "default_value": false, "value": "machine_gcode_flavor==\"RepRap (RepRap)\"", From c6d614156f1bd492147d9955f841074ae592f8c7 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 31 Aug 2017 16:09:16 +0200 Subject: [PATCH 007/589] Move the Cura logo into the top bar Looks ugly there, I think, but the colours will be changed eventually so we'll see. Contributes to issue CURA-4213. --- resources/qml/Cura.qml | 22 ---------------------- resources/qml/Topbar.qml | 18 +++++++++++++++++- 2 files changed, 17 insertions(+), 23 deletions(-) diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 85b17e28a2..d4055f59f8 100755 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -353,28 +353,6 @@ UM.MainWindow action: Cura.Actions.open; } - Image - { - id: logo - anchors - { - left: parent.left - leftMargin: UM.Theme.getSize("default_margin").width; - bottom: parent.bottom - bottomMargin: UM.Theme.getSize("default_margin").height; - } - - source: UM.Theme.getImage("logo"); - width: UM.Theme.getSize("logo").width; - height: UM.Theme.getSize("logo").height; - z: -1; - - sourceSize.width: width; - sourceSize.height: height; - } - - - Toolbar { id: toolbar; diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 210b9e1cfa..b66e29cf52 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -29,9 +29,25 @@ Rectangle name:"cura" } + Image + { + id: logo + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.verticalCenter: parent.verticalCenter + + source: UM.Theme.getImage("logo"); + width: UM.Theme.getSize("logo").width; + height: UM.Theme.getSize("logo").height; + + sourceSize.width: width; + sourceSize.height: height; + } + Row { - anchors.left: parent.left + anchors.left: logo.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width anchors.right: machineSelection.left anchors.rightMargin: UM.Theme.getSize("default_margin").width spacing: UM.Theme.getSize("default_margin").width From bec786b140f1f4671516373e6b37df605e0642e9 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 31 Aug 2017 17:13:56 +0200 Subject: [PATCH 008/589] Move printer status icon outside of the monitor button It's positioned on the right side now above the side bar. Contributes to issue CURA-4213. --- resources/qml/Topbar.qml | 163 ++++++++++++++++++++++----------------- 1 file changed, 91 insertions(+), 72 deletions(-) diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index b66e29cf52..d97b6fc10f 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -57,7 +57,6 @@ Rectangle id: showSettings height: UM.Theme.getSize("sidebar_header").height onClicked: base.stopMonitoringPrint() - iconSource: UM.Theme.getIcon("tab_settings"); property color overlayColor: "transparent" property string overlayIconSource: "" text: catalog.i18nc("@title:tab","Prepare") @@ -74,76 +73,6 @@ Rectangle height: UM.Theme.getSize("sidebar_header").height onClicked: base.startMonitoringPrint() text: catalog.i18nc("@title:tab", "Monitor") - iconSource: printerConnected ? UM.Theme.getIcon("tab_monitor_with_status") : UM.Theme.getIcon("tab_monitor") - property color overlayColor: - { - if(!printerAcceptsCommands) - { - return UM.Theme.getColor("status_unknown"); - } - - if(Cura.MachineManager.printerOutputDevices[0].printerState == "maintenance") - { - return UM.Theme.getColor("status_busy"); - } - switch(Cura.MachineManager.printerOutputDevices[0].jobState) - { - case "printing": - case "pre_print": - case "wait_cleanup": - case "pausing": - case "resuming": - return UM.Theme.getColor("status_busy"); - case "ready": - case "": - return UM.Theme.getColor("status_ready"); - case "paused": - return UM.Theme.getColor("status_paused"); - case "error": - return UM.Theme.getColor("status_stopped"); - case "offline": - return UM.Theme.getColor("status_offline"); - default: - return UM.Theme.getColor("text_reversed"); - } - } - property string overlayIconSource: - { - if(!printerConnected) - { - return ""; - } - else if(!printerAcceptsCommands) - { - return UM.Theme.getIcon("tab_status_unknown"); - } - - if(Cura.MachineManager.printerOutputDevices[0].printerState == "maintenance") - { - return UM.Theme.getIcon("tab_status_busy"); - } - - switch(Cura.MachineManager.printerOutputDevices[0].jobState) - { - case "printing": - case "pre_print": - case "wait_cleanup": - case "pausing": - case "resuming": - return UM.Theme.getIcon("tab_status_busy"); - case "ready": - case "": - return UM.Theme.getIcon("tab_status_connected") - case "paused": - return UM.Theme.getIcon("tab_status_paused") - case "error": - return UM.Theme.getIcon("tab_status_stopped") - case "offline": - return UM.Theme.getIcon("tab_status_offline") - default: - return "" - } - } checkable: true checked: base.monitoringPrint @@ -155,12 +84,102 @@ Rectangle ExclusiveGroup { id: sidebarHeaderBarGroup } } + UM.RecolorImage + { + id: machineIcon + width: UM.Theme.getSize("button_icon").width //TODO: Once the light design is merged, the theme defines a different size for the top bar icons. + height: UM.Theme.getSize("button_icon").height + anchors.verticalCenter: parent.verticalCenter + anchors.right: machineSelection.left + anchors.rightMargin: UM.Theme.getSize("default_margin").width //TODO: With the light design comes a different margin here. + + source: printerConnected ? UM.Theme.getIcon("tab_monitor_with_status") : UM.Theme.getIcon("tab_monitor") + } + + UM.RecolorImage + { + id: machineStatusIcon + width: machineIcon.width + height: machineIcon.height + anchors.fill: machineIcon + + source: + { + if(!printerConnected) + { + return ""; + } + else if(!printerAcceptsCommands) + { + return UM.Theme.getIcon("tab_status_unknown"); + } + + if(Cura.MachineManager.printerOutputDevices[0].printerState == "maintenance") + { + return UM.Theme.getIcon("tab_status_busy"); + } + + switch(Cura.MachineManager.printerOutputDevices[0].jobState) + { + case "printing": + case "pre_print": + case "wait_cleanup": + case "pausing": + case "resuming": + return UM.Theme.getIcon("tab_status_busy"); + case "ready": + case "": + return UM.Theme.getIcon("tab_status_connected") + case "paused": + return UM.Theme.getIcon("tab_status_paused") + case "error": + return UM.Theme.getIcon("tab_status_stopped") + case "offline": + return UM.Theme.getIcon("tab_status_offline") + default: + return "" + } + } + color: //TODO: In the light design, this is no longer coloured but takes the colour from the SVG icon. + { + if(!printerAcceptsCommands) + { + return UM.Theme.getColor("status_unknown"); + } + + if(Cura.MachineManager.printerOutputDevices[0].printerState == "maintenance") + { + return UM.Theme.getColor("status_busy"); + } + switch(Cura.MachineManager.printerOutputDevices[0].jobState) + { + case "printing": + case "pre_print": + case "wait_cleanup": + case "pausing": + case "resuming": + return UM.Theme.getColor("status_busy"); + case "ready": + case "": + return UM.Theme.getColor("status_ready"); + case "paused": + return UM.Theme.getColor("status_paused"); + case "error": + return UM.Theme.getColor("status_stopped"); + case "offline": + return UM.Theme.getColor("status_offline"); + default: + return UM.Theme.getColor("text_reversed"); + } + } + } + ToolButton { id: machineSelection text: Cura.MachineManager.activeMachineName - width: UM.Theme.getSize("sidebar").width; + width: UM.Theme.getSize("sidebar").width - machineIcon.width - UM.Theme.getSize("default_margin").width * 2 //TODO: The light design has a different margin here. height: UM.Theme.getSize("sidebar_header").height tooltip: Cura.MachineManager.activeMachineName From d13b693da002ce24eabc8b7107aedede97d43556 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 31 Aug 2017 17:24:12 +0200 Subject: [PATCH 009/589] Hide icons if top bar buttons have no icon Otherwise there's some empty space there and the RecolourImage will colour that space white. Contributes to issue CURA-4213. --- resources/themes/cura/styles.qml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/resources/themes/cura/styles.qml b/resources/themes/cura/styles.qml index 30e3ce9ab8..f96c2380c0 100755 --- a/resources/themes/cura/styles.qml +++ b/resources/themes/cura/styles.qml @@ -156,22 +156,23 @@ QtObject { height: Theme.getSize("button_icon").height UM.RecolorImage { + visible: control.iconSource != "" id: icon color: UM.Theme.getColor("text_reversed") opacity: !control.enabled ? 0.2 : 1.0 source: control.iconSource - width: Theme.getSize("button_icon").width + width: visible ? Theme.getSize("button_icon").width : 0 height: Theme.getSize("button_icon").height sourceSize: Theme.getSize("button_icon") } UM.RecolorImage { - visible: control.overlayIconSource != "" + visible: control.overlayIconSource != "" && control.iconSource != "" color: control.overlayColor opacity: !control.enabled ? 0.2 : 1.0 source: control.overlayIconSource - width: Theme.getSize("button_icon").width + width: visible ? Theme.getSize("button_icon").width : 0 height: Theme.getSize("button_icon").height sourceSize: Theme.getSize("button_icon") @@ -180,7 +181,7 @@ QtObject { { text: control.text; anchors.left: icon.right - anchors.leftMargin: Theme.getSize("default_margin").width + anchors.leftMargin: icon.visible ? Theme.getSize("default_margin").width : 0 anchors.verticalCenter: parent.verticalCenter; font: UM.Theme.getFont("large"); color: UM.Theme.getColor("text_reversed") From 28d18d88e5d95acda95f45b6319e6a415f184ea1 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 31 Aug 2017 17:30:44 +0200 Subject: [PATCH 010/589] Make top bar buttons smaller Contributes to issue CURA-4213. --- resources/themes/cura/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json index 7e5f6ae199..a025f15d1d 100644 --- a/resources/themes/cura/theme.json +++ b/resources/themes/cura/theme.json @@ -293,7 +293,7 @@ "button_icon": [2.5, 2.5], "button_lining": [0, 0], - "topbar_button": [17, 4], + "topbar_button": [8, 4], "button_tooltip": [1.0, 1.3], "button_tooltip_arrow": [0.25, 0.25], From 31af4b7dde6c74c39dca94978204e749071b3f47 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 31 Aug 2017 17:34:23 +0200 Subject: [PATCH 011/589] Remove unused icon Contributes to issue CURA-4213. --- resources/themes/cura/icons/tab_settings.svg | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 resources/themes/cura/icons/tab_settings.svg diff --git a/resources/themes/cura/icons/tab_settings.svg b/resources/themes/cura/icons/tab_settings.svg deleted file mode 100644 index 0d90db81ef..0000000000 --- a/resources/themes/cura/icons/tab_settings.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - From 125dc75a0fd46ab84a9942f9a8f9a93cc9d869d6 Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Fri, 1 Sep 2017 07:54:56 +0100 Subject: [PATCH 012/589] Now blurb for relative_extrusion says absolute extrusion mode will be set before any gcode script is output. --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index a4e3511688..7f0aea874c 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4923,7 +4923,7 @@ "relative_extrusion": { "label": "Relative Extrusion", - "description": "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before the start and end Gcode are output.", + "description": "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output.", "type": "bool", "default_value": false, "value": "machine_gcode_flavor==\"RepRap (RepRap)\"", From 93c56a9d47b8f0229264a85e72f886ec193b3465 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Fri, 1 Sep 2017 15:58:26 +0200 Subject: [PATCH 013/589] rewording of skin preshrink (CURA-4270) now it is worded as being the close operation which includes the skin expansion in the opposite direction --- resources/definitions/fdmprinter.def.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 4220fec011..762419a3aa 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1531,8 +1531,8 @@ }, "skin_preshrink": { - "label": "Skin Pre-Shrink Distance", - "description": "The distance the skins are shrunk before considering them for skin expansion. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model.", + "label": "Skin Removal Width", + "description": "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model.", "unit": "mm", "type": "float", "default_value": 0, @@ -1543,8 +1543,8 @@ { "top_skin_preshrink": { - "label": "Top Skin Pre-Shrink Distance", - "description": "The distance the top skins are shrunk before considering them for skin expansion. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model.", + "label": "Top Skin Removal Width", + "description": "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model.", "unit": "mm", "type": "float", "default_value": 0, @@ -1555,8 +1555,8 @@ }, "bottom_skin_preshrink": { - "label": "Bottom Skin Pre-Shrink Distance", - "description": "The distance the bottom skins are shrunk before considering them for skin expansion. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model.", + "label": "Bottom Skin Removal Width", + "description": "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model.", "unit": "mm", "type": "float", "default_value": 0, From 837a0b190b838c5ffc4deca89b1a14493b5816ab Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Fri, 1 Sep 2017 16:00:19 +0200 Subject: [PATCH 014/589] feat: split skin_expand_distance into children and collapse expand_skins checkboxes (CURA-4270) --- resources/definitions/fdmprinter.def.json | 57 ++++++++----------- .../um3_aa0.8_PP_Draft_Print.inst.cfg | 3 +- .../um3_aa0.8_PP_Superdraft_Print.inst.cfg | 3 +- .../um3_aa0.8_PP_Verydraft_Print.inst.cfg | 3 +- .../um3_aa0.8_TPU_Draft_Print.inst.cfg | 3 +- .../um3_aa0.8_TPU_Superdraft_Print.inst.cfg | 3 +- .../um3_aa0.8_TPU_Verydraft_Print.inst.cfg | 3 +- 7 files changed, 31 insertions(+), 44 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 762419a3aa..b7b5c0108b 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1567,51 +1567,44 @@ } } }, - "expand_skins_into_infill": + "expand_skins_expand_distance": { - "label": "Expand Skins Into Infill", - "description": "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin.", - "type": "bool", - "default_value": false, + "label": "Skin Expand Distance", + "description": "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used.", + "unit": "mm", + "type": "float", + "default_value": 0, + "minimum_value": "-skin_preshrink", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": { - "expand_upper_skins": + "top_skin_expand_distance": { - "label": "Expand Top Skins Into Infill", - "description": "Expand the top skin areas (areas with air above) so that they support infill above.", - "type": "bool", - "default_value": false, - "value": "expand_skins_into_infill", + "label": "Top Skin Expand Distance", + "description": "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used.", + "unit": "mm", + "type": "float", + "default_value": 0, + "value": "expand_skins_expand_distance", + "minimum_value": "-top_skin_preshrink", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, - "expand_lower_skins": + "bottom_skin_expand_distance": { - "label": "Expand Bottom Skins Into Infill", - "description": "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below.", - "type": "bool", - "default_value": false, + "label": "Bottom Skin Expand Distance", + "description": "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used.", + "unit": "mm", + "type": "float", + "default_value": 0, + "value": "expand_skins_expand_distance", + "minimum_value": "-bottom_skin_preshrink", "limit_to_extruder": "top_bottom_extruder_nr", - "value": "expand_skins_into_infill", "settable_per_mesh": true } } }, - "expand_skins_expand_distance": - { - "label": "Skin Expand Distance", - "description": "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient.", - "unit": "mm", - "type": "float", - "default_value": 2.8, - "value": "infill_line_distance * 1.4", - "minimum_value": "0", - "enabled": "expand_upper_skins or expand_lower_skins", - "limit_to_extruder": "top_bottom_extruder_nr", - "settable_per_mesh": true - }, "max_skin_angle_for_expansion": { "label": "Maximum Skin Angle for Expansion", @@ -1623,7 +1616,7 @@ "maximum_value_warning": "45", "maximum_value": "90", "default_value": 20, - "enabled": "expand_upper_skins or expand_lower_skins", + "enabled": "top_skin_expand_distance > 0 or bottom_skin_expand_distance > 0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": @@ -1637,7 +1630,7 @@ "default_value": 2.24, "value": "top_layers * layer_height / math.tan(math.radians(max_skin_angle_for_expansion))", "minimum_value": "0", - "enabled": "expand_upper_skins or expand_lower_skins", + "enabled": "top_skin_expand_distance > 0 or bottom_skin_expand_distance > 0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true } diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg index 8b85d6d7fb..e186a3edc2 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg @@ -14,8 +14,7 @@ setting_version = 2 brim_width = 25 cool_min_layer_time_fan_speed_max = 6 cool_min_speed = 17 -expand_skins_expand_distance = =line_width * 2 -expand_upper_skins = True +top_skin_expand_distance = =line_width * 2 infill_before_walls = True infill_line_width = =round(line_width * 0.7 / 0.8, 2) infill_pattern = tetrahedral diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg index f1042df045..ae9a87623b 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -14,8 +14,7 @@ setting_version = 2 brim_width = 25 cool_min_layer_time_fan_speed_max = 6 cool_min_speed = 17 -expand_skins_expand_distance = =line_width * 2 -expand_upper_skins = True +top_skin_expand_distance = =line_width * 2 infill_before_walls = True infill_line_width = =round(line_width * 0.7 / 0.8, 2) infill_pattern = tetrahedral diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg index 2ddb591127..f687aaabc9 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -14,8 +14,7 @@ setting_version = 2 brim_width = 25 cool_min_layer_time_fan_speed_max = 6 cool_min_speed = 17 -expand_skins_expand_distance = =line_width * 2 -expand_upper_skins = True +top_skin_expand_distance = =line_width * 2 infill_before_walls = True infill_line_width = =round(line_width * 0.7 / 0.8, 2) infill_pattern = tetrahedral diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg index 97deea6740..7902ba5d16 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg @@ -13,8 +13,7 @@ setting_version = 2 [values] brim_width = 8.75 cool_min_layer_time_fan_speed_max = 6 -expand_skins_expand_distance = =line_width * 2 -expand_upper_skins = True +top_skin_expand_distance = =line_width * 2 gradual_infill_step_height = =4 * layer_height gradual_infill_steps = 5 infill_before_walls = True diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg index 7871f330cc..cec4749892 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -13,8 +13,7 @@ setting_version = 2 [values] brim_width = 8.75 cool_min_layer_time_fan_speed_max = 6 -expand_skins_expand_distance = =line_width * 2 -expand_upper_skins = True +top_skin_expand_distance = =line_width * 2 gradual_infill_step_height = =4 * layer_height gradual_infill_steps = 5 infill_before_walls = True diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg index 9da9e3945f..577b5cb711 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -13,8 +13,7 @@ setting_version = 2 [values] brim_width = 8.75 cool_min_layer_time_fan_speed_max = 6 -expand_skins_expand_distance = =line_width * 2 -expand_upper_skins = True +top_skin_expand_distance = =line_width * 2 gradual_infill_step_height = =4 * layer_height gradual_infill_steps = 5 infill_before_walls = True From 88c74b30c2f322d9a3b2f4232a461879af25a9e2 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Mon, 4 Sep 2017 11:48:54 +0200 Subject: [PATCH 015/589] Added missing QML properties --- resources/qml/Topbar.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index d97b6fc10f..bec159e6c5 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -73,7 +73,8 @@ Rectangle height: UM.Theme.getSize("sidebar_header").height onClicked: base.startMonitoringPrint() text: catalog.i18nc("@title:tab", "Monitor") - + property color overlayColor: "transparent" + property string overlayIconSource: "" checkable: true checked: base.monitoringPrint exclusiveGroup: sidebarHeaderBarGroup From e9551d2173f7e3cc3d7cf565e3bad73a7c89b86c Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 4 Sep 2017 15:39:07 +0200 Subject: [PATCH 016/589] Add upgrade script for 2.7 to 3.0 CURA-4270 Changes for the Skin Pre-shrink settings requires upgrade. --- cura/CuraApplication.py | 2 +- .../VersionUpgrade27to30.py | 75 ++++++++++++++++++- .../VersionUpgrade27to30/__init__.py | 35 ++++++++- 3 files changed, 108 insertions(+), 4 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index ee1c1aeec6..a4c77a53e3 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -104,7 +104,7 @@ class CuraApplication(QtApplication): # SettingVersion represents the set of settings available in the machine/extruder definitions. # You need to make sure that this version number needs to be increased if there is any non-backwards-compatible # changes of the settings. - SettingVersion = 2 + SettingVersion = 3 class ResourceTypes: QmlFiles = Resources.UserType + 1 diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py b/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py index a6e541be6d..0388c8820a 100644 --- a/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py +++ b/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py @@ -10,6 +10,7 @@ _renamed_themes = { "cura": "cura-light" } + class VersionUpgrade27to30(VersionUpgrade): ## Gets the version number from a CFG file in Uranium's 2.7 format. # @@ -43,14 +44,84 @@ class VersionUpgrade27to30(VersionUpgrade): parser["general"]["version"] = "5" if "metadata" not in parser: parser["metadata"] = {} - parser["metadata"]["setting_version"] = "2" + parser["metadata"]["setting_version"] = "3" #Renamed themes. if "theme" in parser["general"]: if parser["general"]["theme"] in _renamed_themes: parser["general"]["theme"] = _renamed_themes[parser["general"]["theme"]] + # Renamed settings for skin pre-shrink settings + if parser.has_section("general") and "visible_settings" in parser["general"]: + visible_settings = parser["general"]["visible_settings"].split(";") + new_visible_settings = [] + renamed_skin_preshrink_names = {"expand_upper_skins": "top_skin_expand_distance", + "expand_lower_skins": "bottom_skin_expand_distance"} + for setting in visible_settings: + if setting == "expand_skins_into_infill": + continue # this one is removed + if setting in renamed_skin_preshrink_names: + new_visible_settings.append(renamed_skin_preshrink_names[setting]) + continue #Don't add the original. + new_visible_settings.append(setting) #No special handling, so just add the original visible setting back. + parser["general"]["visible_settings"] = ";".join(new_visible_settings) + # Re-serialise the file. output = io.StringIO() parser.write(output) - return [filename], [output.getvalue()] \ No newline at end of file + return [filename], [output.getvalue()] + + ## Upgrades the given instance container file from version 2.7 to 3.0. + # + # \param serialised The serialised form of the container file. + # \param filename The name of the file to upgrade. + def upgradeOtherContainer(self, serialised, filename): + parser = configparser.ConfigParser(interpolation=None) + parser.read_string(serialised) + + # Update the skin pre-shrink settings: + # - Remove the old ones + # - Do not add the new ones. The default values will be used for them. + if parser.has_section("values"): + for remove_key in ["expand_skins_into_infill", "expand_upper_skins", "expand_lower_skins"]: + if remove_key in parser["values"]: + del parser["values"][remove_key] + + for each_section in ("general", "metadata"): + if not parser.has_section(each_section): + parser.add_section(each_section) + + # Update version numbers + parser["general"]["version"] = "2" + parser["metadata"]["setting_version"] = "3" + + # Re-serialise the file. + output = io.StringIO() + parser.write(output) + return [filename], [output.getvalue()] + + ## Upgrades a container stack from version 2.7 to 3.0. + # + # \param serialised The serialised form of a container stack. + # \param filename The name of the file to upgrade. + def upgradeStack(self, serialised, filename): + parser = configparser.ConfigParser(interpolation=None) + parser.read_string(serialised) + + for each_section in ("general", "metadata"): + if not parser.has_section(each_section): + parser.add_section(each_section) + + # Update version numbers + if "general" not in parser: + parser["general"] = {} + parser["general"]["version"] = "3" + + if "metadata" not in parser: + parser["metadata"] = {} + parser["metadata"]["setting_version"] = "3" + + # Re-serialise the file. + output = io.StringIO() + parser.write(output) + return [filename], [output.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py b/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py index 73e1246360..ece6cb83f2 100644 --- a/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade27to30/__init__.py @@ -9,13 +9,46 @@ def getMetaData(): return { "version_upgrade": { # From To Upgrade function - ("preferences", 4000002): ("preferences", 5000002, upgrade.upgradePreferences), + ("preferences", 4000002): ("preferences", 5000003, upgrade.upgradePreferences), + + ("machine_stack", 3000002): ("machine_stack", 3000003, upgrade.upgradeStack), + ("extruder_train", 3000002): ("extruder_train", 3000003, upgrade.upgradeStack), + + ("quality_changes", 2000002): ("quality_changes", 2000003, upgrade.upgradeOtherContainer), + ("user", 2000002): ("user", 2000003, upgrade.upgradeOtherContainer), + ("quality", 2000002): ("quality", 2000003, upgrade.upgradeOtherContainer), + ("definition_changes", 2000002): ("definition_changes", 2000003, upgrade.upgradeOtherContainer), + ("variant", 2000002): ("variant", 2000003, upgrade.upgradeOtherContainer) }, "sources": { "preferences": { "get_version": upgrade.getCfgVersion, "location": {"."} }, + "machine_stack": { + "get_version": upgrade.getCfgVersion, + "location": {"./machine_instances"} + }, + "extruder_train": { + "get_version": upgrade.getCfgVersion, + "location": {"./extruders"} + }, + "quality_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, + "user": { + "get_version": upgrade.getCfgVersion, + "location": {"./user"} + }, + "definition_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./definition_changes"} + }, + "variant": { + "get_version": upgrade.getCfgVersion, + "location": {"./variants"} + } } } From fdf5dc049e34c5aa2f8ab2699b7537e8f5a90ccf Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 4 Sep 2017 15:47:01 +0200 Subject: [PATCH 017/589] Update all containers to setting_version 3 CURA-4270 --- plugins/XmlMaterialProfile/__init__.py | 1 + resources/quality/abax_pri3/apri3_pla_fast.inst.cfg | 2 +- resources/quality/abax_pri3/apri3_pla_high.inst.cfg | 2 +- resources/quality/abax_pri3/apri3_pla_normal.inst.cfg | 2 +- resources/quality/abax_pri5/apri5_pla_fast.inst.cfg | 2 +- resources/quality/abax_pri5/apri5_pla_high.inst.cfg | 2 +- resources/quality/abax_pri5/apri5_pla_normal.inst.cfg | 2 +- resources/quality/abax_titan/atitan_pla_fast.inst.cfg | 2 +- resources/quality/abax_titan/atitan_pla_high.inst.cfg | 2 +- resources/quality/abax_titan/atitan_pla_normal.inst.cfg | 2 +- resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg | 2 +- .../quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg | 2 +- resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg | 2 +- resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg | 2 +- resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg | 2 +- .../quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg | 2 +- resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg | 2 +- resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg | 2 +- .../cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg | 2 +- .../cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg | 2 +- .../quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg | 2 +- .../cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg | 2 +- .../quality/cartesio/cartesio_global_High_Quality.inst.cfg | 2 +- .../quality/cartesio/cartesio_global_Normal_Quality.inst.cfg | 2 +- .../quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg | 2 +- .../quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg | 2 +- resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg | 2 +- .../quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg | 2 +- .../quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg | 2 +- .../cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg | 2 +- resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg | 2 +- .../quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg | 2 +- .../quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg | 2 +- .../quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg | 2 +- .../quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg | 2 +- .../quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg | 2 +- .../quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg | 2 +- .../cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg | 2 +- .../quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg | 2 +- .../quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg | 2 +- resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg | 2 +- resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg | 2 +- resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg | 2 +- resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg | 2 +- resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg | 2 +- .../quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg | 2 +- resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg | 2 +- resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg | 2 +- .../quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg | 2 +- .../quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg | 2 +- resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg | 2 +- .../quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg | 2 +- .../quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg | 2 +- .../cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg | 2 +- resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg | 2 +- .../quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg | 2 +- resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg | 2 +- .../quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg | 2 +- resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg | 2 +- resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg | 2 +- resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg | 2 +- .../quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg | 2 +- resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg | 2 +- resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg | 2 +- resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg | 2 +- .../quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg | 2 +- resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg | 2 +- resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg | 2 +- resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg | 2 +- .../quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg | 2 +- resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg | 2 +- resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg | 2 +- resources/quality/coarse.inst.cfg | 2 +- resources/quality/draft.inst.cfg | 2 +- resources/quality/extra_coarse.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_abs_high.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_pla_high.inst.cfg | 2 +- resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg | 2 +- resources/quality/high.inst.cfg | 2 +- .../quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg | 2 +- .../imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg | 2 +- .../quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg | 2 +- .../imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg | 2 +- .../quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg | 2 +- .../imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg | 2 +- .../quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg | 2 +- .../imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg | 2 +- .../quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg | 2 +- .../imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg | 2 +- .../quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg | 2 +- .../imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg | 2 +- .../quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg | 2 +- .../quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg | 2 +- .../quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg | 2 +- resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg | 2 +- resources/quality/low.inst.cfg | 2 +- resources/quality/normal.inst.cfg | 2 +- resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg | 2 +- resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg | 2 +- resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg | 2 +- resources/quality/ultimaker2/um2_draft.inst.cfg | 2 +- resources/quality/ultimaker2/um2_high.inst.cfg | 2 +- resources/quality/ultimaker2/um2_low.inst.cfg | 2 +- resources/quality/ultimaker2/um2_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg | 2 +- resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg | 2 +- .../quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg | 2 +- .../quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg | 2 +- .../quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg | 2 +- .../quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pp_0.25_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg | 2 +- .../quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg | 2 +- resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_PVA_Fast_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg | 2 +- .../ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_PVA_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_PVA_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_ABS_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_ABS_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_CPEP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_CPEP_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_CPE_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_CPE_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_Nylon_Fast_Print.inst.cfg | 2 +- .../ultimaker3/um3_bb0.4_Nylon_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_PC_Fast_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_PLA_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_PLA_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_PP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_PP_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.4_TPU_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.4_TPU_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.8_ABS_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_ABS_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.8_CPEP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_CPEP_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.8_CPE_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_CPE_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_Nylon_Fast_Print.inst.cfg | 2 +- .../ultimaker3/um3_bb0.8_Nylon_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.8_PC_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_PC_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.8_PLA_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_PLA_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.8_PP_Fast_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_PP_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_bb0.8_TPU_Fast_print.inst.cfg | 2 +- .../quality/ultimaker3/um3_bb0.8_TPU_Superdraft_Print.inst.cfg | 2 +- resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg | 2 +- resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg | 2 +- .../quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg | 2 +- resources/variants/cartesio_0.25.inst.cfg | 2 +- resources/variants/cartesio_0.4.inst.cfg | 2 +- resources/variants/cartesio_0.8.inst.cfg | 2 +- resources/variants/fabtotum_hyb35.inst.cfg | 2 +- resources/variants/fabtotum_lite04.inst.cfg | 2 +- resources/variants/fabtotum_lite06.inst.cfg | 2 +- resources/variants/fabtotum_pro02.inst.cfg | 2 +- resources/variants/fabtotum_pro04.inst.cfg | 2 +- resources/variants/fabtotum_pro06.inst.cfg | 2 +- resources/variants/fabtotum_pro08.inst.cfg | 2 +- resources/variants/imade3d_jellybox_0.4.inst.cfg | 2 +- resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg | 2 +- resources/variants/ultimaker2_0.25.inst.cfg | 2 +- resources/variants/ultimaker2_0.4.inst.cfg | 2 +- resources/variants/ultimaker2_0.6.inst.cfg | 2 +- resources/variants/ultimaker2_0.8.inst.cfg | 2 +- resources/variants/ultimaker2_extended_0.25.inst.cfg | 2 +- resources/variants/ultimaker2_extended_0.4.inst.cfg | 2 +- resources/variants/ultimaker2_extended_0.6.inst.cfg | 2 +- resources/variants/ultimaker2_extended_0.8.inst.cfg | 2 +- resources/variants/ultimaker2_extended_plus_0.25.inst.cfg | 2 +- resources/variants/ultimaker2_extended_plus_0.4.inst.cfg | 2 +- resources/variants/ultimaker2_extended_plus_0.6.inst.cfg | 2 +- resources/variants/ultimaker2_extended_plus_0.8.inst.cfg | 2 +- resources/variants/ultimaker2_plus_0.25.inst.cfg | 2 +- resources/variants/ultimaker2_plus_0.4.inst.cfg | 2 +- resources/variants/ultimaker2_plus_0.6.inst.cfg | 2 +- resources/variants/ultimaker2_plus_0.8.inst.cfg | 2 +- resources/variants/ultimaker3_aa0.8.inst.cfg | 2 +- resources/variants/ultimaker3_aa04.inst.cfg | 2 +- resources/variants/ultimaker3_bb0.8.inst.cfg | 2 +- resources/variants/ultimaker3_bb04.inst.cfg | 2 +- resources/variants/ultimaker3_extended_aa0.8.inst.cfg | 2 +- resources/variants/ultimaker3_extended_aa04.inst.cfg | 2 +- resources/variants/ultimaker3_extended_bb0.8.inst.cfg | 2 +- resources/variants/ultimaker3_extended_bb04.inst.cfg | 2 +- 308 files changed, 308 insertions(+), 307 deletions(-) diff --git a/plugins/XmlMaterialProfile/__init__.py b/plugins/XmlMaterialProfile/__init__.py index 6ad4a279d0..f38b5ca0ef 100644 --- a/plugins/XmlMaterialProfile/__init__.py +++ b/plugins/XmlMaterialProfile/__init__.py @@ -20,6 +20,7 @@ def getMetaData(): }, "version_upgrade": { ("materials", 1000000): ("materials", 1000002, upgrader.upgradeMaterial), + ("materials", 1000000): ("materials", 1000002, upgrader.upgradeMaterial), }, "sources": { "materials": { diff --git a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg index b002ef1e4d..d0c09692db 100644 --- a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg index 38036404d9..d3df991d53 100644 --- a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] layer_height = 0.1 diff --git a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg index 02d564e8cb..326e35e251 100644 --- a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg index 23baec151b..1484dd33b0 100644 --- a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg index d7996f9578..dfa265d360 100644 --- a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] layer_height = 0.1 diff --git a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg index a0cc6dc00c..81fbf2a42d 100644 --- a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg index 2208ad2fb5..abd58cadb8 100644 --- a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/abax_titan/atitan_pla_high.inst.cfg b/resources/quality/abax_titan/atitan_pla_high.inst.cfg index 91a3bffea6..2cffe3ce8a 100644 --- a/resources/quality/abax_titan/atitan_pla_high.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_high.inst.cfg @@ -7,7 +7,7 @@ type = quality material = generic_pla weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] layer_height = 0.1 diff --git a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg index 4ff47e9c65..f1b6237e07 100644 --- a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg index f6f461f73d..3abcc16f39 100644 --- a/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_abs_175_cartesio_0.25_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg index a86f734c8a..a47fc2b8bf 100644 --- a/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_abs_175_cartesio_0.25_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg index 53e36c4a88..c37b5c677c 100644 --- a/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_abs_175_cartesio_0.4_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg index 1422663537..ec0fdfa07b 100644 --- a/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_abs_175_cartesio_0.4_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg index edd337bb88..211e78357b 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse material = generic_abs_175_cartesio_0.8_mm weight = 3 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg index 78493a273b..319c0748af 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = extra coarse material = generic_abs_175_cartesio_0.8_mm weight = 4 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg index 0b7d6dd8d8..fc3b1e49f0 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_abs_175_cartesio_0.8_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg index 393a419cdc..0c453ed6b0 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_abs_175_cartesio_0.8_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg index 7595ae104e..4052520597 100644 --- a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg +++ b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = dsm_arnitel2045_175_cartesio_0.4_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg index f899082e9c..a8a5e22a3b 100644 --- a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg +++ b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = dsm_arnitel2045_175_cartesio_0.4_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg index f44b33b1d1..30c03d26b5 100644 --- a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse global_quality = True weight = 0 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.4 diff --git a/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg index 6b0a379eb2..2decd9dad3 100644 --- a/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = extra coarse global_quality = True weight = 0 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.6 diff --git a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg index 944f8a1d97..e05392c6fa 100644 --- a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high global_quality = True weight = 0 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.1 diff --git a/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg index c0d1a301f3..182ae137e7 100644 --- a/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal global_quality = True weight = 0 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg index 24610a3332..1a51725339 100644 --- a/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_hips_175_cartesio_0.25_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg index af419719b1..fa845592fa 100644 --- a/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_hips_175_cartesio_0.25_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg index cfc9c0e331..56b5e7ef38 100644 --- a/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_hips_175_cartesio_0.4_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg index e26fcaa037..cad4b5255f 100644 --- a/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_hips_175_cartesio_0.4_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg index d7d1d8aa4d..b52f4df1fa 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse material = generic_hips_175_cartesio_0.8_mm weight = 3 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg index 68c282fd7d..7eba4c99c4 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = extra coarse material = generic_hips_175_cartesio_0.8_mm weight = 4 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg index 33289e0cf2..06ddcc0959 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_hips_175_cartesio_0.8_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg index 1388e9bee1..534d63115b 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_hips_175_cartesio_0.8_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg index f592894188..ba2c95043c 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_nylon_175_cartesio_0.25_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg index 73c1d7010b..fb9393577f 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_nylon_175_cartesio_0.25_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg index 8108a48c53..92c00bc5df 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_nylon_175_cartesio_0.4_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg index 89114b1a79..389a01fcb4 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_nylon_175_cartesio_0.4_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg index 5a35735d11..f8ed2fbf41 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse material = generic_nylon_175_cartesio_0.8_mm weight = 3 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg index 4a20f2e0e7..607069e4db 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = extra coarse material = generic_nylon_175_cartesio_0.8_mm weight = 4 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg index 15e3834090..3c1bbffa83 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_nylon_175_cartesio_0.8_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg index 34c0d66899..e964ab95b2 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_nylon_175_cartesio_0.8_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg index 3de6c83fb8..86f2dbf91f 100644 --- a/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pc_175_cartesio_0.25_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg index 0361b789ba..f24f3caed0 100644 --- a/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pc_175_cartesio_0.25_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg index 94b3fe9278..3d44cfd39f 100644 --- a/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pc_175_cartesio_0.4_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg index 11723cc92b..fe873f537a 100644 --- a/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pc_175_cartesio_0.4_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg index 070f73fa0e..4e802a4e9b 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse material = generic_pc_175_cartesio_0.8_mm weight = 3 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg index 26662accf5..21153fce38 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = extra coarse material = generic_pc_175_cartesio_0.8_mm weight = 4 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg index 64a137abf5..a8cc757fbb 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pc_175_cartesio_0.8_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg index a30c4ea884..9574471b1c 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pc_175_cartesio_0.8_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg index b8d2da9500..2efa3ca0da 100644 --- a/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_petg_175_cartesio_0.25_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg index 11e55362ae..377520f471 100644 --- a/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_petg_175_cartesio_0.25_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg index 85560ff953..c31c18b192 100644 --- a/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_petg_175_cartesio_0.4_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg index d1fa4d40ca..1bf8c4a4d6 100644 --- a/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_petg_175_cartesio_0.4_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg index f728848461..599ba08eaa 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse material = generic_petg_175_cartesio_0.8_mm weight = 3 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg index 851b893a96..2f1a138115 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = extra coarse material = generic_petg_175_cartesio_0.8_mm weight = 4 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg index 9c9aa56dab..1a804307c9 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_petg_175_cartesio_0.8_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg index 2e7d86c378..6eca142191 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_petg_175_cartesio_0.8_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg index 5f53ffe133..9cfa09aee7 100644 --- a/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pla_175_cartesio_0.25_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg index 311d287cdc..e87d956a87 100644 --- a/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pla_175_cartesio_0.25_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg index e73581cdd6..3d97fdbae8 100644 --- a/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pla_175_cartesio_0.4_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg index dfa47d2ebb..b99d030c27 100644 --- a/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pla_175_cartesio_0.4_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg index a17454ba87..6835150283 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse material = generic_pla_175_cartesio_0.8_mm weight = 3 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg index 3f4db2d40a..6b4a87d9ec 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = extra coarse material = generic_pla_175_cartesio_0.8_mm weight = 4 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg index 5de8fd3aa8..b017fb9d5d 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pla_175_cartesio_0.8_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg index 1071a139f9..1e3b82dfb8 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pla_175_cartesio_0.8_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg index 222a3d7438..bd170cfccc 100644 --- a/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pva_175_cartesio_0.25_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg index e074b1f1b7..23ba53078b 100644 --- a/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pva_175_cartesio_0.25_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.3 diff --git a/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg index a0df1df247..de12e2987d 100644 --- a/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pva_175_cartesio_0.4_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg index 1e69f794a8..3418cce66c 100644 --- a/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pva_175_cartesio_0.4_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.5 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg index 2ac1aff331..17c9f81d2d 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse material = generic_pva_175_cartesio_0.8_mm weight = 3 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg index 14602d4e95..ffd4e34204 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = extra coarse material = generic_pva_175_cartesio_0.8_mm weight = 4 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg index b21d8b85f6..bd32e91b20 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pva_175_cartesio_0.8_mm weight = 1 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg index 61eb2f89d9..6d309464a6 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pva_175_cartesio_0.8_mm weight = 2 -setting_version = 2 +setting_version = 3 [values] infill_line_width = 0.9 diff --git a/resources/quality/coarse.inst.cfg b/resources/quality/coarse.inst.cfg index bdeda58626..3f197bb50c 100644 --- a/resources/quality/coarse.inst.cfg +++ b/resources/quality/coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = coarse global_quality = True weight = -3 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.4 diff --git a/resources/quality/draft.inst.cfg b/resources/quality/draft.inst.cfg index 15df2f2f08..00932feb68 100644 --- a/resources/quality/draft.inst.cfg +++ b/resources/quality/draft.inst.cfg @@ -9,7 +9,7 @@ type = quality quality_type = draft global_quality = True weight = -2 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/extra_coarse.inst.cfg b/resources/quality/extra_coarse.inst.cfg index 921cfbb981..183fa825e8 100644 --- a/resources/quality/extra_coarse.inst.cfg +++ b/resources/quality/extra_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = Extra coarse global_quality = True weight = -4 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.6 diff --git a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg index 0e8ae3b840..d38323a180 100644 --- a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg @@ -5,7 +5,7 @@ name = Fast Quality [metadata] type = quality -setting_version = 2 +setting_version = 3 material = fabtotum_abs quality_type = fast weight = -1 diff --git a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg index 3aefc3a701..5333512e4c 100644 --- a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg @@ -5,7 +5,7 @@ name = High Quality [metadata] type = quality -setting_version = 2 +setting_version = 3 material = fabtotum_abs quality_type = high weight = 1 diff --git a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg index 81d38cf880..fd0fca7887 100644 --- a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg @@ -5,7 +5,7 @@ name = Normal Quality [metadata] type = quality -setting_version = 2 +setting_version = 3 material = fabtotum_abs quality_type = normal weight = 0 diff --git a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg index 81a95fc26d..1c9e384e77 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = fabtotum_nylon quality_type = fast weight = -1 -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg index 035ad5b968..cffa1f0e86 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = fabtotum_nylon quality_type = high weight = 1 -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg index fccdf42555..c2bec3396e 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = fabtotum_nylon quality_type = normal weight = 0 -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg index debe8165e2..4adda21b5a 100644 --- a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg @@ -5,7 +5,7 @@ name = Fast Quality [metadata] type = quality -setting_version = 2 +setting_version = 3 material = fabtotum_pla quality_type = fast weight = -1 diff --git a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg index c59ecf75bb..e3aed0ab0e 100644 --- a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg @@ -5,7 +5,7 @@ name = High Quality [metadata] type = quality -setting_version = 2 +setting_version = 3 material = fabtotum_pla quality_type = high weight = 1 diff --git a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg index 97351e4e92..81a75283a5 100644 --- a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg @@ -5,7 +5,7 @@ name = Normal Quality [metadata] type = quality -setting_version = 2 +setting_version = 3 material = fabtotum_pla quality_type = normal weight = 0 diff --git a/resources/quality/high.inst.cfg b/resources/quality/high.inst.cfg index 695d500198..846dc58827 100644 --- a/resources/quality/high.inst.cfg +++ b/resources/quality/high.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high global_quality = True weight = 1 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.06 diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg index 2c0dc434ee..ad22aacc18 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_petg_imade3d_jellybox_0.4_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg index f9327873dd..35268229b3 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_petg_imade3d_jellybox_0.4_mm_2-fans weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg index 16ec2d9f1e..ca5f8b5a28 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_petg_imade3d_jellybox_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg index 3302402233..a2b540dc7f 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_petg_imade3d_jellybox_0.4_mm_2-fans weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg index 8ed78edfed..b3472a0cf5 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg index 845f03873d..c7dd462a74 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm_2-fans weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg index b587b64fef..7035deab6e 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg index c4a4b4f465..73e33a74fb 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm_2-fans weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg index 7f2c4ce316..8a14eab5c6 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg index 43bb14577b..64917bc37d 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm_2-fans weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg index 253a3a2dc3..15be25bb1b 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm weight = 2 quality_type = ultrahigh -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg index 8152b9a0c8..b4f0db9cb6 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_imade3d_jellybox_0.4_mm_2-fans weight = 2 quality_type = ultrahigh -setting_version = 2 +setting_version = 3 [values] adhesion_type = skirt diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg index d2b7968813..5d3bf86b90 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -3 material = generic_abs quality_type = coarse -setting_version = 2 +setting_version = 3 [values] layer_height = 0.35 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg index eba5bd3e6d..e29c38f225 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = 1 material = generic_abs quality_type = high -setting_version = 2 +setting_version = 3 [values] layer_height = 0.06 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg index 01972c482c..552ad8901e 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = 0 material = generic_abs quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg index c51dd5794e..a63f9065ef 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -2 material = generic_abs quality_type = draft -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg index 2c0eb0b51e..1449961b6c 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -1 material = generic_abs quality_type = low -setting_version = 2 +setting_version = 3 [values] layer_height = 0.15 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg index 400c45de94..2b3e64c67b 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -3 material = generic_pla quality_type = coarse -setting_version = 2 +setting_version = 3 [values] layer_height = 0.35 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg index d6fe06a5a3..2c14044484 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] layer_height = 0.06 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg index b23d86c931..48617d23df 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = 0 material = generic_pla quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg index 5065794ac8..724c52b40d 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -2 material = generic_pla quality_type = draft -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg index a62b7f1254..7c6f7d5e05 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -1 material = generic_pla quality_type = low -setting_version = 2 +setting_version = 3 [values] layer_height = 0.15 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg index 00a7fa6173..105cf0b199 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -3 material = generic_pla quality_type = coarse -setting_version = 2 +setting_version = 3 [values] layer_height = 0.35 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg index a01298ce58..35aef2e19e 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] layer_height = 0.06 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg index fc03449351..06ec265152 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = 0 material = generic_pla quality_type = normal -setting_version = 2 +setting_version = 3 [values] layer_height = 0.1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg index aa78035704..db47c47fc4 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -2 material = generic_pla quality_type = draft -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg index 70e16a9bea..1ad63191a4 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality weight = -1 material = generic_pla quality_type = low -setting_version = 2 +setting_version = 3 [values] layer_height = 0.15 diff --git a/resources/quality/low.inst.cfg b/resources/quality/low.inst.cfg index 466d741d5f..21e4d0d404 100644 --- a/resources/quality/low.inst.cfg +++ b/resources/quality/low.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = low global_quality = True weight = -1 -setting_version = 2 +setting_version = 3 [values] infill_sparse_density = 10 diff --git a/resources/quality/normal.inst.cfg b/resources/quality/normal.inst.cfg index 0b4cec96d9..acbdf1033e 100644 --- a/resources/quality/normal.inst.cfg +++ b/resources/quality/normal.inst.cfg @@ -8,6 +8,6 @@ type = quality quality_type = normal global_quality = True weight = 0 -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg index d5e02e6c71..deefea63dd 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg @@ -7,7 +7,7 @@ definition = peopoly_moai type = quality weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] infill_sparse_density = 70 diff --git a/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg index a3c4913e5f..f9ed09afca 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg @@ -7,7 +7,7 @@ definition = peopoly_moai type = quality weight = 2 quality_type = extra_high -setting_version = 2 +setting_version = 3 [values] infill_sparse_density = 70 diff --git a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg index a9c52b0c27..7cbd9a84fe 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg @@ -7,7 +7,7 @@ definition = peopoly_moai type = quality weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] infill_sparse_density = 70 diff --git a/resources/quality/ultimaker2/um2_draft.inst.cfg b/resources/quality/ultimaker2/um2_draft.inst.cfg index 6236c34a2c..11bdf03e92 100644 --- a/resources/quality/ultimaker2/um2_draft.inst.cfg +++ b/resources/quality/ultimaker2/um2_draft.inst.cfg @@ -7,7 +7,7 @@ definition = ultimaker2 type = quality quality_type = draft weight = -2 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/ultimaker2/um2_high.inst.cfg b/resources/quality/ultimaker2/um2_high.inst.cfg index 84d6b4219a..63b820479a 100644 --- a/resources/quality/ultimaker2/um2_high.inst.cfg +++ b/resources/quality/ultimaker2/um2_high.inst.cfg @@ -7,7 +7,7 @@ definition = ultimaker2 type = quality quality_type = high weight = 1 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.06 diff --git a/resources/quality/ultimaker2/um2_low.inst.cfg b/resources/quality/ultimaker2/um2_low.inst.cfg index b9c486b61b..bb8ef2fa87 100644 --- a/resources/quality/ultimaker2/um2_low.inst.cfg +++ b/resources/quality/ultimaker2/um2_low.inst.cfg @@ -7,7 +7,7 @@ definition = ultimaker2 type = quality quality_type = low weight = -1 -setting_version = 2 +setting_version = 3 [values] infill_sparse_density = 10 diff --git a/resources/quality/ultimaker2/um2_normal.inst.cfg b/resources/quality/ultimaker2/um2_normal.inst.cfg index 7de0b2eaf6..0673ba9eb4 100644 --- a/resources/quality/ultimaker2/um2_normal.inst.cfg +++ b/resources/quality/ultimaker2/um2_normal.inst.cfg @@ -7,6 +7,6 @@ definition = ultimaker2 type = quality quality_type = normal weight = 0 -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg index d96af5a2db..ba94d1a008 100644 --- a/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_ultimaker2_plus_0.25_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] cool_min_layer_time = 5 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg index 67bb88d190..fa91cb12e5 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_ultimaker2_plus_0.4_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] cool_min_layer_time = 5 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg index 78a4f8affd..97253fb753 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_ultimaker2_plus_0.4_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] cool_min_layer_time = 5 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg index 1489b60916..2b63b8e8be 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pla_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] cool_min_layer_time = 5 diff --git a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg index 0bd094345d..6d4dc257bf 100644 --- a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg @@ -8,7 +8,7 @@ material = generic_pla_ultimaker2_plus_0.6_mm type = quality weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] cool_min_layer_time = 5 diff --git a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg index 1fb5e9e3ea..88d95ebc3f 100644 --- a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg @@ -8,7 +8,7 @@ material = generic_pla_ultimaker2_plus_0.8_mm type = quality weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] cool_min_layer_time = 5 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg index e9c50b6512..e2b7f34549 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.25_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.2 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg index fa3dbaa7b7..aa4918b0c7 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.4_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.2 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg index c125eb7193..0c8b8233fb 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.4_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.2 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg index bac5e2ed6c..de5ddb9726 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.2 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg index 0683e6c8dd..bff307740a 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.6_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.5 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg index 072ea6e61f..510494c0c6 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_abs_ultimaker2_plus_0.8_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.5 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg index afc0d2f301..f47437eb58 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.25_mm weight = -1 quality_type = high -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.2 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg index d3fb7fabf5..7e3dc1a39e 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.4_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.8 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg index 7ff03a4f4e..4be015ce35 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.4_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.8 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg index 6773ea2ad4..9b5ac3c163 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.8 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg index bd118793bc..acac263691 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.6_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.8 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg index 840876899e..a3b15628dd 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_ultimaker2_plus_0.8_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] cool_fan_speed_min = =cool_fan_speed * 0.8 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg index 63b65343a9..4c81178592 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.4_mm weight = -2 quality_type = draft -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg index b588b572c2..216c8568d1 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg index e901295acd..b718af40d9 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.6_mm weight = -2 quality_type = draft -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg index 3120eec993..4e8de61ad6 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.6_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg index 1f532ae167..1e9f1029c6 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.8_mm weight = -2 quality_type = draft -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg index 07f1c73544..f64cd2cf1a 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_cpe_plus_ultimaker2_plus_0.8_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg index 3a59a51085..e136dad3b8 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.25_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg index e5bad30383..e963f8b438 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.25_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg index 4fec2d54bd..134c1d033b 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.4_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg index c8ade1ce20..04469385a0 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg index 8d804390b1..20662c3e21 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.6_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg index 4f16ed5962..b8cd3a1a3a 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.6_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg index bff383cfa3..c615480917 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.8_mm weight = -2 quality_type = draft -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg index 40f8895a39..af20b564e4 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_nylon_ultimaker2_plus_0.8_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg index 0ca3e8aedb..0498e5a81f 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.25_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg index 39044de32e..e4a08a5bb1 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.25_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg index 57374e0c56..c3d3626380 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.4_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg index b2c4b7e2a3..705dfb175a 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg index 73a2324261..5eb29eba57 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.6_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg index c5183c1dde..82a3e56013 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.6_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg index 05fc16958f..890a08608c 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.8_mm weight = -2 quality_type = draft -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg index b6283d4e71..0456166d70 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pc_ultimaker2_plus_0.8_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = raft diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.25_normal.inst.cfg index 4fc0e56abf..13b05df085 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.25_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pp_ultimaker2_plus_0.25_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 supported = False [values] diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg index 6b0cd0b200..ce7e90c039 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pp_ultimaker2_plus_0.4_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg index 1c596ab98d..381ac499c1 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pp_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg index 88814ba2a4..6cbd8a29e5 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pp_ultimaker2_plus_0.6_mm weight = -2 quality_type = draft -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg index da1b928482..c322411606 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pp_ultimaker2_plus_0.6_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg index b4e2ddfa96..aab59cf009 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pp_ultimaker2_plus_0.8_mm weight = -2 quality_type = fast -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg index f31e0dd192..f2453c6752 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_pp_ultimaker2_plus_0.8_mm weight = -3 quality_type = draft -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg index d3e4ad515a..bbb4002d0b 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_tpu_ultimaker2_plus_0.25_mm weight = 1 quality_type = high -setting_version = 2 +setting_version = 3 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg index 7955807721..22fe2566f9 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_tpu_ultimaker2_plus_0.4_mm weight = 0 quality_type = normal -setting_version = 2 +setting_version = 3 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg index 5d0f84ecd8..12a8f6521b 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg @@ -8,7 +8,7 @@ type = quality material = generic_tpu_ultimaker2_plus_0.6_mm weight = -1 quality_type = fast -setting_version = 2 +setting_version = 3 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg index e9a2667261..ea95ac161b 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_abs_ultimaker3_AA_0.4 weight = -2 -setting_version = 2 +setting_version = 3 [values] machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg index 96099347bd..6db50fe270 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast material = generic_abs_ultimaker3_AA_0.4 weight = -1 -setting_version = 2 +setting_version = 3 [values] cool_min_speed = 7 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg index 47c3602277..305de52ea6 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_abs_ultimaker3_AA_0.4 weight = 1 -setting_version = 2 +setting_version = 3 [values] cool_min_speed = 12 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg index dcb29b48c6..fc23b25e3e 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_abs_ultimaker3_AA_0.4 weight = 0 -setting_version = 2 +setting_version = 3 [values] machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg index 2ae57b6333..46a406515c 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_cpe_plus_ultimaker3_AA_0.4 weight = -2 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg index 6fbc466b61..8af2930986 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast material = generic_cpe_plus_ultimaker3_AA_0.4 weight = -1 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg index 58719ca037..6641e0f4ed 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_cpe_plus_ultimaker3_AA_0.4 weight = 1 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg index 89dc4e5df5..c22d6eda31 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_cpe_plus_ultimaker3_AA_0.4 weight = 0 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg index 354efee6ef..96065673d6 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_cpe_ultimaker3_AA_0.4 weight = -2 -setting_version = 2 +setting_version = 3 [values] material_print_temperature = =default_material_print_temperature + 10 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg index ceab77fc4f..e866877b0e 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast material = generic_cpe_ultimaker3_AA_0.4 weight = -1 -setting_version = 2 +setting_version = 3 [values] cool_min_speed = 7 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg index edfe91c8a1..971c222ef7 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_cpe_ultimaker3_AA_0.4 weight = 1 -setting_version = 2 +setting_version = 3 [values] cool_min_speed = 12 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg index 1487d476f0..d77b673721 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_cpe_ultimaker3_AA_0.4 weight = 0 -setting_version = 2 +setting_version = 3 [values] machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg index 6d33e4298a..5f3680c391 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_nylon_ultimaker3_AA_0.4 weight = -2 -setting_version = 2 +setting_version = 3 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg index 189d8efbae..c5dc2c37f9 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast material = generic_nylon_ultimaker3_AA_0.4 weight = -1 -setting_version = 2 +setting_version = 3 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg index 70a72beb50..cb39a20918 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_nylon_ultimaker3_AA_0.4 weight = 1 -setting_version = 2 +setting_version = 3 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg index 324300d11f..0e3467d901 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_nylon_ultimaker3_AA_0.4 weight = 0 -setting_version = 2 +setting_version = 3 [values] adhesion_type = brim diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg index a88e38b560..2a2e7a1010 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_pc_ultimaker3_AA_0.4 weight = -2 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg index 242cca1ecf..8887895e46 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast material = generic_pc_ultimaker3_AA_0.4 weight = -1 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg index 51b025c7c6..07c372f9dc 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pc_ultimaker3_AA_0.4 weight = 1 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg index 23449bcda2..9a7daeed93 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pc_ultimaker3_AA_0.4 weight = 0 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg index 46f043ce65..f2d76753b0 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_pla_ultimaker3_AA_0.4 weight = -2 -setting_version = 2 +setting_version = 3 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg index 10a04ed47b..b78d1598cd 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast material = generic_pla_ultimaker3_AA_0.4 weight = -1 -setting_version = 2 +setting_version = 3 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg index 27d4b20815..0fa518546f 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high material = generic_pla_ultimaker3_AA_0.4 weight = 1 -setting_version = 2 +setting_version = 3 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg index 94e82ede57..ca4a3bf27b 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pla_ultimaker3_AA_0.4 weight = 0 -setting_version = 2 +setting_version = 3 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg index 4228c718c6..7be9425947 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_pp_ultimaker3_AA_0.4 weight = -2 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg index 850ead9120..132a4e6303 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast material = generic_pp_ultimaker3_AA_0.4 weight = -1 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg index e68f13364a..780ad8b2a1 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_pp_ultimaker3_AA_0.4 weight = 0 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PVA_Fast_Print.inst.cfg index 2ce06b2de2..121d9c92bb 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PVA_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ type = quality quality_type = normal material = generic_pva_ultimaker3_AA_0.4 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg index 7450e7112d..f1825240cf 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_tpu_ultimaker3_AA_0.4 weight = -2 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg index 2d07cd8b31..d223a83554 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast material = generic_tpu_ultimaker3_AA_0.4 weight = -1 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg index 1d8467482f..c0b5065f53 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal material = generic_tpu_ultimaker3_AA_0.4 weight = 0 -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg index 41dee1edf4..b55678643d 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_abs_ultimaker3_AA_0.8 weight = -2 -setting_version = 2 +setting_version = 3 [values] line_width = =machine_nozzle_size * 0.875 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg index d757ca32a0..3c21c74d8e 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft material = generic_abs_ultimaker3_AA_0.8 weight = -4 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg index 9f5fddf21b..9c4352043b 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft material = generic_abs_ultimaker3_AA_0.8 weight = -3 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg index feae4a5217..795d224a65 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_cpe_plus_ultimaker3_AA_0.8 weight = -2 -setting_version = 2 +setting_version = 3 [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg index 8a16b26682..58723d05fe 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft material = generic_cpe_plus_ultimaker3_AA_0.8 weight = -4 -setting_version = 2 +setting_version = 3 [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg index bd5b8972b1..e125ec9f0b 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft material = generic_cpe_plus_ultimaker3_AA_0.8 weight = -3 -setting_version = 2 +setting_version = 3 [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg index d920d76417..3c303fc9c2 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_cpe_ultimaker3_AA_0.8 weight = -2 -setting_version = 2 +setting_version = 3 [values] brim_width = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg index 480d63a698..6525e0452f 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft material = generic_cpe_ultimaker3_AA_0.8 weight = -4 -setting_version = 2 +setting_version = 3 [values] brim_width = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg index c1d48f2555..195598e0f9 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft material = generic_cpe_ultimaker3_AA_0.8 weight = -3 -setting_version = 2 +setting_version = 3 [values] brim_width = 15 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg index ec8ba37518..fec8232b59 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_nylon_ultimaker3_AA_0.8 weight = -2 -setting_version = 2 +setting_version = 3 [values] brim_width = 5.6 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg index 90f04b1e8a..8a0004309d 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft material = generic_nylon_ultimaker3_AA_0.8 weight = -4 -setting_version = 2 +setting_version = 3 [values] brim_width = 5.6 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg index 7980541f32..d3729b22d9 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft material = generic_nylon_ultimaker3_AA_0.8 weight = -3 -setting_version = 2 +setting_version = 3 [values] brim_width = 5.6 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg index 18c82b1e2c..dfc3d3ce72 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_pc_ultimaker3_AA_0.8 weight = 0 -setting_version = 2 +setting_version = 3 [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg index 328c5d9f1d..3f9864b72e 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft material = generic_pc_ultimaker3_AA_0.8 weight = -2 -setting_version = 2 +setting_version = 3 [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg index 27ecd7343f..2fe51a392e 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft material = generic_pc_ultimaker3_AA_0.8 weight = -1 -setting_version = 2 +setting_version = 3 [values] brim_width = 14 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg index c528a2523f..eebe1a8e38 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_pla_ultimaker3_AA_0.8 weight = -2 -setting_version = 2 +setting_version = 3 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg index f0f375c7ee..c35bf05908 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft material = generic_pla_ultimaker3_AA_0.8 weight = -4 -setting_version = 2 +setting_version = 3 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg index aabdf1213d..984a825085 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft material = generic_pla_ultimaker3_AA_0.8 weight = -3 -setting_version = 2 +setting_version = 3 [values] cool_fan_full_at_height = =layer_height_0 + 2 * layer_height diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg index e186a3edc2..0eb264a9db 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_pp_ultimaker3_AA_0.8 weight = -2 -setting_version = 2 +setting_version = 3 [values] brim_width = 25 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg index ae9a87623b..cb12f4aedc 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft material = generic_pp_ultimaker3_AA_0.8 weight = -4 -setting_version = 2 +setting_version = 3 [values] brim_width = 25 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg index f687aaabc9..3ceb547378 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft material = generic_pp_ultimaker3_AA_0.8 weight = -3 -setting_version = 2 +setting_version = 3 [values] brim_width = 25 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PVA_Fast_Print.inst.cfg index 9da6595ec8..071a72da0d 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PVA_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ type = quality quality_type = normal material = generic_pva_ultimaker3_AA_0.8 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_aa0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PVA_Superdraft_Print.inst.cfg index ddecefa938..485226fe3d 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PVA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PVA_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ type = quality quality_type = superdraft material = generic_pva_ultimaker3_AA_0.8 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg index 7902ba5d16..0514a22b95 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft material = generic_tpu_ultimaker3_AA_0.8 weight = -2 -setting_version = 2 +setting_version = 3 [values] brim_width = 8.75 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg index cec4749892..805f12ef81 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft material = generic_tpu_ultimaker3_AA_0.8 weight = -4 -setting_version = 2 +setting_version = 3 [values] brim_width = 8.75 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg index 577b5cb711..3d1f29ee21 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft material = generic_tpu_ultimaker3_AA_0.8 weight = -3 -setting_version = 2 +setting_version = 3 [values] brim_width = 8.75 diff --git a/resources/quality/ultimaker3/um3_bb0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_ABS_Fast_Print.inst.cfg index c1271f68e8..65fbb4aa22 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_ABS_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_abs_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_ABS_Superdraft_Print.inst.cfg index 3d4843a07a..d92791970e 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_ABS_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_abs_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_CPEP_Fast_Print.inst.cfg index 355b9fd390..3aa8fc43e0 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_CPEP_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_cpe_plus_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_CPEP_Superdraft_Print.inst.cfg index 3b5c086e13..c3bfa7a731 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_CPEP_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_cpe_plus_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_CPE_Fast_Print.inst.cfg index 695185da03..6594cd4403 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_CPE_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_cpe_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_CPE_Superdraft_Print.inst.cfg index 4cd4dd4c18..4eda6ce767 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_CPE_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_cpe_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_Nylon_Fast_Print.inst.cfg index 29f550fe59..ca4589f150 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_Nylon_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_Nylon_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_nylon_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_Nylon_Superdraft_Print.inst.cfg index c40458ecbe..94dcfe2aff 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_Nylon_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_nylon_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PC_Fast_Print.inst.cfg index 78c4413c5e..46334b219c 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PC_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_pc_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PLA_Fast_Print.inst.cfg index 1f0a724e55..37998b3346 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PLA_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_pla_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PLA_Superdraft_Print.inst.cfg index 6c84ab05a6..51ea4d609a 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PLA_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_pla_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PP_Fast_Print.inst.cfg index a73cfd2332..be9f93c662 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PP_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_pp_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PP_Superdraft_Print.inst.cfg index dbfbd58f9c..d2f54e3137 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PP_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_pp_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg index 4c0c97c3d3..ee57d2b177 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft weight = -2 material = generic_pva_ultimaker3_BB_0.4 -setting_version = 2 +setting_version = 3 [values] material_print_temperature = =default_material_print_temperature + 10 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg index 65f06d51ac..90280ed2ee 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg @@ -8,7 +8,7 @@ weight = -1 type = quality quality_type = fast material = generic_pva_ultimaker3_BB_0.4 -setting_version = 2 +setting_version = 3 [values] material_print_temperature = =default_material_print_temperature + 5 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg index 154371470d..b8d7dd3ada 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg @@ -8,7 +8,7 @@ weight = 1 type = quality quality_type = high material = generic_pva_ultimaker3_BB_0.4 -setting_version = 2 +setting_version = 3 [values] material_standby_temperature = 100 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg index 9818f508e6..32591a38b7 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ weight = 0 type = quality quality_type = normal material = generic_pva_ultimaker3_BB_0.4 -setting_version = 2 +setting_version = 3 [values] material_standby_temperature = 100 diff --git a/resources/quality/ultimaker3/um3_bb0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_TPU_Fast_Print.inst.cfg index f71989d851..ba1eaaf548 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_TPU_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_tpu_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.4_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_TPU_Superdraft_Print.inst.cfg index 13734f3947..783d1dfa80 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_TPU_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_tpu_ultimaker3_BB_0.4 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_ABS_Fast_Print.inst.cfg index 55026ddcbc..7f4dc9f23e 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_ABS_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_abs_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_ABS_Superdraft_Print.inst.cfg index 2b2aa5acd2..c0fe6216c2 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_ABS_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_abs_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_CPEP_Fast_Print.inst.cfg index 1165d6ab2c..4aa96f3a02 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_CPEP_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_cpe_plus_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_CPEP_Superdraft_Print.inst.cfg index 7a309e4abc..5e2d079f20 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_CPEP_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_cpe_plus_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_CPE_Fast_Print.inst.cfg index 97fc8408d0..384d44cf93 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_CPE_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_cpe_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_CPE_Superdraft_Print.inst.cfg index 543ce9fcc6..87bdedb204 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_CPE_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_cpe_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_Nylon_Fast_Print.inst.cfg index 3030decc57..699bb575d2 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_Nylon_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_Nylon_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_nylon_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_Nylon_Superdraft_Print.inst.cfg index ff2b83a685..261d63e6e7 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_Nylon_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_nylon_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PC_Fast_Print.inst.cfg index 30c55627fa..ac8515a1ea 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PC_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_pc_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PC_Superdraft_Print.inst.cfg index 7496e68bf6..12d82993e6 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PC_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PC_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_pc_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PLA_Fast_Print.inst.cfg index 2acbc9713a..f93273a33a 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PLA_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_pla_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PLA_Superdraft_Print.inst.cfg index 2c64ccef98..499af56b4b 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PLA_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_pla_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PP_Fast_Print.inst.cfg index 92921030ca..5ffda57b8b 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PP_Fast_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_pp_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PP_Superdraft_Print.inst.cfg index 534efa78e0..aa50edcf55 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PP_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_pp_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg index 677d13d9d9..a46218f31f 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft weight = -2 material = generic_pva_ultimaker3_BB_0.8 -setting_version = 2 +setting_version = 3 [values] material_print_temperature = =default_material_print_temperature + 5 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg index 8e28e39ef7..4e2f13af07 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft weight = -4 material = generic_pva_ultimaker3_BB_0.8 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.4 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg index e816446f6d..c2d66f59bb 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft weight = -3 material = generic_pva_ultimaker3_BB_0.8 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.3 diff --git a/resources/quality/ultimaker3/um3_bb0.8_TPU_Fast_print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_TPU_Fast_print.inst.cfg index 17e2bf7ba1..6be3b596f9 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_TPU_Fast_print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_TPU_Fast_print.inst.cfg @@ -9,6 +9,6 @@ quality_type = normal material = generic_tpu_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_bb0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_TPU_Superdraft_Print.inst.cfg index 1369ee6d41..e3484b3556 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_TPU_Superdraft_Print.inst.cfg @@ -9,6 +9,6 @@ quality_type = superdraft material = generic_tpu_ultimaker3_BB_0.8 weight = 0 supported = False -setting_version = 2 +setting_version = 3 [values] diff --git a/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg index e564a6ee56..f9976d0fbc 100644 --- a/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = draft global_quality = True weight = -2 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.2 diff --git a/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg index 435d8cc84f..0a30227322 100644 --- a/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = fast global_quality = True weight = -1 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.15 diff --git a/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg index 5917a4bd41..a7028590af 100644 --- a/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = high global_quality = True weight = 0 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.06 diff --git a/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg index fd16913dcf..c8bf165b55 100644 --- a/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = normal global_quality = True weight = 0 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.1 diff --git a/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg index a2ed2c55ff..f3ab433e92 100644 --- a/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = superdraft global_quality = True weight = -4 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.4 diff --git a/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg index 0e12596a8d..46199fcece 100644 --- a/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg @@ -8,7 +8,7 @@ type = quality quality_type = verydraft global_quality = True weight = -3 -setting_version = 2 +setting_version = 3 [values] layer_height = 0.3 diff --git a/resources/variants/cartesio_0.25.inst.cfg b/resources/variants/cartesio_0.25.inst.cfg index 23179b5c7e..a266b10b24 100644 --- a/resources/variants/cartesio_0.25.inst.cfg +++ b/resources/variants/cartesio_0.25.inst.cfg @@ -6,7 +6,7 @@ definition = cartesio [metadata] author = Cartesio type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.25 diff --git a/resources/variants/cartesio_0.4.inst.cfg b/resources/variants/cartesio_0.4.inst.cfg index ad8d98519e..fe52e83622 100644 --- a/resources/variants/cartesio_0.4.inst.cfg +++ b/resources/variants/cartesio_0.4.inst.cfg @@ -6,7 +6,7 @@ definition = cartesio [metadata] author = Cartesio type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/cartesio_0.8.inst.cfg b/resources/variants/cartesio_0.8.inst.cfg index c5bc386558..8a260c1e17 100644 --- a/resources/variants/cartesio_0.8.inst.cfg +++ b/resources/variants/cartesio_0.8.inst.cfg @@ -6,7 +6,7 @@ definition = cartesio [metadata] author = Cartesio type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/fabtotum_hyb35.inst.cfg b/resources/variants/fabtotum_hyb35.inst.cfg index 572ece232b..9d46205941 100644 --- a/resources/variants/fabtotum_hyb35.inst.cfg +++ b/resources/variants/fabtotum_hyb35.inst.cfg @@ -6,7 +6,7 @@ definition = fabtotum [metadata] author = FABtotum type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.35 diff --git a/resources/variants/fabtotum_lite04.inst.cfg b/resources/variants/fabtotum_lite04.inst.cfg index 11c35fa779..9209b2fffc 100644 --- a/resources/variants/fabtotum_lite04.inst.cfg +++ b/resources/variants/fabtotum_lite04.inst.cfg @@ -6,7 +6,7 @@ definition = fabtotum [metadata] author = FABtotum type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/fabtotum_lite06.inst.cfg b/resources/variants/fabtotum_lite06.inst.cfg index 1576aed8b3..8c03f33794 100644 --- a/resources/variants/fabtotum_lite06.inst.cfg +++ b/resources/variants/fabtotum_lite06.inst.cfg @@ -6,7 +6,7 @@ definition = fabtotum [metadata] author = FABtotum type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/fabtotum_pro02.inst.cfg b/resources/variants/fabtotum_pro02.inst.cfg index b5f44d1965..84e1583701 100644 --- a/resources/variants/fabtotum_pro02.inst.cfg +++ b/resources/variants/fabtotum_pro02.inst.cfg @@ -6,7 +6,7 @@ definition = fabtotum [metadata] author = FABtotum type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.2 diff --git a/resources/variants/fabtotum_pro04.inst.cfg b/resources/variants/fabtotum_pro04.inst.cfg index 8358accaaf..3e136e951a 100644 --- a/resources/variants/fabtotum_pro04.inst.cfg +++ b/resources/variants/fabtotum_pro04.inst.cfg @@ -6,7 +6,7 @@ definition = fabtotum [metadata] author = FABtotum type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/fabtotum_pro06.inst.cfg b/resources/variants/fabtotum_pro06.inst.cfg index 304e1ea7a6..7aa789fd17 100644 --- a/resources/variants/fabtotum_pro06.inst.cfg +++ b/resources/variants/fabtotum_pro06.inst.cfg @@ -6,7 +6,7 @@ definition = fabtotum [metadata] author = FABtotum type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/fabtotum_pro08.inst.cfg b/resources/variants/fabtotum_pro08.inst.cfg index dd1dd69e18..f1b9d195e7 100644 --- a/resources/variants/fabtotum_pro08.inst.cfg +++ b/resources/variants/fabtotum_pro08.inst.cfg @@ -6,7 +6,7 @@ definition = fabtotum [metadata] author = FABtotum type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/imade3d_jellybox_0.4.inst.cfg b/resources/variants/imade3d_jellybox_0.4.inst.cfg index b590dec264..e487b6abdc 100644 --- a/resources/variants/imade3d_jellybox_0.4.inst.cfg +++ b/resources/variants/imade3d_jellybox_0.4.inst.cfg @@ -6,7 +6,7 @@ definition = imade3d_jellybox [metadata] author = IMADE3D type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg b/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg index 419506c908..2db00fa0e3 100644 --- a/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg +++ b/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg @@ -6,7 +6,7 @@ definition = imade3d_jellybox [metadata] author = IMADE3D type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_0.25.inst.cfg b/resources/variants/ultimaker2_0.25.inst.cfg index d2d4abc7d4..b0e860cd57 100644 --- a/resources/variants/ultimaker2_0.25.inst.cfg +++ b/resources/variants/ultimaker2_0.25.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2 [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.25 diff --git a/resources/variants/ultimaker2_0.4.inst.cfg b/resources/variants/ultimaker2_0.4.inst.cfg index 325eb04040..b074214138 100644 --- a/resources/variants/ultimaker2_0.4.inst.cfg +++ b/resources/variants/ultimaker2_0.4.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2 [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_0.6.inst.cfg b/resources/variants/ultimaker2_0.6.inst.cfg index 6fb8005ed0..6bd3b06d22 100644 --- a/resources/variants/ultimaker2_0.6.inst.cfg +++ b/resources/variants/ultimaker2_0.6.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2 [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/ultimaker2_0.8.inst.cfg b/resources/variants/ultimaker2_0.8.inst.cfg index 7c256b9416..66d05219b1 100644 --- a/resources/variants/ultimaker2_0.8.inst.cfg +++ b/resources/variants/ultimaker2_0.8.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2 [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/ultimaker2_extended_0.25.inst.cfg b/resources/variants/ultimaker2_extended_0.25.inst.cfg index 4e248c55c4..6496025820 100644 --- a/resources/variants/ultimaker2_extended_0.25.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.25.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_extended [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.25 diff --git a/resources/variants/ultimaker2_extended_0.4.inst.cfg b/resources/variants/ultimaker2_extended_0.4.inst.cfg index 01adecceeb..47be42efd7 100644 --- a/resources/variants/ultimaker2_extended_0.4.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.4.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_extended [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_extended_0.6.inst.cfg b/resources/variants/ultimaker2_extended_0.6.inst.cfg index a93ce8f628..cac05731e8 100644 --- a/resources/variants/ultimaker2_extended_0.6.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.6.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_extended [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/ultimaker2_extended_0.8.inst.cfg b/resources/variants/ultimaker2_extended_0.8.inst.cfg index 9588d017ec..5baaf53163 100644 --- a/resources/variants/ultimaker2_extended_0.8.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.8.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_extended [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg index fa5861ea6d..173e69d893 100644 --- a/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_extended_plus [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.25 diff --git a/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg index ef0bed8305..88e3d291d6 100644 --- a/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_extended_plus [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg index 643b0d3d8c..54b6b90b62 100644 --- a/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_extended_plus [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg index a282b288a2..5616f01699 100644 --- a/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_extended_plus [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/ultimaker2_plus_0.25.inst.cfg b/resources/variants/ultimaker2_plus_0.25.inst.cfg index 14d8d5d899..9aea2e8700 100644 --- a/resources/variants/ultimaker2_plus_0.25.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.25.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.25 diff --git a/resources/variants/ultimaker2_plus_0.4.inst.cfg b/resources/variants/ultimaker2_plus_0.4.inst.cfg index ccc1d246a0..ab3dd807ab 100644 --- a/resources/variants/ultimaker2_plus_0.4.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.4.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/ultimaker2_plus_0.6.inst.cfg b/resources/variants/ultimaker2_plus_0.6.inst.cfg index 40c1f523a8..c3324bd7a8 100644 --- a/resources/variants/ultimaker2_plus_0.6.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.6.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/ultimaker2_plus_0.8.inst.cfg b/resources/variants/ultimaker2_plus_0.8.inst.cfg index 563b955063..d0cd2424bd 100644 --- a/resources/variants/ultimaker2_plus_0.8.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.8.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker2_plus [metadata] author = Ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/ultimaker3_aa0.8.inst.cfg b/resources/variants/ultimaker3_aa0.8.inst.cfg index 1e8366c765..980cfd1a59 100644 --- a/resources/variants/ultimaker3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_aa0.8.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker3 [metadata] author = ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/variants/ultimaker3_aa04.inst.cfg b/resources/variants/ultimaker3_aa04.inst.cfg index dfdd57a075..01299f0853 100644 --- a/resources/variants/ultimaker3_aa04.inst.cfg +++ b/resources/variants/ultimaker3_aa04.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker3 [metadata] author = ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] brim_width = 7 diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg index 8ed7c92511..24c175c2b8 100644 --- a/resources/variants/ultimaker3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_bb0.8.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker3 [metadata] author = ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg index a5aa03f1fa..cd05c9c247 100644 --- a/resources/variants/ultimaker3_bb04.inst.cfg +++ b/resources/variants/ultimaker3_bb04.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker3 [metadata] author = ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) diff --git a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg index 59b057186e..6bd491032e 100644 --- a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker3_extended [metadata] author = ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/variants/ultimaker3_extended_aa04.inst.cfg b/resources/variants/ultimaker3_extended_aa04.inst.cfg index 94a13f2e74..15c53b5930 100644 --- a/resources/variants/ultimaker3_extended_aa04.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa04.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker3_extended [metadata] author = ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] brim_width = 7 diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg index 886167f714..e75545b7f9 100644 --- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker3_extended [metadata] author = ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] acceleration_enabled = True diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg index eb9eefed0c..ffcdc0d4c0 100644 --- a/resources/variants/ultimaker3_extended_bb04.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb04.inst.cfg @@ -6,7 +6,7 @@ definition = ultimaker3_extended [metadata] author = ultimaker type = variant -setting_version = 2 +setting_version = 3 [values] acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) From 51547bf37a03e53506714daec3f53611f28348fe Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 4 Sep 2017 15:49:54 +0200 Subject: [PATCH 018/589] Update setting_version to 3 for XMLMaterial CURA-4270 Technically, this is not right. This is just to postpone a time bomb... The XML material profile needs a setting number instead of getting it derived from the schema version. --- plugins/XmlMaterialProfile/XmlMaterialProfile.py | 2 +- plugins/XmlMaterialProfile/__init__.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index c81e23b219..a9acf9bec9 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -35,7 +35,7 @@ class XmlMaterialProfile(InstanceContainer): # \return The corresponding setting_version. def xmlVersionToSettingVersion(self, xml_version: str) -> int: if xml_version == "1.3": - return 2 + return 3 return 0 #Older than 1.3. def getInheritedFiles(self): diff --git a/plugins/XmlMaterialProfile/__init__.py b/plugins/XmlMaterialProfile/__init__.py index f38b5ca0ef..69c64193b7 100644 --- a/plugins/XmlMaterialProfile/__init__.py +++ b/plugins/XmlMaterialProfile/__init__.py @@ -19,8 +19,7 @@ def getMetaData(): "mimetype": "application/x-ultimaker-material-profile" }, "version_upgrade": { - ("materials", 1000000): ("materials", 1000002, upgrader.upgradeMaterial), - ("materials", 1000000): ("materials", 1000002, upgrader.upgradeMaterial), + ("materials", 1000000): ("materials", 1000003, upgrader.upgradeMaterial), }, "sources": { "materials": { From 308e1793bcff4afca8b81e3ec88787d8268797f5 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 4 Sep 2017 16:55:36 +0200 Subject: [PATCH 019/589] Fix simple mode adhesion checkbox --- resources/qml/SidebarSimple.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index b8c476e24e..5b65f948a2 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -449,7 +449,7 @@ Item // Remove the "user" setting to see if the rest of the stack prescribes a brim or a raft platformAdhesionType.removeFromContainer(0); adhesionType = platformAdhesionType.properties.value; - if(adhesionType == "skirt") + if(adhesionType == "skirt" || adhesionType == "none") { // If the rest of the stack doesn't prescribe an adhesion-type, default to a brim adhesionType = "brim"; From e44aedc4b9ebe45106dc8169fc80db8aa652274c Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 5 Sep 2017 10:56:55 +0200 Subject: [PATCH 020/589] Make logo smaller CURA-4213 --- resources/themes/cura-light/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index a28833903e..1f5b231d27 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -259,7 +259,7 @@ "default_margin": [1.0, 1.0], "default_lining": [0.08, 0.08], "default_arrow": [0.8, 0.8], - "logo": [9.5, 2.0], + "logo": [7.6, 1.6], "sidebar": [35.0, 10.0], "sidebar_margin": [1.71, 1.43], From afb885015572f0c715cc4ea72f67cade7b490b2c Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 5 Sep 2017 10:58:28 +0200 Subject: [PATCH 021/589] Update topbar button style CURA-4213 --- resources/themes/cura-light/styles.qml | 6 +++--- resources/themes/cura-light/theme.json | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index b51d4159d9..57c08ca9d6 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -116,10 +116,10 @@ QtObject { Rectangle { id: underline; - anchors.left: parent.left - anchors.right: parent.right + anchors.horizontalCenter: parent.horizontalCenter anchors.bottom: parent.bottom - height: UM.Theme.getSize("sidebar_header_highlight").height + width: Theme.getSize("topbar_button").width + height: Theme.getSize("sidebar_header_highlight").height color: control.checked ? UM.Theme.getColor("sidebar_header_highlight") : UM.Theme.getColor("sidebar_header_highlight_hover") visible: control.hovered || control.checked } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 1f5b231d27..6d666b6413 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -297,6 +297,7 @@ "button_icon": [2.5, 2.5], "button_lining": [0, 0], + "topbar_logo_right_margin": [3, 0], "topbar_button": [8, 4], "topbar_button_icon": [3.125, 2.5], From 3e3f15d33f0a9f301f5fe61e136f64ed593ef985 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 5 Sep 2017 10:59:12 +0200 Subject: [PATCH 022/589] Larger gap between the logo and topbar buttons CURA-4213 --- resources/qml/Topbar.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 91f7b36bb5..7baeb002f1 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -47,7 +47,7 @@ Rectangle Row { anchors.left: logo.right - anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.leftMargin: UM.Theme.getSize("topbar_logo_right_margin").width anchors.right: machineSelection.left anchors.rightMargin: UM.Theme.getSize("default_margin").width spacing: UM.Theme.getSize("default_margin").width From 3f6f4a129165d0f389fbb1e01261f6c7621320e0 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 5 Sep 2017 11:10:47 +0200 Subject: [PATCH 023/589] Fix merge conflict for topbar monitor button CURA-4106 --- resources/qml/Topbar.qml | 162 +++++++++++++++++---------------------- 1 file changed, 70 insertions(+), 92 deletions(-) diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 7baeb002f1..3fd7baef1c 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -73,8 +73,75 @@ Rectangle height: UM.Theme.getSize("sidebar_header").height onClicked: base.startMonitoringPrint() text: catalog.i18nc("@title:tab", "Monitor") - property color overlayColor: "transparent" - property string overlayIconSource: "" + iconSource: UM.Theme.getIcon("tab_monitor") + property color overlayColor: + { + if(!printerAcceptsCommands) + { + return UM.Theme.getColor("status_unknown"); + } + + if(Cura.MachineManager.printerOutputDevices[0].printerState == "maintenance") + { + return UM.Theme.getColor("status_busy"); + } + switch(Cura.MachineManager.printerOutputDevices[0].jobState) + { + case "printing": + case "pre_print": + case "wait_cleanup": + case "pausing": + case "resuming": + return UM.Theme.getColor("status_busy"); + case "ready": + case "": + return UM.Theme.getColor("status_ready"); + case "paused": + return UM.Theme.getColor("status_paused"); + case "error": + return UM.Theme.getColor("status_stopped"); + case "offline": + return UM.Theme.getColor("status_offline"); + default: + return UM.Theme.getColor("text_reversed"); + } + } + property string overlayIconSource: + { + if(!printerConnected) + { + return ""; + } + else if(!printerAcceptsCommands) + { + return UM.Theme.getIcon("tab_status_unknown"); + } + + if(Cura.MachineManager.printerOutputDevices[0].printerState == "maintenance") + { + return UM.Theme.getIcon("tab_status_busy"); + } + + switch(Cura.MachineManager.printerOutputDevices[0].jobState) + { + case "printing": + case "pre_print": + case "wait_cleanup": + case "pausing": + case "resuming": + return UM.Theme.getIcon("tab_status_busy"); + case "ready": + case "": + return UM.Theme.getIcon("tab_status_connected") + case "paused": + return UM.Theme.getIcon("tab_status_paused") + case "error": + return UM.Theme.getIcon("tab_status_stopped") + default: + return "" + } + } + checkable: true checked: base.monitoringPrint exclusiveGroup: sidebarHeaderBarGroup @@ -85,102 +152,13 @@ Rectangle ExclusiveGroup { id: sidebarHeaderBarGroup } } - UM.RecolorImage - { - id: machineIcon - width: UM.Theme.getSize("button_icon").width //TODO: Once the light design is merged, the theme defines a different size for the top bar icons. - height: UM.Theme.getSize("button_icon").height - anchors.verticalCenter: parent.verticalCenter - anchors.right: machineSelection.left - anchors.rightMargin: UM.Theme.getSize("default_margin").width //TODO: With the light design comes a different margin here. - - source: printerConnected ? UM.Theme.getIcon("tab_monitor_with_status") : UM.Theme.getIcon("tab_monitor") - } - - UM.RecolorImage - { - id: machineStatusIcon - width: machineIcon.width - height: machineIcon.height - anchors.fill: machineIcon - - source: - { - if(!printerConnected) - { - return ""; - } - else if(!printerAcceptsCommands) - { - return UM.Theme.getIcon("tab_status_unknown"); - } - - if(Cura.MachineManager.printerOutputDevices[0].printerState == "maintenance") - { - return UM.Theme.getIcon("tab_status_busy"); - } - - switch(Cura.MachineManager.printerOutputDevices[0].jobState) - { - case "printing": - case "pre_print": - case "wait_cleanup": - case "pausing": - case "resuming": - return UM.Theme.getIcon("tab_status_busy"); - case "ready": - case "": - return UM.Theme.getIcon("tab_status_connected") - case "paused": - return UM.Theme.getIcon("tab_status_paused") - case "error": - return UM.Theme.getIcon("tab_status_stopped") - case "offline": - return UM.Theme.getIcon("tab_status_offline") - default: - return "" - } - } - color: //TODO: In the light design, this is no longer coloured but takes the colour from the SVG icon. - { - if(!printerAcceptsCommands) - { - return UM.Theme.getColor("status_unknown"); - } - - if(Cura.MachineManager.printerOutputDevices[0].printerState == "maintenance") - { - return UM.Theme.getColor("status_busy"); - } - switch(Cura.MachineManager.printerOutputDevices[0].jobState) - { - case "printing": - case "pre_print": - case "wait_cleanup": - case "pausing": - case "resuming": - return UM.Theme.getColor("status_busy"); - case "ready": - case "": - return UM.Theme.getColor("status_ready"); - case "paused": - return UM.Theme.getColor("status_paused"); - case "error": - return UM.Theme.getColor("status_stopped"); - case "offline": - return UM.Theme.getColor("status_offline"); - default: - return UM.Theme.getColor("text_reversed"); - } - } - } ToolButton { id: machineSelection text: Cura.MachineManager.activeMachineName - width: UM.Theme.getSize("sidebar").width - machineIcon.width - UM.Theme.getSize("default_margin").width * 2 //TODO: The light design has a different margin here. + width: UM.Theme.getSize("sidebar").width height: UM.Theme.getSize("sidebar_header").height tooltip: Cura.MachineManager.activeMachineName From 4b08a5611a8c7523f12b39cf67ab1a3812e68858 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 5 Sep 2017 11:37:03 +0200 Subject: [PATCH 024/589] Make topbar transparent and update text style CURA-4213 --- resources/qml/Topbar.qml | 2 +- resources/themes/cura-light/styles.qml | 18 +++++------------- resources/themes/cura-light/theme.json | 8 ++++++++ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 3fd7baef1c..e29b9abf86 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -16,7 +16,7 @@ Rectangle anchors.left: parent.left anchors.right: parent.right height: UM.Theme.getSize("sidebar_header").height - color: UM.Theme.getColor("sidebar_header_bar") + color: "transparent" property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index 57c08ca9d6..cfe35ca789 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -102,15 +102,7 @@ QtObject { anchors.fill: parent; property bool down: control.pressed || (control.checkable && control.checked); - color: { - if(control.pressed || (control.checkable && control.checked)) { - return Theme.getColor("sidebar_header_active"); - } else if(control.hovered) { - return Theme.getColor("sidebar_header_hover"); - } else { - return Theme.getColor("sidebar_header_bar"); - } - } + color: "transparent" Behavior on color { ColorAnimation { duration: 50; } } Rectangle { @@ -165,20 +157,20 @@ QtObject { anchors.left: icon.right anchors.leftMargin: icon.visible ? Theme.getSize("default_margin").width : 0 anchors.verticalCenter: parent.verticalCenter; - font: UM.Theme.getFont("large"); + font: control.checked ? UM.Theme.getFont("large") : UM.Theme.getFont("large_nonbold") color: { if(control.hovered) { - return UM.Theme.getColor("sidebar_header_text_hover"); + return UM.Theme.getColor("topbar_button_text_hovered"); } if(control.checked) { - return UM.Theme.getColor("sidebar_header_text_active"); + return UM.Theme.getColor("topbar_button_text_active"); } else { - return UM.Theme.getColor("sidebar_header_text_inactive"); + return UM.Theme.getColor("topbar_button_text_inactive"); } } } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 6d666b6413..85f62c2851 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -9,6 +9,10 @@ "bold": true, "family": "Open Sans" }, + "large_nonbold": { + "size": 1.25, + "family": "Open Sans" + }, "default": { "size": 1.15, "family": "Open Sans" @@ -59,6 +63,10 @@ "border": [127, 127, 127, 255], "secondary": [245, 245, 245, 255], + "topbar_button_text_active": [0, 0, 0, 255], + "topbar_button_text_inactive": [128, 128, 128, 255], + "topbar_button_text_hovered": [0, 0, 0, 255], + "text": [24, 41, 77, 255], "text_detail": [174, 174, 174, 128], "text_link": [12, 169, 227, 255], From 60c7d2f22e97fb5a8acb291da92291856b528535 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 5 Sep 2017 12:41:43 +0200 Subject: [PATCH 025/589] Update topbar CURA-4213 --- resources/qml/Topbar.qml | 46 +---- .../themes/cura-light/icons/tab_monitor.svg | 4 - .../cura-light/icons/tab_status_busy.svg | 10 +- .../cura-light/icons/tab_status_connected.svg | 8 +- .../cura-light/icons/tab_status_paused.svg | 9 +- .../cura-light/icons/tab_status_stopped.svg | 9 +- .../cura-light/icons/tab_status_unknown.svg | 9 +- resources/themes/cura-light/styles.qml | 183 ++++++++++++------ resources/themes/cura-light/theme.json | 2 +- .../themes/cura/icons/tab_status_busy.svg | 9 - .../cura/icons/tab_status_connected.svg | 7 - .../themes/cura/icons/tab_status_paused.svg | 8 - .../themes/cura/icons/tab_status_stopped.svg | 8 - .../themes/cura/icons/tab_status_unknown.svg | 8 - resources/themes/cura/images/logo.svg | 8 - 15 files changed, 141 insertions(+), 187 deletions(-) delete mode 100644 resources/themes/cura-light/icons/tab_monitor.svg delete mode 100644 resources/themes/cura/icons/tab_status_busy.svg delete mode 100644 resources/themes/cura/icons/tab_status_connected.svg delete mode 100644 resources/themes/cura/icons/tab_status_paused.svg delete mode 100644 resources/themes/cura/icons/tab_status_stopped.svg delete mode 100644 resources/themes/cura/icons/tab_status_unknown.svg delete mode 100644 resources/themes/cura/images/logo.svg diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index e29b9abf86..c5d46873cb 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -64,53 +64,21 @@ Rectangle checked: !base.monitoringPrint exclusiveGroup: sidebarHeaderBarGroup - style: UM.Theme.styles.topbar_header_tab + style: UM.Theme.styles.topbar_header_tab } Button { id: showMonitor + width: UM.Theme.getSize("topbar_button").width height: UM.Theme.getSize("sidebar_header").height onClicked: base.startMonitoringPrint() text: catalog.i18nc("@title:tab", "Monitor") - iconSource: UM.Theme.getIcon("tab_monitor") - property color overlayColor: - { - if(!printerAcceptsCommands) - { - return UM.Theme.getColor("status_unknown"); - } - - if(Cura.MachineManager.printerOutputDevices[0].printerState == "maintenance") - { - return UM.Theme.getColor("status_busy"); - } - switch(Cura.MachineManager.printerOutputDevices[0].jobState) - { - case "printing": - case "pre_print": - case "wait_cleanup": - case "pausing": - case "resuming": - return UM.Theme.getColor("status_busy"); - case "ready": - case "": - return UM.Theme.getColor("status_ready"); - case "paused": - return UM.Theme.getColor("status_paused"); - case "error": - return UM.Theme.getColor("status_stopped"); - case "offline": - return UM.Theme.getColor("status_offline"); - default: - return UM.Theme.getColor("text_reversed"); - } - } - property string overlayIconSource: + property string iconSource: { if(!printerConnected) { - return ""; + return UM.Theme.getIcon("tab_status_unknown"); } else if(!printerAcceptsCommands) { @@ -138,7 +106,7 @@ Rectangle case "error": return UM.Theme.getIcon("tab_status_stopped") default: - return "" + return UM.Theme.getIcon("tab_status_unknown") } } @@ -146,7 +114,7 @@ Rectangle checked: base.monitoringPrint exclusiveGroup: sidebarHeaderBarGroup - style: UM.Theme.styles.topbar_header_tab + style: UM.Theme.styles.topbar_header_tab_no_overlay } ExclusiveGroup { id: sidebarHeaderBarGroup } @@ -215,7 +183,7 @@ Rectangle text: control.text; elide: Text.ElideRight; anchors.left: parent.left; - anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.leftMargin: UM.Theme.getSize("default_margin").width * 2 anchors.right: downArrow.left; anchors.rightMargin: control.rightMargin; anchors.verticalCenter: parent.verticalCenter; diff --git a/resources/themes/cura-light/icons/tab_monitor.svg b/resources/themes/cura-light/icons/tab_monitor.svg deleted file mode 100644 index afc661a22d..0000000000 --- a/resources/themes/cura-light/icons/tab_monitor.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/resources/themes/cura-light/icons/tab_status_busy.svg b/resources/themes/cura-light/icons/tab_status_busy.svg index cf8e384d88..4df1a5b733 100644 --- a/resources/themes/cura-light/icons/tab_status_busy.svg +++ b/resources/themes/cura-light/icons/tab_status_busy.svg @@ -1,9 +1 @@ - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/tab_status_connected.svg b/resources/themes/cura-light/icons/tab_status_connected.svg index 56aecdf0a7..4960e97d0f 100644 --- a/resources/themes/cura-light/icons/tab_status_connected.svg +++ b/resources/themes/cura-light/icons/tab_status_connected.svg @@ -1,7 +1 @@ - - - - - - - \ No newline at end of file +tab_status_connected \ No newline at end of file diff --git a/resources/themes/cura-light/icons/tab_status_paused.svg b/resources/themes/cura-light/icons/tab_status_paused.svg index 0ec744ad86..7358d76305 100644 --- a/resources/themes/cura-light/icons/tab_status_paused.svg +++ b/resources/themes/cura-light/icons/tab_status_paused.svg @@ -1,8 +1 @@ - - - - - - - - \ No newline at end of file +tab_status_paused \ No newline at end of file diff --git a/resources/themes/cura-light/icons/tab_status_stopped.svg b/resources/themes/cura-light/icons/tab_status_stopped.svg index ec1afaec81..d93f477ea7 100644 --- a/resources/themes/cura-light/icons/tab_status_stopped.svg +++ b/resources/themes/cura-light/icons/tab_status_stopped.svg @@ -1,8 +1 @@ - - - - - - - - \ No newline at end of file +tab_status_stopped \ No newline at end of file diff --git a/resources/themes/cura-light/icons/tab_status_unknown.svg b/resources/themes/cura-light/icons/tab_status_unknown.svg index 382a2b2d8b..1ba37e06be 100644 --- a/resources/themes/cura-light/icons/tab_status_unknown.svg +++ b/resources/themes/cura-light/icons/tab_status_unknown.svg @@ -1,8 +1 @@ - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index d40fa1c9d1..cedb861da5 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -90,72 +90,44 @@ QtObject { } } - property Component topbar_header_tab: Component { + property Component topbar_header_tab_no_overlay: Component { ButtonStyle { - background: Item { - implicitWidth: Theme.getSize("topbar_button").width; - implicitHeight: Theme.getSize("topbar_button").height; + background: Rectangle { + implicitHeight: Theme.getSize("topbar_button").height + implicitWidth: Theme.getSize("topbar_button").width + color: "transparent" + anchors.fill: parent - Rectangle { - id: buttonFace; + Rectangle + { + id: underline - anchors.fill: parent; - property bool down: control.pressed || (control.checkable && control.checked); - - color: "transparent" - Behavior on color { ColorAnimation { duration: 50; } } - - Rectangle { - id: underline; - - anchors.horizontalCenter: parent.horizontalCenter - anchors.bottom: parent.bottom - width: Theme.getSize("topbar_button").width - height: Theme.getSize("sidebar_header_highlight").height - color: control.checked ? UM.Theme.getColor("sidebar_header_highlight") : UM.Theme.getColor("sidebar_header_highlight_hover") - visible: control.hovered || control.checked - } + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: parent.bottom + width: parent.width + height: Theme.getSize("sidebar_header_highlight").height + color: control.checked ? UM.Theme.getColor("sidebar_header_highlight") : "transparent" + visible: control.hovered || control.checked } } - label: Item - { + label: Rectangle { implicitHeight: Theme.getSize("topbar_button_icon").height - implicitWidth: Theme.getSize("topbar_button").width; + implicitWidth: Theme.getSize("topbar_button").width + color: "transparent" + anchors.fill: parent + Item { - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter; - width: childrenRect.width - height: Theme.getSize("topbar_button_icon").height - UM.RecolorImage - { - visible: control.iconSource != "" - id: icon - color: UM.Theme.getColor("text_emphasis") - opacity: !control.enabled ? 0.2 : 1.0 - source: control.iconSource - width: visible ? Theme.getSize("topbar_button_icon").width : 0 - height: Theme.getSize("topbar_button_icon").height - - sourceSize: Theme.getSize("topbar_button_icon") - } - UM.RecolorImage - { - visible: control.overlayIconSource != "" && control.iconSource != "" - color: control.overlayColor - opacity: !control.enabled ? 0.2 : 1.0 - source: control.overlayIconSource - width: visible ? Theme.getSize("topbar_button_icon").width : 0 - height: Theme.getSize("topbar_button_icon").height - - sourceSize: Theme.getSize("topbar_button_icon") - } + anchors.centerIn: parent + width: textLabel.width + icon.width + Theme.getSize("default_margin").width / 2 Label { - text: control.text; - anchors.left: icon.right - anchors.leftMargin: icon.visible ? Theme.getSize("default_margin").width : 0 + id: textLabel + text: control.text + anchors.right: icon.visible ? icon.left : parent.right + anchors.rightMargin: icon.visible ? Theme.getSize("default_margin").width / 2 : 0 anchors.verticalCenter: parent.verticalCenter; font: control.checked ? UM.Theme.getFont("large") : UM.Theme.getFont("large_nonbold") color: @@ -174,6 +146,107 @@ QtObject { } } } + Image + { + id: icon + visible: control.iconSource != "" + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + opacity: !control.enabled ? 0.2 : 1.0 + source: control.iconSource + width: visible ? Theme.getSize("topbar_button_icon").width : 0 + height: Theme.getSize("topbar_button_icon").height + + sourceSize: Theme.getSize("topbar_button_icon") + } + } + } + } + } + + property Component topbar_header_tab: Component { + ButtonStyle { + background: Item { + implicitHeight: Theme.getSize("topbar_button").height + implicitWidth: Theme.getSize("topbar_button").width + Theme.getSize("topbar_button_icon").width + + Rectangle { + id: buttonFace; + anchors.fill: parent; + + color: "transparent" + Behavior on color { ColorAnimation { duration: 50; } } + + Rectangle { + id: underline; + + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + width: Theme.getSize("topbar_button").width + Theme.getSize("topbar_button_icon").width + height: Theme.getSize("sidebar_header_highlight").height + color: control.checked ? UM.Theme.getColor("sidebar_header_highlight") : UM.Theme.getColor("sidebar_header_highlight_hover") + visible: control.hovered || control.checked + } + } + } + + label: Item + { + implicitHeight: Theme.getSize("topbar_button_icon").height + implicitWidth: Theme.getSize("topbar_button").width + Theme.getSize("topbar_button_icon").width + Item + { + anchors.horizontalCenter: parent.horizontalCenter + anchors.verticalCenter: parent.verticalCenter; + width: childrenRect.width + height: Theme.getSize("topbar_button_icon").height + Label + { + text: control.text; + anchors.right: (icon.visible || overlayIcon.visible) ? icon.left : parent.right + anchors.rightMargin: (icon.visible || overlayIcon.visible) ? Theme.getSize("default_margin").width : 0 + anchors.verticalCenter: parent.verticalCenter; + font: control.checked ? UM.Theme.getFont("large") : UM.Theme.getFont("large_nonbold") + color: + { + if(control.hovered) + { + return UM.Theme.getColor("topbar_button_text_hovered"); + } + if(control.checked) + { + return UM.Theme.getColor("topbar_button_text_active"); + } + else + { + return UM.Theme.getColor("topbar_button_text_inactive"); + } + } + } + UM.RecolorImage + { + visible: control.iconSource != "" + id: icon + color: UM.Theme.getColor("text_emphasis") + opacity: !control.enabled ? 0.2 : 1.0 + source: control.iconSource + width: visible ? Theme.getSize("topbar_button_icon").width : 0 + height: Theme.getSize("topbar_button_icon").height + + sourceSize: Theme.getSize("topbar_button_icon") + } + UM.RecolorImage + { + id: overlayIcon + visible: control.overlayIconSource != "" && control.iconSource != "" + color: control.overlayColor + opacity: !control.enabled ? 0.2 : 1.0 + source: control.overlayIconSource + width: visible ? Theme.getSize("topbar_button_icon").width : 0 + height: Theme.getSize("topbar_button_icon").height + + sourceSize: Theme.getSize("topbar_button_icon") + } } } } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 398fbac3eb..0eb66c9e76 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -310,7 +310,7 @@ "topbar_logo_right_margin": [3, 0], "topbar_button": [8, 4], - "topbar_button_icon": [3.125, 2.5], + "topbar_button_icon": [1.2, 1.2], "button_tooltip": [1.0, 1.3], "button_tooltip_arrow": [0.25, 0.25], diff --git a/resources/themes/cura/icons/tab_status_busy.svg b/resources/themes/cura/icons/tab_status_busy.svg deleted file mode 100644 index 7b5774e71b..0000000000 --- a/resources/themes/cura/icons/tab_status_busy.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/resources/themes/cura/icons/tab_status_connected.svg b/resources/themes/cura/icons/tab_status_connected.svg deleted file mode 100644 index 7997ffbee6..0000000000 --- a/resources/themes/cura/icons/tab_status_connected.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/resources/themes/cura/icons/tab_status_paused.svg b/resources/themes/cura/icons/tab_status_paused.svg deleted file mode 100644 index 606d4cb96c..0000000000 --- a/resources/themes/cura/icons/tab_status_paused.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/resources/themes/cura/icons/tab_status_stopped.svg b/resources/themes/cura/icons/tab_status_stopped.svg deleted file mode 100644 index 6cd0f18b17..0000000000 --- a/resources/themes/cura/icons/tab_status_stopped.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/resources/themes/cura/icons/tab_status_unknown.svg b/resources/themes/cura/icons/tab_status_unknown.svg deleted file mode 100644 index 5e46eec55b..0000000000 --- a/resources/themes/cura/icons/tab_status_unknown.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/resources/themes/cura/images/logo.svg b/resources/themes/cura/images/logo.svg deleted file mode 100644 index 545b42d193..0000000000 --- a/resources/themes/cura/images/logo.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file From 81b667551826b14eb8ca6be2742732ed66c65a01 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 6 Sep 2017 11:15:40 +0200 Subject: [PATCH 026/589] Improved logging for network output --- plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py index ec1b0ac175..450f92a6e3 100755 --- a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py @@ -1099,8 +1099,11 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): global_container_stack.setMetaDataEntry("network_authentication_id", self._authentication_id) else: global_container_stack.addMetaDataEntry("network_authentication_id", self._authentication_id) - Application.getInstance().saveStack(global_container_stack) # Force save so we are sure the data is not lost. - Logger.log("i", "Authentication succeeded for id %s and key %s", self._authentication_id, self._getSafeAuthKey()) + Logger.log("i", "Authentication succeeded for id %s and key %s", self._authentication_id, self._getSafeAuthKey()) + Application.getInstance().saveStack(global_container_stack) # Force save so we are sure the data is not lost. + else: + Logger.log("w", "Unable to save authentication for id %s and key %s", self._authentication_id, self._getSafeAuthKey()) + else: # Got a response that we didn't expect, so something went wrong. Logger.log("e", "While trying to authenticate, we got an unexpected response: %s", reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)) self.setAuthenticationState(AuthState.NotAuthenticated) From e15a96263d63d58e51a153b2b266d88d624b3f02 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 6 Sep 2017 10:20:38 +0200 Subject: [PATCH 027/589] Update extruder button styles CURA-4211 --- cura/CuraApplication.py | 6 + .../UM3NetworkPrinting/DiscoverUM3Action.py | 1 + resources/qml/ExtruderButton.qml | 11 +- resources/qml/SidebarHeader.qml | 127 ++++++++++++++---- resources/qml/Topbar.qml | 3 +- .../cura-light/icons/extruder_button.svg | 8 +- resources/themes/cura-light/theme.json | 9 +- 7 files changed, 121 insertions(+), 44 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index ee1c1aeec6..0b8705799f 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -125,6 +125,8 @@ class CuraApplication(QtApplication): # Cura will always show the Add Machine Dialog upon start. stacksValidationFinished = pyqtSignal() # Emitted whenever a validation is finished + syncConfigurationFromPrinter = pyqtSignal() # Emitted when the user wants to sync configuration from printer + def __init__(self): # this list of dir names will be used by UM to detect an old cura directory for dir_name in ["extruders", "machine_instances", "materials", "plugins", "quality", "user", "variants"]: @@ -1393,3 +1395,7 @@ class CuraApplication(QtApplication): node = node.getParent() Selection.add(node) + + @pyqtSlot() + def startSyncingConfigurationFromPrinter(self): + self.syncConfigurationFromPrinter.emit() diff --git a/plugins/UM3NetworkPrinting/DiscoverUM3Action.py b/plugins/UM3NetworkPrinting/DiscoverUM3Action.py index af1a556892..ff222b6aeb 100644 --- a/plugins/UM3NetworkPrinting/DiscoverUM3Action.py +++ b/plugins/UM3NetworkPrinting/DiscoverUM3Action.py @@ -26,6 +26,7 @@ class DiscoverUM3Action(MachineAction): self.__additional_components_view = None Application.getInstance().engineCreatedSignal.connect(self._createAdditionalComponentsView) + Application.getInstance().syncConfigurationFromPrinter.connect(self.loadConfigurationFromPrinter) self._last_zeroconf_event_time = time.time() self._zeroconf_change_grace_period = 0.25 # Time to wait after a zeroconf service change before allowing a zeroconf reset diff --git a/resources/qml/ExtruderButton.qml b/resources/qml/ExtruderButton.qml index 0037207e87..039158280a 100644 --- a/resources/qml/ExtruderButton.qml +++ b/resources/qml/ExtruderButton.qml @@ -57,17 +57,18 @@ Button { right: parent.right top: parent.top - margins: UM.Theme.getSize("extruder_button_material_margin").width + rightMargin: UM.Theme.getSize("extruder_button_material_margin").width + topMargin: UM.Theme.getSize("extruder_button_material_margin").height } color: model.color - width: UM.Theme.getSize("extruder_button_material_size").width - height: UM.Theme.getSize("extruder_button_material_size").height + width: UM.Theme.getSize("extruder_button_material").width + height: UM.Theme.getSize("extruder_button_material").height radius: width / 2 - border.width: 0 - border.color: "transparent" + border.width: 1 + border.color: UM.Theme.getColor("extruder_button_material_border") opacity: !base.enabled ? 0.2 : 1.0 } diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index f3ed19d521..0e78cc336d 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -24,41 +24,109 @@ Column Item { - height: UM.Theme.getSize("default_margin").height / 4 - width: height - visible: extruderSelectionRow.visible - } - - Label - { - id: extruderSelectionLabel anchors { left: parent.left - leftMargin: UM.Theme.getSize("default_margin").width + leftMargin: UM.Theme.getSize("sidebar_margin").width right: parent.right - rightMargin: UM.Theme.getSize("default_margin").width + rightMargin: UM.Theme.getSize("sidebar_margin").width + topMargin: UM.Theme.getSize("default_margin").height } - height: UM.Theme.getSize("sidebar_tabs").height / 3 - text: catalog.i18nc("@label", "Extruder configuration") - font: UM.Theme.getFont("default_bold") - color: UM.Theme.getColor("text") visible: extruderSelectionRow.visible + height: syncMachineButton.height + UM.Theme.getSize("sidebar_margin").height / 2 + + Label + { + id: extruderSelectionLabel + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + + height: UM.Theme.getSize("sidebar_tabs").height / 3 + text: catalog.i18nc("@label", "Extruder configuration") + font: UM.Theme.getFont("large") + color: UM.Theme.getColor("text") + visible: extruderSelectionRow.visible + } + + Button + { + id: syncMachineButton + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + text: catalog.i18nc("@button:action", "Sync") + visible: extruderSelectionRow.visible + + property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 + enabled: printerConnected + + onClicked: + { + CuraApplication.startSyncingConfigurationFromPrinter(); + } + + style: ButtonStyle + { + background: Rectangle + { + implicitWidth: UM.Theme.getSize("button").width * 1.1 + implicitHeight: UM.Theme.getSize("sidebar_tabs").height / 3 + color: "transparent" + } + label: Item + { + implicitWidth: UM.Theme.getSize("button").width * 1.1 + implicitHeight: UM.Theme.getSize("sidebar_tabs").height / 3 + Label + { + id: labelText + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_lining").width + anchors.right: downArrow.left + anchors.rightMargin: UM.Theme.getSize("default_margin").width / 2 + anchors.top: parent.top + + text: control.text + font: UM.Theme.getFont("default") + color: control.hovered ? UM.Theme.getColor("sync_button_text_hovered") : UM.Theme.getColor("sync_button_text") + + elide: Text.ElideRight; + verticalAlignment: Text.AlignVCenter; + } + + UM.RecolorImage + { + id: downArrow + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_lining").width * 2 + anchors.top: labelText.top + anchors.topMargin: UM.Theme.getSize("default_margin").height / 3 + + source: UM.Theme.getIcon("arrow_bottom") + width: UM.Theme.getSize("standard_arrow").width + height: UM.Theme.getSize("standard_arrow").height + sourceSize.width: width + 5 + sourceSize.height: width + 5 + + color: control.hovered ? UM.Theme.getColor("sync_button_text_hovered") : UM.Theme.getColor("sync_button_text") + } + } + } + } } Item { id: extruderSelectionRow width: parent.width - height: UM.Theme.getSize("sidebar_tabs").height + height: UM.Theme.getSize("sidebar_tabs").height * 2 / 3 visible: machineExtruderCount.properties.value > 1 && !sidebar.monitoringPrint anchors { left: parent.left - leftMargin: UM.Theme.getSize("default_margin").width + leftMargin: UM.Theme.getSize("default_margin").width * 1.5 right: parent.right - rightMargin: UM.Theme.getSize("default_margin").width + rightMargin: UM.Theme.getSize("default_margin").width * 1.5 } ListView @@ -136,7 +204,7 @@ Column width: { var extruderTextWidth = extruderStaticText.visible ? extruderStaticText.width : 0; var iconWidth = extruderIconItem.width; - return extruderTextWidth + iconWidth + UM.Theme.getSize("default_margin").width / 4; + return extruderTextWidth + iconWidth + UM.Theme.getSize("default_margin").width / 2; } // Static text "Extruder" @@ -150,7 +218,7 @@ Column control.hovered ? UM.Theme.getColor("action_button_hovered_text") : UM.Theme.getColor("action_button_text") - font: UM.Theme.getFont("default") + font: control.checked ? UM.Theme.getFont("default_bold") : UM.Theme.getFont("default") text: catalog.i18nc("@label", "Extruder") visible: width < (control.width - extruderIconItem.width - UM.Theme.getSize("default_margin").width) elide: Text.ElideRight @@ -168,7 +236,7 @@ Column var minimumWidth = control.width < UM.Theme.getSize("button").width ? control.width : UM.Theme.getSize("button").width; var minimumHeight = control.height < UM.Theme.getSize("button").height ? control.height : UM.Theme.getSize("button").height; var minimumSize = minimumWidth < minimumHeight ? minimumWidth : minimumHeight; - minimumSize -= UM.Theme.getSize("default_margin").width; + minimumSize -= UM.Theme.getSize("default_margin").width / 2; return minimumSize; } @@ -205,18 +273,18 @@ Column { right: parent.right top: parent.top - rightMargin: parent.sizeToUse * 0.04 - topMargin: parent.sizeToUse * 0.04 + rightMargin: parent.sizeToUse * 0.01 + topMargin: parent.sizeToUse * 0.05 } color: model.color - width: parent.width * 0.27 - height: parent.height * 0.27 + width: parent.width * 0.35 + height: parent.height * 0.35 radius: width / 2 - border.width: 0 - border.color: "transparent" + border.width: 1 + border.color: UM.Theme.getColor("extruder_button_material_border") opacity: !control.checked ? 0.6 : 1.0 } @@ -337,7 +405,7 @@ Column Item { id: materialInfoRow - height: UM.Theme.getSize("sidebar_setup").height + height: UM.Theme.getSize("sidebar_setup").height / 2 visible: (Cura.MachineManager.hasVariants || Cura.MachineManager.hasMaterials) && !sidebar.monitoringPrint && !sidebar.hideSettings anchors @@ -358,10 +426,11 @@ Column { id: materialInfoLabel wrapMode: Text.WordWrap - text: catalog.i18nc("@label", "Check material compability"); + text: catalog.i18nc("@label", "Check material compability") font: UM.Theme.getFont("default"); - verticalAlignment: Text.AlignVCenter + verticalAlignment: Text.AlignTop anchors.top: parent.top + anchors.right: parent.right anchors.bottom: parent.bottom color: UM.Theme.getColor("text") diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 3e612b1478..9342e4d781 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -111,10 +111,11 @@ Rectangle { case "printing": case "pre_print": - case "wait_cleanup": case "pausing": case "resuming": return UM.Theme.getIcon("tab_status_busy"); + case "wait_cleanup": + return UM.Theme.getIcon("tab_status_finished"); case "ready": case "": return UM.Theme.getIcon("tab_status_connected") diff --git a/resources/themes/cura-light/icons/extruder_button.svg b/resources/themes/cura-light/icons/extruder_button.svg index 883e3caaf4..e3c01b6a0a 100644 --- a/resources/themes/cura-light/icons/extruder_button.svg +++ b/resources/themes/cura-light/icons/extruder_button.svg @@ -41,7 +41,7 @@ showgrid="false" inkscape:pagecheckerboard="true" inkscape:zoom="23.442308" - inkscape:cx="11.848284" + inkscape:cx="4.9163727" inkscape:cy="17.941232" inkscape:window-x="2552" inkscape:window-y="-8" @@ -61,10 +61,4 @@ style="fill:none;stroke:#ffffff;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" rx="13.735848" ry="13.735849" /> - diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 3364ff8932..8025ed61be 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -96,6 +96,11 @@ "button_tooltip_border": [24, 41, 77, 255], "button_tooltip_text": [24, 41, 77, 255], + "extruder_button_material_border": [255, 255, 255, 255], + + "sync_button_text": [120, 120, 120, 255], + "sync_button_text_hovered": [0, 0, 0, 255], + "tab_checked": [255, 255, 255, 255], "tab_checked_border": [255, 255, 255, 255], "tab_checked_text": [24, 41, 77, 255], @@ -261,8 +266,8 @@ "default_arrow": [0.8, 0.8], "logo": [9.5, 2.0], - "extruder_button_material_margin": [0.875, 0.875], - "extruder_button_material_size": [0.68, 0.68], + "extruder_button_material_margin": [0.50, 0.9], + "extruder_button_material": [0.75, 0.75], "sidebar": [35.0, 10.0], "sidebar_margin": [1.71, 1.43], From fc7207e77e47f906626c7a5de8334df6936ea924 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 6 Sep 2017 12:17:40 +0200 Subject: [PATCH 028/589] Remove "Sync" button CURA-4211 --- cura/CuraApplication.py | 6 -- .../UM3NetworkPrinting/DiscoverUM3Action.py | 1 - resources/qml/SidebarHeader.qml | 65 ------------------- 3 files changed, 72 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 0b8705799f..ee1c1aeec6 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -125,8 +125,6 @@ class CuraApplication(QtApplication): # Cura will always show the Add Machine Dialog upon start. stacksValidationFinished = pyqtSignal() # Emitted whenever a validation is finished - syncConfigurationFromPrinter = pyqtSignal() # Emitted when the user wants to sync configuration from printer - def __init__(self): # this list of dir names will be used by UM to detect an old cura directory for dir_name in ["extruders", "machine_instances", "materials", "plugins", "quality", "user", "variants"]: @@ -1395,7 +1393,3 @@ class CuraApplication(QtApplication): node = node.getParent() Selection.add(node) - - @pyqtSlot() - def startSyncingConfigurationFromPrinter(self): - self.syncConfigurationFromPrinter.emit() diff --git a/plugins/UM3NetworkPrinting/DiscoverUM3Action.py b/plugins/UM3NetworkPrinting/DiscoverUM3Action.py index ff222b6aeb..af1a556892 100644 --- a/plugins/UM3NetworkPrinting/DiscoverUM3Action.py +++ b/plugins/UM3NetworkPrinting/DiscoverUM3Action.py @@ -26,7 +26,6 @@ class DiscoverUM3Action(MachineAction): self.__additional_components_view = None Application.getInstance().engineCreatedSignal.connect(self._createAdditionalComponentsView) - Application.getInstance().syncConfigurationFromPrinter.connect(self.loadConfigurationFromPrinter) self._last_zeroconf_event_time = time.time() self._zeroconf_change_grace_period = 0.25 # Time to wait after a zeroconf service change before allowing a zeroconf reset diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index 0e78cc336d..a12274ca35 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -47,71 +47,6 @@ Column color: UM.Theme.getColor("text") visible: extruderSelectionRow.visible } - - Button - { - id: syncMachineButton - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - text: catalog.i18nc("@button:action", "Sync") - visible: extruderSelectionRow.visible - - property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 - enabled: printerConnected - - onClicked: - { - CuraApplication.startSyncingConfigurationFromPrinter(); - } - - style: ButtonStyle - { - background: Rectangle - { - implicitWidth: UM.Theme.getSize("button").width * 1.1 - implicitHeight: UM.Theme.getSize("sidebar_tabs").height / 3 - color: "transparent" - } - label: Item - { - implicitWidth: UM.Theme.getSize("button").width * 1.1 - implicitHeight: UM.Theme.getSize("sidebar_tabs").height / 3 - Label - { - id: labelText - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_lining").width - anchors.right: downArrow.left - anchors.rightMargin: UM.Theme.getSize("default_margin").width / 2 - anchors.top: parent.top - - text: control.text - font: UM.Theme.getFont("default") - color: control.hovered ? UM.Theme.getColor("sync_button_text_hovered") : UM.Theme.getColor("sync_button_text") - - elide: Text.ElideRight; - verticalAlignment: Text.AlignVCenter; - } - - UM.RecolorImage - { - id: downArrow - anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("default_lining").width * 2 - anchors.top: labelText.top - anchors.topMargin: UM.Theme.getSize("default_margin").height / 3 - - source: UM.Theme.getIcon("arrow_bottom") - width: UM.Theme.getSize("standard_arrow").width - height: UM.Theme.getSize("standard_arrow").height - sourceSize.width: width + 5 - sourceSize.height: width + 5 - - color: control.hovered ? UM.Theme.getColor("sync_button_text_hovered") : UM.Theme.getColor("sync_button_text") - } - } - } - } } Item From e163cc0d8483b3335b1936cc64a6ba2a3ea53298 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 6 Sep 2017 12:43:42 +0200 Subject: [PATCH 029/589] Remove "Extruder Configuration" text CURA-4211 --- resources/qml/SidebarHeader.qml | 36 ++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index a12274ca35..54605dd860 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -17,11 +17,23 @@ Column property int currentExtruderIndex: ExtruderManager.activeExtruderIndex; property bool currentExtruderVisible: extrudersList.visible; - spacing: UM.Theme.getSize("sidebar_margin").height + spacing: UM.Theme.getSize("sidebar_margin").height / 2 signal showTooltip(Item item, point location, string text) signal hideTooltip() + Item + { + anchors + { + left: parent.left + right: parent.right + } + visible: extruderSelectionRow.visible + height: UM.Theme.getSize("default_lining").height + width: height + } + Item { anchors @@ -30,23 +42,10 @@ Column leftMargin: UM.Theme.getSize("sidebar_margin").width right: parent.right rightMargin: UM.Theme.getSize("sidebar_margin").width - topMargin: UM.Theme.getSize("default_margin").height } visible: extruderSelectionRow.visible - height: syncMachineButton.height + UM.Theme.getSize("sidebar_margin").height / 2 - - Label - { - id: extruderSelectionLabel - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - - height: UM.Theme.getSize("sidebar_tabs").height / 3 - text: catalog.i18nc("@label", "Extruder configuration") - font: UM.Theme.getFont("large") - color: UM.Theme.getColor("text") - visible: extruderSelectionRow.visible - } + height: UM.Theme.getSize("default_lining").hieght + width: height } Item @@ -59,9 +58,10 @@ Column anchors { left: parent.left - leftMargin: UM.Theme.getSize("default_margin").width * 1.5 + leftMargin: UM.Theme.getSize("default_margin").width * 1.4 right: parent.right - rightMargin: UM.Theme.getSize("default_margin").width * 1.5 + rightMargin: UM.Theme.getSize("default_margin").width * 1.4 + topMargin: UM.Theme.getSize("default_margin").height } ListView From 371ca360470fd2f2521037fba489e20dddcd449f Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 6 Sep 2017 13:21:17 +0200 Subject: [PATCH 030/589] Remove home bed from abort sequence On printers that home the bed to the bottom (ie: printhead moves towards the bed), homing the bed when aborting a print could cause the printhead to crash into the aborted print. --- plugins/USBPrinting/USBPrinterOutputDevice.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/USBPrinting/USBPrinterOutputDevice.py b/plugins/USBPrinting/USBPrinterOutputDevice.py index 8ecb503ed8..529783acb8 100644 --- a/plugins/USBPrinting/USBPrinterOutputDevice.py +++ b/plugins/USBPrinting/USBPrinterOutputDevice.py @@ -622,8 +622,9 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._sendCommand("M140 S0") self._sendCommand("M104 S0") self._sendCommand("M107") + # Home XY to prevent nozzle resting on aborted print + # Don't home bed because it may crash the printhead into the print on printers that home on the bottom self.homeHead() - self.homeBed() self._sendCommand("M84") self._is_printing = False self._is_paused = False From 34f8db5450c58a825de311ea657849add6e29dcf Mon Sep 17 00:00:00 2001 From: Mark Date: Wed, 6 Sep 2017 14:52:16 +0200 Subject: [PATCH 031/589] Changed some margins to improve alignment CURA-4211 --- resources/qml/Sidebar.qml | 6 +++--- resources/qml/SidebarHeader.qml | 8 ++++---- resources/qml/SidebarSimple.qml | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index be0b12af19..bdffee4ff3 100755 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -121,7 +121,7 @@ Rectangle anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width anchors.top: headerSeparator.bottom anchors.topMargin: UM.Theme.getSize("sidebar_margin").height - width: parent.width * 0.45 - 2 * UM.Theme.getSize("sidebar_margin").width + width: parent.width * 0.45 font: UM.Theme.getFont("large") color: UM.Theme.getColor("text") visible: !monitoringPrint @@ -223,7 +223,7 @@ Rectangle { id: globalProfileLabel text: catalog.i18nc("@label","Profile:"); - width: parent.width * 0.45 - UM.Theme.getSize("sidebar_margin").width + width: parent.width * 0.45 - UM.Theme.getSize("sidebar_margin").width - 2 font: UM.Theme.getFont("default"); color: UM.Theme.getColor("text"); verticalAlignment: Text.AlignVCenter @@ -247,7 +247,7 @@ Rectangle } enabled: !header.currentExtruderVisible || header.currentExtruderIndex > -1 - width: parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width + width: parent.width * 0.55 height: UM.Theme.getSize("setting_control").height anchors.left: globalProfileLabel.right anchors.right: parent.right diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index 54605dd860..391b6c131a 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -17,7 +17,7 @@ Column property int currentExtruderIndex: ExtruderManager.activeExtruderIndex; property bool currentExtruderVisible: extrudersList.visible; - spacing: UM.Theme.getSize("sidebar_margin").height / 2 + spacing: UM.Theme.getSize("sidebar_margin").width * 0.9 signal showTooltip(Item item, point location, string text) signal hideTooltip() @@ -58,10 +58,10 @@ Column anchors { left: parent.left - leftMargin: UM.Theme.getSize("default_margin").width * 1.4 + leftMargin: UM.Theme.getSize("sidebar_margin").width * 0.7 right: parent.right - rightMargin: UM.Theme.getSize("default_margin").width * 1.4 - topMargin: UM.Theme.getSize("default_margin").height + rightMargin: UM.Theme.getSize("sidebar_margin").width * 0.7 + topMargin: UM.Theme.getSize("sidebar_margin").height } ListView diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 8d83dd1468..c2882f8e0e 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -40,7 +40,7 @@ Item id: infillCellLeft anchors.top: parent.top anchors.left: parent.left - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 0.8 width: UM.Theme.getSize("sidebar").width * .45 - UM.Theme.getSize("sidebar_margin").width height: childrenRect.height @@ -275,7 +275,7 @@ Item property alias _hovered: enableSupportMouseArea.containsMouse anchors.top: infillCellRight.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 2 + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height anchors.left: infillCellRight.left style: UM.Theme.styles.checkbox; From e18528d2ca596ce74ed3d722c681193155f4e259 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 6 Sep 2017 15:49:54 +0200 Subject: [PATCH 032/589] Fix position of the material compatibility warning CURA-4148 --- resources/qml/SidebarHeader.qml | 31 +++++++++++++------------- resources/themes/cura-light/theme.json | 2 +- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index 391b6c131a..3c26638b0a 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -357,6 +357,22 @@ Column anchors.right: parent.right width: parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width + UM.RecolorImage + { + id: warningImage + anchors.right: materialInfoLabel.left + anchors.rightMargin: UM.Theme.getSize("default_margin").width + anchors.verticalCenter: parent.Bottom + source: UM.Theme.getIcon("warning") + width: UM.Theme.getSize("section_icon").width + height: UM.Theme.getSize("section_icon").height + //sourceSize.width: width + 5 + //sourceSize.height: width + 5 + + color: UM.Theme.getColor("setting_validation_warning") + visible: !Cura.MachineManager.isCurrentSetupSupported + } + Text { id: materialInfoLabel @@ -395,21 +411,6 @@ Column onExited: base.hideTooltip(); } } - - UM.RecolorImage - { - id: warningImage - anchors.right: parent.right - anchors.verticalCenter: parent.Bottom - source: UM.Theme.getIcon("warning") - width: UM.Theme.getSize("section_icon").width - height: UM.Theme.getSize("section_icon").height - //sourceSize.width: width + 5 - //sourceSize.height: width + 5 - - color: UM.Theme.getColor("setting_validation_warning") - visible: !Cura.MachineManager.isCurrentSetupSupported - } } } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 46d5ff0662..d4d12c24cd 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -173,7 +173,7 @@ "setting_validation_error_background": [255, 57, 14, 255], "setting_validation_error": [127, 127, 127, 255], "setting_validation_warning_background": [255, 186, 15, 255], - "setting_validation_warning": [127, 127, 127, 255], + "setting_validation_warning": [0, 0, 0, 255], "setting_validation_ok": [255, 255, 255, 255], "progressbar_background": [245, 245, 245, 255], From 1dd5f7b0ee87081bb5107d87b21c2389e2119e93 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 6 Sep 2017 12:55:05 +0200 Subject: [PATCH 033/589] Update machine state icons CURA-4148 --- .../themes/cura-light/icons/tab_status_busy.svg | 14 +++++++++++++- .../cura-light/icons/tab_status_connected.svg | 14 +++++++++++++- .../cura-light/icons/tab_status_finished.svg | 13 +++++++++++++ .../themes/cura-light/icons/tab_status_paused.svg | 14 +++++++++++++- .../themes/cura-light/icons/tab_status_stopped.svg | 14 +++++++++++++- 5 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 resources/themes/cura-light/icons/tab_status_finished.svg diff --git a/resources/themes/cura-light/icons/tab_status_busy.svg b/resources/themes/cura-light/icons/tab_status_busy.svg index 4df1a5b733..debe4f6360 100644 --- a/resources/themes/cura-light/icons/tab_status_busy.svg +++ b/resources/themes/cura-light/icons/tab_status_busy.svg @@ -1 +1,13 @@ - \ No newline at end of file + + + + Busy + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/tab_status_connected.svg b/resources/themes/cura-light/icons/tab_status_connected.svg index 4960e97d0f..a8ff015a9d 100644 --- a/resources/themes/cura-light/icons/tab_status_connected.svg +++ b/resources/themes/cura-light/icons/tab_status_connected.svg @@ -1 +1,13 @@ -tab_status_connected \ No newline at end of file + + + + Connected + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/tab_status_finished.svg b/resources/themes/cura-light/icons/tab_status_finished.svg new file mode 100644 index 0000000000..2519f2f862 --- /dev/null +++ b/resources/themes/cura-light/icons/tab_status_finished.svg @@ -0,0 +1,13 @@ + + + + Wait cleanup + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/tab_status_paused.svg b/resources/themes/cura-light/icons/tab_status_paused.svg index 7358d76305..bab6c9ca6b 100644 --- a/resources/themes/cura-light/icons/tab_status_paused.svg +++ b/resources/themes/cura-light/icons/tab_status_paused.svg @@ -1 +1,13 @@ -tab_status_paused \ No newline at end of file + + + + paused + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/tab_status_stopped.svg b/resources/themes/cura-light/icons/tab_status_stopped.svg index d93f477ea7..c9b150db3a 100644 --- a/resources/themes/cura-light/icons/tab_status_stopped.svg +++ b/resources/themes/cura-light/icons/tab_status_stopped.svg @@ -1 +1,13 @@ -tab_status_stopped \ No newline at end of file + + + + Aborted + Created with Sketch. + + + + + + + + \ No newline at end of file From 24e5c72e4713633375af1d992cb0ddcfad074e22 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 6 Sep 2017 13:07:20 +0200 Subject: [PATCH 034/589] Update colour for light theme CURA-4148 --- resources/qml/Sidebar.qml | 2 +- resources/qml/SidebarHeader.qml | 5 +-- resources/themes/cura-light/styles.qml | 2 + resources/themes/cura-light/theme.json | 62 ++++++++++++++------------ 4 files changed, 38 insertions(+), 33 deletions(-) diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index bdffee4ff3..ce13a5eddf 100755 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -181,7 +181,7 @@ Rectangle color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_text") : control.hovered ? UM.Theme.getColor("action_button_hovered_text") : UM.Theme.getColor("action_button_text") - font: UM.Theme.getFont("default") + font: (control.checked || control.pressed) ? UM.Theme.getFont("default_bold") : UM.Theme.getFont("default") text: control.text; } } diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index 3c26638b0a..f2fc0c0027 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -123,8 +123,7 @@ Column { anchors.fill: parent border.width: UM.Theme.getSize("default_lining").width - border.color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_border") : - control.hovered ? UM.Theme.getColor("action_button_hovered_border") : + border.color: control.hovered ? UM.Theme.getColor("action_button_hovered_border") : UM.Theme.getColor("action_button_border") color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active") : control.hovered ? UM.Theme.getColor("action_button_hovered") : @@ -369,7 +368,7 @@ Column //sourceSize.width: width + 5 //sourceSize.height: width + 5 - color: UM.Theme.getColor("setting_validation_warning") + color: UM.Theme.getColor("material_compatibility_warning") visible: !Cura.MachineManager.isCurrentSetupSupported } diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index cedb861da5..bb2b57509a 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -309,6 +309,8 @@ QtObject { } Behavior on color { ColorAnimation { duration: 50; } } + border.width: (control.hasOwnProperty("needBorder") && control.needBorder) ? 2 : 0 + border.color: Theme.getColor("tool_button_border") UM.RecolorImage { id: tool_button_arrow diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index d4d12c24cd..530dbbd487 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -54,7 +54,7 @@ "colors": { "sidebar": [255, 255, 255, 255], - "lining": [127, 127, 127, 255], + "lining": [192, 193, 194, 255], "viewport_overlay": [24, 41, 77, 192], "primary": [12, 169, 227, 255], @@ -67,32 +67,32 @@ "topbar_button_text_inactive": [128, 128, 128, 255], "topbar_button_text_hovered": [0, 0, 0, 255], - "text": [24, 41, 77, 255], + "text": [0, 0, 0, 255], "text_detail": [174, 174, 174, 128], "text_link": [12, 169, 227, 255], "text_inactive": [174, 174, 174, 255], "text_hover": [70, 84, 113, 255], "text_pressed": [12, 169, 227, 255], - "text_subtext": [70, 84, 113, 255], + "text_subtext": [0, 0, 0, 255], "text_emphasis": [255, 255, 255, 255], "text_scene": [24, 41, 77, 255], "text_scene_hover": [70, 84, 113, 255], "error": [255, 140, 0, 255], - "sidebar_header_bar": [24, 41, 77, 255], - "sidebar_header_active": [70, 84, 113, 255], - "sidebar_header_hover": [24, 41, 77, 255], - "sidebar_header_highlight": [12, 169, 227, 255], - "sidebar_header_highlight_hover": [255, 255, 255, 255], + "sidebar_header_bar": [31, 36, 39, 255], + "sidebar_header_active": [68, 72, 75, 255], + "sidebar_header_hover": [68, 72, 75, 255], + "sidebar_header_highlight": [68, 192, 255, 255], + "sidebar_header_highlight_hover": [68, 192, 255, 255], "sidebar_header_text_inactive": [255, 255, 255, 255], "sidebar_header_text_active": [255, 255, 255, 255], "sidebar_header_text_hover": [255, 255, 255, 255], "sidebar_lining": [245, 245, 245, 255], - "button": [24, 41, 77, 255], - "button_hover": [70, 84, 113, 255], - "button_active": [32, 166, 219, 255], - "button_active_hover": [12, 169, 227, 255], + "button": [31, 36, 39, 255], + "button_hover": [68, 72, 75, 255], + "button_active": [68, 72, 75, 255], + "button_active_hover": [68, 72, 75, 255], "button_text": [255, 255, 255, 255], "button_text_hover": [255, 255, 255, 255], "button_text_active": [255, 255, 255, 255], @@ -100,9 +100,9 @@ "button_disabled": [24, 41, 77, 255], "button_disabled_text": [255, 255, 255, 101], - "button_tooltip": [12, 169, 227, 255], - "button_tooltip_border": [24, 41, 77, 255], - "button_tooltip_text": [24, 41, 77, 255], + "button_tooltip": [31, 36, 39, 255], + "button_tooltip_border": [68, 192, 255, 255], + "button_tooltip_text": [192, 193, 194, 255], "extruder_button_material_border": [255, 255, 255, 255], @@ -123,14 +123,14 @@ "tab_active_text": [24, 41, 77, 255], "tab_background": [245, 245, 245, 255], - "action_button": [255, 255, 255, 255], - "action_button_text": [24, 41, 77, 255], + "action_button": [242, 242, 242, 255], + "action_button_text": [0, 0, 0, 255], "action_button_border": [127, 127, 127, 255], "action_button_hovered": [255, 255, 255, 255], "action_button_hovered_text": [24, 41, 77, 255], "action_button_hovered_border": [12, 169, 227, 255], - "action_button_active": [12, 169, 227, 255], - "action_button_active_text": [255, 255, 255, 255], + "action_button_active": [255, 255, 255, 255], + "action_button_active_text": [0, 0, 0, 255], "action_button_active_border": [12, 169, 227, 255], "action_button_disabled": [245, 245, 245, 255], "action_button_disabled_text": [127, 127, 127, 255], @@ -170,12 +170,14 @@ "setting_control_disabled_text": [127, 127, 127, 255], "setting_control_disabled_border": [127, 127, 127, 255], "setting_unit": [127, 127, 127, 255], - "setting_validation_error_background": [255, 57, 14, 255], + "setting_validation_error_background": [255, 66, 60, 255], "setting_validation_error": [127, 127, 127, 255], - "setting_validation_warning_background": [255, 186, 15, 255], - "setting_validation_warning": [0, 0, 0, 255], + "setting_validation_warning_background": [255, 145, 62, 255], + "setting_validation_warning": [127, 127, 127, 255], "setting_validation_ok": [255, 255, 255, 255], + "material_compatibility_warning": [0, 0, 0, 255], + "progressbar_background": [245, 245, 245, 255], "progressbar_control": [24, 41, 77, 255], @@ -186,12 +188,12 @@ "slider_handle_hover": [77, 182, 226, 255], "slider_text_background": [255, 255, 255, 255], - "checkbox": [255, 255, 255, 255], - "checkbox_hover": [255, 255, 255, 255], - "checkbox_border": [127, 127, 127, 255], + "checkbox": [39, 44, 48, 255], + "checkbox_hover": [68, 72, 75, 255], + "checkbox_border": [64, 69, 72, 255], "checkbox_border_hover": [12, 169, 227, 255], - "checkbox_mark": [24, 41, 77, 255], - "checkbox_text": [24, 41, 77, 255], + "checkbox_mark": [119, 122, 124, 255], + "checkbox_text": [166, 168, 169, 255], "mode_switch": [255, 255, 255, 255], "mode_switch_hover": [255, 255, 255, 255], @@ -202,9 +204,11 @@ "mode_switch_text_hover": [24, 41, 77, 255], "mode_switch_text_checked": [12, 169, 227, 255], - "tooltip": [12, 169, 227, 255], + "tooltip": [68, 192, 255, 255], "tooltip_text": [255, 255, 255, 255], + "tool_button_border": [39, 44, 48, 255], + "message_background": [24, 41, 77, 255], "message_text": [255, 255, 255, 255], "message_border": [24, 41, 77, 255], @@ -217,7 +221,7 @@ "message_progressbar_background": [255, 255, 255, 255], "message_progressbar_control": [12, 169, 227, 255], - "tool_panel_background": [255, 255, 255, 255], + "tool_panel_background": [31, 36, 39, 255], "status_offline": [0, 0, 0, 255], "status_ready": [0, 205, 0, 255], From 8010fa9c85a1460c6e4b20c422df8a453b0e1e09 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 6 Sep 2017 16:09:25 +0200 Subject: [PATCH 035/589] White background for checkboxes CURA-4148 --- resources/themes/cura-light/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 530dbbd487..c68ac91569 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -188,7 +188,7 @@ "slider_handle_hover": [77, 182, 226, 255], "slider_text_background": [255, 255, 255, 255], - "checkbox": [39, 44, 48, 255], + "checkbox": [255, 255, 255, 255], "checkbox_hover": [68, 72, 75, 255], "checkbox_border": [64, 69, 72, 255], "checkbox_border_hover": [12, 169, 227, 255], From 40b60a2d950684c3a377b7baf2228a019c61b122 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 6 Sep 2017 16:23:27 +0200 Subject: [PATCH 036/589] Fix colour for LayView panel and per object settings panel CURA-4148 --- plugins/LayerView/LayerView.qml | 10 +++++----- resources/themes/cura-light/theme.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 53f44f3f03..ff8bfcb988 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -72,7 +72,7 @@ Item anchors.left: parent.left text: catalog.i18nc("@label","View Mode: Layers") font: UM.Theme.getFont("default_bold"); - color: UM.Theme.getColor("text") + color: UM.Theme.getColor("setting_control_text") Layout.fillWidth: true elide: Text.ElideMiddle; } @@ -93,7 +93,7 @@ Item font: UM.Theme.getFont("default"); visible: !UM.LayerView.compatibilityMode Layout.fillWidth: true - color: UM.Theme.getColor("text") + color: UM.Theme.getColor("setting_control_text") } ListModel // matches LayerView.py @@ -211,7 +211,7 @@ Item { text: model.name elide: Text.ElideRight - color: UM.Theme.getColor("text") + color: UM.Theme.getColor("button_text") font: UM.Theme.getFont("default") anchors.verticalCenter: parent.verticalCenter anchors.left: extrudersModelCheckBox.left; @@ -280,7 +280,7 @@ Item text: label font: UM.Theme.getFont("default") elide: Text.ElideRight - color: UM.Theme.getColor("text") + color: UM.Theme.getColor("button_text") anchors.verticalCenter: parent.verticalCenter anchors.left: legendModelCheckBox.left; anchors.right: legendModelCheckBox.right; @@ -343,7 +343,7 @@ Item Layout.fillWidth: true Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("default_lining").height Layout.preferredWidth: UM.Theme.getSize("layerview_row").width - color: UM.Theme.getColor("text") + color: UM.Theme.getColor("button_text") font: UM.Theme.getFont("default") } } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index c68ac91569..783d0c9edc 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -162,7 +162,7 @@ "setting_control_highlight": [255, 255, 255, 0], "setting_control_border": [127, 127, 127, 255], "setting_control_border_highlight": [12, 169, 227, 255], - "setting_control_text": [24, 41, 77, 255], + "setting_control_text": [127, 127, 127, 255], "setting_control_depth_line": [127, 127, 127, 255], "setting_control_button": [127, 127, 127, 255], "setting_control_button_hover": [70, 84, 113, 255], From b239eb9eaf597ca15f548272f4f6eefbd6d6455b Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 6 Sep 2017 16:35:56 +0200 Subject: [PATCH 037/589] No extruder numbers for per-object settings CURA-4284 --- resources/definitions/fdmprinter.def.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 5a7cca5a31..817da65247 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -869,7 +869,7 @@ "description": "The extruder train used for printing the outer wall. This is used in multi-extrusion.", "type": "optional_extruder", "default_value": "-1", - "settable_per_mesh": true, + "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": true, "settable_globally": true, @@ -881,7 +881,7 @@ "description": "The extruder train used for printing the inner walls. This is used in multi-extrusion.", "type": "optional_extruder", "default_value": "-1", - "settable_per_mesh": true, + "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": true, "settable_globally": true, @@ -936,7 +936,7 @@ "type": "optional_extruder", "default_value": "-1", "value": "top_bottom_extruder_nr", - "settable_per_mesh": true, + "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": true, "settable_globally": true, @@ -989,7 +989,7 @@ "description": "The extruder train used for printing the top and bottom skin. This is used in multi-extrusion.", "type": "optional_extruder", "default_value": "-1", - "settable_per_mesh": true, + "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": true, "settable_globally": true, @@ -1312,7 +1312,7 @@ "description": "The extruder train used for printing infill. This is used in multi-extrusion.", "type": "optional_extruder", "default_value": "-1", - "settable_per_mesh": true, + "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": true, "settable_globally": true, From c614f02d0ff9cbaf8476fb764ac7849c49fc0e45 Mon Sep 17 00:00:00 2001 From: alekseisasin Date: Wed, 6 Sep 2017 16:58:17 +0200 Subject: [PATCH 038/589] Fixed settings update. After each change in the settings the build volume was rebuilding CURA-4271 --- cura/BuildVolume.py | 110 +++++++++++++++++++++++++++++--------------- 1 file changed, 72 insertions(+), 38 deletions(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index bc5398cb1c..ccdc3cea40 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -90,10 +90,15 @@ class BuildVolume(SceneNode): #Objects loaded at the moment. We are connected to the property changed events of these objects. self._scene_objects = set() - self._change_timer = QTimer() - self._change_timer.setInterval(100) - self._change_timer.setSingleShot(True) - self._change_timer.timeout.connect(self._onChangeTimerFinished) + self._scene_change_timer = QTimer() + self._scene_change_timer.setInterval(100) + self._scene_change_timer.setSingleShot(True) + self._scene_change_timer.timeout.connect(self._onSceneChangeTimerFinished) + + self._setting_change_timer = QTimer() + self._setting_change_timer.setInterval(100) + self._setting_change_timer.setSingleShot(True) + self._setting_change_timer.timeout.connect(self._onSettingChangeTimerFinished) self._build_volume_message = Message(catalog.i18nc("@info:status", "The build volume height has been reduced due to the value of the" @@ -104,15 +109,19 @@ class BuildVolume(SceneNode): # activeQualityChanged is always emitted after setActiveVariant, setActiveMaterial and setActiveQuality. # Therefore this works. Application.getInstance().getMachineManager().activeQualityChanged.connect(self._onStackChanged) + # This should also ways work, and it is semantically more correct, # but it does not update the disallowed areas after material change Application.getInstance().getMachineManager().activeStackChanged.connect(self._onStackChanged) + # list of settings which were updated + self._changed_settings_since_last_rebuild = [] + def _onSceneChanged(self, source): if self._global_container_stack: - self._change_timer.start() + self._scene_change_timer.start() - def _onChangeTimerFinished(self): + def _onSceneChangeTimerFinished(self): root = Application.getInstance().getController().getScene().getRoot() new_scene_objects = set(node for node in BreadthFirstIterator(root) if node.callDecoration("isSliceable")) if new_scene_objects != self._scene_objects: @@ -562,42 +571,67 @@ class BuildVolume(SceneNode): self._engine_ready = True self.rebuild() + def _onSettingChangeTimerFinished(self): + rebuild_me = False + update_disallowed_areas = False + update_raft_thickness = False + update_extra_z_clearance = True + for setting_key in self._changed_settings_since_last_rebuild: + if setting_key == "print_sequence": + machine_height = self._global_container_stack.getProperty("machine_height", "value") + if Application.getInstance().getGlobalContainerStack().getProperty("print_sequence", + "value") == "one_at_a_time" and len( + self._scene_objects) > 1: + self._height = min(self._global_container_stack.getProperty("gantry_height", "value"), + machine_height) + if self._height < machine_height: + self._build_volume_message.show() + else: + self._build_volume_message.hide() + else: + self._height = self._global_container_stack.getProperty("machine_height", "value") + self._build_volume_message.hide() + rebuild_me = True + + if setting_key in self._skirt_settings or setting_key in self._prime_settings or setting_key in self._tower_settings or setting_key == "print_sequence" or setting_key in self._ooze_shield_settings or setting_key in self._distance_settings or setting_key in self._extruder_settings: + update_disallowed_areas = True + rebuild_me = True + + if setting_key in self._raft_settings: + update_raft_thickness = True + rebuild_me = True + + if setting_key in self._extra_z_settings: + update_extra_z_clearance = True + rebuild_me = True + + if setting_key in self._limit_to_extruder_settings: + update_disallowed_areas = True + rebuild_me = True + + # We only want to update all of them once. + if update_disallowed_areas: + self._updateDisallowedAreas() + + if update_raft_thickness: + self._updateRaftThickness() + + if update_extra_z_clearance: + self._updateExtraZClearance() + + if rebuild_me: + self.rebuild() + + # We just did a rebuild, reset the list. + self._changed_settings_since_last_rebuild = [] + def _onSettingPropertyChanged(self, setting_key: str, property_name: str): if property_name != "value": return - rebuild_me = False - if setting_key == "print_sequence": - machine_height = self._global_container_stack.getProperty("machine_height", "value") - if Application.getInstance().getGlobalContainerStack().getProperty("print_sequence", "value") == "one_at_a_time" and len(self._scene_objects) > 1: - self._height = min(self._global_container_stack.getProperty("gantry_height", "value"), machine_height) - if self._height < machine_height: - self._build_volume_message.show() - else: - self._build_volume_message.hide() - else: - self._height = self._global_container_stack.getProperty("machine_height", "value") - self._build_volume_message.hide() - rebuild_me = True - - if setting_key in self._skirt_settings or setting_key in self._prime_settings or setting_key in self._tower_settings or setting_key == "print_sequence" or setting_key in self._ooze_shield_settings or setting_key in self._distance_settings or setting_key in self._extruder_settings: - self._updateDisallowedAreas() - rebuild_me = True - - if setting_key in self._raft_settings: - self._updateRaftThickness() - rebuild_me = True - - if setting_key in self._extra_z_settings: - self._updateExtraZClearance() - rebuild_me = True - - if setting_key in self._limit_to_extruder_settings: - self._updateDisallowedAreas() - rebuild_me = True - - if rebuild_me: - self.rebuild() + if setting_key not in self._changed_settings_since_last_rebuild: + self._changed_settings_since_last_rebuild.append(setting_key) + self._setting_change_timer.start() def hasErrors(self) -> bool: return self._has_errors From b0916e4b670332e77b2bf17333aa831a22b05f68 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 6 Sep 2017 18:09:18 +0200 Subject: [PATCH 039/589] Fix job name mismatching CURA-4276 --- cura/PrintInformation.py | 59 ++++++++++++++++++++++++-------------- resources/qml/JobSpecs.qml | 23 +++++++-------- 2 files changed, 47 insertions(+), 35 deletions(-) diff --git a/cura/PrintInformation.py b/cura/PrintInformation.py index d8c5129527..26f9420120 100644 --- a/cura/PrintInformation.py +++ b/cura/PrintInformation.py @@ -76,11 +76,12 @@ class PrintInformation(QObject): if self._backend: self._backend.printDurationMessage.connect(self._onPrintDurationMessage) - self._job_name = "" + self._base_name = "" self._abbr_machine = "" + self._job_name = "" Application.getInstance().globalContainerStackChanged.connect(self._setAbbreviatedMachineName) - Application.getInstance().fileLoaded.connect(self.setJobName) + Application.getInstance().fileLoaded.connect(self.setBaseName) Preferences.getInstance().preferenceChanged.connect(self._onPreferencesChanged) @@ -221,16 +222,8 @@ class PrintInformation(QObject): @pyqtSlot(str) def setJobName(self, name): - # Ensure that we don't use entire path but only filename - name = os.path.basename(name) - - # when a file is opened using the terminal; the filename comes from _onFileLoaded and still contains its - # extension. This cuts the extension off if necessary. - name = os.path.splitext(name)[0] - name = self.createJobName(name) - if self._job_name != name and (self._job_name == "" or name == ""): - self._job_name = name - self.jobNameChanged.emit() + self._job_name = name + self.jobNameChanged.emit() jobNameChanged = pyqtSignal() @@ -238,21 +231,43 @@ class PrintInformation(QObject): def jobName(self): return self._job_name - @pyqtSlot(str, result = str) - def createJobName(self, base_name): - if base_name == "": - return "" - base_name = self._stripAccents(base_name) + def _updateJobName(self): + if self._base_name == "": + self._job_name = "" + self.jobNameChanged.emit() + return + + base_name = self._stripAccents(self._base_name) self._setAbbreviatedMachineName() if self._pre_sliced: - return catalog.i18nc("@label", "Pre-sliced file {0}", base_name) + self._job_name = catalog.i18nc("@label", "Pre-sliced file {0}", base_name) elif Preferences.getInstance().getValue("cura/jobname_prefix"): # Don't add abbreviation if it already has the exact same abbreviation. if base_name.startswith(self._abbr_machine + "_"): - return base_name - return self._abbr_machine + "_" + base_name + self._job_name = base_name + else: + self._job_name = self._abbr_machine + "_" + base_name else: - return base_name + self._job_name = base_name + + self.jobNameChanged.emit() + + @pyqtProperty(str) + def baseName(self): + return self._base_name + + @pyqtSlot(str) + def setBaseName(self, base_name): + # Ensure that we don't use entire path but only filename + name = os.path.basename(base_name) + + # when a file is opened using the terminal; the filename comes from _onFileLoaded and still contains its + # extension. This cuts the extension off if necessary. + name = os.path.splitext(name)[0] + + if self._base_name == "" and self._base_name != name: + self._base_name = name + self._updateJobName() ## Created an acronymn-like abbreviated machine name from the currently active machine name # Called each time the global stack is switched @@ -277,4 +292,4 @@ class PrintInformation(QObject): ## Utility method that strips accents from characters (eg: â -> a) def _stripAccents(self, str): - return ''.join(char for char in unicodedata.normalize('NFD', str) if unicodedata.category(char) != 'Mn') + return ''.join(char for char in unicodedata.normalize('NFD', str) if unicodedata.category(char) != 'Mn') diff --git a/resources/qml/JobSpecs.qml b/resources/qml/JobSpecs.qml index b2f63dc708..0f70022efc 100644 --- a/resources/qml/JobSpecs.qml +++ b/resources/qml/JobSpecs.qml @@ -13,13 +13,7 @@ Item { id: base property bool activity: CuraApplication.platformActivity - property string fileBaseName - property variant activeMachineName: Cura.MachineManager.activeMachineName - - onActiveMachineNameChanged: - { - printJobTextfield.text = PrintInformation.createJobName(base.fileBaseName); - } + property string fileBaseName: "" UM.I18nCatalog { id: catalog; name:"cura"} @@ -30,23 +24,26 @@ Item { target: backgroundItem onHasMesh: { - base.fileBaseName = name + if (base.fileBaseName == "") + { + base.fileBaseName = name; + } } } onActivityChanged: { if (activity == true && base.fileBaseName == ''){ //this only runs when you open a file from the terminal (or something that works the same way; for example when you drag a file on the icon in MacOS or use 'open with' on Windows) - base.fileBaseName = PrintInformation.jobName; //get the fileBaseName from PrintInformation.py because this saves the filebase when the file is opened using the terminal (or something alike) - printJobTextfield.text = PrintInformation.createJobName(base.fileBaseName); + base.fileBaseName = PrintInformation.baseName; //get the fileBaseName from PrintInformation.py because this saves the filebase when the file is opened using the terminal (or something alike) + PrintInformation.setBaseName(base.fileBaseName); } if (activity == true && base.fileBaseName != ''){ //this runs in all other cases where there is a mesh on the buildplate (activity == true). It uses the fileBaseName from the hasMesh signal - printJobTextfield.text = PrintInformation.createJobName(base.fileBaseName); + PrintInformation.setBaseName(base.fileBaseName); } if (activity == false){ //When there is no mesh in the buildplate; the printJobTextField is set to an empty string so it doesn't set an empty string as a jobName (which is later used for saving the file) - printJobTextfield.text = ''; + PrintInformation.setJobName('') } } @@ -102,7 +99,7 @@ Item { width: Math.max(__contentWidth + UM.Theme.getSize("default_margin").width, 50) maximumLength: 120 property int unremovableSpacing: 5 - text: '' + text: PrintInformation.jobName horizontalAlignment: TextInput.AlignRight onTextChanged: { PrintInformation.setJobName(text); From dd62367937d355191d5d6ec9e05b9e4477799d5e Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 7 Sep 2017 15:32:19 +0200 Subject: [PATCH 040/589] Move View mode button and LayerView panel to top right CURA-4212 --- plugins/LayerView/LayerView.qml | 2 +- resources/qml/Cura.qml | 37 --------------------------------- resources/qml/Topbar.qml | 35 +++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 38 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 53f44f3f03..1cf901a0bd 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -33,7 +33,7 @@ Item UM.PointingRectangle { id: layerViewMenu - anchors.left: parent.left + anchors.right: parent.right anchors.top: parent.top width: parent.width height: parent.height diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 094e138fbd..37c481defc 100755 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -319,24 +319,6 @@ UM.MainWindow } } - Loader - { - id: view_panel - - property bool hugBottom: parent.height < viewModeButton.y + viewModeButton.height + height + UM.Theme.getSize("default_margin").height - - anchors.bottom: parent.bottom // panel is always anchored to the bottom only, because dynamically switching between bottom and top results in stretching the height - anchors.bottomMargin: hugBottom ? 0 : parent.height - (viewModeButton.y + viewModeButton.height + height + UM.Theme.getSize("default_margin").height) - anchors.left: viewModeButton.left; - anchors.leftMargin: hugBottom ? viewModeButton.width + UM.Theme.getSize("default_margin").width : 0 - - property var buttonTarget: Qt.point(viewModeButton.x + viewModeButton.width / 2, viewModeButton.y + viewModeButton.height / 2) - - height: childrenRect.height; - - source: UM.ActiveView.valid ? UM.ActiveView.activeViewPanel : ""; - } - Button { id: openFileButton; @@ -393,25 +375,6 @@ UM.MainWindow monitoringPrint: base.showPrintMonitor } - Button - { - id: viewModeButton - - anchors - { - top: toolbar.bottom; - topMargin: UM.Theme.getSize("window_margin").height; - left: parent.left; - } - text: catalog.i18nc("@action:button","View Mode"); - iconSource: UM.Theme.getIcon("viewmode"); - - style: UM.Theme.styles.tool_button; - tooltip: ""; - enabled: !PrintInformation.preSliced - menu: ViewMenu { } - } - Rectangle { id: viewportOverlay diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 1b9f6cad65..e0001cb5cd 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -196,4 +196,39 @@ Rectangle menu: PrinterMenu { } } + + Button + { + id: viewModeButton + + anchors + { + verticalCenter: parent.verticalCenter + right: parent.right + rightMargin: UM.Theme.getSize("sidebar").width + UM.Theme.getSize("default_margin").width + } + text: catalog.i18nc("@action:button", "View Mode") + iconSource: UM.Theme.getIcon("viewmode") + + style: UM.Theme.styles.tool_button + tooltip: ""; + enabled: !PrintInformation.preSliced + menu: ViewMenu { } + } + + Loader + { + id: view_panel + + anchors.top: viewModeButton.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.right: viewModeButton.right + + property var buttonTarget: Qt.point(viewModeButton.x + viewModeButton.width / 2, viewModeButton.y + viewModeButton.height / 2) + + height: childrenRect.height; + + source: UM.ActiveView.valid ? UM.ActiveView.activeViewPanel : ""; + } + } From d89fc220fcaf9f974a4cd495886ea9358fc75fa3 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 7 Sep 2017 15:40:30 +0200 Subject: [PATCH 041/589] Make LayerView panel vertically longer CURA-4212 --- resources/themes/cura-light/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index d4d12c24cd..4ccebc5c91 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -332,7 +332,7 @@ "slider_layerview_background": [4.0, 0.0], "slider_layerview_margin": [1.0, 1.0], - "layerview_menu_size": [16.5, 21.0], + "layerview_menu_size": [16.5, 22.0], "layerview_menu_size_compatibility": [22, 23.0], "layerview_legend_size": [1.0, 1.0], "layerview_row": [11.0, 1.5], From 750f1ce158902fc7a2b75b88c9b5e0f657e7692b Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 7 Sep 2017 15:40:45 +0200 Subject: [PATCH 042/589] Make extruder icons on LayerView panel round CURA-4212 --- plugins/LayerView/LayerView.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 1cf901a0bd..f74a48745f 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -199,6 +199,7 @@ Item width: UM.Theme.getSize("layerview_legend_size").width height: UM.Theme.getSize("layerview_legend_size").height color: model.color + radius: width / 2 border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") visible: !view_settings.show_legend From c59bd6cc09f80467ec0e33ea7dbdb8c67ec95622 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 7 Sep 2017 16:21:26 +0200 Subject: [PATCH 043/589] Change LayView Mode button to a dropdown CURA-4212 --- resources/qml/Topbar.qml | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index e0001cb5cd..799942f0f6 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -197,23 +197,40 @@ Rectangle menu: PrinterMenu { } } - Button + ComboBox { id: viewModeButton - anchors { verticalCenter: parent.verticalCenter right: parent.right rightMargin: UM.Theme.getSize("sidebar").width + UM.Theme.getSize("default_margin").width } - text: catalog.i18nc("@action:button", "View Mode") - iconSource: UM.Theme.getIcon("viewmode") + style: UM.Theme.styles.combobox - style: UM.Theme.styles.tool_button - tooltip: ""; - enabled: !PrintInformation.preSliced - menu: ViewMenu { } + model: UM.ViewModel { } + textRole: "name" + onCurrentIndexChanged: + { + UM.Controller.setActiveView(model.getItem(currentIndex).id); + // Update the active flag + for (var i = 0; i < model.rowCount; ++i) + { + const is_active = i == currentIndex; + model.getItem(i).active = is_active; + } + } + currentIndex: + { + for (var i = 0; i < model.rowCount; ++i) + { + if (model.getItem(i).active) + { + return i; + } + } + return 0; + } } Loader From dd030b960235f1921f72f036627599c926c9d0ea Mon Sep 17 00:00:00 2001 From: Ruben D Date: Thu, 7 Sep 2017 16:35:38 +0200 Subject: [PATCH 044/589] Add setting to only iron the highest layer of a mesh --- resources/definitions/fdmprinter.def.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 817da65247..7a870d2c55 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5712,6 +5712,16 @@ "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, + "ironing_only_highest_layer": + { + "label": "Iron Only Highest Layer", + "description": "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish.", + "type": "bool", + "default_value": false, + "enabled": "ironing_enabled", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true + }, "ironing_pattern": { "label": "Ironing Pattern", From c8a92f2c59cdf00325db861e355e7cb1d78b6bca Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 7 Sep 2017 16:56:13 +0200 Subject: [PATCH 045/589] Move LayerView slider down CURA-4212 --- plugins/LayerView/LayerView.qml | 27 ++++---------------------- resources/themes/cura-light/theme.json | 4 ++-- 2 files changed, 6 insertions(+), 25 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index f74a48745f..6f95e6694e 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -64,26 +64,7 @@ Item anchors.leftMargin: UM.Theme.getSize("default_margin").width spacing: UM.Theme.getSize("layerview_row_spacing").height anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("default_margin").width * 2 - - Label - { - id: layersLabel - anchors.left: parent.left - text: catalog.i18nc("@label","View Mode: Layers") - font: UM.Theme.getFont("default_bold"); - color: UM.Theme.getColor("text") - Layout.fillWidth: true - elide: Text.ElideMiddle; - } - - Label - { - id: spaceLabel - anchors.left: parent.left - text: " " - font.pointSize: 0.5 - } + anchors.rightMargin: UM.Theme.getSize("default_margin").width Label { @@ -355,7 +336,7 @@ Item id: slider width: handleSize height: parent.height - 2*UM.Theme.getSize("slider_layerview_margin").height - anchors.top: parent.top + anchors.top: parent.bottom anchors.topMargin: UM.Theme.getSize("slider_layerview_margin").height anchors.right: layerViewMenu.right anchors.rightMargin: UM.Theme.getSize("slider_layerview_margin").width @@ -569,10 +550,10 @@ Item UM.PointingRectangle { - x: parent.width + UM.Theme.getSize("slider_layerview_background").width / 2; + x: parent.width - UM.Theme.getSize("slider_layerview_background").width / 2 - width; y: Math.floor(slider.activeHandle.y + slider.activeHandle.height / 2 - height / 2); - target: Qt.point(0, slider.activeHandle.y + slider.activeHandle.height / 2) + target: Qt.point(parent.width, slider.activeHandle.y + slider.activeHandle.height / 2) arrowSize: UM.Theme.getSize("default_arrow").width height: UM.Theme.getSize("slider_handle").height + UM.Theme.getSize("default_margin").height diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 4ccebc5c91..b5b840d939 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -332,8 +332,8 @@ "slider_layerview_background": [4.0, 0.0], "slider_layerview_margin": [1.0, 1.0], - "layerview_menu_size": [16.5, 22.0], - "layerview_menu_size_compatibility": [22, 23.0], + "layerview_menu_size": [15, 19.5], + "layerview_menu_size_compatibility": [22, 22.0], "layerview_legend_size": [1.0, 1.0], "layerview_row": [11.0, 1.5], "layerview_row_spacing": [0.0, 0.5], From a50e228ba1a2436d5509ac4acb373e24dbeda7b2 Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 8 Sep 2017 11:56:37 +0200 Subject: [PATCH 046/589] Fix onHover border for extruder buttons CURA-4148 --- resources/qml/SidebarHeader.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index f2fc0c0027..79c6339f0b 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -123,7 +123,8 @@ Column { anchors.fill: parent border.width: UM.Theme.getSize("default_lining").width - border.color: control.hovered ? UM.Theme.getColor("action_button_hovered_border") : + border.color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_border") : + control.hovered ? UM.Theme.getColor("action_button_hovered_border") : UM.Theme.getColor("action_button_border") color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active") : control.hovered ? UM.Theme.getColor("action_button_hovered") : From 8264b6fe67f0c8913a79caab36d14659872ada35 Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 8 Sep 2017 11:58:24 +0200 Subject: [PATCH 047/589] Fix default action_button color and checkbox onHover color CURA-4148 --- resources/themes/cura-light/theme.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 783d0c9edc..c1c855513f 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -123,7 +123,7 @@ "tab_active_text": [24, 41, 77, 255], "tab_background": [245, 245, 245, 255], - "action_button": [242, 242, 242, 255], + "action_button": [255, 255, 255, 255], "action_button_text": [0, 0, 0, 255], "action_button_border": [127, 127, 127, 255], "action_button_hovered": [255, 255, 255, 255], @@ -189,7 +189,7 @@ "slider_text_background": [255, 255, 255, 255], "checkbox": [255, 255, 255, 255], - "checkbox_hover": [68, 72, 75, 255], + "checkbox_hover": [255, 255, 255, 255], "checkbox_border": [64, 69, 72, 255], "checkbox_border_hover": [12, 169, 227, 255], "checkbox_mark": [119, 122, 124, 255], From a485781900883ff2f35401e586e6658659d9e706 Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 8 Sep 2017 13:06:08 +0200 Subject: [PATCH 048/589] Add new unknown icon CURA-4148 --- .../cura-light/icons/tab_status_unknown.svg | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/resources/themes/cura-light/icons/tab_status_unknown.svg b/resources/themes/cura-light/icons/tab_status_unknown.svg index 1ba37e06be..f195ae238a 100644 --- a/resources/themes/cura-light/icons/tab_status_unknown.svg +++ b/resources/themes/cura-light/icons/tab_status_unknown.svg @@ -1 +1,15 @@ - \ No newline at end of file + + + + Unknown + Created with Sketch. + + + + + + + + + + \ No newline at end of file From 748c72760bb18e9d64e9607a0a13c89839da6f1f Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 8 Sep 2017 13:53:21 +0200 Subject: [PATCH 049/589] Typo --- resources/qml/SidebarHeader.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index 79c6339f0b..d42fc8b262 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -377,7 +377,7 @@ Column { id: materialInfoLabel wrapMode: Text.WordWrap - text: catalog.i18nc("@label", "Check material compability") + text: catalog.i18nc("@label", "Check material compatibility") font: UM.Theme.getFont("default"); verticalAlignment: Text.AlignTop anchors.top: parent.top From db77a4690cbf0b5baefb3bae3f037b693e739aef Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 8 Sep 2017 15:18:40 +0200 Subject: [PATCH 050/589] Made the selected borders a little thicker CURA-4148 --- resources/qml/Sidebar.qml | 2 +- resources/qml/SidebarHeader.qml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index ce13a5eddf..b5a52e1341 100755 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -168,7 +168,7 @@ Rectangle style: ButtonStyle { background: Rectangle { - border.width: UM.Theme.getSize("default_lining").width + border.width: control.checked ? UM.Theme.getSize("default_lining").width * 2 : UM.Theme.getSize("default_lining").width border.color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_border") : control.hovered ? UM.Theme.getColor("action_button_hovered_border") : UM.Theme.getColor("action_button_border") diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index d42fc8b262..e2d1ef9559 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -122,7 +122,7 @@ Column Rectangle { anchors.fill: parent - border.width: UM.Theme.getSize("default_lining").width + border.width: control.checked ? UM.Theme.getSize("default_lining").width * 2 : UM.Theme.getSize("default_lining").width border.color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_border") : control.hovered ? UM.Theme.getColor("action_button_hovered_border") : UM.Theme.getColor("action_button_border") From c3d6023418c4aed0c7b38258829d03456fa7b584 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Fri, 8 Sep 2017 16:22:45 +0200 Subject: [PATCH 051/589] Fixed an issue that doesn't generate the jobname again once the user removes the models. - CURA-4276 --- cura/PrintInformation.py | 3 ++- resources/qml/JobSpecs.qml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cura/PrintInformation.py b/cura/PrintInformation.py index 26f9420120..83b5f4af69 100644 --- a/cura/PrintInformation.py +++ b/cura/PrintInformation.py @@ -265,7 +265,8 @@ class PrintInformation(QObject): # extension. This cuts the extension off if necessary. name = os.path.splitext(name)[0] - if self._base_name == "" and self._base_name != name: + # name is "" when I first had some meshes and afterwards I deleted them so the naming should start again + if name == "" or (self._base_name == "" and self._base_name != name): self._base_name = name self._updateJobName() diff --git a/resources/qml/JobSpecs.qml b/resources/qml/JobSpecs.qml index 0f70022efc..3e5513621b 100644 --- a/resources/qml/JobSpecs.qml +++ b/resources/qml/JobSpecs.qml @@ -43,7 +43,7 @@ Item { } if (activity == false){ //When there is no mesh in the buildplate; the printJobTextField is set to an empty string so it doesn't set an empty string as a jobName (which is later used for saving the file) - PrintInformation.setJobName('') + PrintInformation.setBaseName('') } } From 3b12e39ba85052d00f610e5edc9501ea73f73c61 Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 8 Sep 2017 16:35:08 +0200 Subject: [PATCH 052/589] Selected state font is not bold anymore for custom and recommended CURA-4148 --- resources/qml/Sidebar.qml | 2 +- resources/qml/SidebarHeader.qml | 1 - resources/themes/cura-light/theme.json | 4 ++++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index b5a52e1341..27b5b23aa6 100755 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -181,7 +181,7 @@ Rectangle color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_text") : control.hovered ? UM.Theme.getColor("action_button_hovered_text") : UM.Theme.getColor("action_button_text") - font: (control.checked || control.pressed) ? UM.Theme.getFont("default_bold") : UM.Theme.getFont("default") + font: (control.checked || control.pressed) ? UM.Theme.getFont("default_little_big") : UM.Theme.getFont("default") text: control.text; } } diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index e2d1ef9559..3cb5ae156f 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -400,7 +400,6 @@ Column } onEntered: { - var content = catalog.i18nc("@tooltip", "Click to check the material compatibility on Ultimaker.com."); base.showTooltip( materialInfoRow, diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index c1c855513f..36b43c27fb 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -17,6 +17,10 @@ "size": 1.15, "family": "Open Sans" }, + "default_little_big": { + "size": 1.17, + "family": "Open Sans" + }, "default_bold": { "size": 1.15, "bold": true, From 32c5583a3d6b56cbaae1f58fa56d525d84bc2796 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sun, 10 Sep 2017 13:52:27 +0200 Subject: [PATCH 053/589] Reduce minimum jerk value to 0 A jerk of 0 is very possible, because Jerk in 3D printing doesn't mean the derivative of acceleration but rather the maximum instantaneous change in velocity on an axis. Fixes #2338. --- resources/definitions/fdmprinter.def.json | 49 ++++++++++++----------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 817da65247..c74bd79211 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -566,6 +566,7 @@ "unit": "mm/s", "type": "float", "default_value": 20.0, + "minimum_value": "0", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -577,6 +578,7 @@ "unit": "mm/s", "type": "float", "default_value": 0.4, + "minimum_value": "0", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -588,6 +590,7 @@ "unit": "mm/s", "type": "float", "default_value": 5.0, + "minimum_value": "0", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -2677,7 +2680,7 @@ "description": "The maximum instantaneous velocity change of the print head.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "enabled": "resolveOrValue('jerk_enabled')", @@ -2690,7 +2693,7 @@ "description": "The maximum instantaneous velocity change with which infill is printed.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", @@ -2704,7 +2707,7 @@ "description": "The maximum instantaneous velocity change with which the walls are printed.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", @@ -2718,7 +2721,7 @@ "description": "The maximum instantaneous velocity change with which the outermost walls are printed.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_wall", @@ -2732,7 +2735,7 @@ "description": "The maximum instantaneous velocity change with which all inner walls are printed.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_wall", @@ -2748,7 +2751,7 @@ "description": "The maximum instantaneous velocity change with which top surface skin layers are printed.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_topbottom", @@ -2762,7 +2765,7 @@ "description": "The maximum instantaneous velocity change with which top/bottom layers are printed.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", @@ -2776,7 +2779,7 @@ "description": "The maximum instantaneous velocity change with which the support structure is printed.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", @@ -2794,7 +2797,7 @@ "type": "float", "default_value": 20, "value": "jerk_support", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled') and support_enable", "limit_to_extruder": "support_infill_extruder_nr", @@ -2809,7 +2812,7 @@ "type": "float", "default_value": 20, "value": "jerk_support", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled') and support_interface_enable and support_enable", "limit_to_extruder": "support_interface_extruder_nr", @@ -2825,7 +2828,7 @@ "type": "float", "default_value": 20, "value": "extruderValue(support_roof_extruder_nr, 'jerk_support_interface')", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled') and support_roof_enable and support_enable", "limit_to_extruder": "support_roof_extruder_nr", @@ -2840,7 +2843,7 @@ "type": "float", "default_value": 20, "value": "extruderValue(support_roof_extruder_nr, 'jerk_support_interface')", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled') and support_bottom_enable and support_enable", "limit_to_extruder": "support_bottom_extruder_nr", @@ -2857,7 +2860,7 @@ "description": "The maximum instantaneous velocity change with which the prime tower is printed.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_print", @@ -2873,7 +2876,7 @@ "unit": "mm/s", "type": "float", "default_value": 30, - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "value": "jerk_print if magic_spiralize else 30", "enabled": "resolveOrValue('jerk_enabled')", @@ -2887,7 +2890,7 @@ "type": "float", "default_value": 20, "value": "jerk_print", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled')", "settable_per_mesh": true, @@ -2901,7 +2904,7 @@ "type": "float", "default_value": 20, "value": "jerk_layer_0", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled')", "settable_per_mesh": true @@ -2914,7 +2917,7 @@ "type": "float", "default_value": 20, "value": "jerk_layer_0 * jerk_travel / jerk_print", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "enabled": "resolveOrValue('jerk_enabled')", "settable_per_extruder": true, @@ -2929,7 +2932,7 @@ "unit": "mm/s", "type": "float", "default_value": 20, - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "value": "jerk_layer_0", "enabled": "resolveOrValue('jerk_enabled')", @@ -4448,7 +4451,7 @@ "unit": "mm/s", "type": "float", "default_value": 20, - "minimum_value": "0.1", + "minimum_value": "0", "minimum_value_warning": "5", "maximum_value_warning": "50", "value": "jerk_print", @@ -4465,7 +4468,7 @@ "type": "float", "default_value": 20, "value": "raft_jerk", - "minimum_value": "0.1", + "minimum_value": "0", "minimum_value_warning": "5", "maximum_value_warning": "100", "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')", @@ -4480,7 +4483,7 @@ "type": "float", "default_value": 20, "value": "raft_jerk", - "minimum_value": "0.1", + "minimum_value": "0", "minimum_value_warning": "5", "maximum_value_warning": "50", "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')", @@ -4495,7 +4498,7 @@ "type": "float", "default_value": 20, "value": "raft_jerk", - "minimum_value": "0.1", + "minimum_value": "0", "minimum_value_warning": "5", "maximum_value_warning": "50", "enabled": "resolveOrValue('adhesion_type') == 'raft' and resolveOrValue('jerk_enabled')", @@ -5803,7 +5806,7 @@ "description": "The maximum instantaneous velocity change while performing ironing.", "unit": "mm/s", "type": "float", - "minimum_value": "0.1", + "minimum_value": "0", "maximum_value_warning": "50", "default_value": 20, "value": "jerk_topbottom", From e394811ce1907296a3b5390777eefd212fbe13c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Wed, 30 Aug 2017 18:01:03 +0200 Subject: [PATCH 054/589] Relocate locales to proper locations Fixes https://github.com/Ultimaker/Uranium/issues/246 Fixes https://github.com/Ultimaker/Uranium/issues/277 --- resources/i18n/{jp => ja}/cura.po | 0 resources/i18n/{jp => ja}/fdmextruder.def.json.po | 0 resources/i18n/{jp => ja}/fdmprinter.def.json.po | 0 resources/i18n/{ptbr => pt_BR}/cura.po | 0 resources/i18n/{ptbr => pt_BR}/fdmextruder.def.json.po | 0 resources/i18n/{ptbr => pt_BR}/fdmprinter.def.json.po | 0 resources/qml/Preferences/GeneralPage.qml | 4 ++-- 7 files changed, 2 insertions(+), 2 deletions(-) rename resources/i18n/{jp => ja}/cura.po (100%) rename resources/i18n/{jp => ja}/fdmextruder.def.json.po (100%) rename resources/i18n/{jp => ja}/fdmprinter.def.json.po (100%) rename resources/i18n/{ptbr => pt_BR}/cura.po (100%) rename resources/i18n/{ptbr => pt_BR}/fdmextruder.def.json.po (100%) rename resources/i18n/{ptbr => pt_BR}/fdmprinter.def.json.po (100%) diff --git a/resources/i18n/jp/cura.po b/resources/i18n/ja/cura.po similarity index 100% rename from resources/i18n/jp/cura.po rename to resources/i18n/ja/cura.po diff --git a/resources/i18n/jp/fdmextruder.def.json.po b/resources/i18n/ja/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/jp/fdmextruder.def.json.po rename to resources/i18n/ja/fdmextruder.def.json.po diff --git a/resources/i18n/jp/fdmprinter.def.json.po b/resources/i18n/ja/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/jp/fdmprinter.def.json.po rename to resources/i18n/ja/fdmprinter.def.json.po diff --git a/resources/i18n/ptbr/cura.po b/resources/i18n/pt_BR/cura.po similarity index 100% rename from resources/i18n/ptbr/cura.po rename to resources/i18n/pt_BR/cura.po diff --git a/resources/i18n/ptbr/fdmextruder.def.json.po b/resources/i18n/pt_BR/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/ptbr/fdmextruder.def.json.po rename to resources/i18n/pt_BR/fdmextruder.def.json.po diff --git a/resources/i18n/ptbr/fdmprinter.def.json.po b/resources/i18n/pt_BR/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/ptbr/fdmprinter.def.json.po rename to resources/i18n/pt_BR/fdmprinter.def.json.po diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index e3c10071af..38ad26b3c6 100755 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -154,11 +154,11 @@ UM.PreferencesPage append({ text: "Suomi", code: "fi" }) append({ text: "Français", code: "fr" }) append({ text: "Italiano", code: "it" }) - append({ text: "日本語", code: "jp" }) + append({ text: "日本語", code: "ja" }) append({ text: "한국어", code: "ko" }) append({ text: "Nederlands", code: "nl" }) append({ text: "Polski", code: "pl" }) - append({ text: "Português do Brasil", code: "ptbr" }) + append({ text: "Português do Brasil", code: "pt_BR" }) append({ text: "Русский", code: "ru" }) append({ text: "Türkçe", code: "tr" }) append({ text: "简体中文", code: "zh_CN" }) From 28192f5b14818324bec3ed518e7d2c179198aa11 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sun, 10 Sep 2017 01:13:22 +0200 Subject: [PATCH 055/589] Rename all languages to full xx_XX locale This is just moving the files. The preferences, etc. still has to be changed. Contributes to issue CURA-4263. --- resources/i18n/{de => de_DE}/cura.po | 0 resources/i18n/{de => de_DE}/fdmextruder.def.json.po | 0 resources/i18n/{de => de_DE}/fdmprinter.def.json.po | 0 resources/i18n/{en => en_US}/cura.po | 0 resources/i18n/{es => es_ES}/cura.po | 0 resources/i18n/{es => es_ES}/fdmextruder.def.json.po | 0 resources/i18n/{es => es_ES}/fdmprinter.def.json.po | 0 resources/i18n/{fi => fi_FI}/cura.po | 0 resources/i18n/{fi => fi_FI}/fdmextruder.def.json.po | 0 resources/i18n/{fi => fi_FI}/fdmprinter.def.json.po | 0 resources/i18n/{fr => fr_FR}/cura.po | 0 resources/i18n/{fr => fr_FR}/fdmextruder.def.json.po | 0 resources/i18n/{fr => fr_FR}/fdmprinter.def.json.po | 0 resources/i18n/{it => it_IT}/cura.po | 0 resources/i18n/{it => it_IT}/fdmextruder.def.json.po | 0 resources/i18n/{it => it_IT}/fdmprinter.def.json.po | 0 resources/i18n/{ja => ja_JP}/cura.po | 0 resources/i18n/{ja => ja_JP}/fdmextruder.def.json.po | 0 resources/i18n/{ja => ja_JP}/fdmprinter.def.json.po | 0 resources/i18n/{ko => ko_KR}/cura.po | 0 resources/i18n/{ko => ko_KR}/fdmextruder.def.json.po | 0 resources/i18n/{ko => ko_KR}/fdmprinter.def.json.po | 0 resources/i18n/{nl => nl_NL}/cura.po | 0 resources/i18n/{nl => nl_NL}/fdmextruder.def.json.po | 0 resources/i18n/{nl => nl_NL}/fdmprinter.def.json.po | 0 resources/i18n/{pl => pl_PL}/cura.po | 0 resources/i18n/{pl => pl_PL}/fdmextruder.def.json.po | 0 resources/i18n/{pl => pl_PL}/fdmprinter.def.json.po | 0 resources/i18n/{ru => ru_RU}/cura.po | 0 resources/i18n/{ru => ru_RU}/fdmextruder.def.json.po | 0 resources/i18n/{ru => ru_RU}/fdmprinter.def.json.po | 0 resources/i18n/{tr => tr_TR}/cura.po | 0 resources/i18n/{tr => tr_TR}/fdmextruder.def.json.po | 0 resources/i18n/{tr => tr_TR}/fdmprinter.def.json.po | 0 34 files changed, 0 insertions(+), 0 deletions(-) rename resources/i18n/{de => de_DE}/cura.po (100%) rename resources/i18n/{de => de_DE}/fdmextruder.def.json.po (100%) rename resources/i18n/{de => de_DE}/fdmprinter.def.json.po (100%) rename resources/i18n/{en => en_US}/cura.po (100%) rename resources/i18n/{es => es_ES}/cura.po (100%) rename resources/i18n/{es => es_ES}/fdmextruder.def.json.po (100%) rename resources/i18n/{es => es_ES}/fdmprinter.def.json.po (100%) rename resources/i18n/{fi => fi_FI}/cura.po (100%) rename resources/i18n/{fi => fi_FI}/fdmextruder.def.json.po (100%) rename resources/i18n/{fi => fi_FI}/fdmprinter.def.json.po (100%) rename resources/i18n/{fr => fr_FR}/cura.po (100%) rename resources/i18n/{fr => fr_FR}/fdmextruder.def.json.po (100%) rename resources/i18n/{fr => fr_FR}/fdmprinter.def.json.po (100%) rename resources/i18n/{it => it_IT}/cura.po (100%) rename resources/i18n/{it => it_IT}/fdmextruder.def.json.po (100%) rename resources/i18n/{it => it_IT}/fdmprinter.def.json.po (100%) rename resources/i18n/{ja => ja_JP}/cura.po (100%) rename resources/i18n/{ja => ja_JP}/fdmextruder.def.json.po (100%) rename resources/i18n/{ja => ja_JP}/fdmprinter.def.json.po (100%) rename resources/i18n/{ko => ko_KR}/cura.po (100%) rename resources/i18n/{ko => ko_KR}/fdmextruder.def.json.po (100%) rename resources/i18n/{ko => ko_KR}/fdmprinter.def.json.po (100%) rename resources/i18n/{nl => nl_NL}/cura.po (100%) rename resources/i18n/{nl => nl_NL}/fdmextruder.def.json.po (100%) rename resources/i18n/{nl => nl_NL}/fdmprinter.def.json.po (100%) rename resources/i18n/{pl => pl_PL}/cura.po (100%) rename resources/i18n/{pl => pl_PL}/fdmextruder.def.json.po (100%) rename resources/i18n/{pl => pl_PL}/fdmprinter.def.json.po (100%) rename resources/i18n/{ru => ru_RU}/cura.po (100%) rename resources/i18n/{ru => ru_RU}/fdmextruder.def.json.po (100%) rename resources/i18n/{ru => ru_RU}/fdmprinter.def.json.po (100%) rename resources/i18n/{tr => tr_TR}/cura.po (100%) rename resources/i18n/{tr => tr_TR}/fdmextruder.def.json.po (100%) rename resources/i18n/{tr => tr_TR}/fdmprinter.def.json.po (100%) diff --git a/resources/i18n/de/cura.po b/resources/i18n/de_DE/cura.po similarity index 100% rename from resources/i18n/de/cura.po rename to resources/i18n/de_DE/cura.po diff --git a/resources/i18n/de/fdmextruder.def.json.po b/resources/i18n/de_DE/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/de/fdmextruder.def.json.po rename to resources/i18n/de_DE/fdmextruder.def.json.po diff --git a/resources/i18n/de/fdmprinter.def.json.po b/resources/i18n/de_DE/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/de/fdmprinter.def.json.po rename to resources/i18n/de_DE/fdmprinter.def.json.po diff --git a/resources/i18n/en/cura.po b/resources/i18n/en_US/cura.po similarity index 100% rename from resources/i18n/en/cura.po rename to resources/i18n/en_US/cura.po diff --git a/resources/i18n/es/cura.po b/resources/i18n/es_ES/cura.po similarity index 100% rename from resources/i18n/es/cura.po rename to resources/i18n/es_ES/cura.po diff --git a/resources/i18n/es/fdmextruder.def.json.po b/resources/i18n/es_ES/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/es/fdmextruder.def.json.po rename to resources/i18n/es_ES/fdmextruder.def.json.po diff --git a/resources/i18n/es/fdmprinter.def.json.po b/resources/i18n/es_ES/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/es/fdmprinter.def.json.po rename to resources/i18n/es_ES/fdmprinter.def.json.po diff --git a/resources/i18n/fi/cura.po b/resources/i18n/fi_FI/cura.po similarity index 100% rename from resources/i18n/fi/cura.po rename to resources/i18n/fi_FI/cura.po diff --git a/resources/i18n/fi/fdmextruder.def.json.po b/resources/i18n/fi_FI/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/fi/fdmextruder.def.json.po rename to resources/i18n/fi_FI/fdmextruder.def.json.po diff --git a/resources/i18n/fi/fdmprinter.def.json.po b/resources/i18n/fi_FI/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/fi/fdmprinter.def.json.po rename to resources/i18n/fi_FI/fdmprinter.def.json.po diff --git a/resources/i18n/fr/cura.po b/resources/i18n/fr_FR/cura.po similarity index 100% rename from resources/i18n/fr/cura.po rename to resources/i18n/fr_FR/cura.po diff --git a/resources/i18n/fr/fdmextruder.def.json.po b/resources/i18n/fr_FR/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/fr/fdmextruder.def.json.po rename to resources/i18n/fr_FR/fdmextruder.def.json.po diff --git a/resources/i18n/fr/fdmprinter.def.json.po b/resources/i18n/fr_FR/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/fr/fdmprinter.def.json.po rename to resources/i18n/fr_FR/fdmprinter.def.json.po diff --git a/resources/i18n/it/cura.po b/resources/i18n/it_IT/cura.po similarity index 100% rename from resources/i18n/it/cura.po rename to resources/i18n/it_IT/cura.po diff --git a/resources/i18n/it/fdmextruder.def.json.po b/resources/i18n/it_IT/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/it/fdmextruder.def.json.po rename to resources/i18n/it_IT/fdmextruder.def.json.po diff --git a/resources/i18n/it/fdmprinter.def.json.po b/resources/i18n/it_IT/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/it/fdmprinter.def.json.po rename to resources/i18n/it_IT/fdmprinter.def.json.po diff --git a/resources/i18n/ja/cura.po b/resources/i18n/ja_JP/cura.po similarity index 100% rename from resources/i18n/ja/cura.po rename to resources/i18n/ja_JP/cura.po diff --git a/resources/i18n/ja/fdmextruder.def.json.po b/resources/i18n/ja_JP/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/ja/fdmextruder.def.json.po rename to resources/i18n/ja_JP/fdmextruder.def.json.po diff --git a/resources/i18n/ja/fdmprinter.def.json.po b/resources/i18n/ja_JP/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/ja/fdmprinter.def.json.po rename to resources/i18n/ja_JP/fdmprinter.def.json.po diff --git a/resources/i18n/ko/cura.po b/resources/i18n/ko_KR/cura.po similarity index 100% rename from resources/i18n/ko/cura.po rename to resources/i18n/ko_KR/cura.po diff --git a/resources/i18n/ko/fdmextruder.def.json.po b/resources/i18n/ko_KR/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/ko/fdmextruder.def.json.po rename to resources/i18n/ko_KR/fdmextruder.def.json.po diff --git a/resources/i18n/ko/fdmprinter.def.json.po b/resources/i18n/ko_KR/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/ko/fdmprinter.def.json.po rename to resources/i18n/ko_KR/fdmprinter.def.json.po diff --git a/resources/i18n/nl/cura.po b/resources/i18n/nl_NL/cura.po similarity index 100% rename from resources/i18n/nl/cura.po rename to resources/i18n/nl_NL/cura.po diff --git a/resources/i18n/nl/fdmextruder.def.json.po b/resources/i18n/nl_NL/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/nl/fdmextruder.def.json.po rename to resources/i18n/nl_NL/fdmextruder.def.json.po diff --git a/resources/i18n/nl/fdmprinter.def.json.po b/resources/i18n/nl_NL/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/nl/fdmprinter.def.json.po rename to resources/i18n/nl_NL/fdmprinter.def.json.po diff --git a/resources/i18n/pl/cura.po b/resources/i18n/pl_PL/cura.po similarity index 100% rename from resources/i18n/pl/cura.po rename to resources/i18n/pl_PL/cura.po diff --git a/resources/i18n/pl/fdmextruder.def.json.po b/resources/i18n/pl_PL/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/pl/fdmextruder.def.json.po rename to resources/i18n/pl_PL/fdmextruder.def.json.po diff --git a/resources/i18n/pl/fdmprinter.def.json.po b/resources/i18n/pl_PL/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/pl/fdmprinter.def.json.po rename to resources/i18n/pl_PL/fdmprinter.def.json.po diff --git a/resources/i18n/ru/cura.po b/resources/i18n/ru_RU/cura.po similarity index 100% rename from resources/i18n/ru/cura.po rename to resources/i18n/ru_RU/cura.po diff --git a/resources/i18n/ru/fdmextruder.def.json.po b/resources/i18n/ru_RU/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/ru/fdmextruder.def.json.po rename to resources/i18n/ru_RU/fdmextruder.def.json.po diff --git a/resources/i18n/ru/fdmprinter.def.json.po b/resources/i18n/ru_RU/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/ru/fdmprinter.def.json.po rename to resources/i18n/ru_RU/fdmprinter.def.json.po diff --git a/resources/i18n/tr/cura.po b/resources/i18n/tr_TR/cura.po similarity index 100% rename from resources/i18n/tr/cura.po rename to resources/i18n/tr_TR/cura.po diff --git a/resources/i18n/tr/fdmextruder.def.json.po b/resources/i18n/tr_TR/fdmextruder.def.json.po similarity index 100% rename from resources/i18n/tr/fdmextruder.def.json.po rename to resources/i18n/tr_TR/fdmextruder.def.json.po diff --git a/resources/i18n/tr/fdmprinter.def.json.po b/resources/i18n/tr_TR/fdmprinter.def.json.po similarity index 100% rename from resources/i18n/tr/fdmprinter.def.json.po rename to resources/i18n/tr_TR/fdmprinter.def.json.po From 46e4902df39956916d6ed660a04a6bdac2026684 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sun, 10 Sep 2017 01:16:31 +0200 Subject: [PATCH 056/589] Ignore new en_US locale Contributes to issue CURA-4263. --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6a33e104a9..2993d64447 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ __pycache__ *.mo docs/html *.log -resources/i18n/en +resources/i18n/en_US resources/i18n/7s resources/i18n/x-test resources/firmware From 91c5da7054715b6d55be69db5b53c8a46326b141 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sun, 10 Sep 2017 01:17:18 +0200 Subject: [PATCH 057/589] Remove auto-generated file It should never have been committed. Contributes to issue CURA-4263. --- resources/i18n/en_US/cura.po | 3786 ---------------------------------- 1 file changed, 3786 deletions(-) delete mode 100644 resources/i18n/en_US/cura.po diff --git a/resources/i18n/en_US/cura.po b/resources/i18n/en_US/cura.po deleted file mode 100644 index 3da9b321d1..0000000000 --- a/resources/i18n/en_US/cura.po +++ /dev/null @@ -1,3786 +0,0 @@ -# Cura -# Copyright (C) 2017 Ultimaker -# This file is distributed under the same license as the Cura package. -# Ruben Dulek , 2017. -# -msgid "" -msgstr "" -"Project-Id-Version: Cura 2.7\n" -"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-02 16:53+0200\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" -"Language: en_US\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:28 -msgctxt "@action" -msgid "Machine Settings" -msgstr "Machine Settings" - -#: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 -msgctxt "@item:inlistbox" -msgid "X-Ray" -msgstr "X-Ray" - -#: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 -msgctxt "@item:inlistbox" -msgid "X3D File" -msgstr "X3D File" - -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/__init__.py:16 -msgctxt "@item:inlistbox" -msgid "GCode File" -msgstr "GCode File" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:13 -msgctxt "@label" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:17 -msgctxt "@info:whatsthis" -msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:36 -msgctxt "@item:inmenu" -msgid "Doodle3D printing" -msgstr "Doodle3D printing" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:37 -msgctxt "@action:button" -msgid "Print with Doodle3D" -msgstr "Print with Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:38 -msgctxt "@info:tooltip" -msgid "Print with " -msgstr "Print with " - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:49 -msgctxt "@title:menu" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:50 -msgctxt "@item:inlistbox" -msgid "Enable Scan devices..." -msgstr "Enable Scan devices..." - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 -msgctxt "@item:inmenu" -msgid "Show Changelog" -msgstr "Show Changelog" - -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:20 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Flatten active settings" - -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:32 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Profile has been flattened & activated." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 -msgctxt "@item:inmenu" -msgid "USB printing" -msgstr "USB printing" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print via USB" -msgstr "Print via USB" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 -msgctxt "@info:tooltip" -msgid "Print via USB" -msgstr "Print via USB" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 -msgctxt "@info:status" -msgid "Connected via USB" -msgstr "Connected via USB" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 -msgctxt "@info:status" -msgid "Unable to start a new job because the printer is busy or not connected." -msgstr "Unable to start a new job because the printer is busy or not connected." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 -msgctxt "@info:status" -msgid "This printer does not support USB printing because it uses UltiGCode flavor." -msgstr "This printer does not support USB printing because it uses UltiGCode flavor." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 -msgctxt "@info:status" -msgid "Unable to start a new job because the printer does not support usb printing." -msgstr "Unable to start a new job because the printer does not support usb printing." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 -msgctxt "@info" -msgid "Unable to update firmware because there are no printers connected." -msgstr "Unable to update firmware because there are no printers connected." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 -#, python-format -msgctxt "@info" -msgid "Could not find firmware required for the printer at %s." -msgstr "Could not find firmware required for the printer at %s." - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:14 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G File" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Save to Removable Drive" -msgstr "Save to Removable Drive" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:24 -#, python-brace-format -msgctxt "@item:inlistbox" -msgid "Save to Removable Drive {0}" -msgstr "Save to Removable Drive {0}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 -#, python-brace-format -msgctxt "@info:progress" -msgid "Saving to Removable Drive {0}" -msgstr "Saving to Removable Drive {0}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 -#, python-brace-format -msgctxt "@info:status" -msgid "Could not save to {0}: {1}" -msgstr "Could not save to {0}: {1}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 -#, python-brace-format -msgctxt "@info:status" -msgid "Saved to Removable Drive {0} as {1}" -msgstr "Saved to Removable Drive {0} as {1}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -msgctxt "@action:button" -msgid "Eject" -msgstr "Eject" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -#, python-brace-format -msgctxt "@action" -msgid "Eject removable device {0}" -msgstr "Eject removable device {0}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:138 -#, python-brace-format -msgctxt "@info:status" -msgid "Could not save to removable drive {0}: {1}" -msgstr "Could not save to removable drive {0}: {1}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:148 -#, python-brace-format -msgctxt "@info:status" -msgid "Ejected {0}. You can now safely remove the drive." -msgstr "Ejected {0}. You can now safely remove the drive." - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:150 -#, python-brace-format -msgctxt "@info:status" -msgid "Failed to eject {0}. Another program may be using the drive." -msgstr "Failed to eject {0}. Another program may be using the drive." - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/WindowsRemovableDrivePlugin.py:68 -msgctxt "@item:intext" -msgid "Removable Drive" -msgstr "Removable Drive" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:106 -msgctxt "@action:button Preceded by 'Ready to'." -msgid "Print over network" -msgstr "Print over network" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 -msgctxt "@properties:tooltip" -msgid "Print over network" -msgstr "Print over network" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:156 -msgctxt "@info:status" -msgid "Access to the printer requested. Please approve the request on the printer" -msgstr "Access to the printer requested. Please approve the request on the printer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 -msgctxt "@info:status" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 -msgctxt "@action:button" -msgid "Retry" -msgstr "Retry" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "Re-send the access request" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "Access to the printer accepted" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 -msgctxt "@info:status" -msgid "No access to print with this printer. Unable to send print job." -msgstr "No access to print with this printer. Unable to send print job." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 -msgctxt "@action:button" -msgid "Request Access" -msgstr "Request Access" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 -msgctxt "@info:tooltip" -msgid "Send access request to the printer" -msgstr "Send access request to the printer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:358 -msgctxt "@info:status" -msgid "Connected over the network. Please approve the access request on the printer." -msgstr "Connected over the network. Please approve the access request on the printer." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:365 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Connected over the network." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:378 -msgctxt "@info:status" -msgid "Connected over the network. No access to control the printer." -msgstr "Connected over the network. No access to control the printer." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:383 -msgctxt "@info:status" -msgid "Access request was denied on the printer." -msgstr "Access request was denied on the printer." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:386 -msgctxt "@info:status" -msgid "Access request failed due to a timeout." -msgstr "Access request failed due to a timeout." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:450 -msgctxt "@info:status" -msgid "The connection with the network was lost." -msgstr "The connection with the network was lost." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:481 -msgctxt "@info:status" -msgid "The connection with the printer was lost. Check your printer to see if it is connected." -msgstr "The connection with the printer was lost. Check your printer to see if it is connected." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:630 -#, python-format -msgctxt "@info:status" -msgid "Unable to start a new print job, printer is busy. Current printer status is %s." -msgstr "Unable to start a new print job, printer is busy. Current printer status is %s." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:654 -#, python-brace-format -msgctxt "@info:status" -msgid "Unable to start a new print job. No Printcore loaded in slot {0}" -msgstr "Unable to start a new print job. No Printcore loaded in slot {0}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:661 -#, python-brace-format -msgctxt "@info:status" -msgid "Unable to start a new print job. No material loaded in slot {0}" -msgstr "Unable to start a new print job. No material loaded in slot {0}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:670 -#, python-brace-format -msgctxt "@label" -msgid "Not enough material for spool {0}." -msgstr "Not enough material for spool {0}." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:680 -#, python-brace-format -msgctxt "@label" -msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:694 -#, python-brace-format -msgctxt "@label" -msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -msgstr "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 -#, python-brace-format -msgctxt "@label" -msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." -msgstr "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:707 -msgctxt "@label" -msgid "Are you sure you wish to print with the selected configuration?" -msgstr "Are you sure you wish to print with the selected configuration?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:708 -msgctxt "@label" -msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:714 -msgctxt "@window:title" -msgid "Mismatched configuration" -msgstr "Mismatched configuration" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:815 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Sending data to printer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:816 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:46 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:137 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Cancel" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:884 -msgctxt "@info:status" -msgid "Unable to send data to printer. Is another job still active?" -msgstr "Unable to send data to printer. Is another job still active?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1018 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 -msgctxt "@label:MonitorStatus" -msgid "Aborting print..." -msgstr "Aborting print..." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1024 -msgctxt "@label:MonitorStatus" -msgid "Print aborted. Please check the printer" -msgstr "Print aborted. Please check the printer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1030 -msgctxt "@label:MonitorStatus" -msgid "Pausing print..." -msgstr "Pausing print..." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1032 -msgctxt "@label:MonitorStatus" -msgid "Resuming print..." -msgstr "Resuming print..." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1175 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Sync with your printer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1177 -msgctxt "@label" -msgid "Would you like to use your current printer configuration in Cura?" -msgstr "Would you like to use your current printer configuration in Cura?" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1179 -msgctxt "@label" -msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -msgstr "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 -msgctxt "@action" -msgid "Connect via Network" -msgstr "Connect via Network" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:172 -msgctxt "@info:status" -msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" -msgstr "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 -msgctxt "@item:inlistbox" -msgid "SolidWorks part file" -msgstr "SolidWorks part file" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 -msgctxt "@item:inlistbox" -msgid "SolidWorks assembly file" -msgstr "SolidWorks assembly file" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 -msgid "Configure" -msgstr "Configure" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:129 -#, python-format -msgctxt "@info:status" -msgid "Error while starting %s!" -msgstr "Error while starting %s!" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:207 -msgctxt "@info:status" -msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" -msgstr "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" - -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 -msgid "Modify G-Code" -msgstr "Modify G-Code" - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:43 -msgctxt "@info" -msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." -msgstr "Cura collects anonymised slicing statistics. You can disable this in the preferences." - -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:44 -msgctxt "@action:button" -msgid "Dismiss" -msgstr "Dismiss" - -#: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 -msgctxt "@item:inlistbox" -msgid "Cura 15.04 profiles" -msgstr "Cura 15.04 profiles" - -#: /home/ruben/Projects/Cura/plugins/GCodeProfileReader/__init__.py:14 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:14 -msgctxt "@item:inlistbox" -msgid "G-code File" -msgstr "G-code File" - -#: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 -msgctxt "@item:inlistbox" -msgid "Layers" -msgstr "Layers" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 -msgctxt "@info:status" -msgid "Cura does not accurately display layers when Wire Printing is enabled" -msgstr "Cura does not accurately display layers when Wire Printing is enabled" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 -msgctxt "@item:inlistbox" -msgid "JPG Image" -msgstr "JPG Image" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "JPEG Image" -msgstr "JPEG Image" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:22 -msgctxt "@item:inlistbox" -msgid "PNG Image" -msgstr "PNG Image" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:26 -msgctxt "@item:inlistbox" -msgid "BMP Image" -msgstr "BMP Image" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:30 -msgctxt "@item:inlistbox" -msgid "GIF Image" -msgstr "GIF Image" - -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:281 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 -msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "The selected material is incompatible with the selected machine or configuration." - -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:308 -#, python-brace-format -msgctxt "@info:status" -msgid "Unable to slice with the current settings. The following settings have errors: {0}" -msgstr "Unable to slice with the current settings. The following settings have errors: {0}" - -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:317 -msgctxt "@info:status" -msgid "Unable to slice because the prime tower or prime position(s) are invalid." -msgstr "Unable to slice because the prime tower or prime position(s) are invalid." - -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:325 -msgctxt "@info:status" -msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." -msgstr "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." - -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:65 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 -msgctxt "@info:status" -msgid "Processing Layers" -msgstr "Processing Layers" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 -msgctxt "@label" -msgid "Per Model Settings" -msgstr "Per Model Settings" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:15 -msgctxt "@info:tooltip" -msgid "Configure Per Model Settings" -msgstr "Configure Per Model Settings" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 -msgctxt "@title:tab" -msgid "Recommended" -msgstr "Recommended" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:459 -msgctxt "@title:tab" -msgid "Custom" -msgstr "Custom" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/__init__.py:30 -#: /home/ruben/Projects/Cura/plugins/3MFReader/__init__.py:36 -msgctxt "@item:inlistbox" -msgid "3MF File" -msgstr "3MF File" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:122 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1050 -msgctxt "@label" -msgid "Nozzle" -msgstr "Nozzle" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:25 -msgid "Browse plugins" -msgstr "Browse plugins" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:120 -msgctxt "@window:title" -msgid "Plugin browser" -msgstr "Plugin browser" - -#: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Solid" -msgstr "Solid" - -#: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "G File" -msgstr "G File" - -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:254 -msgctxt "@info:status" -msgid "Parsing G-code" -msgstr "Parsing G-code" - -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:365 -msgctxt "@info:generic" -msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." -msgstr "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." - -#: /home/ruben/Projects/Cura/plugins/CuraProfileWriter/__init__.py:14 -#: /home/ruben/Projects/Cura/plugins/CuraProfileReader/__init__.py:14 -msgctxt "@item:inlistbox" -msgid "Cura Profile" -msgstr "Cura Profile" - -#: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 -msgctxt "@item:inlistbox" -msgid "3MF file" -msgstr "3MF file" - -#: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:38 -msgctxt "@item:inlistbox" -msgid "Cura Project 3MF file" -msgstr "Cura Project 3MF file" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:20 -msgctxt "@action" -msgid "Select upgrades" -msgstr "Select upgrades" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.py:12 -msgctxt "@action" -msgid "Upgrade Firmware" -msgstr "Upgrade Firmware" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 -msgctxt "@action" -msgid "Checkup" -msgstr "Checkup" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:15 -msgctxt "@action" -msgid "Level build plate" -msgstr "Level build plate" - -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:247 -#, python-brace-format -msgctxt "@label" -msgid "Pre-sliced file {0}" -msgstr "Pre-sliced file {0}" - -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 -msgctxt "@item:material" -msgid "No material loaded" -msgstr "No material loaded" - -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 -msgctxt "@item:material" -msgid "Unknown material" -msgstr "Unknown material" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 -msgctxt "@info:status" -msgid "Finding new location for objects" -msgstr "Finding new location for objects" - -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:85 -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 -msgctxt "@info:status" -msgid "Unable to find a location within the build volume for all objects" -msgstr "Unable to find a location within the build volume for all objects" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:417 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 -msgctxt "@title:window" -msgid "File Already Exists" -msgstr "File Already Exists" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:418 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 -#, python-brace-format -msgctxt "@label" -msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "The file {0} already exists. Are you sure you want to overwrite it?" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:801 -msgctxt "@label" -msgid "Custom" -msgstr "Custom" - -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:805 -msgctxt "@label" -msgid "Custom Material" -msgstr "Custom Material" - -#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 -msgctxt "@info:status Has a cancel button next to it." -msgid "The selected material diameter causes the material to become incompatible with the current printer." -msgstr "The selected material diameter causes the material to become incompatible with the current printer." - -#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:25 -msgctxt "@action:button" -msgid "Undo" -msgstr "Undo" - -#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:25 -msgctxt "@action" -msgid "Undo changing the material diameter." -msgstr "Undo changing the material diameter." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 -#, python-brace-format -msgctxt "@info:status" -msgid "Failed to export profile to {0}: {1}" -msgstr "Failed to export profile to {0}: {1}" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:148 -#, python-brace-format -msgctxt "@info:status" -msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "Failed to export profile to {0}: Writer plugin reported failure." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 -#, python-brace-format -msgctxt "@info:status" -msgid "Exported profile to {0}" -msgstr "Exported profile to {0}" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:199 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:208 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:242 -#, python-brace-format -msgctxt "@info:status" -msgid "Failed to import profile from {0}: {1}" -msgstr "Failed to import profile from {0}: {1}" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:210 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:246 -#, python-brace-format -msgctxt "@info:status" -msgid "Successfully imported profile {0}" -msgstr "Successfully imported profile {0}" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:249 -#, python-brace-format -msgctxt "@info:status" -msgid "Profile {0} has an unknown file type or is corrupted." -msgstr "Profile {0} has an unknown file type or is corrupted." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:267 -msgctxt "@label" -msgid "Custom profile" -msgstr "Custom profile" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:278 -msgctxt "@info:status" -msgid "Profile is missing a quality type." -msgstr "Profile is missing a quality type." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:300 -#, python-brace-format -msgctxt "@info:status" -msgid "Could not find a quality type {0} for the current configuration." -msgstr "Could not find a quality type {0} for the current configuration." - -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:95 -msgctxt "@info:status" -msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." -msgstr "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." - -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 -msgctxt "@info:status" -msgid "Multiplying and placing objects" -msgstr "Multiplying and placing objects" - -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 -msgctxt "@title:window" -msgid "Crash Report" -msgstr "Crash Report" - -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:79 -msgctxt "@label" -msgid "" -"

A fatal exception has occurred that we could not recover from!

\n" -"

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" -" " -msgstr "" -"

A fatal exception has occurred that we could not recover from!

\n" -"

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" -" " - -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -msgctxt "@action:button" -msgid "Open Web Page" -msgstr "Open Web Page" - -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:248 -msgctxt "@info:progress" -msgid "Loading machines..." -msgstr "Loading machines..." - -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:610 -msgctxt "@info:progress" -msgid "Setting up scene..." -msgstr "Setting up scene..." - -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:652 -msgctxt "@info:progress" -msgid "Loading interface..." -msgstr "Loading interface..." - -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:815 -#, python-format -msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." -msgid "%(width).1f x %(depth).1f x %(height).1f mm" -msgstr "%(width).1f x %(depth).1f x %(height).1f mm" - -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1285 -#, python-brace-format -msgctxt "@info:status" -msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" -msgstr "Only one G-code file can be loaded at a time. Skipped importing {0}" - -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1294 -#, python-brace-format -msgctxt "@info:status" -msgid "Can't open any other file if G-code is loading. Skipped importing {0}" -msgstr "Can't open any other file if G-code is loading. Skipped importing {0}" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 -msgctxt "@title" -msgid "Machine Settings" -msgstr "Machine Settings" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:77 -msgctxt "@title:tab" -msgid "Printer" -msgstr "Printer" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:96 -msgctxt "@label" -msgid "Printer Settings" -msgstr "Printer Settings" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:107 -msgctxt "@label" -msgid "X (Width)" -msgstr "X (Width)" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:286 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:838 -msgctxt "@label" -msgid "mm" -msgstr "mm" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:117 -msgctxt "@label" -msgid "Y (Depth)" -msgstr "Y (Depth)" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:127 -msgctxt "@label" -msgid "Z (Height)" -msgstr "Z (Height)" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:139 -msgctxt "@label" -msgid "Build plate shape" -msgstr "Build plate shape" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:148 -msgctxt "@option:check" -msgid "Origin at center" -msgstr "Origin at center" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:156 -msgctxt "@option:check" -msgid "Heated bed" -msgstr "Heated bed" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:167 -msgctxt "@label" -msgid "Gcode flavor" -msgstr "Gcode flavor" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:180 -msgctxt "@label" -msgid "Printhead Settings" -msgstr "Printhead Settings" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:190 -msgctxt "@label" -msgid "X min" -msgstr "X min" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 -msgctxt "@tooltip" -msgid "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distance from the left of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:200 -msgctxt "@label" -msgid "Y min" -msgstr "Y min" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 -msgctxt "@tooltip" -msgid "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distance from the front of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:210 -msgctxt "@label" -msgid "X max" -msgstr "X max" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 -msgctxt "@tooltip" -msgid "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distance from the right of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:220 -msgctxt "@label" -msgid "Y max" -msgstr "Y max" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 -msgctxt "@tooltip" -msgid "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." -msgstr "Distance from the rear of the printhead to the center of the nozzle. Used to prevent colissions between previous prints and the printhead when printing \"One at a Time\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:233 -msgctxt "@label" -msgid "Gantry height" -msgstr "Gantry height" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 -msgctxt "@tooltip" -msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." -msgstr "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:253 -msgctxt "@label" -msgid "Number of Extruders" -msgstr "Number of Extruders" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 -msgctxt "@tooltip" -msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." -msgstr "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 -msgctxt "@label" -msgid "Material diameter" -msgstr "Material diameter" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:297 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:388 -msgctxt "@label" -msgid "Nozzle size" -msgstr "Nozzle size" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:315 -msgctxt "@label" -msgid "Start Gcode" -msgstr "Start Gcode" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:325 -msgctxt "@tooltip" -msgid "Gcode commands to be executed at the very start." -msgstr "Gcode commands to be executed at the very start." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:334 -msgctxt "@label" -msgid "End Gcode" -msgstr "End Gcode" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:344 -msgctxt "@tooltip" -msgid "Gcode commands to be executed at the very end." -msgstr "Gcode commands to be executed at the very end." - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:376 -msgctxt "@label" -msgid "Nozzle Settings" -msgstr "Nozzle Settings" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:398 -msgctxt "@label" -msgid "Nozzle offset X" -msgstr "Nozzle offset X" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:410 -msgctxt "@label" -msgid "Nozzle offset Y" -msgstr "Nozzle offset Y" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:431 -msgctxt "@label" -msgid "Extruder Start Gcode" -msgstr "Extruder Start Gcode" - -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:449 -msgctxt "@label" -msgid "Extruder End Gcode" -msgstr "Extruder End Gcode" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:20 -msgctxt "@title:window" -msgid "Doodle3D Settings" -msgstr "Doodle3D Settings" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:53 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 -msgctxt "@action:button" -msgid "Save" -msgstr "Save" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:23 -msgctxt "@title:window" -msgid "Print to: %1" -msgstr "Print to: %1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:40 -msgctxt "@label" -msgid "Extruder Temperature: %1/%2°C" -msgstr "Extruder Temperature: %1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:45 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:46 -msgctxt "@label" -msgid "Bed Temperature: %1/%2°C" -msgstr "Bed Temperature: %1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:64 -msgctxt "@label" -msgid "%1" -msgstr "%1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:82 -msgctxt "@action:button" -msgid "Print" -msgstr "Print" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 -msgctxt "@label" -msgid "Changelog" -msgstr "Changelog" - -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:446 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:306 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:125 -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 -msgctxt "@action:button" -msgid "Close" -msgstr "Close" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:22 -msgctxt "@title:window" -msgid "Firmware Update" -msgstr "Firmware Update" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:42 -msgctxt "@label" -msgid "Firmware update completed." -msgstr "Firmware update completed." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:47 -msgctxt "@label" -msgid "Starting firmware update, this may take a while." -msgstr "Starting firmware update, this may take a while." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:52 -msgctxt "@label" -msgid "Updating firmware." -msgstr "Updating firmware." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:61 -msgctxt "@label" -msgid "Firmware update failed due to an unknown error." -msgstr "Firmware update failed due to an unknown error." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:64 -msgctxt "@label" -msgid "Firmware update failed due to an communication error." -msgstr "Firmware update failed due to an communication error." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:67 -msgctxt "@label" -msgid "Firmware update failed due to an input/output error." -msgstr "Firmware update failed due to an input/output error." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:70 -msgctxt "@label" -msgid "Firmware update failed due to missing firmware." -msgstr "Firmware update failed due to missing firmware." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:73 -msgctxt "@label" -msgid "Unknown error code: %1" -msgstr "Unknown error code: %1" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 -msgctxt "@title:window" -msgid "Connect to Networked Printer" -msgstr "Connect to Networked Printer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 -msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 -msgctxt "@action:button" -msgid "Add" -msgstr "Add" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 -msgctxt "@action:button" -msgid "Edit" -msgstr "Edit" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 -msgctxt "@action:button" -msgid "Remove" -msgstr "Remove" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:33 -msgctxt "@action:button" -msgid "Refresh" -msgstr "Refresh" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:196 -msgctxt "@label" -msgid "If your printer is not listed, read the network printing troubleshooting guide" -msgstr "If your printer is not listed, read the network printing troubleshooting guide" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:223 -msgctxt "@label" -msgid "Type" -msgstr "Type" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 -msgctxt "@label" -msgid "Ultimaker 3" -msgstr "Ultimaker 3" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:238 -msgctxt "@label" -msgid "Ultimaker 3 Extended" -msgstr "Ultimaker 3 Extended" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:241 -msgctxt "@label" -msgid "Unknown" -msgstr "Unknown" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:254 -msgctxt "@label" -msgid "Firmware version" -msgstr "Firmware version" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 -msgctxt "@label" -msgid "Address" -msgstr "Address" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -msgctxt "@label" -msgid "The printer at this address has not yet responded." -msgstr "The printer at this address has not yet responded." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -msgctxt "@action:button" -msgid "Connect" -msgstr "Connect" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 -msgctxt "@title:window" -msgid "Printer Address" -msgstr "Printer Address" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -msgctxt "@alabel" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Enter the IP address or hostname of your printer on the network." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 -msgctxt "@action:button" -msgid "Ok" -msgstr "Ok" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Connect to a printer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 -msgctxt "@info:tooltip" -msgid "Load the configuration of the printer into Cura" -msgstr "Load the configuration of the printer into Cura" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 -msgctxt "@action:button" -msgid "Activate Configuration" -msgstr "Activate Configuration" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 -msgctxt "@title:window" -msgid "Cura SolidWorks Plugin Configuration" -msgstr "Cura SolidWorks Plugin Configuration" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 -msgctxt "@action:label" -msgid "Default quality of the exported STL:" -msgstr "Default quality of the exported STL:" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Always ask" -msgstr "Always ask" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Fine quality" -msgstr "Always use Fine quality" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Always use Coarse quality" -msgstr "Always use Coarse quality" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:92 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:88 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 -msgctxt "@action:button" -msgid "OK" -msgstr "OK" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 -msgctxt "@title:window" -msgid "Import SolidWorks File as STL..." -msgstr "Import SolidWorks File as STL..." - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 -msgctxt "@info:tooltip" -msgid "Quality of the Exported STL" -msgstr "Quality of the Exported STL" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 -msgctxt "@action:label" -msgid "Quality" -msgstr "Quality" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Coarse" -msgstr "Coarse" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 -msgctxt "@option:curaSolidworksStlQuality" -msgid "Fine" -msgstr "Fine" - -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:81 -msgctxt "@text:window" -msgid "Remember my choice" -msgstr "Remember my choice" - -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 -msgctxt "@title:window" -msgid "Post Processing Plugin" -msgstr "Post Processing Plugin" - -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:49 -msgctxt "@label" -msgid "Post Processing Scripts" -msgstr "Post Processing Scripts" - -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:218 -msgctxt "@action" -msgid "Add a script" -msgstr "Add a script" - -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:264 -msgctxt "@label" -msgid "Settings" -msgstr "Settings" - -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 -msgctxt "@info:tooltip" -msgid "Change active post-processing scripts" -msgstr "Change active post-processing scripts" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:71 -msgctxt "@label" -msgid "View Mode: Layers" -msgstr "View Mode: Layers" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:88 -msgctxt "@label" -msgid "Color scheme" -msgstr "Color scheme" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:102 -msgctxt "@label:listbox" -msgid "Material Color" -msgstr "Material Color" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:106 -msgctxt "@label:listbox" -msgid "Line Type" -msgstr "Line Type" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:144 -msgctxt "@label" -msgid "Compatibility Mode" -msgstr "Compatibility Mode" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:210 -msgctxt "@label" -msgid "Show Travels" -msgstr "Show Travels" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 -msgctxt "@label" -msgid "Show Helpers" -msgstr "Show Helpers" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 -msgctxt "@label" -msgid "Show Shell" -msgstr "Show Shell" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 -msgctxt "@label" -msgid "Show Infill" -msgstr "Show Infill" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:264 -msgctxt "@label" -msgid "Only Show Top Layers" -msgstr "Only Show Top Layers" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:273 -msgctxt "@label" -msgid "Show 5 Detailed Layers On Top" -msgstr "Show 5 Detailed Layers On Top" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:284 -msgctxt "@label" -msgid "Top / Bottom" -msgstr "Top / Bottom" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:288 -msgctxt "@label" -msgid "Inner Wall" -msgstr "Inner Wall" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 -msgctxt "@title:window" -msgid "Convert Image..." -msgstr "Convert Image..." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:33 -msgctxt "@info:tooltip" -msgid "The maximum distance of each pixel from \"Base.\"" -msgstr "The maximum distance of each pixel from \"Base.\"" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:38 -msgctxt "@action:label" -msgid "Height (mm)" -msgstr "Height (mm)" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:56 -msgctxt "@info:tooltip" -msgid "The base height from the build plate in millimeters." -msgstr "The base height from the build plate in millimeters." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:61 -msgctxt "@action:label" -msgid "Base (mm)" -msgstr "Base (mm)" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:79 -msgctxt "@info:tooltip" -msgid "The width in millimeters on the build plate." -msgstr "The width in millimeters on the build plate." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:84 -msgctxt "@action:label" -msgid "Width (mm)" -msgstr "Width (mm)" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:103 -msgctxt "@info:tooltip" -msgid "The depth in millimeters on the build plate" -msgstr "The depth in millimeters on the build plate" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:108 -msgctxt "@action:label" -msgid "Depth (mm)" -msgstr "Depth (mm)" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:126 -msgctxt "@info:tooltip" -msgid "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." -msgstr "By default, white pixels represent high points on the mesh and black pixels represent low points on the mesh. Change this option to reverse the behavior such that black pixels represent high points on the mesh and white pixels represent low points on the mesh." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Lighter is higher" -msgstr "Lighter is higher" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 -msgctxt "@item:inlistbox" -msgid "Darker is higher" -msgstr "Darker is higher" - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 -msgctxt "@info:tooltip" -msgid "The amount of smoothing to apply to the image." -msgstr "The amount of smoothing to apply to the image." - -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:154 -msgctxt "@action:label" -msgid "Smoothing" -msgstr "Smoothing" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:157 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Select settings" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:197 -msgctxt "@title:window" -msgid "Select Settings to Customize for this model" -msgstr "Select Settings to Customize for this model" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:221 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 -msgctxt "@label:textbox" -msgid "Filter..." -msgstr "Filter..." - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:245 -msgctxt "@label:checkbox" -msgid "Show all" -msgstr "Show all" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:13 -msgctxt "@title:window" -msgid "Open Project" -msgstr "Open Project" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:54 -msgctxt "@action:ComboBox option" -msgid "Update existing" -msgstr "Update existing" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:55 -msgctxt "@action:ComboBox option" -msgid "Create new" -msgstr "Create new" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:70 -msgctxt "@action:title" -msgid "Summary - Cura Project" -msgstr "Summary - Cura Project" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:88 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:88 -msgctxt "@action:label" -msgid "Printer settings" -msgstr "Printer settings" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:104 -msgctxt "@info:tooltip" -msgid "How should the conflict in the machine be resolved?" -msgstr "How should the conflict in the machine be resolved?" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:124 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:97 -msgctxt "@action:label" -msgid "Type" -msgstr "Type" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:140 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:197 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:289 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:188 -msgctxt "@action:label" -msgid "Name" -msgstr "Name" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:161 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:164 -msgctxt "@action:label" -msgid "Profile settings" -msgstr "Profile settings" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:177 -msgctxt "@info:tooltip" -msgid "How should the conflict in the profile be resolved?" -msgstr "How should the conflict in the profile be resolved?" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:212 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:172 -msgctxt "@action:label" -msgid "Not in profile" -msgstr "Not in profile" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:217 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:177 -msgctxt "@action:label" -msgid "%1 override" -msgid_plural "%1 overrides" -msgstr[0] "%1 override" -msgstr[1] "%1 overrides" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:228 -msgctxt "@action:label" -msgid "Derivative from" -msgstr "Derivative from" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:233 -msgctxt "@action:label" -msgid "%1, %2 override" -msgid_plural "%1, %2 overrides" -msgstr[0] "%1, %2 override" -msgstr[1] "%1, %2 overrides" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:249 -msgctxt "@action:label" -msgid "Material settings" -msgstr "Material settings" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:265 -msgctxt "@info:tooltip" -msgid "How should the conflict in the material be resolved?" -msgstr "How should the conflict in the material be resolved?" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:207 -msgctxt "@action:label" -msgid "Setting visibility" -msgstr "Setting visibility" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:317 -msgctxt "@action:label" -msgid "Mode" -msgstr "Mode" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:332 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:216 -msgctxt "@action:label" -msgid "Visible settings:" -msgstr "Visible settings:" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:221 -msgctxt "@action:label" -msgid "%1 out of %2" -msgstr "%1 out of %2" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:363 -msgctxt "@action:warning" -msgid "Loading a project will clear all models on the buildplate" -msgstr "Loading a project will clear all models on the buildplate" - -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:381 -msgctxt "@action:button" -msgid "Open" -msgstr "Open" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:11 -msgctxt "@title:window" -msgid "Find & Update plugins" -msgstr "Find & Update plugins" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:25 -msgctxt "@label" -msgid "Here you can find a list of Third Party plugins." -msgstr "Here you can find a list of Third Party plugins." - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:143 -msgctxt "@action:button" -msgid "Upgrade" -msgstr "Upgrade" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 -msgctxt "@action:button" -msgid "Installed" -msgstr "Installed" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 -msgctxt "@action:button" -msgid "Download" -msgstr "Download" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 -msgctxt "@title" -msgid "Select Printer Upgrades" -msgstr "Select Printer Upgrades" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:37 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker 2." -msgstr "Please select any upgrades made to this Ultimaker 2." - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:45 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Block" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 -msgctxt "@title" -msgid "Build Plate Leveling" -msgstr "Build Plate Leveling" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:38 -msgctxt "@label" -msgid "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." -msgstr "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted." - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:47 -msgctxt "@label" -msgid "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." -msgstr "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle." - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 -msgctxt "@action:button" -msgid "Start Build Plate Leveling" -msgstr "Start Build Plate Leveling" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 -msgctxt "@action:button" -msgid "Move to Next Position" -msgstr "Move to Next Position" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:27 -msgctxt "@title" -msgid "Upgrade Firmware" -msgstr "Upgrade Firmware" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:38 -msgctxt "@label" -msgid "Firmware is the piece of software running directly on your 3D printer. This firmware controls the step motors, regulates the temperature and ultimately makes your printer work." -msgstr "Firmware is the piece of software running directly on your 3D printer. This firmware controls the step motors, regulates the temperature and ultimately makes your printer work." - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:48 -msgctxt "@label" -msgid "The firmware shipping with new printers works, but new versions tend to have more features and improvements." -msgstr "The firmware shipping with new printers works, but new versions tend to have more features and improvements." - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:62 -msgctxt "@action:button" -msgid "Automatically upgrade Firmware" -msgstr "Automatically upgrade Firmware" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:72 -msgctxt "@action:button" -msgid "Upload custom Firmware" -msgstr "Upload custom Firmware" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:83 -msgctxt "@title:window" -msgid "Select custom firmware" -msgstr "Select custom firmware" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 -msgctxt "@label" -msgid "Please select any upgrades made to this Ultimaker Original" -msgstr "Please select any upgrades made to this Ultimaker Original" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 -msgctxt "@label" -msgid "Heated Build Plate (official kit or self-built)" -msgstr "Heated Build Plate (official kit or self-built)" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 -msgctxt "@title" -msgid "Check Printer" -msgstr "Check Printer" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39 -msgctxt "@label" -msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" -msgstr "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 -msgctxt "@action:button" -msgid "Start Printer Check" -msgstr "Start Printer Check" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 -msgctxt "@label" -msgid "Connection: " -msgstr "Connection: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Connected" -msgstr "Connected" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 -msgctxt "@info:status" -msgid "Not connected" -msgstr "Not connected" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 -msgctxt "@label" -msgid "Min endstop X: " -msgstr "Min endstop X: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -msgctxt "@info:status" -msgid "Works" -msgstr "Works" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Not checked" -msgstr "Not checked" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 -msgctxt "@label" -msgid "Min endstop Y: " -msgstr "Min endstop Y: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 -msgctxt "@label" -msgid "Min endstop Z: " -msgstr "Min endstop Z: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 -msgctxt "@label" -msgid "Nozzle temperature check: " -msgstr "Nozzle temperature check: " - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Stop Heating" -msgstr "Stop Heating" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248 -msgctxt "@action:button" -msgid "Start Heating" -msgstr "Start Heating" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 -msgctxt "@label" -msgid "Build plate temperature check:" -msgstr "Build plate temperature check:" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 -msgctxt "@info:status" -msgid "Checked" -msgstr "Checked" - -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 -msgctxt "@label" -msgid "Everything is in order! You're done with your CheckUp." -msgstr "Everything is in order! You're done with your CheckUp." - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 -msgctxt "@label:MonitorStatus" -msgid "Not connected to a printer" -msgstr "Not connected to a printer" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:91 -msgctxt "@label:MonitorStatus" -msgid "Printer does not accept commands" -msgstr "Printer does not accept commands" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:97 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 -msgctxt "@label:MonitorStatus" -msgid "In maintenance. Please check the printer" -msgstr "In maintenance. Please check the printer" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 -msgctxt "@label:MonitorStatus" -msgid "Lost connection with the printer" -msgstr "Lost connection with the printer" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:104 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 -msgctxt "@label:MonitorStatus" -msgid "Printing..." -msgstr "Printing..." - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:107 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 -msgctxt "@label:MonitorStatus" -msgid "Paused" -msgstr "Paused" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 -msgctxt "@label:MonitorStatus" -msgid "Preparing..." -msgstr "Preparing..." - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:112 -msgctxt "@label:MonitorStatus" -msgid "Please remove the print" -msgstr "Please remove the print" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:238 -msgctxt "@label:" -msgid "Resume" -msgstr "Resume" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:242 -msgctxt "@label:" -msgid "Pause" -msgstr "Pause" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:271 -msgctxt "@label:" -msgid "Abort Print" -msgstr "Abort Print" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:281 -msgctxt "@window:title" -msgid "Abort print" -msgstr "Abort print" - -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:283 -msgctxt "@label" -msgid "Are you sure you want to abort the print?" -msgstr "Are you sure you want to abort the print?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 -msgctxt "@title:window" -msgid "Discard or Keep changes" -msgstr "Discard or Keep changes" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:57 -msgctxt "@text:window" -msgid "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" -msgstr "" -"You have customized some profile settings.\n" -"Would you like to keep or discard those settings?" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 -msgctxt "@title:column" -msgid "Profile settings" -msgstr "Profile settings" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 -msgctxt "@title:column" -msgid "Default" -msgstr "Default" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 -msgctxt "@title:column" -msgid "Customized" -msgstr "Customized" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 -msgctxt "@option:discardOrKeep" -msgid "Always ask me this" -msgstr "Always ask me this" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:587 -msgctxt "@option:discardOrKeep" -msgid "Discard and never ask again" -msgstr "Discard and never ask again" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:588 -msgctxt "@option:discardOrKeep" -msgid "Keep and never ask again" -msgstr "Keep and never ask again" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 -msgctxt "@action:button" -msgid "Discard" -msgstr "Discard" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 -msgctxt "@action:button" -msgid "Keep" -msgstr "Keep" - -#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 -msgctxt "@action:button" -msgid "Create New Profile" -msgstr "Create New Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:44 -msgctxt "@title" -msgid "Information" -msgstr "Information" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:68 -msgctxt "@label" -msgid "Display Name" -msgstr "Display Name" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:78 -msgctxt "@label" -msgid "Brand" -msgstr "Brand" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 -msgctxt "@label" -msgid "Material Type" -msgstr "Material Type" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 -msgctxt "@label" -msgid "Color" -msgstr "Color" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 -msgctxt "@label" -msgid "Properties" -msgstr "Properties" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 -msgctxt "@label" -msgid "Density" -msgstr "Density" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 -msgctxt "@label" -msgid "Diameter" -msgstr "Diameter" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 -msgctxt "@label" -msgid "Filament Cost" -msgstr "Filament Cost" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 -msgctxt "@label" -msgid "Filament weight" -msgstr "Filament weight" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 -msgctxt "@label" -msgid "Filament length" -msgstr "Filament length" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 -msgctxt "@label" -msgid "Cost per Meter" -msgstr "Cost per Meter" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:241 -msgctxt "@label" -msgid "This material is linked to %1 and shares some of its properties." -msgstr "This material is linked to %1 and shares some of its properties." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:248 -msgctxt "@label" -msgid "Unlink Material" -msgstr "Unlink Material" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 -msgctxt "@label" -msgid "Description" -msgstr "Description" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 -msgctxt "@label" -msgid "Adhesion Information" -msgstr "Adhesion Information" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 -msgctxt "@label" -msgid "Print settings" -msgstr "Print settings" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:14 -msgctxt "@title:tab" -msgid "Setting Visibility" -msgstr "Setting Visibility" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:44 -msgctxt "@label:textbox" -msgid "Check all" -msgstr "Check all" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:40 -msgctxt "@info:status" -msgid "Calculated" -msgstr "Calculated" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:53 -msgctxt "@title:column" -msgid "Setting" -msgstr "Setting" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 -msgctxt "@title:column" -msgid "Profile" -msgstr "Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 -msgctxt "@title:column" -msgid "Current" -msgstr "Current" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 -msgctxt "@title:column" -msgid "Unit" -msgstr "Unit" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:492 -msgctxt "@title:tab" -msgid "General" -msgstr "General" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:128 -msgctxt "@label" -msgid "Interface" -msgstr "Interface" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:139 -msgctxt "@label" -msgid "Language:" -msgstr "Language:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:198 -msgctxt "@label" -msgid "Currency:" -msgstr "Currency:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:212 -msgctxt "@label" -msgid "Theme:" -msgstr "Theme:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:272 -msgctxt "@label" -msgid "You will need to restart the application for these changes to have effect." -msgstr "You will need to restart the application for these changes to have effect." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:289 -msgctxt "@info:tooltip" -msgid "Slice automatically when changing settings." -msgstr "Slice automatically when changing settings." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:297 -msgctxt "@option:check" -msgid "Slice automatically" -msgstr "Slice automatically" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:311 -msgctxt "@label" -msgid "Viewport behavior" -msgstr "Viewport behavior" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:319 -msgctxt "@info:tooltip" -msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." -msgstr "Highlight unsupported areas of the model in red. Without support these areas will not print properly." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 -msgctxt "@option:check" -msgid "Display overhang" -msgstr "Display overhang" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 -msgctxt "@info:tooltip" -msgid "Moves the camera so the model is in the center of the view when a model is selected" -msgstr "Moves the camera so the model is in the center of the view when a model is selected" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:340 -msgctxt "@action:button" -msgid "Center camera when item is selected" -msgstr "Center camera when item is selected" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 -msgctxt "@info:tooltip" -msgid "Should the default zoom behavior of cura be inverted?" -msgstr "Should the default zoom behavior of cura be inverted?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:354 -msgctxt "@action:button" -msgid "Invert the direction of camera zoom." -msgstr "Invert the direction of camera zoom." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 -msgctxt "@info:tooltip" -msgid "Should zooming move in the direction of the mouse?" -msgstr "Should zooming move in the direction of the mouse?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:368 -msgctxt "@action:button" -msgid "Zoom toward mouse direction" -msgstr "Zoom toward mouse direction" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 -msgctxt "@info:tooltip" -msgid "Should models on the platform be moved so that they no longer intersect?" -msgstr "Should models on the platform be moved so that they no longer intersect?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:382 -msgctxt "@option:check" -msgid "Ensure models are kept apart" -msgstr "Ensure models are kept apart" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:390 -msgctxt "@info:tooltip" -msgid "Should models on the platform be moved down to touch the build plate?" -msgstr "Should models on the platform be moved down to touch the build plate?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:395 -msgctxt "@option:check" -msgid "Automatically drop models to the build plate" -msgstr "Automatically drop models to the build plate" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 -msgctxt "@info:tooltip" -msgid "Show caution message in gcode reader." -msgstr "Show caution message in gcode reader." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 -msgctxt "@option:check" -msgid "Caution message in gcode reader" -msgstr "Caution message in gcode reader" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 -msgctxt "@info:tooltip" -msgid "Should layer be forced into compatibility mode?" -msgstr "Should layer be forced into compatibility mode?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 -msgctxt "@option:check" -msgid "Force layer view compatibility mode (restart required)" -msgstr "Force layer view compatibility mode (restart required)" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:444 -msgctxt "@label" -msgid "Opening and saving files" -msgstr "Opening and saving files" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 -msgctxt "@info:tooltip" -msgid "Should models be scaled to the build volume if they are too large?" -msgstr "Should models be scaled to the build volume if they are too large?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 -msgctxt "@option:check" -msgid "Scale large models" -msgstr "Scale large models" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 -msgctxt "@info:tooltip" -msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" -msgstr "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:469 -msgctxt "@option:check" -msgid "Scale extremely small models" -msgstr "Scale extremely small models" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 -msgctxt "@info:tooltip" -msgid "Should a prefix based on the printer name be added to the print job name automatically?" -msgstr "Should a prefix based on the printer name be added to the print job name automatically?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 -msgctxt "@option:check" -msgid "Add machine prefix to job name" -msgstr "Add machine prefix to job name" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 -msgctxt "@info:tooltip" -msgid "Should a summary be shown when saving a project file?" -msgstr "Should a summary be shown when saving a project file?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:496 -msgctxt "@option:check" -msgid "Show summary dialog when saving project" -msgstr "Show summary dialog when saving project" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 -msgctxt "@info:tooltip" -msgid "Default behavior when opening a project file" -msgstr "Default behavior when opening a project file" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:513 -msgctxt "@window:text" -msgid "Default behavior when opening a project file: " -msgstr "Default behavior when opening a project file: " - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:526 -msgctxt "@option:openProject" -msgid "Always ask" -msgstr "Always ask" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 -msgctxt "@option:openProject" -msgid "Always open as a project" -msgstr "Always open as a project" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:528 -msgctxt "@option:openProject" -msgid "Always import models" -msgstr "Always import models" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:564 -msgctxt "@info:tooltip" -msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." -msgstr "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 -msgctxt "@label" -msgid "Override Profile" -msgstr "Override Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:622 -msgctxt "@label" -msgid "Privacy" -msgstr "Privacy" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 -msgctxt "@info:tooltip" -msgid "Should Cura check for updates when the program is started?" -msgstr "Should Cura check for updates when the program is started?" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:634 -msgctxt "@option:check" -msgid "Check for updates on start" -msgstr "Check for updates on start" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:644 -msgctxt "@info:tooltip" -msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." -msgstr "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:649 -msgctxt "@option:check" -msgid "Send (anonymous) print information" -msgstr "Send (anonymous) print information" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:497 -msgctxt "@title:tab" -msgid "Printers" -msgstr "Printers" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:37 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:51 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:137 -msgctxt "@action:button" -msgid "Activate" -msgstr "Activate" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:57 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 -msgctxt "@action:button" -msgid "Rename" -msgstr "Rename" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:151 -msgctxt "@label" -msgid "Printer type:" -msgstr "Printer type:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:160 -msgctxt "@label" -msgid "Connection:" -msgstr "Connection:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:166 -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 -msgctxt "@info:status" -msgid "The printer is not connected." -msgstr "The printer is not connected." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:172 -msgctxt "@label" -msgid "State:" -msgstr "State:" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:192 -msgctxt "@label:MonitorStatus" -msgid "Waiting for someone to clear the build plate" -msgstr "Waiting for someone to clear the build plate" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:201 -msgctxt "@label:MonitorStatus" -msgid "Waiting for a printjob" -msgstr "Waiting for a printjob" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:501 -msgctxt "@title:tab" -msgid "Profiles" -msgstr "Profiles" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:29 -msgctxt "@label" -msgid "Protected profiles" -msgstr "Protected profiles" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:29 -msgctxt "@label" -msgid "Custom profiles" -msgstr "Custom profiles" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:64 -msgctxt "@label" -msgid "Create" -msgstr "Create" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:80 -msgctxt "@label" -msgid "Duplicate" -msgstr "Duplicate" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:113 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:201 -msgctxt "@action:button" -msgid "Import" -msgstr "Import" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:119 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:212 -msgctxt "@action:button" -msgid "Export" -msgstr "Export" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:126 -msgctxt "@label %1 is printer name" -msgid "Printer: %1" -msgstr "Printer: %1" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:165 -msgctxt "@action:button" -msgid "Update profile with current settings/overrides" -msgstr "Update profile with current settings/overrides" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:173 -msgctxt "@action:button" -msgid "Discard current changes" -msgstr "Discard current changes" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:190 -msgctxt "@action:label" -msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." -msgstr "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:197 -msgctxt "@action:label" -msgid "Your current settings match the selected profile." -msgstr "Your current settings match the selected profile." - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:215 -msgctxt "@title:tab" -msgid "Global Settings" -msgstr "Global Settings" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:258 -msgctxt "@title:window" -msgid "Rename Profile" -msgstr "Rename Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:271 -msgctxt "@title:window" -msgid "Create Profile" -msgstr "Create Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:285 -msgctxt "@title:window" -msgid "Duplicate Profile" -msgstr "Duplicate Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:299 -msgctxt "@window:title" -msgid "Import Profile" -msgstr "Import Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:307 -msgctxt "@title:window" -msgid "Import Profile" -msgstr "Import Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:335 -msgctxt "@title:window" -msgid "Export Profile" -msgstr "Export Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 -msgctxt "@title:tab" -msgid "Materials" -msgstr "Materials" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:116 -msgctxt "@action:label %1 is printer name, %2 is how this printer names variants, %3 is variant name" -msgid "Printer: %1, %2: %3" -msgstr "Printer: %1, %2: %3" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:120 -msgctxt "@action:label %1 is printer name" -msgid "Printer: %1" -msgstr "Printer: %1" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 -msgctxt "@action:button" -msgid "Create" -msgstr "Create" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 -msgctxt "@action:button" -msgid "Duplicate" -msgstr "Duplicate" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:311 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:319 -msgctxt "@title:window" -msgid "Import Material" -msgstr "Import Material" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 -msgctxt "@info:status" -msgid "Could not import material %1: %2" -msgstr "Could not import material %1: %2" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 -msgctxt "@info:status" -msgid "Successfully imported material %1" -msgstr "Successfully imported material %1" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 -msgctxt "@title:window" -msgid "Export Material" -msgstr "Export Material" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 -msgctxt "@info:status" -msgid "Failed to export material to %1: %2" -msgstr "Failed to export material to %1: %2" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 -msgctxt "@info:status" -msgid "Successfully exported material to %1" -msgstr "Successfully exported material to %1" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:822 -msgctxt "@title:window" -msgid "Add Printer" -msgstr "Add Printer" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 -msgctxt "@label" -msgid "Printer Name:" -msgstr "Printer Name:" - -#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 -msgctxt "@action:button" -msgid "Add Printer" -msgstr "Add Printer" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:166 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Outer Wall" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:167 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Inner Walls" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:168 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Skin" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:169 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Infill" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:170 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Support Infill" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:171 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Support Interface" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:172 -msgctxt "@tooltip" -msgid "Support" -msgstr "Support" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:173 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Travel" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:174 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Retractions" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:175 -msgctxt "@tooltip" -msgid "Other" -msgstr "Other" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:217 -msgctxt "@label" -msgid "00h 00min" -msgstr "00h 00min" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:270 -msgctxt "@label" -msgid "%1 m / ~ %2 g / ~ %4 %3" -msgstr "%1 m / ~ %2 g / ~ %4 %3" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:275 -msgctxt "@label" -msgid "%1 m / ~ %2 g" -msgstr "%1 m / ~ %2 g" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 -msgctxt "@title:window" -msgid "About Cura" -msgstr "About Cura" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 -msgctxt "@label" -msgid "End-to-end solution for fused filament 3D printing." -msgstr "End-to-end solution for fused filament 3D printing." - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:69 -msgctxt "@info:credit" -msgid "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" -msgstr "" -"Cura is developed by Ultimaker B.V. in cooperation with the community.\n" -"Cura proudly uses the following open source projects:" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 -msgctxt "@label" -msgid "Graphical user interface" -msgstr "Graphical user interface" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:119 -msgctxt "@label" -msgid "Application framework" -msgstr "Application framework" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:120 -msgctxt "@label" -msgid "GCode generator" -msgstr "GCode generator" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:121 -msgctxt "@label" -msgid "Interprocess communication library" -msgstr "Interprocess communication library" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:123 -msgctxt "@label" -msgid "Programming language" -msgstr "Programming language" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:124 -msgctxt "@label" -msgid "GUI framework" -msgstr "GUI framework" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:125 -msgctxt "@label" -msgid "GUI framework bindings" -msgstr "GUI framework bindings" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:126 -msgctxt "@label" -msgid "C/C++ Binding library" -msgstr "C/C++ Binding library" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:127 -msgctxt "@label" -msgid "Data interchange format" -msgstr "Data interchange format" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:128 -msgctxt "@label" -msgid "Support library for scientific computing" -msgstr "Support library for scientific computing" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:129 -msgctxt "@label" -msgid "Support library for faster math" -msgstr "Support library for faster math" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:130 -msgctxt "@label" -msgid "Support library for handling STL files" -msgstr "Support library for handling STL files" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:131 -msgctxt "@label" -msgid "Support library for handling 3MF files" -msgstr "Support library for handling 3MF files" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 -msgctxt "@label" -msgid "Serial communication library" -msgstr "Serial communication library" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 -msgctxt "@label" -msgid "ZeroConf discovery library" -msgstr "ZeroConf discovery library" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 -msgctxt "@label" -msgid "Polygon clipping library" -msgstr "Polygon clipping library" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:136 -msgctxt "@label" -msgid "Font" -msgstr "Font" - -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 -msgctxt "@label" -msgid "SVG icons" -msgstr "SVG icons" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:60 -msgctxt "@label:textbox" -msgid "Search..." -msgstr "Search..." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:390 -msgctxt "@action:menu" -msgid "Copy value to all extruders" -msgstr "Copy value to all extruders" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:405 -msgctxt "@action:menu" -msgid "Hide this setting" -msgstr "Hide this setting" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:415 -msgctxt "@action:menu" -msgid "Don't show this setting" -msgstr "Don't show this setting" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:419 -msgctxt "@action:menu" -msgid "Keep this setting visible" -msgstr "Keep this setting visible" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:438 -msgctxt "@action:menu" -msgid "Configure setting visiblity..." -msgstr "Configure setting visiblity..." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingCategory.qml:123 -msgctxt "@label" -msgid "" -"Some hidden settings use values different from their normal calculated value.\n" -"\n" -"Click to make these settings visible." -msgstr "" -"Some hidden settings use values different from their normal calculated value.\n" -"\n" -"Click to make these settings visible." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 -msgctxt "@label Header for list of settings." -msgid "Affects" -msgstr "Affects" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 -msgctxt "@label Header for list of settings." -msgid "Affected By" -msgstr "Affected By" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:157 -msgctxt "@label" -msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders" -msgstr "This setting is always shared between all extruders. Changing it here will change the value for all extruders" - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:160 -msgctxt "@label" -msgid "The value is resolved from per-extruder values " -msgstr "The value is resolved from per-extruder values " - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:186 -msgctxt "@label" -msgid "" -"This setting has a value that is different from the profile.\n" -"\n" -"Click to restore the value of the profile." -msgstr "" -"This setting has a value that is different from the profile.\n" -"\n" -"Click to restore the value of the profile." - -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 -msgctxt "@label" -msgid "" -"This setting is normally calculated, but it currently has an absolute value set.\n" -"\n" -"Click to restore the calculated value." -msgstr "" -"This setting is normally calculated, but it currently has an absolute value set.\n" -"\n" -"Click to restore the calculated value." - -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 -msgctxt "@label:listbox" -msgid "Print Setup" -msgstr "Print Setup" - -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 -msgctxt "@label:listbox" -msgid "" -"Print Setup disabled\n" -"G-code files cannot be modified" -msgstr "" -"Print Setup disabled\n" -"G-code files cannot be modified" - -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 -msgctxt "@tooltip" -msgid "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." -msgstr "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." - -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:460 -msgctxt "@tooltip" -msgid "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." -msgstr "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." - -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:35 -msgctxt "@title:menuitem %1 is the automatically selected material" -msgid "Automatic: %1" -msgstr "Automatic: %1" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 -msgctxt "@title:menu menubar:toplevel" -msgid "&View" -msgstr "&View" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:26 -msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" -msgid "Automatic: %1" -msgstr "Automatic: %1" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:25 -msgctxt "@label" -msgid "Print Selected Model With:" -msgid_plural "Print Selected Models With:" -msgstr[0] "Print Selected Model With:" -msgstr[1] "Print Selected Models With:" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 -msgctxt "@title:window" -msgid "Multiply Selected Model" -msgid_plural "Multiply Selected Models" -msgstr[0] "Multiply Selected Model" -msgstr[1] "Multiply Selected Models" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:108 -msgctxt "@label" -msgid "Number of Copies" -msgstr "Number of Copies" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 -msgctxt "@title:menu menubar:file" -msgid "Open &Recent" -msgstr "Open &Recent" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:33 -msgctxt "@info:status" -msgid "No printer connected" -msgstr "No printer connected" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -msgctxt "@label" -msgid "Hotend" -msgstr "Hotend" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:119 -msgctxt "@tooltip" -msgid "The current temperature of this extruder." -msgstr "The current temperature of this extruder." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:154 -msgctxt "@tooltip" -msgid "The colour of the material in this extruder." -msgstr "The colour of the material in this extruder." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:186 -msgctxt "@tooltip" -msgid "The material in this extruder." -msgstr "The material in this extruder." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:218 -msgctxt "@tooltip" -msgid "The nozzle inserted in this extruder." -msgstr "The nozzle inserted in this extruder." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:249 -msgctxt "@label" -msgid "Build plate" -msgstr "Build plate" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:278 -msgctxt "@tooltip" -msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." -msgstr "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:310 -msgctxt "@tooltip" -msgid "The current temperature of the heated bed." -msgstr "The current temperature of the heated bed." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:389 -msgctxt "@tooltip of temperature input" -msgid "The temperature to pre-heat the bed to." -msgstr "The temperature to pre-heat the bed to." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 -msgctxt "@button Cancel pre-heating" -msgid "Cancel" -msgstr "Cancel" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 -msgctxt "@button" -msgid "Pre-heat" -msgstr "Pre-heat" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:610 -msgctxt "@tooltip of pre-heat" -msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." -msgstr "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:643 -msgctxt "@label" -msgid "Active print" -msgstr "Active print" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:648 -msgctxt "@label" -msgid "Job Name" -msgstr "Job Name" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:654 -msgctxt "@label" -msgid "Printing Time" -msgstr "Printing Time" - -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:660 -msgctxt "@label" -msgid "Estimated time left" -msgstr "Estimated time left" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:67 -msgctxt "@action:inmenu" -msgid "Toggle Fu&ll Screen" -msgstr "Toggle Fu&ll Screen" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:74 -msgctxt "@action:inmenu menubar:edit" -msgid "&Undo" -msgstr "&Undo" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:84 -msgctxt "@action:inmenu menubar:edit" -msgid "&Redo" -msgstr "&Redo" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:94 -msgctxt "@action:inmenu menubar:file" -msgid "&Quit" -msgstr "&Quit" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:102 -msgctxt "@action:inmenu" -msgid "Configure Cura..." -msgstr "Configure Cura..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:109 -msgctxt "@action:inmenu menubar:printer" -msgid "&Add Printer..." -msgstr "&Add Printer..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:115 -msgctxt "@action:inmenu menubar:printer" -msgid "Manage Pr&inters..." -msgstr "Manage Pr&inters..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:122 -msgctxt "@action:inmenu" -msgid "Manage Materials..." -msgstr "Manage Materials..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:130 -msgctxt "@action:inmenu menubar:profile" -msgid "&Update profile with current settings/overrides" -msgstr "&Update profile with current settings/overrides" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 -msgctxt "@action:inmenu menubar:profile" -msgid "&Discard current changes" -msgstr "&Discard current changes" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 -msgctxt "@action:inmenu menubar:profile" -msgid "&Create profile from current settings/overrides..." -msgstr "&Create profile from current settings/overrides..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 -msgctxt "@action:inmenu menubar:profile" -msgid "Manage Profiles..." -msgstr "Manage Profiles..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:163 -msgctxt "@action:inmenu menubar:help" -msgid "Show Online &Documentation" -msgstr "Show Online &Documentation" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:171 -msgctxt "@action:inmenu menubar:help" -msgid "Report a &Bug" -msgstr "Report a &Bug" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 -msgctxt "@action:inmenu menubar:help" -msgid "&About..." -msgstr "&About..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 -msgctxt "@action:inmenu menubar:edit" -msgid "Delete &Selected Model" -msgid_plural "Delete &Selected Models" -msgstr[0] "Delete &Selected Model" -msgstr[1] "Delete &Selected Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:196 -msgctxt "@action:inmenu menubar:edit" -msgid "Center Selected Model" -msgid_plural "Center Selected Models" -msgstr[0] "Center Selected Model" -msgstr[1] "Center Selected Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:205 -msgctxt "@action:inmenu menubar:edit" -msgid "Multiply Selected Model" -msgid_plural "Multiply Selected Models" -msgstr[0] "Multiply Selected Model" -msgstr[1] "Multiply Selected Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:214 -msgctxt "@action:inmenu" -msgid "Delete Model" -msgstr "Delete Model" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:222 -msgctxt "@action:inmenu" -msgid "Ce&nter Model on Platform" -msgstr "Ce&nter Model on Platform" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:228 -msgctxt "@action:inmenu menubar:edit" -msgid "&Group Models" -msgstr "&Group Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:238 -msgctxt "@action:inmenu menubar:edit" -msgid "Ungroup Models" -msgstr "Ungroup Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:248 -msgctxt "@action:inmenu menubar:edit" -msgid "&Merge Models" -msgstr "&Merge Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 -msgctxt "@action:inmenu" -msgid "&Multiply Model..." -msgstr "&Multiply Model..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:265 -msgctxt "@action:inmenu menubar:edit" -msgid "&Select All Models" -msgstr "&Select All Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 -msgctxt "@action:inmenu menubar:edit" -msgid "&Clear Build Plate" -msgstr "&Clear Build Plate" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 -msgctxt "@action:inmenu menubar:file" -msgid "Re&load All Models" -msgstr "Re&load All Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 -msgctxt "@action:inmenu menubar:edit" -msgid "Arrange All Models" -msgstr "Arrange All Models" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:302 -msgctxt "@action:inmenu menubar:edit" -msgid "Arrange Selection" -msgstr "Arrange Selection" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:309 -msgctxt "@action:inmenu menubar:edit" -msgid "Reset All Model Positions" -msgstr "Reset All Model Positions" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:316 -msgctxt "@action:inmenu menubar:edit" -msgid "Reset All Model &Transformations" -msgstr "Reset All Model &Transformations" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:323 -msgctxt "@action:inmenu menubar:file" -msgid "&Open File(s)..." -msgstr "&Open File(s)..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:331 -msgctxt "@action:inmenu menubar:file" -msgid "&New Project..." -msgstr "&New Project..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 -msgctxt "@action:inmenu menubar:help" -msgid "Show Engine &Log..." -msgstr "Show Engine &Log..." - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:346 -msgctxt "@action:inmenu menubar:help" -msgid "Show Configuration Folder" -msgstr "Show Configuration Folder" - -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:353 -msgctxt "@action:menu" -msgid "Configure setting visibility..." -msgstr "Configure setting visibility..." - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 -msgctxt "@label:PrintjobStatus" -msgid "Please load a 3D model" -msgstr "Please load a 3D model" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:33 -msgctxt "@label:PrintjobStatus" -msgid "Ready to slice" -msgstr "Ready to slice" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:35 -msgctxt "@label:PrintjobStatus" -msgid "Slicing..." -msgstr "Slicing..." - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 -msgctxt "@label:PrintjobStatus %1 is target operation" -msgid "Ready to %1" -msgstr "Ready to %1" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 -msgctxt "@label:PrintjobStatus" -msgid "Unable to Slice" -msgstr "Unable to Slice" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 -msgctxt "@label:PrintjobStatus" -msgid "Slicing unavailable" -msgstr "Slicing unavailable" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 -msgctxt "@label:Printjob" -msgid "Prepare" -msgstr "Prepare" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 -msgctxt "@label:Printjob" -msgid "Cancel" -msgstr "Cancel" - -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:288 -msgctxt "@info:tooltip" -msgid "Select the active output device" -msgstr "Select the active output device" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:649 -msgctxt "@title:window" -msgid "Open file(s)" -msgstr "Open file(s)" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:64 -msgctxt "@text:window" -msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" - -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 -msgctxt "@action:button" -msgid "Import all as models" -msgstr "Import all as models" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 -msgctxt "@title:window" -msgid "Cura" -msgstr "Cura" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:85 -msgctxt "@title:menu menubar:toplevel" -msgid "&File" -msgstr "&File" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 -msgctxt "@action:inmenu menubar:file" -msgid "&Save Selection to File" -msgstr "&Save Selection to File" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:111 -msgctxt "@title:menu menubar:file" -msgid "Save &As..." -msgstr "Save &As..." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:122 -msgctxt "@title:menu menubar:file" -msgid "Save project" -msgstr "Save project" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:145 -msgctxt "@title:menu menubar:toplevel" -msgid "&Edit" -msgstr "&Edit" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 -msgctxt "@title:menu" -msgid "&View" -msgstr "&View" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:167 -msgctxt "@title:menu" -msgid "&Settings" -msgstr "&Settings" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:169 -msgctxt "@title:menu menubar:toplevel" -msgid "&Printer" -msgstr "&Printer" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 -msgctxt "@title:menu" -msgid "&Material" -msgstr "&Material" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:192 -msgctxt "@title:menu" -msgid "&Profile" -msgstr "&Profile" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 -msgctxt "@action:inmenu" -msgid "Set as Active Extruder" -msgstr "Set as Active Extruder" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:202 -msgctxt "@title:menu menubar:toplevel" -msgid "E&xtensions" -msgstr "E&xtensions" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:235 -msgctxt "@title:menu menubar:toplevel" -msgid "P&references" -msgstr "P&references" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:243 -msgctxt "@title:menu menubar:toplevel" -msgid "&Help" -msgstr "&Help" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:343 -msgctxt "@action:button" -msgid "Open File" -msgstr "Open File" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:428 -msgctxt "@action:button" -msgid "View Mode" -msgstr "View Mode" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:495 -msgctxt "@title:tab" -msgid "Settings" -msgstr "Settings" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 -msgctxt "@title:window" -msgid "New project" -msgstr "New project" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:532 -msgctxt "@info:question" -msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." -msgstr "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:750 -msgctxt "@window:title" -msgid "Install Plugin" -msgstr "Install Plugin" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:757 -msgctxt "@title:window" -msgid "Open File(s)" -msgstr "Open File(s)" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:760 -msgctxt "@text:window" -msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." -msgstr "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 -msgctxt "@title:window" -msgid "Save Project" -msgstr "Save Project" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:134 -msgctxt "@action:label" -msgid "Extruder %1" -msgstr "Extruder %1" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:144 -msgctxt "@action:label" -msgid "%1 & material" -msgstr "%1 & material" - -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:240 -msgctxt "@action:label" -msgid "Don't show project summary on save again" -msgstr "Don't show project summary on save again" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:47 -msgctxt "@title:tab" -msgid "Prepare" -msgstr "Prepare" - -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:60 -msgctxt "@title:tab" -msgid "Print" -msgstr "Print" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:41 -msgctxt "@label" -msgid "Infill" -msgstr "Infill" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "0%" -msgstr "0%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:199 -msgctxt "@label" -msgid "Empty infill will leave your model hollow with low strength." -msgstr "Empty infill will leave your model hollow with low strength." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:203 -msgctxt "@label" -msgid "20%" -msgstr "20%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:210 -msgctxt "@label" -msgid "Light (20%) infill will give your model an average strength." -msgstr "Light (20%) infill will give your model an average strength." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:214 -msgctxt "@label" -msgid "50%" -msgstr "50%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:221 -msgctxt "@label" -msgid "Dense (50%) infill will give your model an above average strength." -msgstr "Dense (50%) infill will give your model an above average strength." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:225 -msgctxt "@label" -msgid "100%" -msgstr "100%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:232 -msgctxt "@label" -msgid "Solid (100%) infill will make your model completely solid." -msgstr "Solid (100%) infill will make your model completely solid." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:236 -msgctxt "@label" -msgid "Gradual" -msgstr "Gradual" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:244 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "Gradual infill will gradually increase the amount of infill towards the top." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:267 -msgctxt "@label" -msgid "Generate Support" -msgstr "Generate Support" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:300 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:317 -msgctxt "@label" -msgid "Support Extruder" -msgstr "Support Extruder" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:391 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -msgstr "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 -msgctxt "@label" -msgid "Build Plate Adhesion" -msgstr "Build Plate Adhesion" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:462 -msgctxt "@label" -msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -msgstr "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:515 -msgctxt "@label" -msgid "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides" -msgstr "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides" - -#: /home/ruben/Projects/Cura/resources/qml/ExtruderButton.qml:16 -msgctxt "@label %1 is filled in with the name of an extruder" -msgid "Print Selected Model with %1" -msgid_plural "Print Selected Models with %1" -msgstr[0] "Print Selected Model with %1" -msgstr[1] "Print Selected Models with %1" - -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 -msgctxt "@title:window" -msgid "Open project file" -msgstr "Open project file" - -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:71 -msgctxt "@text:window" -msgid "This is a Cura project file. Would you like to open it as a project or import the models from it?" -msgstr "This is a Cura project file. Would you like to open it as a project or import the models from it?" - -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:95 -msgctxt "@action:button" -msgid "Open as project" -msgstr "Open as project" - -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:114 -msgctxt "@action:button" -msgid "Import models" -msgstr "Import models" - -#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 -msgctxt "@title:window" -msgid "Engine Log" -msgstr "Engine Log" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:193 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:201 -msgctxt "@label" -msgid "Material" -msgstr "Material" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:236 -msgctxt "@tooltip" -msgid "Click to check the material compatibility on Ultimaker.com." -msgstr "Click to check the material compatibility on Ultimaker.com." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:325 -msgctxt "@label" -msgid "Profile:" -msgstr "Profile:" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." - -#: MachineSettingsAction/plugin.json -msgctxt "description" -msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" -msgstr "Provides a way to change machine settings (such as build volume, nozzle size, etc)" - -#: MachineSettingsAction/plugin.json -msgctxt "name" -msgid "Machine Settings action" -msgstr "Machine Settings action" - -#: XRayView/plugin.json -msgctxt "description" -msgid "Provides the X-Ray view." -msgstr "Provides the X-Ray view." - -#: XRayView/plugin.json -msgctxt "name" -msgid "X-Ray View" -msgstr "X-Ray View" - -#: X3DReader/plugin.json -msgctxt "description" -msgid "Provides support for reading X3D files." -msgstr "Provides support for reading X3D files." - -#: X3DReader/plugin.json -msgctxt "name" -msgid "X3D Reader" -msgstr "X3D Reader" - -#: GCodeWriter/plugin.json -msgctxt "description" -msgid "Writes GCode to a file." -msgstr "Writes GCode to a file." - -#: GCodeWriter/plugin.json -msgctxt "name" -msgid "GCode Writer" -msgstr "GCode Writer" - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Dump the contents of all settings to a HTML file." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "God Mode" - -#: ChangeLogPlugin/plugin.json -msgctxt "description" -msgid "Shows changes since latest checked version." -msgstr "Shows changes since latest checked version." - -#: ChangeLogPlugin/plugin.json -msgctxt "name" -msgid "Changelog" -msgstr "Changelog" - -#: ProfileFlattener/plugin.json -msgctxt "description" -msgid "Create a flattend quality changes profile." -msgstr "Create a flattend quality changes profile." - -#: ProfileFlattener/plugin.json -msgctxt "name" -msgid "Profile flatener" -msgstr "Profile flatener" - -#: USBPrinting/plugin.json -msgctxt "description" -msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." -msgstr "Accepts G-Code and sends them to a printer. Plugin can also update firmware." - -#: USBPrinting/plugin.json -msgctxt "name" -msgid "USB printing" -msgstr "USB printing" - -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing X3G files" -msgstr "Provides support for writing X3G files" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3G Writer" -msgstr "X3G Writer" - -#: RemovableDriveOutputDevice/plugin.json -msgctxt "description" -msgid "Provides removable drive hotplugging and writing support." -msgstr "Provides removable drive hotplugging and writing support." - -#: RemovableDriveOutputDevice/plugin.json -msgctxt "name" -msgid "Removable Drive Output Device Plugin" -msgstr "Removable Drive Output Device Plugin" - -#: UM3NetworkPrinting/plugin.json -msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers" -msgstr "Manages network connections to Ultimaker 3 printers" - -#: UM3NetworkPrinting/plugin.json -msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3 Network Connection" - -#: CuraSolidWorksPlugin/plugin.json -msgctxt "description" -msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" -msgstr "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" - -#: CuraSolidWorksPlugin/plugin.json -msgctxt "name" -msgid "SolidWorks Integration" -msgstr "SolidWorks Integration" - -#: PostProcessingPlugin/plugin.json -msgctxt "description" -msgid "Extension that allows for user created scripts for post processing" -msgstr "Extension that allows for user created scripts for post processing" - -#: PostProcessingPlugin/plugin.json -msgctxt "name" -msgid "Post Processing" -msgstr "Post Processing" - -#: AutoSave/plugin.json -msgctxt "description" -msgid "Automatically saves Preferences, Machines and Profiles after changes." -msgstr "Automatically saves Preferences, Machines and Profiles after changes." - -#: AutoSave/plugin.json -msgctxt "name" -msgid "Auto Save" -msgstr "Auto Save" - -#: SliceInfoPlugin/plugin.json -msgctxt "description" -msgid "Submits anonymous slice info. Can be disabled through preferences." -msgstr "Submits anonymous slice info. Can be disabled through preferences." - -#: SliceInfoPlugin/plugin.json -msgctxt "name" -msgid "Slice info" -msgstr "Slice info" - -#: XmlMaterialProfile/plugin.json -msgctxt "description" -msgid "Provides capabilities to read and write XML-based material profiles." -msgstr "Provides capabilities to read and write XML-based material profiles." - -#: XmlMaterialProfile/plugin.json -msgctxt "name" -msgid "Material Profiles" -msgstr "Material Profiles" - -#: LegacyProfileReader/plugin.json -msgctxt "description" -msgid "Provides support for importing profiles from legacy Cura versions." -msgstr "Provides support for importing profiles from legacy Cura versions." - -#: LegacyProfileReader/plugin.json -msgctxt "name" -msgid "Legacy Cura Profile Reader" -msgstr "Legacy Cura Profile Reader" - -#: GCodeProfileReader/plugin.json -msgctxt "description" -msgid "Provides support for importing profiles from g-code files." -msgstr "Provides support for importing profiles from g-code files." - -#: GCodeProfileReader/plugin.json -msgctxt "name" -msgid "GCode Profile Reader" -msgstr "GCode Profile Reader" - -#: LayerView/plugin.json -msgctxt "description" -msgid "Provides the Layer view." -msgstr "Provides the Layer view." - -#: LayerView/plugin.json -msgctxt "name" -msgid "Layer View" -msgstr "Layer View" - -#: VersionUpgrade/VersionUpgrade25to26/plugin.json -msgctxt "description" -msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." -msgstr "Upgrades configurations from Cura 2.5 to Cura 2.6." - -#: VersionUpgrade/VersionUpgrade25to26/plugin.json -msgctxt "name" -msgid "Version Upgrade 2.5 to 2.6" -msgstr "Version Upgrade 2.5 to 2.6" - -#: VersionUpgrade/VersionUpgrade26to27/plugin.json -msgctxt "description" -msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." -msgstr "Upgrades configurations from Cura 2.6 to Cura 2.7." - -#: VersionUpgrade/VersionUpgrade26to27/plugin.json -msgctxt "name" -msgid "Version Upgrade 2.6 to 2.7" -msgstr "Version Upgrade 2.6 to 2.7" - -#: VersionUpgrade/VersionUpgrade21to22/plugin.json -msgctxt "description" -msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." -msgstr "Upgrades configurations from Cura 2.1 to Cura 2.2." - -#: VersionUpgrade/VersionUpgrade21to22/plugin.json -msgctxt "name" -msgid "Version Upgrade 2.1 to 2.2" -msgstr "Version Upgrade 2.1 to 2.2" - -#: VersionUpgrade/VersionUpgrade22to24/plugin.json -msgctxt "description" -msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." -msgstr "Upgrades configurations from Cura 2.2 to Cura 2.4." - -#: VersionUpgrade/VersionUpgrade22to24/plugin.json -msgctxt "name" -msgid "Version Upgrade 2.2 to 2.4" -msgstr "Version Upgrade 2.2 to 2.4" - -#: ImageReader/plugin.json -msgctxt "description" -msgid "Enables ability to generate printable geometry from 2D image files." -msgstr "Enables ability to generate printable geometry from 2D image files." - -#: ImageReader/plugin.json -msgctxt "name" -msgid "Image Reader" -msgstr "Image Reader" - -#: CuraEngineBackend/plugin.json -msgctxt "description" -msgid "Provides the link to the CuraEngine slicing backend." -msgstr "Provides the link to the CuraEngine slicing backend." - -#: CuraEngineBackend/plugin.json -msgctxt "name" -msgid "CuraEngine Backend" -msgstr "CuraEngine Backend" - -#: PerObjectSettingsTool/plugin.json -msgctxt "description" -msgid "Provides the Per Model Settings." -msgstr "Provides the Per Model Settings." - -#: PerObjectSettingsTool/plugin.json -msgctxt "name" -msgid "Per Model Settings Tool" -msgstr "Per Model Settings Tool" - -#: 3MFReader/plugin.json -msgctxt "description" -msgid "Provides support for reading 3MF files." -msgstr "Provides support for reading 3MF files." - -#: 3MFReader/plugin.json -msgctxt "name" -msgid "3MF Reader" -msgstr "3MF Reader" - -#: PluginBrowser/plugin.json -msgctxt "description" -msgid "Find, manage and install new plugins." -msgstr "Find, manage and install new plugins." - -#: PluginBrowser/plugin.json -msgctxt "name" -msgid "Plugin Browser" -msgstr "Plugin Browser" - -#: SolidView/plugin.json -msgctxt "description" -msgid "Provides a normal solid mesh view." -msgstr "Provides a normal solid mesh view." - -#: SolidView/plugin.json -msgctxt "name" -msgid "Solid View" -msgstr "Solid View" - -#: GCodeReader/plugin.json -msgctxt "description" -msgid "Allows loading and displaying G-code files." -msgstr "Allows loading and displaying G-code files." - -#: GCodeReader/plugin.json -msgctxt "name" -msgid "G-code Reader" -msgstr "G-code Reader" - -#: CuraProfileWriter/plugin.json -msgctxt "description" -msgid "Provides support for exporting Cura profiles." -msgstr "Provides support for exporting Cura profiles." - -#: CuraProfileWriter/plugin.json -msgctxt "name" -msgid "Cura Profile Writer" -msgstr "Cura Profile Writer" - -#: 3MFWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing 3MF files." -msgstr "Provides support for writing 3MF files." - -#: 3MFWriter/plugin.json -msgctxt "name" -msgid "3MF Writer" -msgstr "3MF Writer" - -#: UltimakerMachineActions/plugin.json -msgctxt "description" -msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" -msgstr "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" - -#: UltimakerMachineActions/plugin.json -msgctxt "name" -msgid "Ultimaker machine actions" -msgstr "Ultimaker machine actions" - -#: CuraProfileReader/plugin.json -msgctxt "description" -msgid "Provides support for importing Cura profiles." -msgstr "Provides support for importing Cura profiles." - -#: CuraProfileReader/plugin.json -msgctxt "name" -msgid "Cura Profile Reader" -msgstr "Cura Profile Reader" From 48778a28014672d26a96532208d144639897fd16 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sun, 10 Sep 2017 01:35:59 +0200 Subject: [PATCH 058/589] Update language codes The folders were renamed, so they should get renamed here as well. Contributes to issue CURA-4263. --- resources/qml/Preferences/GeneralPage.qml | 26 +++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 38ad26b3c6..132fd6890d 100755 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Ultimaker B.V. +// Copyright (c) 2017 Ultimaker B.V. // Cura is released under the terms of the AGPLv3 or higher. import QtQuick 2.1 @@ -148,19 +148,19 @@ UM.PreferencesPage id: languageList Component.onCompleted: { - append({ text: "English", code: "en" }) - append({ text: "Deutsch", code: "de" }) - append({ text: "Español", code: "es" }) - append({ text: "Suomi", code: "fi" }) - append({ text: "Français", code: "fr" }) - append({ text: "Italiano", code: "it" }) - append({ text: "日本語", code: "ja" }) - append({ text: "한국어", code: "ko" }) - append({ text: "Nederlands", code: "nl" }) - append({ text: "Polski", code: "pl" }) + append({ text: "English", code: "en_US" }) + append({ text: "Deutsch", code: "de_DE" }) + append({ text: "Español", code: "es_ES" }) + append({ text: "Suomi", code: "fi_FI" }) + append({ text: "Français", code: "fr_FR" }) + append({ text: "Italiano", code: "it_IT" }) + append({ text: "日本語", code: "ja_JP" }) + append({ text: "한국어", code: "ko_KR" }) + append({ text: "Nederlands", code: "nl_NL" }) + append({ text: "Polski", code: "pl_PL" }) append({ text: "Português do Brasil", code: "pt_BR" }) - append({ text: "Русский", code: "ru" }) - append({ text: "Türkçe", code: "tr" }) + append({ text: "Русский", code: "ru_RU" }) + append({ text: "Türkçe", code: "tr_TR" }) append({ text: "简体中文", code: "zh_CN" }) var date_object = new Date(); From 08d0d90389f7da8b3b9a95de0a6818abbfc3c753 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sun, 10 Sep 2017 01:49:54 +0200 Subject: [PATCH 059/589] Change Pirate language to en_7S Since it's English from the seven seas. Contributes to issue CURA-4263. --- .gitignore | 2 +- resources/qml/Preferences/GeneralPage.qml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 2993d64447..9c9d57f175 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ __pycache__ docs/html *.log resources/i18n/en_US -resources/i18n/7s +resources/i18n/en_7S resources/i18n/x-test resources/firmware resources/materials diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 132fd6890d..452d5df794 100755 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -166,7 +166,7 @@ UM.PreferencesPage var date_object = new Date(); if (date_object.getUTCMonth() == 8 && date_object.getUTCDate() == 19) //Only add Pirate on the 19th of September. { - append({ text: "Pirate", code: "7s" }) + append({ text: "Pirate", code: "en_7S" }) } } } From 291d30f11809c3f29f60c94f6803ac28133009dd Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sun, 10 Sep 2017 02:12:00 +0200 Subject: [PATCH 060/589] Update language preference in preferences when upgrading The language codes were all renamed, so they have to change in the .cfg file of the user as well. Contributes to issue CURA-4263. --- .../VersionUpgrade27to30.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py b/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py index a6e541be6d..1c4fad98b3 100644 --- a/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py +++ b/plugins/VersionUpgrade/VersionUpgrade27to30/VersionUpgrade27to30.py @@ -9,6 +9,23 @@ from UM.VersionUpgrade import VersionUpgrade #We're inheriting from this. _renamed_themes = { "cura": "cura-light" } +_renamed_i18n = { + "7s": "en_7S", + "de": "de_DE", + "en": "en_US", + "es": "es_ES", + "fi": "fi_FI", + "fr": "fr_FR", + "hu": "hu_HU", + "it": "it_IT", + "jp": "ja_JP", + "ko": "ko_KR", + "nl": "nl_NL", + "pl": "pl_PL", + "ptbr": "pt_BR", + "ru": "ru_RU", + "tr": "tr_TR" +} class VersionUpgrade27to30(VersionUpgrade): ## Gets the version number from a CFG file in Uranium's 2.7 format. @@ -50,6 +67,11 @@ class VersionUpgrade27to30(VersionUpgrade): if parser["general"]["theme"] in _renamed_themes: parser["general"]["theme"] = _renamed_themes[parser["general"]["theme"]] + #Renamed languages. + if "language" in parser["general"]: + if parser["general"]["language"] in _renamed_i18n: + parser["general"]["language"] = _renamed_i18n[parser["general"]["language"]] + # Re-serialise the file. output = io.StringIO() parser.write(output) From 1e3cfc56bef3ac8bcb8e1b8f53c755d2c1bb5d73 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sun, 10 Sep 2017 16:55:24 +0200 Subject: [PATCH 061/589] Revert "CuraApplication: Minor pep8 fix" This reverts commit ee1ba30d0eec849f78a710ee5f270b2c756402fc. --- cura/CuraApplication.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index ee1c1aeec6..1b7dafd53d 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -488,7 +488,7 @@ class CuraApplication(QtApplication): f.write(data) - @pyqtSlot(str, result=QUrl) + @pyqtSlot(str, result = QUrl) def getDefaultPath(self, key): default_path = Preferences.getInstance().getValue("local_file/%s" % key) return QUrl.fromLocalFile(default_path) @@ -1128,7 +1128,7 @@ class CuraApplication(QtApplication): expandedCategoriesChanged = pyqtSignal() - @pyqtProperty("QStringList", notify=expandedCategoriesChanged) + @pyqtProperty("QStringList", notify = expandedCategoriesChanged) def expandedCategories(self): return Preferences.getInstance().getValue("cura/categories_expanded").split(";") From 546dc9ff4da4fb2b89c5600ff2f95a9e3f257e72 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 08:48:49 +0200 Subject: [PATCH 062/589] Better positioning for the material circle in the ExtruderButton --- resources/themes/cura-light/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 36b43c27fb..9cf736aa34 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -282,7 +282,7 @@ "default_arrow": [0.8, 0.8], "logo": [7.6, 1.6], - "extruder_button_material_margin": [0.50, 0.9], + "extruder_button_material_margin": [0.70, 0.9], "extruder_button_material": [0.75, 0.75], "sidebar": [35.0, 10.0], From d802c0bd26c10481a72811db6ccf8892d47785f4 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 11 Sep 2017 09:14:50 +0200 Subject: [PATCH 063/589] CURA-4284 some code cleanup while debugging --- plugins/CuraEngineBackend/StartSliceJob.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 13aee06289..0f21c0d781 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -319,11 +319,13 @@ class StartSliceJob(Job): # \param message object_lists message to put the per object settings in def _handlePerObjectSettings(self, node, message): stack = node.callDecoration("getStack") - if not stack: # Check if the node has a stack attached to it and the stack has any settings in the top container. + + # Check if the node has a stack attached to it and the stack has any settings in the top container. + if not stack: return # Check all settings for relations, so we can also calculate the correct values for dependent settings. - top_of_stack = stack.getTop() #Cache for efficiency. + top_of_stack = stack.getTop() # Cache for efficiency. changed_setting_keys = set(top_of_stack.getAllKeys()) for key in top_of_stack.getAllKeys(): instance = top_of_stack.getInstance(key) @@ -339,10 +341,13 @@ class StartSliceJob(Job): setting = message.addRepeatedMessage("settings") setting.name = key extruder = int(round(float(stack.getProperty(key, "limit_to_extruder")))) - if extruder >= 0 and key not in top_of_stack.getAllKeys(): #Limited to a specific extruder, but not overridden by per-object settings. + + # Check if limited to a specific extruder, but not overridden by per-object settings. + if extruder >= 0 and key not in top_of_stack.getAllKeys(): limited_stack = ExtruderManager.getInstance().getActiveExtruderStacks()[extruder] else: - limited_stack = stack #Just take from the per-object settings itself. + limited_stack = stack + setting.value = str(limited_stack.getProperty(key, "value")).encode("utf-8") Job.yieldThread() From b17ff081d6bc6c63ad3909c954d964a4d358554b Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Mon, 11 Sep 2017 09:35:27 +0200 Subject: [PATCH 064/589] Added the FirmwareUpdateChecker to Cura - CURA-4224 --- .../FirmwareUpdateChecker.py | 33 ++++++++ .../FirmwareUpdateCheckerJob.py | 79 +++++++++++++++++++ plugins/FirmwareUpdateChecker/__init__.py | 14 ++++ plugins/FirmwareUpdateChecker/plugin.json | 8 ++ 4 files changed, 134 insertions(+) create mode 100644 plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py create mode 100644 plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py create mode 100644 plugins/FirmwareUpdateChecker/__init__.py create mode 100644 plugins/FirmwareUpdateChecker/plugin.json diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py new file mode 100644 index 0000000000..3b58a56481 --- /dev/null +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py @@ -0,0 +1,33 @@ +# Copyright (c) 2015 Ultimaker B.V. +# Cura is released under the terms of the AGPLv3 or higher. + +from UM.Extension import Extension +from UM.Preferences import Preferences +from UM.i18n import i18nCatalog + +from .FirmwareUpdateCheckerJob import FirmwareUpdateCheckerJob + +i18n_catalog = i18nCatalog("cura") + + +## This Extension checks for new versions of the firmware based on the latest checked version number. +# The plugin is currently only usable for applications maintained by Ultimaker. But it should be relatively easy +# to change it to work for other applications. +class FirmwareUpdateChecker(Extension): + url = "http://software.ultimaker.com/jedi/releases/latest.version" + + def __init__(self): + super().__init__() + + Preferences.getInstance().addPreference("info/latest_checked_firmware", "") + self.checkFirmwareVersion(True) + + ## Connect with software.ultimaker.com, load latest.version and check version info. + # If the version info is different from the current version, spawn a message to + # allow the user to download it. + # + # \param silent type(boolean) Suppresses messages other than "new version found" messages. + # This is used when checking for a new firmware version at startup. + def checkFirmwareVersion(self, silent = False): + job = FirmwareUpdateCheckerJob(silent = silent, url = self.url) + job.start() \ No newline at end of file diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py new file mode 100644 index 0000000000..913ac96025 --- /dev/null +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py @@ -0,0 +1,79 @@ +# Copyright (c) 2015 Ultimaker B.V. +# Cura is released under the terms of the AGPLv3 or higher. + +from UM.Preferences import Preferences +from UM.Application import Application +from UM.Message import Message +from UM.Logger import Logger +from UM.Job import Job + +import urllib.request +import codecs + +from PyQt5.QtCore import QUrl +from PyQt5.QtGui import QDesktopServices + + +from UM.i18n import i18nCatalog +i18n_catalog = i18nCatalog("cura") + + +## This job checks if there is an update available on the provided URL. +class FirmwareUpdateCheckerJob(Job): + def __init__(self, silent = False, url = None): + super().__init__() + self.silent = silent + self._url = url + self._download_url = None # If an update was found, the download_url will be set to the location of the new version. + + ## Callback for the message that is spawned when there is a new version. + def actionTriggered(self, message, action): + if action == "download": + if self._download_url is not None: + QDesktopServices.openUrl(QUrl(self._download_url)) + + def run(self): + self._download_url = None # Reset download ur. + if not self._url: + Logger.log("e", "Can not check for a new release. URL not set!") + return + + Logger.log("i", "Checking for new version of firmware") + try: + request = urllib.request.Request(self._url) + current_version_file = urllib.request.urlopen(request) + reader = codecs.getreader("utf-8") + + # Nothing to parse, just get the string + # TODO: In the future may be done by parsing a JSON file + current_version = reader(current_version_file).readline().rstrip() + Logger.log("i", "Reading firmware version: %s" % current_version) + + # If it is the first time the version is checked, the checked_version is None + checked_version = Preferences.getInstance().getValue("info/latest_checked_firmware") + active_machine = Preferences.getInstance().getValue("cura/active_machine") + # If it is not None, then we compare between the checked_version and the current_version + # Now we just do that if the active printer is Ultimaker 3 or Ultimaker 3 Extended + if ((active_machine == "Ultimaker 3 Extended") or (active_machine == "Ultimaker 3"))\ + and ((checked_version is None) or (checked_version != current_version)): + message = Message(i18n_catalog.i18nc("@info", "New %s firmware available

To ensure that your " + "%s is equiped with the latest features it is recommended " + "to update the firmware regularly. This can be done on the " + "%s (when connected to the network) or via USB." + % (active_machine, active_machine, active_machine))) + message.addAction("download", i18n_catalog.i18nc("@action:button", "Download"), "[no_icon]", "[no_description]") + + # If we do this in a cool way, the download url should be available in the JSON file + self._download_url = "https://ultimaker.com/en/resources/20500-upgrade-firmware" + message.actionTriggered.connect(self.actionTriggered) + # Sometimes it's shown, sometimes not + #message.show() + Application.getInstance().showMessage(message) + + Preferences.getInstance().setValue("info/latest_checked_firmware", current_version) + + except Exception as e: + Logger.log("w", "Failed to check for new version: %s" % e) + if not self.silent: + Message(i18n_catalog.i18nc("@info", "Could not access update information.")).show() + return \ No newline at end of file diff --git a/plugins/FirmwareUpdateChecker/__init__.py b/plugins/FirmwareUpdateChecker/__init__.py new file mode 100644 index 0000000000..5da6130772 --- /dev/null +++ b/plugins/FirmwareUpdateChecker/__init__.py @@ -0,0 +1,14 @@ +# Copyright (c) 2015 Ultimaker B.V. +# Cura is released under the terms of the AGPLv3 or higher. + +from UM.i18n import i18nCatalog +from . import FirmwareUpdateChecker + +i18n_catalog = i18nCatalog("cura") + +def getMetaData(): + return { + } + +def register(app): + return { "extension": FirmwareUpdateChecker.FirmwareUpdateChecker()} diff --git a/plugins/FirmwareUpdateChecker/plugin.json b/plugins/FirmwareUpdateChecker/plugin.json new file mode 100644 index 0000000000..d6a9f9fbd7 --- /dev/null +++ b/plugins/FirmwareUpdateChecker/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Firmware Update Checker", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Checks for firmware updates.", + "api": 4, + "i18n-catalog": "cura" +} From 5bb09d73fc99a49b8f2a4f62764ebcf07636f804 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 11 Sep 2017 09:46:37 +0200 Subject: [PATCH 065/589] clean --- plugins/CuraEngineBackend/StartSliceJob.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 0f21c0d781..e733a8b413 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -327,6 +327,7 @@ class StartSliceJob(Job): # Check all settings for relations, so we can also calculate the correct values for dependent settings. top_of_stack = stack.getTop() # Cache for efficiency. changed_setting_keys = set(top_of_stack.getAllKeys()) + for key in top_of_stack.getAllKeys(): instance = top_of_stack.getInstance(key) self._addRelations(changed_setting_keys, instance.definition.relations) @@ -349,6 +350,7 @@ class StartSliceJob(Job): limited_stack = stack setting.value = str(limited_stack.getProperty(key, "value")).encode("utf-8") + Job.yieldThread() ## Recursive function to put all settings that require eachother for value changes in a list From f50255f1c95eda418310421a99bab6b96509ffd8 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 10:21:34 +0200 Subject: [PATCH 066/589] Disable relative_extrusion for UMs CURA-4219 --- resources/definitions/ultimaker.def.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index b11a84164a..797a05e324 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -31,6 +31,11 @@ { "minimum_value": "0", "maximum_value": "machine_width" + }, + "relative_extrusion": + { + "value": false, + "enabled": false } } } From 327c84d9ef07eac7b7bbb965a4314e3f45c74001 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 10:48:31 +0200 Subject: [PATCH 067/589] Change tool panel and checkbox text colours CURA-4148 - Change tool panel background colour to white - Change checkbox text colour to almost black --- resources/themes/cura-light/theme.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 9cf736aa34..328a65e633 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -197,7 +197,7 @@ "checkbox_border": [64, 69, 72, 255], "checkbox_border_hover": [12, 169, 227, 255], "checkbox_mark": [119, 122, 124, 255], - "checkbox_text": [166, 168, 169, 255], + "checkbox_text": [27, 27, 27, 255], "mode_switch": [255, 255, 255, 255], "mode_switch_hover": [255, 255, 255, 255], @@ -225,7 +225,7 @@ "message_progressbar_background": [255, 255, 255, 255], "message_progressbar_control": [12, 169, 227, 255], - "tool_panel_background": [31, 36, 39, 255], + "tool_panel_background": [255, 255, 255, 255], "status_offline": [0, 0, 0, 255], "status_ready": [0, 205, 0, 255], From 09bb090cd99c5374c8f1bb69638a9981a0a3c38f Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 10:53:17 +0200 Subject: [PATCH 068/589] Change setting_control_text to almost black colour CURA-4148 --- resources/themes/cura-light/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 328a65e633..46bf343bed 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -166,7 +166,7 @@ "setting_control_highlight": [255, 255, 255, 0], "setting_control_border": [127, 127, 127, 255], "setting_control_border_highlight": [12, 169, 227, 255], - "setting_control_text": [127, 127, 127, 255], + "setting_control_text": [27, 27, 27, 255], "setting_control_depth_line": [127, 127, 127, 255], "setting_control_button": [127, 127, 127, 255], "setting_control_button_hover": [70, 84, 113, 255], From 5c306580120d1f0881c0459d2c38f54018fb8183 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 11 Sep 2017 10:56:34 +0200 Subject: [PATCH 069/589] CURA-4284 fix relationship dependencies in per object settings --- plugins/CuraEngineBackend/StartSliceJob.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index e733a8b413..6d06d42007 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -328,12 +328,15 @@ class StartSliceJob(Job): top_of_stack = stack.getTop() # Cache for efficiency. changed_setting_keys = set(top_of_stack.getAllKeys()) + # Add all relations to changed settings as well. for key in top_of_stack.getAllKeys(): instance = top_of_stack.getInstance(key) self._addRelations(changed_setting_keys, instance.definition.relations) Job.yieldThread() - # Ensure that the engine is aware what the build extruder is + Logger.log("d", "changed_setting_keys=%s", changed_setting_keys) + + # Ensure that the engine is aware what the build extruder is. if stack.getProperty("machine_extruder_count", "value") > 1: changed_setting_keys.add("extruder_nr") @@ -344,16 +347,18 @@ class StartSliceJob(Job): extruder = int(round(float(stack.getProperty(key, "limit_to_extruder")))) # Check if limited to a specific extruder, but not overridden by per-object settings. - if extruder >= 0 and key not in top_of_stack.getAllKeys(): + if extruder >= 0 and key not in changed_setting_keys: limited_stack = ExtruderManager.getInstance().getActiveExtruderStacks()[extruder] else: limited_stack = stack setting.value = str(limited_stack.getProperty(key, "value")).encode("utf-8") + Logger.log("d", "key=%s value=%s", key, setting.value) + Job.yieldThread() - ## Recursive function to put all settings that require eachother for value changes in a list + ## Recursive function to put all settings that require each other for value changes in a list # \param relations_set \type{set} Set of keys (strings) of settings that are influenced # \param relations list of relation objects that need to be checked. def _addRelations(self, relations_set, relations): From 96678b11cabe26b7afd1e0ecf309c43ef114564b Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 11:10:42 +0200 Subject: [PATCH 070/589] Update LayerView slider according to new style CURA-4212 --- plugins/LayerView/LayerView.qml | 6 +++--- resources/themes/cura-light/theme.json | 7 ++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 4c6f712d1c..743c8b8053 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -346,7 +346,7 @@ Item property real minimumRangeHandleSize: UM.Theme.getSize("slider_handle").width / 2 property real trackThickness: UM.Theme.getSize("slider_groove").width property real trackRadius: trackThickness / 2 - property real trackBorderWidth: UM.Theme.getSize("default_lining").width + property real trackBorderWidth: UM.Theme.getSize("default_lining").width / 2 property color upperHandleColor: UM.Theme.getColor("slider_handle") property color lowerHandleColor: UM.Theme.getColor("slider_handle") property color rangeHandleColor: UM.Theme.getColor("slider_groove_fill") @@ -474,8 +474,8 @@ Item anchors.horizontalCenter: parent.horizontalCenter radius: parent.handleRadius color: parent.upperHandleColor - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("slider_handle_border") + //border.width: UM.Theme.getSize("default_lining").width + //border.color: UM.Theme.getColor("slider_handle_border") visible: slider.layersVisible diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 0137830a45..8ee7b3cca8 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -188,8 +188,9 @@ "slider_groove": [245, 245, 245, 255], "slider_groove_border": [127, 127, 127, 255], "slider_groove_fill": [127, 127, 127, 255], - "slider_handle": [32, 166, 219, 255], + "slider_handle": [0, 0, 0, 255], "slider_handle_hover": [77, 182, 226, 255], + "slider_handle_border": [39, 44, 48, 255], "slider_text_background": [255, 255, 255, 255], "checkbox": [255, 255, 255, 255], @@ -334,8 +335,8 @@ "scrollbar": [0.75, 0.5], - "slider_groove": [0.5, 0.5], - "slider_handle": [1.5, 1.5], + "slider_groove": [0.3, 0.3], + "slider_handle": [1.0, 1.0], "slider_layerview_size": [1.0, 22.0], "slider_layerview_background": [4.0, 0.0], "slider_layerview_margin": [1.0, 1.0], From 98babfade7416abc68b389a9e9b48da2a9bed429 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 11 Sep 2017 11:11:45 +0200 Subject: [PATCH 071/589] CURA-4284 remove debug logging --- plugins/CuraEngineBackend/StartSliceJob.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 6d06d42007..5a76923f7f 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -354,8 +354,6 @@ class StartSliceJob(Job): setting.value = str(limited_stack.getProperty(key, "value")).encode("utf-8") - Logger.log("d", "key=%s value=%s", key, setting.value) - Job.yieldThread() ## Recursive function to put all settings that require each other for value changes in a list From 94a8d2dfc6e954e1937050248d580f53f3044586 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 11:15:54 +0200 Subject: [PATCH 072/589] Fix LayerView text colour CURA-4212 --- plugins/LayerView/LayerView.qml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 743c8b8053..29f7d46129 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -193,7 +193,7 @@ Item { text: model.name elide: Text.ElideRight - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") font: UM.Theme.getFont("default") anchors.verticalCenter: parent.verticalCenter anchors.left: extrudersModelCheckBox.left; @@ -262,7 +262,7 @@ Item text: label font: UM.Theme.getFont("default") elide: Text.ElideRight - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") anchors.verticalCenter: parent.verticalCenter anchors.left: legendModelCheckBox.left; anchors.right: legendModelCheckBox.right; @@ -325,7 +325,7 @@ Item Layout.fillWidth: true Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("default_lining").height Layout.preferredWidth: UM.Theme.getSize("layerview_row").width - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") font: UM.Theme.getFont("default") } } From 0a5744b74be7b77447f65fb0ace2527fbe0c6b71 Mon Sep 17 00:00:00 2001 From: Mark Date: Mon, 11 Sep 2017 11:21:31 +0200 Subject: [PATCH 073/589] Tweaked the update setting CURA-4301 --- cura/BuildVolume.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index ccdc3cea40..dc239c15b8 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -96,7 +96,7 @@ class BuildVolume(SceneNode): self._scene_change_timer.timeout.connect(self._onSceneChangeTimerFinished) self._setting_change_timer = QTimer() - self._setting_change_timer.setInterval(100) + self._setting_change_timer.setInterval(150) self._setting_change_timer.setSingleShot(True) self._setting_change_timer.timeout.connect(self._onSettingChangeTimerFinished) From f4bfa499d4c270fa0599c2b3450378f239463e72 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 11:22:52 +0200 Subject: [PATCH 074/589] Remove debugging line CURA-4284 --- plugins/CuraEngineBackend/StartSliceJob.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index 5a76923f7f..7f5311dd44 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -334,8 +334,6 @@ class StartSliceJob(Job): self._addRelations(changed_setting_keys, instance.definition.relations) Job.yieldThread() - Logger.log("d", "changed_setting_keys=%s", changed_setting_keys) - # Ensure that the engine is aware what the build extruder is. if stack.getProperty("machine_extruder_count", "value") > 1: changed_setting_keys.add("extruder_nr") From 08882a3f12627e5db7537ac9db6d608b70e68113 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 11:15:54 +0200 Subject: [PATCH 075/589] Fix LayerView text colour CURA-4212 --- plugins/LayerView/LayerView.qml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index ff8bfcb988..15ad15e5e7 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -211,7 +211,7 @@ Item { text: model.name elide: Text.ElideRight - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") font: UM.Theme.getFont("default") anchors.verticalCenter: parent.verticalCenter anchors.left: extrudersModelCheckBox.left; @@ -280,7 +280,7 @@ Item text: label font: UM.Theme.getFont("default") elide: Text.ElideRight - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") anchors.verticalCenter: parent.verticalCenter anchors.left: legendModelCheckBox.left; anchors.right: legendModelCheckBox.right; @@ -343,7 +343,7 @@ Item Layout.fillWidth: true Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("default_lining").height Layout.preferredWidth: UM.Theme.getSize("layerview_row").width - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") font: UM.Theme.getFont("default") } } From 005b43cc5d0c6efbee465ad6817c27b347c8e233 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 11 Sep 2017 11:35:40 +0200 Subject: [PATCH 076/589] CURA-4148 small fixes for layer view settings panel --- plugins/LayerView/LayerView.qml | 6 +++--- resources/themes/cura-light/theme.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index ff8bfcb988..15ad15e5e7 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -211,7 +211,7 @@ Item { text: model.name elide: Text.ElideRight - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") font: UM.Theme.getFont("default") anchors.verticalCenter: parent.verticalCenter anchors.left: extrudersModelCheckBox.left; @@ -280,7 +280,7 @@ Item text: label font: UM.Theme.getFont("default") elide: Text.ElideRight - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") anchors.verticalCenter: parent.verticalCenter anchors.left: legendModelCheckBox.left; anchors.right: legendModelCheckBox.right; @@ -343,7 +343,7 @@ Item Layout.fillWidth: true Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("default_lining").height Layout.preferredWidth: UM.Theme.getSize("layerview_row").width - color: UM.Theme.getColor("button_text") + color: UM.Theme.getColor("setting_control_text") font: UM.Theme.getFont("default") } } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 46bf343bed..72225b87de 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -340,7 +340,7 @@ "slider_layerview_background": [4.0, 0.0], "slider_layerview_margin": [1.0, 1.0], - "layerview_menu_size": [16.5, 21.0], + "layerview_menu_size": [16.5, 22.0], "layerview_menu_size_compatibility": [22, 23.0], "layerview_legend_size": [1.0, 1.0], "layerview_row": [11.0, 1.5], From 4507f6c8e23af21e44416a3c7c7395ad8aacc9ab Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 12:39:57 +0200 Subject: [PATCH 077/589] Update job name prefix when machine is changed CURA-4305 --- cura/PrintInformation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/PrintInformation.py b/cura/PrintInformation.py index 83b5f4af69..2b7a35995b 100644 --- a/cura/PrintInformation.py +++ b/cura/PrintInformation.py @@ -80,7 +80,7 @@ class PrintInformation(QObject): self._abbr_machine = "" self._job_name = "" - Application.getInstance().globalContainerStackChanged.connect(self._setAbbreviatedMachineName) + Application.getInstance().globalContainerStackChanged.connect(self._updateJobName) Application.getInstance().fileLoaded.connect(self.setBaseName) Preferences.getInstance().preferenceChanged.connect(self._onPreferencesChanged) From af3b799cfaccb67f89846fc4339600edee9b6737 Mon Sep 17 00:00:00 2001 From: Mark Date: Mon, 11 Sep 2017 14:23:32 +0200 Subject: [PATCH 078/589] Renamed the views to * view CURA-4212 --- plugins/LayerView/__init__.py | 2 +- plugins/SolidView/__init__.py | 2 +- plugins/XRayView/__init__.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/LayerView/__init__.py b/plugins/LayerView/__init__.py index 0f6b43698a..d1c655d223 100644 --- a/plugins/LayerView/__init__.py +++ b/plugins/LayerView/__init__.py @@ -10,7 +10,7 @@ catalog = i18nCatalog("cura") def getMetaData(): return { "view": { - "name": catalog.i18nc("@item:inlistbox", "Layers"), + "name": catalog.i18nc("@item:inlistbox", "Layer view"), "view_panel": "LayerView.qml", "weight": 2 } diff --git a/plugins/SolidView/__init__.py b/plugins/SolidView/__init__.py index 67b15eb617..28ef124dcf 100644 --- a/plugins/SolidView/__init__.py +++ b/plugins/SolidView/__init__.py @@ -9,7 +9,7 @@ i18n_catalog = i18nCatalog("cura") def getMetaData(): return { "view": { - "name": i18n_catalog.i18nc("@item:inmenu", "Solid"), + "name": i18n_catalog.i18nc("@item:inmenu", "Solid view"), "weight": 0 } } diff --git a/plugins/XRayView/__init__.py b/plugins/XRayView/__init__.py index e726001216..14ab84ea4b 100644 --- a/plugins/XRayView/__init__.py +++ b/plugins/XRayView/__init__.py @@ -9,7 +9,7 @@ catalog = i18nCatalog("cura") def getMetaData(): return { "view": { - "name": catalog.i18nc("@item:inlistbox", "X-Ray"), + "name": catalog.i18nc("@item:inlistbox", "X-Ray view"), "weight": 1 } } From 485b71c0104ee0c1027f0c8c2e2ab91519e7ab3f Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 11 Sep 2017 15:08:06 +0200 Subject: [PATCH 079/589] top bar improvements --- resources/qml/Topbar.qml | 24 ++++++++++++++++-------- resources/themes/cura-light/theme.json | 3 +++ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 799942f0f6..930cc7c4bf 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -16,13 +16,16 @@ Rectangle anchors.left: parent.left anchors.right: parent.right height: UM.Theme.getSize("sidebar_header").height - color: "transparent" + color: base.monitoringPrint ? UM.Theme.getColor("topbar_background_color_monitoring") : UM.Theme.getColor("topbar_background_color") + + Behavior on color { ColorAnimation { duration: 100; } } property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands property bool monitoringPrint: false signal startMonitoringPrint() signal stopMonitoringPrint() + UM.I18nCatalog { id: catalog @@ -76,21 +79,21 @@ Rectangle text: catalog.i18nc("@title:tab", "Monitor") property string iconSource: { - if(!printerConnected) + if (!printerConnected) { return UM.Theme.getIcon("tab_status_unknown"); } - else if(!printerAcceptsCommands) + else if (!printerAcceptsCommands) { return UM.Theme.getIcon("tab_status_unknown"); } - if(Cura.MachineManager.printerOutputDevices[0].printerState == "maintenance") + if (Cura.MachineManager.printerOutputDevices[0].printerState == "maintenance") { return UM.Theme.getIcon("tab_status_busy"); } - switch(Cura.MachineManager.printerOutputDevices[0].jobState) + switch (Cura.MachineManager.printerOutputDevices[0].jobState) { case "printing": case "pre_print": @@ -121,7 +124,6 @@ Rectangle ExclusiveGroup { id: sidebarHeaderBarGroup } } - ToolButton { id: machineSelection @@ -142,10 +144,12 @@ Rectangle if(control.pressed) { return UM.Theme.getColor("sidebar_header_active"); - } else if(control.hovered) + } + else if(control.hovered) { return UM.Theme.getColor("sidebar_header_hover"); - } else + } + else { return UM.Theme.getColor("sidebar_header_bar"); } @@ -207,12 +211,15 @@ Rectangle rightMargin: UM.Theme.getSize("sidebar").width + UM.Theme.getSize("default_margin").width } style: UM.Theme.styles.combobox + visible: !base.monitoringPrint model: UM.ViewModel { } textRole: "name" + onCurrentIndexChanged: { UM.Controller.setActiveView(model.getItem(currentIndex).id); + // Update the active flag for (var i = 0; i < model.rowCount; ++i) { @@ -220,6 +227,7 @@ Rectangle model.getItem(i).active = is_active; } } + currentIndex: { for (var i = 0; i < model.rowCount; ++i) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index bbdfd0eaf8..d727425795 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -67,6 +67,9 @@ "border": [127, 127, 127, 255], "secondary": [245, 245, 245, 255], + "topbar_background_color": [255, 255, 255, 0], + "topbar_background_color_monitoring": [255, 255, 255, 255], + "topbar_button_text_active": [0, 0, 0, 255], "topbar_button_text_inactive": [128, 128, 128, 255], "topbar_button_text_hovered": [0, 0, 0, 255], From 89cbaca257c517aa52e0350ed2e680f9e64d161d Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 11 Sep 2017 15:20:46 +0200 Subject: [PATCH 080/589] Hide layer view toolset when in monitoring mode --- plugins/LayerView/LayerView.qml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 29f7d46129..092df3fb6e 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -31,6 +31,8 @@ Item return base.mapFromItem(parent.parent, parent.buttonTarget.x, parent.buttonTarget.y); } + visible: !parent.parent.monitoringPrint + UM.PointingRectangle { id: layerViewMenu anchors.right: parent.right From cd3d4dc80fa547a170e23e469c74512da147d67d Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 11 Sep 2017 16:58:07 +0200 Subject: [PATCH 081/589] CURA-4203 updated message style for light theme, add shadows --- resources/themes/cura-light/styles.qml | 1 - resources/themes/cura-light/theme.json | 25 ++++++++++++++----------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index bb2b57509a..fa04c92d60 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -385,7 +385,6 @@ QtObject { background: Rectangle { implicitWidth: Theme.getSize("message").width - (Theme.getSize("default_margin").width * 2) implicitHeight: Theme.getSize("progressbar").height - radius: Theme.getSize("progressbar_radius").width color: control.hasOwnProperty("backgroundColor") ? control.backgroundColor : Theme.getColor("progressbar_background") } progress: Rectangle { diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index d727425795..e8137cffa7 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -217,16 +217,17 @@ "tool_button_border": [39, 44, 48, 255], - "message_background": [24, 41, 77, 255], - "message_text": [255, 255, 255, 255], - "message_border": [24, 41, 77, 255], - "message_button": [255, 255, 255, 255], + + "message_background": [255, 255, 255, 255], + "message_shadow": [0, 0, 0, 120], + "message_text": [0, 0, 0, 255], + "message_button": [12, 169, 227, 255], "message_button_hover": [12, 169, 227, 255], - "message_button_active": [32, 166, 219, 255], - "message_button_text": [24, 41, 77, 255], + "message_button_active": [12, 169, 227, 255], + "message_button_text": [255, 255, 255, 255], "message_button_text_hover": [255, 255, 255, 255], "message_button_text_active": [255, 255, 255, 255], - "message_progressbar_background": [255, 255, 255, 255], + "message_progressbar_background": [200, 200, 200, 255], "message_progressbar_control": [12, 169, 227, 255], "tool_panel_background": [255, 255, 255, 255], @@ -332,9 +333,9 @@ "button_tooltip": [1.0, 1.3], "button_tooltip_arrow": [0.25, 0.25], - "progressbar": [26.0, 0.8], - "progressbar_radius": [0.4, 0.4], - "progressbar_control": [8.0, 0.8], + "progressbar": [26.0, 0.4], + "progressbar_radius": [0, 0], + "progressbar_control": [8.0, 0.4], "scrollbar": [0.75, 0.5], @@ -365,8 +366,10 @@ "wizard_progress": [10.0, 0.0], "message": [30.0, 5.0], - "message_close": [1.25, 1.25], + "message_close": [1, 1], "message_button": [6.0, 1.8], + "message_shadow": [0, 0], + "message_margin": [0, 1.0], "infill_button_margin": [0.5, 0.5], From 1d38193bcdd9c604deb41ca3a022e28baf037940 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 18:04:38 +0200 Subject: [PATCH 082/589] Fix letter 'r' alignment in logo CURA-4215 The letter 'r' in the logo was not aligned properly. --- resources/themes/cura-light/images/logo.svg | 80 ++++++++++++++++++--- 1 file changed, 72 insertions(+), 8 deletions(-) diff --git a/resources/themes/cura-light/images/logo.svg b/resources/themes/cura-light/images/logo.svg index 9a3dbdd6bd..5fa5895443 100644 --- a/resources/themes/cura-light/images/logo.svg +++ b/resources/themes/cura-light/images/logo.svg @@ -1,8 +1,72 @@ - - - - - - - - \ No newline at end of file + + + + + + image/svg+xml + + + + + + + + + + + + + From 88e971ea92634e95b27ebb5483244e3240b3825f Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 11 Sep 2017 18:05:49 +0200 Subject: [PATCH 083/589] Add new splash window CURA-4215 - New splash window background image - Rotating loading circle on the splash window --- cura/CuraSplashScreen.py | 97 +++++++++++++++++++++++++++++++---- resources/images/cura.png | Bin 18834 -> 117044 bytes resources/images/loading.png | Bin 0 -> 3585 bytes 3 files changed, 88 insertions(+), 9 deletions(-) create mode 100644 resources/images/loading.png diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index 1df2c39da7..ea2538d1ba 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -1,38 +1,117 @@ -# Copyright (c) 2015 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Uranium is released under the terms of the AGPLv3 or higher. +from threading import Thread, Event +import time + from PyQt5.QtCore import Qt, QCoreApplication -from PyQt5.QtGui import QPixmap, QColor, QFont, QFontMetrics +from PyQt5.QtGui import QPixmap, QColor, QFont, QFontMetrics, QImage, QPen from PyQt5.QtWidgets import QSplashScreen from UM.Resources import Resources from UM.Application import Application + class CuraSplashScreen(QSplashScreen): def __init__(self): super().__init__() self._scale = round(QFontMetrics(QCoreApplication.instance().font()).ascent() / 12) splash_image = QPixmap(Resources.getPath(Resources.Images, "cura.png")) - self.setPixmap(splash_image.scaled(splash_image.size() * self._scale)) + self.setPixmap(splash_image.scaled(splash_image.size() * 0.5 * self._scale)) + + self._current_message = "" + + self._loading_image = QImage(Resources.getPath(Resources.Images, "loading.png")) + self._loading_image = self._loading_image.scaled(30, 30, Qt.KeepAspectRatio) + self._loading_image_rotation_angle = 0 + + self._to_stop = False + self._loading_tick_thread = LoadingTickThread(self) + + def show(self): + super().show() + self._loading_tick_thread.start() + + def updateLoadingImage(self): + if self._to_stop: + return + + self._loading_image_rotation_angle -= 10 + self.repaint() def drawContents(self, painter): + if self._to_stop: + return + painter.save() - painter.setPen(QColor(0, 0, 0, 255)) + painter.setPen(QColor(255, 255, 255, 255)) version = Application.getInstance().getVersion().split("-") buildtype = Application.getInstance().getBuildType() if buildtype: - version[0] += " (%s)" %(buildtype) + version[0] += " (%s)" % buildtype - font = QFont() # Using system-default font here - font.setPointSize(20) + # draw version text + font = QFont() # Using system-default font here + font.setPointSize(38) painter.setFont(font) - painter.drawText(0, 0, 330 * self._scale, 230 * self._scale, Qt.AlignHCenter | Qt.AlignBottom, version[0]) + painter.drawText(230, 88, 330 * self._scale, 230 * self._scale, Qt.AlignHCenter | Qt.AlignBottom, version[0]) if len(version) > 1: font.setPointSize(12) painter.setFont(font) - painter.drawText(0, 0, 330 * self._scale, 255 * self._scale, Qt.AlignHCenter | Qt.AlignBottom, version[1]) + painter.drawText(280, 77, 330 * self._scale, 255 * self._scale, Qt.AlignHCenter | Qt.AlignBottom, version[1]) + + # draw the loading image + pen = QPen() + pen.setWidth(4 * self._scale) + pen.setColor(QColor(255, 255, 255, 255)) + painter.setPen(pen) + painter.drawArc(130, 495, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) + + # draw message text + if self._current_message: + font = QFont() # Using system-default font here + font.setPointSize(16) + painter.setFont(font) + painter.drawText(200, 295, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignBottom, + self._current_message) painter.restore() super().drawContents(painter) + + def showMessage(self, message, *args, **kwargs): + if self._to_stop: + return + + self._current_message = message + self.messageChanged.emit(message) + self.repaint() + + def close(self): + # set stop flags + self._to_stop = True + self._loading_tick_thread.setToStop() + super().close() + + +class LoadingTickThread(Thread): + + def __init__(self, splash): + super().__init__(daemon = True) + self._splash = splash + self._to_stop = False + self._time_interval = 0.05 + self._event = Event() + + def setToStop(self): + self._to_stop = True + self._event.set() + + def run(self): + while not self._to_stop: + self._event.wait(self._time_interval) + if self._event.is_set(): + break + + self._splash.updateLoadingImage() diff --git a/resources/images/cura.png b/resources/images/cura.png index 56908f3719821c1f8d04cc89e5282f17c45a746a..e1954c517219b7b6132a754dafbbfa17db37d419 100644 GIT binary patch literal 117044 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�F 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

QdfAe!xAKRv2*sUF8jDsc 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 LE#)jFbHD!u9VNOX literal 18834 zcmb@t1yo$YvM!9fYmflJ-ED9S0fM_jaG$~5EjR>sx8M%J-5r7t4#C~+C+FRB@B7y~ z=dShMx_iy6wRcTbb$4}5bya`8!xZJepdt|>K|nyDN=r#7LqI^v{QV+8y;H8g`o9w( z2%J7^I;jB7oLs*-m_mq}0F6w^q;0>Mn<|@rGjX>cHWh$?fF`$8)pXL7ljSo8+A@Fp z%fswu3woD^fDjON1AQ~LHgzI1GBvlf6C^)t?Ib6&G!Z1%;F4pN1BshjSW0;~n5uZl zs~US)8v{(pg@woj-1y!V*qSU~Ol+KdT-dmO_usSH+WsfEqm#1ffA#lYDt1(L2br=cn>qrW9gN>6&Wz%3Qy@NZ2h(p(KnGPI z(B_|3RI~s(0Ua%XATn_kZZcX8OFI*wt0Ub%_~qpIr0pD?zS$X@N=pcmziVK&v^3!p z=MiQ7{F#eeQjCpq3f*xA<9&gq}BCjTYN^KWJU zx`Hj}y=4hg2TK=I6G;c4E!jVY%xC%U`@;Ee_5Fve$-nOl*T0ozdG8F%---R-Cib88G32%r!PddmlY+5XrR?u2l zC_4)F4D(}G6)7S^!@-0xrF~Wc<>WL&;3h^Lev1`{A)R!~@I&xVh&V-LF< zMMevR5mf{u1mv_~!ic(4AOu`WV!-?l(h)|8{-yr^7dl1)&;QZSzk2>B>HjduyB#iv z#OkEByKTf`zrdquzZ+?v_#f^3<9B)l!a4}Lc<&7d0C5pZXqzyE)W(HdhCGcK;RsP_ zfuGESmyld??Vewo=uUql?9es^P#G+i8#}nI)-_2GC0PwXm)~}2-So;Kd3qUQ^vCuS zh?6NqKY|Iz!D#zRiIvUB!OqUC-<*<_m6eo~m6T@1o@V3Hx@6+gqDy?*URbtpw7s>p z_sXh4pQu@(E}TVF&!wn|t7ZHt8=$WUrlS3jDWCj)WhLn==G3j6;6*Iix!yBi3)(e} zoB3Xr%Fq8)bL1sPmq#%#oVU`b(%yF9JJ^yyQ?6gJ5%jnzQOcLB`C=9(LJMkLWzZ;> zk&{l8qUtv*oVKx9s#RNQw0(Al3f9q|8R;@5;RS)#4W7`bh=2KmqAvq z5Js6D^BXUc0vH7tg@nMs%RS@_;(eM~p%$+ftWiBMFIfw2Qm1>ntjwtu)%LH#)Cu2K7ppN*4(9K_P}6`#wdyfQ;9 zqg$Zj6eX@KgT>@Mo<=C7zUBQmzOJrjHRuYsd|e2HRe^Y@9G+#=tp<&!HP9$z`<<{W ziIniwL*>~qs~qbd&(U@0<=PRP7$m>)ZC|D0SLtG0N?_*338^JFnt8VU*iH~z?10$3 zui3ux)v7j~O)77bVA*Tjf-2)+_&Ab z%OKG=39sScC7WH+v-pM%S*%#ttea}tH16K z2D86Jd&Gae=(1>SH|)^h?y3xEj3EZh?3Pwi*U|Cig^%uDdPW%n+rt_^q7BA&i!W3f zKuZz@@RtJ;KZE=10vkIY4%08N2fqd>Z>fBX){vh?)&6C_J%HT)L@*w5IelBPm>va5 zvv1s>=^?y+celphy`67K$e>^v$8&M*SNJt4pb?tVA1OG`%StxP76|M6+^TRSjZ=q4DE^`&ia#6MQ zi9UfC99TZ}xqBM>3%MA@+G%LHZHFHq`;JClyVG89(RR*d_XiJRi=%^szNd3@gacjR z6iwCKrzR1y#X9pdo^@~NixcrXJCQM{4#RCAQRnkvL{1l(g@@uwq7-mPNXDos&J#*LY4jwG&y*fV&yR6q(<&ru*03>vxOeh0MA@Lh>P8sRH;{|g(#)T(TDx3Z z&p+J=?;2yqsE{3D8Nt^*QgKI@sp)<=@eP$sBe%K{xNg67eZlI?`y?CEK4#|FA&>o0 zX}3R@#pURC!@G;*e#`B<#f#`Ss?n}+g?}))tLk`OwrVO-JH%2WF=K68F=i!1F%!H> z+!~>*&B-B4D_YXUKSmoT{_x{zT=k3ldM(^}hs7)T2>)8RH{yeptYS{BT>9_KtmC;7 zrCvWjh(Z~fna01>EzA{G~KI+S21=8?=4`L5J)6yMe)h zfyY-EcVx2%$iYt>%BL-=$ZTsg3K^@7>xm{T+L;;+C9*WxdK&?2Xn?Q=&}z|4+O&R zMyfTwL=z(RFyDv?GkU*zYRA0ks!GmkROt(z-$Ay>b}O$ac32Wv9+KSz^do0^SK{0F zhhTZ-)tXb&T^RVj%pca5P}1Mpq6TR%xoatHP8);WJvX}ir`7VlxLN^5qB}s&{tR3WKr$ZD(tBJT$`m0+a!! z4`!xjpF_Ubt+X_V2EyeqAlSWdeInIGtnOOj2I3?49XH4cbojr(k3T++me88<@?|JX zCtFb(bCPI;P5>`M1lT{IAR;1)Y4`nhQpvbJu6L)9}C2Ksh5m+0tO7*jU-x66-oae^T&F;45c&%2@GsK^%8;Q}a6A z`nkb2q_{gi1u$Z~r^o=+O4?1z z5TwOafngd0}#Kh>kk!euTbUs~3_U}&P#UrWY%+@(kttRky$hQf< z2%!yt84ZPtCJ$U>3Y6nCgE(GEqMHH4#iN#W%WjMV4sJ(+Un*mh%izk@k)Il=$rSe{ z<1a`;@TO?b;FDte2WtKA6i>UlL`afD{qK5vwr^P{n5>O;XJ`tON-7|8+3%V(v!lc+ z&pmZ|$M_}Pg@>%^!|00I+xeR(CVCq-cU7AUFQV2+ZZD}LYChr819PQ@v}=gl_0M$r z&@a;Ed|=YQN-h#dOOX5Lr0p_m+xoBbL(%VbU&d6oJ(QcLxT;5`29`ILJbgVje8 z6cSR~F4=M4cM;E*3GTEdXzKY$N)nm}81t-Qky1ZIWbsLG4N|4Iul+zGGF#tkE9|lJ zM|}7CSR=hVcH$Ua(O7r~a+uCACjm5KFs(0Rc z!Zu}3?WBIW&-8;x)g`fLTG1MLn(6mh=&vn zS5^t1dwoB>{l0(m>C-3EWFADux5p!vh&5sy)#u9(ilbEI(z3E+6ollzEA@0LRCSns z8!glX?}<>OX*Rj6J;j5elV7LPFh(qNdK~#yd(n0(TI~ufm}B}Ue>uswh7xM)$S3N8 zUoWD8=p?+iJSdCA*sqCJo36eg9Z~6=W=rm9pRw}L1RYQ?~Dg#nt zsw8z)It_20{gsmy*Yk(xA3}bcpR9%r|eZd$RPlO>jGIIE(#L{=mF6n&!QVjstdbq>>OK#&C@6Wu9fXUOPVVGiBz z_inMKmsv5Y;iaNVJQ@@WkBqdKsSlerGUU2k-S$^TL_$fs?vy@@_D-g4t9{TWJNxs; zB0g@uXN)`!!|NbynRuiR=Wjov3h3o*8=a~0;MI0jzL7(iCpQF&WDHCwIGeE$N#WrUci3M6b3oObiYuCx$H=gdVVm9;c~mUu z-mv6QrLrTJNv-N-w$pi^N0XRH*WwcUxKRi$$<=;@t>%Clv@29;lNohpT2zvoz{Cwk z58>7emEsfPjq7z#t7oOgyY-4y-}fw-PLto@vWe@*tE6n#53w${YiziQf_$Oj?%wX> zW5Sk~T#W2XhN@|4x0zO&x{!@7o2~3O%EUKe;ou(2ev8>ctOLjRjhE{!QSoAS_4Tq( z;ljB-L_$Kcb1y(qLuHKNmL(aqxoxhTby%JsJ+mn9+Ew^Rw zO9v?@%JhTBU6dxGGx>T%8SzFb=z&9cw7ZpSzZ&hPsW+v>RNZh!#X?PD{ohkfk4zu% zq;L-dbCLFYte2%mMMJz0s=WSfpTS%_yZH<{gy*uJH!*lL4Wik3byIKM`pG8qicx=J z?jBDF*c!(~-eZ~Du}%<`x$PiFFU~@gQ6+>LmWGsaf-M zF{pRT)g>9aEP_Zuu&9vF5}JQGIGw!nd5z*(w^;jyTSIcUx_dZZHk!n!(_%CqmA;T` z3GEuv-iRtG9;*xZ(=S?3Df}x!hwW2{1iQ;>N)ROcM;G`Q=I&UBW{{R2ihk?^Mr?6W z0iS^Up}xvgNarh|7Iv+ozq@G{OVuv1tUP+?q&MyIZCzU`&AoO724)ngu+M6c>zdu? z1FIG21Vy|qH!DuUByAfJhYbyVcP7bL{rVporqL6c=L6q)x>(!3MmvuC@L4fygc5jp zZ+c&CxXCi?(o@#a=W%>LYkq^_ezKLYU;lxTKoD_Devc4a@;O-6s#WvmreC zq;XZVJG*;{+4y~z2{L+LyUO61Zb*3zH=jRKr?auJR0Y`ba?*mJwA@n#TkmvRJg98k zGgdEK9f@%Ci{+oeowuCUGXfm^`Nw;kkc9^Ffy#7ed0z{`7e&)*a*{xI`hsuYhpfs> zE^q0Gg`S^B6*`~UvspHZO$*p5)<}O4u;?A1wBnryZSEL+d>!e5jUZc<8kH)mM)oHS z$QYY8K__Ol*xrj$T_V*nIM8#VWwhwr`q}?cikH=D$AT5zGSzY}|5o?cObcwEokrq? zixXl+B~IG-#0>1kDiSSC$#>?aqnm|LQX!W=59XfYA7Nd~en@Onwd19a!%<()FX%6I zIC@HfXmzFBo74+B$ru>EmQ7}}yN~>wXRu83X=~8?kUvd}ao+j9!TG*erg2*Rh|A1M zk4GM1>E9J5<1AB69X35~NBR;rMJSXDWfD=3cx2za z_)0I{GHJ@NnqZfw^e1m0_czw-I#Sf?)T72SP)Y;}o*E^zlpc0bm*v@h8JS!+GJoO{ zT`?GaX7BAI-zN()LZxgONZ8lZ|8lH19o*Bknc zqNAh1)%GvX26%k~1MKQlJPQVLxB!IaqF4@+CiA`{APL`(sbU~0h?oqWbb;*yx=WhK zj!}(Uk0Ec`ODk)#1?~j&;>`XMR0){Ek03(J;Xu>-g_C~C&6P$Pk?U9vdlOb#? z%>0wuHSMw~cnYz-AH#fDVFe27;PYQTFOL%+`O%*pHxB2m7pn9_?|*{qLEq5dxJ2Z` z37$5SE!Duk!^3j-U>Ka&7)PG{L5%xQD zDC$RUtLr~zM^=4R%2_u62L}YvUs*e*fFs8gtL`> zN$~5MmFwWhgAQNl9O^}2BZD?rNJ?%O`TiZ&AbPpAa67mO>ATvm(ry2d8kgw6QJ5oQ z-Na9pN($dDdQ`b^(A(Sl;+&tdnrnJZjKk?ZvV%$S#RgpOz8kLgC59NbOpNVFFajDX zh022Dm>J6z;;?ebDnxr|AIWOr=MC}wi}%xeuI5M2nL5X!wRt&{s}i~qYZ!bt+<|^d zFtcObrBI6Ey5KF3s&!Z_+6#A{*XC%+V(^Y!BxJ-*KmaW3mYB@yW_P#16KtWq2Tp+8 zf^hxsp>zRosDwLvyCE>4IG$*LmZb~l!|Jx)Lwk2ChWn33RNXyW^R})W`qFq;_JlbywIB&=g4stY5}@O&4Z2qKh+=@Bl6JEcK^i0`{_k!UJwdDbCKMAj>@glq?vF5BA4Ar^_hDRnQhK8p0_I29yBJIrBQ#Hx) zMxmg4dV0uvdMWZLtmjG~C1+eYfwd0AW5_@KWX)7^hi4~7=w_cuJ1*UV8Dh?$hR>a8 zUs@d#@1Ynqbg3%wh(p)%kLiSx^HOIGsbpds*3ip3UKoJCu#yzriNYOz7J>5}%GHUS zJ#V3!1DJFgg7BY^X?kx)Zv?#ITG&m})<5Nb31bf8eB6yAibcq<+3zL7{-PrFz#An| z_VycYq8Kmp?>O@R2>mZG{qK$P zU%2f5KBj-i{}R2d+n9n^u_OWoWAi9UZyMv8q~iEA29M!urX-+9Tb$3B-z!W5!p(!ty20 zmMWLsLv;+BNCs2To`ps#lCkPAMrhcrckpi>7ZRzLt(i46*lGdipB11@l+(vw{k+|E zE2S9uocFfUqI|Pt+p?14@`vYLPUnuFQn#U@3tU>Ekw1vK3v+gL1r)yA7OS1bc*kIU zR#cx&b}Vx8{pq~62VJ=?Wjj-X_QCLc2?SzA@6Ij z{>P_lFRb0D=fP4OJ?o_w?Qk^Iu!uaEJj2Ai3GDe^qaNe@o(%<~nh#!QPwix)(USYq z>48>i#gv!78p_a)SD5O}B4-Z<@;=APOgB&`ey2@?_vh^2<@-1>H|JC~f3b;=T)e68>Z&4SEfmch45gNIAhdczr!B00-Xf`b0RBpdfTUtNKx53yW4|6 z{P(}P6PGK@ymoo=d}9~R4+LwE7!_I&n#f$Z<#-Lq?avyeA`~!VAl-8+(Bk~kwM$e+ zBSb?{A`x)$nIckQ;vO8iX~l)CP2(~O#xdngYtdEZ4Y>4K{7#jJyfBk;%89{kpq(h0PFD=svy3ZhIwz_R==ww{FR(`WH z@O`b6rS8^ug4un+ICpy*?|Np3x_z7%OEYJv?wD$F%+C54hy%&jK5f-tSsx-$0qF&d zfbC$jsF#%UpFVLB)iG@1-^iXYY*Z!|P5DX2ki2y%;I%nfmrM-EY6h+dw1`C`eNhDC z(%U%bd=M->;6ROmep->Z#WsF$yE}cKdYTr{aPalljz%Zh#?W?Iln2D z)=&}O$`g>+uuCe^ONa9XX2M%Cnnm2-y5R=QTix7t*mtA!@}s|^zXF_r=>nkp1gwEan1P}R!*4NjE8n$=ai3^~Rn!VK@W)83W52IBO?q0Zfs7N}V zq}81Jo;QiEgvMm*HTX2Ct6&h|-p=HhXO*a-t~yjN>hr8Pk2dXt3c%`Q{0tho2pHiK z39j4EKx!&tKz132vfX4BG>s^@I(Z-RZVD47^J=DbOCU>%lG0$@?CQI#8Dn;57Aa<&b-%yaguQO4=$orJqCE5-@heh*otqu!tC=2SJ&5Om=Q=O)U?vRN7 zJYyPc;f&YW2L_(No!V}1J_V9DBw|`J)*SVUlsUmKbh%vzMo^yb@#B&iU1OCgUV5{) z!CIPTLQigTrhK*fsV^&ElxrKt>(Rj0lS-<<^Wrj!XJ9g~U}lPtts2%OBQr_xcsz!v zPs3WVs&R50&eotMZSLY>dT&mak6l1e@Xi;JbWLhJ?QIPQVf-T+&1|c@l2_Wm4@pJv zu2EC4*nmYRkL|=AGPh=zP9uO;C>xsuMW4siRZ+}G>U;RFwFr4$_gkz&9=L_?&Yn?# zw$RU^rkSnP-=2iY&Uyw7nyrcfTvYY?f=#piaqu5-A(8Ryh_5`}Je;jo`Emxu^V={J zT-_mr0NDz@x8r$Q*<*PWKN%>*KAqzsKR`h$kSB@MXJi|Io{!ZU_)5+Efmg zS%;wu?Re_e`rAAc!u`kx(G%GGn+DSdRuT}#T+IE!ZeO6cFZiClI{K~pSBw!xR)8XH znMp|i?^_4H@-!LDoLPchhl7Fs*=-|=7F{$0GA97>$1KuJ(76-Hqy$(+9koRh>3L8V z(^(4_B%|t(KE659rj>6R@eMlb78cxhLMl|SFge;(l*QK@6A8JwJPYLXsa2VkyyzGZ zBfmVxhAo3x*k`fitKUv+HLA*nwb8!TBU`xX-Hnbd%_67)zgL8_0QrR~ z`&EACvhEdh=yRX1M9zERZb6HpYw~FdJmos#N>pPu4;oF}=^qPt&H8ebs@h`{G6=}9 zLqlMDZ(HHByOZeSzF8-a$tp}j@d)wpwMl)LWIWGFFeei43jFitg&!tiQ=?h4fmshW z4OW=Vso$Biks+u4VGO3)s*fbztAY|rog>Io?~{PhK^i9Fv}srxH$#poD$}TfT88Uh zcQmB4@jr2C6=Y{esh9hKD-G=ufj`ahWy<5J^kTz)Rlc})GtVt}88a=U zgkMmQgP)>FMmIsbaOcXhMsw!^oJk$qD57jJNBF_f4fh4|3;|EE3jVc4*X~UJ4yQVH zPswa_z97=2BHgg`9kUSb-gKi?z?75x5=6r9Tys|k=K>R_7b$RyXoL=6q{W(wTRm)UZK4BQC{&dl_G2sC5`p&ss=7XjvOx)38g8rLdtFL zIgwlNOPVZq+=nsl3T2qsPbIZ0mv|9D0wm~TjUr@zjSy(Gm=_e{iKLO9RFzgvaUAx| zDJ@%S?F?P-iP8$X-;MzB_pM;xD0b?=*hEqPB|zGBfl~|L zkgCP{szAlTp6U5ig>LTr$!{gJvt!H{*ZP*hr=?x*eJ~hm0qWG-qcsUNe27Tfe|2YW z@&4zDHdmK@>3c)M&24wTw7Du;huTL@=JSS);)Cf7{w!^7H6+BHMM5JBJQrqVkLzz% zFC(wlI`9%#q|K){xyfrwM$6K36OOB=M-9SeI@EG`1P+hvUv&M@sZcK-?cZhP*Jf1D zA4YNMaNp*0wMbVmFEmqJMX`ZhjX>gsr3-FB7vJ+Hz`BcAW81hS?=hjC*5_?&|(ZIZ@Dd; z8h(D6%;f6$8j7c07R4A94IA@5Uw-pOi40KtK99Fko3o7Et>lVn>BXK`nJje05eH{b zR}=g2UxNHzOi|hgna*9J{i#AjAoPXk9@QoG+;}h_*j=ZAUlT{WWEE?cPK;_0BDpy+ zKwc{9`fp9}0gblYt;ibc5{h7-pw;rjJFoqij+dLBT@y$HG=urg?nul1)!Or>!AKQV zzw4gA7+ojNV|YZoF>j2i3mQ-N!%pi!I%CC;x@L<$m;7zV5`DOQNk z(BI$22i9m}Xy^kHwKJ8v%$egSi#K5rKX9B51W&~cW;^Ich7E2%z~wF4{^mOgU6UGC zc3)6s$nz~8-32vUkZ6$Qd~`AQ@quL8XqBd&*z^;nu7&-?fU6v*xZ%PEttGNT9v6%G z_|f_^>t&KuA3ih95)-$y-<(ZtUw_ELcU1fciL;oGga&m#T@h*aEX?X)PXL$AKa!I6 zeBC*YO2UG5NzjG%cP-^JS~5V#&mDoq6M8ax=gn>W=1zW2sBm@CW!S@g>SdYiI;pT9 zbnSp9KKx3XI$C2Am^1JSc99Q}tS#Tv?;Rni64?haFX`I-muRudj4ARc#Ij2;*X~kX zyt6#RFXd$(VqkX6BDkoypb0zZl{PhRl)!~^+*)63Uw@$T-;xM=UJOK8mnMK=M4dqr ztT3G>m)t{$tIh~vYjE+Dnry(m)(fsOlU)nP1~^ciwBo6pu`_Q*6RB8N3TQD{Dc==2 zx!0LD6D}}}JaC3=X5)ercEBq$tjJwx!B2~9ep|?E%V;LbY45{Ek~rFt`t;EjuUOT2HxD8-NVd! zEj5M*z<%o1bVQX7LZNbnlQetNma)a6m-v{f_H_+z;S+w}+Bix-VeiL&g%=N3Q(q58 z-{rwyQJubbqao^1)_R?(srl2BsTcC`Ar!CT*h&G=_B*Cwd z?cUauXznk8xX2sJ_X%A`8CUM?g~TWgqX%0aq$mZ_6BzW+R%$UbCOd+6UW3VSx3p)E znV@^s$!_fKFqWZdWf^x+_2txhF`p9=+e^HX%0N33_qa`?P$fFY!_&q^FoWxByCwIc zZAnM#EpdGclRIIBHZBZ#sEjxpdMrjSUa7{Fq9>V_yq(YNfU|c61SQGb8G-U}bQbSI zn{+#QV&pLvR{6Cpz@G0yQu#3cL?;&dv0hXtep{*#%in`=|d9mmc1>lch;v`+o|jLmYSeQs&Qa_2#`+22uz1iM z>!X`amdbT-Xg+({OzWge7qbl=j`(fvlj2n6JtMh3C9i}?2|>ZEvO<7TdWdKEg{ zd{2{?#;rbD?Is>hDeOEHG?!tT-(t4{FE|Di(ov((f?i_E4#2g>>+ol2R6>BcgBprZ zFDus_iE_^lzf+hl*)x)#CAs)9?H}d0teDF6iMmTVMS-W3eXS(a@+*M{d$tI)rvltwW>E zX;?jCQGD>D6`T)9>>Sc#GhxR*q zg_$#$K!~v)(&T>-?PP4qBJDS#S4<%I1`Hqwl(SJ7P!ffr9zKlLj_+{PPfxm>Y3Ah> zzgRcHqi5H8kCRSWwM})7nyY{n;YSj>trqpU_>SA}I@Jax_KHnWKQ22iwZ+hPBz^hJ z4n0ve*w0yNQ1*FY;p*z&+%%J{axh=arEG=G_{&>L`t)*4icM&wbW9K<{zMjv?UxnxC~1cClb#A9JlS}ezA987 zv$cUWMY-JDz+5=fj*A&bqNdjer$Oop9Zr)SJ{P#5Kw|jY%!_UWDem*&)0{(ad&(>3 zR;kO;Dx7i;^8;*1n6ZAq$pHZ%r|GN44|6&927|L=1K$<{uh!)7jPvk^Y=39eSm|za z|Mg&lQ1R~6t_Pg-Pa9$N7TU@6VI5KJzZ%?~El6V-h_NG?cu!V**Wo*bnt}MKs!#_p z#KPzXVU3g2`q})}%KEvhekUMm5L3tM>%xSALZ~`!#+774{(RFF9x?6te3&_mL4+G0 z?kC{7QCL1Wy}@cz^8S1^LNIA8i}N(FaY)QRBH%|EL(u&URG^G0yjC+xrp`cw&%rX{)# zi)Efs5%Bv$9B~^l_b_vylJhv85tUB=SOXZ=&Z^>#C3XX>I|^U z&5J+DaR;f;?R~2<+Un@xug5$mA&YmiSiw1@YKArx@LhK`dQM5cI~GRro+^~COe!Yb#7v9z--Wy z2kv&P`o&-Dx_tZYh(?+-tl91ZKdiIZ{#JMLsrSYM+r&*eB8$1T@l#2WC3r!Y`OW^f zQTQH@jTUhBQmZ|*qsj6CPKH=w_``0o>5eiQ4K0A2Q}fssS%Q2z$a4Mdd{(w zPkXD7pqsK=2_cm5_rD7k;TC8S&1YMu_vxi$|9m!6=as13LSW6(%N5VX~ZD_EWjVz^cA-u3SAzDdoCO@Y^rztR|m_Hyr zEg@si5oXJJup3k44Z|joi$V_02Gac7!?G>LcQInmL*>IrKCVq@n8H{H7szx{qK}YC z&slov=L}ypY&|!ZXu?#xhFS9B|CA_xhb@v*7Gr=WJzOZ=d&2%;@?An|=mjE@nj=N` zoVV+TxT84t>&1#LXstU$ybj6$d4E8VMhIh{cp2XUvb*8J8N&}5x&{Kf<@hmG0`J(? zP0JWqol2eydLo6Vj(kePih%A_rMY9t0+=5Z?WQLv^r^fb!X7^ggqqZoDLO`5e!90C zJ?WpZTa_(_kum+wCxxpTk}O8>Q~h%=9fdgQc>qiTEBo7RkV;je3z2LRAUoz{wgT65 z^5NS7-bkxO-?n*sZn)oYuocp$Kiw4O``$u?k*pH-IoZ&m@&S#xd(xCfQ;5)H{qZb*BdqlZcqmX2y6RU_f8%pvIP{L zZSYRVyXk&`b4_qs>e4^Q&WY_3p}SwKW+C=p1P^`3xQv*kj`9nEXw$Vw@$zRlhB`&; zt1n2T^V-~Dct)a4a%vN;gJp)uklr*Q6PAMLW+jFZ!r=OG<=_58r7lN~(%@76#^-wN zd+`V})P!&dtmpXA(Cmi;8hebZx^mMv|8*NnXKa7UxlbLIV4gBd`UeQ|!bfv7^ z)LtjG1mlDY-bd|Kd*k|_5YUj+M&FhMc&MpIb{!gyxGtyS`Zg3z!%n!2tGmaPscP$6 z4gi84^(&1(4u%MxI)Qs*DOHuY$)1)^VJcyAI%rV%=l9^xa)blhbrKA?J}uw&90j{z zAz1Eu@7AALO!QLiBH4}#zo!f|te=;L2nd=s`QB_Nyl-fR2d*H9_ei!+H(3vw*=lno zNT)O|S#T=5!YyKW9!27XGy6Yv^-Y4=tP<`nav~>&w_yOfBr*N=7Rwf#N+h6dU?$>m zVrt?_fl{XANqXj^3qTU@$~JH!r=RQL0ErsS(%d*m#A=YW+5|%SJr!K!jTe$ z!n;5;?hzQ~9+cBtI!jO{8TvEPA%EDY4nU^s-`synYX<4aoINqj^Fh{?G2V)m{fODc z8a+4KZT1wVqOt3ajI)6K{BTO>mCy|S6T`vm>zSg*5h}ai)LXn(#6dMHLaA@c!^Ay$ zCx5ds-RA}H`B9@1eSd+gJ`$=rTOB){3_Sg>*)DdTnhNza4X^B$@zdDRzLT^C+gV1T z4l}hvdRh@Awww=)?*85HcxGXdDKWsEYE#0#nxpIW_4FFyLtuqPs zuyLb6gx}i^n6@-D#bzdZNR)X!U+I@c8_@WZM_Xg|71pw5$7K&2mokSfwbWZ*&Py4p zk;gA&NuIW*Rg%?T8Z{^}myR2sy}TETxVFAXl7eTqO?IU2C|vM zk!t8wJ;m68%nnzchUUsV&2Nl=VeJS$b#F`-=+$rH7G3uywmq%MD zNI{356`t8zG-AQ3$yuM9&GhbW`eT53pk)49!#>&W$CwIb*unx+5`at5=Q=n_d2XHZ zL4~X;m8ajRChQ}Gjf&uJnhCBucuNa3@@_Qw4amjUs9}@y7Sh-vlGeRd_d>A)CAh=bKF`?tS*J}_1ffBN|tFw_s$_AUEp1iQXqD8#@9A44n<5d zbS2ob9n4&-t=PcKxuYoQQY~0_zEX)DJ(mMC_dx536f1=|eNLou3-zqijSJ*4dNf_; z63q7#JE_p$>ii}{&8QfvHpcpQHVk){kQaPk-75rCQNKVk1#Y9hwy2vAO)gB|5yB1f zK5(Zm+1$K*;H2UUEOlupaZLV!LikaM%PJi;r)jR<=JMNnmD702$J-1{elI2dW~L>( z@A-V8eLJC!%W?IQb&KCIM~znoZ~$)eP5ZM-jC&Vc+;Kb%q`E8-w}6I+uV9q z1Cxb-;xd8LFm(G9Y4vw!6ejezHT600_lbf0`+*tygipJ{zDfQ*KDyP>kz=3k@+PVD zA;U=c+#gQDI9T))LYZQ-GF&dlugMWNj;?{e!7yZmSAHOcq`->vIa+wrN}xv9$}055Onw zvCCS?BV9hTtWbB|T%9MJ&mTL?v0Kv?ef%wVRAN=Xuwy|7NviAgIR{48JL@-u9XCg* z4y7vHF6a1-J8IU-_+Z7lBX5^yHm8T7|HS#c!qE-jfp%G0yzTemAB1XQ)m+H=j+!OD z_Ba$Acw-W;{RBz&f(#Tew?{Vm7v%s^G(`1)y3huuIsDRb2J;>1@MYLh!+bJB zgi-(75I|s~h){Zis1%L6(I-=<_gJ*6!z71oU4Tgn1%FHDbEmd!^BLBL!g-<>t%K#c zcn8cKKSAw+Ahwgm0`YT%Pdji`P_=`2R}RFN%B6gamo7$~dawSr%wHvNr0@$U=Ck|7dbN&C;e!a3DCh%v!__`f>`4A8pS&q8$HayJp{cN8L z0Y*K2yZzuQzh^%3l5`z0cQ>@#B18(Soc5qfyTfJ0`XvkIrgGic>7Lc>$Lt8IuU}TT zIUJAkW%Gh8p7mC6SpgHo{?%!BqM<-HZfHW^UZ6XTGRv4srnbMR&s~GQ;Z)aH02@3i zeiBdf(#%s#P#8+mItL`d9;${YAC#BV=@hZ<7GFadmA(<)1579M@$;(Id{;xrC}pv> z@&;jUlwackq$MR5n+c&CDaaXv&@Y11`B>yF*ECbc0^ z_oI4DRGZt4nPgIk?|wC26>dAl$nIscODM9KHF{{ghGBvfCw^r?3665sEWqYZok#ph zHZ;x8{?9#jY;19;NAojB*GG*foglh{ktnC+wWVA&Xx_cXOnCY1PRZHl=Vz$&HBn(h z=Cn0ttV^0G5{SyzyRVII$MOl*VSg^121{oSNW8nDB)kM*t(cag!LLh5Bgn9+Mr#^ka09yty1b~>LF3Bz5V$|%L+BVim}#Ph2Im!IZoNR=}FzW}@hL;G+h zIuMKHAxg1#S=C$qg4NFPxb|(F)3{+gGv@r8<)PK1cwCOv?sU04dc9%S>My%=YK4z6 zDLW8IcWB#GDiwouCG)^BPs(zWqI5&${k9mB)nE<|Rt|afxz^3jffs1}4 zCHu(93mdlWPsz|orK}eBf~Fx*CJG9ade=5)#)mpRjHwR`RXsguBq*QH<;2&BhKM>W zRNeo@2@zGJY&M5TB&b_EuKQEw?9>q^4+U|7&1!)bAzx<#H{#xX;oi}*L;5^L^EgY_ z@6qLGuqOG7e!aWy+H(-1))^m+Ky8WcDdOgMAdT*P#K%ej- zKqeImXo;lwf!yAuj@>G`4EBf&Q-aea6bT{n2CtsWJaL2{9j=lGO2ptGs1$a)tzPZ8 znV-I`kOvBce6d)>1C!BCOG>>=e%w?V4 zXtg^ye2l&Q*{_bO_7`Ot+2Wr%4fYc>Jn_vJnm3N8y#q=lQi+G+=nbahr!OvEz0+p3 zi^Rn!+&jUOo3A%%bjHMM86ZnrMsCZlE#sm?SN^h`3Jl?h_)@XZXf#V@;;ge9m#*3I z?zmYYRioS*S@ zZ+?0<)+FRH!$0!o^LZ|pd)NMxH&SxcK{C*r-R?}u)Fh{*L&OWQt?;hy>-#;37gX(Z zfen{}N1kW3_3zoCRkJ$#_aCRF66WC|9=BL3(d8E;r)A$r&8947lNo-%;m~MLox7Zp zkwZx(@<17RI2oC0_HXmy{n3BNoVwi-u^6oViL+NSvhykM6qJGF#BgK_@?V!X5st_^ zXdL7es#XLm1G928IeA)#%OwwxHmXy#YlkNJ`Px;#?aeV+C3hfn5D1m%6}$pH?hlXAM84j1UX&oixS*Q&Bk#1dv{LLT6bjQbvc8zJL>V3wsF0dXrg780=ksarGyEv0!%2BZ zcT3bkN`;8nL#K!%q&=CLncy`SJE_!Eozv}sV4F|V%nES)qWW|RD5;2> zo0khl-EK9>_#OezHE-sqh!EA-59gXJb}8kW^wD<<=S(5~2v!c{QRn{x3;=8YpBd03 RrVaoA002ovPDHLkV1f&wSyuo6 diff --git a/resources/images/loading.png b/resources/images/loading.png new file mode 100644 index 0000000000000000000000000000000000000000..c9a0151b28da8e1846ff465b13f93ce092ec0457 GIT binary patch literal 3585 zcmW+(2{=^k`<_ru){$+rU|M7}SwfaFKEo6vX(oKuEE8euW5}+IU8qF%CF?LF%ix=+ zkWn<0WhRj|CTm%<#sB>N=Q{6suXE0G&h^~yd7k^ePr~h6H-z|4@Pj}gA!8#$959pq zH^4`Lqc0z=1(^7VC}VRlu!Vu|#RKQZe2uJ$Kz#83#vv>tLEI{`#T7#r%FKgeCm8x9=NIv!g~EO*mBT^>5-csF89 zp1a;@w^@?+-bUf69Ej(I0M@;0<;BOGM* zGC`pI@OkWF5?xZUl&94E>wz=drlD&g@NNC~aXMRh{~GE81a%Hp;*v~H#~p$-7__F= zK4gE>Gt-Uds4yYD!Nuu`>9~hi_x56@tPvFxaXCzT2 zxbEMB)4}{O!&oP)7$>W<EAOx}74kb)!DM{m(D!cmEvT{TC zK%mc!UZd))>IKHcAYNM>?t&;yJ_fs-SPbm*gLs{pn=!d-CGOc-?Cg9u!RTmJOTSY! zW(v#h84hrl=3!6o@nf; z))~5v$*HcYvR-9ZOx3Cu7+RefKL-B+dp$kZqm|NgcGP<>i$a%ovEDCBXK0;uQ>doD zqELcI8jZ2yv>3)wfm&$!%3b^V12NxstFFQB>JMJ)Qli+yQ|Xyv%e2z5AH|3s@ew zggDx7JT*w=h{O=oAfspIyK18%6pw~Wkkc9uh(Q%Sy*5blz5^Y7T2zH)cc3g20kY>MV!dS0H~b zac3kKyQvLo#9fDXW|w6>o|KM;WN(MPhTEs6NM?kedj6=P26JM@f7@N*q787TpNP9{l2n0c6zrT$OsUUbz=RD~Cbr!;sbP6S>=#&6f z{5cvsY5-Pt{xAITSjgWD?sikrm>GwpZ(*Ss_hwlRJJR@Ao4Z}48JwbSDqDxJ74)ML z&j@yeAPXXal7rE@wEINpjejI92&PwZSaBV38yBrJ!c(WWJgK%0DohU`&M8@F)d=3R z8qE&z`87UPoZ+&a^NZbSBd~hyAVfI$8lD%X4rCGM^z-iwon2gq_>+G-G+|Jk+9T*mDkB8B+$--S2o*bu%oF4gCk0r#_+gbb!%i;nB{ozng|={&vi z%zz!VIn40K^s5_S(v5Dzw-4mVSNe!t2`bQs+9q34SZ!|Bf+^^0#I8IcC^GP40Ieoc z>D}tH3bsv2dZL|Al&Yl@R9Ny(i)0;wm=8w9e}%3+OVRsV>NWDdD^$E|rF(8|k)Wu}m{O=^&YkJ z19Wb z0w*Sla!aey!b>^jZk6W^KdhO9pgy>lF-Co-RP4gQVA#^NJ8j1V9*@qG>%}oQAK)<+Mt>rHcnNtLynW~17UPEjDhsabs0qs^sChB;V|W~g5<5b~@{N;f4Z9&K!+GE+FV_igUF1(ic6*~&ULXC|9zXY*pWoto{UFcp zpPy?9tG_iGijnfP8D80fj4c?2ASzsH{v+E}XGJaC>2mq$&S~5Yz4!lsNirs{{?(@@ zTq4=aj?w@H-3ffDH`=PldL;+WO)1kfRZEyR9#F4bK!h{8i#hv5hh)`zA&m??HO6#6 zi`D<;a&J#D3M_>GGzYe~uoz>B(Vnwhr$;ZOs4@!}!I7%Ic7)FWSvCmD-Wo4|w@nPa zRpVeN^r(=e8)U;FscN6ypjT*qmc7C99mWL zyz#2D^ccsGdJSj)JEV0VTsAu4kcK+~i1I8^2o)bjwc4zz|5(2E45v6+9y6p-lwQ2B z@vSm+1>dh8Zjt#fdV~6FtkG-J<{+JbBCr4*zA*k>AHpYrUmW`WF-P-5o#!O6oeGd7 zLCO;I5m2fN<9u6ht}<7t1)+D$$!QTwMJ*y6L^b5h3FlazS6=@z`i||ldW(1Y&1J9F zy#yYtL+IHJNavQh*A01)G|7eO{ek08H$%q}eZ-nFBFK~IV_Eh5&*gyS_3&FhRTReQ zsZ+|R51(A?TSGgRE-5mtcCX~|I@+p)07ha3S5Rlt_5XTb4#R(P&yLV5!S(3(Jn|X% z?=%x?moWp_h_y-G?L=+vTt`R8+pupG-Sa8a8%3qgBAZvs+!^MW!v=!6#C(9!5j}4l z{L#2laVlj#@MpR;rqXC&-SO>qon`|_yg&I|W;P3SymC&~km(sna-$|d&OF62F_piq z#+1ov`7GBzyshPvhKC(@ivX;zYx6Zz=hS3vQSowQBTS`E$$S|u(Susa&Q>h7Ql9#v zYk&1(&^wvsjzs=|YvSR7XZe z4(#g$e2o-Jm%@+-ghi!{mmCxdJXfr+@0~4Qv#>LpJym%X&|l-HL$x+xveb7Lr@CCk z(Io4PHGZsbU?Q5*AHvLXUZrP+X5t!D-1IPYD25@<$d*qAXzOg zoEx^8|GpDibN8_8)`z>iEk_Csw9J|1Si_}TZg`p{Qb`9S*{fud4W4GpFo;ZhxYIb;|{ zxU~4U`UvbEj0{jT1U2GM0mD)8XUGBE<`S9qgF`z~Uu?>LD5(R#YanCvEkhd0@zMVQ Dgh1n@ literal 0 HcmV?d00001 From a8ff1e188f9e5856003264d796763dac5aaaf18c Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Wed, 26 Jul 2017 15:24:42 +0200 Subject: [PATCH 084/589] feat: Cross infill types and zig_zaggify_infill --- resources/definitions/fdmprinter.def.json | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 0e871ffad5..8cb8043cdb 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1365,7 +1365,9 @@ "quarter_cubic": "Quarter Cubic", "concentric": "Concentric", "concentric_3d": "Concentric 3D", - "zigzag": "Zig Zag" + "zigzag": "Zig Zag", + "cross": "Cross", + "cross_3d": "Cross 3D" }, "default_value": "grid", "enabled": "infill_sparse_density > 0", @@ -1373,6 +1375,15 @@ "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, + "zig_zaggify_infill": + { + "label": "Connect Infill Lines", + "description": "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used.", + "type": "bool", + "default_value": true, + "enabled": "infill_pattern == 'cross' or infill_pattern == 'cross_3d'", + "settable_per_mesh": true + }, "infill_angles": { "label": "Infill Line Directions", From be6dcdafbdc336b886278831dc1f06122a1ba01c Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Wed, 26 Jul 2017 18:10:25 +0200 Subject: [PATCH 085/589] lil: explicitly set cross infill density --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 8cb8043cdb..39c1343870 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1343,7 +1343,7 @@ "default_value": 2, "minimum_value": "0", "minimum_value_warning": "infill_line_width", - "value": "0 if infill_sparse_density == 0 else (infill_line_width * 100) / infill_sparse_density * (2 if infill_pattern == 'grid' else (3 if infill_pattern == 'triangles' or infill_pattern == 'cubic' or infill_pattern == 'cubicsubdiv' else (2 if infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' else 1)))", + "value": "0 if infill_sparse_density == 0 else (infill_line_width * 100) / infill_sparse_density * (2 if infill_pattern == 'grid' else (3 if infill_pattern == 'triangles' or infill_pattern == 'cubic' or infill_pattern == 'cubicsubdiv' else (2 if infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' else (1 if infill_pattern == 'cross' or infill_pattern == 'cross_3d' else 1))))", "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true } From 461d4be310237f359d1c0aa5f96922137f82ac49 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 11 Sep 2017 20:35:24 +0200 Subject: [PATCH 086/589] Fix hover state of Monitor button in the topbar --- resources/themes/cura-light/styles.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index bb2b57509a..f4d9aa6d59 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -107,7 +107,7 @@ QtObject { anchors.bottom: parent.bottom width: parent.width height: Theme.getSize("sidebar_header_highlight").height - color: control.checked ? UM.Theme.getColor("sidebar_header_highlight") : "transparent" + color: control.checked ? UM.Theme.getColor("sidebar_header_highlight") : UM.Theme.getColor("sidebar_header_highlight_hover") visible: control.hovered || control.checked } } From a4aa134f25fd50a7bf2ea057486d7786ee8ff4e4 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 11 Sep 2017 22:43:55 +0200 Subject: [PATCH 087/589] Revert "Merge branch 'feature_grid_lines'" This reverts commit a0b7a2d165d4f973c69bf5fc7314726f19eeeb65, reversing changes made to db640c6f3d7b32b4c387268e8ebeb0d4de1b461a. # Conflicts: # cura/BuildVolume.py --- cura/BuildVolume.py | 87 +++++------------------------------ resources/shaders/grid.shader | 70 ++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 75 deletions(-) create mode 100644 resources/shaders/grid.shader diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index dc239c15b8..1bd5c7028e 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2016 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. from cura.Settings.ExtruderManager import ExtruderManager @@ -27,9 +27,8 @@ import math from typing import List -PRIME_CLEARANCE = 6.5 #Setting for clearance around the prime. -MAJOR_GRID_SIZE = 10 #Size of the grid cells. -MINOR_GRID_SIZE = 1 +# Setting for clearance around the prime +PRIME_CLEARANCE = 6.5 ## Build volume is a special kind of node that is responsible for rendering the printable area & disallowed areas. @@ -45,8 +44,6 @@ class BuildVolume(SceneNode): self._z_axis_color = None self._disallowed_area_color = None self._error_area_color = None - self._grid_color = None - self._grid_minor_color = None self._width = 0 self._height = 0 @@ -59,9 +56,8 @@ class BuildVolume(SceneNode): self._origin_line_length = 20 self._origin_line_width = 0.5 - self._plate_mesh = None self._grid_mesh = None - self._plate_shader = None + self._grid_shader = None self._disallowed_areas = [] self._disallowed_area_mesh = None @@ -180,15 +176,15 @@ class BuildVolume(SceneNode): if not self._shader: self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "default.shader")) - self._plate_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "color.shader")) + self._grid_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "grid.shader")) theme = Application.getInstance().getTheme() - self._plate_shader.setUniformValue("u_color", Color(*theme.getColor("buildplate").getRgb())) - self._plate_shader.setUniformValue("u_z_bias", 0.000001) + self._grid_shader.setUniformValue("u_gridColor0", Color(*theme.getColor("buildplate").getRgb())) + self._grid_shader.setUniformValue("u_gridColor1", Color(*theme.getColor("buildplate_alt").getRgb())) + self._grid_shader.setUniformValue("u_z_bias", 0.000001) renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines) renderer.queueNode(self, mesh = self._origin_mesh) - renderer.queueNode(self, mesh = self._plate_mesh, shader = self._plate_shader, backface_cull = True) - renderer.queueNode(self, mesh = self._grid_mesh, mode = RenderBatch.RenderMode.Lines, transparent = True) + renderer.queueNode(self, mesh = self._grid_mesh, shader = self._grid_shader, backface_cull = True) if self._disallowed_area_mesh: renderer.queueNode(self, mesh = self._disallowed_area_mesh, shader = self._shader, transparent = True, backface_cull = True, sort = -9) @@ -261,8 +257,6 @@ class BuildVolume(SceneNode): self._z_axis_color = Color(*theme.getColor("z_axis").getRgb()) self._disallowed_area_color = Color(*theme.getColor("disallowed_area").getRgb()) self._error_area_color = Color(*theme.getColor("error_area").getRgb()) - self._grid_color = Color(*theme.getColor("buildplate_grid").getRgb()) - self._grid_minor_color = Color(*theme.getColor("buildplate_grid_minor").getRgb()) min_w = -self._width / 2 max_w = self._width / 2 @@ -293,7 +287,7 @@ class BuildVolume(SceneNode): self.setMeshData(mb.build()) - # Build plate surface. + # Build plate grid mesh mb = MeshBuilder() mb.addQuad( Vector(min_w, min_h - z_fight_distance, min_d), @@ -305,30 +299,6 @@ class BuildVolume(SceneNode): for n in range(0, 6): v = mb.getVertex(n) mb.setVertexUVCoordinates(n, v[0], v[2]) - self._plate_mesh = mb.build() - - #Build plate grid mesh. - mb = MeshBuilder() - for x in range(0, int(math.ceil(max_w)), MAJOR_GRID_SIZE): - mb.addLine(Vector(x, min_h, min_d), Vector(x, min_h, max_d), color = self._grid_color) - #Start from 0 in both cases, so you need to do this in two for loops. - mb.addLine(Vector(-x, min_h, min_d), Vector(-x, min_h, max_d), color = self._grid_color) - for y in range(0, int(math.ceil(max_d)), MAJOR_GRID_SIZE): - mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_color) - mb.addLine(Vector(min_w, min_h, -y), Vector(max_w, min_h, -y), color = self._grid_color) - - #More fine grained grid. - for x in range(0, int(math.ceil(max_w)), MINOR_GRID_SIZE): - if x % MAJOR_GRID_SIZE == 0: #Don't overlap with the major grid. - pass - mb.addLine(Vector(x, min_h, min_d), Vector(x, min_h, max_d), color = self._grid_minor_color) - mb.addLine(Vector(-x, min_h, min_d), Vector(-x, min_h, max_d), color = self._grid_minor_color) - for y in range(0, int(math.ceil(max_d)), MINOR_GRID_SIZE): - if y % MAJOR_GRID_SIZE == 0: - pass - mb.addLine(Vector(min_w, min_h, y), Vector(max_w, min_h, y), color = self._grid_minor_color) - mb.addLine(Vector(min_w, min_h, -y), Vector(max_w, min_h, -y), color = self._grid_minor_color) - self._grid_mesh = mb.build() else: @@ -344,7 +314,7 @@ class BuildVolume(SceneNode): mb.addArc(max_w, Vector.Unit_Y, center = (0, max_h, 0), color = self._volume_outline_color) self.setMeshData(mb.build().getTransformed(scale_matrix)) - # Build plate surface. + # Build plate grid mesh mb = MeshBuilder() mb.addVertex(0, min_h - z_fight_distance, 0) mb.addArc(max_w, Vector.Unit_Y, center = Vector(0, min_h - z_fight_distance, 0)) @@ -358,40 +328,7 @@ class BuildVolume(SceneNode): for n in range(0, mb.getVertexCount()): v = mb.getVertex(n) mb.setVertexUVCoordinates(n, v[0], v[2] * aspect) - self._plate_mesh = mb.build().getTransformed(scale_matrix) - - #Build plate grid mesh. - #We need to constrain the length of the lines to the build plate ellipsis. Time to get out the calculator! - mb = MeshBuilder() - for x in range(0, int(math.ceil(max_w)), MAJOR_GRID_SIZE): - #x / max_w is the fraction along the build plate we have progressed, counting from the centre. - #So x / max_w is sin(a), where a is the angle towards an endpoint of the grid line from the centre. - #So math.asin(x / max_w) is a. - #So math.cos(math.asin(x / max_w)) is half of the length of the grid line on a unit circle, which scales between 0 and 1. - length_factor = math.cos(math.asin(x / max_w)) - mb.addLine(Vector(x, min_h, min_d * length_factor), Vector(x, min_h, max_d * length_factor), color = self._grid_color) - #Start from 0 in both cases, so you need to do this in two for loops. - mb.addLine(Vector(-x, min_h, min_d * length_factor), Vector(-x, min_h, max_d * length_factor), color = self._grid_color) - for y in range(0, int(math.ceil(max_d)), MAJOR_GRID_SIZE): - length_factor = math.sin(math.acos(y / max_d)) - mb.addLine(Vector(min_w * length_factor, min_h, y), Vector(max_w * length_factor, min_h, y), color = self._grid_color) - mb.addLine(Vector(min_w * length_factor, min_h, -y), Vector(max_w * length_factor, min_h, -y), color = self._grid_color) - - #More fine grained grid. - for x in range(0, int(math.ceil(max_w)), MINOR_GRID_SIZE): - if x % MAJOR_GRID_SIZE == 0: #Don't overlap with the major grid. - pass - length_factor = math.cos(math.asin(x / max_w)) - mb.addLine(Vector(x, min_h, min_d * length_factor), Vector(x, min_h, max_d * length_factor), color = self._grid_minor_color) - mb.addLine(Vector(-x, min_h, min_d * length_factor), Vector(-x, min_h, max_d * length_factor), color = self._grid_minor_color) - for y in range(0, int(math.ceil(max_d)), MINOR_GRID_SIZE): - if y % MAJOR_GRID_SIZE == 0: - pass - length_factor = math.sin(math.acos(y / max_d)) - mb.addLine(Vector(min_w * length_factor, min_h, y), Vector(max_w * length_factor, min_h, y), color = self._grid_minor_color) - mb.addLine(Vector(min_w * length_factor, min_h, -y), Vector(max_w * length_factor, min_h, -y), color = self._grid_minor_color) - - self._grid_mesh = mb.build() + self._grid_mesh = mb.build().getTransformed(scale_matrix) # Indication of the machine origin if self._global_container_stack.getProperty("machine_center_is_zero", "value"): diff --git a/resources/shaders/grid.shader b/resources/shaders/grid.shader new file mode 100644 index 0000000000..74eed544fd --- /dev/null +++ b/resources/shaders/grid.shader @@ -0,0 +1,70 @@ +[shaders] +vertex = + uniform highp mat4 u_modelViewProjectionMatrix; + + attribute highp vec4 a_vertex; + attribute lowp vec2 a_uvs; + + varying lowp vec2 v_uvs; + + void main() + { + gl_Position = u_modelViewProjectionMatrix * a_vertex; + v_uvs = a_uvs; + } + +fragment = + uniform lowp vec4 u_gridColor0; + uniform lowp vec4 u_gridColor1; + + varying lowp vec2 v_uvs; + + void main() + { + if (mod(floor(v_uvs.x / 10.0) - floor(v_uvs.y / 10.0), 2.0) < 1.0) + gl_FragColor = u_gridColor0; + else + gl_FragColor = u_gridColor1; + } + +vertex41core = + #version 410 + uniform highp mat4 u_modelViewProjectionMatrix; + + in highp vec4 a_vertex; + in lowp vec2 a_uvs; + + out lowp vec2 v_uvs; + + void main() + { + gl_Position = u_modelViewProjectionMatrix * a_vertex; + v_uvs = a_uvs; + } + +fragment41core = + #version 410 + uniform lowp vec4 u_gridColor0; + uniform lowp vec4 u_gridColor1; + + in lowp vec2 v_uvs; + out vec4 frag_color; + + void main() + { + if (mod(floor(v_uvs.x / 10.0) - floor(v_uvs.y / 10.0), 2.0) < 1.0) + frag_color = u_gridColor0; + else + frag_color = u_gridColor1; + } + +[defaults] +u_gridColor0 = [0.96, 0.96, 0.96, 1.0] +u_gridColor1 = [0.8, 0.8, 0.8, 1.0] + +[bindings] +u_modelViewProjectionMatrix = model_view_projection_matrix + +[attributes] +a_vertex = vertex +a_uvs = uv0 From 6658e1a9aee8ae13eb8aeab46c860e46d21726a8 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 11 Sep 2017 23:39:54 +0200 Subject: [PATCH 088/589] Draw grid lines using shader --- cura/BuildVolume.py | 5 ++-- resources/shaders/grid.shader | 40 ++++++++++++++++++++------ resources/themes/cura-light/theme.json | 3 +- resources/themes/cura/theme.json | 3 +- 4 files changed, 37 insertions(+), 14 deletions(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 1bd5c7028e..a7fc0701be 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -178,8 +178,9 @@ class BuildVolume(SceneNode): self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "default.shader")) self._grid_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "grid.shader")) theme = Application.getInstance().getTheme() - self._grid_shader.setUniformValue("u_gridColor0", Color(*theme.getColor("buildplate").getRgb())) - self._grid_shader.setUniformValue("u_gridColor1", Color(*theme.getColor("buildplate_alt").getRgb())) + self._grid_shader.setUniformValue("u_plateColor", Color(*theme.getColor("buildplate").getRgb())) + self._grid_shader.setUniformValue("u_gridColor0", Color(*theme.getColor("buildplate_grid").getRgb())) + self._grid_shader.setUniformValue("u_gridColor1", Color(*theme.getColor("buildplate_grid_minor").getRgb())) self._grid_shader.setUniformValue("u_z_bias", 0.000001) renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines) diff --git a/resources/shaders/grid.shader b/resources/shaders/grid.shader index 74eed544fd..c44db85dba 100644 --- a/resources/shaders/grid.shader +++ b/resources/shaders/grid.shader @@ -14,6 +14,7 @@ vertex = } fragment = + uniform lowp vec4 u_plateColor; uniform lowp vec4 u_gridColor0; uniform lowp vec4 u_gridColor1; @@ -21,10 +22,19 @@ fragment = void main() { - if (mod(floor(v_uvs.x / 10.0) - floor(v_uvs.y / 10.0), 2.0) < 1.0) - gl_FragColor = u_gridColor0; - else - gl_FragColor = u_gridColor1; + vec2 coord = v_uvs.xy; + + // Compute anti-aliased world-space minor grid lines + vec2 minorGrid = abs(fract(coord - 0.5) - 0.5) / fwidth(coord); + float minorLine = min(minorGrid.x, minorGrid.y); + + vec4 minorGridColor = mix(u_plateColor, u_gridColor1, 1.0 - min(minorLine, 1.0)); + + // Compute anti-aliased world-space major grid lines + vec2 majorGrid = abs(fract(coord / 10 - 0.5) - 0.5) / fwidth(coord / 10); + float majorLine = min(majorGrid.x, majorGrid.y); + + frag_color = mix(minorGridColor, u_gridColor0, 1.0 - min(majorLine, 1.0)); } vertex41core = @@ -44,23 +54,37 @@ vertex41core = fragment41core = #version 410 + uniform lowp vec4 u_plateColor; uniform lowp vec4 u_gridColor0; uniform lowp vec4 u_gridColor1; + uniform lowp float u_z_bias; //Bias in the depth buffer for rendering this object (to make an object be rendered in front of or behind other objects). in lowp vec2 v_uvs; out vec4 frag_color; void main() { - if (mod(floor(v_uvs.x / 10.0) - floor(v_uvs.y / 10.0), 2.0) < 1.0) - frag_color = u_gridColor0; - else - frag_color = u_gridColor1; + vec2 coord = v_uvs.xy; + + // Compute anti-aliased world-space minor grid lines + vec2 minorGrid = abs(fract(coord - 0.5) - 0.5) / fwidth(coord); + float minorLine = min(minorGrid.x, minorGrid.y); + + vec4 minorGridColor = mix(u_plateColor, u_gridColor1, 1.0 - min(minorLine, 1.0)); + + // Compute anti-aliased world-space major grid lines + vec2 majorGrid = abs(fract(coord / 10 - 0.5) - 0.5) / fwidth(coord / 10); + float majorLine = min(majorGrid.x, majorGrid.y); + + frag_color = mix(minorGridColor, u_gridColor0, 1.0 - min(majorLine, 1.0)); + gl_FragDepth = gl_FragCoord.z + u_z_bias; } [defaults] +u_plateColor = [1.0, 1.0, 1.0, 1.0] u_gridColor0 = [0.96, 0.96, 0.96, 1.0] u_gridColor1 = [0.8, 0.8, 0.8, 1.0] +u_z_bias = 0.0 [bindings] u_modelViewProjectionMatrix = model_view_projection_matrix diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index d727425795..57b9b77221 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -247,9 +247,8 @@ "viewport_background": [245, 245, 245, 255], "volume_outline": [12, 169, 227, 255], "buildplate": [244, 244, 244, 255], - "buildplate_alt": [204, 204, 204, 255], "buildplate_grid": [129, 131, 134, 255], - "buildplate_grid_minor": [129, 131, 134, 31], + "buildplate_grid_minor": [230, 230, 231, 255], "convex_hull": [35, 35, 35, 127], "disallowed_area": [0, 0, 0, 40], diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json index 46da3cbe7a..e94141413c 100644 --- a/resources/themes/cura/theme.json +++ b/resources/themes/cura/theme.json @@ -170,9 +170,8 @@ "viewport_background": [241, 242, 242, 255], "volume_outline": [1, 168, 230, 255], "buildplate": [252, 252, 252, 255], - "buildplate_alt": [204, 204, 204, 255], "buildplate_grid": [129, 131, 134, 255], - "buildplate_grid_minor": [129, 131, 134, 31], + "buildplate_grid_minor": [230, 230, 231, 255], "convex_hull": [35, 35, 35, 127], "disallowed_area": [0, 0, 0, 52], From ec6fa19d4efd9eb5afda5785298532f1358f623f Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 11 Sep 2017 23:49:16 +0200 Subject: [PATCH 089/589] Updated copyright date --- cura/BuildVolume.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index a7fc0701be..9b6647fe43 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -1,4 +1,4 @@ -# Copyright (c) 2016 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. from cura.Settings.ExtruderManager import ExtruderManager From 1aa46045af7f4e83c30939a6c03a7ed0a00ccf53 Mon Sep 17 00:00:00 2001 From: Eloi Pardo Date: Tue, 12 Sep 2017 08:42:17 +0200 Subject: [PATCH 090/589] add ConvexHullDecorator when grouping --- cura/CuraApplication.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 1b7dafd53d..021f20fa82 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1182,6 +1182,7 @@ class CuraApplication(QtApplication): group_node = SceneNode() group_decorator = GroupDecorator() group_node.addDecorator(group_decorator) + group_node.addDecorator(ConvexHullDecorator()) group_node.setParent(self.getController().getScene().getRoot()) group_node.setSelectable(True) center = Selection.getSelectionCenter() From 4143effbe19ab5ae0c90fbb069e1c9c6e2f22772 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 09:13:16 +0200 Subject: [PATCH 091/589] only show slider track when layers are available --- plugins/LayerView/LayerView.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 092df3fb6e..1f04be77d3 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -418,6 +418,7 @@ Item color: parent.trackColor border.width: parent.trackBorderWidth; border.color: parent.trackBorderColor; + visible: slider.layersVisible } Item { From 670d1784c4b89d7bc35e60265f15d6159a50322c Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 09:45:45 +0200 Subject: [PATCH 092/589] Fix layer mode combobox hover not transparent --- resources/themes/cura-light/styles.qml | 2 +- resources/themes/cura-light/theme.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index 47274f99d9..8f2131bbfb 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -614,7 +614,7 @@ QtObject { implicitHeight: Theme.getSize("setting_control").height; implicitWidth: Theme.getSize("setting_control").width; - color: (control.hovered || control._hovered) ? Theme.getColor("setting_control_highlight") : Theme.getColor("setting_control"); + color: Theme.getColor("setting_control") Behavior on color { ColorAnimation { duration: 50; } } border.width: Theme.getSize("default_lining").width; diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index e8137cffa7..98afe76350 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -357,6 +357,7 @@ "tooltip_margins": [1.0, 1.0], "tooltip_arrow_margins": [2.0, 2.0], + "save_button_text_margin": [0.3, 0.6], "save_button_save_to_button": [0.3, 2.7], "save_button_specs_icons": [1.4, 1.4], From 7d719c4ab56b44aa13e3cc0b08c53e597b81bb92 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 09:54:24 +0200 Subject: [PATCH 093/589] layer view toolbox height depending on color scheme mode --- plugins/LayerView/LayerView.qml | 2 ++ resources/themes/cura-light/theme.json | 1 + 2 files changed, 3 insertions(+) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 1f04be77d3..10a2b4c3cf 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -22,6 +22,8 @@ Item height: { if (UM.LayerView.compatibilityMode) { return UM.Theme.getSize("layerview_menu_size_compatibility").height; + } else if (UM.Preferences.getValue("layerview/layer_view_type") == 0) { + return UM.Theme.getSize("layerview_menu_size_material_color_mode").height + UM.LayerView.extruderCount * (UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("layerview_row_spacing").height) } else { return UM.Theme.getSize("layerview_menu_size").height + UM.LayerView.extruderCount * (UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("layerview_row_spacing").height) } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 98afe76350..3b98ac1ae4 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -346,6 +346,7 @@ "slider_layerview_margin": [1.0, 1.0], "layerview_menu_size": [15, 19.5], + "layerview_menu_size_material_color_mode": [15, 15.5], "layerview_menu_size_compatibility": [22, 22.0], "layerview_legend_size": [1.0, 1.0], "layerview_row": [11.0, 1.5], From 92617e217721be5ead45b5ec30040db88a3aa98c Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 10:15:08 +0200 Subject: [PATCH 094/589] remove layerview toolbox arrow --- plugins/LayerView/LayerView.qml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 10a2b4c3cf..8927d59017 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -28,6 +28,7 @@ Item return UM.Theme.getSize("layerview_menu_size").height + UM.LayerView.extruderCount * (UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("layerview_row_spacing").height) } } + property var buttonTarget: { var force_binding = parent.y; // ensure this gets reevaluated when the panel moves return base.mapFromItem(parent.parent, parent.buttonTarget.x, parent.buttonTarget.y); @@ -45,9 +46,7 @@ Item color: UM.Theme.getColor("tool_panel_background") borderWidth: UM.Theme.getSize("default_lining").width borderColor: UM.Theme.getColor("lining") - - target: parent.buttonTarget - arrowSize: UM.Theme.getSize("default_arrow").width + arrowSize: 0 // hide arrow until weird issue with first time rendering is fixed ColumnLayout { id: view_settings From 8f2ee96f401ee3813aafde883de127bab88c5ba4 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 10:27:07 +0200 Subject: [PATCH 095/589] CURA-4203 message progress bar color dark --- resources/themes/cura-light/theme.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 3b98ac1ae4..f30026f172 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -217,7 +217,6 @@ "tool_button_border": [39, 44, 48, 255], - "message_background": [255, 255, 255, 255], "message_shadow": [0, 0, 0, 120], "message_text": [0, 0, 0, 255], @@ -228,7 +227,7 @@ "message_button_text_hover": [255, 255, 255, 255], "message_button_text_active": [255, 255, 255, 255], "message_progressbar_background": [200, 200, 200, 255], - "message_progressbar_control": [12, 169, 227, 255], + "message_progressbar_control": [77, 182, 226, 255], "tool_panel_background": [255, 255, 255, 255], From 3fe75d9c9523fcad4e723e6b85f6c36cb938ba21 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 12 Sep 2017 11:24:49 +0200 Subject: [PATCH 096/589] Update default values of new settings These settings have now been tested and good defaults have been found for them. --- resources/definitions/fdmprinter.def.json | 12 ++++++------ .../ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg | 1 - .../um3_aa0.8_PP_Superdraft_Print.inst.cfg | 1 - .../ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg | 1 - .../ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg | 1 - .../um3_aa0.8_TPU_Superdraft_Print.inst.cfg | 1 - .../um3_aa0.8_TPU_Verydraft_Print.inst.cfg | 1 - 7 files changed, 6 insertions(+), 12 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 0e871ffad5..7694aaf3ef 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1234,7 +1234,7 @@ "random": "Random", "sharpest_corner": "Sharpest Corner" }, - "default_value": "shortest", + "default_value": "sharpest_corner", "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, @@ -1539,6 +1539,7 @@ "unit": "mm", "type": "float", "default_value": 0, + "value": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x", "minimum_value": "0", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, @@ -1575,7 +1576,7 @@ "label": "Expand Skins Into Infill", "description": "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin.", "type": "bool", - "default_value": false, + "default_value": true, "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, "children": @@ -1609,7 +1610,7 @@ "unit": "mm", "type": "float", "default_value": 2.8, - "value": "infill_line_distance * 1.4", + "value": "wall_line_width_0 + (wall_line_count - 1) * wall_line_width_x", "minimum_value": "0", "enabled": "expand_upper_skins or expand_lower_skins", "limit_to_extruder": "top_bottom_extruder_nr", @@ -1623,9 +1624,8 @@ "type": "float", "minimum_value": "0", "minimum_value_warning": "2", - "maximum_value_warning": "45", "maximum_value": "90", - "default_value": 20, + "default_value": 90, "enabled": "expand_upper_skins or expand_lower_skins", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true, @@ -5157,7 +5157,7 @@ { "label": "Extra Skin Wall Count", "description": "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material.", - "default_value": 0, + "default_value": 1, "minimum_value": "0", "maximum_value_warning": "10", "type": "int", diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg index 8b85d6d7fb..2051888b08 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg @@ -14,7 +14,6 @@ setting_version = 2 brim_width = 25 cool_min_layer_time_fan_speed_max = 6 cool_min_speed = 17 -expand_skins_expand_distance = =line_width * 2 expand_upper_skins = True infill_before_walls = True infill_line_width = =round(line_width * 0.7 / 0.8, 2) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg index f1042df045..4a93260597 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -14,7 +14,6 @@ setting_version = 2 brim_width = 25 cool_min_layer_time_fan_speed_max = 6 cool_min_speed = 17 -expand_skins_expand_distance = =line_width * 2 expand_upper_skins = True infill_before_walls = True infill_line_width = =round(line_width * 0.7 / 0.8, 2) diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg index 2ddb591127..3cf4d0a244 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -14,7 +14,6 @@ setting_version = 2 brim_width = 25 cool_min_layer_time_fan_speed_max = 6 cool_min_speed = 17 -expand_skins_expand_distance = =line_width * 2 expand_upper_skins = True infill_before_walls = True infill_line_width = =round(line_width * 0.7 / 0.8, 2) diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg index 97deea6740..1b8d71a8f0 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg @@ -13,7 +13,6 @@ setting_version = 2 [values] brim_width = 8.75 cool_min_layer_time_fan_speed_max = 6 -expand_skins_expand_distance = =line_width * 2 expand_upper_skins = True gradual_infill_step_height = =4 * layer_height gradual_infill_steps = 5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg index 7871f330cc..20bbe05e4a 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -13,7 +13,6 @@ setting_version = 2 [values] brim_width = 8.75 cool_min_layer_time_fan_speed_max = 6 -expand_skins_expand_distance = =line_width * 2 expand_upper_skins = True gradual_infill_step_height = =4 * layer_height gradual_infill_steps = 5 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg index 9da9e3945f..d8e5146dc6 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -13,7 +13,6 @@ setting_version = 2 [values] brim_width = 8.75 cool_min_layer_time_fan_speed_max = 6 -expand_skins_expand_distance = =line_width * 2 expand_upper_skins = True gradual_infill_step_height = =4 * layer_height gradual_infill_steps = 5 From 14e10c698735d90971cb8a01cfe08acbfe6cfdc8 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 12 Sep 2017 11:27:35 +0200 Subject: [PATCH 097/589] Move skin extra wall count from experimental to shell category Nobody sees any risk in this. --- resources/definitions/fdmprinter.def.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 7694aaf3ef..f37e9ffdb4 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1298,6 +1298,17 @@ "default_value": true, "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true + }, + "skin_outline_count": + { + "label": "Extra Skin Wall Count", + "description": "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material.", + "default_value": 1, + "minimum_value": "0", + "maximum_value_warning": "10", + "type": "int", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true } } }, @@ -5153,17 +5164,6 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "skin_outline_count": - { - "label": "Extra Skin Wall Count", - "description": "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material.", - "default_value": 1, - "minimum_value": "0", - "maximum_value_warning": "10", - "type": "int", - "limit_to_extruder": "top_bottom_extruder_nr", - "settable_per_mesh": true - }, "skin_alternate_rotation": { "label": "Alternate Skin Rotation", From 9e62c4db15f9b335f577efd454a258ffabd415fe Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 11:39:48 +0200 Subject: [PATCH 098/589] CURA-4318 remove active printer hover underline, theme inheritance, theme names --- resources/qml/Topbar.qml | 12 - resources/themes/cura-dark/theme.json | 200 ++++++++++++++++- resources/themes/cura-light/theme.json | 2 +- resources/themes/cura/theme.json | 291 ------------------------- 4 files changed, 197 insertions(+), 308 deletions(-) delete mode 100644 resources/themes/cura/theme.json diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 930cc7c4bf..e3550aaad7 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -156,18 +156,6 @@ Rectangle } Behavior on color { ColorAnimation { duration: 50; } } - Rectangle - { - id: underline; - - anchors.left: parent.left - anchors.right: parent.right - anchors.bottom: parent.bottom - height: UM.Theme.getSize("sidebar_header_highlight").height - color: UM.Theme.getColor("sidebar_header_highlight_hover") - visible: control.hovered || control.pressed - } - UM.RecolorImage { id: downArrow diff --git a/resources/themes/cura-dark/theme.json b/resources/themes/cura-dark/theme.json index 45b8fd8675..dbe19bd298 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -1,11 +1,203 @@ { "metadata": { - "name": "Dark", - "inherits": "cura" + "name": "Ultimaker Dark", + "inherits": "cura-light" }, "colors": { - "viewport_background": [31, 36, 39, 255], + + "sidebar": [39, 44, 48, 255], + "lining": [64, 69, 72, 255], + "viewport_overlay": [0, 6, 9, 222], + + "primary": [12, 169, 227, 255], + "primary_hover": [48, 182, 231, 255], + "primary_text": [255, 255, 255, 204], + "border": [127, 127, 127, 255], + "secondary": [241, 242, 242, 255], + + "text": [255, 255, 255, 204], + "text_detail": [255, 255, 255, 172], + "text_link": [255, 255, 255, 127], + "text_inactive": [255, 255, 255, 88], + "text_hover": [255, 255, 255, 204], + "text_pressed": [255, 255, 255, 204], + "text_subtext": [255, 255, 255, 172], + "text_emphasis": [255, 255, 255, 255], "text_scene": [255, 255, 255, 162], - "text_scene_hover": [255, 255, 255, 204] + "text_scene_hover": [255, 255, 255, 204], + + "error": [212, 31, 53, 255], + "sidebar_header_bar": [39, 44, 48, 255], + "sidebar_header_active": [39, 44, 48, 255], + "sidebar_header_hover": [39, 44, 48, 255], + "sidebar_header_highlight": [68, 192, 255, 255], + "sidebar_header_highlight_hover": [68, 192, 255, 255], + "sidebar_header_text_active": [255, 255, 255, 255], + "sidebar_header_text_hover": [255, 255, 255, 255], + "sidebar_header_text_inactive": [255, 255, 255, 127], + "sidebar_lining": [31, 36, 39, 255], + + "button": [39, 44, 48, 255], + "button_hover": [39, 44, 48, 255], + "button_active": [67, 72, 75, 255], + "button_active_hover": [67, 72, 75, 255], + "button_text": [255, 255, 255, 197], + "button_text_hover": [255, 255, 255, 255], + "button_text_active": [255, 255, 255, 255], + "button_text_active_hover": [255, 255, 255, 255], + "button_disabled": [39, 44, 48, 255], + "button_disabled_text": [255, 255, 255, 101], + + "button_tooltip": [39, 44, 48, 255], + "button_tooltip_border": [39, 44, 48, 255], + "button_tooltip_text": [255, 255, 255, 172], + + "tab_checked": [39, 44, 48, 255], + "tab_checked_border": [255, 255, 255, 30], + "tab_checked_text": [255, 255, 255, 255], + "tab_unchecked": [39, 44, 48, 255], + "tab_unchecked_border": [255, 255, 255, 30], + "tab_unchecked_text": [255, 255, 255, 101], + "tab_hovered": [39, 44, 48, 255], + "tab_hovered_border": [255, 255, 255, 30], + "tab_hovered_text": [255, 255, 255, 255], + "tab_active": [39, 44, 48, 255], + "tab_active_border": [255, 255, 255, 30], + "tab_active_text": [255, 255, 255, 255], + "tab_background": [39, 44, 48, 255], + + "action_button": [39, 44, 48, 255], + "action_button_text": [255, 255, 255, 101], + "action_button_border": [255, 255, 255, 30], + "action_button_hovered": [39, 44, 48, 255], + "action_button_hovered_text": [255, 255, 255, 255], + "action_button_hovered_border": [255, 255, 255, 30], + "action_button_active": [39, 44, 48, 30], + "action_button_active_text": [255, 255, 255, 255], + "action_button_active_border": [255, 255, 255, 30], + "action_button_disabled": [39, 44, 48, 255], + "action_button_disabled_text": [255, 255, 255, 101], + "action_button_disabled_border": [255, 255, 255, 30], + + "scrollbar_background": [39, 44, 48, 0], + "scrollbar_handle": [255, 255, 255, 105], + "scrollbar_handle_hover": [255, 255, 255, 255], + "scrollbar_handle_down": [255, 255, 255, 255], + + "setting_category": [39, 44, 48, 255], + "setting_category_disabled": [39, 44, 48, 255], + "setting_category_hover": [39, 44, 48, 255], + "setting_category_active": [39, 44, 48, 255], + "setting_category_active_hover": [39, 44, 48, 255], + "setting_category_text": [255, 255, 255, 152], + "setting_category_disabled_text": [255, 255, 255, 101], + "setting_category_hover_text": [255, 255, 255, 204], + "setting_category_active_text": [255, 255, 255, 204], + "setting_category_active_hover_text": [255, 255, 255, 204], + "setting_category_border": [39, 44, 48, 0], + "setting_category_disabled_border": [39, 44, 48, 0], + "setting_category_hover_border": [39, 44, 48, 0], + "setting_category_active_border": [39, 44, 48, 0], + "setting_category_active_hover_border": [39, 44, 48, 0], + + "setting_control": [43, 48, 52, 255], + "setting_control_selected": [34, 39, 42, 38], + "setting_control_highlight": [255, 255, 255, 0], + "setting_control_border": [255, 255, 255, 38], + "setting_control_border_highlight": [255, 255, 255, 38], + "setting_control_text": [255, 255, 255, 181], + "setting_control_button": [255, 255, 255, 127], + "setting_control_button_hover": [255, 255, 255, 204], + "setting_control_disabled": [34, 39, 42, 255], + "setting_control_disabled_text": [255, 255, 255, 101], + "setting_control_disabled_border": [255, 255, 255, 101], + "setting_unit": [255, 255, 255, 127], + "setting_validation_error_background": [59, 31, 53, 255], + "setting_validation_error": [212, 31, 53, 255], + "setting_validation_warning_background": [62, 54, 46, 255], + "setting_validation_warning": [245, 166, 35, 255], + "setting_validation_ok": [43, 48, 52, 255], + + "progressbar_background": [255, 255, 255, 48], + "progressbar_control": [255, 255, 255, 197], + + "slider_groove": [39, 44, 48, 75], + "slider_groove_border": [39, 44, 48, 0], + "slider_groove_fill": [39, 44, 48, 182], + "slider_handle": [255, 255, 255, 255], + "slider_handle_border": [39, 44, 48, 255], + "slider_handle_hover": [255, 255, 255, 255], + "slider_handle_hover_border": [39, 44, 48, 255], + "slider_text_background": [39, 44, 48, 255], + + "checkbox": [43, 48, 52, 255], + "checkbox_hover": [43, 48, 52, 255], + "checkbox_border": [255, 255, 255, 38], + "checkbox_border_hover": [255, 255, 255, 38], + "checkbox_mark": [255, 255, 255, 181], + "checkbox_text": [255, 255, 255, 181], + + "tooltip": [39, 44, 48, 255], + "tooltip_text": [255, 255, 255, 204], + + "message_background": [255, 255, 255, 200], + "message_text": [0, 0, 0, 255], + "message_border": [191, 191, 191, 200], + "message_button": [255, 255, 255, 255], + "message_button_hover": [12, 169, 227, 255], + "message_button_active": [32, 166, 219, 255], + "message_button_text": [24, 41, 77, 255], + "message_button_text_hover": [255, 255, 255, 255], + "message_button_text_active": [255, 255, 255, 255], + "message_progressbar_background": [255, 255, 255, 255], + "message_progressbar_control": [12, 169, 227, 255], + + "tool_panel_background": [39, 44, 48, 255], + + "status_offline": [0, 0, 0, 255], + "status_ready": [0, 205, 0, 255], + "status_busy": [12, 169, 227, 255], + "status_paused": [255, 140, 0, 255], + "status_stopped": [236, 82, 80, 255], + "status_unknown": [127, 127, 127, 255], + + "disabled_axis": [127, 127, 127, 255], + "x_axis": [255, 0, 0, 255], + "y_axis": [0, 0, 255, 255], + "z_axis": [0, 255, 0, 255], + "all_axis": [255, 255, 255, 255], + + "viewport_background": [31, 36, 39, 255], + "volume_outline": [1, 168, 230, 255], + "buildplate": [252, 252, 252, 255], + "buildplate_alt": [204, 204, 204, 255], + "buildplate_grid": [129, 131, 134, 255], + "buildplate_grid_minor": [129, 131, 134, 31], + + "convex_hull": [35, 35, 35, 127], + "disallowed_area": [0, 0, 0, 52], + "error_area": [255, 0, 0, 127], + + "model_default": [255, 201, 36, 255], + "model_overhang": [255, 0, 0, 255], + "model_unslicable": [122, 122, 122, 255], + "model_unslicable_alt": [172, 172, 127, 255], + "model_selection_outline": [12, 169, 227, 255], + + "xray": [26, 26, 62, 255], + "xray_error": [255, 0, 0, 255], + + "layerview_ghost": [32, 32, 32, 96], + "layerview_none": [255, 255, 255, 255], + "layerview_inset_0": [255, 0, 0, 255], + "layerview_inset_x": [0, 255, 0, 255], + "layerview_skin": [255, 255, 0, 255], + "layerview_support": [0, 255, 255, 255], + "layerview_skirt": [0, 255, 255, 255], + "layerview_infill": [255, 192, 0, 255], + "layerview_support_infill": [0, 255, 255, 255], + "layerview_move_combing": [0, 0, 255, 255], + "layerview_move_retraction": [128, 128, 255, 255], + "layerview_support_interface": [64, 192, 255, 255] } } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index f30026f172..b00050c14c 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -1,6 +1,6 @@ { "metadata": { - "name": "Light" + "name": "Ultimaker" }, "fonts": { diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json deleted file mode 100644 index 46da3cbe7a..0000000000 --- a/resources/themes/cura/theme.json +++ /dev/null @@ -1,291 +0,0 @@ -{ - "metadata": { - "name": "Ultimaker", - "inherits": "cura-light" - }, - - "colors": { - "sidebar": [39, 44, 48, 255], - "lining": [64, 69, 72, 255], - "viewport_overlay": [0, 6, 9, 222], - - "primary": [12, 169, 227, 255], - "primary_hover": [48, 182, 231, 255], - "primary_text": [255, 255, 255, 204], - "border": [127, 127, 127, 255], - "secondary": [241, 242, 242, 255], - - "text": [255, 255, 255, 204], - "text_detail": [255, 255, 255, 172], - "text_link": [255, 255, 255, 127], - "text_inactive": [255, 255, 255, 88], - "text_hover": [255, 255, 255, 204], - "text_pressed": [255, 255, 255, 204], - "text_subtext": [255, 255, 255, 172], - "text_emphasis": [255, 255, 255, 255], - "text_scene": [39, 44, 48, 255], - "text_scene_hover": [43, 48, 52, 255], - - "error": [212, 31, 53, 255], - "sidebar_header_bar": [39, 44, 48, 255], - "sidebar_header_active": [39, 44, 48, 255], - "sidebar_header_hover": [39, 44, 48, 255], - "sidebar_header_highlight": [68, 192, 255, 255], - "sidebar_header_highlight_hover": [68, 192, 255, 255], - "sidebar_header_text_active": [255, 255, 255, 255], - "sidebar_header_text_hover": [255, 255, 255, 255], - "sidebar_header_text_inactive": [255, 255, 255, 127], - "sidebar_lining": [31, 36, 39, 255], - - "button": [39, 44, 48, 255], - "button_hover": [39, 44, 48, 255], - "button_active": [67, 72, 75, 255], - "button_active_hover": [67, 72, 75, 255], - "button_text": [255, 255, 255, 197], - "button_text_hover": [255, 255, 255, 255], - "button_text_active": [255, 255, 255, 255], - "button_text_active_hover": [255, 255, 255, 255], - "button_disabled": [39, 44, 48, 255], - "button_disabled_text": [255, 255, 255, 101], - - "button_tooltip": [39, 44, 48, 255], - "button_tooltip_border": [39, 44, 48, 255], - "button_tooltip_text": [255, 255, 255, 172], - - "tab_checked": [39, 44, 48, 255], - "tab_checked_border": [255, 255, 255, 30], - "tab_checked_text": [255, 255, 255, 255], - "tab_unchecked": [39, 44, 48, 255], - "tab_unchecked_border": [255, 255, 255, 30], - "tab_unchecked_text": [255, 255, 255, 101], - "tab_hovered": [39, 44, 48, 255], - "tab_hovered_border": [255, 255, 255, 30], - "tab_hovered_text": [255, 255, 255, 255], - "tab_active": [39, 44, 48, 255], - "tab_active_border": [255, 255, 255, 30], - "tab_active_text": [255, 255, 255, 255], - "tab_background": [39, 44, 48, 255], - - "action_button": [39, 44, 48, 255], - "action_button_text": [255, 255, 255, 101], - "action_button_border": [255, 255, 255, 30], - "action_button_hovered": [39, 44, 48, 255], - "action_button_hovered_text": [255, 255, 255, 255], - "action_button_hovered_border": [255, 255, 255, 30], - "action_button_active": [39, 44, 48, 30], - "action_button_active_text": [255, 255, 255, 255], - "action_button_active_border": [255, 255, 255, 30], - "action_button_disabled": [39, 44, 48, 255], - "action_button_disabled_text": [255, 255, 255, 101], - "action_button_disabled_border": [255, 255, 255, 30], - - "scrollbar_background": [39, 44, 48, 0], - "scrollbar_handle": [255, 255, 255, 105], - "scrollbar_handle_hover": [255, 255, 255, 255], - "scrollbar_handle_down": [255, 255, 255, 255], - - "setting_category": [39, 44, 48, 255], - "setting_category_disabled": [39, 44, 48, 255], - "setting_category_hover": [39, 44, 48, 255], - "setting_category_active": [39, 44, 48, 255], - "setting_category_active_hover": [39, 44, 48, 255], - "setting_category_text": [255, 255, 255, 152], - "setting_category_disabled_text": [255, 255, 255, 101], - "setting_category_hover_text": [255, 255, 255, 204], - "setting_category_active_text": [255, 255, 255, 204], - "setting_category_active_hover_text": [255, 255, 255, 204], - "setting_category_border": [39, 44, 48, 0], - "setting_category_disabled_border": [39, 44, 48, 0], - "setting_category_hover_border": [39, 44, 48, 0], - "setting_category_active_border": [39, 44, 48, 0], - "setting_category_active_hover_border": [39, 44, 48, 0], - - "setting_control": [43, 48, 52, 255], - "setting_control_selected": [34, 39, 42, 38], - "setting_control_highlight": [255, 255, 255, 0], - "setting_control_border": [255, 255, 255, 38], - "setting_control_border_highlight": [255, 255, 255, 38], - "setting_control_text": [255, 255, 255, 181], - "setting_control_button": [255, 255, 255, 127], - "setting_control_button_hover": [255, 255, 255, 204], - "setting_control_disabled": [34, 39, 42, 255], - "setting_control_disabled_text": [255, 255, 255, 101], - "setting_control_disabled_border": [255, 255, 255, 101], - "setting_unit": [255, 255, 255, 127], - "setting_validation_error_background": [59, 31, 53, 255], - "setting_validation_error": [212, 31, 53, 255], - "setting_validation_warning_background": [62, 54, 46, 255], - "setting_validation_warning": [245, 166, 35, 255], - "setting_validation_ok": [43, 48, 52, 255], - - "progressbar_background": [255, 255, 255, 48], - "progressbar_control": [255, 255, 255, 197], - - "slider_groove": [39, 44, 48, 75], - "slider_groove_border": [39, 44, 48, 0], - "slider_groove_fill": [39, 44, 48, 182], - "slider_handle": [255, 255, 255, 255], - "slider_handle_border": [39, 44, 48, 255], - "slider_handle_hover": [255, 255, 255, 255], - "slider_handle_hover_border": [39, 44, 48, 255], - "slider_text_background": [39, 44, 48, 255], - - "checkbox": [43, 48, 52, 255], - "checkbox_hover": [43, 48, 52, 255], - "checkbox_border": [255, 255, 255, 38], - "checkbox_border_hover": [255, 255, 255, 38], - "checkbox_mark": [255, 255, 255, 181], - "checkbox_text": [255, 255, 255, 181], - - "tooltip": [39, 44, 48, 255], - "tooltip_text": [255, 255, 255, 204], - - "message_background": [255, 255, 255, 200], - "message_text": [0, 0, 0, 255], - "message_border": [191, 191, 191, 200], - "message_button": [255, 255, 255, 255], - "message_button_hover": [12, 169, 227, 255], - "message_button_active": [32, 166, 219, 255], - "message_button_text": [24, 41, 77, 255], - "message_button_text_hover": [255, 255, 255, 255], - "message_button_text_active": [255, 255, 255, 255], - "message_progressbar_background": [255, 255, 255, 255], - "message_progressbar_control": [12, 169, 227, 255], - - "tool_panel_background": [39, 44, 48, 255], - - "status_offline": [0, 0, 0, 255], - "status_ready": [0, 205, 0, 255], - "status_busy": [12, 169, 227, 255], - "status_paused": [255, 140, 0, 255], - "status_stopped": [236, 82, 80, 255], - "status_unknown": [127, 127, 127, 255], - - "disabled_axis": [127, 127, 127, 255], - "x_axis": [255, 0, 0, 255], - "y_axis": [0, 0, 255, 255], - "z_axis": [0, 255, 0, 255], - "all_axis": [255, 255, 255, 255], - - "viewport_background": [241, 242, 242, 255], - "volume_outline": [1, 168, 230, 255], - "buildplate": [252, 252, 252, 255], - "buildplate_alt": [204, 204, 204, 255], - "buildplate_grid": [129, 131, 134, 255], - "buildplate_grid_minor": [129, 131, 134, 31], - - "convex_hull": [35, 35, 35, 127], - "disallowed_area": [0, 0, 0, 52], - "error_area": [255, 0, 0, 127], - - "model_default": [255, 201, 36, 255], - "model_overhang": [255, 0, 0, 255], - "model_unslicable": [122, 122, 122, 255], - "model_unslicable_alt": [172, 172, 127, 255], - "model_selection_outline": [12, 169, 227, 255], - - "xray": [26, 26, 62, 255], - "xray_error": [255, 0, 0, 255], - - "layerview_ghost": [32, 32, 32, 96], - "layerview_none": [255, 255, 255, 255], - "layerview_inset_0": [255, 0, 0, 255], - "layerview_inset_x": [0, 255, 0, 255], - "layerview_skin": [255, 255, 0, 255], - "layerview_support": [0, 255, 255, 255], - "layerview_skirt": [0, 255, 255, 255], - "layerview_infill": [255, 192, 0, 255], - "layerview_support_infill": [0, 255, 255, 255], - "layerview_move_combing": [0, 0, 255, 255], - "layerview_move_retraction": [128, 128, 255, 255], - "layerview_support_interface": [64, 192, 255, 255] - }, - - "sizes": { - "window_minimum_size": [70, 50], - "window_margin": [1.0, 1.0], - "default_margin": [1.0, 1.0], - "default_lining": [0.08, 0.08], - "default_arrow": [0.8, 0.8], - "logo": [9.5, 2.0], - - "sidebar": [35.0, 10.0], - "sidebar_header": [0.0, 4.0], - "sidebar_header_highlight": [0.25, 0.25], - "sidebar_header_mode_toggle": [0.0, 2.0], - "sidebar_header_mode_tabs": [0.0, 3.0], - "sidebar_lining": [0.5, 0.5], - "sidebar_lining_thin": [0.2, 0.2], - "sidebar_setup": [0.0, 2.0], - "sidebar_tabs": [0.0, 3.5], - "sidebar_inputfields": [0.0, 2.0], - "sidebar_extruder_box": [0.0, 6.0], - "simple_mode_infill_caption": [0.0, 5.0], - "simple_mode_infill_height": [0.0, 8.0], - - "section": [0.0, 2.0], - "section_icon": [1.6, 1.6], - "section_icon_column": [2.8, 0.0], - - "setting": [25.0, 1.8], - "setting_control": [10.0, 2.0], - "setting_control_depth_margin": [1.4, 0.0], - "setting_preferences_button_margin": [3.3, 0.0], - "setting_control_margin": [0.0, 0.0], - "setting_unit_margin": [0.5, 0.5], - "setting_text_maxwidth": [40.0, 0.0], - - "standard_list_lineheight": [1.5, 1.5], - "standard_list_input": [20.0, 25.0], - "standard_arrow": [0.8, 0.8], - - "button": [4, 4], - "button_icon": [2.5, 2.5], - "button_lining": [0, 0], - - "topbar_button": [8, 4], - - "button_tooltip": [1.0, 1.3], - "button_tooltip_arrow": [0.25, 0.25], - - "progressbar": [26.0, 0.8], - "progressbar_radius": [0.4, 0.4], - "progressbar_control": [8.0, 0.8], - - "scrollbar": [0.75, 0.5], - - "slider_groove": [0.5, 0.5], - "slider_handle": [1.5, 1.5], - "slider_layerview_size": [1.0, 22.0], - "slider_layerview_background": [4.0, 0.0], - "slider_layerview_margin": [1.0, 1.0], - - "layerview_menu_size": [16.5, 21.0], - "layerview_menu_size_compatibility": [22, 23.0], - "layerview_legend_size": [1.0, 1.0], - "layerview_row": [11.0, 1.5], - "layerview_row_spacing": [0.0, 0.5], - - "checkbox": [2.0, 2.0], - "mode_switch": [2.0, 1.0], - - "tooltip": [20.0, 10.0], - "tooltip_margins": [1.0, 1.0], - "tooltip_arrow_margins": [2.0, 2.0], - - "save_button_text_margin": [0.3, 0.6], - "save_button_save_to_button": [0.3, 2.7], - "save_button_specs_icons": [1.4, 1.4], - - "modal_window_minimum": [60.0, 45], - "wizard_progress": [10.0, 0.0], - - "message": [30.0, 5.0], - "message_close": [1.25, 1.25], - "message_button": [6.0, 1.8], - - "infill_button_margin": [0.5, 0.5], - - "jobspecs_line": [2.0, 2.0] - } -} From 1070e99ec2b7bf30af9dcaedfcbb2ac29f5dff0a Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 12 Sep 2017 11:51:04 +0200 Subject: [PATCH 099/589] Add message_border back CURA-4203 Sadly QtGraphicalEffects is not available in Qt 5.8, so we have to use the less fancy border for message boxes. --- resources/themes/cura-light/theme.json | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index f30026f172..431c5b44e3 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -219,6 +219,7 @@ "message_background": [255, 255, 255, 255], "message_shadow": [0, 0, 0, 120], + "message_border": [127, 127, 127, 255], "message_text": [0, 0, 0, 255], "message_button": [12, 169, 227, 255], "message_button_hover": [12, 169, 227, 255], From 3f60bc9287501df4f89bfade395f60d3f854316f Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 11:59:21 +0200 Subject: [PATCH 100/589] Cleanup combobox styling --- resources/themes/cura-light/styles.qml | 23 ++++++----------------- resources/themes/cura-light/theme.json | 2 +- 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index 8f2131bbfb..049c2b547c 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -614,7 +614,7 @@ QtObject { implicitHeight: Theme.getSize("setting_control").height; implicitWidth: Theme.getSize("setting_control").width; - color: Theme.getColor("setting_control") + color: (control.hovered || controler._hovered) ? UM.Theme.getColor("setting_control_highlight") : UM.Theme.getColor("setting_control") Behavior on color { ColorAnimation { duration: 50; } } border.width: Theme.getSize("default_lining").width; @@ -660,24 +660,11 @@ QtObject { { background: Rectangle { - color: - { - if(!enabled) - { - return UM.Theme.getColor("setting_control_disabled"); - } - if(control.hovered) - { - return UM.Theme.getColor("setting_control_highlight"); - } - else - { - return UM.Theme.getColor("setting_control"); - } - } + color: !enabled ? UM.Theme.getColor("setting_control_disabled") : (control.hovered || controler._hovered) ? UM.Theme.getColor("setting_control_highlight") : UM.Theme.getColor("setting_control") border.width: UM.Theme.getSize("default_lining").width - border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : control.hovered ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border") + border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : (control.hovered || control._hovered) ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border") } + label: Item { Label @@ -695,6 +682,7 @@ QtObject { elide: Text.ElideRight verticalAlignment: Text.AlignVCenter } + Rectangle { id: swatch @@ -714,6 +702,7 @@ QtObject { color: if (control.color_override != "") {return control.color_override} else {return control.color;} } + UM.RecolorImage { id: downArrow diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index b00050c14c..c8cd70ff2f 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -166,7 +166,7 @@ "setting_control": [255, 255, 255, 255], "setting_control_selected": [24, 41, 77, 255], - "setting_control_highlight": [255, 255, 255, 0], + "setting_control_highlight": [255, 255, 255, 255], "setting_control_border": [127, 127, 127, 255], "setting_control_border_highlight": [12, 169, 227, 255], "setting_control_text": [27, 27, 27, 255], From 073c2d3335d91c2c8427340efcb39829edb330c1 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 12:11:23 +0200 Subject: [PATCH 101/589] style and code improvements for combobox with color swatch --- resources/qml/SidebarSimple.qml | 36 +++++--------------------- resources/themes/cura-light/styles.qml | 29 ++++++++++----------- 2 files changed, 20 insertions(+), 45 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index bd2c7ab3b7..c2c1562fbb 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -331,41 +331,19 @@ Item { var current_extruder = extruderModel.get(currentIndex); color_override = ""; - if (current_extruder === undefined) { - return ""; - } - var model_color = current_extruder.color; - return (model_color) ? model_color : ""; + if (current_extruder === undefined) return "" + return (current_extruder.color) ? current_extruder.color : ""; } - textRole: 'text' // this solves that the combobox isn't populated in the first time Cura is started + textRole: "text" // this solves that the combobox isn't populated in the first time Cura is started anchors.top: enableSupportCheckBox.bottom - anchors.topMargin: - { - if ((supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1)) - { - return UM.Theme.getSize("sidebar_margin").height; - } - else - { - return 0; - } - } + anchors.topMargin: ((supportEnabled.properties.value === "True") && (machineExtruderCount.properties.value > 1)) ? UM.Theme.getSize("sidebar_margin").height : 0 anchors.left: infillCellRight.left + width: UM.Theme.getSize("sidebar").width * .55 - height: - { - if ((supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1)) - { - // default height when control is enabled - return UM.Theme.getSize("setting_control").height; - } - else - { - return 0; - } - } + height: ((supportEnabled.properties.value == "True") && (machineExtruderCount.properties.value > 1)) ? UM.Theme.getSize("setting_control").height : 0 + Behavior on height { NumberAnimation { duration: 100 } } style: UM.Theme.styles.combobox_color diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index 049c2b547c..a2b36569fb 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -610,6 +610,7 @@ QtObject { property Component combobox: Component { ComboBoxStyle { + background: Rectangle { implicitHeight: Theme.getSize("setting_control").height; implicitWidth: Theme.getSize("setting_control").width; @@ -620,6 +621,7 @@ QtObject { border.width: Theme.getSize("default_lining").width; border.color: (control.hovered || control._hovered) ? Theme.getColor("setting_control_border_highlight") : Theme.getColor("setting_control_border"); } + label: Item { Label { anchors.left: parent.left; @@ -656,19 +658,17 @@ QtObject { // Combobox with items with colored rectangles property Component combobox_color: Component { - ComboBoxStyle - { - background: Rectangle - { + ComboBoxStyle { + + background: Rectangle { color: !enabled ? UM.Theme.getColor("setting_control_disabled") : (control.hovered || controler._hovered) ? UM.Theme.getColor("setting_control_highlight") : UM.Theme.getColor("setting_control") border.width: UM.Theme.getSize("default_lining").width border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : (control.hovered || control._hovered) ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border") } - label: Item - { - Label - { + label: Item { + + Label { anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_lining").width anchors.right: swatch.left @@ -683,28 +683,25 @@ QtObject { verticalAlignment: Text.AlignVCenter } - Rectangle - { + Rectangle { id: swatch height: UM.Theme.getSize("setting_control").height / 2 width: height - anchors - { + anchors { right: downArrow.left; verticalCenter: parent.verticalCenter margins: UM.Theme.getSize("default_margin").width / 4 } - border.width: UM.Theme.getSize("default_lining").width * 2 - border.color: enabled ? UM.Theme.getColor("setting_control_border") : UM.Theme.getColor("setting_control_disabled_border") +// border.width: UM.Theme.getSize("default_lining").width * 2 +// border.color: enabled ? UM.Theme.getColor("setting_control_border") : UM.Theme.getColor("setting_control_disabled_border") radius: width / 2 color: if (control.color_override != "") {return control.color_override} else {return control.color;} } - UM.RecolorImage - { + UM.RecolorImage { id: downArrow anchors.right: parent.right anchors.rightMargin: UM.Theme.getSize("default_lining").width * 2 From 9b33bc8194f20c02dc59a9a8da85f778ada4ee40 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 12:50:12 +0200 Subject: [PATCH 102/589] CURA-4319 fix combobox hover states --- resources/themes/cura-light/styles.qml | 27 +++++++++++--------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index a2b36569fb..71e45b9bb1 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -615,14 +615,15 @@ QtObject { implicitHeight: Theme.getSize("setting_control").height; implicitWidth: Theme.getSize("setting_control").width; - color: (control.hovered || controler._hovered) ? UM.Theme.getColor("setting_control_highlight") : UM.Theme.getColor("setting_control") + color: control.hovered ? UM.Theme.getColor("setting_control_highlight") : UM.Theme.getColor("setting_control") Behavior on color { ColorAnimation { duration: 50; } } border.width: Theme.getSize("default_lining").width; - border.color: (control.hovered || control._hovered) ? Theme.getColor("setting_control_border_highlight") : Theme.getColor("setting_control_border"); + border.color: control.hovered ? Theme.getColor("setting_control_border_highlight") : Theme.getColor("setting_control_border"); } label: Item { + Label { anchors.left: parent.left; anchors.leftMargin: Theme.getSize("default_lining").width @@ -658,16 +659,17 @@ QtObject { // Combobox with items with colored rectangles property Component combobox_color: Component { + ComboBoxStyle { background: Rectangle { - color: !enabled ? UM.Theme.getColor("setting_control_disabled") : (control.hovered || controler._hovered) ? UM.Theme.getColor("setting_control_highlight") : UM.Theme.getColor("setting_control") + color: !enabled ? UM.Theme.getColor("setting_control_disabled") : control._hovered ? UM.Theme.getColor("setting_control_highlight") : UM.Theme.getColor("setting_control") border.width: UM.Theme.getSize("default_lining").width - border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : (control.hovered || control._hovered) ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border") + border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : control._hovered ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border") } label: Item { - + Label { anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_lining").width @@ -687,18 +689,11 @@ QtObject { id: swatch height: UM.Theme.getSize("setting_control").height / 2 width: height - - anchors { - right: downArrow.left; - verticalCenter: parent.verticalCenter - margins: UM.Theme.getSize("default_margin").width / 4 - } - -// border.width: UM.Theme.getSize("default_lining").width * 2 -// border.color: enabled ? UM.Theme.getColor("setting_control_border") : UM.Theme.getColor("setting_control_disabled_border") + anchors.right: downArrow.left + anchors.verticalCenter: parent.verticalCenter + anchors.margins: UM.Theme.getSize("default_margin").width / 4 radius: width / 2 - - color: if (control.color_override != "") {return control.color_override} else {return control.color;} + color: (control.color_override !== "") ? control.color_override : control.color } UM.RecolorImage { From 6b08a435b3e32760c3f59158e6306e1deec40bc6 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 12 Sep 2017 13:16:29 +0200 Subject: [PATCH 103/589] Improve retraction settings for PVA These are new retraction settings as tested by the materials & processing team. --- resources/variants/ultimaker3_bb04.inst.cfg | 6 +++++- resources/variants/ultimaker3_extended_bb04.inst.cfg | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg index a5aa03f1fa..6b189bc6c3 100644 --- a/resources/variants/ultimaker3_bb04.inst.cfg +++ b/resources/variants/ultimaker3_bb04.inst.cfg @@ -24,7 +24,10 @@ prime_tower_purge_volume = 1 raft_base_speed = 20 raft_interface_speed = 20 raft_speed = 25 +retraction_amount = 4.5 +retraction_count_max = 20 retraction_extrusion_window = =retraction_amount +retraction_min_travel = =3 * line_width speed_layer_0 = 20 speed_support = =math.ceil(speed_print * 25 / 35) speed_support_interface = =math.ceil(speed_support * 20 / 25) @@ -40,6 +43,7 @@ support_interface_height = 0.6 support_interface_skip_height = =layer_height support_join_distance = 3 support_line_width = =round(line_width * 0.4 / 0.35, 2) -support_offset = 3 +support_offset = 2 support_xy_distance = =round(wall_line_width_0 * 0.75, 2) support_xy_distance_overhang = =wall_line_width_0 / 2 +switch_extruder_retraction_amount = 12 \ No newline at end of file diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg index eb9eefed0c..769044db0b 100644 --- a/resources/variants/ultimaker3_extended_bb04.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb04.inst.cfg @@ -24,7 +24,10 @@ prime_tower_purge_volume = 1 raft_base_speed = 20 raft_interface_speed = 20 raft_speed = 25 +retraction_amount = 4.5 +retraction_count_max = 20 retraction_extrusion_window = =retraction_amount +retraction_min_travel = =3 * line_width speed_layer_0 = 20 speed_support = =math.ceil(speed_print * 25 / 35) speed_support_interface = =math.ceil(speed_support * 20 / 25) @@ -40,6 +43,7 @@ support_interface_height = 0.6 support_interface_skip_height = =layer_height support_join_distance = 3 support_line_width = =round(line_width * 0.4 / 0.35, 2) -support_offset = 3 +support_offset = 2 support_xy_distance = =round(wall_line_width_0 * 0.75, 2) support_xy_distance_overhang = =wall_line_width_0 / 2 +switch_extruder_retraction_amount = 12 \ No newline at end of file From 53dbf1c55d581f24d3df14f64d4f0f1f6e1b0626 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 12 Sep 2017 13:21:48 +0200 Subject: [PATCH 104/589] Remove switch_extruder_* settings from UM2+ UM2+ is a single-extrusion printer after all, so these settings aren't used. --- resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg | 3 --- resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg | 3 --- resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg | 3 --- resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg | 3 --- resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg | 3 --- .../quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg | 3 --- 6 files changed, 18 deletions(-) diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg index 6b0cd0b200..4d3c299526 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg @@ -64,9 +64,6 @@ support_top_distance = =support_z_distance support_xy_distance = =wall_line_width_0 * 2.5 support_xy_distance_overhang = =wall_line_width_0 support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = 15 -switch_extruder_retraction_amount = 20 -switch_extruder_retraction_speeds = 35 travel_avoid_distance = 3 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.38 / 0.38, 2) diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg index 1c596ab98d..ef50e2889d 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg @@ -63,9 +63,6 @@ support_top_distance = =support_z_distance support_xy_distance = =wall_line_width_0 * 2.5 support_xy_distance_overhang = =wall_line_width_0 support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = 15 -switch_extruder_retraction_amount = 20 -switch_extruder_retraction_speeds = 35 travel_avoid_distance = 3 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.38 / 0.38, 2) diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg index 88814ba2a4..b6130e43eb 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg @@ -65,9 +65,6 @@ support_top_distance = =support_z_distance support_xy_distance = =wall_line_width_0 * 2.5 support_xy_distance_overhang = =wall_line_width_0 support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = 15 -switch_extruder_retraction_amount = 20 -switch_extruder_retraction_speeds = 35 top_bottom_thickness = 1.1 travel_avoid_distance = 3 wall_0_inset = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg index da1b928482..399a3a6631 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg @@ -65,9 +65,6 @@ support_top_distance = =support_z_distance support_xy_distance = =wall_line_width_0 * 2.5 support_xy_distance_overhang = =wall_line_width_0 support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = 15 -switch_extruder_retraction_amount = 20 -switch_extruder_retraction_speeds = 35 top_bottom_thickness = 1.1 travel_avoid_distance = 3 wall_0_inset = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg index b4e2ddfa96..b6156728c9 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg @@ -65,9 +65,6 @@ support_top_distance = =support_z_distance support_xy_distance = =wall_line_width_0 * 2.5 support_xy_distance_overhang = =wall_line_width_0 support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = 15 -switch_extruder_retraction_amount = 20 -switch_extruder_retraction_speeds = 35 top_bottom_thickness = 1.5 travel_avoid_distance = 3 wall_0_inset = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg index f31e0dd192..1b66887dbe 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg @@ -65,9 +65,6 @@ support_top_distance = =support_z_distance support_xy_distance = =wall_line_width_0 * 2.5 support_xy_distance_overhang = =wall_line_width_0 support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = 15 -switch_extruder_retraction_amount = 20 -switch_extruder_retraction_speeds = 35 top_bottom_thickness = 1.5 travel_avoid_distance = 3 wall_0_inset = 0 From 3a098f4b4c1c340463f31020da4dbee48d063064 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 13:24:33 +0200 Subject: [PATCH 105/589] CURA-4319 material compatibility link style --- resources/qml/SidebarHeader.qml | 29 +++++++++----------------- resources/themes/cura-light/styles.qml | 1 + 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index 3cb5ae156f..91f16d49ec 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -351,14 +351,12 @@ Column rightMargin: UM.Theme.getSize("sidebar_margin").width } - Item - { + Item { height: UM.Theme.getSize("sidebar_setup").height anchors.right: parent.right width: parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width - UM.RecolorImage - { + UM.RecolorImage { id: warningImage anchors.right: materialInfoLabel.left anchors.rightMargin: UM.Theme.getSize("default_margin").width @@ -366,40 +364,33 @@ Column source: UM.Theme.getIcon("warning") width: UM.Theme.getSize("section_icon").width height: UM.Theme.getSize("section_icon").height - //sourceSize.width: width + 5 - //sourceSize.height: width + 5 - color: UM.Theme.getColor("material_compatibility_warning") visible: !Cura.MachineManager.isCurrentSetupSupported } - Text - { + Text { id: materialInfoLabel wrapMode: Text.WordWrap - text: catalog.i18nc("@label", "Check material compatibility") - font: UM.Theme.getFont("default"); + text: catalog.i18nc("@label", "Check material compatibility") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + linkColor: UM.Theme.getColor("text_link") verticalAlignment: Text.AlignTop anchors.top: parent.top anchors.right: parent.right anchors.bottom: parent.bottom - color: UM.Theme.getColor("text") - MouseArea - { + MouseArea { anchors.fill: parent hoverEnabled: true - onClicked: - { + onClicked: { // open the material URL with web browser var version = UM.Application.version; var machineName = Cura.MachineManager.activeMachine.definition.id; - var url = "https://ultimaker.com/materialcompatibility/" + version + "/" + machineName; Qt.openUrlExternally(url); } - onEntered: - { + onEntered: { var content = catalog.i18nc("@tooltip", "Click to check the material compatibility on Ultimaker.com."); base.showTooltip( materialInfoRow, diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index 71e45b9bb1..6b6093901b 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -693,6 +693,7 @@ QtObject { anchors.verticalCenter: parent.verticalCenter anchors.margins: UM.Theme.getSize("default_margin").width / 4 radius: width / 2 + color: (control.color_override !== "") ? control.color_override : control.color } From 2ffc5d2b581da42c405f8094ddf3817b01904e9b Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 13:39:39 +0200 Subject: [PATCH 106/589] fix color swatch to be the same as layer view color swatch --- resources/themes/cura-light/styles.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index 6b6093901b..be3e78990e 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -693,7 +693,8 @@ QtObject { anchors.verticalCenter: parent.verticalCenter anchors.margins: UM.Theme.getSize("default_margin").width / 4 radius: width / 2 - + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") color: (control.color_override !== "") ? control.color_override : control.color } From 766bc9ae972e491b3a90bc6ced78a14087678004 Mon Sep 17 00:00:00 2001 From: Mark Date: Tue, 12 Sep 2017 14:37:29 +0200 Subject: [PATCH 107/589] Changed bold fonts to normal CURA-4148 --- resources/qml/Sidebar.qml | 2 +- resources/qml/SidebarHeader.qml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index 27b5b23aa6..ba357f40a5 100755 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -181,7 +181,7 @@ Rectangle color: (control.checked || control.pressed) ? UM.Theme.getColor("action_button_active_text") : control.hovered ? UM.Theme.getColor("action_button_hovered_text") : UM.Theme.getColor("action_button_text") - font: (control.checked || control.pressed) ? UM.Theme.getFont("default_little_big") : UM.Theme.getFont("default") + font: UM.Theme.getFont("default") text: control.text; } } diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index 91f16d49ec..a17c896ad6 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -153,7 +153,7 @@ Column control.hovered ? UM.Theme.getColor("action_button_hovered_text") : UM.Theme.getColor("action_button_text") - font: control.checked ? UM.Theme.getFont("default_bold") : UM.Theme.getFont("default") + font: UM.Theme.getFont("large_nonbold") text: catalog.i18nc("@label", "Extruder") visible: width < (control.width - extruderIconItem.width - UM.Theme.getSize("default_margin").width) elide: Text.ElideRight From 4c9028b3d0d16b3fb6e1e7e4c68f2d180010f971 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Tue, 12 Sep 2017 15:06:06 +0200 Subject: [PATCH 108/589] Remove z-fighting kludge This was actually introducing z-fighting artefacts with the new shader and no added geometry. --- cura/BuildVolume.py | 1 - resources/shaders/grid.shader | 3 --- 2 files changed, 4 deletions(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 9b6647fe43..62a8b8be4d 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -181,7 +181,6 @@ class BuildVolume(SceneNode): self._grid_shader.setUniformValue("u_plateColor", Color(*theme.getColor("buildplate").getRgb())) self._grid_shader.setUniformValue("u_gridColor0", Color(*theme.getColor("buildplate_grid").getRgb())) self._grid_shader.setUniformValue("u_gridColor1", Color(*theme.getColor("buildplate_grid_minor").getRgb())) - self._grid_shader.setUniformValue("u_z_bias", 0.000001) renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines) renderer.queueNode(self, mesh = self._origin_mesh) diff --git a/resources/shaders/grid.shader b/resources/shaders/grid.shader index c44db85dba..ca1e56e060 100644 --- a/resources/shaders/grid.shader +++ b/resources/shaders/grid.shader @@ -57,7 +57,6 @@ fragment41core = uniform lowp vec4 u_plateColor; uniform lowp vec4 u_gridColor0; uniform lowp vec4 u_gridColor1; - uniform lowp float u_z_bias; //Bias in the depth buffer for rendering this object (to make an object be rendered in front of or behind other objects). in lowp vec2 v_uvs; out vec4 frag_color; @@ -77,14 +76,12 @@ fragment41core = float majorLine = min(majorGrid.x, majorGrid.y); frag_color = mix(minorGridColor, u_gridColor0, 1.0 - min(majorLine, 1.0)); - gl_FragDepth = gl_FragCoord.z + u_z_bias; } [defaults] u_plateColor = [1.0, 1.0, 1.0, 1.0] u_gridColor0 = [0.96, 0.96, 0.96, 1.0] u_gridColor1 = [0.8, 0.8, 0.8, 1.0] -u_z_bias = 0.0 [bindings] u_modelViewProjectionMatrix = model_view_projection_matrix From fa72c47866b2f607fd11708707c9545ae1922d2b Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 12 Sep 2017 15:41:20 +0200 Subject: [PATCH 109/589] CURA-4203 update margins --- resources/themes/cura-light/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index d602cc96ae..09e8542fac 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -358,7 +358,6 @@ "tooltip_margins": [1.0, 1.0], "tooltip_arrow_margins": [2.0, 2.0], - "save_button_text_margin": [0.3, 0.6], "save_button_save_to_button": [0.3, 2.7], "save_button_specs_icons": [1.4, 1.4], @@ -372,6 +371,7 @@ "message_button": [6.0, 1.8], "message_shadow": [0, 0], "message_margin": [0, 1.0], + "message_inner_margin": [1.5, 1.5], "infill_button_margin": [0.5, 0.5], From 48cda42ece6484d0bd9132c61748442dc740bf13 Mon Sep 17 00:00:00 2001 From: alekseisasin Date: Tue, 12 Sep 2017 15:49:00 +0200 Subject: [PATCH 110/589] Adjusted scale factor CURA-4215 --- cura/CuraSplashScreen.py | 10 +++++----- resources/images/cura.png | Bin 117044 -> 55074 bytes 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index ea2538d1ba..6c82a671c7 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -15,10 +15,10 @@ from UM.Application import Application class CuraSplashScreen(QSplashScreen): def __init__(self): super().__init__() - self._scale = round(QFontMetrics(QCoreApplication.instance().font()).ascent() / 12) + self._scale = 0.7 splash_image = QPixmap(Resources.getPath(Resources.Images, "cura.png")) - self.setPixmap(splash_image.scaled(splash_image.size() * 0.5 * self._scale)) + self.setPixmap(splash_image) self._current_message = "" @@ -56,7 +56,7 @@ class CuraSplashScreen(QSplashScreen): font = QFont() # Using system-default font here font.setPointSize(38) painter.setFont(font) - painter.drawText(230, 88, 330 * self._scale, 230 * self._scale, Qt.AlignHCenter | Qt.AlignBottom, version[0]) + painter.drawText(230, 90, 330 * self._scale, 230 * self._scale, Qt.AlignHCenter | Qt.AlignBottom, version[0]) if len(version) > 1: font.setPointSize(12) painter.setFont(font) @@ -67,14 +67,14 @@ class CuraSplashScreen(QSplashScreen): pen.setWidth(4 * self._scale) pen.setColor(QColor(255, 255, 255, 255)) painter.setPen(pen) - painter.drawArc(130, 495, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) + painter.drawArc(130, 380, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) # draw message text if self._current_message: font = QFont() # Using system-default font here font.setPointSize(16) painter.setFont(font) - painter.drawText(200, 295, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignBottom, + painter.drawText(180, 240, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignBottom, self._current_message) painter.restore() diff --git a/resources/images/cura.png b/resources/images/cura.png index e1954c517219b7b6132a754dafbbfa17db37d419..ead100b28a9975b8cf983c10b6507db43897f17f 100644 GIT binary patch literal 55074 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 n#snzkV_jrtTrLX4#za@z(X#oSoH16wtkk? zqwjp24abHVFMRESQPaO~(jn-)sk8j(G@wH>gub}h0uuhFZXQpNTOR7cKru#b2IgCu z-ZT27A906~Cxn4tx2p_4Mi_m*T{gBQWA*^h5_SguxI+wv@$+wH#WFOku$;^MFzH;# zMw!G)?lW(7VXWh6=C*_{`$f@n3LXZuI$&7^!ZfO5JFcXm{=YFWTPE%dp*0Zl0C?<0 z>?w8ehCmY=@7@DS30eXN#T1`-dVLvgM+fYwV#Gk!vrL5(_5`O~U*Q%odSoM~km`WC z=_C~o{Z4?JQgK9Hw{d?f47t1LDX)RsIu~x90g{Fp*Cg08s)HCfgnC_?2Vx^v{^las z^v05AygLeB?#h8~B1J(qRzlLjz!W3QD(@GNaPkdqGZKQx>16UCqxV*j49L}0*SbD* zv!WQ^4@PzT^yz1Ovj~R7fM$*PTai+*wEOV$N5FvPCAGnNMTH7k&F zo`HXl-14K7%xAoMbr9|8W{qbIa7AH<0H+N_v~gM}=E$M&W0@n4_axfnY$oFbW9R)V~SEu z?F;>tN~+d)*5@Agh&q!tb-#l(wzgxA!^SDATgA0K~o*51xaK zb-=H-79^#FaYLefrK$|{T*sJQuu9JEVlMo$87kld!ZC7?^tDuI^`x_4-Q>PjFp=xV zzoi={BJ-HVTS|+|6{EYit@cfs0gZ{YX9=HDt_%dHRQWlXf)zf2z|)V(akk<9@4{)r zq#w09Hdby63|P1kfJn@KoM12_AO??78~cF5I%3T< z7L8%!bQMc4edR27AHAi&$YXG@JY78;G=rH#n9dH5o&Y-X)qAS>N zwA_1?Ge|NNa2w1E#n{8Ocit(=#Itl}3d^Kglv~&TR8~~_)Lmz20NUkkGhW zaw`F)thRO=XXiSdVwaDFjAiT2z~Y#t^H!;2!9vGRhPylU%OYA(R1>}7@1t^2N%*h4 zb~p)x5gYZ^io|XTM2%8dAqs{Kxi6Kwv}{br&u|RfQcWk|CuvjW% zg9CoXndk)NaC0T&En}8m;nz{U5cFfX0@!D5@s`Nc#oxbwUtrxgEzqQB!^kcolix{{ zME+xF^+)vAr%oCAOucfuJbFWRBL#?Ywi36#H+V=QS~Zpn$)^ze>PcXR!@H4ut$6)N z%r-=OY{SfwaSHsyS%cccMlq5Jy3u;; zmWF=7a5`^DK6({M6EUT8D#&{2RqHiaZH6!Vreto30>wVQ;<|sSL$O z$0D1%r#}{&d~_5;8xd?(&0n@*U&c1wzh84L`>lJzD!qGs3*$$8k1fp4Z}O0ILz82~{qKC3i^i3yDQSxbF>J#8`&@1wxmNYK zPR;SWX7|S2S;B4hCIK;pTL|kKRUg^UbuUH9iMK@YV#hfa@qGW!{ZXI`(_S1@D#j_)4O3S*Nm7)4uASJ4)A` z8a^2XEB#l?bTiB+epSMfZ!-W zyokGN>zm?t+xba!+5=0>D+;2#qy`XM8XwUzaLtFfk=7(IG7JW5nP|Z|r8FMNL;MaQyW`2xYsw?j`Z}g*N>F@je!#LV%0D8W@0rU!<=hj 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 literal 117044 zcmZsD2Urx@wsiptDu}cRBu}FvN>XxW6h#n0fhI>$keq|WR!3)%SGXf4}eEJJVEGov_c^YpuPjZ=F+D-oA}>8-`)qRZc5uV%TQ* z$4$#yXyO01Mb*oqe{(&qqP+$FE>zfatZVF^c1vquywUCce*6#=wcN;AD-E8LG0p#u z#U4B`JiI<0D|(uwN?HsJiRWG5>8tcej_x7a1 zFtu$oideNyNzcUR7{|LLE4g|h!`r0P<+b&D?(e8EEbaVVk&zW*Eu^7|JKL_l37Ardym04?k z_jsAqP>6EXj&KJldU~m$>p`b1B-t4!4{^XkI%U|weNqh4+wN$pPTnTXoGDDZ76PHh zQ9N0`viD3N3_3jZkiHp!!zs9rv^*Ee>mH9kf}Z760Jm|fpC9XV z?Y*^&cm0GC`{ACPQ!c8*0#ZY|3oC285-s3P_5V==o3z0Pu`#Z0(J4(~F|4N=5i zJ3v2$Uy>#hI5~=8^TP;iXUL0Li zou!{J%g4Qp|G=FrUeR)6A*nqM75qc1%DC+3Znc}1w98ET0^lqQQO1q--a>^yC=R8mqR5Gr=#0$6YwhkK6IX{yHGBCVB~ObSs# zJNG5b?Kz;s$tpIU3mHze{Fjxh2tQ&?!5GDCq(7Vw%Z^|U8CF+U*Y;CYXH*N{KO5Cj z%^aKa-Vus+Eh&PEn|#-%up8zagqu!l5)hg2O4liQ(mn29F;LbLX>*)9H-Rp2=>Lne=7Pyg4*mgzYJ}p9PB5t~k)S*{=!_nDO)!H<( zeI>W)FF0hgu+YLXBe2l&_+BO)n`+IJy)g@pF1qgP_x}wvv+teQrbw#pLPy8?hK33` zyopiqjpq4m?=t_Xj%-do?HsbthTxe!8`)8oZV!HV=&Wy;HW80o# zUt3!{d5aXFS$spx{fv@PFARnfVb$?l1#P%uA(T|~r13I41es@e zFf3qoG%O$=U=TgeKo2fE-;I8BqIhX(sdAy$XHu7f3xg10X0P%M(kuBAB~Dfu4e!1E zLg+_;*(aWW!AuXrVBY3GPDu%f&|I!~wJ@V!D3<7^pWFGd)N``e5FlSU@jANDoQBDa z8jy;2C?@j`DF7CE`u=Yi?0^PzJqSnK+U!sWz~OkCWEJ6HzWOw@OKRvu(5bhN{* z#Tx5(QWb8ZtUWz8`6k+Er4ON#Vd2maCpTpOv1odSrfLPJzf|Ak$i63rPN?!3cOfk90enp3f&*lc(md>ITEFy_ zvu@f3P@h2f7F_WW%n0i369N=ti$K$^%Cw5MaOjH6_-%z69=pt>qf&ZmB*yJD@o@NoJ3|NeO0A^jR{VS1W95?6kiu=!*+j$s(U01xt%8#tC1sRh zzi{2O>CxQ^nfd7q;Z=*(QZra>0-^N?1&4;}X}QVL-DN%t)em?z%Ej=40zK3k`{97R zeZU)V$=cdl4{eI13@s5Gebzjjr<~BZ9XCDJB;Z6_&W?+iTUpZxN9a)>!^4e@J_Qiw z9rATm8iU(dT{cu=_nK9FWB*AJ;6rUUEb-{0l#~eNs&4#%3XGK9F9lM)g2z}#1Z6bI zH87ekRR9J-yuT3s>$XC&&9~1nJH%Oo=mIN04XM@uxN5wIieEtD-B945L*UMjw-ue4_vO9%-Fq=zy>1eM=|^GMJpw1(lPCwVTEyV38S>I`iv zH_2Rxpd7XUGdM%;EvYHqeoCvOQ)OYDgp+^buh&0t3)eiqmHDr$tE=5S1FsVe&F&g; z;R09I)^*Y3$!P#(l5~GU8Own~fjkOwd48wBzUoG@Rcv&9ej>X(^p*rm2EUq!GXoL)-i?C)W zH7y@_%#q(SJUQk27Gbi4bz!$gy_6|4ZllPJ{{5qFI6m`S3jV8^=va~SAoWbSL%J&G zO>{e>wj47TDhLb3-{wA{iE zV6_*%#5e|%tU?{A)HPI}$GXaQTo&bIVGN8v(gPgj0Wck5SAdR&uQ7c%oS|wVX2qL0 zTTUt}ZXcC9ht6|#?1C{>?tTzIT`@EFgjcWM3U~Flu3yT4(0W2y@d?QF@BfkWnU7g` z$}2Z)kDCs-Ic^oXHwfb1GWW{MSFc_P?2upVr@%0a@;VcPT3M`&rw(Mk_T*6iXKwUa z;+m?SiJ^ky9wnaPXq%mZ^F`VKR6PV%G{~2j49nWq0!R#5TK43R4 z8b&`l@+T4tGXlF#YV6}!@$zI@f62f6Tq{}K4^ka7B`BTYG)5i0n@-qLvq*ff6$j~lTEedZvIc1*~f_!66~RVA3AE2-z7v*TIi6yIEHPiZmW-# zi7(E{aoLZLGl6HRC`0PFx-wa@(T1MoBq*y&cb5WXF*C|M7d(genpwuiYZjMw+L>el z>O@C`hwG?9iX(TznY|keltD6aHi;B@q=$OySwm9j{G4}L1!d}1?_dSh#bNFxe2E(} zz5&$LXZGN9#aM$rIZ3X%4YNQ3+a-=&%?3s;$P#o4s2MYy9WQDLrK%(UgTKSV*rwZ{ zel*yEPATIDN+9rJk_Ph)#&0_mu6#mco>GE6cmny~oT4!ys3lMQ2YsjX0DXy_tv30L z%2k1{rgp$i4*5#rCx9e0P!vSS>ofCLccQ`i@FfQ9@n@n^D+iwUoB4oPzi9&xnOqEH z{C}~G%)00W3V8Jw_nq>D(YWVkWlhP=d9R&Tk_FB}W?fdLa9>Bt!r*9$Wa$^*p4{;- z)=34aRxi{;oyGZIkrinVmqpo9fUK9PcY*GG+{Q!K-om0H;B_$V_kzlbM6q0?)x;e> zF4FNOn(k0=!YrHTL!0*e&VUb*x!znAJ5OkxCwZAFt?CW$B_4HN0bafiXKuqCi8aeR z+ZD}P-KAqE0o-=t8V>bP3!n06v&jc#oFK!_SfK|elh_HIRF42iVdYv6u7ChY!Riio zHgUV6EnoRdAOzERvW68F*s>6!Fg7bc7!IA3gj~HVf{0U&>r|p`+13{!gm8JlOoDYM<@5po)u zU*eeh)z*5lLp*PM;v%QiN^SW5hQDfba9FJk_4GPQ%`0zi+;?4H0u&J82Kz_CzH2th zXX3?>Ez|Z79UB>%LL(;jh=<W`r2bFM}Y;X{M z;uz6+`ql5iYv$5{Z7P5LQ)33O<2Lf(>3t@u!(Fg3x*U*%LA+zwT?rb+el~4Fz6jpo zE@={ClDupAHz$HP4SZl~0qnYaq#_tD9M%3jFd}|tdtdwyBceKFyCOFp53bo^d@nn0 z27*NLh(vOz;N+Zl4~pBn%n-Mr*eZ7698rL%%&*4G7z4R{f@U-LnwI;0)-NCfS49_Q z-1eR-2NgMad7?-?C|;o@3MY6>d|YY?3kw6_orM{s-SXkN5b(=?c;~WdljS*3 zJ)jvAaM>j=XIo2KC3ckJ7k*FimpZV2_B8`CB!~9y#<{|H^(5jmT5VRqJd{K9PA?#s zNFM6|mQ!(tZ!KAPl_pY5L6$X0z8$`VQk&UYC*0ys6nm5wGvfoKto4`1O4~uB80iwL zK4cAP_Oz0(E-2jU>P85U{&j%gd^CC61{_o51#p#;@dG@#Mo1Q9y`T0&soC$`*K8aH z%{TWgI|LHoO_=-L{DxCi>;4rR3W!f-iL+B(9nOW+D;>ma08`5Yf^fvA zte0Y_WJxn%=G%{fUA%uw$)U1+%h@4 z$!u;dSG>Lsex1hjlY5)sDbk< zEFy1`+RErr(qn>fto|+)w_2on@{Av4k&TQXcplD#k&06KCj0b2fe@RAaAuL*u*Bek zy!85fj~~->jK&XqF)XmVGEyDHrreehqYzuvfoG`!?^}}^g3*)!fRT4~=)=qa3nn02UO?Fr2_BXc zzwj%h)Q$r?`1Viy?Z*XgC3{iKvY}NFmNaI^%IvOOS(S!5p)RG z!P#)vB(#RK*yM+ttkQy6kRywPhkTzkUIyd(69>ZYBrwbL=m-SkJvgBB2;_y6aokY5HUs&YGz$x{&}tLtS&!H8_<0cV3W%u+55toPkc|EL@$x%y z%)rlyTMOjy831K-FU_WIk=~$qJ&1;U6870ib@(jqDBvcR^rnt4vDT-|q!11?c|Rbc zPR-4f6n~+_*?1s9m`?YMYrQ9d;BF0vhp2LqhN=F1a`OwYBFcF2CTP2pj3G^A`iIX_torYt5quaQ9lf#^+T{2T zk2EICC{3}6247MvE)ds)Z)mw=lK#XqtejB4R0b4m1bCtu41wr;0o#)N7!0S$%c8|c z@o_-tF)yPU;K*0ul0I}g?$X2Q*j0q0P8u)28^;_53MuZxlGIQwxS*R$JjRQ!fccUL z(ooS_9Q))9s`3Y{t6zrAr!v#Wh{uKXN|*z`{9V$wK3z~I-q=nY}KzW_rOm09?YYJ)4>Gtl;ApH*e+`*9?7&ouvC7Ux`R-m{^oYYBpu+kB;{Z~JA@`` zH%7(nI-KSj6O_3Q!?c|ag3vJA{*#SusZ_ws=1Ttn;FzuOq%aN{57Dn*zpg_;&>CXX z%qCr_YNN!yyP&TKh@A%Vo4xR~M75wBH*QQmYaa#Wb02_#JbQ-E?;wRkt`ks9*9>mi zq6K-L>v^jU*Bw$aBy!C16aX+Gp%I*iN{t9~Cw_74q1W$VMz&MsD^tKTE_j#Gp{e?c zC@V%@1nbG47vH-R09f&FsiF7=sXo8Plgw*w=t+*2H2>cE<&^zIGt4)Z9q0Hl&$`(b zh;LkG7(9$5j9sJ#B_a2N=74~NQ95}-#R5uWKzz4gL>_LnP};fGyhA)Fx#>4(595>$;BuDtOd5IgkwPkXERHTLfS zvYLWVCGh-UwTk8or>ZW&)HM)-HCOVGcenni0{Thf_oBtSdlei9@J}6jL3X9zxpPOI zd9Ti|UVsEJOUR#dsZJk-)B)8@wpT0bKs91DfZeV^mX8CDM!uL!^`^KRwC0teSkK;W zP1VfpCoaRjHog6=;0v37Fya&a=*XXCK~O08q19ff54jh1`yr$dzQTa%O8}4ACpE;z zGcW*wjqUoT2Z!y$xW|SeTKXKXO_A=64ut`K4XwT;b(}|e=Xh+qYx)22As#@H%~k-| zMHFdq+-Zyk>cAg?IL*74^vEDCJlFt#x1`WCP-x1CrgboYr?S_jo{lZ3+6m0X^B`_n z9B&>=yM>e{#O=+P87K`?VUaFeQc%@>nV6WkLb=yl>|cT|p>;vIDhQXI3sWKAU5o~~ z4JE%5z~d<89l!@v6ND4{7N8old;`Ue*Wm(&Dd5k|m`q1bpavrQvkCAlF0pQOnhf5!(=o01(anoHC_MR=I zOc5S^Xn{sSttQ*A%#YWl8y1$!;4=_LlJz_PW;Fjc=YU1RL9s}TP$ni4rk{J4 zm2ZHLVv3M74G>utkj+0&C)H2%N46#snjzpIeU?Gye+{-exhtFM%^)1nOf?ErpfrM&ZFu4tCg191f1zR6>nB1=fUhGBo(ga*+QEBSPgI zJ8%L$c?RMsW{MpLSJ0`ziHeQ&jZBz{(^m$}O790jGiJs$fJDd09ku`E!2PrPu=;0E zXObB5-H$IvVT$egG6Ags5L#;&ARzi@C8>{HM;#8JGpFCw#!_MZY6yZ`?8GDJuD=|g zeq+gv30K=;^^renf_?vd62h>d2@BY;{%nhyWfV6xmY5`u;ET`qmjXGxzbTxmdW@#6 z7M4iSTU>mwi@rXzL=jMI|I^(7V`=95PocM;Z6Buo0#sWWC1;F*cZrc(R_;)`Ai%BI zf=%rxrE|CqStWiSaL!=T4fLS*|NN)fhJ{`nOKyR+h3a)a<%*|SL^t2k(eUY6z*9a)&}64Y+aSW^s(S zWum7HZ1lgjbUqhuo;7F&%c1k?BzP97gVBZOp+ zqTOuI{||e~qS;iE`(Wr5`*0Pwb%-M2o{2PYPKtXbVj)1x3_37&SJbFw*Hb)ajGL}S z;6t7@d_y_Jzc_FtEv>3W+HW;MC`eOrJ&cZ)aqIJ25J0P~0+E)408FV=;YUtW{5t?l zAvigZQDDf2X~;*R68NjN0o76zfjt};S{(tx`2NXS`*}2A$}kq28Wq3{BA=C ztFTk;+l9Is9AKi~jW#TvoK%9(T5ZaXCC!XuJ24}=KeQ!g`Th^<0hA2Z-iFkr1b$r~ zKn9C6S9YzB5D*lECax`5s2Nst>Q7FFai79XCjr*3)j~CYyfe0gc+ z6YZ1Y)C5TK%KHMv{$|nEV)!KxD|*LTT(U0*l?#zY$Sk@EB4j>e!r|+`8XOUOk0Vj_OZ+s;PbkSEuND)Y|KAQrWRA-2r6FfRp)LM_ zYq>mLkTP1eyDQM?1QFJ&19vIsP*&uG7K&O*M^QTECg%&1LIrLAWBK~Zu@OVqR~G9? zi$PNjG_b35ey)$31w_+R3I;9_9!A zf@kwOx%>+cMg*m-o0jreCD1B92d-$l?RAAsrCh1i2m#X}_lw&;7=Z*4Tf90%8N z{cx66on^mM8^dI+vyS3TiZ9iMCp$n7lLar(T77udTd}txm?IFczEf2wxr60@!ZetY z%6Va{g&!Vtp~-@C@}kqupBw+9ctd7It&E&VPgvO{-+AO{V3k)?1u84|E9exQ)&i4Lmcn;i%8^sA5N zTrY^O1=I`Mw?5uiegHa25SkGAoJw_4jT^^3p!UCsm{WZL^ZGx)rFJhy)B8;QQY*xe z66AAMv~m|noi5F%I&5nqrO)_ukU{rSazOS$A_ zzI>{0;DBL@`?yluN9my2-UhZld0B6PsvmJJ)bI+jdDuHZ9PWU_W$(u6f+Nd=9^o@8 zjn)j+_5iMYAcam3tlAU1)0;B#sdksG0pZ#PgiJOh2&C!~HSd-uxkZ50ozJE;8voJF)Z463x zi>BZan$4wkVopEJaa*2&1GaPf;HtFZjWE~s*4M9J7ov;Y)81kb#y?xH+6G49VOd}Q zMA;$BRyrcIYoAss6~gb;S+PaeWK7gbnHCfkc_C?D-9G zv5)bt@_A4$H-#fHwOBv01)3nC`w9VsPgr|-a<_Ef>}j$bnjv#f)m_T0QGC=>gZ&hN8`C7_@3g0{9?7` zjn?*~4U$G?iVAzrVj%>JhfE588^d)q4XV7`MUwwG|+ zWnc1;kw5OEWM`0!*5+W}|Fsj$!sXg%`+<6`+bgY(cvqw0xUb7nDhLg*^O1zU9I6gT zogeMQ;Y?KMJwlTo&f)n_3Bj^X!VVMU=l6w{eubSl4ZapM!SXblII8W+LiqhESTXpt!QZ4qefdS-W+!;DmZ|F4byD zK&L`BAXf}O$0p%%P3RZGxyZ+(eu*9)7zLa5;0?SN0$cSKS~9`!-UvgVp+0x8!ag6sIqN1j zFFmAuhM_U2}EJ((Vu5JuAG`O?SLVjH~ zvYre4R7X0^U^*oNcKwK;OK;J(PML&?IHF~?c% zzWBPly8bQMkuLCseEU$bysOto$HKB6aaTy}ywy%+U)R=4^F>)0;wC*LKgQ5cXDeFWtTnCdklkl`z1P@}lh{Wr$l+d&1(4|dE}17O-= zR}~+HP(J=Se%0ICZknr!oOShpvUX0lImT`B>n~B9kI!8ua5ELPz)+cXP_`Gt4xBGG zXQ5YXW^YZ?7pXvB2rt@1nZ&s#`r-Ld37>!a{{6>qFjmrLj~|PqDq1NV1%<;sR~60v z?bgS*_x>CddBcjO+VDOt6iR033Ue`{*8l!Nzs)`TQu_8y)Epn{sWEkP6h#n6nFI-j zLBD3vns#WO3q{X2_&Ksgxf4zQ!io!MoIPv*8Pxzxi*gKd6^A{4&xh9&&c_V3~9GT4Rvt{q#{1}xkvrnwK>b+r({AvRgLpw+|U__Zo|FTMs>MGwC;Rel-NuO2d(1U z>I2;94_H;(&XAgBUJ()32M`9KYGXgYP$0N1u<{7?RWdh>=g`BS+n^Yu7e05heY8vr zzEA->7s~$Y3+fD&-#8fqbqSd!YsX;g4oUqS6O*YmXNc8R>!?AIW5;%WWTbhtXz_FP zR`=b%$u8;CPv0!s;4Z^J90;P~MuWm8UMM!DC~^ywm?QW5$?h)rCsQH=AR3_o3oX_)?0#wLH*d-+`AANyMM*(AtN}Xv?>OB z8EDziYBWOQ2D%gR)v#=BPPyn=*GR7oM(%A!)RZ%=_-Wzy(|gE!5kdg{=SCkoy`~S7 zuB5}_?UwtwJ%?CRPJ8phbI+=%@D0JD?{(YfSRq{~Uizfa9KzhRXTtW0R)sm6487U!PglMJ+)9ll^{8`sgK=>SL9{-d2{D z4sJ5^*ut-)aN%7}8a?pu5y}SfV;?Jj4oVfP6z;t*dU>cmR-q_%v!ZYI&%?8moRc=n zUu$4k<~reU&Dkq=?t3XyvEdL(tUKM8p z=B9G|__b1#Op7)6pH=?~MlSiZbB8|b^?6NsmqEbhq;>cmUiOt=T3Z+K|0vABA?2b3 zt&^5gx1%%@;oSo{>d%R97JcRYzQ5&70qa-W@8%A!j0h9& zw~w{a;`N%SNLXFER5psn@%`X|13^wQN-7`nthMCUW}BT&7p~C@o&)P{u3l!c%5S{S zra39dBw%fhdc4ZI<=H*KvRTc#IJxdNXW5Fr%m(?Dv9uFuxi7v(+2&n%y$wt-ffV_Z zC%wIkzc$1Rg$#{_(AhUWx#8mC0)M_Oxt|64&dG$R4lyBNoTd9#qEs@13I$IqvZXHZAW=|d2InTH?#7u zH9b3@APO!cslDX${WGFI^JAn@^)FC$FsAuq>(65>nG55 zUUg^>lT>DVDsXn0u3VEc?*sGqU~wK*83;Z1)X`}>4ERdoEW~Qw9*8g+7+DTcSoczD zAiH!yMF!8guF|x&&==4)_$pbm(4mK9tIm7$=y_%nug4Z^>aT}p_@t!tuPQ3;Iilk> zdoA*sP0O?MRh0@V#WVFX7XQ*_Wg5M330`o!An_OED%`Kc(@Ayi^K_u3dQMJ`kukJi zq(WzAM%wtaR|~ui*qzU8W&qY0dw@{{50Mv{{qzGKN8+Lu`WF zXnW@5Ww1Di_@tmq`nG4A$G$)u&I@CAA3PMXvVnp^hGmv(Y4g^%Z{MD8g@Y+G5C!}7 zElk(smQ9aoiqVT4i?aRCp(wUlUV7yXPe|35rF)GG)}2(OSC;+ctHJZB2KgxoYcRXp zkG9=6*$#9qRr~pU#5C@iV=TN^u3WL{Db8=pG@UfKd6~}HBTUd(I%Qck>~Loa@*>6H zy~}59!8iW-XH(EVk%Ld7hT;R{zcy?(D)C59FNQMf1D*&)Q8>s+0E35ld27ZG!Lwf9 zzNGKBYv<0k$fV(VoCsF1_>uA4eRgTL({LgP=?3}QnI>f#H86K_l|6mBzxBD6a-aW-{asBJ*RSsz ziBvTBjA%KZ0{%O-Rp%Ge^m9)^B`A(n^ztLk(v%b1?-@j|~@I01v^3L9Z zktlI{)@G{y+k1}WIrhmDo@*X>QVb)0eF(=?cJ9#A)>K{FxslfUPh(=(DG9!QN`*B% zHrDTojg3wG`}gn9I?z!&d9zc|4)BY$_I}Y%vX+kd+zwL*XxnwZ?y1UyJRpNC2Ts3@Dszb3E?x2d>^rc0oTTb`VxhpiY16!?cn&C$Vp3Mj$RYg{ zUbwLVqmp4AzKO-C2RTW~_KDWrf|w1^2SC_bNJ9l&w4Y&qvM&>s@dcFQU@sakoMv@_ z7zI5r_8=^5Pf0fe)$T3IMD%=2k>7~h8mPk$>TC4s2lv6MRG*l$45~HzDjYbFSln$+ zybses*JGr7;8z=|X2M>;9fpS7>x}D(G93 z{G?&AAlAQ*-1s~3OoYyL+U?rqzDrvEvVZ;c_wevA3S3}9`4`{ryku!P^5O9btFh6U zCBQr$RG{2Od;R;8`i91HxEp#VQ1US7J(T$}G^9M|N{u~Yd1j;ERsxlSoJ;zikeE2! zWth%sg5(-_GcdkU&%J3hziQ4h(vh7I=QrP}RqhP^K`7JD zj^#ESmXK)AcBi>YWEHo2_Vnpfk}VwmCrM|cQ?#FJc9mYq4Hq;{xk1m2-VO`?a_1j& z7U_kLuC1k4TnVW7 z!s6pIA#jHw&)o1P5m+GM_IQt`7jLYu1V|`(e|=~*`_Z-G#k%cfmYZtL+7Aw%Z2=$N zeXQerBE*u@8YKR?YBtAjGYtyug>brOhR&n`OzS3`3d$jr_^o*KxHiZwf3Fn^SjdLe zwS6CX^!v&hZb1%3ZppZ~fKky09YFv&9MG%3?;C8s{<0TLaieh$?nnC}_NxAdriZ!r zA`Q=w!{g&N*=r1upzx)}#npB0YqaCY4Q7)M004HG<}5c&e5X%Bf5>oN=CqeAqA{~I z3hUpL1Pz-B?=~g_Ua|=o%xk zSS1y!oo*nuHXRbsG7dNC;&9u1zQW&cJD2?G(1t%i<1F;?*Z^5Ly0TUQxG~qFrO}z8 zapp`jn`7x?;6=kjV>it&L%Z}yTYB_(IV95dyZb~$9X?71amsahfHidc-VA^3a+7Es zPG4U?;ehk|Eu_CHMeFXbFs6~LTT{Y-uw5!yuiT-~0^rQ9rY#Kk(B?B)W>wjy%7P$6wlQIKcQ~SyDdp!I63eoRA80LF0aLF49mCfEy?>g;ShcF!w zJZJ4xuP{Shtc)()uYh2Bj(#uy2Y7-Tj5RX7G3hMZ*@wrz+^wO~cvn}~I@fNR2|@gt zU*qos2M?w|`8UO|FvB44^5eF2!&=e0$V_+xd~Rtd9w??he0&e;hP!6O4m>{*$hf>v zvBBYNd}w!$7$z46AmRsmv$<=$7%<=1>(h;+YaiDVi`_?UKEJtV15;9K@65Fdxw)M! z35Zcgqw==>2M+>IJR3a61_1%AB;nrzD9BE3tlb#TEQsu&hCqP1#2Njp+F>a6#yJ=|~qi$o90)4T`(EcL*-8D@w`w7kS zbq$#OO-7E9%NoPU4L1PprF)?_1D|pGspoH&#_i~V1xETqN`mE!7j)aso;@2>R6Q}X z6>4VIsp^_l*Z;kon4B!LYzg_{yEpW*CX5`lsAfPUF!bA4T)_I3nz%w1djASj4TZJ5 z^2Gsqm~P#;WH7)^l(c)wNNcK9Y60wIuoZYTQNrfe4r;`WEtB)1{TKoB6V877zVe>O zN*hC6wida#$ME^lVR~RWR{A=o6@3-eqGvsO)sP~Dg&vqQ%IyPUYFZ`c(dR{X{cl6} z`*|*3RJ-#%dLTLuYbD*~DVr!B&3Hz~3p6OGo0}|pw!0zcZXqnIfN^n4WJiC^cJrAl+9+n+;VLq{qPWUgS(fnELN?4(b{7Y#cMW^HnqY@<*r2?dKN`85ieSD3=EA z;1aA9W*>GxSQjl3vc#(XeaUxuGGN2-Gu;7rA=a$rdckGK?)3wZvjIJH1q||>(vr2{ zIHUsoelH-G!AUJP#cNQ`T}b6VeU#|!pqd--?`$BMOr zQDyD%;^Cxdw;B#lrPe{{duaYt8OZV0g5@UY)TgI{Sf!eT_JSE8zc#BCCS=;Hvj*9w z1yl*jT%Ru1ql`@%-TB6*(YcImo2dQ3!`pr7ezW(wk8T@VooQ$f<Bh3I-|}$sGJv%D5^JUK?k$^Ia;-FaAifIPQ%oz$p&aWU#47gABjntn z*_r8K&Bfi`XGl!~ zGCY6|1TV;2Z>+CH9ksX#n)gzwJTI^EoxK801F!FZl_L#SLCkk|(AwGnVc;1(r57qa zhZvP7Ip}R^m(QoQ{RaLL6C;3#x>ejDx9~AxX=X^~-*3qc@S9!%aw(ip zpKgBtPz0!5Ky|x*cw$-_|JvGQKs!jXXUTEi@8(6ACQE13A*-APs+C9J+5vPRc}@C$ zL_{+DG=vSPRfFscH=y6rm_yE6w05xkHi(;p@_xO);orYbfLGNQIV(SWm5%e=mv>>U<$f#8<(8n34T_u| z!(mFA8*M)#BBBNCX`{!ffE!qD5}0Tx^G8WKKRI^nn4J}(ITC%o7A5kWhqa$QLfLvg zQJNQiPw0K)85dAC{IKS&oH8D2utgu>4)~0^w{IKa>9enyO)tZ57ZtQ^v{$SrLPqFH z2}%TG&3&@BC#?HDwA+>5zsUjV{wzqnNsxL2Wm?ou7>y!!!+_soBUaRmjLEGp4gxn3 zaH3weQM14>ZxjJ4Qx9!IXxU;RDzD6rC}o%fkSF@Jmf}ek$%3#xr`AsTEN%*zTQX66N#tn&GpdIG_5*+6q9R z(|7LLW#8KC)_gWt?)p@EVJ{G{(5EQa?lGuG!Y*c%FWbO-4B!plx@mqFj2cI%oV^3H zX4?_a+uPD1!@rqasBsIb;q+0vX}e!7tF`c9bPY^3nt5yl?++J3NM8TWXUr9($HKqsDnSCI;A0QyFpqT(IC zl#Lg3+qHI;<#%rd{BH-wYWmc%i5AGzv#--$y-)@71#cX3WY2K+;ne5 z{x%of8x&B$P>(QLYabGlb-I5^-$B_)4JP?yUDj`=PGXKsv!m)Wysa3>STLfKX_AgC zz?iSRXTte!eR~nj3x`UG*1FySUVy>CyTh zC}BR?(FnXRw^x+?PS3eyt&bs8%*-a4x`Q>!3u(if>GyuiD4Dq3d9G!`p`>DCZIY39 zN#T=|9*~MVMHwm&4jxsw7I4_HY;LczKfp!Qu~(m_?t_J|t+0Lb)tyjzAs**zi?CnS z=_~isSjh%E$QZm>=UUA&Z}*2u`wHjGGyn^qc%S;RvA&?t<24v`lua;9z)%OAnL23~lkp0+yTO?b-oKRpBkbpkXJl?0a;2AXMCdr&E`;2{RaO|kX|ei&cSkbwjM=u`u;bV@yX1>JI3U{_say+i#Ki3)$7MaX z?>nZnu~?(f;ipaNEL*e~@5&$P%1=H1_}|J~{^{U46^wwiaBXWBweQl_kedsIqiJTl zz2w@C{~YMAv*|84wL;;S=HQ1UYR@*? zjd<+kjzjUPouZST0vWtJr6=Du0u?Q~ZIcrd*Cvwsu6<jpGW$x z`}gl7-qZs(_eKE>ipF-d4U8;&m$--;OSyEku~B=syNPYd{6nj_Mo1LT zAa68#gqZe{*|u!5<4Op9I^3LW`}Y2Uf>G#>;b=G1*j{-Ke17Bu1FoyU?nd5HrpRWR3vb;D8E{ zk%FEfn0!1y?<3eqiC(WtogF{uLr49&bKtjV0)3bR26?&h$w_3wgPFwQ91nhTwY%AH z0Z7^I43LazN$RnzxtWeP%{$i1B%3#LLshDP?JW)(zn$FSwTpB7`Puxo>DEzYKvb)C z(vb1{6%_i$w`81FSND*i9(W2iKnkd-blBVW5jb+8`|Ue(P8t?EkB4 z^q!<>oIdSzNabRwiKF(Mhme_KV{@_wS9gAc?9BVjb)PB{uD}N@6C*H*3gwhKK?-Ej z9_aI(2?D>!eh$@u(tEtDw6ZUp1YM#5^36@V@<|^u&p1X29q@LK8Yp5HZ8=nH0+uGV z>l^cvPJOSW%+5Q^La4T9w-8(n<(+(=1qaOz z4Bdas!|@$xsRoV{(*twf?hyCg85>~a_|Nsl`!7ES?r1l681{_w%4b}+KIEM9`r&gk z0fCj~V4c79r~t#N#bf+A$}T{p@4oFH27>HVYGpnTPSPpAgh`M;TF)G`1PLiE)(U_Y zEwK7UJE#;kR$b@DIz=*U;YX@=rY1ezoMatr)0Vc+@zi;{(3n86Jv5CI7z6Ef#sjz1 zAmcqr+4#b}`L!;%qINrchCo)MA0rv50nkGALpX))It`aS;^KVweiAC1@3Jijndt>) zz5Fd9#BOLQ@m<)FQ8*@d-kQm=Gb;P>7d!(KxejQ_KBm-^CR zX6g6a<5Z7~;rH9*zYL9mRD_DE36xotK8o=0oPg0vJM}AScS7m+Yke%+gHMpCR$71# zi z@AL5Y2fV$m2lp-KaURDy_O%b&w(a}!W%NIEf4^hW*~XajyC4sf*L2X7+I(u`sug3n zZ?9&Q6cSR@#@D1Kt2;v(_F_~gt4?vZMGT)b+;mH>jh<01Vk&^G{ev|mi$skndjA}= z%m>XLR8w7JUBF(ua(7LSbsHhq(EPpsJHcIRZ*OnKXZIqS5T|8P9C9DE8DWDpr#bdt zdIF+rbKrW_2m3nam7QM{-$w^74#$4FSm~ek@7ykT8cwYc3OFXZsdXjd|7g!W+*z(^^N`Y(4_-hJ~eXSpR1 zm68e4*XM+}0ze!!>(i5Zp)2oLW#HPIPgVZ>9Ndfel43V0OIA2vhrPk}6AZA*_+N@- za^uF0tC2nNlv6T;E(6LZ?sl;)^;*2pcJR-@9XQw`r>P;$E?KWsFvww3{5J?r z2OqB7ngGOaxTn;+#o)NB#L@*Im>b$kcj3N*IUq&?h%89NNJB0hv9a(%V!L&p1r^qy zKov2teh&>29uulhUvK;*hFRn^?0nGSAF@Ny)E| zZ(anS<#X!pojVru=HahjD;m`d*GKNQvXNDF|B+R*xp@C8Ja^c%z%!E4uHg{n9zKX^ zStUpdfL*`7&O#vJ^iJS)tRo5#bzeQaeoZBZ)%~yDP`f>a9!H7=w{+CYtK<}NsFeA) zfTck*G3}U>trV4TpE`$xQ)K6&rU%gY)*0bs1ZX9vk*9Zx+P!RGsm$H)7g2Ck&KSCc z1t>et=XYDNJvvU1s!=_CLL<8`PPZitYnFIiCWxly^gRT~^g=wxn$1$8Pjj*N)NalE zKZMtZ(-i#`D8+?_x!{K1BNY?=AhG4hls8zeov5)k*%g#Gm+(D`-$sh5=2l5e6+n+C{gZ3qfR@n6J9|ZOo?J1Re%7qd^ z5Bt!zO~r9w0m+{(pl;hXaC#A0$#o_8bsE$Q^j&?`!aB z_x9J9f|29ls#E;+t?P|N>{_`6d+o|vWK_~oyj&3f$8pKJD|TCvYJF?hE$C!gB|`~j zMfkV85wdg~e_5g^ute3^eO}k8%$Uy@L@oWiTPpSOB7%Qsp>rD9($Gjym-b0A62D%! zG&hp#K5dP{HDB>S4?|;$PFfUHFz3=-z^2Si)@OKVNO_)`OpPA9g21hx2?^ za$T5p=(5?rcLBJzpIynHuPN@@&y7273r@Z`T}dbV>+K%R-^jhfMiuNNM&=j2NJ0T< z&1vC*80w}C0@@nTF_3_PH?NWZ=@JpO@;s7*v@f_2JdELm`(H)HTotyJmu7~fAQRDs zcBN-$_dH#l3zdC36gkvu_ay8OkcP2? z1p7F1+ftQGXw{}^x&wM~z4KbhqcKvNZN`qF@c$Q!RPcRM6$~Qnobh8lrKUv1g4k%A zfq|s@AfC1Ha*}nQ8*gl`5+%IqrAyfmio_v#N`)o~do}W@p4_5i_FC}GuwI*AUmNoF zz~%~`MLf}jQVk|yR|gH}cNgx63yhSI6vPdL-eJ&CH&mCAgQkJ`6Z^i#t@v|_o$4ZT zrweV3_xILkQT2kfwC$C97F5EyIz6bMsh9uA+4o*e-@Aiw-K6XXTEaGITef=j zYED`A7lp3lc2^cn0o8_0UC+nYVUH=K>81w{KiCQQNCUe{0#PZ*Mg^9H>QTjcg$%@9 zz}qyjjBpz|#So06A1N?w^Zs~1Nrb1u^FB2x%EPxkK{+-8@lj^(gA5c<_vO4x@Y^#s z`RLe{-*!m{34zW1ue}&;-1dpdFFa(_NU0rRf_#?|MjeolniM)+w^q?UZFN8C;L@xGfr63yO6F6uJD|!c;g@EmKM!A`Y1Iw} zOMK5B@I{vfYEvAKyhl!qQWO-r(1Z;;ZXQP3acblVGQXj$8mVej zSFYu9l2LmLEK?mI<_n!G1GUUX&ds0V=ZsujZMfvTK4mc`U;6TTwUIN>{jj0w=1)6i zJm;Lca!WTfXuj1ub(!}IgV^zJD2LwR@vPGJy^mWa`Qbrd&QJvH@9)(`T7kYI@e?qT zeU6ePMSQcYdyDSFJEk-QF9T-P@jQQi;q4t1VZIa@4oD_xnpl0b=NB8C7*Nwmm zuYNdp`|;ya@pY@(y_MH%$iqe5CJYLk+Z^bK?l3KGvNKmk>6v=wrWfL?JDzqS45b&I zd{b8!Y-6H;*|s&h-4NPsZ62xY%fwbarWk_ScXh8s})43wB}&u{M#yIw~D!A7i9qi5y_m50eP5o zBgtcr4(uO3l||}snUD2jZIh_9YQ*tUVh&xd6itE{SVl-lsAE)=uLL%}2SZreh-wQ1 z6Kk>(!n4RC>^=9cZ05lvNJJxNQbDIn?{YoX(e2#-I%mA`b)%^2-1$tFR21dP#=o$& zr1MyYo&ebp{c;}(wRGX8qv6;q{XsU!{;Wp!2cXc`fYPF0dW8pA8e~}+rlaDXa8kC@ z!7h@zPiRK!tIdjjhrXl2_Y*-1ieY7K$9kdscCMhW0|P_Z^}-(>Tr4@CRuYT1o{aZR zR3xSKg;q^m*j6H69yQ4=duT_8amhXfiKAltZHl5XciyT4sT;c{ZsI+(9ewA*;GUm? zCCj7xm1RFWaT;Yn!{p;{@Q&NPW(II&+wsk)nKHLEh~6M|ep7Aj5qlX%qE)ZbKYlz6 zinKO!uN&5}!?~3RV0Wq*%(>2*k;Dx$|*&7~A8ri+%jc@CLS|{vtwg)!ju^1__ z`1>kbJzHk>%<(XP&uD;}gs6~%+ExcvLbhb#<7ILPcxB}3-(noY0MZTCG5th9O7&h| zvVIrqlYTKG=GduIr(U!7F>;8OO+KuF?OXNTmKeb6dyJVHg?51olc(<`y(zt*z6vlE zK(F(-3u~C@+qN!jB@7`+Mo5~t(KNRSNdr8tPH)L}8=K{xEsR(jr1D?h5%BYM0h^_ zXA(}I2to56pU~F;ga(8{7bF7y;f_rBkFf(ne3hb3&}djgHJrTQ2BSdS9-Fn3z+LaN z?Ho!?exwCAYCDZha9`Xq`0U$z%*}~AQPjBOQ$(-{1vb)tJX-o_4c&q+($Zg4+PbhtjE<~7Wmp*Io z@gHW2$v6HcmD%dSX?LPmXA?3UBK~@Vo^c%5md-JDdjA&}I>dp0Xgv0uiH6Xwh`J~5 zJV${0%#Tz=`-hV*^$4Zk^SbPE7B?sNfN+eVW8{eSp;-wkSxs))jbv)xi_YL`%A3EP zSd4D70THEr13Ta3n` z8PJ5>uNAuT%f+XN<_YP{BUA$q3dTzKp}m-!8BGI=2^Q}!kA_XMdGRHiBI-=m@K3j;i;noduDwXz8>08rOq!f0DK}m*(Jw4mPi&<3mw@XIMfYrT zh*e_}IMhO{T`T_TvA5u6CY$OT8~=*>kX^qPsu$T95QpL}1-`}lQ$ZFHl>@Gwh%n7Z z7$G|NbmNy=NW?xMcx51hfF^y{{II2&=tsv2`k4q21zdXWPYp2s4DZDeQ}^$QcX>+s zHY05f_`HwNq8BND_n(#9f@$fl&PJno;pL@4?YKjG%3lt zJ1JRP52tQ@!W8pg7unVL?b|mqiHMj*_RdQAVc3z zewRY;K`@Dbf2vN>BF8|RViCOR2K4>>{maTeAmBlZw~jte|yC!8onF>%?BV#V_ZS)_o>l$)@&vB-!GS6 zjn<+E0jC*BQ916y_L@nC0_XrgYJBzC&({W4rUCO5ag|{(52WHIzo*E*(ZyOfNrI78 zR#x`yI^BEVzef=TTMB>p6KrXKU7%0Sf2-8{B;fyP@#CZWZ=op3KjV7F$4eoXzmV_8 zE&Xo;8>KAuMN@sf(H2HJnW8N#n*Z%DL~@x5)o=`Y{N6}3h~o?X>+-_n!T?JHza2uL z%0s)E{A&MuZ}JK;Rt6uD^3P;s1MB!NiRLS!EIp|KhFu z*Z*68?vDqsaSpgmV1%1~+o&k-n*W~dwZEkSyJ1wW^tx4y&NAw%=J%4$zufZAa!`01 zyI>j66@FW5w~~MCKVzauI^_u3m_PusE8mY56XX9`jov70yyWL-E*t?qQa37Ewc)>S zDR^^BVgOUtcSBY9$1adR?7tg}6|Kz_w8=Vuzw-6lI?ey~`PGWEkI>k79#Sj=d@<9# zq<(mS;5?;o@$EzSZ9#Y?C?8=8a8Xu9IvoTFw6uT$jLdG8+`D(LonI3`O?>MSFk__E z6f#U;v^wy>YDbUWP!IDxhu%4~5RJINRbKsK?(@V8X^G4yCN1rPWjhv1a4JZuG-M4# z4{?95O%n9M`P<`G{F+}ZoO-X0_LN;j!2?;Gt4z2MIs%BG78<<-FaSL>vFl;NN}U_R zOJJm~XRNGBhh6T)U!~%vND+NM(!F7{Q3B$NKjbjAj@Jmq#a<|foH1w`FUM6TOb9nh zDg`8xiO4OBwjg3q{15-*DKFa|I#dx$aO?@LQvMaNgR3;S+hi&lx)jq=FA{IN94M$| z)x4K}J$6QrE!LJl!0RF*hE7%|zaLkOwI4<(6|6_sy(f?^^Z7Eu*q<-5aRn^!ADxqSn()%M1A>C2Uhu6w#KMC|kr&|^d zPN5;9Axb6+o3Gf4a3~xDE>RWNw!j*x(6@)`a~NfWqYOQ?iKql5Ak&Rb`tA~uGBw^~ z>OJ4pGcY+(tcpu03cV4%p;~U1`S3J{A0V3FMO$iZ7j|!=(5HZALEcPXDaXnQgbY22 z#X19l-mae<0=c{w9RA*beT1b!8-jZ)<~!5p=M;o`pQn+h0*s7B?Zp1F@l8Ne+tqTE?4J9VoIBatZ@9<7;zBP?how>ooXN5PhAA$XZyL2NrfDc&j2 z)M71nsDjob1R}H&pTgEh+B|=$jMS_2pDX-rXg=U(k6gj}aDHWh4;42hrt0Jg*+is- z*t55G0EisM8fxMVbmQYhc!+vaoU!t6a~Iz>!Fua;Oo4aNnG`p7o=@K#@%QSUg1O8_->M7;`SlMr}9?7a1_*6t%n=bgQNLm77`R`@JSj$x@-okG%{5 zk=x7AajPN;oa^dY(jB<@7P3lxuuBeqKgX>KR^mRgmtE0G2GygYS+CJdbi5CRf)3g! zKjAAcpbP1#K~7SaSp3Yp!)rJE*|rnk7rfygmH?T}Ykca9qYUz+eZb_2J&=zHB3B1n zalOlZCDUg3!$2aO{oCoA_PkK-uJNVo7NqfxvariBJ&hqM&X=UPqd3hZqA%pC{ zN>cMwA+D2Sg~v2mRf%D9wh0QHgn{BhU(89tpL+AT^DV>HJbl&U2R_5KbeA}IPCWt z|3mIj4gJN+Aw_n5wR{nk$q7{APOma74Gc5Qe4re83aOV=p@n8RZeWOXI8sWF zHP+R+H;jrNC-VtPZ^40s(x{y*ff9rWeF&qsTSTO3a*3~mFyvEHPAXTPqXh(L&RrsZ zRGEMD2Kvb%w=TXh#uOj=4VOttsbRs17a4@<^!*`8BmJ`|_7A@6>@fNfGz!s%H zJ7QIc+lG$*?ZjGUgyTC2i=;mT|61)l`)$%~^YZ1R08atJ?Iok9D6g?&|IK7VrYfJ| zM6fauV=#VUGe(6@sn1K7+~M&Wz^rY=7DQ`UuYM^!(Fx*Sk?)V_H~ALy`Z7d>hkwy8 z^fYx+6hb;4vg;yOw z{+3NKIB`t@K}QFSq}+W$Xr(Ed^=R0sFjCHaM^+w<4<>iHyd>lQ&ymFOc7F&yewNjOAa4^j}`%KpGo~^G21_w4D zpGILWS512sEO)~I9>zrY1>xtY0KUrIdadK;<~&e5 z3acC7piM{9I)@D zG(M8ut!_|_14FK1)P4y&LGOFoj9D>r;34=rNOxheatnc;-Z2 zRz!VkdfX4TJ~C18X(zxTC4)MHmzNR+2P1GHc0nN_bram2>pC{Jorgoovj&~n!y_sA z`zQkNmHUM}bL2wQW>!`!ah9V&9ax){V6jBh4YZy4Bh@6%y^C!bgsz$v@Z_yHW!?{H zp~E*6xd;Kzv*ZsU7d)aohNI9lad-9T5HXnB)nkc_mYJEH>D*D*i3a=&mYS`DKYlPq zs_6`0GB-CrlXC3M8)kFrG7wp3_yfsBQW*6qv)n>Lqd{qDX$MY}Sytl}toliN72t7D zXz1U^!ziLN{NIoTL?yI4uW8;8KAy3=kaLv13QA7Lz8RBuoBpK+dxxPHJ8HVe~13e0R!vciOVcl9KsU zNzYf6kz1#jSy*gW-=D-}RO?Zjbqv$fzd-IG-h#Ah*7ZqZ;+y}zQ}0B&?zpqF^CAXc zDLvY?!29~&Cr65v9dQ^rT&~vL+mVs9p~~A2+p0Bob{4i++L!*lVYQ=i&F8AAr22-3 zhi#v#{e72b7*r$FU;yj*S?N#eDX`%l+1OqgZzB(=mXWBO@TaS)%2N91t(wW;`$4PZ z&z?;Z97O)E5_Ku)t&*;;Zfbq6*I%m+A0kDg~T{R`GU~e~CANp(gaV@l&^{uVbzwxqK`9>mB z>)dG-6(h@G(`WdTfoR%0IVqxlU2srG`O=G7f^9PH<=^P)`djPnHod!-9PKg8QR{9q zltFx~^mk62(~8!YIKO5v==@csH#NLEHCqmyn#~aZ7);)x(|L*e&1#9+ez@lpXyYCU zr%nG|Q;aLLHK^0%V;yQqWx*LUXZSP3kq8F@`ADssn3%Ygx-ZE<(kgxNG3aBhyXeH) z0`V#<)YFl1%3qt}9c=h&JXZVbOuyftoe*_k19^Eoo(CwKT^$?@+;E2?lz}(J)Gkyz zd8qA2J_=#jszDu*%L)!^>mo5u6iz_E%zW`8B5q%`ra#JXXfQaB?>xLP29w4)e1V{ zR+gn?WNwD%XwY3%R9trcIiUJ?ortDg&{9Vk1GH`>#%Ly-k?q+yfZ%p35&h%Kj-#D> z4R%sH*xRT4Ot%TSvvoBUt;4#+F9(N(McGDa`XBOv@NhN$B|Abd8lF!n zPgOKZ(11Gf>5p$|S^|;!g--l}f@*n68T5!(m;^lpp>-q7aWarchFUw zo$Z+6;r#)9Tk#rhZ?s9#;A4VU5j>CdFE^a6V)r?GVWH>zKH~O`E+0RByuHwQH`D|o zM$wTzhUwKff%^>q2sE{?ahsO>X;Mg|4*`0&_R~C$jpaseuax)G zDRiqG7yRJe^jASat2*k$*+C0OIUBzQ+Lp`v(t28P2fE_oLQk=Lz3N~nS= z_RQ`N)zx&rzBQ@X+h<;|goiYTSILgFI)3QzVN0QlK-e*!hypSGHk+4`{uP~UnFG&i ziC56M_3%*KY*lNka}lD2U))x6%0b!9kCA*(R23Dpk0@#%F*i4le$lIys?8y3w;9?Q zADDXN$N*c?#K0RC03#Y7#R+eUcpP^!`FNsm8q|6q1LZ`|zUA0xJtNoL+zh>MRPIs7 zET~yJDyLDCT0oltUS}mW4b5rW2KgJrWjv(|Ro-(np*hCY#bwN@cD~;0j5GY~S(F$Y zQub!i5wVc`JlMe9q)Ej0{gC`WebE%ari)vo>$u{4V3M!djcU24oyUMwD3; zU)%TXV}mN>R^qD)G-2KZSif!eZU!*06?p0wJ}1=F=rOLacW5XGq<$>a{S%Xu3c!HP zEG>Djn9#qjs_FyDCz$iIp&Zo4x^)<+bVzgOppk(=c}>kq?0352l(4p9qt; zuQ;ek)$0d+$Y(n{yNn)$_n4LkBv7laVq&TW#SyDDDQdt8E2{x%Q1{GZ)22;MBOliw zN8X*|%rOj6!5-%g0^zZSK~P2l9jRi3(_@6 zk;3f<>o#2Y{Hmj+HDwC3A+BM;9~5$0j-ft+m0nFv)8zL+X`$ruhL@~ryjGSjA8Wm_ zvGEKPyzgF4FpvZ=cmjL67d&UubLB+ID>E1HPVV6O=0eUnwaw%a;21k7zxe>J3YNNQ{2|mJ$NdCYIv~BbIm*_^%CCW7y=rc-C#Xz zU26v*PQTQv7*F*bvB+a#vgXLKV|$%-QdSM`(X5r3Ey9(_t4K_EcTS?867$zh*FYQY z3j>HQLptYRp7#m`o*eevN&oTzJLU4_r04V` zXuV0`C1Hx@?PIyEuoAK&xnNdaK~gPsW#(CGnwItCiho?-8T4PQXWl5Eu4{p#bY~Y`U9RsA1%;0feJ+DM=BP>Jdibi%gpGWXocy3r z;OuD_!YX?DFK^2>P%7of3;acDfLeJ}=J)nH?nFsSkMm`RhqVnMf_sg|xpmCUr-z?% z2nh-@qI^+818QoTxh~K4?PBmCIgf-2<1PLPX`lbz%z0>L-B4bF9;Z2}m-rq{8}b?& z>(J10ioejCWQP#jyap_EJ39LO@bJCFloUQ-G+QBxk#N>|x;em`Ece%&#L=$ay#LaQ zl9G~DYu8FT>j(&;7C~hkk196k=1oaw=U|XQybyP<>hWHdHS&teg5byEU9191N*WBh zOieqpkD{MYKKC2iRUqis!oNcL&PakSNaP;-Bstgz#Ss88BOj>T{+l+v7GogS0 zsZGIaA;(A(hksHp?fvD2SuwoEV1PjubrJk1DunLZ8QqZ&{rq7f% zRyQpR7n%L@rw`*6RP^;ZvU75dnFtZPh*t{~!cIQp0w{U2oY!WwcMhQe3FmRYLyk$Z zJ~lRwG4miywYbnzvIR&&;GH`x9-f}fXvuZL%$~d`A1tSo*Mby?@wEs=>tIn4iN*q( z5Rj@-Se&-8VUUxPo5B!sG{E`d0G!k`<-gC^Cr0+{c0|cabpJR^^eRx~f%KxA?+W?i zv9U3GS63Ajv1Ycmp+FDH>+0zD?c2BWxpUQ>h=^-I@66GVM!5>NSkcwB2_N+jjSAn1oFVQ5i`g`K)=pEG}?8 z`NU(M9XnPaOi?I$dV0Wk*zg?zxF)iP>2Zr)_y{NV86!^cc` zC$0f3@nFMi&~MRUI}I7ZrWi(#pdl9$eS5A%&imo)+#-XKbXQv9TIarrxty zQL$=rVxkOi{|>{Y@5zq|1hg}S`SxkRcw*>VZ~lqw^$QAD{F40KKFvXiqQRl_B$XU2 z`5Y0!in?06PfAM43|M~rAad5{qExYnD5P4{cUhcsCMjf!@{T~T8D$?o>dq4^`@F@U=u3IjpaL4}VA;`bLr=|IZm; zpwd5nor zGs7^#L$~oMGjn7SYSPO3di58t;%_XgXh)#OP|dCga{j#v|3H3>H6$d|>Dbu`uPjei z;};RR*(FRCQb%nw&HocDvS_(Cq=G0&F)7;j=%6Q>yS2|r+!r@EfikqWx0iwp3OY`# zWW*bHHAq1WYu~(!N+Qu zZHmy#gWu%O37c{;6Qzq6Uwo0$4nx{H6ba7?UZ5E!cdl%dOhlGa;tT9hrp5f z_w0npZr-v*6HVqwxwh}wlXLXrNw?Bx7v|NK;AG7CR2W(@7{(=%Ix&E3sVp7-w)m-Y1dofkD<0fWdKeX zOU&$=<7vU2aO=AuRr^%rx>kOPwio(zsNauZEETl_<_k#Vp|A_O<4+Byb zfcdL{zWBx|72u`BlT8gZ(}2qHM;bYEHCf zAPl`vWO!9vOcFwvm~Ho+@Nlw5F>>Bq7)Zbl_@aKQXp5Nn3e?{(ys=29!LEmogT>hf zwpv)9jfKSzFG6oVKRJ09T8(_*+$y`fO^S@ub^DPxlEuN63SOgCm@VS6i`J9qAO2F;%u15;B|fEX(w5xs^7=yk?Mot<@qB8-)+2D<)&g)*d& z_qq*6>WM;6;O6db?R^nPwZ2uvsnDp#NFI*?fyA1K2b_^b?u~o6C1}*MWU7x;xfkyq z8*$sNT`R@J#NvOGF`QT4qKr5MeySPM4V(Y;0X4yFF}mlbrD3R(kg8H6Wfz>e!g0`} zATI`=UVSR(#f#SvBWwQnhOw`{WC-Fi6C>lbhYugljDzX>0r5k-IQ_{~?IHAxl4>A9 zWo>iT0A4<^L}c?gdzb6etIHpHvjG5vLbS{fMU;LMTVT1XQOfw2mdZh*nP&3n!Gn7Ph(W6cao?G5bAvbQk#zmMnZ8G}eoT4p2stJHy zO3*^~4i5{s;c$U|Y=h3l>;gwGAd94`qR2z_sgwa2cnboClGi~Ik+t|uB@B_a9{tB5 zs7d{nj}>-(2d&7+BtfYyP{&QYPgL)8HhJaN9DAwAc_aW4bafQzr!SJjNx5W40-srh z$wxx7VK^nh9s)@8p{_Z7`n2Ut?WweU1aZGtn=*^pJPr3EcmS3K(3Twy-L6L1J(f(v;c>&_A_16QD4B_(tFYRe98G;Q&>?%>8Z zs^A6ZdVl-+)!HxeRI&RuDJc##HNP`z#OP~($XPfR&(tCgV$u{d={YQ?^>E-i;C2;s zIQNbnuTz{OBXV-~un8NlLg`xW|KuQ83;le%EjVsCHb0R}6BUK_WCa}^=c_P4t*0@W zD(L$4=K0S6iC0srTPy%MpGEUp@T>14KhTf^oXlgJ{tWtV`r$C)h*y>@{8U$1w|x*U zkYKuBzI<6xzdXLYwAR#PlJOB2NQZcNHlTEK5G++*Otq!$ zTk&f`(bC%lhhrOo+c*3C>N1_IiJm|txhPtRc?zQ6?E=0L7Z<0WYrR3(v_$X^*Y4fB zJ+OJO-nrXW0r#5K`1PN(7(xet&EI}2l_2Ip!^>y_l*EF_RO@DYiVi8*K-C#tyZmCb!*`*CYFZ+ z=c127gr)ah`m^im0>dv@Eot+Le-KAH$*^*Za-%)v<>ef5Ua#Vo5BLDEcxISOj~L{6 zyXG^JANEZJLphkd9zU;}bzmywI(GIz2-vw{P~f578#MwV0Lp$(i}qbW@Xeblz?*Zu zYpScwF-VDE1)p&PWESFhmU=?78PwIYV0%LCa>+=uw~u5AYO!Z%5x5PaHn|5RAxarY zxHiG*N<3xq$DpvX%1Rn`VdHh5ZtU8*Gaj*&F0yZ6;2MDb)ph}Lb3@zVLKGQKs1XNC0JkO+&C zj*IzbfYzdCYS)!#gIeCUXAcXA$!g%8VX$A#acK(+3jkhc?De&@!otGhZBoF0oJKB) z%%~co0@3sDcaRQ*_Di5;0(jM>&o#L+1V9RTwqGSkeybe`97t)r* z#UjW@+99Cnl|{Pp8uS^XVH0*(7CPB61U{D&(@EE3W5@o^QA=D8^pRDfR|>;uhqkqW zBc4R352yB46QYR#yfcZ7`d#*;K%`o8Yz?n-y<>@H38T`lGB7kW$IuzlAXv_>g@G6HM~(z(Dkvd$ zUbkU`KN`O{HZM{AN#9F$^@^1%H*Khmyas;_D1L>vw|7EYD^ex=Uj5*x$TOr6LBYWl zKxuCns(=H`a_Cnk^rd@`QO?<8e&CZ4*D-ySZqM1bd=4A8dd+S_r^pk@1sV#P?1Azd z%%4I+yD;_P#4KhvOa*w$d+qi|S`{_RqrDYrJozm61xcv|nxBtvka4rC)~xZ*$#KjY z&&|oHL|>XH!2N_7e(uu9LCj&_>8`I)hO~~Dti<_n&AzR-O1Gd3feiyR_6<7@zUk@N zik_AVyofcOj}hiWut_*suhyz2YW3kIS0ZI%WLmzuFmV~XWEBGgOYT*^;0F&j&5U)2 z5a-N_wduO7p>a!L{@Jzz2M(-Tzup%Ei-u%(Qj4B56$u7!ME2E>PcK(WEl)qcXr9O_t0XH=du!>p{rGr#|$KP``xTt%oA43|(wy z@3Jt7#0+zx+A(dpcW1T~ti{yp4=-{KEBo1%1LJoAA1fk+M|;W;xwjM~Mk`PPC zmv7&8S+72+eNQA2T(fT}Hc1HMGFT!}?Cn3*YR8=~qNp~j2W z)*GnVH%)i%W~C?aE>ZyH)~pG4KR>@L^wIlO$WhSxKm+bjeL+6&1y(G8m?Sovd!-!r z^4xA1ADJoh`8N^!YqyzzwJL*er4{N{i$~4_D_@7ECEFH@MzVE5_xQmWXK8@8C#Z-!|zba=^t@$@>^b4DkrS1Cnzi39)ENob&F&jG8x1j7U$KrNWO4L zz)h4X>|H-Q8yb#{D_uru+hXl}J?wM4o; z6NfP@9|q-HT3R|V0ugV4>o^yNGHO63T2NFJGV_a67eL8@g;!uQ-wnfMkSaThUX0+N z659oE&K#m<@-M>@h{hWSMHMMh9Y%hbgu1mV6ZSCPfVPR|!*FsnxgfKL`_{=VdG9dQ~F6l#;bq)T^iBaI` zZy&Y93Pk82=#z21h1sl`D{mVbh~$IJnr^O?fD-INdnOf%_ zA4Se0b@}HG2sU4o8lcovT-ys#){7DGud}6?0h&-r$GzNM?DSnrAtd?d1eB;qgWsiS zB$h!6jMTlE$Ea@8p>*BtyLYFxPs7F*Ff$12^~fxU_AtuLw=w%!FhX5?j?-**qHh+d z+?tXoaa|XeeR$+%wC#>&!?NPh-5V|xz>t%bb^8?^)2dZv(3vK=c5AKu#Q1&xlif0V zX0*Kj(*nqBf}W>6FbK6}4L%ES;o_7%Gl=6^Fgu|o%i4Ub`mfxw2K>Gw#YgWAH6~)z zzIo$QTujCo@t#XxJFr$V8(9#V%TI{jVARy9pk$IQyKb{btMy(qVfmss?S-#$!<&J# z@k5;Z0yRIY$vPrf!H}6Ur2N6gfoW;GQ7rMUT5hr43mtC|q7D^!mG~x1ePcoH@)|>= zb`|ttRXK5qvr`Q>52AP>oy9`|)9BnLH=Ko;Oqy;VU@4@mM?Se{s2XDxT;eB0P`^S( z@ET0Zj*DC%&H`a;U(iJPLHHye>nwJ>{nxh}-;6)c#B;u`uKt2*1ca&}^4lBeHJ49l zmPh%941xF+_%Xs_Ha9dNKgfifH$ga@Ax7Y0L{k`fh!cf5kSCqo{nZZumUz}&b5b*78=~&Uu$>T(j zasIr)nMHiJF#R&TOcvVO$-JT#p;XjFgrFnQ1bu>$9aUMzPQQy#WS@rnlydyaIEKm= z3zh&xheOQ#+7Q1tlmdhdMLxDFY8h78DRz8uaZ$-6ycAk+^P8?(-NhIIwu^q5_+#`% z_oG6NUo8hT4H!rmZ=8v(Bbx~CGj(&5+IR8u4GaY`GEzY* z;pXNRi-HKSz~hvv6RL!2r^}t)9gH*4!#aqb%DBX1BZ{fc{*3f=A)s}Aqod%l-Dog$ zf!U)3`6R{+?Z6W6&|iA9>+!jZXD}v-rCcfuTIYM>mTFnkIPHONvUGKAXeDdwT4#yh6xX~BhK>yv|j{x>yLf0}fGBiypoPS4R1cVvZsKDv_dI;{J5e>w0 zpT?}U_>Y<>s)=wSw%*0y!|3xxh+`F%mA~N870u0g2*ir@P5|gaIB%u&&qT8fP>*#} z1P&E4VqNM+>5WmG&=6c3P&@z&uEI3*-tXU2O}-8f2g9b=FoHMCr2{*G*e&IcECU(0 zp|BtMicMCV7%f#^OK8zHs#pLl+#Y;DO|O%oD2uPewpBnoFF?OcL@$GPO?dFI}pDYUL&XIyQq06pXMc;8pCnnQ~lVN84b3zaO+htDhf>dH663O|}V! z`Rq)~C%s>ECyc38Fp zBz;JQ%351>t~}bkkl6tM6xxUgM(4yQNlAaVqRS5sl#y2vLaqItV=7EJA`}{Vd@?db zFw0126>TI^AVK}BFyW2Uy)*PJvy<0cmeaJM-&YN z42J;ZfAuQG&&aX*_3KqL3edPAZRQpi&u(u5N~r#`&j5OlzM-L%{Q1H$*Ko8fxyCg3 zitRt~P}(2(d>@vs)6tIP5Rmbpuwe!|A&pjJ{#lZ*5I6t{aZqi{D0-Pk`oIX?P zDSotA6BfbcNBg$@!eX;Xs6JW_7S^( zg6SfJ(1q-N8o-UOC8>SM?fE^jMqexyGz)8S(gRqEVoWfi|Fxsn{PZnd05i3BuD8UcyVwA*cNesf+ zO@`#=^WMPWCnlW0!a z^Ko;_|MWO${(6<5QQpx^{L+Cg_e(yqcc6#dPQ*=u#ya`q+bNu*#dAgdT43OIKE9Op zCK2?kuRC|pYk>pF^7?K*94yU(p+W166O_Pf;47ds4xl6!tn0h3_$;g&FnYg~E>knJ*nuY$Eei^pl*gp`Z_-!WVtC?84BD`^4|)%g z|Fvt^f+`;SI;bTc38m842d9V>j8rsO@oi8pB2wEsIv#d&E101wQcDC@d5ybl<~c%WAB8p|l*99|Uw+?&5$f4RW55JNF~9(qN~rzladWF&HBnm{p3;^yv;c5%SVG?s z28v!JYYoW)Op4azi_=Oay4CV*g2q?Kam&Ss?f^1j^a}{?DwuWr#~ny%Sezdl;m92Y zRQq!6&gHK;2gO#)tDckK1mDU=@FQSQ!9T{5o6nJgu371MLV`usp1G(f6gafMG39VA zMxC0ydo7AmupG!HZOu0SL)-Qn1Rw?v@t7twbMx`l_C_=G_xFcNpJgSD8r3L~-eCak z=$$_Z+zdc{I-{)oF*PB(maVS}<;_LKJy+bXTu~2DO%k`PV{HzdhOd|g-m;W+2H--x zMIX5W@?F1?TL5f8M-_TG6KuW1g0SU8OOJt@5(7I+EPKr^(B2{*GQP5Xm z_Um?QW`j~M&o>$$5pn@`Gp|s^WxEMa_ z%t}HwphBP+mJ(2>=8z!9kJjG19{A|MWnc7Atwr#3&&qj;uU7nN__V-gF#FPvb}^FB z|HWQ$NHuc6t?ihxa_*&_lu;WUKbpJ1&Mz)KLPqSFIJ*rCX{0_-h7YR1RO72D-QW}jPK7YaiHi3YycmX z>pk+>?})Rf$lLOA1&J%UW5tJkP`41aUpe2-6z3hJ@TLU@s$8$8K6>m}6+TV!Py+Lz z3L(O2^1TS93@|_Mpty>@9#o(cc)^?!J{pK>Bq`NosC$3(qoQ`S80A?7svvxAmiMxk z-{)mSmJp^Fg#Wt~!_^%^x{x=@J{ZR);VI0L+!yh_28H>Hx3@xkDv*eQQ@BcKgDAM> zkiz8!3~Nz7p_I`TTw7gTol+jM#sOq#^M#DU^dD2vD5u~IlYe_+d)|%NC<0zaCghw$ ze0;oO{Q!M{b7d=lZ|t?ol#oxz4?+xszuV<&b#>!rLZ8_#9lL8+Z}zh8AXE_pp$bZw zIQ|T&b8@=@KLhG-)w}}!HwEVc=vS>;x4;DS6ky|>AMsidz(9kz?!AIB#*5wj?D6YZ z^F1%P{4!9^Y8t=7iS+_$7QN6e8iRu_-?pJ+Aq#U^%f%D5_`A;ROe8HZnyZ|Vo$(mu zs9m1u^%?RBJQTN1R)en*TE$5O^-V2RW5f@FbvKLFN@dMu5>ZFOT?M$%W}*O$SvS#7 zD%B?%vd+)XGZ@xlr~iGdk!k(YPdQ&0Z^{vPp?l<#=B zHLmG;5RCVwZX@eZi{ula!fDw(IYW~adk&-Lo^R;Z{1pl}r()BXA(xvxXl6UUhshrI;H)N**M->0jv~UlR5UUaGdqiP59Y`T^JG3Q>{@y6f{z-#Yqx z7Nc(+{EYh9lZs4{8lIf_yjs4wpTd?1oviQ2`+%_HGqVe#kD{+eDej*37N^o0XhIh- zEJ!KJh_!pXxwF%-#Z&jUzB>Zl`cT^R`QCRQKYr|0trzGz=!9^cz-6fBJS~(qmz0=z zy}}5yIN`6@*W{nv4DoOC(q)X6@#B)Z8)4^Wij_7$tkccr1-74gVUx4bs^RyxFCW~y zryswvbS`2h<_Zer8=QO9#;@`De`i{B`qsFm*`Z-wVa+E0L#JC98x+6#QgLrodfFN_ zM)`Dgwn7H8tS4*fzeFm%P^Eu94%g z$X*tyw=>o1zIG#ezxMB6msVUQRE~o%!%lzEC_6o77}#vXlRO-CB3ImfQ%9Z5<`{kE1R|LEWzV#r^KuKa$%b@P=^=n`%RDT~2aQrp$<@_ayR(#3yrns-aomX(t0`&5@-^NP(Qs314J*#6JQPqTc ztxB4oUqnc&YW#VMHPu4ifQk07wx&*Zk%9no>O1A944Gr9W55fPw@xq&eZEoa`GITG zrrq=lP={Ot2-HUo1eF=lb#N*T{8Am(tn&Mc=vQ;Xw_)lo?*UoaW*nP<{A?{Y1P0*= z10y+hsZy}jv*up3m9w0PN*_vth!^3=b<#w|!HDFM&AJA`wVz}g>ckeXd(O05B zK&087>WGUNNHbZS`|Jy0*!o<>v>#8Zg9V0n7Q7%j6@jjISzDaHGYETncqn!~`?M$V zfiJROfZ@G^gS013oRE@{NkI8YBwK*2aS1bf2C0*ozzait<^kF!7(Hi`avh85rDLw` zNe+1si9=6kHdt^q-cv(M4&Sw3Q&TMgw4_dWI8rw}E1Zlo49e{{)7G$eM}-#(T?6g? z0>eHZN++(7v$eHt#tBYu`b?ejJMeeSp)MGdsdz^!Vrq8hv@F}flFRPy!2yzd-<=~` zvR*v%+LP*;lG1lcfEqFy6gTuGBjGJ=sG`7wlWt+mx1v^2Q6aiA{1U5a>C)J$@^r7g zs^K$ENq&yNGT0WfNv8faNxuWE!3^ZnA}El+lVAYQAw!}*&tb1g?=5% zpIs-r**Gy~jc@XI?EE!t({aUT4kL~u z1T+iGenvl*LGsgYJdG;jDz%D$fB>`}!h(VsP0Z=~rnuKM+J~_jIzuE_GA|!7yJ7K> zEuQ1w+g{!E!Y3=spum22ha@|rsf7if;?P<5zP>(EYjq|&qdtWN&>yl@%ECJ-Ytn}R z6$~cCWrtuPpnu$zkW~xeG4+i!sGImi%m>p`+hf^|H_L= zhXUjs!^PqtFJ4u^v4bh=bi;wRw8%$z- z7yT^3_@e%;rO=x>j*<5(D+iVv`hOXlEalz=fq>m8eKDWRjn$`^8iBF7FP;L%e?FxJ zQXZ^}^*67*dGkhNG>g2{cXlJ+t1B3dcF>jqZ)X#iftA^F5lxGIB@c0@z~O{wB6TWUM1vN>$fOC z5l(Mwl~Q(`iNtETtw9Xf-f- z?SO#+kvsT-93}BI9#uyTV_(r}J$Esi^gpWM+i1sVFzhp8A{Sq&;S5DDFj_&UW4Xie zdKZ|>pk-4H>p-cCQl1Xg6)jkF7!7q18hiS>+w4c(PO6p1vzLpD8+u&R;lt(pgu zkxN|b*7*YqaeWpAJxXvyM114XZU&S`phgJpP@3kF>Nz}N@Hz&?D$AW+WQPb-E{e@bqkXhj@Bp7x)E zRbj38cOeOBdwqDp#kX!w_YMH?&ih)e0>wI!niBt;{a_JNVW=T!P11w>>V8&}D2GV<~&b*Tu9#eEs z$}=S;JEh|8-Ja8i_${2ws|6Kb>fl`6PNA8xVB_GTaB>JA@`-{n?7*`)i?}AcA+5C7 z3txt8eu}VaNOYS%G&V-VM#LtaKV*0B<|7a-QO}{R9EBesrcM#@l7^?LGAb)8Cx-N1 zZ4?jI!UljEm)0)!Jn(72(Y?!ec2^aB`%(oa84gZv5K3zV8wOke2huJ*kX!Hf6IU%X z0e8lfAQQ2mXJB{)g&V7Yfb6Ai=qiquP-XPX0opgHnm$wXA!$fG{*#QqWCXZtpk(xG zUV+{O`g?=H)gcL|g)r_zX#0sK74F5NzrNyt9E0^7;2(nma`1z}5QN#TWu>a{P~nyj_^OY` z91UG+w<|qtj}rxNhDWTZ$N>S53K+DIws*z!KhGUhOz1z6`$9kd^HO9^O&b=^20%^@ z=CVpeKn{!Hs|JGjV>1y6IOXRxdKF&^SkRMS-vK2fK;!m|-mi?N{lA3g_5`CUxG47i z!y&xmZ?7fjWeU7OI9zsmQJn1b8{fAKw%N{iPvXG!s~?+q>}ilaG2x_2$=@AzVWeaU z|3nqAaDF&Zuu$m7uKl8=${=-nOa_vEAz(Htm%(;yjuF*XA9;r-N*owA=s9z}^o%)k zs%`^zx5l+8md|qIlK9GJ?|iMEI+fy+_oTr4F+dC73|SE!3Qnj3Y_P1b5F}>uphGZ+ zt}12zOhK%PneST67+WVjTzhF7X|#i{&`ExOr!xp|K-sw|6K|xOz51afE>4dMUh4cR zf0S#VHxzAEQsN=v1_+*epizaDl$J0FP_vOUtMvWgGq=j4(tDAYVzi%QOYKjS&HIK>xsuJ%lHadsQAL_1O7xx<(Z>8kOXAbXy zmc6bog2_}6+GrS&VUpehlp-7-pRBK#H^&e(mH%})F*#Xc7Xw#)V?r!oa58|?G~w2* zNc01Ym()u0b80x^2hKQN$33t~S(%?GSdU{G?N5+#NE7=xEaLCG^Py6x;qW#a_ci6o7 zwuh?(30c(NF%jT%AH{9JkCJ>Ju#;wPK8~)gMQJzn?oau;OQ+;Mtp>Arrze7@Yt}0? zzYqp;2eloC^d#f6RExG0p*w@tay4Y8S(^>fhXsaRLOxYCL)Qihc=cs(!Q zrc&dv055y+;IU_KETb#?gkps%>)&RlY}_+obc8u& zmkwPjl40mhUCk;i4>Qo$S7jQ9VJzd4a+j8_>Y%>Kfy&*n-T8=!sd}v}qGHPP5ET*OEwi9>dAe zy<3B>$d7*(IwU3|6Y1E0&ch=nMYc4Pfu262lYJehvA(|lzu^(p`*tL;B|dhc=zuNv z_Ey%w0PU6|0!V!`$=ifZiKdheRD0kH*X{JIe8-t%K zJ{*R*AV=#03v50_o)oIn&zc?^dlisVD1jX(@RjQ-!wL>X75}|1p0)lmXc_pB6Jl1r z165)#J*cmKpO2fH7zrx=T!{&%$B(NBFo9+#hn-uW9jT8AIqxus!10Ty0&{v1^4KO% zE9%hBPBQg=?*yq-Q&SV?zDqD(j# zW^&|M=PGROy+oKsf#<`d#RllLpWEXgk1HxY>*?wGqjp!;U(RdIH+Juct@TNm@N_6M zJ-2vVL}+mhg^01nO5P$FNbT}3=s|cQ`mH2U3g&epjz&B7Se;k=OlqsG4H65^ZCq;c zan-37bWL3|4nbeV8As5S?9_fD-y2-i-#tbnXjpr_>+$1UPARs!C<;`^hM%In#I7no zzc7aXedbxX;H_uIgZ70zUq60)Vg23D$@DY`7&*``U8aIxhdJh05giPsban2b5flW- z0u-L-554FcA$P=jk{W(}^QqQ2m$V!RHQe6GoF4X2}U$Vs_gMBZb|G z848zt%v6fbvv`SGlXbP;zuCwk&_R?(xWPNU*RZg#kQ@WCeJ~@W4G&sEIKb+lOyh@k z<$!Dz`sT3h3@{k(#HsG;yunj>e;(Vt> z0N9<`AuLv+yAEtX9%?S{8>+?o7PI_*_Ro%Ge6uS-uaD=wd3HGz)oZj#F{v!!_tCz? z5|fvg2N**g{ddc^X2*LZAc23Uo8SDw#WhWzn8~h;K&90uW`XcAWX0r-7e@z{m&@bA z3r10J@$%&@%FYk-^2D%|qKNyGqp1&Fx%o&CbZ0&6%Q!SpyxkNgUN2bBNZvzo=^%y> zOMzx3u^?b(B!*!fbNZbJQzQ50$gHH))Mk`KsMlhLx8*9uL`OGr(>(;ajel~egku!o zNh6$Zh|956DArAur-gSF4Nt<8PY(B9CLz#8cOx&a*2{K?dckN0A?@hNJ2DMt>xrlQ zp|IdFqnS(iyznt_;ulTFC(*?C_|_zDA2jHuV0taP>|hUc!&3kjBR@}6WJo*~x4Ycj z+)S$1p`oD+><`k1k!BAWB1E8%cM$|^|H&zR5&X*BPLv)whu0Vz8;?L4g$u9==Ccx4 z`8`Kbd{#ddS_{`wW+x=HYf-rsv=u+zXW5|gxL((@qV#2sa;;jbjt#|q8& zSl`@5&L79eN6`8!R6~#hIiz@Tu>=#*fuSxV3Z}BRg5dsT?|6NO_s4mpt6X?e(`a@t z%ro0Q(r}CeZHOzJ$@*oUf_Oeg>bK}Zb?fn!0NQDMY(1FK#pi+w2t~2YlgDkN)7`Idm#1*lCYqrkA7TK1MJ|Rc&oYDxnQljjieW~ z(cF!!0tWiPXAHI!k$ygsLbLD6UTK}qo*q{8-)-okQA;**`{tIEtigjPo;YkyBF0y1 zaug*!6}}w{-eoK5sMea+qJjb&z+<)MGE8^TO@^2(6#Zi4*NR zr+fPPnxHozT<#`-jUUDqP#h~H^0#l z+P@RWRv5%lTP0P|+TwENgL*mue~DyBf+>!@C{0aG{Rg%#^31W1SL2Xq`)ex2iTmAs z@uzdjw4jt!co}bTNC*Q^We`{!t-(RtZZ5#jBYH|!Ztg=5mw{DG?UA)G6xp*UEn%mn zm6ZS{lKH2lZ5Y3dBFhhj+1K6gVA0BsnLsieBsEQsA2X40;-^lOnIb)J8wp&cp`{f< zd=IkT*jTC|%W6a9pOXg?02US&-V@CdyuXlZ61D(h-OS#whxiwnckf0EPZ6Vmni@Qg z2N+g=blbUg$BuSry8=ce^WA%p>u_v>1 zm2n%ngZ77e>sIfkTg@ZH9)ixP;)9v;#v>!gf9SHnRz>XM&^H9&i*=hmwJjq$N1$ts z@7|?vUt{&~e1x2RF)#Y`1DghcK_M|T1ef$S&fV7dl8`(S!5{&v0X!|>k&F5!;�F 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

QdfAe!xAKRv2*sUF8jDsc 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 LE#)jFbHD!u9VNOX From a28264acae0413b9c580d6abee6e77117bc1fe6e Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 12 Sep 2017 16:01:57 +0200 Subject: [PATCH 111/589] Adjust text positions and sizes CURA-4215 --- cura/CuraSplashScreen.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index 6c82a671c7..dd4dd9b2cc 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -54,13 +54,13 @@ class CuraSplashScreen(QSplashScreen): # draw version text font = QFont() # Using system-default font here - font.setPointSize(38) + font.setPointSize(34) painter.setFont(font) - painter.drawText(230, 90, 330 * self._scale, 230 * self._scale, Qt.AlignHCenter | Qt.AlignBottom, version[0]) + painter.drawText(275, 87, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignBottom, version[0]) if len(version) > 1: font.setPointSize(12) painter.setFont(font) - painter.drawText(280, 77, 330 * self._scale, 255 * self._scale, Qt.AlignHCenter | Qt.AlignBottom, version[1]) + painter.drawText(320, 82, 330 * self._scale, 255 * self._scale, Qt.AlignLeft | Qt.AlignBottom, version[1]) # draw the loading image pen = QPen() @@ -74,7 +74,7 @@ class CuraSplashScreen(QSplashScreen): font = QFont() # Using system-default font here font.setPointSize(16) painter.setFont(font) - painter.drawText(180, 240, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignBottom, + painter.drawText(180, 243, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignBottom, self._current_message) painter.restore() From 80992dd44c6bd6ea82beea8ef2c89f7a99c25e05 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Tue, 12 Sep 2017 17:22:17 +0200 Subject: [PATCH 112/589] The checker now runs also when the user adds a new printer - CURA-4224 --- .../FirmwareUpdateChecker.py | 21 +++++-- .../FirmwareUpdateCheckerJob.py | 55 +++++++++++-------- 2 files changed, 48 insertions(+), 28 deletions(-) diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py index 3b58a56481..f20b8be584 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py @@ -1,11 +1,14 @@ # Copyright (c) 2015 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. - +from UM.Application import Application from UM.Extension import Extension from UM.Preferences import Preferences +from UM.Logger import Logger from UM.i18n import i18nCatalog +from cura.Settings.GlobalStack import GlobalStack from .FirmwareUpdateCheckerJob import FirmwareUpdateCheckerJob +from UM.Settings.ContainerRegistry import ContainerRegistry i18n_catalog = i18nCatalog("cura") @@ -19,8 +22,18 @@ class FirmwareUpdateChecker(Extension): def __init__(self): super().__init__() + # Initialize the Preference called `latest_checked_firmware` that stores the last version + # checked for the UM3. In the future if we need to check other printers' firmware Preferences.getInstance().addPreference("info/latest_checked_firmware", "") - self.checkFirmwareVersion(True) + + # Listen to a Signal that indicates a change in the active printer + ContainerRegistry.getInstance().containerAdded.connect(self._onContainerAdded) + + def _onContainerAdded(self, container): + # Only take care when a new GlobaStack was added + if (isinstance(container, GlobalStack)): + Logger.log("i", "You have a '%s' in printer list. Let's check the firmware!" % container.getId()) + self.checkFirmwareVersion(container, True) ## Connect with software.ultimaker.com, load latest.version and check version info. # If the version info is different from the current version, spawn a message to @@ -28,6 +41,6 @@ class FirmwareUpdateChecker(Extension): # # \param silent type(boolean) Suppresses messages other than "new version found" messages. # This is used when checking for a new firmware version at startup. - def checkFirmwareVersion(self, silent = False): - job = FirmwareUpdateCheckerJob(silent = silent, url = self.url) + def checkFirmwareVersion(self, container = None, silent = False): + job = FirmwareUpdateCheckerJob(container = container, silent = silent, url = self.url) job.start() \ No newline at end of file diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py index 913ac96025..9e0db57ed7 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py @@ -20,8 +20,9 @@ i18n_catalog = i18nCatalog("cura") ## This job checks if there is an update available on the provided URL. class FirmwareUpdateCheckerJob(Job): - def __init__(self, silent = False, url = None): + def __init__(self, container = None, silent = False, url = None): super().__init__() + self._container = container self.silent = silent self._url = url self._download_url = None # If an update was found, the download_url will be set to the location of the new version. @@ -38,38 +39,44 @@ class FirmwareUpdateCheckerJob(Job): Logger.log("e", "Can not check for a new release. URL not set!") return - Logger.log("i", "Checking for new version of firmware") try: request = urllib.request.Request(self._url) current_version_file = urllib.request.urlopen(request) reader = codecs.getreader("utf-8") - # Nothing to parse, just get the string - # TODO: In the future may be done by parsing a JSON file - current_version = reader(current_version_file).readline().rstrip() - Logger.log("i", "Reading firmware version: %s" % current_version) + machine_name = self._container.getId() - # If it is the first time the version is checked, the checked_version is None - checked_version = Preferences.getInstance().getValue("info/latest_checked_firmware") - active_machine = Preferences.getInstance().getValue("cura/active_machine") # If it is not None, then we compare between the checked_version and the current_version - # Now we just do that if the active printer is Ultimaker 3 or Ultimaker 3 Extended - if ((active_machine == "Ultimaker 3 Extended") or (active_machine == "Ultimaker 3"))\ - and ((checked_version is None) or (checked_version != current_version)): - message = Message(i18n_catalog.i18nc("@info", "New %s firmware available

To ensure that your " - "%s is equiped with the latest features it is recommended " - "to update the firmware regularly. This can be done on the " - "%s (when connected to the network) or via USB." - % (active_machine, active_machine, active_machine))) - message.addAction("download", i18n_catalog.i18nc("@action:button", "Download"), "[no_icon]", "[no_description]") + # Now we just do that if the active printer is Ultimaker 3 or Ultimaker 3 Extended or any + # other Ultimaker 3 that will come in the future + if (machine_name[0:11] == "Ultimaker 3"): - # If we do this in a cool way, the download url should be available in the JSON file - self._download_url = "https://ultimaker.com/en/resources/20500-upgrade-firmware" - message.actionTriggered.connect(self.actionTriggered) - # Sometimes it's shown, sometimes not - #message.show() - Application.getInstance().showMessage(message) + # Nothing to parse, just get the string + # TODO: In the future may be done by parsing a JSON file with diferent version for each printer model + current_version = reader(current_version_file).readline().rstrip() + Logger.log("i", "Reading firmware version of %s: %s" % (machine_name, current_version)) + # If it is the first time the version is checked, the checked_version is None + checked_version = Preferences.getInstance().getValue("info/latest_checked_firmware") + + # If the checked_version is '', it's because is the first time we check firmware and in this case + # we will not show the notification, but we will store it for the next time + if (checked_version != "") and (checked_version != current_version): + message = Message(i18n_catalog.i18nc("@info", "New %s firmware available

To ensure that your " + "%s is equiped with the latest features it is recommended " + "to update the firmware regularly. This can be done on the " + "%s (when connected to the network) or via USB." + % (machine_name, machine_name, machine_name))) + message.addAction("download", i18n_catalog.i18nc("@action:button", "Download"), "[no_icon]", "[no_description]") + + # If we do this in a cool way, the download url should be available in the JSON file + self._download_url = "https://ultimaker.com/en/resources/20500-upgrade-firmware" + message.actionTriggered.connect(self.actionTriggered) + Application.getInstance().showMessage(message) + + # The first time we want to store the current version, the notification will not be shown, + # because the new version of Cura will be release before the firmware and we don't want to + # notify the user when no new firmware version is available. Preferences.getInstance().setValue("info/latest_checked_firmware", current_version) except Exception as e: From 37ec3bbb26fb8aa027c4e4f9e558e82d55359f9b Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Tue, 12 Sep 2017 18:19:59 +0200 Subject: [PATCH 113/589] cross pattern for support --- resources/definitions/fdmprinter.def.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 39c1343870..33ec19acd8 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3366,7 +3366,8 @@ "triangles": "Triangles", "concentric": "Concentric", "concentric_3d": "Concentric 3D", - "zigzag": "Zig Zag" + "zigzag": "Zig Zag", + "cross": "Cross" }, "default_value": "zigzag", "enabled": "support_enable", From 15790b3965b76cf6d941aeab59b5b01bc7eb01e3 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Tue, 12 Sep 2017 19:18:28 +0200 Subject: [PATCH 114/589] feat: cross 3d experimental algorithm parameters --- resources/definitions/fdmprinter.def.json | 24 +++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 33ec19acd8..01b2b0b498 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -5186,6 +5186,30 @@ "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true }, + "cross_infill_pocket_size": + { + "label": "Cross 3D Pocket Size", + "description": "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself.", + "unit": "mm", + "type": "float", + "default_value": 2.0, + "value": "infill_line_distance", + "minimum_value": "0", + "maximum_value_warning": "infill_line_distance * math.sqrt(2)", + "enabled": "infill_pattern == 'cross_3d'", + "limit_to_extruder": "infill_extruder_nr", + "settable_per_mesh": true + }, + "cross_infill_apply_pockets_alternatingly": + { + "label": "Alternate Cross 3D Pockets", + "description": "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself.", + "type": "bool", + "default_value": true, + "enabled": "infill_pattern == 'cross_3d'", + "limit_to_extruder": "infill_extruder_nr", + "settable_per_mesh": true + }, "spaghetti_infill_enabled": { "label": "Spaghetti Infill", From aa2c7c2ff6a0b4d695d3499ed043e797b940dd12 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Wed, 13 Sep 2017 10:22:07 +0200 Subject: [PATCH 115/589] Checking first if the user has enabled the 'check for updates' preference - CURA-4224 --- plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py index f20b8be584..994493a4e6 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py @@ -26,8 +26,11 @@ class FirmwareUpdateChecker(Extension): # checked for the UM3. In the future if we need to check other printers' firmware Preferences.getInstance().addPreference("info/latest_checked_firmware", "") - # Listen to a Signal that indicates a change in the active printer - ContainerRegistry.getInstance().containerAdded.connect(self._onContainerAdded) + # Listen to a Signal that indicates a change in the list of printers, just if the user has enabled the + # 'check for updates' option + Preferences.getInstance().addPreference("info/automatic_update_check", True) + if Preferences.getInstance().getValue("info/automatic_update_check"): + ContainerRegistry.getInstance().containerAdded.connect(self._onContainerAdded) def _onContainerAdded(self, container): # Only take care when a new GlobaStack was added From 204019702dc429a9f63b27a724c19d4f03cbfd52 Mon Sep 17 00:00:00 2001 From: alekseisasin Date: Wed, 13 Sep 2017 13:58:08 +0200 Subject: [PATCH 116/589] Added Title for messages CURA-4203 --- cura/ArrangeObjectsJob.py | 9 ++++-- cura/BuildVolume.py | 2 +- cura/CuraApplication.py | 4 +-- cura/MultiplyObjectsJob.py | 4 +-- cura/Settings/CuraContainerRegistry.py | 11 ++++++-- cura/Settings/MachineManager.py | 3 +- cura/Settings/MaterialManager.py | 2 +- .../CuraEngineBackend/CuraEngineBackend.py | 11 +++++--- .../ProcessSlicedLayersJob.py | 2 +- plugins/GCodeReader/GCodeReader.py | 9 ++++-- plugins/LayerView/LayerView.py | 3 +- plugins/PluginBrowser/PluginBrowser.py | 3 +- .../RemovableDriveOutputDevice.py | 15 +++++----- plugins/SliceInfoPlugin/SliceInfo.py | 6 +++- .../NetworkPrinterOutputDevice.py | 28 +++++++++++-------- plugins/USBPrinting/USBPrinterOutputDevice.py | 6 ++-- .../USBPrinterOutputDeviceManager.py | 4 +-- 17 files changed, 76 insertions(+), 46 deletions(-) diff --git a/cura/ArrangeObjectsJob.py b/cura/ArrangeObjectsJob.py index 3158fcc887..8a3bb2daa8 100755 --- a/cura/ArrangeObjectsJob.py +++ b/cura/ArrangeObjectsJob.py @@ -27,7 +27,11 @@ class ArrangeObjectsJob(Job): self._min_offset = min_offset def run(self): - status_message = Message(i18n_catalog.i18nc("@info:status", "Finding new location for objects"), lifetime = 0, dismissable=False, progress = 0) + status_message = Message(i18n_catalog.i18nc("@info:status", "Finding new location for objects"), + lifetime = 0, + dismissable=False, + progress = 0, + title = i18n_catalog.i18nc("@info:title", "Finding Location")) status_message.show() arranger = Arrange.create(fixed_nodes = self._fixed_nodes) @@ -82,5 +86,6 @@ class ArrangeObjectsJob(Job): status_message.hide() if not found_solution_for_all: - no_full_solution_message = Message(i18n_catalog.i18nc("@info:status", "Unable to find a location within the build volume for all objects")) + no_full_solution_message = Message(i18n_catalog.i18nc("@info:status", "Unable to find a location within the build volume for all objects"), + title = i18n_catalog.i18nc("@info:title", "Can't Find Location")) no_full_solution_message.show() diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 62a8b8be4d..1c9a0708fd 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -99,7 +99,7 @@ class BuildVolume(SceneNode): self._build_volume_message = Message(catalog.i18nc("@info:status", "The build volume height has been reduced due to the value of the" " \"Print Sequence\" setting to prevent the gantry from colliding" - " with printed models.")) + " with printed models."), title = catalog.i18nc("@info:title","Build Volume")) # Must be after setting _build_volume_message, apparently that is used in getMachineManager. # activeQualityChanged is always emitted after setActiveVariant, setActiveMaterial and setActiveQuality. diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 021f20fa82..0b01c72574 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1293,7 +1293,7 @@ class CuraApplication(QtApplication): message = Message( self._i18n_catalog.i18nc("@info:status", "Only one G-code file can be loaded at a time. Skipped importing {0}", - filename)) + filename), title = self._i18n_catalog.i18nc("@info:title", "Warning")) message.show() return # If file being loaded is non-slicable file, then prevent loading of any other files @@ -1302,7 +1302,7 @@ class CuraApplication(QtApplication): message = Message( self._i18n_catalog.i18nc("@info:status", "Can't open any other file if G-code is loading. Skipped importing {0}", - filename)) + filename), title = self._i18n_catalog.i18nc("@info:title", "Error")) message.show() return diff --git a/cura/MultiplyObjectsJob.py b/cura/MultiplyObjectsJob.py index a795e0bc10..c986439a5b 100644 --- a/cura/MultiplyObjectsJob.py +++ b/cura/MultiplyObjectsJob.py @@ -32,7 +32,7 @@ class MultiplyObjectsJob(Job): def run(self): status_message = Message(i18n_catalog.i18nc("@info:status", "Multiplying and placing objects"), lifetime=0, - dismissable=False, progress=0) + dismissable=False, progress=0, title = i18n_catalog.i18nc("@info:title", "Placing Object")) status_message.show() scene = Application.getInstance().getController().getScene() @@ -80,5 +80,5 @@ class MultiplyObjectsJob(Job): status_message.hide() if not found_solution_for_all: - no_full_solution_message = Message(i18n_catalog.i18nc("@info:status", "Unable to find a location within the build volume for all objects")) + no_full_solution_message = Message(i18n_catalog.i18nc("@info:status", "Unable to find a location within the build volume for all objects"), title = i18n_catalog.i18nc("@info:title", "Placing Object")) no_full_solution_message.show() diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index c2422d909a..5b7f4199d8 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -140,15 +140,20 @@ class CuraContainerRegistry(ContainerRegistry): success = profile_writer.write(file_name, found_containers) except Exception as e: Logger.log("e", "Failed to export profile to %s: %s", file_name, str(e)) - m = Message(catalog.i18nc("@info:status Don't translate the XML tags or !", "Failed to export profile to {0}: {1}", file_name, str(e)), lifetime = 0) + m = Message(catalog.i18nc("@info:status Don't translate the XML tags or !", "Failed to export profile to {0}: {1}", file_name, str(e)), + lifetime = 0, + title = catalog.i18nc("@info:title", "Error")) m.show() return if not success: Logger.log("w", "Failed to export profile to %s: Writer plugin reported failure.", file_name) - m = Message(catalog.i18nc("@info:status Don't translate the XML tag !", "Failed to export profile to {0}: Writer plugin reported failure.", file_name), lifetime = 0) + m = Message(catalog.i18nc("@info:status Don't translate the XML tag !", "Failed to export profile to {0}: Writer plugin reported failure.", file_name), + lifetime = 0, + title = catalog.i18nc("@info:title", "Error")) m.show() return - m = Message(catalog.i18nc("@info:status Don't translate the XML tag !", "Exported profile to {0}", file_name)) + m = Message(catalog.i18nc("@info:status Don't translate the XML tag !", "Exported profile to {0}", file_name), + title = catalog.i18nc("@info:title", "Export Details")) m.show() ## Gets the plugin object matching the criteria diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 7f7593a9d5..4fb700e5ea 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -105,7 +105,8 @@ class MachineManager(QObject): self._auto_hotends_changed = {} self._material_incompatible_message = Message(catalog.i18nc("@info:status", - "The selected material is incompatible with the selected machine or configuration.")) + "The selected material is incompatible with the selected machine or configuration."), + title = catalog.i18nc("@info:title", "Incompatible Material")) globalContainerChanged = pyqtSignal() # Emitted whenever the global stack is changed (ie: when changing between printers, changing a global profile, but not when changing a value) activeMaterialChanged = pyqtSignal() diff --git a/cura/Settings/MaterialManager.py b/cura/Settings/MaterialManager.py index 5640d7af38..e2f91622c8 100644 --- a/cura/Settings/MaterialManager.py +++ b/cura/Settings/MaterialManager.py @@ -21,7 +21,7 @@ class MaterialManager(QObject): #Material diameter changed warning message. self._material_diameter_warning_message = Message(catalog.i18nc("@info:status Has a cancel button next to it.", - "The selected material diameter causes the material to become incompatible with the current printer.")) + "The selected material diameter causes the material to become incompatible with the current printer."), title = catalog.i18nc("@info:title", "Incompatible Material")) self._material_diameter_warning_message.addAction("Undo", catalog.i18nc("@action:button", "Undo"), None, catalog.i18nc("@action", "Undo changing the material diameter.")) self._material_diameter_warning_message.actionTriggered.connect(self._materialWarningMessageAction) diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index d94c3be94f..ea1f8c39b4 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -278,7 +278,7 @@ class CuraEngineBackend(QObject, Backend): if job.getResult() == StartSliceJob.StartJobResult.MaterialIncompatible: if Application.getInstance().platformActivity: self._error_message = Message(catalog.i18nc("@info:status", - "The selected material is incompatible with the selected machine or configuration.")) + "The selected material is incompatible with the selected machine or configuration."), title = catalog.i18nc("@info:title", "Material Details")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) else: @@ -305,7 +305,8 @@ class CuraEngineBackend(QObject, Backend): error_labels.add(definitions[0].label) error_labels = ", ".join(error_labels) - self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice with the current settings. The following settings have errors: {0}".format(error_labels))) + self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice with the current settings. The following settings have errors: {0}".format(error_labels)), + title = catalog.i18nc("@info:title", "Setting Details")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) else: @@ -314,7 +315,8 @@ class CuraEngineBackend(QObject, Backend): if job.getResult() == StartSliceJob.StartJobResult.BuildPlateError: if Application.getInstance().platformActivity: - self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice because the prime tower or prime position(s) are invalid.")) + self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice because the prime tower or prime position(s) are invalid."), + title = catalog.i18nc("@info:title", "Invalid position")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) else: @@ -322,7 +324,8 @@ class CuraEngineBackend(QObject, Backend): if job.getResult() == StartSliceJob.StartJobResult.NothingToSlice: if Application.getInstance().platformActivity: - self._error_message = Message(catalog.i18nc("@info:status", "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit.")) + self._error_message = Message(catalog.i18nc("@info:status", "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit."), + title = catalog.i18nc("@info:title", "Warning")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) else: diff --git a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py index 1fe537622f..1fbe50873e 100644 --- a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py +++ b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py @@ -235,7 +235,7 @@ class ProcessSlicedLayersJob(Job): if self.isRunning(): if Application.getInstance().getController().getActiveView().getPluginId() == "LayerView": if not self._progress: - self._progress = Message(catalog.i18nc("@info:status", "Processing Layers"), 0, False, 0) + self._progress = Message(catalog.i18nc("@info:status", "Processing Layers"), 0, False, 0, catalog.i18nc("@info:title", "Information")) if self._progress.getProgress() != 100: self._progress.show() else: diff --git a/plugins/GCodeReader/GCodeReader.py b/plugins/GCodeReader/GCodeReader.py index c59e6dce72..115b802b4d 100755 --- a/plugins/GCodeReader/GCodeReader.py +++ b/plugins/GCodeReader/GCodeReader.py @@ -251,7 +251,10 @@ class GCodeReader(MeshReader): self._clearValues() - self._message = Message(catalog.i18nc("@info:status", "Parsing G-code"), lifetime=0) + self._message = Message(catalog.i18nc("@info:status", "Parsing G-code"), + lifetime=0, + title = catalog.i18nc("@info:title", "G-code Details")) + self._message.setProgress(0) self._message.show() @@ -362,7 +365,9 @@ class GCodeReader(MeshReader): if Preferences.getInstance().getValue("gcodereader/show_caution"): caution_message = Message(catalog.i18nc( "@info:generic", - "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate."), lifetime=0) + "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate."), + lifetime=0, + title = catalog.i18nc("@info:title", "G-code Details")) caution_message.show() # The "save/print" button's state is bound to the backend state. diff --git a/plugins/LayerView/LayerView.py b/plugins/LayerView/LayerView.py index 97a343bd33..f79bf5b929 100755 --- a/plugins/LayerView/LayerView.py +++ b/plugins/LayerView/LayerView.py @@ -90,7 +90,8 @@ class LayerView(View): self._only_show_top_layers = bool(Preferences.getInstance().getValue("view/only_show_top_layers")) self._compatibility_mode = True # for safety - self._wireprint_warning_message = Message(catalog.i18nc("@info:status", "Cura does not accurately display layers when Wire Printing is enabled")) + self._wireprint_warning_message = Message(catalog.i18nc("@info:status", "Cura does not accurately display layers when Wire Printing is enabled"), + title = catalog.i18nc("@info:title", "Layer View")) def _resetSettings(self): self._layer_view_type = 0 # 0 is material color, 1 is color by linetype, 2 is speed diff --git a/plugins/PluginBrowser/PluginBrowser.py b/plugins/PluginBrowser/PluginBrowser.py index b8db123a91..2d4a753014 100644 --- a/plugins/PluginBrowser/PluginBrowser.py +++ b/plugins/PluginBrowser/PluginBrowser.py @@ -161,7 +161,8 @@ class PluginBrowser(QObject, Extension): if plugin_id is None: msg = i18n_catalog.i18nc("@info:status", "Failed to get plugin ID from {0}", file_path) - self._progress_message = Message(msg, lifetime=0, dismissable=False) + msg_title = i18n_catalog.i18nc("@info:tile", "Warning") + self._progress_message = Message(msg, lifetime=0, dismissable=False, title = msg_title) return # find a potential license file diff --git a/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py b/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py index 80b2a2a430..4b6a6e8071 100644 --- a/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py +++ b/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py @@ -86,7 +86,7 @@ class RemovableDriveOutputDevice(OutputDevice): job.progress.connect(self._onProgress) job.finished.connect(self._onFinished) - message = Message(catalog.i18nc("@info:progress Don't translate the XML tags !", "Saving to Removable Drive {0}").format(self.getName()), 0, False, -1) + message = Message(catalog.i18nc("@info:progress Don't translate the XML tags !", "Saving to Removable Drive {0}").format(self.getName()), 0, False, -1, catalog.i18nc("@info:title", "Saving")) message.show() self.writeStarted.emit(self) @@ -128,9 +128,8 @@ class RemovableDriveOutputDevice(OutputDevice): self._stream = None except: Logger.logException("w", "An execption occured while trying to write to removable drive.") - message = Message(catalog.i18nc("@info:status", "Could not save to removable drive {0}: {1}").format(self.getName(), - str( - job.getError()))) + message = Message(catalog.i18nc("@info:status", "Could not save to removable drive {0}: {1}").format(self.getName(),str(job.getError())), + title = catalog.i18nc("@info:title", "Error")) message.show() self.writeError.emit(self) return @@ -138,13 +137,13 @@ class RemovableDriveOutputDevice(OutputDevice): self._writing = False self.writeFinished.emit(self) if job.getResult(): - message = Message(catalog.i18nc("@info:status", "Saved to Removable Drive {0} as {1}").format(self.getName(), os.path.basename(job.getFileName()))) + message = Message(catalog.i18nc("@info:status", "Saved to Removable Drive {0} as {1}").format(self.getName(), os.path.basename(job.getFileName())), title = catalog.i18nc("@info:title", "File Saved")) message.addAction("eject", catalog.i18nc("@action:button", "Eject"), "eject", catalog.i18nc("@action", "Eject removable device {0}").format(self.getName())) message.actionTriggered.connect(self._onActionTriggered) message.show() self.writeSuccess.emit(self) else: - message = Message(catalog.i18nc("@info:status", "Could not save to removable drive {0}: {1}").format(self.getName(), str(job.getError()))) + message = Message(catalog.i18nc("@info:status", "Could not save to removable drive {0}: {1}").format(self.getName(), str(job.getError())), title = catalog.i18nc("@info:title", "Warning")) message.show() self.writeError.emit(self) job.getStream().close() @@ -154,7 +153,7 @@ class RemovableDriveOutputDevice(OutputDevice): if Application.getInstance().getOutputDeviceManager().getOutputDevicePlugin("RemovableDriveOutputDevice").ejectDevice(self): message.hide() - eject_message = Message(catalog.i18nc("@info:status", "Ejected {0}. You can now safely remove the drive.").format(self.getName())) + eject_message = Message(catalog.i18nc("@info:status", "Ejected {0}. You can now safely remove the drive.").format(self.getName()), title = catalog.i18nc("@info:title", "Safely Remove Hardware")) else: - eject_message = Message(catalog.i18nc("@info:status", "Failed to eject {0}. Another program may be using the drive.").format(self.getName())) + eject_message = Message(catalog.i18nc("@info:status", "Failed to eject {0}. Another program may be using the drive.").format(self.getName()), title = catalog.i18nc("@info:title", "Warning")) eject_message.show() diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py index 30b664ed63..09373d0c2f 100755 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -40,7 +40,11 @@ class SliceInfo(Extension): Preferences.getInstance().addPreference("info/asked_send_slice_info", False) if not Preferences.getInstance().getValue("info/asked_send_slice_info"): - self.send_slice_info_message = Message(catalog.i18nc("@info", "Cura collects anonymised slicing statistics. You can disable this in the preferences."), lifetime = 0, dismissable = False) + self.send_slice_info_message = Message(catalog.i18nc("@info", "Cura collects anonymised slicing statistics. You can disable this in the preferences."), + lifetime = 0, + dismissable = False, + title = catalog.i18nc("@info:title", "Collecting Data")) + self.send_slice_info_message.addAction("Dismiss", catalog.i18nc("@action:button", "Dismiss"), None, "") self.send_slice_info_message.actionTriggered.connect(self.messageActionTriggered) self.send_slice_info_message.show() diff --git a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py index 450f92a6e3..a0b181b7ce 100755 --- a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py @@ -154,12 +154,12 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): self._authentication_id = None self._authentication_key = None - self._authentication_requested_message = Message(i18n_catalog.i18nc("@info:status", "Access to the printer requested. Please approve the request on the printer"), lifetime = 0, dismissable = False, progress = 0) - self._authentication_failed_message = Message(i18n_catalog.i18nc("@info:status", "")) + self._authentication_requested_message = Message(i18n_catalog.i18nc("@info:status", "Access to the printer requested. Please approve the request on the printer"), lifetime = 0, dismissable = False, progress = 0, title = i18n_catalog.i18nc("@info:title", "Connection status")) + self._authentication_failed_message = Message(i18n_catalog.i18nc("@info:status", ""), title = i18n_catalog.i18nc("@info:title", "Connection Status")) self._authentication_failed_message.addAction("Retry", i18n_catalog.i18nc("@action:button", "Retry"), None, i18n_catalog.i18nc("@info:tooltip", "Re-send the access request")) self._authentication_failed_message.actionTriggered.connect(self.requestAuthentication) - self._authentication_succeeded_message = Message(i18n_catalog.i18nc("@info:status", "Access to the printer accepted")) - self._not_authenticated_message = Message(i18n_catalog.i18nc("@info:status", "No access to print with this printer. Unable to send print job.")) + self._authentication_succeeded_message = Message(i18n_catalog.i18nc("@info:status", "Access to the printer accepted"), title = i18n_catalog.i18nc("@info:title", "Connection Status")) + self._not_authenticated_message = Message(i18n_catalog.i18nc("@info:status", "No access to print with this printer. Unable to send print job."), title = i18n_catalog.i18nc("@info:title", "Connection Status")) self._not_authenticated_message.addAction("Request", i18n_catalog.i18nc("@action:button", "Request Access"), None, i18n_catalog.i18nc("@info:tooltip", "Send access request to the printer")) self._not_authenticated_message.actionTriggered.connect(self.requestAuthentication) @@ -464,7 +464,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): self._connection_state_before_timeout = self._connection_state self.setConnectionState(ConnectionState.error) self._connection_message = Message(i18n_catalog.i18nc("@info:status", - "The connection with the network was lost.")) + "The connection with the network was lost."), + title = i18n_catalog.i18nc("@info:title", "Connection Status")) self._connection_message.show() if self._progress_message: @@ -495,7 +496,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): # Go into timeout state. Logger.log("d", "We did not receive a response for %0.1f seconds, so it seems the printer is no longer accessible.", time_since_last_response) self._connection_state_before_timeout = self._connection_state - self._connection_message = Message(i18n_catalog.i18nc("@info:status", "The connection with the printer was lost. Check your printer to see if it is connected.")) + self._connection_message = Message(i18n_catalog.i18nc("@info:status", "The connection with the printer was lost. Check your printer to see if it is connected."), + title = i18n_catalog.i18nc("@info:title", "Connection Status")) self._connection_message.show() if self._progress_message: @@ -644,7 +646,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): def requestWrite(self, nodes, file_name = None, filter_by_machine = False, file_handler = None, **kwargs): if self._printer_state not in ["idle", ""]: self._error_message = Message( - i18n_catalog.i18nc("@info:status", "Unable to start a new print job, printer is busy. Current printer status is %s.") % self._printer_state) + i18n_catalog.i18nc("@info:status", "Unable to start a new print job, printer is busy. Current printer status is %s.") % self._printer_state, + title = i18n_catalog.i18nc("@info:title", "Printer Status")) self._error_message.show() return elif self._authentication_state != AuthState.Authenticated: @@ -668,14 +671,16 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): if self._json_printer_state["heads"][0]["extruders"][index]["hotend"]["id"] == "": Logger.log("e", "No cartridge loaded in slot %s, unable to start print", index + 1) self._error_message = Message( - i18n_catalog.i18nc("@info:status", "Unable to start a new print job. No Printcore loaded in slot {0}".format(index + 1))) + i18n_catalog.i18nc("@info:status", "Unable to start a new print job. No Printcore loaded in slot {0}".format(index + 1)), + title = i18n_catalog.i18nc("@info:title", "Error")) self._error_message.show() return if self._json_printer_state["heads"][0]["extruders"][index]["active_material"]["guid"] == "": Logger.log("e", "No material loaded in slot %s, unable to start print", index + 1) self._error_message = Message( i18n_catalog.i18nc("@info:status", - "Unable to start a new print job. No material loaded in slot {0}".format(index + 1))) + "Unable to start a new print job. No material loaded in slot {0}".format(index + 1)), + title = i18n_catalog.i18nc("@info:title", "Error")) self._error_message.show() return @@ -831,7 +836,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): def startPrint(self): try: self._send_gcode_start = time() - self._progress_message = Message(i18n_catalog.i18nc("@info:status", "Sending data to printer"), 0, False, -1) + self._progress_message = Message(i18n_catalog.i18nc("@info:status", "Sending data to printer"), 0, False, -1, i18n_catalog.i18nc("@info:title", "Sending Data")) self._progress_message.addAction("Abort", i18n_catalog.i18nc("@action:button", "Cancel"), None, "") self._progress_message.actionTriggered.connect(self._progressMessageActionTrigger) self._progress_message.show() @@ -900,7 +905,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): except IOError: self._progress_message.hide() - self._error_message = Message(i18n_catalog.i18nc("@info:status", "Unable to send data to printer. Is another job still active?")) + self._error_message = Message(i18n_catalog.i18nc("@info:status", "Unable to send data to printer. Is another job still active?"), + title = i18n_catalog.i18nc("@info:title", "Warning")) self._error_message.show() except Exception as e: self._progress_message.hide() diff --git a/plugins/USBPrinting/USBPrinterOutputDevice.py b/plugins/USBPrinting/USBPrinterOutputDevice.py index 529783acb8..4b4c24c5d2 100644 --- a/plugins/USBPrinting/USBPrinterOutputDevice.py +++ b/plugins/USBPrinting/USBPrinterOutputDevice.py @@ -150,7 +150,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): def printGCode(self, gcode_list): Logger.log("d", "Started printing g-code") if self._progress or self._connection_state != ConnectionState.connected: - self._error_message = Message(catalog.i18nc("@info:status", "Unable to start a new job because the printer is busy or not connected.")) + self._error_message = Message(catalog.i18nc("@info:status", "Unable to start a new job because the printer is busy or not connected."), title = catalog.i18nc("@info:title", "Print Details")) self._error_message.show() Logger.log("d", "Printer is busy or not connected, aborting print") self.writeError.emit(self) @@ -453,11 +453,11 @@ class USBPrinterOutputDevice(PrinterOutputDevice): container_stack = Application.getInstance().getGlobalContainerStack() if container_stack.getProperty("machine_gcode_flavor", "value") == "UltiGCode": - self._error_message = Message(catalog.i18nc("@info:status", "This printer does not support USB printing because it uses UltiGCode flavor.")) + self._error_message = Message(catalog.i18nc("@info:status", "This printer does not support USB printing because it uses UltiGCode flavor."), title = catalog.i18nc("@info:title", "USB Printing")) self._error_message.show() return elif not container_stack.getMetaDataEntry("supports_usb_connection"): - self._error_message = Message(catalog.i18nc("@info:status", "Unable to start a new job because the printer does not support usb printing.")) + self._error_message = Message(catalog.i18nc("@info:status", "Unable to start a new job because the printer does not support usb printing."), title = catalog.i18nc("@info:title", "Warning")) self._error_message.show() return diff --git a/plugins/USBPrinting/USBPrinterOutputDeviceManager.py b/plugins/USBPrinting/USBPrinterOutputDeviceManager.py index bb2fda46df..430ec1d844 100644 --- a/plugins/USBPrinting/USBPrinterOutputDeviceManager.py +++ b/plugins/USBPrinting/USBPrinterOutputDeviceManager.py @@ -105,7 +105,7 @@ class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin, Extension): if file_name.startswith("file://"): file_name = QUrl(file_name).toLocalFile() # File dialogs prepend the path with file://, which we don't need / want if not self._usb_output_devices: - Message(i18n_catalog.i18nc("@info", "Unable to update firmware because there are no printers connected.")).show() + Message(i18n_catalog.i18nc("@info", "Unable to update firmware because there are no printers connected."), title = i18n_catalog.i18nc("@info:title", "Warning")).show() return for printer_connection in self._usb_output_devices: @@ -119,7 +119,7 @@ class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin, Extension): self._usb_output_devices[printer_connection].setProgress(100, 100) Logger.log("w", "No firmware found for printer %s called '%s'", printer_connection, file_name) Message(i18n_catalog.i18nc("@info", - "Could not find firmware required for the printer at %s.") % printer_connection).show() + "Could not find firmware required for the printer at %s.") % printer_connection, title = i18n_catalog.i18nc("@info:title", "Printer Firmware")).show() self._firmware_view.close() continue From 4ed5796e6fb43daa7fd3503db61ae475959b81ae Mon Sep 17 00:00:00 2001 From: Mark Date: Wed, 13 Sep 2017 14:44:56 +0200 Subject: [PATCH 117/589] Small improvement on startupscreen CURA-4215 --- resources/images/cura.png | Bin 55074 -> 52943 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/images/cura.png b/resources/images/cura.png index ead100b28a9975b8cf983c10b6507db43897f17f..f3aacf32a768942f8243d620391c3a7a788de0b5 100644 GIT binary patch literal 52943 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 literal 55074 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 n#snzkV_jrtTrLX4#za@z(X#oSoH16wtkk? zqwjp24abHVFMRESQPaO~(jn-)sk8j(G@wH>gub}h0uuhFZXQpNTOR7cKru#b2IgCu z-ZT27A906~Cxn4tx2p_4Mi_m*T{gBQWA*^h5_SguxI+wv@$+wH#WFOku$;^MFzH;# zMw!G)?lW(7VXWh6=C*_{`$f@n3LXZuI$&7^!ZfO5JFcXm{=YFWTPE%dp*0Zl0C?<0 z>?w8ehCmY=@7@DS30eXN#T1`-dVLvgM+fYwV#Gk!vrL5(_5`O~U*Q%odSoM~km`WC z=_C~o{Z4?JQgK9Hw{d?f47t1LDX)RsIu~x90g{Fp*Cg08s)HCfgnC_?2Vx^v{^las z^v05AygLeB?#h8~B1J(qRzlLjz!W3QD(@GNaPkdqGZKQx>16UCqxV*j49L}0*SbD* zv!WQ^4@PzT^yz1Ovj~R7fM$*PTai+*wEOV$N5FvPCAGnNMTH7k&F zo`HXl-14K7%xAoMbr9|8W{qbIa7AH<0H+N_v~gM}=E$M&W0@n4_axfnY$oFbW9R)V~SEu z?F;>tN~+d)*5@Agh&q!tb-#l(wzgxA!^SDATgA0K~o*51xaK zb-=H-79^#FaYLefrK$|{T*sJQuu9JEVlMo$87kld!ZC7?^tDuI^`x_4-Q>PjFp=xV zzoi={BJ-HVTS|+|6{EYit@cfs0gZ{YX9=HDt_%dHRQWlXf)zf2z|)V(akk<9@4{)r zq#w09Hdby63|P1kfJn@KoM12_AO??78~cF5I%3T< z7L8%!bQMc4edR27AHAi&$YXG@JY78;G=rH#n9dH5o&Y-X)qAS>N zwA_1?Ge|NNa2w1E#n{8Ocit(=#Itl}3d^Kglv~&TR8~~_)Lmz20NUkkGhW zaw`F)thRO=XXiSdVwaDFjAiT2z~Y#t^H!;2!9vGRhPylU%OYA(R1>}7@1t^2N%*h4 zb~p)x5gYZ^io|XTM2%8dAqs{Kxi6Kwv}{br&u|RfQcWk|CuvjW% zg9CoXndk)NaC0T&En}8m;nz{U5cFfX0@!D5@s`Nc#oxbwUtrxgEzqQB!^kcolix{{ zME+xF^+)vAr%oCAOucfuJbFWRBL#?Ywi36#H+V=QS~Zpn$)^ze>PcXR!@H4ut$6)N z%r-=OY{SfwaSHsyS%cccMlq5Jy3u;; zmWF=7a5`^DK6({M6EUT8D#&{2RqHiaZH6!Vreto30>wVQ;<|sSL$O z$0D1%r#}{&d~_5;8xd?(&0n@*U&c1wzh84L`>lJzD!qGs3*$$8k1fp4Z}O0ILz82~{qKC3i^i3yDQSxbF>J#8`&@1wxmNYK zPR;SWX7|S2S;B4hCIK;pTL|kKRUg^UbuUH9iMK@YV#hfa@qGW!{ZXI`(_S1@D#j_)4O3S*Nm7)4uASJ4)A` z8a^2XEB#l?bTiB+epSMfZ!-W zyokGN>zm?t+xba!+5=0>D+;2#qy`XM8XwUzaLtFfk=7(IG7JW5nP|Z|r8FMNL;MaQyW`2xYsw?j`Z}g*N>F@je!#LV%0D8W@0rU!<=hj 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 From f20f214379fd465eb0b534298a52a46a3bfd5afc Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 13 Sep 2017 15:39:36 +0200 Subject: [PATCH 118/589] Fix status unknown color and background --- .../themes/cura-dark/images/tab_status_unknown.svg | 13 +++++++++++++ .../themes/cura-light/icons/tab_status_unknown.svg | 4 +--- 2 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 resources/themes/cura-dark/images/tab_status_unknown.svg diff --git a/resources/themes/cura-dark/images/tab_status_unknown.svg b/resources/themes/cura-dark/images/tab_status_unknown.svg new file mode 100644 index 0000000000..d20218bc00 --- /dev/null +++ b/resources/themes/cura-dark/images/tab_status_unknown.svg @@ -0,0 +1,13 @@ + + + + Unknown + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/tab_status_unknown.svg b/resources/themes/cura-light/icons/tab_status_unknown.svg index f195ae238a..9f413baffc 100644 --- a/resources/themes/cura-light/icons/tab_status_unknown.svg +++ b/resources/themes/cura-light/icons/tab_status_unknown.svg @@ -5,9 +5,7 @@ Created with Sketch. - - - + From 7b32ba7a9b63d44ce3271f5e9600bd6ecc8cd774 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 13 Sep 2017 15:45:48 +0200 Subject: [PATCH 119/589] Subdue buildplate colors --- resources/themes/cura-dark/theme.json | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/resources/themes/cura-dark/theme.json b/resources/themes/cura-dark/theme.json index dbe19bd298..e5a192634f 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -3,8 +3,8 @@ "name": "Ultimaker Dark", "inherits": "cura-light" }, - "colors": { + "colors": { "sidebar": [39, 44, 48, 255], "lining": [64, 69, 72, 255], "viewport_overlay": [0, 6, 9, 222], @@ -169,10 +169,9 @@ "viewport_background": [31, 36, 39, 255], "volume_outline": [1, 168, 230, 255], - "buildplate": [252, 252, 252, 255], - "buildplate_alt": [204, 204, 204, 255], + "buildplate": [169, 169, 169, 255], "buildplate_grid": [129, 131, 134, 255], - "buildplate_grid_minor": [129, 131, 134, 31], + "buildplate_grid_minor": [154, 154, 155, 255], "convex_hull": [35, 35, 35, 127], "disallowed_area": [0, 0, 0, 52], From a29bdf1ebc5922aab70de1aa40cebd05377c4c9c Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 13 Sep 2017 15:47:38 +0200 Subject: [PATCH 120/589] Move status icon to correct folder --- .../themes/cura-dark/{images => icons}/tab_status_unknown.svg | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename resources/themes/cura-dark/{images => icons}/tab_status_unknown.svg (100%) diff --git a/resources/themes/cura-dark/images/tab_status_unknown.svg b/resources/themes/cura-dark/icons/tab_status_unknown.svg similarity index 100% rename from resources/themes/cura-dark/images/tab_status_unknown.svg rename to resources/themes/cura-dark/icons/tab_status_unknown.svg From b0c7ade93093bf2d83e1cc8d49543ce1472e2115 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 13 Sep 2017 15:50:30 +0200 Subject: [PATCH 121/589] Fix logo readability --- resources/themes/cura-dark/images/logo.svg | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 resources/themes/cura-dark/images/logo.svg diff --git a/resources/themes/cura-dark/images/logo.svg b/resources/themes/cura-dark/images/logo.svg new file mode 100644 index 0000000000..65e306b10f --- /dev/null +++ b/resources/themes/cura-dark/images/logo.svg @@ -0,0 +1,72 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + From 72b85fe69ab097a30c5117b77257f04846919840 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 13 Sep 2017 15:58:39 +0200 Subject: [PATCH 122/589] Fix control hover/activefocus indication --- resources/themes/cura-dark/theme.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/resources/themes/cura-dark/theme.json b/resources/themes/cura-dark/theme.json index e5a192634f..61eefd5122 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -15,6 +15,9 @@ "border": [127, 127, 127, 255], "secondary": [241, 242, 242, 255], + "topbar_background_color": [0, 0, 0, 0], + "topbar_background_color_monitoring": [0, 0, 0, 255], + "text": [255, 255, 255, 204], "text_detail": [255, 255, 255, 172], "text_link": [255, 255, 255, 127], @@ -96,15 +99,15 @@ "setting_category_active_hover_text": [255, 255, 255, 204], "setting_category_border": [39, 44, 48, 0], "setting_category_disabled_border": [39, 44, 48, 0], - "setting_category_hover_border": [39, 44, 48, 0], + "setting_category_hover_border": [12, 169, 227, 255], "setting_category_active_border": [39, 44, 48, 0], - "setting_category_active_hover_border": [39, 44, 48, 0], + "setting_category_active_hover_border": [12, 169, 227, 255], "setting_control": [43, 48, 52, 255], "setting_control_selected": [34, 39, 42, 38], "setting_control_highlight": [255, 255, 255, 0], "setting_control_border": [255, 255, 255, 38], - "setting_control_border_highlight": [255, 255, 255, 38], + "setting_control_border_highlight": [12, 169, 227, 255], "setting_control_text": [255, 255, 255, 181], "setting_control_button": [255, 255, 255, 127], "setting_control_button_hover": [255, 255, 255, 204], From f2dbde0fe1c41a3a49088a52b40393e1d6699d80 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 13 Sep 2017 16:04:06 +0200 Subject: [PATCH 123/589] Fix readability of top bar buttons --- resources/themes/cura-dark/theme.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/resources/themes/cura-dark/theme.json b/resources/themes/cura-dark/theme.json index 61eefd5122..4d256e4ad9 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -18,6 +18,10 @@ "topbar_background_color": [0, 0, 0, 0], "topbar_background_color_monitoring": [0, 0, 0, 255], + "topbar_button_text_active": [255, 255, 255, 255], + "topbar_button_text_inactive": [128, 128, 128, 255], + "topbar_button_text_hovered": [255, 255, 255, 255], + "text": [255, 255, 255, 204], "text_detail": [255, 255, 255, 172], "text_link": [255, 255, 255, 127], From eed96473b1c11ae1517c29213b593d390153b52e Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 13 Sep 2017 16:07:50 +0200 Subject: [PATCH 124/589] Brighten z axis for readability on dark colors --- resources/themes/cura-dark/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-dark/theme.json b/resources/themes/cura-dark/theme.json index 4d256e4ad9..bb7012396c 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -170,7 +170,7 @@ "disabled_axis": [127, 127, 127, 255], "x_axis": [255, 0, 0, 255], - "y_axis": [0, 0, 255, 255], + "y_axis": [96, 96, 255, 255], "z_axis": [0, 255, 0, 255], "all_axis": [255, 255, 255, 255], From 53d2b8ea978aca94e6fa8702772347a450f86e1c Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 13 Sep 2017 16:15:24 +0200 Subject: [PATCH 125/589] Remove solid white background behind simple mode controls --- resources/qml/SidebarSimple.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index c2c1562fbb..342c30d56a 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -31,7 +31,7 @@ Item style: UM.Theme.styles.scrollview flickableItem.flickableDirection: Flickable.VerticalFlick - Rectangle + Item { width: childrenRect.width height: childrenRect.height From 764514bb904b3595fb3ad5c21950fe96fe091be0 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 13 Sep 2017 16:15:38 +0200 Subject: [PATCH 126/589] Subdue volume outline --- resources/themes/cura-dark/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-dark/theme.json b/resources/themes/cura-dark/theme.json index bb7012396c..4874b2a100 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -175,7 +175,7 @@ "all_axis": [255, 255, 255, 255], "viewport_background": [31, 36, 39, 255], - "volume_outline": [1, 168, 230, 255], + "volume_outline": [12, 169, 227, 128], "buildplate": [169, 169, 169, 255], "buildplate_grid": [129, 131, 134, 255], "buildplate_grid_minor": [154, 154, 155, 255], From 84ad9c6ad1edd08216df0834298fd558c1268920 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 13 Sep 2017 12:48:48 +0200 Subject: [PATCH 127/589] Add "available" flag for quality profiles CURA-4182 Add "available" flag for quality profile model so the slider can use it to show available and unavailable profiles. --- cura/QualityManager.py | 13 ++++- cura/Settings/ProfilesModel.py | 80 +++++++++++++++++++++++++---- resources/qml/Menus/ProfileMenu.qml | 1 + 3 files changed, 84 insertions(+), 10 deletions(-) diff --git a/cura/QualityManager.py b/cura/QualityManager.py index e92829e546..813d23ea13 100644 --- a/cura/QualityManager.py +++ b/cura/QualityManager.py @@ -82,6 +82,17 @@ class QualityManager: return list(common_quality_types) + def findAllQualitiesForMachineAndMaterials(self, machine_definition: "DefinitionContainerInterface", material_containers: List[InstanceContainer]) -> List[InstanceContainer]: + # Determine the common set of quality types which can be + # applied to all of the materials for this machine. + quality_type_dict = self.__fetchQualityTypeDictForMaterial(machine_definition, material_containers[0]) + qualities = set(quality_type_dict.values()) + for material_container in material_containers[1:]: + next_quality_type_dict = self.__fetchQualityTypeDictForMaterial(machine_definition, material_container) + qualities.update(set(next_quality_type_dict.values())) + + return list(qualities) + ## Fetches a dict of quality types names to quality profiles for a combination of machine and material. # # \param machine_definition \type{DefinitionContainer} the machine definition. @@ -121,7 +132,7 @@ class QualityManager: # \param material_container \type{InstanceContainer} the material. # \return \type{List[InstanceContainer]} the list of suitable qualities. def findAllQualitiesForMachineMaterial(self, machine_definition: "DefinitionContainerInterface", material_container: InstanceContainer) -> List[InstanceContainer]: - criteria = {"type": "quality" } + criteria = {"type": "quality"} result = self._getFilteredContainersForStack(machine_definition, [material_container], **criteria) if not result: basic_materials = self._getBasicMaterials(material_container) diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py index 545f44401a..2942577fc6 100644 --- a/cura/Settings/ProfilesModel.py +++ b/cura/Settings/ProfilesModel.py @@ -1,6 +1,8 @@ -# Copyright (c) 2016 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. +from collections import OrderedDict + from PyQt5.QtCore import Qt from UM.Application import Application @@ -10,14 +12,19 @@ from UM.Settings.Models.InstanceContainersModel import InstanceContainersModel from cura.QualityManager import QualityManager from cura.Settings.ExtruderManager import ExtruderManager + ## QML Model for listing the current list of valid quality profiles. # class ProfilesModel(InstanceContainersModel): LayerHeightRole = Qt.UserRole + 1001 + LayerHeightWithoutUnitRole = Qt.UserRole + 1002 + AvailableRole = Qt.UserRole + 1003 def __init__(self, parent = None): super().__init__(parent) self.addRoleName(self.LayerHeightRole, "layer_height") + self.addRoleName(self.LayerHeightWithoutUnitRole, "layer_height_without_unit") + self.addRoleName(self.AvailableRole, "available") Application.getInstance().globalContainerStackChanged.connect(self._update) @@ -47,8 +54,9 @@ class ProfilesModel(InstanceContainersModel): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack is None: return [] + global_stack_definition = global_container_stack.getBottom() - # Get the list of extruders and place the selected extruder at the front of the list. + # Get the list of extruders and place the selected extruder at the front of the list. extruder_manager = ExtruderManager.getInstance() active_extruder = extruder_manager.getActiveExtruderStack() extruder_stacks = extruder_manager.getActiveExtruderStacks() @@ -56,10 +64,22 @@ class ProfilesModel(InstanceContainersModel): extruder_stacks.remove(active_extruder) extruder_stacks = [active_extruder] + extruder_stacks - # Fetch the list of useable qualities across all extruders. + if ExtruderManager.getInstance().getActiveExtruderStacks(): + # Multi-extruder machine detected. + materials = [extruder.material for extruder in extruder_stacks] + else: + # Machine with one extruder. + materials = [global_container_stack.material] + + # Fetch the list of usable qualities across all extruders. # The actual list of quality profiles come from the first extruder in the extruder list. - return QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, - extruder_stacks) + result = QualityManager.getInstance().findAllQualitiesForMachineAndMaterials(global_stack_definition, + materials) + for quality in QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders( + global_container_stack, extruder_stacks): + if quality not in result: + result.append(quality) + return result ## Re-computes the items in this model, and adds the layer height role. def _recomputeItems(self): @@ -67,6 +87,17 @@ class ProfilesModel(InstanceContainersModel): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack is None: return + + # Get the list of extruders and place the selected extruder at the front of the list. + extruder_manager = ExtruderManager.getInstance() + active_extruder = extruder_manager.getActiveExtruderStack() + extruder_stacks = extruder_manager.getActiveExtruderStacks() + if active_extruder in extruder_stacks: + extruder_stacks.remove(active_extruder) + extruder_stacks = [active_extruder] + extruder_stacks + # Get a list of available qualities for this machine and material + qualities = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, + extruder_stacks) container_registry = ContainerRegistry.getInstance() machine_manager = Application.getInstance().getMachineManager() @@ -74,17 +105,44 @@ class ProfilesModel(InstanceContainersModel): if not unit: unit = "" + # group all quality items according to quality_types, so we know which profile suits the currently + # active machine and material, and later yield the right ones. + tmp_all_quality_items = OrderedDict() for item in super()._recomputeItems(): + profile = container_registry.findContainers(id = item["id"]) + quality_type = profile[0].getMetaDataEntry("quality_type") if profile else "" + + if quality_type not in tmp_all_quality_items: + tmp_all_quality_items[quality_type] = {"suitable_container": None, + "all_containers": []} + + tmp_all_quality_items[quality_type]["all_containers"].append(item) + if tmp_all_quality_items[quality_type]["suitable_container"] is None and profile[0] in qualities: + tmp_all_quality_items[quality_type]["suitable_container"] = item + + # reverse the ordering (finest first, coarsest last) + all_quality_items = OrderedDict() + for key in reversed(tmp_all_quality_items.keys()): + all_quality_items[key] = tmp_all_quality_items[key] + + for data_item in all_quality_items.values(): + item = data_item["suitable_container"] + if item is None: + item = data_item["all_containers"][0] + profile = container_registry.findContainers(id = item["id"]) if not profile: item["layer_height"] = "" #Can't update a profile that is unknown. + item["available"] = False yield item continue - #Easy case: This profile defines its own layer height. profile = profile[0] + item["available"] = profile in qualities + + #Easy case: This profile defines its own layer height. if profile.hasProperty("layer_height", "value"): - item["layer_height"] = str(profile.getProperty("layer_height", "value")) + unit + self._setItemLayerHeight(item, profile.getProperty("layer_height", "value"), unit) yield item continue @@ -102,7 +160,7 @@ class ProfilesModel(InstanceContainersModel): else: quality = None if quality and quality.hasProperty("layer_height", "value"): - item["layer_height"] = str(quality.getProperty("layer_height", "value")) + unit + self._setItemLayerHeight(item, quality.getProperty("layer_height", "value"), unit) yield item continue @@ -112,5 +170,9 @@ class ProfilesModel(InstanceContainersModel): skip_until_container = global_container_stack.variant if not skip_until_container or skip_until_container == ContainerRegistry.getInstance().getEmptyInstanceContainer(): #No variant in stack. skip_until_container = global_container_stack.getBottom() - item["layer_height"] = str(global_container_stack.getRawProperty("layer_height", "value", skip_until_container = skip_until_container.getId())) + unit #Fall through to the currently loaded material. + self._setItemLayerHeight(item, global_container_stack.getRawProperty("layer_height", "value", skip_until_container = skip_until_container.getId()), unit) # Fall through to the currently loaded material. yield item + + def _setItemLayerHeight(self, item, value, unit): + item["layer_height"] = str(value) + unit + item["layer_height_without_unit"] = str(value) diff --git a/resources/qml/Menus/ProfileMenu.qml b/resources/qml/Menus/ProfileMenu.qml index 4a2908277e..d6412c50be 100644 --- a/resources/qml/Menus/ProfileMenu.qml +++ b/resources/qml/Menus/ProfileMenu.qml @@ -22,6 +22,7 @@ Menu checked: Cura.MachineManager.activeQualityChangesId == "" && Cura.MachineManager.activeQualityType == model.metadata.quality_type exclusiveGroup: group onTriggered: Cura.MachineManager.setActiveQuality(model.id) + visible: model.available } onObjectAdded: menu.insertItem(index, object); From d82a1daacf588350c85045750d19ac915500153e Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 13 Sep 2017 15:18:43 +0200 Subject: [PATCH 128/589] Add new quality/resolution slider CURA-4182 --- resources/qml/SidebarSimple.qml | 379 ++++++++++++++++++++++++- resources/themes/cura-light/theme.json | 8 + 2 files changed, 385 insertions(+), 2 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index c2c1562fbb..cd93a7c546 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -35,12 +35,386 @@ Item { width: childrenRect.width height: childrenRect.height + + // + // Quality profile + // + Text + { + id: resolutionLabel + anchors.top: resolutionSlider.top + anchors.topMargin: UM.Theme.getSize("default_margin").height / 4 + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width + width: UM.Theme.getSize("sidebar").width * .45 - UM.Theme.getSize("sidebar_margin").width + + text: catalog.i18nc("@label", "Layer Height") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + } + + Text + { + id: speedLabel + anchors.bottom: resolutionSlider.bottom + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width + + text: catalog.i18nc("@label", "Print Speed") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + } + + Text + { + id: speedLabelSlower + anchors.top: speedLabel.top + anchors.left: resolutionSlider.left + + text: catalog.i18nc("@label", "Slower") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + horizontalAlignment: Text.AlignLeft + } + + Text + { + id: speedLabelFaster + anchors.top: speedLabel.top + anchors.right: resolutionSlider.right + + text: catalog.i18nc("@label", "Faster") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + horizontalAlignment: Text.AlignRight + } + + Item + { + id: resolutionSlider + anchors.top: parent.top + anchors.topMargin: UM.Theme.getSize("default_margin").height / 2 + anchors.left: infillCellRight.left + anchors.right: infillCellRight.right + width: UM.Theme.getSize("sidebar").width * .55 + height: UM.Theme.getSize("quality_slider_bar").height * 30 + + property var model: Cura.ProfilesModel + + Connections + { + target: Cura.ProfilesModel + onItemsChanged: + { + resolutionSlider.updateCurrentQualityIndex(); + resolutionSlider.updateBar(); + } + } + + Connections + { + target: Cura.MachineManager + onActiveQualityChanged: + { + resolutionSlider.updateCurrentQualityIndex(); + resolutionSlider.updateBar(); + } + } + + Component.onCompleted: + { + updateCurrentQualityIndex(); + updateBar(); + } + + function updateCurrentQualityIndex() + { + for (var i = 0; i < resolutionSlider.model.rowCount(); ++i) + { + if (Cura.MachineManager.activeQualityId == resolutionSlider.model.getItem(i).id) + { + if (resolutionSlider.currentQualityIndex != i) + { + resolutionSlider.currentQualityIndex = i; + } + return; + } + } + resolutionSlider.currentQualityIndex = undefined; + } + + function updateBar() + { + fullRangeMax = Cura.ProfilesModel.rowCount(); + + // set avaiableMin + var foundAvaiableMin = false; + for (var i = 0; i < Cura.ProfilesModel.rowCount(); ++i) + { + if (Cura.ProfilesModel.getItem(i).available) + { + avaiableMin = i; + foundAvaiableMin = true; + break; + } + } + if (!foundAvaiableMin) + { + avaiableMin = undefined; + } + + var foundAvaiableMax = false; + for (var i = Cura.ProfilesModel.rowCount() - 1; i >= 0; --i) + { + if (Cura.ProfilesModel.getItem(i).available) + { + avaiableMax = i; + foundAvaiableMax = true; + break; + } + } + if (!foundAvaiableMax) + { + avaiableMax = undefined; + } + + currentHover = undefined; + backgroundBar.requestPaint(); + } + + property var fullRangeMin: 0 + property var fullRangeMax: model.rowCount() + + property var avaiableMin + property var avaiableMax + property var currentQualityIndex + property var currentHover + + //TODO: get from theme + property var barLeftRightMargin: 5 + property var tickLeftRightMargin: 2 + property var tickMargin: 15 + property var tickThickness: 1 + property var tickWidth: 1 + property var tickHeight: 5 + property var tickTextHeight: 8 + property var totalTickCount: fullRangeMax - fullRangeMin + property var selectedCircleDiameter: 10 + + property var showQualityText: false + + property var tickStepSize: (width - (barLeftRightMargin + tickLeftRightMargin) * 2) / (totalTickCount > 1 ? totalTickCount - 1 : 1) + property var tickAreaList: + { + var area_list = []; + if (avaiableMin != undefined && avaiableMax != undefined) + { + for (var i = avaiableMin; i <= avaiableMax; ++i) + { + var start_x = (barLeftRightMargin + tickLeftRightMargin) + tickStepSize * (i - fullRangeMin); + var diameter = tickStepSize * 0.9; + start_x = start_x + tickWidth / 2 - (diameter / 2); + var end_x = start_x + diameter; + var start_y = height / 2 - diameter / 2; + var end_y = start_y + diameter; + + var area = {"id": i, + "start_x": start_x, "end_x": end_x, + "start_y": start_y, "end_y": end_y, + }; + area_list.push(area); + } + } + return area_list; + } + + onCurrentHoverChanged: + { + backgroundBar.requestPaint(); + } + onCurrentQualityIndex: + { + backgroundBar.requestPaint(); + } + + // background bar + Canvas + { + id: backgroundBar + anchors.fill: parent + + Timer { + interval: 16 + running: true + repeat: true + onTriggered: backgroundBar.requestPaint() + } + + onPaint: + { + var ctx = getContext("2d"); + ctx.reset(); + ctx.fillStyle = UM.Theme.getColor("quality_slider_unavailable"); + + const bar_left_right_margin = resolutionSlider.barLeftRightMargin; + const tick_left_right_margin = resolutionSlider.tickLeftRightMargin; + const tick_margin = resolutionSlider.tickMargin; + const bar_thickness = resolutionSlider.tickThickness; + const tick_width = resolutionSlider.tickWidth; + const tick_height = resolutionSlider.tickHeight; + const tick_text_height = resolutionSlider.tickTextHeight; + const selected_circle_diameter = resolutionSlider.selectedCircleDiameter; + + // draw unavailable bar + const bar_top = parent.height / 2 - bar_thickness / 2; + ctx.fillRect(bar_left_right_margin, bar_top, width - bar_left_right_margin * 2, bar_thickness); + + // draw unavailable ticks + var total_tick_count = resolutionSlider.totalTickCount; + const step_size = resolutionSlider.tickStepSize; + var current_start_x = bar_left_right_margin + tick_left_right_margin; + + const tick_top = parent.height / 2 - tick_height / 2; + + for (var i = 0; i < total_tick_count; ++i) + { + ctx.fillRect(current_start_x, tick_top, tick_width, tick_height); + current_start_x += step_size; + } + + // draw available bar and ticks + if (resolutionSlider.avaiableMin != undefined && resolutionSlider.avaiableMax != undefined) + { + current_start_x = (bar_left_right_margin + tick_left_right_margin) + step_size * (resolutionSlider.avaiableMin - resolutionSlider.fullRangeMin); + ctx.fillStyle = UM.Theme.getColor("quality_slider_available"); + total_tick_count = resolutionSlider.avaiableMax - resolutionSlider.avaiableMin + 1; + + const available_bar_width = step_size * (total_tick_count - 1); + ctx.fillRect(current_start_x, bar_top, available_bar_width, bar_thickness); + + for (var i = 0; i < total_tick_count; ++i) + { + ctx.fillRect(current_start_x, tick_top, tick_width, tick_height); + current_start_x += step_size; + } + } + + // print the selected circle + if (resolutionSlider.currentQualityIndex != undefined) + { + var circle_start_x = (bar_left_right_margin + tick_left_right_margin) + step_size * (resolutionSlider.currentQualityIndex - resolutionSlider.fullRangeMin); + circle_start_x = circle_start_x + tick_width / 2 - selected_circle_diameter / 2; + var circle_start_y = height / 2 - selected_circle_diameter / 2; + ctx.fillStyle = UM.Theme.getColor("quality_slider_handle"); + ctx.beginPath(); + ctx.ellipse(circle_start_x, circle_start_y, selected_circle_diameter, selected_circle_diameter); + ctx.fill(); + ctx.closePath(); + } + + // print the hovered circle + if (resolutionSlider.currentHover != undefined && resolutionSlider.currentHover != resolutionSlider.currentQualityIndex) + { + var circle_start_x = (bar_left_right_margin + tick_left_right_margin) + step_size * (resolutionSlider.currentHover - resolutionSlider.fullRangeMin); + circle_start_x = circle_start_x + tick_width / 2 - selected_circle_diameter / 2; + var circle_start_y = height / 2 - selected_circle_diameter / 2; + ctx.fillStyle = UM.Theme.getColor("quality_slider_handle_hover"); + ctx.beginPath(); + ctx.ellipse(circle_start_x, circle_start_y, selected_circle_diameter, selected_circle_diameter); + ctx.fill(); + ctx.closePath(); + } + + // print layer height texts + total_tick_count = resolutionSlider.totalTickCount; + const step_size = resolutionSlider.tickStepSize; + current_start_x = bar_left_right_margin + tick_left_right_margin; + for (var i = 0; i < total_tick_count; ++i) + { + const text_top = parent.height / 2 - tick_height - tick_text_height; + ctx.fillStyle = UM.Theme.getColor("quality_slider_text"); + + ctx.font = "12px sans-serif"; + const string_length = resolutionSlider.model.getItem(i).layer_height_without_unit.length; + const offset = string_length / 2 * 4; + + var start_x = current_start_x - offset; + if (i == 0) + { + start_x = 0; + } + else if (i == total_tick_count - 1) + { + start_x = current_start_x - offset * 2; + } + + ctx.fillText(resolutionSlider.model.getItem(i).layer_height_without_unit, start_x, text_top); + current_start_x += step_size; + } + + // print currently selected quality text + if (resolutionSlider.showQualityText && resolutionSlider.currentQualityIndex != undefine) + { + const text_top = parent.height / 2 + tick_height + tick_text_height * 2; + total_tick_count = resolutionSlider.totalTickCount; + const step_size = resolutionSlider.tickStepSize; + current_start_x = (tick_left_right_margin) + step_size * (resolutionSlider.currentQualityIndex - resolutionSlider.fullRangeMin); + ctx.fillStyle = UM.Theme.getColor("quality_slider_text"); + ctx.fillText(resolutionSlider.model.getItem(resolutionSlider.currentQualityIndex).name, current_start_x - 6, text_top); + } + } + + MouseArea + { + anchors.fill: parent + hoverEnabled: true + + onClicked: + { + for (var i = 0; i < resolutionSlider.tickAreaList.length; ++i) + { + var area = resolutionSlider.tickAreaList[i]; + if (area.start_x <= mouseX && mouseX <= area.end_x && area.start_y <= mouseY && mouseY <= area.end_y) + { + resolutionSlider.currentHover = undefined; + resolutionSlider.currentQualityIndex = area.id; + + Cura.MachineManager.setActiveQuality(resolutionSlider.model.getItem(resolutionSlider.currentQualityIndex).id); + return; + } + } + resolutionSlider.currentHover = undefined; + } + onPositionChanged: + { + for (var i = 0; i < resolutionSlider.tickAreaList.length; ++i) + { + var area = resolutionSlider.tickAreaList[i]; + if (area.start_x <= mouseX && mouseX <= area.end_x && area.start_y <= mouseY && mouseY <= area.end_y) + { + resolutionSlider.currentHover = area.id; + return; + } + } + resolutionSlider.currentHover = undefined; + } + onExited: + { + resolutionSlider.currentHover = undefined; + } + } + } + } + + // + // Infill + // Item { id: infillCellLeft - anchors.top: parent.top + anchors.top: speedLabel.top + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 1.2 anchors.left: parent.left - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 0.8 width: UM.Theme.getSize("sidebar").width * .45 - UM.Theme.getSize("sidebar_margin").width height: childrenRect.height @@ -69,6 +443,7 @@ Item anchors.left: infillCellLeft.right anchors.top: infillCellLeft.top + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height Repeater { diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 6fd8f43b3e..1271dfbe71 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -196,6 +196,12 @@ "slider_handle_border": [39, 44, 48, 255], "slider_text_background": [255, 255, 255, 255], + "quality_slider_unavailable": [179, 179, 179, 255], + "quality_slider_available": [0, 0, 0, 255], + "quality_slider_handle": [0, 0, 0, 255], + "quality_slider_handle_hover": [127, 127, 127, 255], + "quality_slider_text": [0, 0, 0, 255], + "checkbox": [255, 255, 255, 255], "checkbox_hover": [255, 255, 255, 255], "checkbox_border": [64, 69, 72, 255], @@ -338,6 +344,8 @@ "scrollbar": [0.75, 0.5], + "quality_slider_bar": [1, 0.2], + "slider_groove": [0.3, 0.3], "slider_handle": [1.0, 1.0], "slider_layerview_size": [1.0, 22.0], From 3d6648fc5909b56947b622ed471df58fa623c6b2 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 13 Sep 2017 17:12:51 +0200 Subject: [PATCH 129/589] Rearrange quality profile slider and dropdown box CURA-4182 - Remove the quality profile dropdown box from Recommended mode - Move the quality profile dropdown box to Custom mode --- resources/qml/Settings/SettingView.qml | 87 +++++++++++++++++++++++++- resources/qml/Sidebar.qml | 85 +------------------------ 2 files changed, 87 insertions(+), 85 deletions(-) diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml index b6b79ed3d4..8dd8670f05 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -9,6 +9,8 @@ import QtQuick.Layouts 1.1 import UM 1.2 as UM import Cura 1.0 as Cura +import "../Menus" + Item { id: base; @@ -18,6 +20,88 @@ Item signal showTooltip(Item item, point location, string text); signal hideTooltip(); + Item + { + id: globalProfileRow + height: UM.Theme.getSize("sidebar_setup").height + visible: !sidebar.monitoringPrint && !sidebar.hideSettings + + anchors + { + top: parent.top + left: parent.left + leftMargin: UM.Theme.getSize("sidebar_margin").width + right: parent.right + rightMargin: UM.Theme.getSize("sidebar_margin").width + } + + Text + { + id: globalProfileLabel + text: catalog.i18nc("@label","Profile:"); + width: parent.width * 0.45 - UM.Theme.getSize("sidebar_margin").width - 2 + font: UM.Theme.getFont("default"); + color: UM.Theme.getColor("text"); + verticalAlignment: Text.AlignVCenter + anchors.top: parent.top + anchors.bottom: parent.bottom + } + + ToolButton + { + id: globalProfileSelection + + text: { + var result = Cura.MachineManager.activeQualityName; + if (Cura.MachineManager.activeQualityLayerHeight > 0) { + result += " "; + result += " - "; + result += Cura.MachineManager.activeQualityLayerHeight + "mm"; + result += ""; + } + return result; + } + enabled: !header.currentExtruderVisible || header.currentExtruderIndex > -1 + + width: parent.width * 0.55 + height: UM.Theme.getSize("setting_control").height + anchors.left: globalProfileLabel.right + anchors.right: parent.right + tooltip: Cura.MachineManager.activeQualityName + style: UM.Theme.styles.sidebar_header_button + activeFocusOnPress: true; + menu: ProfileMenu { } + + UM.SimpleButton + { + id: customisedSettings + + visible: Cura.MachineManager.hasUserSettings + height: parent.height * 0.6 + width: parent.height * 0.6 + + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("setting_preferences_button_margin").width - UM.Theme.getSize("sidebar_margin").width + + color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button"); + iconSource: UM.Theme.getIcon("star"); + + onClicked: + { + forceActiveFocus(); + Cura.Actions.manageProfiles.trigger() + } + onEntered: + { + var content = catalog.i18nc("@tooltip","Some setting/override values are different from the values stored in the profile.\n\nClick to open the profile manager.") + base.showTooltip(globalProfileRow, Qt.point(-UM.Theme.getSize("sidebar_margin").width, 0), content) + } + onExited: base.hideTooltip() + } + } + } + Rectangle { id: filterContainer @@ -40,7 +124,8 @@ Item anchors { - top: parent.top + top: globalProfileRow.bottom + topMargin: UM.Theme.getSize("sidebar_margin").height left: parent.left leftMargin: UM.Theme.getSize("sidebar_margin").width right: parent.right diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index ba357f40a5..4c6172c558 100755 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -203,95 +203,12 @@ Rectangle } } - Item - { - id: globalProfileRow - height: UM.Theme.getSize("sidebar_setup").height - visible: !sidebar.monitoringPrint && !sidebar.hideSettings - - anchors - { - top: settingsModeSelection.bottom - topMargin: UM.Theme.getSize("sidebar_margin").height - left: parent.left - leftMargin: UM.Theme.getSize("sidebar_margin").width - right: parent.right - rightMargin: UM.Theme.getSize("sidebar_margin").width - } - - Text - { - id: globalProfileLabel - text: catalog.i18nc("@label","Profile:"); - width: parent.width * 0.45 - UM.Theme.getSize("sidebar_margin").width - 2 - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); - verticalAlignment: Text.AlignVCenter - anchors.top: parent.top - anchors.bottom: parent.bottom - } - - ToolButton - { - id: globalProfileSelection - - text: { - var result = Cura.MachineManager.activeQualityName; - if (Cura.MachineManager.activeQualityLayerHeight > 0) { - result += " "; - result += " - "; - result += Cura.MachineManager.activeQualityLayerHeight + "mm"; - result += ""; - } - return result; - } - enabled: !header.currentExtruderVisible || header.currentExtruderIndex > -1 - - width: parent.width * 0.55 - height: UM.Theme.getSize("setting_control").height - anchors.left: globalProfileLabel.right - anchors.right: parent.right - tooltip: Cura.MachineManager.activeQualityName - style: UM.Theme.styles.sidebar_header_button - activeFocusOnPress: true; - menu: ProfileMenu { } - - UM.SimpleButton - { - id: customisedSettings - - visible: Cura.MachineManager.hasUserSettings - height: parent.height * 0.6 - width: parent.height * 0.6 - - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("setting_preferences_button_margin").width - UM.Theme.getSize("sidebar_margin").width - - color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button"); - iconSource: UM.Theme.getIcon("star"); - - onClicked: - { - forceActiveFocus(); - Cura.Actions.manageProfiles.trigger() - } - onEntered: - { - var content = catalog.i18nc("@tooltip","Some setting/override values are different from the values stored in the profile.\n\nClick to open the profile manager.") - base.showTooltip(globalProfileRow, Qt.point(-UM.Theme.getSize("sidebar_margin").width, 0), content) - } - onExited: base.hideTooltip() - } - } - } - StackView { id: sidebarContents anchors.bottom: footerSeparator.top - anchors.top: globalProfileRow.bottom + anchors.top: settingsModeSelection.bottom anchors.topMargin: UM.Theme.getSize("sidebar_margin").height anchors.left: base.left anchors.right: base.right From be57ccb127fe560fae3b7b5e66e1e6cb195d9b3f Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 13 Sep 2017 17:44:53 +0200 Subject: [PATCH 130/589] Minor fixes CURA-4224 - Fix code style - Fix typos --- .../FirmwareUpdateChecker/FirmwareUpdateChecker.py | 12 ++++++------ .../FirmwareUpdateCheckerJob.py | 10 +++++----- plugins/FirmwareUpdateChecker/__init__.py | 10 ++++++---- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py index 994493a4e6..770aace3fe 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py @@ -1,6 +1,6 @@ -# Copyright (c) 2015 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. -from UM.Application import Application + from UM.Extension import Extension from UM.Preferences import Preferences from UM.Logger import Logger @@ -33,9 +33,9 @@ class FirmwareUpdateChecker(Extension): ContainerRegistry.getInstance().containerAdded.connect(self._onContainerAdded) def _onContainerAdded(self, container): - # Only take care when a new GlobaStack was added - if (isinstance(container, GlobalStack)): - Logger.log("i", "You have a '%s' in printer list. Let's check the firmware!" % container.getId()) + # Only take care when a new GlobalStack was added + if isinstance(container, GlobalStack): + Logger.log("i", "You have a '%s' in printer list. Let's check the firmware!", container.getId()) self.checkFirmwareVersion(container, True) ## Connect with software.ultimaker.com, load latest.version and check version info. @@ -46,4 +46,4 @@ class FirmwareUpdateChecker(Extension): # This is used when checking for a new firmware version at startup. def checkFirmwareVersion(self, container = None, silent = False): job = FirmwareUpdateCheckerJob(container = container, silent = silent, url = self.url) - job.start() \ No newline at end of file + job.start() diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py index 9e0db57ed7..b95a2b1097 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py @@ -1,4 +1,4 @@ -# Copyright (c) 2015 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. from UM.Preferences import Preferences @@ -49,12 +49,12 @@ class FirmwareUpdateCheckerJob(Job): # If it is not None, then we compare between the checked_version and the current_version # Now we just do that if the active printer is Ultimaker 3 or Ultimaker 3 Extended or any # other Ultimaker 3 that will come in the future - if (machine_name[0:11] == "Ultimaker 3"): + if machine_name[0:11] == "Ultimaker 3": # Nothing to parse, just get the string # TODO: In the future may be done by parsing a JSON file with diferent version for each printer model current_version = reader(current_version_file).readline().rstrip() - Logger.log("i", "Reading firmware version of %s: %s" % (machine_name, current_version)) + Logger.log("i", "Reading firmware version of %s: %s", machine_name, current_version) # If it is the first time the version is checked, the checked_version is None checked_version = Preferences.getInstance().getValue("info/latest_checked_firmware") @@ -80,7 +80,7 @@ class FirmwareUpdateCheckerJob(Job): Preferences.getInstance().setValue("info/latest_checked_firmware", current_version) except Exception as e: - Logger.log("w", "Failed to check for new version: %s" % e) + Logger.log("w", "Failed to check for new version: %s", e) if not self.silent: Message(i18n_catalog.i18nc("@info", "Could not access update information.")).show() - return \ No newline at end of file + return diff --git a/plugins/FirmwareUpdateChecker/__init__.py b/plugins/FirmwareUpdateChecker/__init__.py index 5da6130772..b7343dc565 100644 --- a/plugins/FirmwareUpdateChecker/__init__.py +++ b/plugins/FirmwareUpdateChecker/__init__.py @@ -1,14 +1,16 @@ -# Copyright (c) 2015 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. from UM.i18n import i18nCatalog + from . import FirmwareUpdateChecker i18n_catalog = i18nCatalog("cura") + def getMetaData(): - return { - } + return {} + def register(app): - return { "extension": FirmwareUpdateChecker.FirmwareUpdateChecker()} + return {"extension": FirmwareUpdateChecker.FirmwareUpdateChecker()} From 9567a6921d3af0a27e5de7236b44ecbfc45c6d89 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 14 Sep 2017 08:23:26 +0200 Subject: [PATCH 131/589] Fix code style CURA-4224 --- plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py | 4 ++-- plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py index 770aace3fe..1c099705b1 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py @@ -17,7 +17,7 @@ i18n_catalog = i18nCatalog("cura") # The plugin is currently only usable for applications maintained by Ultimaker. But it should be relatively easy # to change it to work for other applications. class FirmwareUpdateChecker(Extension): - url = "http://software.ultimaker.com/jedi/releases/latest.version" + JEDI_VERSION_URL = "http://software.ultimaker.com/jedi/releases/latest.version" def __init__(self): super().__init__() @@ -45,5 +45,5 @@ class FirmwareUpdateChecker(Extension): # \param silent type(boolean) Suppresses messages other than "new version found" messages. # This is used when checking for a new firmware version at startup. def checkFirmwareVersion(self, container = None, silent = False): - job = FirmwareUpdateCheckerJob(container = container, silent = silent, url = self.url) + job = FirmwareUpdateCheckerJob(container = container, silent = silent, url = self.JEDI_VERSION_URL) job.start() diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py index b95a2b1097..a13c856742 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py @@ -13,7 +13,6 @@ import codecs from PyQt5.QtCore import QUrl from PyQt5.QtGui import QDesktopServices - from UM.i18n import i18nCatalog i18n_catalog = i18nCatalog("cura") From a48507546fa9db2aac5ba2bc0c62e94f67bd678d Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 14 Sep 2017 08:34:01 +0200 Subject: [PATCH 132/589] More defensive machine name and version check CURA-4224 --- plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py index a13c856742..352d32c0fb 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py @@ -43,13 +43,14 @@ class FirmwareUpdateCheckerJob(Job): current_version_file = urllib.request.urlopen(request) reader = codecs.getreader("utf-8") - machine_name = self._container.getId() + # get machine name from the definition container + machine_name = self._container.definition.getName().lower() + machine_name_parts = machine_name.split(" ") # If it is not None, then we compare between the checked_version and the current_version # Now we just do that if the active printer is Ultimaker 3 or Ultimaker 3 Extended or any # other Ultimaker 3 that will come in the future - if machine_name[0:11] == "Ultimaker 3": - + if len(machine_name_parts) >= 2 and machine_name_parts[:2] == ["ultimaker", "3"]: # Nothing to parse, just get the string # TODO: In the future may be done by parsing a JSON file with diferent version for each printer model current_version = reader(current_version_file).readline().rstrip() From 5df5dfec029e6685789012ecacafb6815dabc179 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 14 Sep 2017 08:50:23 +0200 Subject: [PATCH 133/589] Auto-adjust mode tab position based on text length CURA-4322 --- resources/qml/Sidebar.qml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index ba357f40a5..c598af7d99 100755 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -125,7 +125,6 @@ Rectangle font: UM.Theme.getFont("large") color: UM.Theme.getColor("text") visible: !monitoringPrint - elide: Text.ElideRight } Rectangle { @@ -135,7 +134,17 @@ Rectangle height: UM.Theme.getSize("sidebar_header_mode_toggle").height anchors.right: parent.right anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width - anchors.top: headerSeparator.bottom + anchors.top: + { + if (settingsModeLabel.contentWidth >= parent.width - width - UM.Theme.getSize("sidebar_margin").width) + { + return settingsModeLabel.bottom; + } + else + { + return headerSeparator.bottom; + } + } anchors.topMargin: UM.Theme.getSize("sidebar_margin").height visible: !monitoringPrint && !hideSettings Component{ From c5c6ed8b2b5faa38b10d53c29205bada08f3e363 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 14 Sep 2017 09:59:13 +0200 Subject: [PATCH 134/589] CURA-4318 fix colors and layouts for dark design --- plugins/LayerView/LayerView.qml | 4 +- resources/qml/SidebarSimple.qml | 4 +- resources/themes/cura-dark/images/logo.svg | 72 ++++++++++++++++++++++ resources/themes/cura-dark/theme.json | 32 ++++------ 4 files changed, 90 insertions(+), 22 deletions(-) create mode 100644 resources/themes/cura-dark/images/logo.svg diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 8927d59017..26087b8b65 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -519,8 +519,8 @@ Item anchors.horizontalCenter: parent.horizontalCenter radius: parent.handleRadius color: parent.lowerHandleColor - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("slider_handle_border") +// border.width: UM.Theme.getSize("default_lining").width +// border.color: UM.Theme.getColor("slider_handle_border") visible: slider.layersVisible diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index c2c1562fbb..ffb5e1f00b 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -35,6 +35,8 @@ Item { width: childrenRect.width height: childrenRect.height + color: UM.Theme.getColor("sidebar") + Item { id: infillCellLeft @@ -479,7 +481,7 @@ Item anchors.top: parent.top wrapMode: Text.WordWrap //: Tips label - text: catalog.i18nc("@label", "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides").arg("https://ultimaker.com/en/troubleshooting") + "".arg(UM.Theme.getIcon("play")) + text: catalog.i18nc("@label", "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides").arg("https://ultimaker.com/en/troubleshooting") font: UM.Theme.getFont("default"); color: UM.Theme.getColor("text"); linkColor: UM.Theme.getColor("text_link") diff --git a/resources/themes/cura-dark/images/logo.svg b/resources/themes/cura-dark/images/logo.svg new file mode 100644 index 0000000000..236b413b66 --- /dev/null +++ b/resources/themes/cura-dark/images/logo.svg @@ -0,0 +1,72 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/resources/themes/cura-dark/theme.json b/resources/themes/cura-dark/theme.json index dbe19bd298..586db9761f 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -121,14 +121,13 @@ "progressbar_background": [255, 255, 255, 48], "progressbar_control": [255, 255, 255, 197], - "slider_groove": [39, 44, 48, 75], - "slider_groove_border": [39, 44, 48, 0], - "slider_groove_fill": [39, 44, 48, 182], + "slider_groove": [245, 245, 245, 255], + "slider_groove_border": [127, 127, 127, 255], + "slider_groove_fill": [127, 127, 127, 255], "slider_handle": [255, 255, 255, 255], + "slider_handle_hover": [77, 182, 226, 255], "slider_handle_border": [39, 44, 48, 255], - "slider_handle_hover": [255, 255, 255, 255], - "slider_handle_hover_border": [39, 44, 48, 255], - "slider_text_background": [39, 44, 48, 255], + "slider_text_background": [255, 255, 255, 255], "checkbox": [43, 48, 52, 255], "checkbox_hover": [43, 48, 52, 255], @@ -140,18 +139,6 @@ "tooltip": [39, 44, 48, 255], "tooltip_text": [255, 255, 255, 204], - "message_background": [255, 255, 255, 200], - "message_text": [0, 0, 0, 255], - "message_border": [191, 191, 191, 200], - "message_button": [255, 255, 255, 255], - "message_button_hover": [12, 169, 227, 255], - "message_button_active": [32, 166, 219, 255], - "message_button_text": [24, 41, 77, 255], - "message_button_text_hover": [255, 255, 255, 255], - "message_button_text_active": [255, 255, 255, 255], - "message_progressbar_background": [255, 255, 255, 255], - "message_progressbar_control": [12, 169, 227, 255], - "tool_panel_background": [39, 44, 48, 255], "status_offline": [0, 0, 0, 255], @@ -198,6 +185,13 @@ "layerview_support_infill": [0, 255, 255, 255], "layerview_move_combing": [0, 0, 255, 255], "layerview_move_retraction": [128, 128, 255, 255], - "layerview_support_interface": [64, 192, 255, 255] + "layerview_support_interface": [64, 192, 255, 255], + + "material_compatibility_warning": [255, 255, 255, 255], + + "topbar_button_text_inactive": [255, 255, 255, 255], + "topbar_button_text_active": [255, 255, 255, 255], + "topbar_button_text_hovered": [255, 255, 255, 255], + "topbar_background_color_monitoring": [39, 44, 48, 255] } } From 9ec1d5d54abf2997a950b135b0d9900077cb4f4a Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 14 Sep 2017 10:21:30 +0200 Subject: [PATCH 135/589] Add CuraEngine.exe to git ignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 9c9d57f175..03ae94a87f 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ resources/i18n/en_7S resources/i18n/x-test resources/firmware resources/materials +CuraEngine.exe LC_MESSAGES .cache *.qmlc From 96c1e7ea8be341217376d8367d5b59b5ec07cd1c Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 14 Sep 2017 10:58:22 +0200 Subject: [PATCH 136/589] CURA-4182 dark design fixes for quality slider --- resources/themes/cura-dark/theme.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/resources/themes/cura-dark/theme.json b/resources/themes/cura-dark/theme.json index 586db9761f..906a5c280e 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -192,6 +192,12 @@ "topbar_button_text_inactive": [255, 255, 255, 255], "topbar_button_text_active": [255, 255, 255, 255], "topbar_button_text_hovered": [255, 255, 255, 255], - "topbar_background_color_monitoring": [39, 44, 48, 255] + "topbar_background_color_monitoring": [39, 44, 48, 255], + + "quality_slider_unavailable": [179, 179, 179, 255], + "quality_slider_available": [255, 255, 255, 255], + "quality_slider_handle": [255, 255, 255, 255], + "quality_slider_handle_hover": [127, 127, 127, 255], + "quality_slider_text": [255, 255, 255, 255] } } From 7144720d788b4d22608bac7920ad885d9b95abf6 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 14 Sep 2017 11:34:45 +0200 Subject: [PATCH 137/589] Redesign splash window CURA-4215 - Rectangle splash window - Fix for splash window crash - Enable antialias - Fix for longer loading text in some languages --- cura/CuraSplashScreen.py | 25 ++++++++++++++----------- resources/images/cura.png | Bin 52943 -> 56143 bytes resources/images/loading.png | Bin 3585 -> 0 bytes 3 files changed, 14 insertions(+), 11 deletions(-) delete mode 100644 resources/images/loading.png diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index dd4dd9b2cc..7e25855655 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -2,10 +2,9 @@ # Uranium is released under the terms of the AGPLv3 or higher. from threading import Thread, Event -import time -from PyQt5.QtCore import Qt, QCoreApplication -from PyQt5.QtGui import QPixmap, QColor, QFont, QFontMetrics, QImage, QPen +from PyQt5.QtCore import Qt +from PyQt5.QtGui import QPixmap, QColor, QFont, QPen, QPainter from PyQt5.QtWidgets import QSplashScreen from UM.Resources import Resources @@ -22,8 +21,6 @@ class CuraSplashScreen(QSplashScreen): self._current_message = "" - self._loading_image = QImage(Resources.getPath(Resources.Images, "loading.png")) - self._loading_image = self._loading_image.scaled(30, 30, Qt.KeepAspectRatio) self._loading_image_rotation_angle = 0 self._to_stop = False @@ -46,6 +43,8 @@ class CuraSplashScreen(QSplashScreen): painter.save() painter.setPen(QColor(255, 255, 255, 255)) + painter.setRenderHint(QPainter.Antialiasing) + painter.setRenderHint(QPainter.Antialiasing, True) version = Application.getInstance().getVersion().split("-") buildtype = Application.getInstance().getBuildType() @@ -56,25 +55,30 @@ class CuraSplashScreen(QSplashScreen): font = QFont() # Using system-default font here font.setPointSize(34) painter.setFont(font) - painter.drawText(275, 87, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignBottom, version[0]) + painter.drawText(300, 110, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[0]) if len(version) > 1: font.setPointSize(12) painter.setFont(font) - painter.drawText(320, 82, 330 * self._scale, 255 * self._scale, Qt.AlignLeft | Qt.AlignBottom, version[1]) + painter.setPen(QColor(200, 200, 200, 255)) + painter.drawText(343, 160, 330 * self._scale, 255 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[1]) + painter.setPen(QColor(255, 255, 255, 255)) # draw the loading image pen = QPen() - pen.setWidth(4 * self._scale) + pen.setWidth(6 * self._scale) pen.setColor(QColor(255, 255, 255, 255)) painter.setPen(pen) - painter.drawArc(130, 380, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) + #painter.drawArc(100, 350, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) + painter.drawArc(60, 350, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) # draw message text if self._current_message: font = QFont() # Using system-default font here font.setPointSize(16) painter.setFont(font) - painter.drawText(180, 243, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignBottom, + #painter.drawText(150, 328, 316, 64, + painter.drawText(100, 328, 260, 64, + Qt.AlignLeft | Qt.AlignVCenter | Qt.TextWordWrap, self._current_message) painter.restore() @@ -86,7 +90,6 @@ class CuraSplashScreen(QSplashScreen): self._current_message = message self.messageChanged.emit(message) - self.repaint() def close(self): # set stop flags diff --git a/resources/images/cura.png b/resources/images/cura.png index f3aacf32a768942f8243d620391c3a7a788de0b5..e3d069e8da73e01a561a5dbad46f5bdee9189763 100644 GIT binary patch literal 56143 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 diff --git a/resources/images/loading.png b/resources/images/loading.png deleted file mode 100644 index c9a0151b28da8e1846ff465b13f93ce092ec0457..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3585 zcmW+(2{=^k`<_ru){$+rU|M7}SwfaFKEo6vX(oKuEE8euW5}+IU8qF%CF?LF%ix=+ zkWn<0WhRj|CTm%<#sB>N=Q{6suXE0G&h^~yd7k^ePr~h6H-z|4@Pj}gA!8#$959pq zH^4`Lqc0z=1(^7VC}VRlu!Vu|#RKQZe2uJ$Kz#83#vv>tLEI{`#T7#r%FKgeCm8x9=NIv!g~EO*mBT^>5-csF89 zp1a;@w^@?+-bUf69Ej(I0M@;0<;BOGM* zGC`pI@OkWF5?xZUl&94E>wz=drlD&g@NNC~aXMRh{~GE81a%Hp;*v~H#~p$-7__F= zK4gE>Gt-Uds4yYD!Nuu`>9~hi_x56@tPvFxaXCzT2 zxbEMB)4}{O!&oP)7$>W<EAOx}74kb)!DM{m(D!cmEvT{TC zK%mc!UZd))>IKHcAYNM>?t&;yJ_fs-SPbm*gLs{pn=!d-CGOc-?Cg9u!RTmJOTSY! zW(v#h84hrl=3!6o@nf; z))~5v$*HcYvR-9ZOx3Cu7+RefKL-B+dp$kZqm|NgcGP<>i$a%ovEDCBXK0;uQ>doD zqELcI8jZ2yv>3)wfm&$!%3b^V12NxstFFQB>JMJ)Qli+yQ|Xyv%e2z5AH|3s@ew zggDx7JT*w=h{O=oAfspIyK18%6pw~Wkkc9uh(Q%Sy*5blz5^Y7T2zH)cc3g20kY>MV!dS0H~b zac3kKyQvLo#9fDXW|w6>o|KM;WN(MPhTEs6NM?kedj6=P26JM@f7@N*q787TpNP9{l2n0c6zrT$OsUUbz=RD~Cbr!;sbP6S>=#&6f z{5cvsY5-Pt{xAITSjgWD?sikrm>GwpZ(*Ss_hwlRJJR@Ao4Z}48JwbSDqDxJ74)ML z&j@yeAPXXal7rE@wEINpjejI92&PwZSaBV38yBrJ!c(WWJgK%0DohU`&M8@F)d=3R z8qE&z`87UPoZ+&a^NZbSBd~hyAVfI$8lD%X4rCGM^z-iwon2gq_>+G-G+|Jk+9T*mDkB8B+$--S2o*bu%oF4gCk0r#_+gbb!%i;nB{ozng|={&vi z%zz!VIn40K^s5_S(v5Dzw-4mVSNe!t2`bQs+9q34SZ!|Bf+^^0#I8IcC^GP40Ieoc z>D}tH3bsv2dZL|Al&Yl@R9Ny(i)0;wm=8w9e}%3+OVRsV>NWDdD^$E|rF(8|k)Wu}m{O=^&YkJ z19Wb z0w*Sla!aey!b>^jZk6W^KdhO9pgy>lF-Co-RP4gQVA#^NJ8j1V9*@qG>%}oQAK)<+Mt>rHcnNtLynW~17UPEjDhsabs0qs^sChB;V|W~g5<5b~@{N;f4Z9&K!+GE+FV_igUF1(ic6*~&ULXC|9zXY*pWoto{UFcp zpPy?9tG_iGijnfP8D80fj4c?2ASzsH{v+E}XGJaC>2mq$&S~5Yz4!lsNirs{{?(@@ zTq4=aj?w@H-3ffDH`=PldL;+WO)1kfRZEyR9#F4bK!h{8i#hv5hh)`zA&m??HO6#6 zi`D<;a&J#D3M_>GGzYe~uoz>B(Vnwhr$;ZOs4@!}!I7%Ic7)FWSvCmD-Wo4|w@nPa zRpVeN^r(=e8)U;FscN6ypjT*qmc7C99mWL zyz#2D^ccsGdJSj)JEV0VTsAu4kcK+~i1I8^2o)bjwc4zz|5(2E45v6+9y6p-lwQ2B z@vSm+1>dh8Zjt#fdV~6FtkG-J<{+JbBCr4*zA*k>AHpYrUmW`WF-P-5o#!O6oeGd7 zLCO;I5m2fN<9u6ht}<7t1)+D$$!QTwMJ*y6L^b5h3FlazS6=@z`i||ldW(1Y&1J9F zy#yYtL+IHJNavQh*A01)G|7eO{ek08H$%q}eZ-nFBFK~IV_Eh5&*gyS_3&FhRTReQ zsZ+|R51(A?TSGgRE-5mtcCX~|I@+p)07ha3S5Rlt_5XTb4#R(P&yLV5!S(3(Jn|X% z?=%x?moWp_h_y-G?L=+vTt`R8+pupG-Sa8a8%3qgBAZvs+!^MW!v=!6#C(9!5j}4l z{L#2laVlj#@MpR;rqXC&-SO>qon`|_yg&I|W;P3SymC&~km(sna-$|d&OF62F_piq z#+1ov`7GBzyshPvhKC(@ivX;zYx6Zz=hS3vQSowQBTS`E$$S|u(Susa&Q>h7Ql9#v zYk&1(&^wvsjzs=|YvSR7XZe z4(#g$e2o-Jm%@+-ghi!{mmCxdJXfr+@0~4Qv#>LpJym%X&|l-HL$x+xveb7Lr@CCk z(Io4PHGZsbU?Q5*AHvLXUZrP+X5t!D-1IPYD25@<$d*qAXzOg zoEx^8|GpDibN8_8)`z>iEk_Csw9J|1Si_}TZg`p{Qb`9S*{fud4W4GpFo;ZhxYIb;|{ zxU~4U`UvbEj0{jT1U2GM0mD)8XUGBE<`S9qgF`z~Uu?>LD5(R#YanCvEkhd0@zMVQ Dgh1n@ From 9683dcae729de449f5cde838d14dce53bbb1ec2d Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 14 Sep 2017 11:44:09 +0200 Subject: [PATCH 138/589] Remose useless code CURA-4215 --- cura/CuraSplashScreen.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index 7e25855655..f6c004dc7a 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -68,7 +68,6 @@ class CuraSplashScreen(QSplashScreen): pen.setWidth(6 * self._scale) pen.setColor(QColor(255, 255, 255, 255)) painter.setPen(pen) - #painter.drawArc(100, 350, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) painter.drawArc(60, 350, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) # draw message text @@ -76,7 +75,6 @@ class CuraSplashScreen(QSplashScreen): font = QFont() # Using system-default font here font.setPointSize(16) painter.setFont(font) - #painter.drawText(150, 328, 316, 64, painter.drawText(100, 328, 260, 64, Qt.AlignLeft | Qt.AlignVCenter | Qt.TextWordWrap, self._current_message) From d14ac9e258690ea6d26ddb0c4e8967649477e5b6 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 14 Sep 2017 12:08:27 +0200 Subject: [PATCH 139/589] Fix text overlapping problem for adhesion in recommended mode CURA-4322 --- resources/qml/SidebarSimple.qml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 276eacef29..4e68dfcbc0 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -766,6 +766,8 @@ Item visible: adhesionCheckBox.visible anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width + anchors.right: infillCellLeft.right + anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width anchors.verticalCenter: adhesionCheckBox.verticalCenter text: catalog.i18nc("@label", "Build Plate Adhesion"); font: UM.Theme.getFont("default"); From 3073fcf6f7c8631d857e50a07120a0e52ed5e3f7 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 14 Sep 2017 12:43:07 +0200 Subject: [PATCH 140/589] CURA-4318 add white icon for unknown printer status in dark theme --- .../themes/cura-dark/icons/tab_status_unknown.svg | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 resources/themes/cura-dark/icons/tab_status_unknown.svg diff --git a/resources/themes/cura-dark/icons/tab_status_unknown.svg b/resources/themes/cura-dark/icons/tab_status_unknown.svg new file mode 100644 index 0000000000..249ae55554 --- /dev/null +++ b/resources/themes/cura-dark/icons/tab_status_unknown.svg @@ -0,0 +1,15 @@ + + + + Unknown + Created with Sketch. + + + + + + + + + + \ No newline at end of file From 3812a478cf43196c0d99c2e5dc327040067cc16f Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 14 Sep 2017 12:50:53 +0200 Subject: [PATCH 141/589] Only use lowercase for string comparison CURA-4224 --- plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py index 352d32c0fb..108cfa4c0d 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py @@ -44,8 +44,8 @@ class FirmwareUpdateCheckerJob(Job): reader = codecs.getreader("utf-8") # get machine name from the definition container - machine_name = self._container.definition.getName().lower() - machine_name_parts = machine_name.split(" ") + machine_name = self._container.definition.getName() + machine_name_parts = machine_name.lower().split(" ") # If it is not None, then we compare between the checked_version and the current_version # Now we just do that if the active printer is Ultimaker 3 or Ultimaker 3 Extended or any From 17986aa4adbfce1f356ffb54fa80dc038da17afe Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 14 Sep 2017 13:04:29 +0200 Subject: [PATCH 142/589] CURA-4318 add border to toolbar buttons in dark theme, outline fix for unknown printer status icon in dark theme --- resources/themes/cura-dark/icons/tab_status_unknown.svg | 2 +- resources/themes/cura-dark/theme.json | 2 ++ resources/themes/cura-light/icons/tab_status_unknown.svg | 2 +- resources/themes/cura-light/theme.json | 4 +++- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/resources/themes/cura-dark/icons/tab_status_unknown.svg b/resources/themes/cura-dark/icons/tab_status_unknown.svg index 249ae55554..94dc47c018 100644 --- a/resources/themes/cura-dark/icons/tab_status_unknown.svg +++ b/resources/themes/cura-dark/icons/tab_status_unknown.svg @@ -5,7 +5,7 @@ Created with Sketch. - + diff --git a/resources/themes/cura-dark/theme.json b/resources/themes/cura-dark/theme.json index 906a5c280e..5c77f5144d 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -141,6 +141,8 @@ "tool_panel_background": [39, 44, 48, 255], + "tool_button_border": [255, 255, 255, 38], + "status_offline": [0, 0, 0, 255], "status_ready": [0, 205, 0, 255], "status_busy": [12, 169, 227, 255], diff --git a/resources/themes/cura-light/icons/tab_status_unknown.svg b/resources/themes/cura-light/icons/tab_status_unknown.svg index f195ae238a..a6aea3be84 100644 --- a/resources/themes/cura-light/icons/tab_status_unknown.svg +++ b/resources/themes/cura-light/icons/tab_status_unknown.svg @@ -5,7 +5,7 @@ Created with Sketch. - + diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 1271dfbe71..fb6e43d0be 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -221,7 +221,7 @@ "tooltip": [68, 192, 255, 255], "tooltip_text": [255, 255, 255, 255], - "tool_button_border": [39, 44, 48, 255], + "tool_button_border": [255, 255, 255, 0], "message_background": [255, 255, 255, 255], "message_shadow": [0, 0, 0, 120], @@ -338,6 +338,8 @@ "button_tooltip": [1.0, 1.3], "button_tooltip_arrow": [0.25, 0.25], + "tool_button_border": [1.0, 0], + "progressbar": [26.0, 0.4], "progressbar_radius": [0, 0], "progressbar_control": [8.0, 0.4], From 159c79ab4bd909b65e5faec8fba7b2383a77e540 Mon Sep 17 00:00:00 2001 From: Mark Date: Thu, 14 Sep 2017 13:17:35 +0200 Subject: [PATCH 143/589] Tweaked the margins to align better CURA-4182 --- resources/qml/SidebarSimple.qml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 4e68dfcbc0..20d92885d7 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -44,7 +44,7 @@ Item { id: resolutionLabel anchors.top: resolutionSlider.top - anchors.topMargin: UM.Theme.getSize("default_margin").height / 4 + anchors.topMargin: UM.Theme.getSize("default_margin").height * 1.2 anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width width: UM.Theme.getSize("sidebar").width * .45 - UM.Theme.getSize("sidebar_margin").width @@ -57,9 +57,10 @@ Item Text { id: speedLabel - anchors.bottom: resolutionSlider.bottom + anchors.top: resolutionLabel.bottom anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width + anchors.topMargin: UM.Theme.getSize("default_margin").height * 1.5 text: catalog.i18nc("@label", "Print Speed") font: UM.Theme.getFont("default") @@ -94,7 +95,7 @@ Item { id: resolutionSlider anchors.top: parent.top - anchors.topMargin: UM.Theme.getSize("default_margin").height / 2 + anchors.left: infillCellRight.left anchors.right: infillCellRight.right width: UM.Theme.getSize("sidebar").width * .55 From 46cd712367a674fc05b6fda2ae7800a50fc9a9d7 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 14 Sep 2017 13:37:20 +0200 Subject: [PATCH 144/589] back to rectangle --- resources/qml/SidebarSimple.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index cf54d645fd..20d92885d7 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -31,7 +31,7 @@ Item style: UM.Theme.styles.scrollview flickableItem.flickableDirection: Flickable.VerticalFlick - Item + Rectangle { width: childrenRect.width height: childrenRect.height From 027cd2c695b69c5eaf3539a3b52e996677b15a85 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 14 Sep 2017 13:54:52 +0200 Subject: [PATCH 145/589] CURA-4182 update settings weights for cartesio printer to get correct order in slider --- .../quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg | 2 +- .../cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg | 2 +- .../quality/cartesio/cartesio_global_High_Quality.inst.cfg | 2 +- .../quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg | 2 +- resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg | 2 +- resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg | 2 +- .../quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg | 2 +- resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg index 30c03d26b5..29c99bda49 100644 --- a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg @@ -7,7 +7,7 @@ definition = cartesio type = quality quality_type = coarse global_quality = True -weight = 0 +weight = -3 setting_version = 3 [values] diff --git a/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg index 2decd9dad3..e5cb9712d2 100644 --- a/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg @@ -7,7 +7,7 @@ definition = cartesio type = quality quality_type = extra coarse global_quality = True -weight = 0 +weight = -4 setting_version = 3 [values] diff --git a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg index e05392c6fa..16570b97bf 100644 --- a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg @@ -7,7 +7,7 @@ definition = cartesio type = quality quality_type = high global_quality = True -weight = 0 +weight = 1 setting_version = 3 [values] diff --git a/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg index e87d956a87..359ca15f96 100644 --- a/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg @@ -7,7 +7,7 @@ definition = cartesio type = quality quality_type = normal material = generic_pla_175_cartesio_0.25_mm -weight = 2 +weight = 0 setting_version = 3 [values] diff --git a/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg index b99d030c27..fef8bb53d3 100644 --- a/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg @@ -7,7 +7,7 @@ definition = cartesio type = quality quality_type = normal material = generic_pla_175_cartesio_0.4_mm -weight = 2 +weight = 0 setting_version = 3 [values] diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg index 6835150283..06cd974d26 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg @@ -7,7 +7,7 @@ definition = cartesio type = quality quality_type = coarse material = generic_pla_175_cartesio_0.8_mm -weight = 3 +weight = -3 setting_version = 3 [values] diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg index 6b4a87d9ec..d161befcc1 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg @@ -7,7 +7,7 @@ definition = cartesio type = quality quality_type = extra coarse material = generic_pla_175_cartesio_0.8_mm -weight = 4 +weight = -4 setting_version = 3 [values] diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg index 1e3b82dfb8..6075c2651f 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg @@ -7,7 +7,7 @@ definition = cartesio type = quality quality_type = normal material = generic_pla_175_cartesio_0.8_mm -weight = 2 +weight = 0 setting_version = 3 [values] From fe004a733ce57d15be5269c220c9b03e2b3bdb17 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 14 Sep 2017 13:56:54 +0200 Subject: [PATCH 146/589] CURA-4318 fix settings weights for abax printers --- resources/quality/abax_pri3/apri3_pla_fast.inst.cfg | 2 +- resources/quality/abax_pri5/apri5_pla_fast.inst.cfg | 2 +- resources/quality/abax_titan/atitan_pla_fast.inst.cfg | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg index d0c09692db..6be4578649 100644 --- a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg @@ -6,7 +6,7 @@ definition = abax_pri3 [metadata] type = quality material = generic_pla -weight = 0 +weight = -1 quality_type = normal setting_version = 3 diff --git a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg index 1484dd33b0..140a59db3b 100644 --- a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg @@ -6,7 +6,7 @@ definition = abax_pri5 [metadata] type = quality material = generic_pla -weight = 0 +weight = -1 quality_type = normal setting_version = 3 diff --git a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg index abd58cadb8..b8d8f019cd 100644 --- a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg @@ -6,7 +6,7 @@ definition = abax_titan [metadata] type = quality material = generic_pla -weight = 0 +weight = -1 quality_type = normal setting_version = 3 From b9b273b1aa53cd2315126212d8f045e402f5cdff Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 14 Sep 2017 14:51:12 +0200 Subject: [PATCH 147/589] Update splash window CURA-4215 --- cura/CuraSplashScreen.py | 17 ++++++++++------- resources/images/cura.png | Bin 56143 -> 29732 bytes 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index f6c004dc7a..4e4b2ba3a3 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -53,29 +53,32 @@ class CuraSplashScreen(QSplashScreen): # draw version text font = QFont() # Using system-default font here - font.setPointSize(34) + font.setPointSize(28) painter.setFont(font) - painter.drawText(300, 110, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[0]) + painter.drawText(220, 66, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[0]) if len(version) > 1: font.setPointSize(12) painter.setFont(font) painter.setPen(QColor(200, 200, 200, 255)) - painter.drawText(343, 160, 330 * self._scale, 255 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[1]) + painter.drawText(252, 105, 330 * self._scale, 255 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[1]) painter.setPen(QColor(255, 255, 255, 255)) # draw the loading image pen = QPen() pen.setWidth(6 * self._scale) - pen.setColor(QColor(255, 255, 255, 255)) + pen.setColor(QColor(32, 166, 219, 255)) painter.setPen(pen) - painter.drawArc(60, 350, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) + painter.drawArc(60, 150, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) # draw message text if self._current_message: font = QFont() # Using system-default font here - font.setPointSize(16) + font.setPointSize(10) + pen = QPen() + pen.setColor(QColor(255, 255, 255, 255)) + painter.setPen(pen) painter.setFont(font) - painter.drawText(100, 328, 260, 64, + painter.drawText(100, 128, 170, 64, Qt.AlignLeft | Qt.AlignVCenter | Qt.TextWordWrap, self._current_message) diff --git a/resources/images/cura.png b/resources/images/cura.png index e3d069e8da73e01a561a5dbad46f5bdee9189763..9657cf61afc0a6adf3adad72d747f728526eeba9 100644 GIT binary patch literal 29732 zcmeFZ`8(C^8V9;WNXV;58bpyKQ-sQ#22_$ULoyGULu6_|hDZ`JlVlc>c`QnXkW86F z=2=9X&v&15{(^IzU(R*jYrFQl+gj_pp67n<`!hYuPx2eA@BxEt;Eu8AfbBAsah{v0mo8oURyuW% zA z*+Az1PyFl4Re2j_p0MiX=4(fp1GL8Lt|%$Z{m{1YQ{`d$k)@l?&BHUK=6>bIjT@um z9J@rJ6SbNP0f*ip1PlngnqofygNjb*XP5B5AiK#IaWQVjrH{U_B&^M6w8^Lvt7y|h*Ha9f5B?X0*cDcE^ogc1!ddg)`O<(5T2A4d?f37Q2 z$5ZPk=?;h~C(=og%vut?JAeF8pOv%t{ES_W=ci9_aPaS7sZ9Z?dvozF0n8_P=!IC`DlJ3QRDJdy@5mX|pg%5AA#+Dqpc<7E>nzl0uBqoO~cY_YZe?@vEd^Zk;LkdO(*a6YxvS2nkA zSJj6*@z5xezL^PA)6npIFVN1?{&4lb-MbfSx9i`&%`W9M6`{Zve#0@m^uMuv{(LfOYx&Qpo9mB(+Ut(9IsUMQCmwxA~ z_t0$D;7(J&EFdasx}`^@ny&to^XO5t{9BhsM@Ji4TN$Mv?&3JG=5s)lQi- zaHlDl-(aBV?CKKK(9o!AYrFBi(9ZDsBTBl*OG|fSBO_D4)YlJv`SN9>_UZnKw{N){ z^Jr{OojO(E@z3>?sHo^5Hh*H5)JBeSW>z7S?AaG)AD{f!%6#(X3l|%-rUg7Dx2R2D z#@n}bYcbA!|9Nix`(vCHb2GCR1x9nT;Lh>bGmdGO$NSBNSp!)`(gZj-hP(s44rd>t zskE1sl~tmnYfHV65~Q4R^`Nlj52d3amjrD3N)4uGSqxVfzVcsrFSU*un`loz_QHlr zr_eSbHDQjNWNB$xU|2`L$fsNUD}0v*>8&``A?$ zUVGxWUWqzA9(xPRv~MRZ?F&juN`;P0?G(*-2HvF`_nJo=qb3gqTsm6aam(|hgR^tT zeO(!bxy5FwuiXV!QCq51m-X%o?|vP9Bju_@!By2wIbKG;rEY4v<-jbxvf@_P=)=?z zf`&eR3H|Q>mOI{zur02vFz=h#&Yx*m7c}HA`++0otnqprmv=N=x`U!G`p zy=}tX`QZ87)?{`CFAq({g5<`W+<3M3&gG^$w2?i;aWFA94(q!5@9**nx85}M%r8-X z3SJ|3`pb1){{3}qL<_8^jXoq|p?X_Y^~Hq*<++sUU!5h++4lYA?)9FEhfHuj+Y}?3 zV$LdJkA7|6zP)(YyU@_x_>7_v7tk@oc(n@}=2j1oZr{FboaWq-eM{q3k-fb8@xq`B&pb zGBarvmFIfZ$#32)m6Th{@byxi#jD(Gap?Elavw)~8e#HY zcto{JI8*yW({8`>8HI%r`(JTUlg>KNsBU1VUna9TI5^xNB1NBb$-OKsEgku%eSWx3 zZ6`A?_vxh#v@1W$?{54o)J=+}|XT;l+aQ>Sk1W@JpX9NtM!e_G=1 z?`OHWPV$)z4N8ah>`{$){#;gf>AY`RCBIC%dM3}mp-6$-5B&7W z@ln(}zu5i$#vWF%MET;t{qYCWOxM%f(MT>zdb1r5-Zsa{B5rRK`HWj?Op7b@-G!&D zex!JmIwA>?lzX$>FJXbElIww@77U} zc=bv(%T1dPmF*s#oYWrNfe*syH1pHkW1x~O;8VcfulVac%YXjtrJ|yWQg? zx%TqwsebzOX`J&_f)-0Re||&+OCzAg&eGCSTFU!3Z@wB`neKU&#v6IzlDwWDsiCp4 z{eFgg0JA}@X0jT$48u1-qOx6|^EQ;F6t7;r+R)PSPKoi~-^py6_+N?xbAvVYc<%|< zL-oP^+GVcqb$W)2tb5PMk4Ms>yX@Zg%6_HSxj*tHz0~`gPcMgZG3nyj)yjYAh9%eY zBq?*xjiy+0m)Hcw47CwIbD75~g*wNB%O@xh1|I2euP1f@p4FEMkrkpCj6FQc`+OZ%rn=sYHOGB8=P(-h32m~0{?IwIc@&ps zQ-t7fyVdVg@mFKc$d2pjku*!3GWGnj-42_b)Gbz>oyQ~%cggtQ|Er>7XZNlzBW&L( zlZc3j4bQ7I553CW*A+&aGH^=Sb!cdamOg=-??>EwwDeul&9oQ!m_FjzS@=HrZ1T>-qEB#CM>B-8cjC4-X#}7uRY-X+2zU@IQF);C4By zjCb$e8S7;yTC8KEUJMQn8q>FaQ_((t{P?Rw60X0(vs*RZynXv5JZ>x_EIL|e)X~7u z(EKf};O{UR>G-1*RJ#u82pD{PQaxN3JSpCAbEInQL>S6ZZW*%Wx) z)$`umfXv9h^*F}Y-SFLBCz+zF=Th$hOZ zEF_nhyPftz&;hNtbh#ftp1(5Q!DsV#Y5Y@nY%8kexOH!_+GtIdN~!?yt~TXsZwlRZ z*PtxhLyukK1BlR&xq6kp!sB0Y@lxe)^yIz!S%XELXMP%3J(It9F`X{#=KC?@jn#SY zZc@4DR=El25+%Qxi3t~*n5}-*=a3^i<>cg+NB_J5J~(nQh}-k;__4LlcZNGrCK0z< z!dr=1)NMro-)GMlZq9kJELGbCti5J2eD=kt;p0aNkQZ(~J|7)EQO)Pi6q50$N~x-e zx$6rG$tv7o^>t1!Bch^C)w0mOzrxBvz3n_lNY#VhoQFr@APdXts?<94C zbCcz3wRH8N?K_!2Z%)!R+}f^^x<~5YQfNa>&2VaUHZb!L(JaenIQ19o%QoYV9=UC4 z`IVVhQ~xj5V>Xh~E8#D{%xjvlQjIZZ!>fZgOjWnJU2#K?P*GG=d=$63vEk-1^HW?+ zR`%hW-1U1eR)l6l2L}c!aXyZSER{TbxXlBQP7Q#*c*9*cH#b*|M6rGQ<*)sQS|
Il&!r=CJiRD+~<5T_>h{hiHT&v9?Q3N5e`A`Ejv_J zLylb_TV>5DC^+5O=QvUyrm>*c6!sqlnGdBU*i4B+oxyLNqsNX}wzjq1isB+IOvIDi z=v2QC+-l!nP@#Z%a_W1iZrHjcxmRRlWS`+R*DVv-{I_&-BFfjPe9Owpp1pXXx)#$J z=an$7&*W|60!HuJ{I$8+let9AC&2-`xb9Z*S>E9Dq{!}5>Q1K;A76U^c6E83kz)%; zT14OM5*3Mpg5t>stDcpH?sD4qRYfHw8s-_XI3Rk|60S?XBfaxpCZuIOeM+~uw6w>% zzx-dr2P&DzrLm#L{;pS+B~P>$G#}r?sg^l$Rqu-Gb`QG8zP|gX#vy1t@9yk8m)BBh zXJ_Y1rc&YIp5U@L8s?*)ay8~7hOX;uGC-2#qI9v-^sB1MeNrB!UrwUKsy-8RJZ2}C8x233s^WRc8 zHa51qfB$|0-X`(oNo{|+uu?)3!7yzurT8pfhx!b=@kXgddvb!%Ah6OuIJmej#Ne&e zc$gR&8HK-w^LtL&>rsB-6iFy@vJu1Q{s^`ZMo?K+RyisX^fUn2c`4m%AZo^6Uw-ji z9i-A)b1C2mp+*t!{b19-`K|{t(kftSEYICEgXUNXe}a=*w5KII^HIon`TF{PuBjm> zG3?v7_OtspOUh_P$3e9Rw{}ClgB*CG{>vAatg;}}rs(Uy^fOY98N6D#=Qqziy2ux9 zh*K=j@9^J^(9gpPcJ{oS1C~K3p63w}Z+Aeqayt~WGdWYINTu9<&-GUg%YY-QBXqS&l@ne-={pt6t zn1ht}oSsEM`er-lT)F})TdDz#OXLefd6%C{e+4o6o$q zz8+xl{Vh9MvY_Ajg@$eOgw8}X6LE3z9Vc(*Gq|7~-LbNYEGiQJ+SoV(#@KrP!UYQ` zJF3YprP7x*eZ0NLnNFS(5{l&!1L<0Q&Z+ndlvpL-tVQ-aAM<;$0=!@*LqV|?cv7RQ=R z``!N>Z2tQ7K3{e}xGPGN{LgHE_MCX2pxD{7!(f2T#%yW1W#~Es-&1c~f=15OvpO1O z(+MWya{c=Cu&vrJUv_{qpiea$u|1i0$>NmWyLa#C&``CTyL;EMIJfG2DQ#`-ny#*W ze0+RUF4kKvI0Ax7N=mUklTlGoavUM5e-Fqo@r%lFbzSzwBR@$oO! zH8pEcChmInBrEO}HgA25W1D+f6RQ~?{15;D9m`!HFtgGwmc~72DdklTtu{7DS z3$DrSx}bx@P$yk`!WEKP#B2|vPk%BnFjz&~Pf$-k@iUw2%By$)P+Ai4h!{1?dW%rN zxOsUglvP**pFWjeUzxt1c~hj|{vT@(be7V^rn3xw=P`C4f=0f%5_On*8`?Jcu3fuU zpi`BDrE%|}AxY<%G=78j^)f0dATW^DW3*x4>o;!_uf<7eDB0`3n~oKo@PBK-b7loHzj)zpAdzSN{C@ zxo_XT(e(3!70H)4O|y(0*e`1R3oVsI!hSD}xA{g!MGddc4-*y(Cigz5H-h)(^wm{W zKSFE>#Kas%Q>P-`o$hABi$f#v3J>4g(9pne=n(zx-MeX71W4~K+6_RS2C>?{Srq#i z7`)KcbAdyreintA8X5iW+Yd^5QoFziqMRFOyy}FTToF+Q_;^&P2J(uE&i@=J_akpG*IxsS*O6SMnZ)pC4@Hw499!y7}ffp z*)i0Kv79gcc2Z|&=KzR1sM~OK*~Dbd1tb&-x%Bw= zZ?nzm5B)+84vRuPCV_)>Y@SA}PbrDljE#+*%4?Q1WSS2D@Iln1Df&xwb@jdT=P3wE zUu6gux!1wbaXX2YRrpC`w0J1zv13P|B=c+KJ|>d}RTLY$q@?s+O|jzd#EH?VsfLx= z{^pY>Pj*F%JFt+58i|l}KLc}Y7<~JjfWWh&!a@?M4{~w=4hr$C(1b-W4%v?!dBi5+ z`eN^%J^BzpnXGN#$u(fvNI6Dd7){_^5t?QnD(STAk{QV>ICvMdcugD@Tc9OL>z`u( z(;?Sy!;s-UbLLglt5-wBa!Owo`Qyvx@xQYJM(bAp;&?+{9ThA{<@EMTmoE?c`T2eR z@};WKZa6}T>k-hut*yZQKfTUmB2?_p*ppl5MMvFkFA2Y5O?Nl#CYP(%B3jdzmb zooD;r>Xw`amrTB2j*Z5f*rG^Cl{n*2LOq-CawfJFXPl;}N%vOg*k^i6daHCMRluh5cLkACLuCL+E=a!ef4^!JZIr%7Ywe{$kTU%S(-o5+L zG|s)2>@Xi+&}>(pZ|2SS{^XSqqUU;SD#*BZoW}<~fBrnnxgSLiV+&ZO4Vax9=rRqM zA`n_kfz{C~C`kjD1ZEvs2f>v0!7Z+Zwe~D5Y&)sYX_^)Ou)c|j4-Q~F&eWa7(Z-*s z3y^5Iz`LMCSg(U$jX)AHtk_uCiM=68x=B#xIVr#QUKg{q)hSmn4qXGN_dAw5j#)9I^ z@88szLIkz`^XJ&r=mF`=R6fbcoK4Z{Jn>&kRd5y-^3nY`uf1jTwc}kr5ey{Xa9k=fuVLNnbv4ZtU;u8d|sh&__R= zqm1lgViC)DINdVWuoGblgvP70F8c6rB_0FDB(bwNI<}6EpCHu7xk{l?SFzN<^eeoX z`NJwD@!!odSCK6=KB8{yE?&F{@6gw(w|F_#HB@{|KTw8&0-x(B7ndwAvmr$F()f7k z5B%NzF8A&YU@qd|kEAaoFVFVJZKtA|RCo;PE?ijF`uzEG<#hFvy|X~_574}!WF3>_ zI~l1&dG_qtqnw=V$B+As{rdI7TcNEJPAfKfAr7s1n$P=;c*1EdNxf!w^jcd!*vgSD{Ss_xvmGdB``YXLU5 zQp}k!V^h;bsPgMlx>XnsXfp;~xyDnNls{WqLfSL6_l9y^8S+_4_uSef5K)Q!2#vFo zlL^|0yobl;4J+-Wmcv|Jlt|x*D_*-c27L4h_UIaa#YQz0^v{_{l)x95tD<6?L(^M; z_?U;@Q`Ozgiuz$XJpiGE+^{zAHilv;WFv$Ea;vA!IXO88F`+ec^vOz4SMc#g*Rg%E zX|7^UQ<}_s_trsq{EX?g9efWw)UdbM5p~VW&i>%Oi_5#hLb3AOHIzS#9d|-OH$t-+ zh0XB^eOx)u46aMHD3;1A> z{F*sl)4e6(J0E%#SoP%Mvpr8M+T!8nX21|sTwGj~?|#FxYge%B?%knvE0n3KJV3Bq zjg5^=kr5Hp_C?Vh8CrRr)zz~9I9AGpc+Z{FDZA5^J2csmE%hNLRj=&KxpU`i$6Gmj z4RKT-p6957@Iyvy;pgV&iz+INB*J=_TU;bJq}9mQL$`?Tn=CFWO0XNQg_v4sJGgCV zcvz9%p9tw3AfS)BI&)K;RPfKAIz(s2oSi6V&&_;Og31Rd4S>;3w*xJLN81@TvOu{L)dg_B1Ao9~pkI zWI>6m_1kmtAb_9Jcw6AO|6mI3toQOFMN4@eQb=Z0S6Bbt`R)kK&YcOA8 zkO!;7V%)6=RY*3&M4g(Ro}U|(>lKGA4fEp^g-j(*BIM*2u;`CxtOzva1ajW_&;r+D(o;Ag4JZV(OESvmwJ2oM92cI)XTWq_Yw$jIoZ|31S@ z3JOEe6pUcXa%U(!Nlr;ooawKyp&`K;6OnTND-5F`6$3A$&}u}SuyUXhH2w0XIPBu` zv$wYeaEAcXGlPRwC>8;e1{UkLmmfUy2YC3pu&_{15ucuJ`3{ql`e7vkPJ8{%qw~7j zWaQ@ye*uTk`$BRXNvr(Tg#gh-Jb$)YI&;9&rz5~Kr#fR5E~(iz3Eus!Ofhtp@qe{EkHsP*u%h32|N+I{Iy(}7{Qo;gwX*#_uJL4 z_j^UGy7zz=xLMcbdi?vF;xRp2u@#HcrS>-(lk^>!*STq~KJI7-Vi)=s}kU=qZVg6rIR3s;L_VgS%dv-r&CY-!Sh|xi`wgdGfaX$S9M04rtRUfAV zw}5ja|CJ!&QuWRYTY_=p0|^Y{4^NdeDPZU1biu-c2R1$_UTMc=28w$wE;78#8pY3_ zK6*qBZbpGz7xhCgL|CMGnQOj&-3e|`d|L@Gg`WDUB0%VcxDDO|@dHZIZ=bc!?(S-| zPteBibV)*@qJUHA*S<+fNAPrl#`Sx$B!ck)ie;Jv1qHv+ALh?SUgm z)VzTE-@88wth9R_6r5j_UTT&gC953wSR2{wrh4#cBk9LHO|0lYHw z%3fLhEDV|L`LIjQhxP%^A9x{wE}Z_%=nB++%QwFfcu3-vl-nx9ZZ0K#cml=xu&AZt zgv}Y#K|3Ii&w*teIePT*#S0hIT?0{9n!w~GcEgllB1ADEb{Wx;uCWWK!2mi1z^okL zF*BdeXApWCh#-OcMT0)o)-HVLa}8)uy+K915y2_>`FCNaUd;O*=>M)WC&;gML3Y)gi;0g`^)O-9s2q6r|qxL|7GYD zJqKFgRD3CbCk7O(>hEXs++0hkTFeJgc!S0l6GI0{0!f9+PoK7@rly*;zTN@btMXdx zIX?_f+I>Qgdn-KIAlb;cx}G8S5T6WdEO5J;g7QVaoa4;TeKkIGhA;wr(8uW6BpZNp zf?#4NqFft({9p$0z~&M$N@EZ&_U6x@E8${kf~%uRV^9+{s#kuQFn%*I!Jqi~J;=`H zSI^L_YK|6PTw?Rlh*n58Krvv~4A{?})y`1n=E-0uf{RM4|JGT03as{TL8$wBPSUWJ zwj3cAN)nI+^{!pMU``!;f9HiH{*b<#2}cMS(?Gv_gvW%+U5BC3l$4Y-4@_u_9)z+) zYA&!n`_`?FEa)oYlE@&EDsyhv5ReQq*DLZ$biRGcDip!~{tv-fG4P1F0qc`UDciBJ zu@SLMdeVaj4|I^}geF1=86XDTvDbTjks7E0p+o1W!A60f0+!%6l}bKK%isK9{S;ua zAxbouobyHzNgs&f&f3Dr27XgN@b=`7%nUTf&T{v&=*^EKPnp`2%=${j*-qbKY1`C6 zHWQR-Kk3^$!;6H*o^R1kgAX8s0c-EzV27D;076DoL_}p%6MfGI8&jA@Bn1T{)Zr-h zijvd-OEVL?VcaWA zV6D3`SF`I5G$Ew^c8iU%h*<2Q@`{f?{Mjg%rlJw0W(uT3j|v0Q^j?NQF*Y`q1oUXu zUoLUhW#Ool-4MmqXtAnfmDHI|xP1V&KCmAqnxcR|3DQkSGkU736o6j9&AFHy4kREc z$b3V|V`nYhSGr821t}rE!A*UKgjf#x=8K{x{BG?0GeuPK3dyaRBjL#2Mg>g#{{3WNKwrJg z)e$OTHF(~eH(OE}m(E6!h&XB&^38NU-@uhzK+M@gF6E&5BrU#ko0yyXA)7Ra2rBph zQFxX(S0HLj>Zi-WQ?2>3q31#K^v2&k75|GvLsf)ldSh*oMbZt_qO%GKRDXPi1$-K` zS<2!xjwF7CY{c04~Ehs1?76DZ^q2 z!r!ho{(dk;f)BfJ+IB#i#Hr?KwOp8wbRR)z!3_>`a&Bkzd)*-70)2*b_{b4C=Yz0T zwUDn5+n@bDj}O9Uyn4E0o(`s1LgpEq5jFxm83vBO5(UUvWkVI!nO`qs{TmZA z^F+BX0 zLk>PtsTO((9rDmXu!B%h(3!O&^$F1l{?ZU^&EmQ(tDa%*j(I_-1-cL9(qZizdo+RQ z^mKM|$Bl55sLjjzR=u#k^lz!{S{Igh4F{e~`ol^zJB_#OpErE7t;vcAQ65ECMDyAY zY4a?bpaBJ-+95P00_uZ%A))!gQuviZg(Hp;h~a~+f3u#~zV8ov{+x)r&Yf|bhzI6d z1&!5&rF+lALlV*MyUls|`RA>zv-d?+Td-vvn zyxWqfAx~8NTZzh2a9W)kq-h3tID`b&-_EoR^qMZ<|FzA3>trOHTF*NrO2!>;ghr?g z!#7=ULJ5h87{w$nAnS>hq@|-9z^#BwhUgyGg!7Woe~E7Hvx}_>J}V_Hix+YQlLsf$ z)Y4ZWuMJF21_&C~3e>WA{y4&_x836XE3oiMRvXL^#6!+vy7H5If%4tP{4!Sm2l!A$ zoD|5NIMYp#tk>Z6>6^uTg*K4~JUNGjK7#QFhoKHdt2wUbj(YioUi=0C^l!grbBm%j z!~4QQ7IcvYSRuf07Z7#lahpNBYt@U4ToW0PZ@I>b`FFZh{*=IEu0nYu{f+}KX8(&C zlAk}uh~2akJ_03nsMr4+lNFfQ<^%L}xac&Htycg3H9+`-q`*2LYSnF&v-cgE^S!Yc z=Vt)TAWzZ>%5c6Rg)YGN$i)$?0tN(yYE5_A1`&z}qjO+rDA97D0*sΝ}l#BCK>k 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
{OF>glPsHLr6Cgv>rLrHdn0nwlPl``=)t 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 Date: Thu, 14 Sep 2017 14:56:43 +0200 Subject: [PATCH 148/589] Make the robot bigger CURA-4215 --- resources/images/cura.png | Bin 29732 -> 31650 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/resources/images/cura.png b/resources/images/cura.png index 9657cf61afc0a6adf3adad72d747f728526eeba9..5d3335d70f2ce22ab7c17bc7e5a3987cbcf8553d 100644 GIT binary patch literal 31650 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 literal 29732 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Ν}l#BCK>k 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
{OF>glPsHLr6Cgv>rLrHdn0nwlPl``=)t zv2{k*)Tp;jbY&+3<>X6UcJF?LoanyMFUdm5DCLiXUu=rMZW?9rC}a(xbme^L^~PJ7 zB$WBopda#7Q8;&G)VB6^7e+VhC_n6;NJapoLGjWB*6XGZGiDpD(d4t5*@n zazWWyYSA5ORsEho?oP!IYtY7!f>FTueEQO*#bHY?w?`da8_??t3zrm{9Zyfs0rOWI zZFo~vH7AHkGp}@=7F9lvoRA2A+3ITx{cJf#X;trQK7D#NNuyp-T3SycAnfzg{@xT- zC9O{;O2=)t0OY=!tc@E>bHDugxv5EsI3}a!YUdt*qz@lH{EC6D`=+*=rhAf7Dq^(O znajh6IR;g67W)s0SoLF%Esn(KnJ~tpbXuml&9F>%nNYMTzH#d;rmbmE4P#NDeEhfs zq*+=)VZKLL+vALk8ndKr_e>-TYOAie)cBjpfeW7^P2or+Yf(h{!-sAy6UxiVL;&f% z>LtV~+Wv$!7;CJ>Bb_pM-A~M!CPMx*>^rV8V_E$-b#<9E(_0cO4S7&_T6%uBe${BW zx0+WHl=lcy^ixZISmIk8ab_u>ANKyzf1K&{ne9JpRyMEh!@y$Q@iX8_{#J>Q=eA*} z8uzMfpyc?xIn%CM=2Cg_D~;;p!I(XI{P>s^-`%ySY}MyC1fA;Qfr!ST-B?k}{*U5c zcDrsm{dN2#!$=iej4d!%HNS8SxW|tBr7_lNK_&5<6(XXeGoo&$zA9SWsA<`LZyJiC zG&-}c3+XZ0C&66u>Vgcf5l96Ag2KuUit_0IQ$~$CbTcBtA-@Gn$SbnrMhm3+y2;prmoMvobudK7E)ATrIALew>TweB zH4~V;cc#npKq&yRFm;gTba^T?ya87owU%##v9~`J-?iE!jccg3+Q>-*D?%0PAK@RF$#-haoYfu-ycGVMpODwJ^~VpFDYP8~%4wE2i&sd5dQxHF zz-*$g4r-{Y_hNTm4@?AFJE|AN+`03@RpWJUNa_Gmy`(^2$20n}K1!iX z-PU{gmZ+nryBtYLH4J^oWn#sDS>yPzXIlOHO(3Q%LMVr^fL-;*biU41_x9w^ARSSX zwb+2;va%L*mjt=}bV%ZFixNUd)7%B9^A`5mG_vTOyqPPMbsXea&Qdh9V@8kO;hWeD zCs)n3?;ROAb{Yg^%QN@(+npt7U}pF~SbK%K?o1F`FUdKr4ZeFZ_?EF79kTc~e5h-+ z4Cus=#=`Kv_c!K`==QAHr7^zvj0C1GiyBii?`o58?L?QLaCYQ7VPS`XHN5^vU;Dtb zTQ3P3Ap7<@_xAY%`}fcI$&~{Bi{hY}Bhy7*r0Nl-^o{y|2u0gZ5)cxy+K|}Ww|@yp zQz3?Vd_VnLn~KJ+oIQI#NxfN%G*YffJRmxrSnX+?Y`1UUjK8~Ho-$_U%peN_W!Iyu zO{lHxAz^5aKQTo2tc^Jus|!N&)ylOiUA!_fCML`@${(GJx8!r4?x*YQFbhph&whrW zA4gWOISHJIup+<>GT7%ttP5^=Jp=<;DD6X8LaOH?uldk72=Yp)@q0hGbD$F*NC6OTO>+wDPSHZ~(E!m%t$#|BLB zY-_9Ni23~G%LqbRp5lm{inHU(ixo?=J6+*=(xCOi3#TUHL=I-p_PLqTa^c~G@+OOn zP4N?lOjZzhXamG@D>=K_P={|D8eEGr)m2rK-aG0BTAN6^&Gu07W}_2N4k-ur)mf)5 z0)tgik#%;VUo!pdy<9**WNFCEhK~ zUWw>|^l$?5fb%TM;+zb5xC@C|aB}j+X)&4L*_)^a!w4u{>=9N`TvX)G#Ib`(U3vQS zi=8|W$06tMlMoUzqVDfH*P#f6<=ehCq=S4MYfI~Bo7Ki)NkW^O#g!|SPbr0=h)qsj zlf3<{=ZdctJlUHK4SQV<2pF^5)%CZ1W;#1CQ(xq(9X<^`0UmaJ-RG0x>FwQ%N?Hg) zHxjYNwv=!3m*96U;qMnbmIO>ICn_@Xp7YSescH4c8j;_=M4BQsC9u!*XCp_A%CK6# zd^Ui@I_&{}tT#0D)cmFAlgfSg;6a^jYRl!`p4+u< zK-fwX-RCcUPdRUde+tkRpX{wJf&g#SE1cst=1>5GyW*TW(GM7|#&c2EgNNm6yC=d7 z0GJztp$=(GkquuH)X}lK%yjT92)QCE_XmdS+RS4EtCF4Gy?-CU9dVf#u2`4Q8&q{H^MXI=PmXB9gkIo24YposJCcAXHQh@X3NeKC6_lb7| z6%MQozL3MRwWK#$uK5+#Tjlvbxt@t^YhzV!p1(ezircz z_l)ZR)0&B`!AE>YGgDJtnCbix#)tfG_x`yu5sQ-2uW&?mbk$ zRoZy%`t=2>e%aHCS|VrM`_-rD{;qBIh`zCZHdg}|8ON+iD(EaMo$-!vJ3GK@3sAJp z3pJKugDVVQ+AKOy*@S>QuFdvsA_KlJV*^Dh+Ef`wwd3Vk?x`WHoF9BNQdK&r-xqg% zg9orf;`af(?dr>vJ&EPE6Y~Z4Ncu>o9fK($S7*C7tPxi!9q3e?F^QITZ~<@TjeM7I5Dcna!b-m zf~@wOGYZpPtp=F#fB?992Ehj0b4wWLT=`(ZMVlhX_CZz9bkqHJRPOsH&B?d3WOCxL zYG37+k>e0C32|g=HG|>&Wq1ZSl#?|TIEEb5)8X6uVmQF2+`miFPhF^MMWdY zmB>hMCY*(n0(0~HJ}@It(5y|v3%xkh$+`9iz#pXg^s$3Te7|L>iHV%w$&>%AWJ2J} z$f<>Rz4`e)mpKDf#E$T zKBELWg8sgM8-dVh6@c6uulpGuU^eSu>{pjfMNxk$6_im)AZ_pg@2njwB0gBjM z8uQHYQJuL@vtc#YYy0*-^PTfF`p?DJ$rb#DC8PaL0pPtl(r55v@m>UAS!%@=?xD+= z-s{tp>F!S`X9J(x2E9sl+rB~TuUaFJ&bM`SM{r!MM{#@5&K#5xH19=m@rs~2{$xHW zfP%vG(hruV6WY9soRY!tAjVo)7HdCBtXcfNww)G#DK+*&=W?F^cHHIN?;@6r`*&~J zZM=*IAl@Wl4#t)?2d=#&HQ?SO%ltKxfro=)-h%IfH|*zbj@4PvmTl+aPmi>L98 zj_>2gj}sC?8a$+q=JQ+RSfTVQsy1 z$Y0_8F8LH~a-4Z$2^BtTSo`N5n-WW7kq3r*K$yIZPJA8Wo3z@u>P=(gabA-kooRTB zCobDIgfFnSwI+a%zCWYDwoC+&*ieSDo<3D3i|cDrT~IpGDR`ne0Dczn?@fazSw5IC z&Lj88D@(8Ptw+kY1`I7&@@Q+~)o7QcUU?5}C&mKU0`7W;EKmt$l%zB(lNREJt4?eU z*RNk6j@0=Y&;Ah=Z{Q>FINHyTN*|4SCVqmt1P1)|Ly0W%T4(O8GFDY2th_+w-o4X6 zh0^+>^AYm=J52w8+xN}`*lL0I&zw1P$7L%vzB4tyNLVOZUNqiZMMs zuVzU{+_<4EL58T0WEXDELeRlrW?ZrDOj?zzCim^rCzO!k(QK?nC>K^Yrp?G{vrsqb z)KRf;(8kEkT!LIO=yy73wtljbpz7ASntv2}^qzs-r;#V7k08#lKWgfi>pJai2n~=E zPsxzpqyGfJ8`;4Z+~RxeM1>Y{xKbrp_@qettPEnPA`ppe~bj+{Zg^E8aVr|4ME znUrDLgRfod3IPlj7#k~toc1%hJN^6j2W|XP5igne#{tnAcsjAF&+*ah>~ClwiW~SJ zJR$LD=NTwvByh=(e>0#llyz$?C)`|rScVLen5)V zQg!*>FdZA7+G|BeMP2pPE)?V0pR>2$`Ca=$^Q>J{;S<%Asf|x(!$MZkwh(a{@VBIt z>R+emfG_<# zP8z8{LiUmjV@iYUyjW?J-ikpX`5Uh#8umW(<9CQ@lmTVZ!p<&KQG#OPD1Rc9FXeZg zMsk`C=5Kt2Z!9bK+adQ}HV$ULzV6=VbGHEd*idL4s{RA`qG4b(gXH86Qei;^`cWsY zxt>@qXCT-^?nv4KHM@XbZ^ZF|ofs+F1YO)tM19`AHYC$&6)zWh2Z^gKoC6}YYb9jd zCV=uW=o`)O7e9?d|47j9pka(2pQoSL_1ZOa;>PF0TfD{uodmb`f;w=J$^OY`qe@2y zSn$$8vooGPXK-`7KnYkHoM0td#OOgJ(jgQ}s|1)Q_7z7lJfVMU$~-Zw4%tjF`3Mjp z{e3^k9$qKHZ>}Sp9Zr_WZLxGseW;|Uw(6E%KC@vhU&9mi#b4k_ZCoW2$fuB8`*Z;W zP=#x;^x9)ah=gieE&-n#sm-RmH4**nf#k0Ri)txT+sSx6C1yI38EI=e~Oi|#ca9CEJ7_1$m z1Zs+2MM-RWfmqiRtXyU{h0ppOaZ1{=@5~>1tq*%^EaRVOMiXtbuQrM6M zu-(Kfr}7y(6iJgpLI%{SoB_mjmN1@L&a8ZA+^I~A$6OfU@V!3Rhxol;86`&Em;d@ zqb5OOG?7fX5^mFAo}0gV$oCNU7>G@sH%wJCDmws98q%7^3oK? zSB_l_zJDmO5hm|vacW*Hc^5R)2b-J?7qy7Y8)~c`kHrL(Ji>mc zrgn^>55ffk0W=1w%5&~h_%bW(fgJ7XolZw$Vq*64MwkHIIlCex9ljOGz!ir#QX<2S4Q4F%9l{2dz)$TDf%4DpdFvdOSUrn-} z?%+0*pKc;&z=#A|^>RysY5ML=={0f&brrf740jU zN_yysjPmj^NKalu?=fSKoqs`;;cP}`aHRQyrYEg9r0?|4B2yDx)ojJ@r^~m_cW_Wu zA3IjKO(~j~SIvfu`==V9MdLqUXit@lJ}BMXL;6Z%(HIrF8^o_xA1mi=t=#L%qHf!H zNm?Agx>BfeLwGfelqT+3a+s& zV&??S7rX4SqenMtHC~6zGKny`wyh#nO-M)M2X*!dIf^!U9X&Zt#IuVd&23md0g6|C z_EUzX^{gI)87h$0X!;I)BWCvMYTMI5BcyZrpz>AE%buX2L&8=G-ep(r05HQyTucjy zJAcOR$4z-A+VzysxI<1kmNpa56Zen{g%6dpur|v-We8fV7Znwk!G~5wn~F+O!P}$4 zZrm_({(2Z7A|2qdAn^8j<&Wwpm|e~r{d+DTAiQ7K{gQu3V$WiQK8jX97}v9~yJIk> zY(&^xhfDV;J+FF8Z4p3~e@;yZf%G*yTzkj1g;uq%j^D;Q+~Mc%pONU_>)T&+FFAs# zBeHUGWQXiO#U7MbC1z(tJ%Ze3{SMlpIA0i*-#brRZEn7h)o|ati12C})Ccr8o1-Hl zf>9=%%eB97`7)hzjx`OGXY9GSx-^Z6=-yA0J0u1(!=}jS=ukurRxG-VAiNewxbUYx zm%Hr@`Vo8Q&KWD-`*d;g=Ce=N#}21(-Q7{+eZBa-0~@s_iJz@Jms10CyJtQ;en0^C z$QTFDa+|&(esz)EC)1%Kp!`0%9Mv- zZ+xj`3@&&HqS zqQ6&w*`^A@_~;vC%JsURlIOG&1K@|~>LhLdtPns@i%tO=R9E#=f-MFM+leKgK6Z0`7XENy*+9Z{ z#H6&Ka+mwafE)*SkHzvnhhS>AE6$(lD_h!oYkSH_sViMQMkfaGX&vN-chc`^GPY>n zDeoWmn2e9$=`!4mhqf^g4xy!0w Date: Thu, 14 Sep 2017 15:55:35 +0200 Subject: [PATCH 149/589] Make canvas use a one-time Timer to update CURA-4182 The canvas approach has a drawback on the UI update: when a printcore or a material is changed, calling requestPaint() to the canvas doesn't trigger an immediate update. The solution is to have a built-in Timer in the Canvas and to use that to update. Somehow this just works. The problem with this approach is that the Timer constantly updates the canvas which eats a lot of CPU power. To solve this, I changed the timer to be a one-time timer and it will be started when there is a material/print core update. --- resources/qml/SidebarSimple.qml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 20d92885d7..bbfd8a424a 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -143,6 +143,7 @@ Item } } resolutionSlider.currentQualityIndex = undefined; + backgroundBarUpdateTimer.start(); } function updateBar() @@ -246,9 +247,10 @@ Item anchors.fill: parent Timer { - interval: 16 - running: true - repeat: true + id: backgroundBarUpdateTimer + interval: 10 + running: false + repeat: false onTriggered: backgroundBar.requestPaint() } From 11ebdf730389eca66bafc37be7c6a741c5641f46 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 14 Sep 2017 16:06:51 +0200 Subject: [PATCH 150/589] CURA-4269 disable auto-drop for first time loaded models from project files --- cura/PlatformPhysics.py | 11 ++++++++++- plugins/3MFReader/ThreeMFReader.py | 6 +++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index b00c5a632c..464e9682a6 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -9,6 +9,7 @@ from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator from UM.Math.Vector import Vector from UM.Scene.Selection import Selection from UM.Preferences import Preferences +from UM.Logger import Logger from cura.ConvexHullDecorator import ConvexHullDecorator @@ -67,10 +68,18 @@ class PlatformPhysics: # Move it downwards if bottom is above platform move_vector = Vector() - if Preferences.getInstance().getValue("physics/automatic_drop_down") and not (node.getParent() and node.getParent().callDecoration("isGroup")) and node.isEnabled(): #If an object is grouped, don't move it down + + # Check if this is the first time a project file node was loaded (disable auto drop in that case), defaults to True + should_auto_drop = node.getSetting("auto_drop", True) + + # If a node is grouped or it's loaded from a project file (auto-drop disabled), don't move it down + if Preferences.getInstance().getValue("physics/automatic_drop_down") and not (node.getParent() and node.getParent().callDecoration("isGroup")) and node.isEnabled() and should_auto_drop: z_offset = node.callDecoration("getZOffset") if node.getDecorator(ZOffsetDecorator.ZOffsetDecorator) else 0 move_vector = move_vector.set(y=-bbox.bottom + z_offset) + # Enable auto-drop after processing the project file node for the first time + node.setSetting("auto_drop", False) + # If there is no convex hull for the node, start calculating it and continue. if not node.getDecorator(ConvexHullDecorator): node.addDecorator(ConvexHullDecorator()) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index d473ecaa8b..66dfb6130e 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -73,11 +73,11 @@ class ThreeMFReader(MeshReader): return temp_mat - - ## Convenience function that converts a SceneNode object (as obtained from libSavitar) to a Uranium scenenode. - # \returns Uranium Scenen node. + ## Convenience function that converts a SceneNode object (as obtained from libSavitar) to a Uranium SceneNode. + # \returns Uranium SceneNode. def _convertSavitarNodeToUMNode(self, savitar_node): um_node = SceneNode() + um_node.setSetting("auto_drop", False) # Disable the auto-drop feature when loading a project file and processing the nodes for the first time transformation = self._createMatrixFromTransformationString(savitar_node.getTransformation()) um_node.setTransformation(transformation) mesh_builder = MeshBuilder() From 51e257eda67d80658a17f272356eb63ab6a19320 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 14 Sep 2017 16:15:14 +0200 Subject: [PATCH 151/589] remove unused Logger import --- cura/PlatformPhysics.py | 1 - 1 file changed, 1 deletion(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 464e9682a6..dc5594dc7b 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -9,7 +9,6 @@ from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator from UM.Math.Vector import Vector from UM.Scene.Selection import Selection from UM.Preferences import Preferences -from UM.Logger import Logger from cura.ConvexHullDecorator import ConvexHullDecorator From bf96be3ab26eb720b6ce7e6ee563b35697a7047e Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 14 Sep 2017 16:40:20 +0200 Subject: [PATCH 152/589] Improve titles for slice failure messages a bit The previous ones were very vague. --- plugins/CuraEngineBackend/CuraEngineBackend.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index ea1f8c39b4..62e3703a3f 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -278,7 +278,7 @@ class CuraEngineBackend(QObject, Backend): if job.getResult() == StartSliceJob.StartJobResult.MaterialIncompatible: if Application.getInstance().platformActivity: self._error_message = Message(catalog.i18nc("@info:status", - "The selected material is incompatible with the selected machine or configuration."), title = catalog.i18nc("@info:title", "Material Details")) + "The selected material is incompatible with the selected machine or configuration."), title = catalog.i18nc("@info:title", "Incompatible material")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) else: @@ -306,7 +306,7 @@ class CuraEngineBackend(QObject, Backend): error_labels = ", ".join(error_labels) self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice with the current settings. The following settings have errors: {0}".format(error_labels)), - title = catalog.i18nc("@info:title", "Setting Details")) + title = catalog.i18nc("@info:title", "Invalid settings")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) else: From fb4b797335b262ce7e8578fb7b6bf29b55592d37 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 14 Sep 2017 16:43:42 +0200 Subject: [PATCH 153/589] fix duplicate dark theme entries --- resources/themes/cura-dark/theme.json | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/resources/themes/cura-dark/theme.json b/resources/themes/cura-dark/theme.json index 6b7edb6429..a9fb587526 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -16,7 +16,7 @@ "secondary": [241, 242, 242, 255], "topbar_background_color": [0, 0, 0, 0], - "topbar_background_color_monitoring": [0, 0, 0, 255], + "topbar_background_color_monitoring": [39, 44, 48, 255], "topbar_button_text_active": [255, 255, 255, 255], "topbar_button_text_inactive": [128, 128, 128, 255], @@ -36,7 +36,7 @@ "error": [212, 31, 53, 255], "sidebar_header_bar": [39, 44, 48, 255], "sidebar_header_active": [39, 44, 48, 255], - "sidebar_header_hover": [39, 44, 48, 255], + "sidebar_header_hover": [68, 72, 75, 255], "sidebar_header_highlight": [68, 192, 255, 255], "sidebar_header_highlight_hover": [68, 192, 255, 255], "sidebar_header_text_active": [255, 255, 255, 255], @@ -128,9 +128,9 @@ "progressbar_background": [255, 255, 255, 48], "progressbar_control": [255, 255, 255, 197], - "slider_groove": [245, 245, 245, 255], + "slider_groove": [127, 127, 127, 255], "slider_groove_border": [127, 127, 127, 255], - "slider_groove_fill": [127, 127, 127, 255], + "slider_groove_fill": [245, 245, 245, 255], "slider_handle": [255, 255, 255, 255], "slider_handle_hover": [77, 182, 226, 255], "slider_handle_border": [39, 44, 48, 255], @@ -197,11 +197,6 @@ "material_compatibility_warning": [255, 255, 255, 255], - "topbar_button_text_inactive": [255, 255, 255, 255], - "topbar_button_text_active": [255, 255, 255, 255], - "topbar_button_text_hovered": [255, 255, 255, 255], - "topbar_background_color_monitoring": [39, 44, 48, 255], - "quality_slider_unavailable": [179, 179, 179, 255], "quality_slider_available": [255, 255, 255, 255], "quality_slider_handle": [255, 255, 255, 255], From 05170155e8c767c444c46c960600ebd9afabe1e5 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 14 Sep 2017 16:49:09 +0200 Subject: [PATCH 154/589] CURA-4318 small fixes for dark design --- resources/themes/cura-dark/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-dark/theme.json b/resources/themes/cura-dark/theme.json index a9fb587526..187896aa28 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -109,7 +109,7 @@ "setting_control": [43, 48, 52, 255], "setting_control_selected": [34, 39, 42, 38], - "setting_control_highlight": [255, 255, 255, 0], + "setting_control_highlight": [43, 48, 52, 255], "setting_control_border": [255, 255, 255, 38], "setting_control_border_highlight": [12, 169, 227, 255], "setting_control_text": [255, 255, 255, 181], From 4aa8d38bd3f7b6582d6fac72d29d71e6a88aa8c6 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 14 Sep 2017 17:06:26 +0200 Subject: [PATCH 155/589] CURA-4321 make sidebar a tad smaller --- resources/themes/cura-light/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index fb6e43d0be..9a6e6c19eb 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -295,7 +295,7 @@ "extruder_button_material_margin": [0.70, 0.9], "extruder_button_material": [0.75, 0.75], - "sidebar": [35.0, 10.0], + "sidebar": [32.0, 10.0], "sidebar_margin": [1.71, 1.43], "sidebar_margin_thin": [0.71, 0.71], "sidebar_header": [0.0, 4.0], From 3188156da30ea6e167c7a864af30fc55eb323561 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 14 Sep 2017 17:19:43 +0200 Subject: [PATCH 156/589] WIP: infill slider CURA-4303 --- resources/qml/SidebarSimple.qml | 99 ++++++++++++++++++++++++++++++++- 1 file changed, 98 insertions(+), 1 deletion(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index bbfd8a424a..efcd2f15df 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -410,13 +410,110 @@ Item } } + // + // NEW Infill + // + Item + { + id: newInfillCellLeft + anchors.top: speedLabel.top + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 1.2 + anchors.left: parent.left + width: UM.Theme.getSize("sidebar").width * .45 - UM.Theme.getSize("sidebar_margin").width + height: UM.Theme.getSize("sidebar_margin").height + + Text + { + id: newInfillLabel + //: Infill selection label + text: catalog.i18nc("@label", "Infill"); + font: UM.Theme.getFont("default"); + color: UM.Theme.getColor("text"); + anchors.top: parent.top + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width + } + } + + Item + { + id: newInfillCellRight + + height: UM.Theme.getSize("sidebar_margin").height + width: UM.Theme.getSize("sidebar").width * .55 + + anchors.left: newInfillCellLeft.right + anchors.top: newInfillCellLeft.top + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + + Text + { + id: selectedInfillRateText + anchors.top: parent.top + anchors.left: infillSlider.left + anchors.leftMargin: (infillSlider.value / infillSlider.stepSize) * (infillSlider.width / (infillSlider.maximumValue / infillSlider.stepSize)) - 9 + anchors.right: parent.right + height: UM.Theme.getSize("sidebar_margin").height / 10 + text: "10%" + horizontalAlignment: Text.AlignLeft + } + + Slider + { + id: infillSlider + anchors.top: selectedInfillRateText.bottom + anchors.left: parent.left + height: UM.Theme.getSize("sidebar_margin").height * 5 + + minimumValue: 0 + maximumValue: 100 + stepSize: 5 + tickmarksEnabled: true + + style: SliderStyle + { + groove: Rectangle { + id: groove + implicitWidth: 200 + implicitHeight: 2 + color: "gray" + radius: 1 + } + handle: Item + { + Rectangle { + id: handleButton + anchors.centerIn: parent + color: control.hovered ? UM.Theme.getColor("quality_slider_handle_hover") : UM.Theme.getColor("quality_slider_handle") + implicitWidth: 10 + implicitHeight: 10 + radius: 10 + } + } + tickmarks: Repeater { + id: repeater + model: control.maximumValue / control.stepSize + 1 + Rectangle { + anchors.verticalCenter: parent.verticalCenter + color: UM.Theme.getColor("quality_slider_available") + width: 1 + height: 6 + y: 0 + x: styleData.handleWidth / 2 + index * ((repeater.width - styleData.handleWidth) / (repeater.count-1)) + } + } + } + } + } + // // Infill // Item { id: infillCellLeft - anchors.top: speedLabel.top + anchors.top: newInfillCellRight.bottom anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 1.2 anchors.left: parent.left width: UM.Theme.getSize("sidebar").width * .45 - UM.Theme.getSize("sidebar_margin").width From a4ebedee830ca40d68ee4c89e0b9074fc0c6fd44 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 14 Sep 2017 17:40:44 +0200 Subject: [PATCH 157/589] CURA-4321 make print button blue when available, slight color changes on hover and pressed --- resources/qml/SaveButton.qml | 18 +++++++++--------- resources/themes/cura-light/theme.json | 8 ++++++++ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/resources/qml/SaveButton.qml b/resources/qml/SaveButton.qml index 616017ebf6..2b7930793f 100644 --- a/resources/qml/SaveButton.qml +++ b/resources/qml/SaveButton.qml @@ -238,22 +238,22 @@ Item { if(!control.enabled) return UM.Theme.getColor("action_button_disabled_border"); else if(control.pressed) - return UM.Theme.getColor("action_button_active_border"); + return UM.Theme.getColor("print_button_ready_pressed_border"); else if(control.hovered) - return UM.Theme.getColor("action_button_hovered_border"); + return UM.Theme.getColor("print_button_ready_hovered_border"); else - return UM.Theme.getColor("action_button_border"); + return UM.Theme.getColor("print_button_ready_border"); } color: { if(!control.enabled) return UM.Theme.getColor("action_button_disabled"); else if(control.pressed) - return UM.Theme.getColor("action_button_active"); + return UM.Theme.getColor("print_button_ready_pressed"); else if(control.hovered) - return UM.Theme.getColor("action_button_hovered"); + return UM.Theme.getColor("print_button_ready_hovered"); else - return UM.Theme.getColor("action_button"); + return UM.Theme.getColor("print_button_ready"); } Behavior on color { ColorAnimation { duration: 50; } } @@ -268,11 +268,11 @@ Item { if(!control.enabled) return UM.Theme.getColor("action_button_disabled_text"); else if(control.pressed) - return UM.Theme.getColor("action_button_active_text"); + return UM.Theme.getColor("print_button_ready_text"); else if(control.hovered) - return UM.Theme.getColor("action_button_hovered_text"); + return UM.Theme.getColor("print_button_ready_text"); else - return UM.Theme.getColor("action_button_text"); + return UM.Theme.getColor("print_button_ready_text"); } font: UM.Theme.getFont("action_button") text: control.text; diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 9a6e6c19eb..92d51ae7d2 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -143,6 +143,14 @@ "action_button_disabled_text": [127, 127, 127, 255], "action_button_disabled_border": [245, 245, 245, 255], + "print_button_ready": [12, 169, 227, 255], + "print_button_ready_border": [12, 169, 227, 255], + "print_button_ready_text": [255, 255, 255, 255], + "print_button_ready_hovered": [12, 169, 255, 255], + "print_button_ready_hovered_border": [12, 169, 227, 255], + "print_button_ready_pressed": [12, 169, 220, 255], + "print_button_ready_pressed_border": [12, 169, 227, 255], + "scrollbar_background": [255, 255, 255, 255], "scrollbar_handle": [24, 41, 77, 255], "scrollbar_handle_hover": [12, 159, 227, 255], From 98ab5714831e0eb23682544ef38c3bef52887326 Mon Sep 17 00:00:00 2001 From: alekseisasin Date: Thu, 14 Sep 2017 18:03:31 +0200 Subject: [PATCH 158/589] Removed 14bitVoid code accord to a new LGPL license CURA-4232 --- cura/BuildVolume.py | 4 +- cura/PrintInformation.py | 94 +++++++++++++------ .../CuraEngineBackend/CuraEngineBackend.py | 71 +++++++------- resources/qml/Sidebar.qml | 79 ++++++++-------- 4 files changed, 143 insertions(+), 105 deletions(-) diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 1c9a0708fd..4e55528f5d 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -956,14 +956,14 @@ class BuildVolume(SceneNode): if adhesion_type == "skirt": skirt_distance = self._getSettingFromAdhesionExtruder("skirt_gap") skirt_line_count = self._getSettingFromAdhesionExtruder("skirt_line_count") - bed_adhesion_size = skirt_distance + (skirt_line_count * self._getSettingFromAdhesionExtruder("skirt_brim_line_width")) * self._getSettingFromAdhesionExtruder("initial_layer_line_width_factor") / 100.0 + bed_adhesion_size = skirt_distance + (self._getSettingFromAdhesionExtruder("skirt_brim_line_width") * skirt_line_count) * self._getSettingFromAdhesionExtruder("initial_layer_line_width_factor") / 100.0 if len(used_extruders) > 1: for extruder_stack in used_extruders: bed_adhesion_size += extruder_stack.getProperty("skirt_brim_line_width", "value") * extruder_stack.getProperty("initial_layer_line_width_factor", "value") / 100.0 #We don't create an additional line for the extruder we're printing the skirt with. bed_adhesion_size -= self._getSettingFromAdhesionExtruder("skirt_brim_line_width", "value") * self._getSettingFromAdhesionExtruder("initial_layer_line_width_factor", "value") / 100.0 elif adhesion_type == "brim": - bed_adhesion_size = self._getSettingFromAdhesionExtruder("brim_line_count") * self._getSettingFromAdhesionExtruder("skirt_brim_line_width") * self._getSettingFromAdhesionExtruder("initial_layer_line_width_factor") / 100.0 + bed_adhesion_size = self._getSettingFromAdhesionExtruder("skirt_brim_line_width") * self._getSettingFromAdhesionExtruder("brim_line_count") * self._getSettingFromAdhesionExtruder("initial_layer_line_width_factor") / 100.0 if self._global_container_stack.getProperty("machine_extruder_count", "value") > 1: for extruder_stack in used_extruders: bed_adhesion_size += extruder_stack.getProperty("skirt_brim_line_width", "value") * extruder_stack.getProperty("initial_layer_line_width_factor", "value") / 100.0 diff --git a/cura/PrintInformation.py b/cura/PrintInformation.py index 2b7a35995b..209d95d616 100644 --- a/cura/PrintInformation.py +++ b/cura/PrintInformation.py @@ -1,4 +1,4 @@ -# Copyright (c) 2015 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. from PyQt5.QtCore import QObject, pyqtSignal, pyqtProperty @@ -51,20 +51,7 @@ class PrintInformation(QObject): def __init__(self, parent = None): super().__init__(parent) - self._current_print_time = Duration(None, self) - self._print_times_per_feature = { - "none": Duration(None, self), - "inset_0": Duration(None, self), - "inset_x": Duration(None, self), - "skin": Duration(None, self), - "support": Duration(None, self), - "skirt": Duration(None, self), - "infill": Duration(None, self), - "support_infill": Duration(None, self), - "travel": Duration(None, self), - "retract": Duration(None, self), - "support_interface": Duration(None, self) - } + self.initializeCuraMessagePrintTimeProperties() self._material_lengths = [] self._material_weights = [] @@ -91,6 +78,33 @@ class PrintInformation(QObject): self._material_amounts = [] + + # Crate cura message translations and using translation keys initialize empty time Duration object for total time + # and time for each feature + def initializeCuraMessagePrintTimeProperties(self): + self._current_print_time = Duration(None, self) + + self._print_time_message_translations = { + "inset_0": catalog.i18nc("@tooltip", "Outer Wall"), + "inset_x": catalog.i18nc("@tooltip", "Inner Walls"), + "skin": catalog.i18nc("@tooltip", "Skin"), + "infill": catalog.i18nc("@tooltip", "Infill"), + "support_infill": catalog.i18nc("@tooltip", "Support Infill"), + "support_interface": catalog.i18nc("@tooltip", "Support Interface"), + "support": catalog.i18nc("@tooltip", "Support"), + "skirt": catalog.i18nc("@tooltip", "Skirt"), + "travel": catalog.i18nc("@tooltip", "Travel"), + "retract": catalog.i18nc("@tooltip", "Retractions"), + "none": catalog.i18nc("@tooltip", "Other") + } + + self._print_time_message_values = {} + + # Full fill message values using keys from _print_time_message_translations + for key in sorted(self._print_time_message_translations.keys()): + self._print_time_message_values[key] = Duration(None, self) + + currentPrintTimeChanged = pyqtSignal() preSlicedChanged = pyqtSignal() @@ -107,10 +121,6 @@ class PrintInformation(QObject): def currentPrintTime(self): return self._current_print_time - @pyqtProperty("QVariantMap", notify = currentPrintTimeChanged) - def printTimesPerFeature(self): - return self._print_times_per_feature - materialLengthsChanged = pyqtSignal() @pyqtProperty("QVariantList", notify = materialLengthsChanged) @@ -129,22 +139,28 @@ class PrintInformation(QObject): def materialCosts(self): return self._material_costs - def _onPrintDurationMessage(self, time_per_feature, material_amounts): - total_time = 0 - for feature, time in time_per_feature.items(): - if time != time: # Check for NaN. Engine can sometimes give us weird values. - self._print_times_per_feature[feature].setDuration(0) - Logger.log("w", "Received NaN for print duration message") - continue - total_time += time - self._print_times_per_feature[feature].setDuration(time) - self._current_print_time.setDuration(total_time) + def _onPrintDurationMessage(self, print_time, material_amounts): + self._updateTotalPrintTimePerFeature(print_time) self.currentPrintTimeChanged.emit() self._material_amounts = material_amounts self._calculateInformation() + def _updateTotalPrintTimePerFeature(self, print_time): + total_estimated_time = 0 + + for feature, time in print_time.items(): + if time != time: # Check for NaN. Engine can sometimes give us weird values. + self._print_time_message_values.get(feature).setDuration(0) + Logger.log("w", "Received NaN for print duration message") + continue + + total_estimated_time += time + self._print_time_message_values.get(feature).setDuration(time) + + self._current_print_time.setDuration(total_estimated_time) + def _calculateInformation(self): if Application.getInstance().getGlobalContainerStack() is None: return @@ -294,3 +310,23 @@ class PrintInformation(QObject): ## Utility method that strips accents from characters (eg: â -> a) def _stripAccents(self, str): return ''.join(char for char in unicodedata.normalize('NFD', str) if unicodedata.category(char) != 'Mn') + + @pyqtSlot(result = "QVariantMap") + def getFeaturePrintTimes(self): + result = {} + for feature, time in self._print_time_message_values.items(): + if feature in self._print_time_message_translations: + result[self._print_time_message_translations[feature]] = time + else: + result[feature] = time + return result + + # Simulate message with zero time duration + def setToZeroPrintInformation(self): + temp_message = {} + for key in self._print_time_message_values.keys(): + temp_message[key] = 0 + + temp_material_amounts = [0] + self._onPrintDurationMessage(temp_message, temp_material_amounts) + diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index ea1f8c39b4..fc443daaa3 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -1,4 +1,4 @@ -# Copyright (c) 2015 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. from UM.Backend.Backend import Backend, BackendState @@ -196,19 +196,7 @@ class CuraEngineBackend(QObject, Backend): Logger.log("w", "Slice unnecessary, nothing has changed that needs reslicing.") return - self.printDurationMessage.emit({ - "none": 0, - "inset_0": 0, - "inset_x": 0, - "skin": 0, - "support": 0, - "skirt": 0, - "infill": 0, - "support_infill": 0, - "travel": 0, - "retract": 0, - "support_interface": 0 - }, [0]) + Application.getInstance().getPrintInformation().setToZeroPrintInformation() self._stored_layer_data = [] self._stored_optimized_layer_data = [] @@ -514,29 +502,6 @@ class CuraEngineBackend(QObject, Backend): def _onGCodePrefixMessage(self, message): self._scene.gcode_list.insert(0, message.data.decode("utf-8", "replace")) - ## Called when a print time message is received from the engine. - # - # \param message The protobuf message containing the print time per feature and - # material amount per extruder - def _onPrintTimeMaterialEstimates(self, message): - material_amounts = [] - for index in range(message.repeatedMessageCount("materialEstimates")): - material_amounts.append(message.getRepeatedMessage("materialEstimates", index).material_amount) - feature_times = { - "none": message.time_none, - "inset_0": message.time_inset_0, - "inset_x": message.time_inset_x, - "skin": message.time_skin, - "support": message.time_support, - "skirt": message.time_skirt, - "infill": message.time_infill, - "support_infill": message.time_support_infill, - "travel": message.time_travel, - "retract": message.time_retract, - "support_interface": message.time_support_interface - } - self.printDurationMessage.emit(feature_times, material_amounts) - ## Creates a new socket connection. def _createSocket(self): super()._createSocket(os.path.abspath(os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), "Cura.proto"))) @@ -555,6 +520,38 @@ class CuraEngineBackend(QObject, Backend): else: self._change_timer.start() + ## Called when a print time message is received from the engine. + # + # \param message The protobuf message containing the print time per feature and + # material amount per extruder + def _onPrintTimeMaterialEstimates(self, message): + material_amounts = [] + for index in range(message.repeatedMessageCount("materialEstimates")): + material_amounts.append(message.getRepeatedMessage("materialEstimates", index).material_amount) + + times = self._parseMessagePrintTimes(message) + self.printDurationMessage.emit(times, material_amounts) + + ## Called for parsing message to retrieve estimated time per feature + # + # \param message The protobuf message containing the print time per feature + def _parseMessagePrintTimes(self, message): + + result = { + "inset_0": message.time_inset_0, + "inset_x": message.time_inset_x, + "skin": message.time_skin, + "infill": message.time_infill, + "support_infill": message.time_support_infill, + "support_interface": message.time_support_interface, + "support": message.time_support, + "skirt": message.time_skirt, + "travel": message.time_travel, + "retract": message.time_retract, + "none": message.time_none + } + return result + ## Called when the back-end connects to the front-end. def _onBackendConnected(self): if self._restart: diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index ba357f40a5..ba1a05b828 100755 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -26,7 +26,6 @@ Rectangle property bool monitoringPrint: false property variant printDuration: PrintInformation.currentPrintTime - property variant printDurationPerFeature: PrintInformation.printTimesPerFeature property variant printMaterialLengths: PrintInformation.materialLengths property variant printMaterialWeights: PrintInformation.materialWeights property variant printMaterialCosts: PrintInformation.materialCosts @@ -388,54 +387,60 @@ Rectangle anchors.bottom: parent.bottom anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width anchors.bottomMargin: UM.Theme.getSize("sidebar_margin").height - height: childrenRect.height + height: timeDetails.height + timeSpecDescription.height + lengthSpec.height visible: !monitoringPrint - UM.TooltipArea + Text { - id: timeSpecPerFeatureTooltipArea - width: timeSpec.width - height: timeSpec.height + id: timeDetails anchors.left: parent.left anchors.bottom: timeSpecDescription.top + font: UM.Theme.getFont("large") + color: UM.Theme.getColor("text_subtext") + text: (!base.printDuration || !base.printDuration.valid) ? catalog.i18nc("@label", "00h 00min") : base.printDuration.getDisplayString(UM.DurationFormat.Short) - text: { - var order = ["inset_0", "inset_x", "skin", "infill", "support_infill", "support_interface", "support", "travel", "retract", "none"]; - var visible_names = { - "inset_0": catalog.i18nc("@tooltip", "Outer Wall"), - "inset_x": catalog.i18nc("@tooltip", "Inner Walls"), - "skin": catalog.i18nc("@tooltip", "Skin"), - "infill": catalog.i18nc("@tooltip", "Infill"), - "support_infill": catalog.i18nc("@tooltip", "Support Infill"), - "support_interface": catalog.i18nc("@tooltip", "Support Interface"), - "support": catalog.i18nc("@tooltip", "Support"), - "travel": catalog.i18nc("@tooltip", "Travel"), - "retract": catalog.i18nc("@tooltip", "Retractions"), - "none": catalog.i18nc("@tooltip", "Other") - }; - var result = ""; - for(var feature in order) + MouseArea + { + id: infillMouseArea + anchors.fill: parent + hoverEnabled: true + //enabled: base.settingsEnabled + + onEntered: { - feature = order[feature]; - if(base.printDurationPerFeature[feature] && base.printDurationPerFeature[feature].totalSeconds > 0) + + if(base.printDuration.valid && !base.printDuration.isTotalDurationZero) { - result += "
" + visible_names[feature] + ": " + base.printDurationPerFeature[feature].getDisplayString(UM.DurationFormat.Short); + var print_time = PrintInformation.getFeaturePrintTimes() + + var valid_data = []; + for(var feature in print_time) + { + if(!print_time[feature].isTotalDurationZero) + { + valid_data.push(feature + ": " + print_time[feature].getDisplayString(UM.DurationFormat.Short)) + } + } + + var output = "" + for(var counter = 0; counter < valid_data.length; counter++) + { + output += valid_data[counter]; + if(counter + 1 != valid_data.length) + output += "\n" + } + + var content = catalog.i18nc("@tooltip",output) + base.showTooltip(parent, Qt.point(-UM.Theme.getSize("sidebar_margin").width, 0), content) } } - result = result.replace(/^\/, ""); // remove newline before first item - return result; - } - - Text - { - id: timeSpec - anchors.left: parent.left - anchors.bottom: parent.bottom - font: UM.Theme.getFont("large") - color: UM.Theme.getColor("text_subtext") - text: (!base.printDuration || !base.printDuration.valid) ? catalog.i18nc("@label", "00h 00min") : base.printDuration.getDisplayString(UM.DurationFormat.Short) + onExited: + { + base.hideTooltip(); + } } } + Text { id: timeSpecDescription From 0e1b9d8c5de573cc1dec0ed787421762cfbef5f3 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Fri, 15 Sep 2017 10:46:01 +0200 Subject: [PATCH 159/589] Changed the way in which print times are shown in Sidebar - CURA-4232 --- resources/qml/Sidebar.qml | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index 6d417fa011..2db3bed7c4 100755 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -337,27 +337,20 @@ Rectangle if(base.printDuration.valid && !base.printDuration.isTotalDurationZero) { + // All the time information for the different features is achieved var print_time = PrintInformation.getFeaturePrintTimes() - var valid_data = []; + // A message is created and displayed when the user hover the time label + var content = catalog.i18nc("@tooltip", "Time information") for(var feature in print_time) { if(!print_time[feature].isTotalDurationZero) { - valid_data.push(feature + ": " + print_time[feature].getDisplayString(UM.DurationFormat.Short)) + content += "
" + feature + ": " + print_time[feature].getDisplayString(UM.DurationFormat.Short) } } - var output = "" - for(var counter = 0; counter < valid_data.length; counter++) - { - output += valid_data[counter]; - if(counter + 1 != valid_data.length) - output += "\n" - } - - var content = catalog.i18nc("@tooltip",output) - base.showTooltip(parent, Qt.point(-UM.Theme.getSize("sidebar_margin").width, 0), content) + base.showTooltip(parent, Qt.point(-UM.Theme.getSize("sidebar_margin").width, 0), content) } } onExited: From e092b908a0a80b9816c6899e1b6dc47ec7f93755 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 15 Sep 2017 11:06:20 +0200 Subject: [PATCH 160/589] Add message content for WriteRequestFailedErrors The content of the exception is directly put inside a message, so we should give the exception a message. --- .../RemovableDriveOutputDevice/RemovableDriveOutputDevice.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py b/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py index 4b6a6e8071..e9ee47e810 100644 --- a/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py +++ b/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py @@ -60,7 +60,7 @@ class RemovableDriveOutputDevice(OutputDevice): if len(file_formats) == 0: Logger.log("e", "There are no file formats available to write with!") - raise OutputDeviceError.WriteRequestFailedError() + raise OutputDeviceError.WriteRequestFailedError(catalog.i18nc("There are no file formats available to write with!")) # Just take the first file format available. if file_handler is not None: @@ -115,7 +115,7 @@ class RemovableDriveOutputDevice(OutputDevice): name = child.getName() if name: return name - raise OutputDeviceError.WriteRequestFailedError("Could not find a file name when trying to write to {device}.".format(device = self.getName())) + raise OutputDeviceError.WriteRequestFailedError(catalog.i18nc("@info:status Don't translate the tag {device}!", "Could not find a file name when trying to write to {device}.").format(device = self.getName())) def _onProgress(self, job, progress): self.writeProgress.emit(self, progress) From 83e5c5c0532b5aba6a2b8adc8a8f67e39cd9d2a0 Mon Sep 17 00:00:00 2001 From: alekseisasin Date: Fri, 15 Sep 2017 13:27:09 +0200 Subject: [PATCH 161/589] Removed unused tags from cura-light theme.json CURA-4321 --- resources/themes/cura-light/theme.json | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 92d51ae7d2..98626d3d45 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -116,20 +116,6 @@ "sync_button_text": [120, 120, 120, 255], "sync_button_text_hovered": [0, 0, 0, 255], - "tab_checked": [255, 255, 255, 255], - "tab_checked_border": [255, 255, 255, 255], - "tab_checked_text": [24, 41, 77, 255], - "tab_unchecked": [245, 245, 245, 255], - "tab_unchecked_border": [245, 245, 245, 255], - "tab_unchecked_text": [127, 127, 127, 255], - "tab_hovered": [245, 245, 245, 255], - "tab_hovered_border": [245, 245, 245, 255], - "tab_hovered_text": [32, 166, 219, 255], - "tab_active": [255, 255, 255, 255], - "tab_active_border": [255, 255, 255, 255], - "tab_active_text": [24, 41, 77, 255], - "tab_background": [245, 245, 245, 255], - "action_button": [255, 255, 255, 255], "action_button_text": [0, 0, 0, 255], "action_button_border": [127, 127, 127, 255], From b39fece86a3919aff0872137ad0b8315e6f42ac5 Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 15 Sep 2017 15:53:20 +0200 Subject: [PATCH 162/589] Tweak sidbar size so text is not cut off CURA-4321 --- resources/themes/cura-light/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 98626d3d45..8cec4d1d03 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -289,7 +289,7 @@ "extruder_button_material_margin": [0.70, 0.9], "extruder_button_material": [0.75, 0.75], - "sidebar": [32.0, 10.0], + "sidebar": [34.0, 10.0], "sidebar_margin": [1.71, 1.43], "sidebar_margin_thin": [0.71, 0.71], "sidebar_header": [0.0, 4.0], From 6484df3e60d194e0d31f7704865b552e50423591 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 15 Sep 2017 16:01:02 +0200 Subject: [PATCH 163/589] Install to correct site-packages on non-Debian computers Because dist-packages is a Debian thing only. Contributes to issue CURA-3368. --- CMakeLists.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7870759cd1..bea0092456 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,9 +45,15 @@ if(NOT APPLE AND NOT WIN32) DESTINATION ${CMAKE_INSTALL_BINDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE RENAME cura) - install(DIRECTORY cura + if(EXISTS /etc/debian_version) + install(DIRECTORY cura DESTINATION lib/python${PYTHON_VERSION_MAJOR}/dist-packages FILES_MATCHING PATTERN *.py) + else() + install(DIRECTORY cura + DESTINATION lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/cura + FILES_MATCHING PATTERN *.py) + endif() install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py DESTINATION lib/python${PYTHON_VERSION_MAJOR}/dist-packages/cura) install(FILES ${CMAKE_BINARY_DIR}/cura.desktop From fa266969eb034a5e6a5a4895658540faa8de5948 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 15 Sep 2017 16:03:07 +0200 Subject: [PATCH 164/589] Don't install to /cura subdirectory of site-packages That's already done by the directory name itself. Contributes to issue CURA-3368. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bea0092456..36c4a1b1ce 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,7 +51,7 @@ if(NOT APPLE AND NOT WIN32) FILES_MATCHING PATTERN *.py) else() install(DIRECTORY cura - DESTINATION lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/cura + DESTINATION lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages FILES_MATCHING PATTERN *.py) endif() install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py From e8691d29a7f45bd73dd22e0a8b3161fde7a1795d Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 15 Sep 2017 16:05:10 +0200 Subject: [PATCH 165/589] Install CuraVersion.py also to site-packages on non-Debian Similar to the rest of Cura. Contributes to issue CURA-3368. --- CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 36c4a1b1ce..1c372ffa55 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,13 +49,15 @@ if(NOT APPLE AND NOT WIN32) install(DIRECTORY cura DESTINATION lib/python${PYTHON_VERSION_MAJOR}/dist-packages FILES_MATCHING PATTERN *.py) + install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py + DESTINATION lib/python${PYTHON_VERSION_MAJOR}/dist-packages/cura) else() install(DIRECTORY cura DESTINATION lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages FILES_MATCHING PATTERN *.py) + install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py + DESTINATION lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/cura) endif() - install(FILES ${CMAKE_BINARY_DIR}/CuraVersion.py - DESTINATION lib/python${PYTHON_VERSION_MAJOR}/dist-packages/cura) install(FILES ${CMAKE_BINARY_DIR}/cura.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications) install(FILES ${CMAKE_SOURCE_DIR}/resources/images/cura-icon.png From f139bbe3f1cee2be091380dd855b932573f0d2e3 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Fri, 15 Sep 2017 16:05:24 +0200 Subject: [PATCH 166/589] Fixed some missed references to the previous variables - CURA-4232 --- cura/PrintInformation.py | 2 +- plugins/SliceInfoPlugin/SliceInfo.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cura/PrintInformation.py b/cura/PrintInformation.py index 209d95d616..155d0a6d02 100644 --- a/cura/PrintInformation.py +++ b/cura/PrintInformation.py @@ -101,7 +101,7 @@ class PrintInformation(QObject): self._print_time_message_values = {} # Full fill message values using keys from _print_time_message_translations - for key in sorted(self._print_time_message_translations.keys()): + for key in self._print_time_message_translations.keys(): self._print_time_message_values[key] = Duration(None, self) diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py index 09373d0c2f..a4859f6d7f 100755 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -162,7 +162,7 @@ class SliceInfo(Extension): data["models"].append(model) - print_times = print_information.printTimesPerFeature + print_times = print_information._print_time_message_values data["print_times"] = {"travel": int(print_times["travel"].getDisplayString(DurationFormat.Format.Seconds)), "support": int(print_times["support"].getDisplayString(DurationFormat.Format.Seconds)), "infill": int(print_times["infill"].getDisplayString(DurationFormat.Format.Seconds)), From 37869a8b14c4505ac4f7d3bf61f20532d09fbe7d Mon Sep 17 00:00:00 2001 From: alekseisasin Date: Fri, 15 Sep 2017 16:36:00 +0200 Subject: [PATCH 167/589] Removed unused code. Shifted the last print quality number a bit to the left CURA-4182 --- resources/qml/SidebarSimple.qml | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index bbfd8a424a..a219789c3c 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -349,23 +349,12 @@ Item } else if (i == total_tick_count - 1) { - start_x = current_start_x - offset * 2; + start_x = current_start_x - offset * 2.5; } ctx.fillText(resolutionSlider.model.getItem(i).layer_height_without_unit, start_x, text_top); current_start_x += step_size; } - - // print currently selected quality text - if (resolutionSlider.showQualityText && resolutionSlider.currentQualityIndex != undefine) - { - const text_top = parent.height / 2 + tick_height + tick_text_height * 2; - total_tick_count = resolutionSlider.totalTickCount; - const step_size = resolutionSlider.tickStepSize; - current_start_x = (tick_left_right_margin) + step_size * (resolutionSlider.currentQualityIndex - resolutionSlider.fullRangeMin); - ctx.fillStyle = UM.Theme.getColor("quality_slider_text"); - ctx.fillText(resolutionSlider.model.getItem(resolutionSlider.currentQualityIndex).name, current_start_x - 6, text_top); - } } MouseArea From 854c91550264b7d848564414a8731e7beb7f8604 Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 15 Sep 2017 16:48:49 +0200 Subject: [PATCH 168/589] Tweaked margins and cleanup CURA-4182 --- resources/qml/SidebarSimple.qml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index bbfd8a424a..c4edb8de92 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -44,10 +44,8 @@ Item { id: resolutionLabel anchors.top: resolutionSlider.top - anchors.topMargin: UM.Theme.getSize("default_margin").height * 1.2 anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - width: UM.Theme.getSize("sidebar").width * .45 - UM.Theme.getSize("sidebar_margin").width text: catalog.i18nc("@label", "Layer Height") font: UM.Theme.getFont("default") @@ -57,10 +55,9 @@ Item Text { id: speedLabel - anchors.top: resolutionLabel.bottom + anchors.bottom: resolutionSlider.bottom anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - anchors.topMargin: UM.Theme.getSize("default_margin").height * 1.5 text: catalog.i18nc("@label", "Print Speed") font: UM.Theme.getFont("default") @@ -70,7 +67,7 @@ Item Text { id: speedLabelSlower - anchors.top: speedLabel.top + anchors.bottom: speedLabel.bottom anchors.left: resolutionSlider.left text: catalog.i18nc("@label", "Slower") @@ -82,7 +79,7 @@ Item Text { id: speedLabelFaster - anchors.top: speedLabel.top + anchors.bottom: speedLabel.bottom anchors.right: resolutionSlider.right text: catalog.i18nc("@label", "Faster") @@ -95,11 +92,11 @@ Item { id: resolutionSlider anchors.top: parent.top - anchors.left: infillCellRight.left anchors.right: infillCellRight.right + width: UM.Theme.getSize("sidebar").width * .55 - height: UM.Theme.getSize("quality_slider_bar").height * 30 + height: UM.Theme.getSize("quality_slider_bar").height * 20 property var model: Cura.ProfilesModel From 74c24652e9824a659a6b67eb331bf35b007def0b Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 15 Sep 2017 16:50:48 +0200 Subject: [PATCH 169/589] Revert "Tweak sidbar size so text is not cut off" This reverts commit b39fece86a3919aff0872137ad0b8315e6f42ac5. --- resources/themes/cura-light/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 8cec4d1d03..98626d3d45 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -289,7 +289,7 @@ "extruder_button_material_margin": [0.70, 0.9], "extruder_button_material": [0.75, 0.75], - "sidebar": [34.0, 10.0], + "sidebar": [32.0, 10.0], "sidebar_margin": [1.71, 1.43], "sidebar_margin_thin": [0.71, 0.71], "sidebar_header": [0.0, 4.0], From 2502038f76623bf8a81b9441c5308d97dbf2150f Mon Sep 17 00:00:00 2001 From: Mark Date: Fri, 15 Sep 2017 16:51:38 +0200 Subject: [PATCH 170/589] Revert "CURA-4321 make sidebar a tad smaller" This reverts commit 4aa8d38bd3f7b6582d6fac72d29d71e6a88aa8c6. --- resources/themes/cura-light/theme.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 98626d3d45..8624760e3a 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -289,7 +289,7 @@ "extruder_button_material_margin": [0.70, 0.9], "extruder_button_material": [0.75, 0.75], - "sidebar": [32.0, 10.0], + "sidebar": [35.0, 10.0], "sidebar_margin": [1.71, 1.43], "sidebar_margin_thin": [0.71, 0.71], "sidebar_header": [0.0, 4.0], From 3f903d2c76fd2540cfcdb81017b47d52af43f908 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Sat, 16 Sep 2017 10:05:45 +0200 Subject: [PATCH 171/589] Add menu item to reset the camera --- cura/CuraActions.py | 9 +++++++++ resources/qml/Actions.qml | 9 +++++++++ resources/qml/Menus/ViewMenu.qml | 3 +++ 3 files changed, 21 insertions(+) diff --git a/cura/CuraActions.py b/cura/CuraActions.py index eeebd3b6b2..d46448dcec 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -36,6 +36,15 @@ class CuraActions(QObject): event = CallFunctionEvent(self._openUrl, [QUrl("http://github.com/Ultimaker/Cura/issues")], {}) Application.getInstance().functionEvent(event) + ## Reset camera position and direction to default + @pyqtSlot() + def homeCamera(self) -> None: + scene = Application.getInstance().getController().getScene() + camera = scene.getActiveCamera() + camera.setPosition(Vector(-80, 250, 700)) + camera.setPerspective(True) + camera.lookAt(Vector(0, 0, 0)) + ## Center all objects in the selection @pyqtSlot() def centerSelection(self) -> None: diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index 3169f4f170..f028d22632 100755 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -17,6 +17,8 @@ Item property alias undo: undoAction; property alias redo: redoAction; + property alias homeCamera: homeCameraAction; + property alias deleteSelection: deleteSelectionAction; property alias centerSelection: centerSelectionAction; property alias multiplySelection: multiplySelectionAction; @@ -96,6 +98,13 @@ Item shortcut: StandardKey.Quit; } + Action + { + id: homeCameraAction; + text: catalog.i18nc("@action:inmenu menubar:view","&Reset camera position"); + onTriggered: CuraActions.homeCamera(); + } + Action { id: preferencesAction; diff --git a/resources/qml/Menus/ViewMenu.qml b/resources/qml/Menus/ViewMenu.qml index 859620692e..cf3108fdac 100644 --- a/resources/qml/Menus/ViewMenu.qml +++ b/resources/qml/Menus/ViewMenu.qml @@ -27,4 +27,7 @@ Menu onObjectRemoved: menu.removeItem(object) } ExclusiveGroup { id: group; } + + MenuSeparator {} + MenuItem { action: Cura.Actions.homeCamera; } } From ff17b7c4171f9b307fb38add188f5dced258f349 Mon Sep 17 00:00:00 2001 From: Pieter Bos Date: Sun, 17 Sep 2017 00:04:50 +0200 Subject: [PATCH 172/589] Improve Prusa MK2 start GCode --- resources/definitions/prusa_i3_mk2.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/prusa_i3_mk2.def.json b/resources/definitions/prusa_i3_mk2.def.json index d4425728d4..ef3ef8159e 100644 --- a/resources/definitions/prusa_i3_mk2.def.json +++ b/resources/definitions/prusa_i3_mk2.def.json @@ -41,7 +41,7 @@ "machine_max_jerk_e": { "default_value": 2.5 }, "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G21 ; set units to millimeters\nG90 ; use absolute positioning\nM82 ; absolute extrusion mode\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nM104 S{material_print_temperature} ; set extruder temp\nM140 S{material_bed_temperature} ; set bed temp\nM190 S{material_bed_temperature} ; wait for bed temp\nM109 S{material_print_temperature} ; wait for extruder temp\nG92 E0.0 ; reset extruder distance position\nG1 Y-3.0 F1000.0 ; go outside print area\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E21.5 F1000.0 ; intro line\nG92 E0.0 ; reset extruder distance position" + "default_value": "G21 ; set units to millimeters\nG90 ; use absolute positioning\nM82 ; absolute extrusion mode\nM104 S{material_print_temperature} ; set extruder temp\nM140 S{material_bed_temperature} ; set bed temp\nM190 S{material_bed_temperature} ; wait for bed temp\nM109 S{material_print_temperature} ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG92 E0.0 ; reset extruder distance position\nG1 Y-3.0 F1000.0 ; go outside print area\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E21.5 F1000.0 ; intro line\nG92 E0.0 ; reset extruder distance position" }, "machine_end_gcode": { "default_value": "M104 S0 ; turn off extruder\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y210; home X axis and push Y forward\nM84 ; disable motors" From 176fef8dbe5887d5091e8449c32fd2db9e755ac0 Mon Sep 17 00:00:00 2001 From: Taz8du29 <13140104+Taz8du29@users.noreply.github.com> Date: Sun, 17 Sep 2017 17:46:11 +0200 Subject: [PATCH 173/589] Minor formatting change in README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e3fa497933..f8d809df16 100644 --- a/README.md +++ b/README.md @@ -34,9 +34,11 @@ Dependencies Configuring Cura ---------------- -* Link your CuraEngine backend by inserting the following line in home/.config/cura/config.cfg : +Link your CuraEngine backend by inserting the following lines in `$HOME/.config/cura/config.cfg` : +``` [backend] location = /[path_to_the..]/CuraEngine/build/CuraEngine +``` Build scripts ------------- From ec9441df99e6f4a7d4af848efeaa07e2e3320052 Mon Sep 17 00:00:00 2001 From: Mark Burton Date: Mon, 18 Sep 2017 07:54:43 +0100 Subject: [PATCH 174/589] Added infill_offset_x and infill_offset_y settings. --- resources/definitions/fdmprinter.def.json | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index d0e77a15fe..539efe383c 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1405,6 +1405,28 @@ "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, + "infill_offset_x": + { + "label": "Infill X Offset", + "description": "The infill pattern is offset this distance along the X axis.", + "unit": "mm", + "type": "float", + "default_value": 0, + "enabled": "infill_pattern == 'grid' or infill_pattern == 'lines' or infill_pattern == 'triangles' or infill_pattern == 'cubic' or infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' or infill_pattern == 'zigzag'", + "limit_to_extruder": "infill_extruder_nr", + "settable_per_mesh": true + }, + "infill_offset_y": + { + "label": "Infill Y Offset", + "description": "The infill pattern is offset this distance along the Y axis.", + "unit": "mm", + "type": "float", + "default_value": 0, + "enabled": "infill_pattern == 'grid' or infill_pattern == 'lines' or infill_pattern == 'triangles' or infill_pattern == 'cubic' or infill_pattern == 'tetrahedral' or infill_pattern == 'quarter_cubic' or infill_pattern == 'zigzag'", + "limit_to_extruder": "infill_extruder_nr", + "settable_per_mesh": true + }, "sub_div_rad_add": { "label": "Cubic Subdivision Shell", From 2901b832a5f7115ead68a1b663c148926b7c7493 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 18 Sep 2017 09:00:39 +0200 Subject: [PATCH 175/589] Sync setting visibility with XmlMaterialProfile This is why we shouldn't do double-data. --- cura/Settings/MaterialSettingsVisibilityHandler.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cura/Settings/MaterialSettingsVisibilityHandler.py b/cura/Settings/MaterialSettingsVisibilityHandler.py index a533a0cabd..b97987a18e 100644 --- a/cura/Settings/MaterialSettingsVisibilityHandler.py +++ b/cura/Settings/MaterialSettingsVisibilityHandler.py @@ -11,6 +11,7 @@ class MaterialSettingsVisibilityHandler(UM.Settings.Models.SettingVisibilityHand "default_material_print_temperature", "material_bed_temperature", "material_standby_temperature", + "material_flow_temp_graph", "cool_fan_speed", "retraction_amount", "retraction_speed", From 86e5a1ed974b3e18dffd7fb5745d7afe96021705 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 18 Sep 2017 09:39:08 +0200 Subject: [PATCH 176/589] CURA-4182 tweak slider height to fix text cut off --- resources/qml/SidebarSimple.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 20a00bca96..728501e5ef 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -96,7 +96,7 @@ Item anchors.right: infillCellRight.right width: UM.Theme.getSize("sidebar").width * .55 - height: UM.Theme.getSize("quality_slider_bar").height * 20 + height: UM.Theme.getSize("quality_slider_bar").height * 25 property var model: Cura.ProfilesModel From 4ca5987ca8fbf89cdf938c82dc6ff65e9ebc2942 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 18 Sep 2017 10:50:52 +0200 Subject: [PATCH 177/589] CURA-4269 added a flag to determine wether auto drop should be executed or not --- cura/PlatformPhysics.py | 14 +++++++++----- plugins/3MFReader/ThreeMFReader.py | 5 ++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index dc5594dc7b..3db681eb06 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -9,6 +9,7 @@ from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator from UM.Math.Vector import Vector from UM.Scene.Selection import Selection from UM.Preferences import Preferences +from UM.Logger import Logger from cura.ConvexHullDecorator import ConvexHullDecorator @@ -41,10 +42,12 @@ class PlatformPhysics: def _onSceneChanged(self, source): self._change_timer.start() - def _onChangeTimerFinished(self): + def _onChangeTimerFinished(self, was_triggered_by_tool=False): if not self._enabled: return + Logger.log("d", "was_triggered_by_tool=%s", was_triggered_by_tool) + root = self._controller.getScene().getRoot() # Keep a list of nodes that are moving. We use this so that we don't move two intersecting objects in the @@ -71,14 +74,15 @@ class PlatformPhysics: # Check if this is the first time a project file node was loaded (disable auto drop in that case), defaults to True should_auto_drop = node.getSetting("auto_drop", True) + # This should NOT happen if the scene change was triggered by a tool (like translate), only on project load + if was_triggered_by_tool: + should_auto_drop = True + # If a node is grouped or it's loaded from a project file (auto-drop disabled), don't move it down if Preferences.getInstance().getValue("physics/automatic_drop_down") and not (node.getParent() and node.getParent().callDecoration("isGroup")) and node.isEnabled() and should_auto_drop: z_offset = node.callDecoration("getZOffset") if node.getDecorator(ZOffsetDecorator.ZOffsetDecorator) else 0 move_vector = move_vector.set(y=-bbox.bottom + z_offset) - # Enable auto-drop after processing the project file node for the first time - node.setSetting("auto_drop", False) - # If there is no convex hull for the node, start calculating it and continue. if not node.getDecorator(ConvexHullDecorator): node.addDecorator(ConvexHullDecorator()) @@ -167,4 +171,4 @@ class PlatformPhysics: node.removeDecorator(ZOffsetDecorator.ZOffsetDecorator) self._enabled = True - self._onChangeTimerFinished() + self._onChangeTimerFinished(True) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index 66dfb6130e..b947c4eb39 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -77,7 +77,10 @@ class ThreeMFReader(MeshReader): # \returns Uranium SceneNode. def _convertSavitarNodeToUMNode(self, savitar_node): um_node = SceneNode() - um_node.setSetting("auto_drop", False) # Disable the auto-drop feature when loading a project file and processing the nodes for the first time + + # Disable the auto-drop feature when loading a project file and processing the nodes for the first time + um_node.setSetting("auto_drop", False) + transformation = self._createMatrixFromTransformationString(savitar_node.getTransformation()) um_node.setTransformation(transformation) mesh_builder = MeshBuilder() From f07f7a2f1273267ea9c7855f79848fe6bc91adeb Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 18 Sep 2017 10:51:32 +0200 Subject: [PATCH 178/589] Remove logging --- cura/PlatformPhysics.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 3db681eb06..aca91f866a 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -9,7 +9,6 @@ from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator from UM.Math.Vector import Vector from UM.Scene.Selection import Selection from UM.Preferences import Preferences -from UM.Logger import Logger from cura.ConvexHullDecorator import ConvexHullDecorator @@ -46,8 +45,6 @@ class PlatformPhysics: if not self._enabled: return - Logger.log("d", "was_triggered_by_tool=%s", was_triggered_by_tool) - root = self._controller.getScene().getRoot() # Keep a list of nodes that are moving. We use this so that we don't move two intersecting objects in the From 6c2bd10a20f8d79743b942bda27d6b22a1dad1aa Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 18 Sep 2017 11:18:50 +0200 Subject: [PATCH 179/589] Remove redundant feedrate override The default in ultimaker.def.json is also 45, so this is not necessary. --- resources/definitions/ultimaker2.def.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/resources/definitions/ultimaker2.def.json b/resources/definitions/ultimaker2.def.json index 1931e5f8e3..0a9a7bf7ce 100644 --- a/resources/definitions/ultimaker2.def.json +++ b/resources/definitions/ultimaker2.def.json @@ -89,9 +89,6 @@ "machine_max_feedrate_z": { "default_value": 40 }, - "machine_max_feedrate_e": { - "default_value": 45 - }, "machine_acceleration": { "default_value": 3000 }, From e8553e8e6962fae2583470a4caa2299dcc8d4384 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Mon, 18 Sep 2017 11:47:23 +0200 Subject: [PATCH 180/589] Fixed double messages and rearrange some code - CURA-4224 --- .../FirmwareUpdateCheckerJob.py | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py index 108cfa4c0d..31ce137ed7 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py @@ -54,30 +54,32 @@ class FirmwareUpdateCheckerJob(Job): # Nothing to parse, just get the string # TODO: In the future may be done by parsing a JSON file with diferent version for each printer model current_version = reader(current_version_file).readline().rstrip() - Logger.log("i", "Reading firmware version of %s: %s", machine_name, current_version) - # If it is the first time the version is checked, the checked_version is None + # If it is the first time the version is checked, the checked_version is '' checked_version = Preferences.getInstance().getValue("info/latest_checked_firmware") # If the checked_version is '', it's because is the first time we check firmware and in this case # we will not show the notification, but we will store it for the next time + Preferences.getInstance().setValue("info/latest_checked_firmware", current_version) + Logger.log("i", "Reading firmware version of %s: checked = %s - latest = %s", machine_name, checked_version, current_version) + + # The first time we want to store the current version, the notification will not be shown, + # because the new version of Cura will be release before the firmware and we don't want to + # notify the user when no new firmware version is available. if (checked_version != "") and (checked_version != current_version): - message = Message(i18n_catalog.i18nc("@info", "New %s firmware available

To ensure that your " - "%s is equiped with the latest features it is recommended " - "to update the firmware regularly. This can be done on the " - "%s (when connected to the network) or via USB." - % (machine_name, machine_name, machine_name))) + Logger.log("i", "SHOWING FIRMWARE UPDATE MESSAGE") + message = Message(i18n_catalog.i18nc("@info", "To ensure that your %s is equipped with the latest " + "features it is recommended to update the firmware " + "regularly. This can be done on the %s (when connected " + "to the network) or via USB." + % (machine_name, machine_name)), + title = i18n_catalog.i18nc("@info:title", "New %s firmware available" % machine_name)) message.addAction("download", i18n_catalog.i18nc("@action:button", "Download"), "[no_icon]", "[no_description]") # If we do this in a cool way, the download url should be available in the JSON file self._download_url = "https://ultimaker.com/en/resources/20500-upgrade-firmware" message.actionTriggered.connect(self.actionTriggered) - Application.getInstance().showMessage(message) - - # The first time we want to store the current version, the notification will not be shown, - # because the new version of Cura will be release before the firmware and we don't want to - # notify the user when no new firmware version is available. - Preferences.getInstance().setValue("info/latest_checked_firmware", current_version) + message.show() except Exception as e: Logger.log("w", "Failed to check for new version: %s", e) From 9553235b42a8c3e9e4a8d840b57f2326ebfcda94 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 18 Sep 2017 15:15:59 +0200 Subject: [PATCH 181/589] CURA-4303 finish infill slider, images, gradual checkbox, bindings --- resources/qml/SidebarSimple.qml | 365 ++++++++++++-------------------- 1 file changed, 137 insertions(+), 228 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index f4dc04b2c8..f65b436acc 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -397,24 +397,26 @@ Item } // - // NEW Infill + // Infill // Item { - id: newInfillCellLeft + id: infillCellLeft + anchors.top: speedLabel.top - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 1.2 + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 1.2 // FIXME better margin value anchors.left: parent.left + width: UM.Theme.getSize("sidebar").width * .45 - UM.Theme.getSize("sidebar_margin").width height: UM.Theme.getSize("sidebar_margin").height Text { - id: newInfillLabel - //: Infill selection label - text: catalog.i18nc("@label", "Infill"); - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); + id: infillLabel + text: catalog.i18nc("@label", "Infill") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + anchors.top: parent.top anchors.topMargin: UM.Theme.getSize("sidebar_margin").height anchors.left: parent.left @@ -424,65 +426,81 @@ Item Item { - id: newInfillCellRight + id: infillCellRight - height: UM.Theme.getSize("sidebar_margin").height + height: infillSlider.height + enableGradualInfillCheckBox.height + (UM.Theme.getSize("sidebar_margin").height * 2) width: UM.Theme.getSize("sidebar").width * .55 - anchors.left: newInfillCellLeft.right - anchors.top: newInfillCellLeft.top + anchors.left: infillCellLeft.right + anchors.top: infillCellLeft.top anchors.topMargin: UM.Theme.getSize("sidebar_margin").height - Text - { + Text { id: selectedInfillRateText + anchors.top: parent.top anchors.left: infillSlider.left - anchors.leftMargin: (infillSlider.value / infillSlider.stepSize) * (infillSlider.width / (infillSlider.maximumValue / infillSlider.stepSize)) - 9 + anchors.leftMargin: (infillSlider.value / infillSlider.stepSize) * (infillSlider.width / (infillSlider.maximumValue / infillSlider.stepSize)) - 10 anchors.right: parent.right - height: UM.Theme.getSize("sidebar_margin").height / 10 - text: "10%" + + text: infillSlider.value + "%" horizontalAlignment: Text.AlignLeft + + color: infillSlider.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") } Slider { id: infillSlider + anchors.top: selectedInfillRateText.bottom - anchors.left: parent.left - height: UM.Theme.getSize("sidebar_margin").height * 5 + anchors.left: parent.left + UM.Theme.getSize("sidebar_margin").widt + + height: UM.Theme.getSize("sidebar_margin").height + width: infillCellRight.width - infillIcon.width - UM.Theme.getSize("sidebar_margin").width minimumValue: 0 maximumValue: 100 - stepSize: 5 + stepSize: 10 tickmarksEnabled: true + // disable slider when gradual support is enabled + enabled: parseInt(infillSteps.properties.value) == 0 + + // set initial value from stack + value: parseInt(infillDensity.properties.value) + + onValueChanged: { + infillDensity.setPropertyValue("value", infillSlider.value) + } + style: SliderStyle { groove: Rectangle { id: groove implicitWidth: 200 implicitHeight: 2 - color: "gray" + color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") radius: 1 } - handle: Item - { + + handle: Item { Rectangle { id: handleButton anchors.centerIn: parent - color: control.hovered ? UM.Theme.getColor("quality_slider_handle_hover") : UM.Theme.getColor("quality_slider_handle") + color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") implicitWidth: 10 implicitHeight: 10 radius: 10 } } + tickmarks: Repeater { id: repeater model: control.maximumValue / control.stepSize + 1 Rectangle { anchors.verticalCenter: parent.verticalCenter - color: UM.Theme.getColor("quality_slider_available") + color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") width: 1 height: 6 y: 0 @@ -491,242 +509,161 @@ Item } } } - } - // - // Infill - // - Item - { - id: infillCellLeft - anchors.top: newInfillCellRight.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 1.2 - anchors.left: parent.left - width: UM.Theme.getSize("sidebar").width * .45 - UM.Theme.getSize("sidebar_margin").width - height: childrenRect.height - - Text + Item { - id: infillLabel - //: Infill selection label - text: catalog.i18nc("@label", "Infill"); - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); - anchors.top: parent.top - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - } - } + width: (infillCellRight.width / 5) - (UM.Theme.getSize("sidebar_margin").width) + height: width - Row - { - id: infillCellRight + anchors.right: infillCellRight.right + anchors.top: infillSlider.top - height: childrenRect.height; - width: UM.Theme.getSize("sidebar").width * .55 - - spacing: UM.Theme.getSize("sidebar_margin").width - - anchors.left: infillCellLeft.right - anchors.top: infillCellLeft.top - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height - - Repeater - { - id: infillListView - property int activeIndex: + // we loop over all density icons and only show the one that has the current density and steps + Repeater { - for(var i = 0; i < infillModel.count; ++i) - { - var density = parseInt(infillDensity.properties.value); - var steps = parseInt(infillSteps.properties.value); - if(density > infillModel.get(i).percentageMin && density <= infillModel.get(i).percentageMax && steps > infillModel.get(i).stepsMin && steps <= infillModel.get(i).stepsMax) - { - return i; + id: infillIconList + model: infillModel + + property int activeIndex: { + for (var i = 0; i < infillModel.count; i++) { + var density = parseInt(infillDensity.properties.value) + var steps = parseInt(infillSteps.properties.value) + var infillModelItem = infillModel.get(i) + + if (density >= infillModelItem.percentageMin + && density <= infillModelItem.percentageMax + && steps >= infillModelItem.stepsMin + && steps <= infillModelItem.stepsMax){ + return i + } } + return -1 } - return -1; - } - model: infillModel; + Item { + anchors.fill: parent - Item - { - width: childrenRect.width; - height: childrenRect.height; - - Rectangle - { - id: infillIconLining - - width: (infillCellRight.width - ((infillModel.count - 1) * UM.Theme.getSize("sidebar_margin").width)) / (infillModel.count); - height: width - - border.color: - { - if(!base.settingsEnabled) - { - return UM.Theme.getColor("setting_control_disabled_border") - } - else if(infillListView.activeIndex == index) - { - return UM.Theme.getColor("setting_control_selected") - } - else if(infillMouseArea.containsMouse) - { - return UM.Theme.getColor("setting_control_border_highlight") - } - return UM.Theme.getColor("setting_control_border") - } - border.width: UM.Theme.getSize("default_lining").width - color: - { - if(infillListView.activeIndex == index) - { - if(!base.settingsEnabled) - { - return UM.Theme.getColor("setting_control_disabled_text") - } - return UM.Theme.getColor("setting_control_selected") - } - return "transparent" - } - - UM.RecolorImage - { - id: infillIcon - anchors.fill: parent; - anchors.margins: 2 - - sourceSize.width: width - sourceSize.height: width - source: UM.Theme.getIcon(model.icon); - color: { - if(infillListView.activeIndex == index) - { - return UM.Theme.getColor("text_emphasis") - } - if(!base.settingsEnabled) - { - return UM.Theme.getColor("setting_control_disabled_text") - } - return UM.Theme.getColor("setting_control_disabled_text") - } - } - - MouseArea - { - id: infillMouseArea + Rectangle { anchors.fill: parent - hoverEnabled: true - enabled: base.settingsEnabled - onClicked: { - if (infillListView.activeIndex != index) - { - infillDensity.setPropertyValue("value", model.percentage) - infillSteps.setPropertyValue("value", model.steps) - } - } - onEntered: - { - base.showTooltip(infillCellRight, Qt.point(-infillCellRight.x, 0), model.text); - } - onExited: - { - base.hideTooltip(); + visible: infillIconList.activeIndex == index + + UM.RecolorImage { + id: infillIcon + anchors.fill: parent + sourceSize.width: width + sourceSize.height: width + source: UM.Theme.getIcon(model.icon) + color: UM.Theme.getColor("quality_slider_available") } } } - Text - { - id: infillLabel - width: (infillCellRight.width - ((infillModel.count - 1) * UM.Theme.getSize("sidebar_margin").width)) / (infillModel.count); - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - wrapMode: Text.WordWrap - font: UM.Theme.getFont("default") - anchors.top: infillIconLining.bottom - anchors.horizontalCenter: infillIconLining.horizontalCenter - color: infillListView.activeIndex == index ? UM.Theme.getColor("setting_control_text") : UM.Theme.getColor("setting_control_border") - text: name - } } } + // Gradual Support Infill Checkbox + CheckBox { + id: enableGradualInfillCheckBox + property alias _hovered: enableGradualInfillMouseArea.containsMouse + + anchors.top: infillSlider.bottom + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + anchors.left: infillCellRight.left + + style: UM.Theme.styles.checkbox + enabled: base.settingsEnabled + checked: parseInt(infillSteps.properties.value) > 0 + + MouseArea { + id: enableGradualInfillMouseArea + + anchors.fill: parent + hoverEnabled: true + enabled: true + + onClicked: { + infillSteps.setPropertyValue("value", (parseInt(infillSteps.properties.value) == 0) ? 5 : 0) + infillDensity.setPropertyValue("value", 90) + } + + onEntered: { + base.showTooltip(enableGradualInfillCheckBox, Qt.point(-infillCellRight.x, 0), + catalog.i18nc("@label", "Gradual infill will gradually increase the amount of infill towards the top.")) + } + + onExited: { + base.hideTooltip() + } + } + + Text { + id: gradualInfillLabel + anchors.left: enableGradualInfillCheckBox.right + anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width / 2 // FIXME better margin value + text: catalog.i18nc("@label", "Enable gradual") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + } + } + + // Infill list model for mapping icon ListModel { id: infillModel - Component.onCompleted: { infillModel.append({ - name: catalog.i18nc("@label", "0%"), - percentage: 0, - steps: 0, percentageMin: -1, percentageMax: 0, stepsMin: -1, stepsMax: 0, - text: catalog.i18nc("@label", "Empty infill will leave your model hollow with low strength."), icon: "hollow" }) infillModel.append({ - name: catalog.i18nc("@label", "20%"), - percentage: 20, - steps: 0, percentageMin: 0, - percentageMax: 30, + percentageMax: 40, stepsMin: -1, stepsMax: 0, - text: catalog.i18nc("@label", "Light (20%) infill will give your model an average strength."), icon: "sparse" }) infillModel.append({ - name: catalog.i18nc("@label", "50%"), - percentage: 50, - steps: 0, - percentageMin: 30, - percentageMax: 70, + percentageMin: 40, + percentageMax: 89, stepsMin: -1, stepsMax: 0, - text: catalog.i18nc("@label", "Dense (50%) infill will give your model an above average strength."), icon: "dense" }) infillModel.append({ - name: catalog.i18nc("@label", "100%"), - percentage: 100, - steps: 0, - percentageMin: 70, + percentageMin: 90, percentageMax: 9999999999, stepsMin: -1, stepsMax: 0, - text: catalog.i18nc("@label", "Solid (100%) infill will make your model completely solid."), icon: "solid" }) infillModel.append({ - name: catalog.i18nc("@label", "Gradual"), - percentage: 90, - steps: 5, percentageMin: 0, percentageMax: 9999999999, - stepsMin: 0, + stepsMin: 1, stepsMax: 9999999999, - infill_layer_height: 1.5, - text: catalog.i18nc("@label", "Gradual infill will gradually increase the amount of infill towards the top."), icon: "gradual" }) } } } + // + // Enable support + // Text { id: enableSupportLabel visible: enableSupportCheckBox.visible + + anchors.top: infillCellRight.bottom + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width anchors.verticalCenter: enableSupportCheckBox.verticalCenter + text: catalog.i18nc("@label", "Generate Support"); font: UM.Theme.getFont("default"); color: UM.Theme.getColor("text"); @@ -942,7 +879,6 @@ Item anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width anchors.top: parent.top wrapMode: Text.WordWrap - //: Tips label text: catalog.i18nc("@label", "Need help improving your prints?
Read the
Ultimaker Troubleshooting Guides").arg("https://ultimaker.com/en/troubleshooting") font: UM.Theme.getFont("default"); color: UM.Theme.getColor("text"); @@ -961,35 +897,9 @@ Item storeIndex: 0 } - Binding - { - target: infillDensity - property: "containerStackId" - value: - { - var activeMachineId = Cura.MachineManager.activeMachineId; - if (machineExtruderCount.properties.value > 1) - { - var infillExtruderNr = parseInt(infillExtruderNumber.properties.value); - if (infillExtruderNr >= 0) - { - activeMachineId = ExtruderManager.extruderIds[infillExtruderNumber.properties.value]; - } - else if (ExtruderManager.activeExtruderStackId) - { - activeMachineId = ExtruderManager.activeExtruderStackId; - } - } - - infillSteps.containerStackId = activeMachineId; - return activeMachineId; - } - } - UM.SettingPropertyProvider { id: infillDensity - containerStackId: Cura.MachineManager.activeStackId key: "infill_sparse_density" watchedProperties: [ "value" ] @@ -999,10 +909,9 @@ Item UM.SettingPropertyProvider { id: infillSteps - containerStackId: Cura.MachineManager.activeStackId key: "gradual_infill_steps" - watchedProperties: [ "value" ] + watchedProperties: ["value"] storeIndex: 0 } From a3b6ced5e595fa47555bf3b89821a59393767df4 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Mon, 18 Sep 2017 15:30:40 +0200 Subject: [PATCH 182/589] Changed titles of unable to slice messages This makes it a bit clearer what is going on and what the "source" of the message is. CURA-4332 --- plugins/CuraEngineBackend/CuraEngineBackend.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index d642fdfe08..dd5b182607 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -266,7 +266,7 @@ class CuraEngineBackend(QObject, Backend): if job.getResult() == StartSliceJob.StartJobResult.MaterialIncompatible: if Application.getInstance().platformActivity: self._error_message = Message(catalog.i18nc("@info:status", - "The selected material is incompatible with the selected machine or configuration."), title = catalog.i18nc("@info:title", "Incompatible material")) + "Unable to slice with the current material as it is incompatible with the selected machine or configuration."), title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) else: @@ -294,7 +294,7 @@ class CuraEngineBackend(QObject, Backend): error_labels = ", ".join(error_labels) self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice with the current settings. The following settings have errors: {0}".format(error_labels)), - title = catalog.i18nc("@info:title", "Invalid settings")) + title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) else: @@ -304,7 +304,7 @@ class CuraEngineBackend(QObject, Backend): if job.getResult() == StartSliceJob.StartJobResult.BuildPlateError: if Application.getInstance().platformActivity: self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice because the prime tower or prime position(s) are invalid."), - title = catalog.i18nc("@info:title", "Invalid position")) + title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) else: @@ -313,7 +313,7 @@ class CuraEngineBackend(QObject, Backend): if job.getResult() == StartSliceJob.StartJobResult.NothingToSlice: if Application.getInstance().platformActivity: self._error_message = Message(catalog.i18nc("@info:status", "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit."), - title = catalog.i18nc("@info:title", "Warning")) + title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) else: From 3db04c918f31e170d1d6f36dbab778c285693a30 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 18 Sep 2017 15:37:17 +0200 Subject: [PATCH 183/589] fixes for reverting 11ebdf730389eca66bafc37be7c6a741c5641f46 --- cura/PlatformPhysics.py | 10 +--------- plugins/3MFReader/ThreeMFReader.py | 8 ++++++-- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index aca91f866a..5eee8d8a55 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -68,15 +68,7 @@ class PlatformPhysics: # Move it downwards if bottom is above platform move_vector = Vector() - # Check if this is the first time a project file node was loaded (disable auto drop in that case), defaults to True - should_auto_drop = node.getSetting("auto_drop", True) - - # This should NOT happen if the scene change was triggered by a tool (like translate), only on project load - if was_triggered_by_tool: - should_auto_drop = True - - # If a node is grouped or it's loaded from a project file (auto-drop disabled), don't move it down - if Preferences.getInstance().getValue("physics/automatic_drop_down") and not (node.getParent() and node.getParent().callDecoration("isGroup")) and node.isEnabled() and should_auto_drop: + if Preferences.getInstance().getValue("physics/automatic_drop_down") and not (node.getParent() and node.getParent().callDecoration("isGroup")) and node.isEnabled(): #If an object is grouped, don't move it down z_offset = node.callDecoration("getZOffset") if node.getDecorator(ZOffsetDecorator.ZOffsetDecorator) else 0 move_vector = move_vector.set(y=-bbox.bottom + z_offset) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index b947c4eb39..2173afb2cc 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -73,14 +73,18 @@ class ThreeMFReader(MeshReader): return temp_mat - ## Convenience function that converts a SceneNode object (as obtained from libSavitar) to a Uranium SceneNode. - # \returns Uranium SceneNode. + + ## Convenience function that converts a SceneNode object (as obtained from libSavitar) to a Uranium scenenode. + # \returns Uranium Scenen node. def _convertSavitarNodeToUMNode(self, savitar_node): um_node = SceneNode() +<<<<<<< HEAD # Disable the auto-drop feature when loading a project file and processing the nodes for the first time um_node.setSetting("auto_drop", False) +======= +>>>>>>> parent of 11ebdf73... CURA-4269 disable auto-drop for first time loaded models from project files transformation = self._createMatrixFromTransformationString(savitar_node.getTransformation()) um_node.setTransformation(transformation) mesh_builder = MeshBuilder() From b386bda2c86fe08127cce7190919a3e85a819cf8 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 18 Sep 2017 15:38:31 +0200 Subject: [PATCH 184/589] more fixes for reverting 11ebdf730389eca66bafc37be7c6a741c5641f46 --- plugins/3MFReader/ThreeMFReader.py | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index 2173afb2cc..93a8dc1c65 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -73,18 +73,10 @@ class ThreeMFReader(MeshReader): return temp_mat - - ## Convenience function that converts a SceneNode object (as obtained from libSavitar) to a Uranium scenenode. - # \returns Uranium Scenen node. + ## Convenience function that converts a SceneNode object (as obtained from libSavitar) to a Uranium scene node. + # \returns Uranium scene node. def _convertSavitarNodeToUMNode(self, savitar_node): um_node = SceneNode() -<<<<<<< HEAD - - # Disable the auto-drop feature when loading a project file and processing the nodes for the first time - um_node.setSetting("auto_drop", False) - -======= ->>>>>>> parent of 11ebdf73... CURA-4269 disable auto-drop for first time loaded models from project files transformation = self._createMatrixFromTransformationString(savitar_node.getTransformation()) um_node.setTransformation(transformation) mesh_builder = MeshBuilder() From 315042016069f2476009e6c85735e1f1273ba462 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 18 Sep 2017 17:01:15 +0200 Subject: [PATCH 185/589] Fix i18n with replaced texts Also added a description for the translator. Contributes to issue CURA-4341. --- .../FirmwareUpdateCheckerJob.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py index 31ce137ed7..01b6f1ab3a 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py @@ -68,12 +68,13 @@ class FirmwareUpdateCheckerJob(Job): # notify the user when no new firmware version is available. if (checked_version != "") and (checked_version != current_version): Logger.log("i", "SHOWING FIRMWARE UPDATE MESSAGE") - message = Message(i18n_catalog.i18nc("@info", "To ensure that your %s is equipped with the latest " - "features it is recommended to update the firmware " - "regularly. This can be done on the %s (when connected " - "to the network) or via USB." - % (machine_name, machine_name)), - title = i18n_catalog.i18nc("@info:title", "New %s firmware available" % machine_name)) + message = Message(i18n_catalog.i18nc("@info Both %s get replaced with the printer name.", + "To ensure that your %s is equipped with the latest " + "features it is recommended to update the firmware " + "regularly. This can be done on the %s (when connected " + "to the network) or via USB.") + % (machine_name, machine_name), + title = i18n_catalog.i18nc("@info:title The %s gets replaced with the printer name.", "New %s firmware available") % machine_name) message.addAction("download", i18n_catalog.i18nc("@action:button", "Download"), "[no_icon]", "[no_description]") # If we do this in a cool way, the download url should be available in the JSON file From 0060909117cc0fea709db65649f4b1267bd94f8c Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 18 Sep 2017 17:13:01 +0200 Subject: [PATCH 186/589] Use named arguments for i18n string Otherwise the i18n system can't figure out which %s belongs to which parameter. Contributes to issue CURA-4341. --- plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py index 01b6f1ab3a..93cf14bddf 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py @@ -68,12 +68,7 @@ class FirmwareUpdateCheckerJob(Job): # notify the user when no new firmware version is available. if (checked_version != "") and (checked_version != current_version): Logger.log("i", "SHOWING FIRMWARE UPDATE MESSAGE") - message = Message(i18n_catalog.i18nc("@info Both %s get replaced with the printer name.", - "To ensure that your %s is equipped with the latest " - "features it is recommended to update the firmware " - "regularly. This can be done on the %s (when connected " - "to the network) or via USB.") - % (machine_name, machine_name), + message = Message(i18n_catalog.i18nc("@info Don't translate {machine_name}, since it gets replaced by a printer name!", "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB.").format(machine_name = machine_name), title = i18n_catalog.i18nc("@info:title The %s gets replaced with the printer name.", "New %s firmware available") % machine_name) message.addAction("download", i18n_catalog.i18nc("@action:button", "Download"), "[no_icon]", "[no_description]") From e18b24add294557c726fce637294a9d790d606d5 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 18 Sep 2017 17:24:00 +0200 Subject: [PATCH 187/589] CURA-4269 use z offset decorator to keep project file positions below bed --- plugins/3MFReader/ThreeMFReader.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index 93a8dc1c65..4175514238 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -12,6 +12,7 @@ from UM.Mesh.MeshBuilder import MeshBuilder from UM.Mesh.MeshReader import MeshReader from UM.Scene.GroupDecorator import GroupDecorator from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator +from cura.ZOffsetDecorator import ZOffsetDecorator from UM.Application import Application from cura.Settings.ExtruderManager import ExtruderManager from cura.QualityManager import QualityManager @@ -47,6 +48,8 @@ class ThreeMFReader(MeshReader): if transformation == "": return Matrix() + Logger.log("d", "raw_transformation=%s", transformation) + splitted_transformation = transformation.split() ## Transformation is saved as: ## M00 M01 M02 0.0 @@ -104,8 +107,8 @@ class ThreeMFReader(MeshReader): # Add the setting override decorator, so we can add settings to this node. if settings: um_node.addDecorator(SettingOverrideDecorator()) - global_container_stack = Application.getInstance().getGlobalContainerStack() + # Ensure the correct next container for the SettingOverride decorator is set. if global_container_stack: multi_extrusion = global_container_stack.getProperty("machine_extruder_count", "value") > 1 @@ -143,12 +146,15 @@ class ThreeMFReader(MeshReader): if len(um_node.getChildren()) > 0: group_decorator = GroupDecorator() um_node.addDecorator(group_decorator) + um_node.setSelectable(True) + if um_node.getMeshData(): # Assuming that all nodes with mesh data are printable objects # affects (auto) slicing sliceable_decorator = SliceableObjectDecorator() um_node.addDecorator(sliceable_decorator) + return um_node def read(self, file_name): @@ -168,10 +174,18 @@ class ThreeMFReader(MeshReader): transform_matrix = Matrix() mesh_data = um_node.getMeshData() + if mesh_data is not None: extents = mesh_data.getExtents() center_vector = Vector(extents.center.x, extents.center.y, extents.center.z) + + # If the object in a saved project is below the bed, keep it that way + if extents.minimum.z < 0.0: + um_node.addDecorator(ZOffsetDecorator()) + um_node.callDecoration("setZOffset", extents.minimum.z) + transform_matrix.setByTranslation(center_vector) + transform_matrix.multiply(um_node.getLocalTransformation()) um_node.setTransformation(transform_matrix) @@ -195,7 +209,7 @@ class ThreeMFReader(MeshReader): translation_matrix.setByTranslation(translation_vector) transformation_matrix.multiply(translation_matrix) - # Third step: 3MF also defines a unit, wheras Cura always assumes mm. + # Third step: 3MF also defines a unit, whereas Cura always assumes mm. scale_matrix = Matrix() scale_matrix.setByScaleVector(self._getScaleFromUnit(self._unit)) transformation_matrix.multiply(scale_matrix) From 3be1b8ddf9079cd190345b52c195fd28619b284b Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Mon, 18 Sep 2017 17:39:14 +0200 Subject: [PATCH 188/589] CURA-4303 fixes after comments on 1st commit --- resources/qml/SidebarSimple.qml | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index f65b436acc..2b03858955 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -454,10 +454,11 @@ Item id: infillSlider anchors.top: selectedInfillRateText.bottom - anchors.left: parent.left + UM.Theme.getSize("sidebar_margin").widt + anchors.left: parent.left + anchors.right: infillIcon.left + anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width height: UM.Theme.getSize("sidebar_margin").height - width: infillCellRight.width - infillIcon.width - UM.Theme.getSize("sidebar_margin").width minimumValue: 0 maximumValue: 100 @@ -484,15 +485,13 @@ Item radius: 1 } - handle: Item { - Rectangle { - id: handleButton - anchors.centerIn: parent - color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - implicitWidth: 10 - implicitHeight: 10 - radius: 10 - } + handle: Rectangle { + id: handleButton + anchors.centerIn: parent + color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") + implicitWidth: 10 + implicitHeight: 10 + radius: 10 } tickmarks: Repeater { @@ -512,6 +511,8 @@ Item Item { + id: infillIcon + width: (infillCellRight.width / 5) - (UM.Theme.getSize("sidebar_margin").width) height: width @@ -548,7 +549,6 @@ Item visible: infillIconList.activeIndex == index UM.RecolorImage { - id: infillIcon anchors.fill: parent sourceSize.width: width sourceSize.height: width @@ -602,6 +602,7 @@ Item text: catalog.i18nc("@label", "Enable gradual") font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") + elide: Text.ElideRight } } From e1ea8df84c76abdb7f42b21492532828d5f939ce Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 19 Sep 2017 09:32:13 +0200 Subject: [PATCH 189/589] Added flush to splash screen This greatly reduces the issues with it CURA-4343 --- cura/CuraSplashScreen.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index 4e4b2ba3a3..d61b7294af 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -3,7 +3,7 @@ from threading import Thread, Event -from PyQt5.QtCore import Qt +from PyQt5.QtCore import Qt, QCoreApplication from PyQt5.QtGui import QPixmap, QColor, QFont, QPen, QPainter from PyQt5.QtWidgets import QSplashScreen @@ -91,6 +91,7 @@ class CuraSplashScreen(QSplashScreen): self._current_message = message self.messageChanged.emit(message) + QCoreApplication.flush() def close(self): # set stop flags @@ -105,7 +106,7 @@ class LoadingTickThread(Thread): super().__init__(daemon = True) self._splash = splash self._to_stop = False - self._time_interval = 0.05 + self._time_interval = 0.1 self._event = Event() def setToStop(self): From e0480528a07d340728315cc0644f905110a13ec8 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 19 Sep 2017 09:38:08 +0200 Subject: [PATCH 190/589] Setting message now also forces repaint CURA-4343 --- cura/CuraSplashScreen.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index d61b7294af..a100cee9c3 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -92,6 +92,7 @@ class CuraSplashScreen(QSplashScreen): self._current_message = message self.messageChanged.emit(message) QCoreApplication.flush() + self.repaint() def close(self): # set stop flags From 847cd1b29344ba06047b18f698cc6fb845dbe3db Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 19 Sep 2017 09:43:35 +0200 Subject: [PATCH 191/589] Removed spinner as it caused the crash We might want to consider getting the spinner back, but for the moment it's best left out CURA-4343 --- cura/CuraSplashScreen.py | 40 +--------------------------------------- 1 file changed, 1 insertion(+), 39 deletions(-) diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index a100cee9c3..ac06d665d5 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -24,18 +24,10 @@ class CuraSplashScreen(QSplashScreen): self._loading_image_rotation_angle = 0 self._to_stop = False - self._loading_tick_thread = LoadingTickThread(self) def show(self): super().show() - self._loading_tick_thread.start() - - def updateLoadingImage(self): - if self._to_stop: - return - - self._loading_image_rotation_angle -= 10 - self.repaint() + self._to_stop = False def drawContents(self, painter): if self._to_stop: @@ -63,13 +55,6 @@ class CuraSplashScreen(QSplashScreen): painter.drawText(252, 105, 330 * self._scale, 255 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[1]) painter.setPen(QColor(255, 255, 255, 255)) - # draw the loading image - pen = QPen() - pen.setWidth(6 * self._scale) - pen.setColor(QColor(32, 166, 219, 255)) - painter.setPen(pen) - painter.drawArc(60, 150, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) - # draw message text if self._current_message: font = QFont() # Using system-default font here @@ -97,27 +82,4 @@ class CuraSplashScreen(QSplashScreen): def close(self): # set stop flags self._to_stop = True - self._loading_tick_thread.setToStop() super().close() - - -class LoadingTickThread(Thread): - - def __init__(self, splash): - super().__init__(daemon = True) - self._splash = splash - self._to_stop = False - self._time_interval = 0.1 - self._event = Event() - - def setToStop(self): - self._to_stop = True - self._event.set() - - def run(self): - while not self._to_stop: - self._event.wait(self._time_interval) - if self._event.is_set(): - break - - self._splash.updateLoadingImage() From 276f05bedbefecced7528870a317c175fa068053 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 19 Sep 2017 09:32:13 +0200 Subject: [PATCH 192/589] Added flush to splash screen This greatly reduces the issues with it CURA-4343 --- cura/CuraSplashScreen.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index 4e4b2ba3a3..d61b7294af 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -3,7 +3,7 @@ from threading import Thread, Event -from PyQt5.QtCore import Qt +from PyQt5.QtCore import Qt, QCoreApplication from PyQt5.QtGui import QPixmap, QColor, QFont, QPen, QPainter from PyQt5.QtWidgets import QSplashScreen @@ -91,6 +91,7 @@ class CuraSplashScreen(QSplashScreen): self._current_message = message self.messageChanged.emit(message) + QCoreApplication.flush() def close(self): # set stop flags @@ -105,7 +106,7 @@ class LoadingTickThread(Thread): super().__init__(daemon = True) self._splash = splash self._to_stop = False - self._time_interval = 0.05 + self._time_interval = 0.1 self._event = Event() def setToStop(self): From d5c9ebd58a468388d6aa165f3f2facaff1cd5dad Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 19 Sep 2017 09:38:08 +0200 Subject: [PATCH 193/589] Setting message now also forces repaint CURA-4343 --- cura/CuraSplashScreen.py | 1 + 1 file changed, 1 insertion(+) diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index d61b7294af..a100cee9c3 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -92,6 +92,7 @@ class CuraSplashScreen(QSplashScreen): self._current_message = message self.messageChanged.emit(message) QCoreApplication.flush() + self.repaint() def close(self): # set stop flags From d49e84830be45ba92f742112e198fc6bc85f3b49 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 19 Sep 2017 09:43:35 +0200 Subject: [PATCH 194/589] Removed spinner as it caused the crash We might want to consider getting the spinner back, but for the moment it's best left out CURA-4343 --- cura/CuraSplashScreen.py | 40 +--------------------------------------- 1 file changed, 1 insertion(+), 39 deletions(-) diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index a100cee9c3..ac06d665d5 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -24,18 +24,10 @@ class CuraSplashScreen(QSplashScreen): self._loading_image_rotation_angle = 0 self._to_stop = False - self._loading_tick_thread = LoadingTickThread(self) def show(self): super().show() - self._loading_tick_thread.start() - - def updateLoadingImage(self): - if self._to_stop: - return - - self._loading_image_rotation_angle -= 10 - self.repaint() + self._to_stop = False def drawContents(self, painter): if self._to_stop: @@ -63,13 +55,6 @@ class CuraSplashScreen(QSplashScreen): painter.drawText(252, 105, 330 * self._scale, 255 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[1]) painter.setPen(QColor(255, 255, 255, 255)) - # draw the loading image - pen = QPen() - pen.setWidth(6 * self._scale) - pen.setColor(QColor(32, 166, 219, 255)) - painter.setPen(pen) - painter.drawArc(60, 150, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) - # draw message text if self._current_message: font = QFont() # Using system-default font here @@ -97,27 +82,4 @@ class CuraSplashScreen(QSplashScreen): def close(self): # set stop flags self._to_stop = True - self._loading_tick_thread.setToStop() super().close() - - -class LoadingTickThread(Thread): - - def __init__(self, splash): - super().__init__(daemon = True) - self._splash = splash - self._to_stop = False - self._time_interval = 0.1 - self._event = Event() - - def setToStop(self): - self._to_stop = True - self._event.set() - - def run(self): - while not self._to_stop: - self._event.wait(self._time_interval) - if self._event.is_set(): - break - - self._splash.updateLoadingImage() From db072eae8e34572a9e9a939233b45cae551ded8f Mon Sep 17 00:00:00 2001 From: Mark Date: Tue, 19 Sep 2017 10:11:41 +0200 Subject: [PATCH 195/589] Add some margin for the helper boxes, not perfect yet CURA-4303 --- resources/qml/SidebarSimple.qml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index f65b436acc..be4fe65adf 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -403,8 +403,8 @@ Item { id: infillCellLeft - anchors.top: speedLabel.top - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 1.2 // FIXME better margin value + anchors.top: speedLabel.bottom + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height anchors.left: parent.left width: UM.Theme.getSize("sidebar").width * .45 - UM.Theme.getSize("sidebar_margin").width @@ -658,8 +658,8 @@ Item id: enableSupportLabel visible: enableSupportCheckBox.visible - anchors.top: infillCellRight.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + anchors.top: enableSupportCheckBox.top + anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width anchors.verticalCenter: enableSupportCheckBox.verticalCenter @@ -675,7 +675,7 @@ Item property alias _hovered: enableSupportMouseArea.containsMouse anchors.top: infillCellRight.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 2 anchors.left: infillCellRight.left style: UM.Theme.styles.checkbox; From 4e897a9a003c68989d1f0c5cf03ce8035e8b4f3d Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 19 Sep 2017 11:31:28 +0200 Subject: [PATCH 196/589] Re-enabled the progress circle A fix in Uranium made it possible for a timer to function, which ensures that it no longer breaks on linux CURA-4343 --- cura/CuraSplashScreen.py | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index ac06d665d5..41ac66b26c 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -3,7 +3,7 @@ from threading import Thread, Event -from PyQt5.QtCore import Qt, QCoreApplication +from PyQt5.QtCore import Qt, QCoreApplication, QTimer from PyQt5.QtGui import QPixmap, QColor, QFont, QPen, QPainter from PyQt5.QtWidgets import QSplashScreen @@ -24,10 +24,22 @@ class CuraSplashScreen(QSplashScreen): self._loading_image_rotation_angle = 0 self._to_stop = False + self._change_timer = QTimer() + self._change_timer.setInterval(50) + self._change_timer.setSingleShot(False) + #self.timeoutSignal.connect(self._onTimeout) + self._change_timer.timeout.connect(self.updateLoadingImage) def show(self): super().show() - self._to_stop = False + self._change_timer.start() + + def updateLoadingImage(self): + if self._to_stop: + return + + self._loading_image_rotation_angle -= 10 + self.repaint() def drawContents(self, painter): if self._to_stop: @@ -55,6 +67,13 @@ class CuraSplashScreen(QSplashScreen): painter.drawText(252, 105, 330 * self._scale, 255 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[1]) painter.setPen(QColor(255, 255, 255, 255)) + # draw the loading image + pen = QPen() + pen.setWidth(6 * self._scale) + pen.setColor(QColor(32, 166, 219, 255)) + painter.setPen(pen) + painter.drawArc(60, 150, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) + # draw message text if self._current_message: font = QFont() # Using system-default font here @@ -71,9 +90,9 @@ class CuraSplashScreen(QSplashScreen): super().drawContents(painter) def showMessage(self, message, *args, **kwargs): + if self._to_stop: return - self._current_message = message self.messageChanged.emit(message) QCoreApplication.flush() @@ -82,4 +101,7 @@ class CuraSplashScreen(QSplashScreen): def close(self): # set stop flags self._to_stop = True + self._change_timer.stop() super().close() + + From 03a159e423e0ce7b9e4a7ba51efea1732517ea95 Mon Sep 17 00:00:00 2001 From: Mark Date: Tue, 19 Sep 2017 10:11:41 +0200 Subject: [PATCH 197/589] Add some margin for the helper boxes, not perfect yet CURA-4303 --- resources/qml/SidebarSimple.qml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 2b03858955..9bd5c7590a 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -403,8 +403,8 @@ Item { id: infillCellLeft - anchors.top: speedLabel.top - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 1.2 // FIXME better margin value + anchors.top: speedLabel.bottom + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height anchors.left: parent.left width: UM.Theme.getSize("sidebar").width * .45 - UM.Theme.getSize("sidebar_margin").width @@ -659,8 +659,8 @@ Item id: enableSupportLabel visible: enableSupportCheckBox.visible - anchors.top: infillCellRight.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + anchors.top: enableSupportCheckBox.top + anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width anchors.verticalCenter: enableSupportCheckBox.verticalCenter @@ -676,7 +676,7 @@ Item property alias _hovered: enableSupportMouseArea.containsMouse anchors.top: infillCellRight.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 2 anchors.left: infillCellRight.left style: UM.Theme.styles.checkbox; From 8cfe65787f87e08719f8c8605491ffbaa9ed24a0 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 19 Sep 2017 11:37:00 +0200 Subject: [PATCH 198/589] Update translation templates for 3.0 release These are generated by calling 'make extract-messages' and then modifying the headers a bit. Contributes to issue CURA-4341. --- resources/i18n/cura.pot | 1383 ++++++++++++++--------- resources/i18n/fdmextruder.def.json.pot | 2 +- resources/i18n/fdmprinter.def.json.pot | 385 +++++-- 3 files changed, 1156 insertions(+), 614 deletions(-) diff --git a/resources/i18n/cura.pot b/resources/i18n/cura.pot index b81708a10a..2b4c1967d5 100644 --- a/resources/i18n/cura.pot +++ b/resources/i18n/cura.pot @@ -3,9 +3,10 @@ # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. # +#, fuzzy msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" @@ -17,14 +18,14 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:28 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" msgstr "" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" -msgid "X-Ray" +msgid "X-Ray view" msgstr "" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 @@ -37,39 +38,68 @@ msgctxt "@item:inlistbox" msgid "GCode File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:13 -msgctxt "@label" -msgid "Doodle3D" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:17 -msgctxt "@info:whatsthis" -msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:36 -msgctxt "@item:inmenu" -msgid "Doodle3D printing" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:37 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" -msgid "Print with Doodle3D" +msgid "Print with Doodle3D WiFi-Box" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:38 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 +msgctxt "@properties:tooltip" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:819 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:310 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +msgctxt "@action:button" +msgid "Cancel" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 +msgctxt "@info:status" +msgid "Sending data to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 +msgctxt "@info:status" +msgid "Unable to send data to Doodle3D Connect. Is another job still active?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 +msgctxt "@info:status" +msgid "File sent to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect.." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" -msgid "Print with " -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:49 -msgctxt "@title:menu" -msgid "Doodle3D" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:50 -msgctxt "@item:inlistbox" -msgid "Enable Scan devices..." +msgid "Open the Doodle3D Connect web interface" msgstr "" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 @@ -112,18 +142,38 @@ msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +msgctxt "@info:title" +msgid "Print Details" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "" "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" msgid "" "Unable to start a new job because the printer does not support usb printing." msgstr "" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:909 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 +msgctxt "@info:title" +msgid "Warning" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." @@ -135,9 +185,9 @@ msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:14 -msgctxt "X3G Writer File Description" -msgid "X3G File" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +msgctxt "@info:title" +msgid "Printer Firmware" msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 @@ -153,47 +203,79 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 #, python-brace-format -msgctxt "@info:progress" +msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" msgstr "" +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +msgctxt "@info:title" +msgid "Saving" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format -msgctxt "@info:status" -msgid "Saved to Removable Drive {0} as {1}" +msgctxt "@info:status Don't translate the tag {device}!" +msgid "Could not find a file name when trying to write to {device}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -msgctxt "@action:button" -msgid "Eject" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -#, python-brace-format -msgctxt "@action" -msgid "Eject removable device {0}" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:138 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #, python-brace-format msgctxt "@info:status" msgid "Could not save to removable drive {0}: {1}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:148 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:675 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:683 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:145 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:152 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 +msgctxt "@info:title" +msgid "Error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +#, python-brace-format +msgctxt "@info:status" +msgid "Saved to Removable Drive {0} as {1}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +msgctxt "@info:title" +msgid "File Saved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +msgctxt "@action:button" +msgid "Eject" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +#, python-brace-format +msgctxt "@action" +msgid "Eject removable device {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 #, python-brace-format msgctxt "@info:status" msgid "Ejected {0}. You can now safely remove the drive." msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:150 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 +msgctxt "@info:title" +msgid "Safely Remove Hardware" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format msgctxt "@info:status" msgid "Failed to eject {0}. Another program may be using the drive." @@ -204,100 +286,136 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:107 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:156 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 msgctxt "@info:status" msgid "" "Access to the printer requested. Please approve the request on the printer" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +msgctxt "@info:title" +msgid "Connection status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 msgctxt "@info:status" msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:468 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@action:button" msgid "Retry" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 msgctxt "@info:status" msgid "No access to print with this printer. Unable to send print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:28 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:72 msgctxt "@action:button" msgid "Request Access" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:71 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:358 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:375 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:359 msgctxt "@info:status" msgid "" "Connected over the network. Please approve the access request on the printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:365 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:382 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:366 msgctxt "@info:status" msgid "Connected over the network." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:378 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:379 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:383 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:400 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 msgctxt "@info:status" msgid "Access request was denied on the printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:386 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:403 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:387 msgctxt "@info:status" msgid "Access request failed due to a timeout." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:450 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:467 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:451 msgctxt "@info:status" msgid "The connection with the network was lost." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:481 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:482 msgctxt "@info:status" msgid "" "The connection with the printer was lost. Check your printer to see if it is " "connected." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:630 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:649 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:631 #, python-format msgctxt "@info:status" msgid "" @@ -305,37 +423,48 @@ msgid "" "%s." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:654 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:655 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:661 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:682 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:662 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:670 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:671 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:680 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:681 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:694 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:716 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:695 #, python-brace-format msgctxt "@label" msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:724 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:703 #, python-brace-format msgctxt "@label" msgid "" @@ -343,12 +472,14 @@ msgid "" "performed on the printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:707 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:729 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:730 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:709 msgctxt "@label" msgid "" "There is a mismatch between the configuration or calibration of the printer " @@ -356,68 +487,68 @@ msgid "" "that are inserted in your printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:736 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:715 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:815 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:818 msgctxt "@info:status" msgid "Sending data to printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:816 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:46 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:137 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 -msgctxt "@action:button" -msgid "Cancel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +msgctxt "@info:title" +msgid "Sending Data" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:884 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:887 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1018 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1050 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1031 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1024 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1037 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1030 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1043 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1032 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1045 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1175 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1188 msgctxt "@window:title" msgid "Sync with your printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1177 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1190 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1220 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1192 msgctxt "@label" msgid "" "The PrintCores and/or materials on your printer differ from those within " @@ -426,11 +557,92 @@ msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.py:19 msgctxt "@action" msgid "Connect via Network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:172 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:47 +msgctxt "@action:button" +msgid "Print..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:143 +msgctxt "@info:status" +msgid "Unable to send new print job, still sending previous job." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:159 +msgctxt "@info:status" +msgid "" +"Unable to send new print job. The cluster does not have printers to print " +"with." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:308 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to the cluster {cluster_name}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:384 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to print cluster {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:389 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:390 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:397 +#, python-brace-format +msgctxt "@info:status" +msgid "" +"Could not send job to print cluster {cluster_name}: {error_string} ({error})" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#, python-brace-format +msgctxt "@info:progress" +msgid "One or more SSL errors have occurred: {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#, python-brace-format +msgctxt "" +"@info Don't translate {machine_name}, since it gets replaced by a printer " +"name!" +msgid "" +"To ensure that your {machine_name} is equipped with the latest features it " +"is recommended to update the firmware regularly. This can be done on the " +"{machine_name} (when connected to the network) or via USB." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +msgctxt "@info" +msgid "Could not access update information." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" msgid "" "Errors appeared while opening your SolidWorks file! Please " @@ -452,19 +664,12 @@ msgstr "" msgid "Configure" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:129 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 #, python-format msgctxt "@info:status" msgid "Error while starting %s!" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:207 -msgctxt "@info:status" -msgid "" -"Please keep in mind, that you have to reopen your SolidWorks file manually! " -"Reloading the model won't work!" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 msgid "Modify G-Code" msgstr "" @@ -476,7 +681,12 @@ msgid "" "preferences." msgstr "" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:44 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 +msgctxt "@info:title" +msgid "Collecting Data" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" msgid "Dismiss" msgstr "" @@ -494,7 +704,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" -msgid "Layers" +msgid "Layer view" msgstr "" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 @@ -502,6 +712,11 @@ msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "" +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 +msgctxt "@info:title" +msgid "Layer View" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -527,15 +742,22 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:281 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" msgid "" -"The selected material is incompatible with the selected machine or " -"configuration." +"Unable to slice with the current material as it is incompatible with the " +"selected machine or configuration." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:308 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:307 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 +msgctxt "@info:title" +msgid "Unable to slice" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format msgctxt "@info:status" msgid "" @@ -543,13 +765,13 @@ msgid "" "errors: {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:317 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:306 msgctxt "@info:status" msgid "" "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:325 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:315 msgctxt "@info:status" msgid "" "Nothing to slice because none of the models fit the build volume. Please " @@ -562,6 +784,11 @@ msgctxt "@info:status" msgid "Processing Layers" msgstr "" +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +msgctxt "@info:title" +msgid "Information" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" msgid "Per Model Settings" @@ -573,13 +800,13 @@ msgid "Configure Per Model Settings" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:475 msgctxt "@title:tab" msgid "Recommended" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:459 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 msgctxt "@title:tab" msgid "Custom" msgstr "" @@ -590,24 +817,36 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:122 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1050 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 msgctxt "@label" msgid "Nozzle" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 +msgctxt "@menuitem" msgid "Browse plugins" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:120 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +msgctxt "@info:tile" +msgid "Warning" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" msgid "Plugin browser" msgstr "" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" -msgid "Solid" +msgid "Solid view" msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 @@ -620,7 +859,13 @@ msgctxt "@info:status" msgid "Parsing G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:365 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" msgid "" "Make sure the g-code is suitable for your printer and printer configuration " @@ -644,7 +889,7 @@ msgid "Cura Project 3MF file" msgstr "" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "" @@ -664,18 +909,73 @@ msgctxt "@action" msgid "Level build plate" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:247 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Skin" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Infill" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Travel" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Other" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 msgctxt "@item:material" msgid "No material loaded" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 msgctxt "@item:material" msgid "Unknown material" msgstr "" @@ -685,37 +985,60 @@ msgctxt "@info:status" msgid "Finding new location for objects" msgstr "" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:85 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:417 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 msgctxt "@title:window" msgid "File Already Exists" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:418 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 #, python-brace-format -msgctxt "@label" +msgctxt "@label Don't translate the XML tag !" msgid "" "The file {0} already exists. Are you sure you want to " "overwrite it?" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:801 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" msgid "Custom" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:805 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 msgctxt "@label" msgid "Custom Material" msgstr "" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +msgctxt "@info:status" +msgid "" +"The selected material is incompatible with the selected machine or " +"configuration." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:109 +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 +msgctxt "@info:title" +msgid "Incompatible Material" +msgstr "" + #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." msgid "" @@ -735,77 +1058,93 @@ msgstr "" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "" "Failed to export profile to {0}: {1}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:148 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "" "Failed to export profile to {0}: Writer plugin reported " "failure." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:199 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:208 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:242 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +msgctxt "@info:title" +msgid "Export Details" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:213 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:247 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "" "Failed to import profile from {0}: {1}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:210 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:246 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:249 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:267 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:272 msgctxt "@label" msgid "Custom profile" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:278 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:300 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:95 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 msgctxt "@info:status" msgid "" "The build volume height has been reduced due to the value of the \"Print " "Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "" +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 +msgctxt "@info:title" +msgid "Build Volume" +msgstr "" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "" + #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" msgid "Crash Report" @@ -826,22 +1165,22 @@ msgctxt "@action:button" msgid "Open Web Page" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:248 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 msgctxt "@info:progress" msgid "Loading machines..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:610 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:652 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Loading interface..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:815 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 #, python-format msgctxt "" "@info 'width', 'depth' and 'height' are variable names that must NOT be " @@ -849,13 +1188,13 @@ msgctxt "" msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1285 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1295 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1294 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1304 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" @@ -885,12 +1224,12 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:286 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:838 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:839 msgctxt "@label" msgid "mm" msgstr "" @@ -995,115 +1334,74 @@ msgid "" "gantry when printing \"One at a Time\"." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 msgctxt "@tooltip" msgid "" "The nominal diameter of filament supported by the printer. The exact " "diameter will be overridden by the material and/or the profile." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:290 msgctxt "@label" msgid "Material diameter" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:297 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:388 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 msgctxt "@label" msgid "Nozzle size" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:315 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 msgctxt "@label" msgid "Start Gcode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:325 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:334 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:335 msgctxt "@label" msgid "End Gcode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:344 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:376 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:377 msgctxt "@label" msgid "Nozzle Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:398 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 msgctxt "@label" msgid "Nozzle offset X" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:410 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset Y" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:431 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:449 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 msgctxt "@label" msgid "Extruder End Gcode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:20 -msgctxt "@title:window" -msgid "Doodle3D Settings" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:53 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 -msgctxt "@action:button" -msgid "Save" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:23 -msgctxt "@title:window" -msgid "Print to: %1" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:40 -msgctxt "@label" -msgid "Extruder Temperature: %1/%2°C" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:45 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:46 -msgctxt "@label" -msgid "Bed Temperature: %1/%2°C" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:64 -msgctxt "@label" -msgid "%1" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:82 -msgctxt "@action:button" -msgid "Print" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" msgid "Changelog" @@ -1112,9 +1410,10 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:55 #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:446 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:306 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:78 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:125 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 @@ -1168,11 +1467,13 @@ msgid "Unknown error code: %1" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:55 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:65 msgctxt "@label" msgid "" "To print directly to your printer over the network, please make sure your " @@ -1185,17 +1486,20 @@ msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 msgctxt "@action:button" msgid "Add" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:85 msgctxt "@action:button" msgid "Edit" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 @@ -1204,12 +1508,14 @@ msgid "Remove" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:33 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:104 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:35 msgctxt "@action:button" msgid "Refresh" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:196 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:196 msgctxt "@label" msgid "" "If your printer is not listed, read the network printing " @@ -1217,76 +1523,111 @@ msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:223 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:223 msgctxt "@label" msgid "Type" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 msgctxt "@label" msgid "Ultimaker 3" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:238 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:238 msgctxt "@label" msgid "Ultimaker 3 Extended" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:241 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:241 msgctxt "@label" msgid "Unknown" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:254 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:254 msgctxt "@label" msgid "Firmware version" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:266 msgctxt "@label" msgid "Address" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 msgctxt "@title:window" msgid "Printer Address" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 msgctxt "@action:button" msgid "Ok" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:37 msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:116 msgctxt "@info:tooltip" msgid "Load the configuration of the printer into Cura" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:117 msgctxt "@action:button" msgid "Activate Configuration" msgstr "" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print..." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Open the cluster's Printer Management interface in your browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 +msgctxt "@action:button" +msgid "Printer Management" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1375,67 +1716,62 @@ msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:71 -msgctxt "@label" -msgid "View Mode: Layers" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:88 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 msgctxt "@label" msgid "Color scheme" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:102 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:91 msgctxt "@label:listbox" msgid "Material Color" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:106 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:95 msgctxt "@label:listbox" msgid "Line Type" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:144 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 msgctxt "@label" msgid "Compatibility Mode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:210 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 msgctxt "@label" msgid "Show Travels" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 msgctxt "@label" msgid "Show Helpers" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 msgctxt "@label" msgid "Show Shell" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:234 msgctxt "@label" msgid "Show Infill" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:264 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:283 msgctxt "@label" msgid "Only Show Top Layers" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:273 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:292 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:284 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:303 msgctxt "@label" msgid "Top / Bottom" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:288 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 msgctxt "@label" msgid "Inner Wall" msgstr "" @@ -1514,23 +1850,23 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:157 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 msgctxt "@action:button" msgid "Select settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:197 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:221 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:245 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 msgctxt "@label:checkbox" msgid "Show all" msgstr "" @@ -1667,24 +2003,42 @@ msgctxt "@title:window" msgid "Find & Update plugins" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:27 msgctxt "@label" msgid "Here you can find a list of Third Party plugins." msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:143 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 msgctxt "@action:button" msgid "Upgrade" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 msgctxt "@action:button" msgid "Installed" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 +msgctxt "@title:window" +msgid "Plugin License Agreement" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 +msgctxt "@label" +msgid "" +" plugin contains a license.\n" +"You need to accept this license to install this plugin.\n" +"Do you agree with the terms below?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" -msgid "Download" +msgid "Accept" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" msgstr "" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 @@ -1874,71 +2228,71 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:91 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 msgctxt "@label:" msgid "Resume" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Pause" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:271 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 msgctxt "@label:" msgid "Abort Print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 msgctxt "@window:title" msgid "Abort print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:283 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "" @@ -1971,19 +2325,19 @@ msgid "Customized" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:587 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:588 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "" @@ -2124,7 +2478,7 @@ msgid "Unit" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 msgctxt "@title:tab" msgid "General" msgstr "" @@ -2139,197 +2493,197 @@ msgctxt "@label" msgid "Language:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 msgctxt "@label" msgid "Currency:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 msgctxt "@label" msgid "Theme:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "" "You will need to restart the application for these changes to have effect." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:289 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "" "Highlight unsupported areas of the model in red. Without support these areas " "will not print properly." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 msgctxt "@info:tooltip" msgid "" "Moves the camera so the model is in the center of the view when a model is " "selected" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:347 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@info:tooltip" msgid "" "Should models on the platform be moved so that they no longer intersect?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:382 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 msgctxt "@label" msgid "Opening and saving files" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:462 msgctxt "@option:check" msgid "Scale large models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 msgctxt "@info:tooltip" msgid "" "An model may appear extremely small if its unit is for example in meters " "rather than millimeters. Should these models be scaled up?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:469 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 msgctxt "@info:tooltip" msgid "" "Should a prefix based on the printer name be added to the print job name " "automatically?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:496 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:513 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:526 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 msgctxt "@option:openProject" msgid "Always ask" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:528 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always import models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:564 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 msgctxt "@info:tooltip" msgid "" "When you have made changes to a profile and switched to a different one, a " @@ -2337,27 +2691,27 @@ msgid "" "not, or you can choose a default behaviour and never show that dialog again." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@label" msgid "Override Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:622 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 msgctxt "@label" msgid "Privacy" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:634 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:check" msgid "Check for updates on start" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 msgctxt "@info:tooltip" msgid "" "Should anonymous data about your print be sent to Ultimaker? Note, no " @@ -2365,13 +2719,13 @@ msgid "" "stored." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:441 msgctxt "@title:tab" msgid "Printers" msgstr "" @@ -2421,7 +2775,7 @@ msgid "Waiting for a printjob" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 msgctxt "@title:tab" msgid "Profiles" msgstr "" @@ -2521,7 +2875,7 @@ msgid "Export Profile" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 msgctxt "@title:tab" msgid "Materials" msgstr "" @@ -2555,13 +2909,13 @@ msgid "Import Material" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "" "Could not import material %1: %2" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "" @@ -2572,18 +2926,18 @@ msgid "Export Material" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags and !" msgid "" "Failed to export material to %1: %2" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:822 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 msgctxt "@title:window" msgid "Add Printer" msgstr "" @@ -2598,71 +2952,6 @@ msgctxt "@action:button" msgid "Add Printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:166 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:167 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:168 -msgctxt "@tooltip" -msgid "Skin" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:169 -msgctxt "@tooltip" -msgid "Infill" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:170 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:171 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:172 -msgctxt "@tooltip" -msgid "Support" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:173 -msgctxt "@tooltip" -msgid "Travel" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:174 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:175 -msgctxt "@tooltip" -msgid "Other" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:217 -msgctxt "@label" -msgid "00h 00min" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:270 -msgctxt "@label" -msgid "%1 m / ~ %2 g / ~ %4 %3" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:275 -msgctxt "@label" -msgid "%1 m / ~ %2 g" -msgstr "" - #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -2770,32 +3059,46 @@ msgctxt "@label" msgid "SVG icons" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +msgctxt "@label" +msgid "Profile:" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the " +"profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" msgid "Search..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:405 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 msgctxt "@action:menu" msgid "Hide this setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:419 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:438 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "" @@ -2848,26 +3151,51 @@ msgid "" "Click to restore the calculated value." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "Print Setup" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 +msgctxt "@label" +msgid "00h 00min" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +msgctxt "@tooltip" +msgid "Time information" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 +msgctxt "@description" +msgid "Print time" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +msgctxt "@label" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 +msgctxt "@label" +msgid "%1m / ~ %2g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" msgid "" "Recommended Print Setup

Print with the recommended settings " "for the selected printer, material and quality." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:460 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:481 msgctxt "@tooltip" msgid "" "Custom Print Setup

Print with finegrained control over every " @@ -2919,63 +3247,71 @@ msgid "No printer connected" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" -msgid "Hotend" +msgid "Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:119 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 +msgctxt "@tooltip" +msgid "" +"The target temperature of the hotend. The hotend will heat up or cool down " +"towards this temperature. If this is 0, the hotend heating is turned off." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:249 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 msgctxt "@label" msgid "Build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:278 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 msgctxt "@tooltip" msgid "" "The target temperature of the heated bed. The bed will heat up or cool down " "towards this temperature. If this is 0, the bed heating is turned off." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:310 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:343 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:422 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button" msgid "Pre-heat" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:610 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 msgctxt "@tooltip of pre-heat" msgid "" "Heat the bed in advance before printing. You can continue adjusting your " @@ -2983,22 +3319,22 @@ msgid "" "when you're ready to print." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:677 msgctxt "@label" msgid "Active print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:648 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 msgctxt "@label" msgid "Job Name" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 msgctxt "@label" msgid "Printing Time" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:660 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 msgctxt "@label" msgid "Estimated time left" msgstr "" @@ -3189,53 +3525,53 @@ msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Prepare" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Cancel" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:288 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 msgctxt "@title:window" msgid "Open file(s)" msgstr "" @@ -3330,44 +3666,39 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 msgctxt "@action:button" msgid "Open File" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:428 -msgctxt "@action:button" -msgid "View Mode" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "Settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 msgctxt "@title:window" msgid "New project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:532 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 msgctxt "@info:question" msgid "" "Are you sure you want to start a new project? This will clear the build " "plate and any unsaved settings." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:750 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:694 msgctxt "@window:title" msgid "Install Plugin" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:757 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 msgctxt "@title:window" msgid "Open File(s)" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:760 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 msgctxt "@text:window" msgid "" "We have found one or more G-Code files within the files you have selected. " @@ -3395,90 +3726,75 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 +msgctxt "@action:button" +msgid "Save" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 msgctxt "@title:tab" msgid "Prepare" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" -msgid "Print" +msgid "Monitor" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +msgctxt "@label" +msgid "Layer Height" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +msgctxt "@label" +msgid "Print Speed" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +msgctxt "@label" +msgid "Slower" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +msgctxt "@label" +msgid "Faster" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" msgid "Infill" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "0%" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:199 -msgctxt "@label" -msgid "Empty infill will leave your model hollow with low strength." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:203 -msgctxt "@label" -msgid "20%" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:210 -msgctxt "@label" -msgid "Light (20%) infill will give your model an average strength." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:214 -msgctxt "@label" -msgid "50%" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:221 -msgctxt "@label" -msgid "Dense (50%) infill will give your model an above average strength." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:225 -msgctxt "@label" -msgid "100%" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:232 -msgctxt "@label" -msgid "Solid (100%) infill will make your model completely solid." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:236 -msgctxt "@label" -msgid "Gradual" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:244 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 msgctxt "@label" msgid "" "Gradual infill will gradually increase the amount of infill towards the top." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:267 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 +msgctxt "@label" +msgid "Enable gradual" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Generate Support" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 msgctxt "@label" msgid "" "Generate structures to support parts of the model which have overhangs. " "Without these structures, such parts would collapse during printing." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:718 msgctxt "@label" msgid "Support Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:391 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 msgctxt "@label" msgid "" "Select which extruder to use for support. This will build up supporting " @@ -3486,19 +3802,19 @@ msgid "" "mid air." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:796 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:462 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 msgctxt "@label" msgid "" "Enable printing a brim or raft. This will add a flat area around or under " "your object which is easy to cut off afterwards." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:515 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:883 msgctxt "@label" msgid "" "Need help improving your prints?
Read the
Ultimaker " @@ -3539,36 +3855,23 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:193 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 msgctxt "@label" msgid "Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:236 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +msgctxt "@label" +msgid "Check material compatibility" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:325 -msgctxt "@label" -msgid "Profile:" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the " -"profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" - #: MachineSettingsAction/plugin.json msgctxt "description" -msgid "" -"Provides a way to change machine settings (such as build volume, nozzle " -"size, etc)" +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" msgstr "" #: MachineSettingsAction/plugin.json @@ -3616,6 +3919,16 @@ msgctxt "name" msgid "God Mode" msgstr "" +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +msgstr "" + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "" + #: ChangeLogPlugin/plugin.json msgctxt "description" msgid "Shows changes since latest checked version." @@ -3638,8 +3951,7 @@ msgstr "" #: USBPrinting/plugin.json msgctxt "description" -msgid "" -"Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." msgstr "" #: USBPrinting/plugin.json @@ -3647,16 +3959,6 @@ msgctxt "name" msgid "USB printing" msgstr "" -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing X3G files" -msgstr "" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3G Writer" -msgstr "" - #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -3677,11 +3979,29 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "" +#: CuraPrintClusterUpload/plugin.json +msgctxt "description" +msgid "Manages network connections to Ultimaker 3 printers" +msgstr "" + +#: CuraPrintClusterUpload/plugin.json +msgctxt "name" +msgid "UM3 Network Connection (Cluster)" +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "" + #: CuraSolidWorksPlugin/plugin.json msgctxt "description" -msgid "" -"Gives you the possibility to open certain files via SolidWorks itself. These " -"are then converted and loaded into Cura" +msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" msgstr "" #: CuraSolidWorksPlugin/plugin.json @@ -3769,6 +4089,16 @@ msgctxt "name" msgid "Version Upgrade 2.5 to 2.6" msgstr "" +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -3891,9 +4221,7 @@ msgstr "" #: UltimakerMachineActions/plugin.json msgctxt "description" -msgid "" -"Provides machine actions for Ultimaker machines (such as bed leveling " -"wizard, selecting upgrades, etc)" +msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" msgstr "" #: UltimakerMachineActions/plugin.json @@ -3910,3 +4238,4 @@ msgstr "" msgctxt "name" msgid "Cura Profile Reader" msgstr "" + diff --git a/resources/i18n/fdmextruder.def.json.pot b/resources/i18n/fdmextruder.def.json.pot index ea5c05f6cf..8b67f13315 100644 --- a/resources/i18n/fdmextruder.def.json.pot +++ b/resources/i18n/fdmextruder.def.json.pot @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" diff --git a/resources/i18n/fdmprinter.def.json.pot b/resources/i18n/fdmprinter.def.json.pot index 3863eb1757..460e508eb9 100644 --- a/resources/i18n/fdmprinter.def.json.pot +++ b/resources/i18n/fdmprinter.def.json.pot @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" @@ -809,18 +809,6 @@ msgctxt "shell description" msgid "Shell" msgstr "" -#: fdmprinter.def.json -msgctxt "wall_extruder_nr label" -msgid "Wall Extruder" -msgstr "" - -#: fdmprinter.def.json -msgctxt "wall_extruder_nr description" -msgid "" -"The extruder train used for printing the walls. This is used in multi-" -"extrusion." -msgstr "" - #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" msgid "Outer Wall Extruder" @@ -1248,6 +1236,11 @@ msgctxt "z_seam_type option random" msgid "Random" msgstr "" +#: fdmprinter.def.json +msgctxt "z_seam_type option sharpest_corner" +msgid "Sharpest Corner" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1272,6 +1265,41 @@ msgid "" "layer." msgstr "" +#: fdmprinter.def.json +msgctxt "z_seam_corner label" +msgid "Seam Corner Preference" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner description" +msgid "" +"Control whether corners on the model outline influence the position of the " +"seam. None means that corners have no influence on the seam position. Hide " +"Seam makes the seam more likely to occur on an inside corner. Expose Seam " +"makes the seam more likely to occur on an outside corner. Hide or Expose " +"Seam makes the seam more likely to occur at an inside or outside corner." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_none" +msgid "None" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_inner" +msgid "Hide Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_outer" +msgid "Expose Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_any" +msgid "Hide or Expose Seam" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1298,6 +1326,19 @@ msgid "" "case, disable the setting." msgstr "" +#: fdmprinter.def.json +msgctxt "skin_outline_count label" +msgid "Extra Skin Wall Count" +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_outline_count description" +msgid "" +"Replaces the outermost part of the top/bottom pattern with a number of " +"concentric lines. Using one or two lines improves roofs that start on infill " +"material." +msgstr "" + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1351,9 +1392,9 @@ msgctxt "infill_pattern description" msgid "" "The pattern of the infill material of the print. The line and zig zag infill " "swap direction on alternate layers, reducing material cost. The grid, " -"triangle, cubic, tetrahedral and concentric patterns are fully printed every " -"layer. Cubic and tetrahedral infill change with every layer to provide a " -"more equal distribution of strength over each direction." +"triangle, cubic, octet, quarter cubic and concentric patterns are fully " +"printed every layer. Cubic, quarter cubic and octet infill change with every " +"layer to provide a more equal distribution of strength over each direction." msgstr "" #: fdmprinter.def.json @@ -1383,7 +1424,12 @@ msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" -msgid "Tetrahedral" +msgid "Octet" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option quarter_cubic" +msgid "Quarter Cubic" msgstr "" #: fdmprinter.def.json @@ -1401,6 +1447,31 @@ msgctxt "infill_pattern option zigzag" msgid "Zig Zag" msgstr "" +#: fdmprinter.def.json +msgctxt "infill_pattern option cross" +msgid "Cross" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross_3d" +msgid "Cross 3D" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill label" +msgid "Connect Infill Lines" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill description" +msgid "" +"Connect the ends where the infill pattern meets the inner wall using a lines " +"which follows the shape of the inner wall. Enabling this setting can make " +"the infill adhere to the walls better and reduces the effects on infill on " +"the quality of vertical surfaces. Disabling this setting reduces the amount " +"of material used." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" @@ -1555,42 +1626,45 @@ msgid "Don't generate areas of infill smaller than this (use skin instead)." msgstr "" #: fdmprinter.def.json -msgctxt "expand_skins_into_infill label" -msgid "Expand Skins Into Infill" +msgctxt "skin_preshrink label" +msgid "Skin Removal Width" msgstr "" #: fdmprinter.def.json -msgctxt "expand_skins_into_infill description" +msgctxt "skin_preshrink description" msgid "" -"Expand skin areas of top and/or bottom skin of flat surfaces. By default, " -"skins stop under the wall lines that surround infill but this can lead to " -"holes appearing when the infill density is low. This setting extends the " -"skins beyond the wall lines so that the infill on the next layer rests on " -"skin." +"The largest width of skin areas which are to be removed. Every skin area " +"smaller than this value will disappear. This can help in limiting the amount " +"of time and material spent on printing top/bottom skin at slanted surfaces " +"in the model." msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins label" -msgid "Expand Top Skins Into Infill" +msgctxt "top_skin_preshrink label" +msgid "Top Skin Removal Width" msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins description" +msgctxt "top_skin_preshrink description" msgid "" -"Expand the top skin areas (areas with air above) so that they support infill " -"above." +"The largest width of top skin areas which are to be removed. Every skin area " +"smaller than this value will disappear. This can help in limiting the amount " +"of time and material spent on printing top skin at slanted surfaces in the " +"model." msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins label" -msgid "Expand Bottom Skins Into Infill" +msgctxt "bottom_skin_preshrink label" +msgid "Bottom Skin Removal Width" msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins description" +msgctxt "bottom_skin_preshrink description" msgid "" -"Expand the bottom skin areas (areas with air below) so that they are " -"anchored by the infill layers above and below." +"The largest width of bottom skin areas which are to be removed. Every skin " +"area smaller than this value will disappear. This can help in limiting the " +"amount of time and material spent on printing bottom skin at slanted " +"surfaces in the model." msgstr "" #: fdmprinter.def.json @@ -1601,10 +1675,37 @@ msgstr "" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" msgid "" -"The distance the skins are expanded into the infill. The default distance is " -"enough to bridge the gap between the infill lines and will stop holes " -"appearing in the skin where it meets the wall when the infill density is " -"low. A smaller distance will often be sufficient." +"The distance the skins are expanded into the infill. Higher values makes the " +"skin attach better to the infill pattern and makes the walls on neighboring " +"layers adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance label" +msgid "Top Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance description" +msgid "" +"The distance the top skins are expanded into the infill. Higher values makes " +"the skin attach better to the infill pattern and makes the walls on the " +"layer above adhere better to the skin. Lower values save amount of material " +"used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance label" +msgid "Bottom Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance description" +msgid "" +"The distance the bottom skins are expanded into the infill. Higher values " +"makes the skin attach better to the infill pattern and makes the skin adhere " +"better to the walls on the layer below. Lower values save amount of material " +"used." msgstr "" #: fdmprinter.def.json @@ -2047,16 +2148,6 @@ msgctxt "speed_topbottom description" msgid "The speed at which top/bottom layers are printed." msgstr "" -#: fdmprinter.def.json -msgctxt "speed_ironing label" -msgid "Ironing Speed" -msgstr "" - -#: fdmprinter.def.json -msgctxt "speed_ironing description" -msgid "The speed at which to pass over the top surface." -msgstr "" - #: fdmprinter.def.json msgctxt "speed_support label" msgid "Support Speed" @@ -2324,16 +2415,6 @@ msgctxt "acceleration_topbottom description" msgid "The acceleration with which top/bottom layers are printed." msgstr "" -#: fdmprinter.def.json -msgctxt "acceleration_ironing label" -msgid "Ironing Acceleration" -msgstr "" - -#: fdmprinter.def.json -msgctxt "acceleration_ironing description" -msgid "The acceleration with which ironing is performed." -msgstr "" - #: fdmprinter.def.json msgctxt "acceleration_support label" msgid "Support Acceleration" @@ -2545,16 +2626,6 @@ msgid "" "printed." msgstr "" -#: fdmprinter.def.json -msgctxt "jerk_ironing label" -msgid "Ironing Jerk" -msgstr "" - -#: fdmprinter.def.json -msgctxt "jerk_ironing description" -msgid "The maximum instantaneous velocity change while performing ironing." -msgstr "" - #: fdmprinter.def.json msgctxt "jerk_support label" msgid "Support Jerk" @@ -3165,6 +3236,11 @@ msgctxt "support_pattern option zigzag" msgid "Zig Zag" msgstr "" +#: fdmprinter.def.json +msgctxt "support_pattern option cross" +msgid "Cross" +msgstr "" + #: fdmprinter.def.json msgctxt "support_connect_zigzags label" msgid "Connect Support ZigZags" @@ -3179,25 +3255,38 @@ msgstr "" #: fdmprinter.def.json msgctxt "support_skip_some_zags label" -msgid "Skip Some ZigZags Connections" +msgid "Break Up Support In Chunks" msgstr "" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" msgid "" -"Skip some ZigZags connections to make the support structure easier to break." +"Skip some support line connections to make the support structure easier to " +"break away. This setting is applicable to the Zig Zag support infill pattern." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm description" +msgid "" +"Leave out a connection between support lines once every N millimeter to make " +"the support structure easier to break away." msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count label" -msgid "ZigZag Connection Skip Count" +msgid "Support Chunk Line Count" msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" msgid "" "Skip one in every N connection lines to make the support structure easier to " -"break." +"break away." msgstr "" #: fdmprinter.def.json @@ -3880,6 +3969,32 @@ msgid "" "that much." msgstr "" +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 label" +msgid "Initial Layer Z Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 description" +msgid "" +"The extruder is offset from the normal height of the first layer by this " +"amount. It can be positive (raised) or negative (lowered). Some filament " +"types adhere to the build plate better if the extruder is raised slightly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers label" +msgid "Z Offset Taper Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers description" +msgid "" +"When non-zero, the Z offset is reduced to 0 over that many layers. A value " +"of 0 means that the Z offset remains constant for all the layers in the " +"print." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3893,6 +4008,20 @@ msgid "" "while using more material and leaving less area for your print." msgstr "" +#: fdmprinter.def.json +msgctxt "raft_smoothing label" +msgid "Raft Smoothing" +msgstr "" + +#: fdmprinter.def.json +msgctxt "raft_smoothing description" +msgid "" +"This setting control how much inner corners in the raft outline are rounded. " +"Inward corners are rounded to a semi circle with a radius equal to the value " +"given here. This setting also removes holes in the raft outline which are " +"smaller than such a circle." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_airgap label" msgid "Raft Air Gap" @@ -4683,6 +4812,22 @@ msgid "" "layer view). Note that smoothing will tend to blur fine surface details." msgstr "" +#: fdmprinter.def.json +msgctxt "relative_extrusion label" +msgid "Relative Extrusion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "relative_extrusion description" +msgid "" +"Use relative extrusion rather than absolute extrusion. Using relative E-" +"steps makes for easier post-processing of the Gcode. However, it's not " +"supported by all printers and it may produce very slight deviations in the " +"amount of deposited material compared to absolute E-steps. Irrespective of " +"this setting, the extrusion mode will always be set to absolute before any " +"Gcode script is output." +msgstr "" + #: fdmprinter.def.json msgctxt "experimental label" msgid "Experimental" @@ -4693,6 +4838,20 @@ msgctxt "experimental description" msgid "experimental!" msgstr "" +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "" +"Optimize the order in which walls are printed so as to reduce the number of " +"retractions and the distance travelled. Most parts will benefit from this " +"being enabled but some may actually take longer so please compare the print " +"time estimates with and without optimization." +msgstr "" + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4827,19 +4986,6 @@ msgid "" "coasting move the pressure in the bowden tube drops." msgstr "" -#: fdmprinter.def.json -msgctxt "skin_outline_count label" -msgid "Extra Skin Wall Count" -msgstr "" - -#: fdmprinter.def.json -msgctxt "skin_outline_count description" -msgid "" -"Replaces the outermost part of the top/bottom pattern with a number of " -"concentric lines. Using one or two lines improves roofs that start on infill " -"material." -msgstr "" - #: fdmprinter.def.json msgctxt "skin_alternate_rotation label" msgid "Alternate Skin Rotation" @@ -4853,6 +4999,31 @@ msgid "" "directions." msgstr "" +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size label" +msgid "Cross 3D Pocket Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size description" +msgid "" +"The size of pockets at four-way crossings in the cross 3D pattern at heights " +"where the pattern is touching itself." +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly label" +msgid "Alternate Cross 3D Pockets" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly description" +msgid "" +"Only apply pockets at half of the four-way crossings in the cross 3D pattern " +"and alternate the location of the pockets between heights where the pattern " +"is touching itself." +msgstr "" + #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" msgid "Spaghetti Infill" @@ -5365,6 +5536,18 @@ msgid "" "surface." msgstr "" +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer label" +msgid "Iron Only Highest Layer" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer description" +msgid "" +"Only perform ironing on the very last layer of the mesh. This saves time if " +"the lower layers don't need a smooth surface finish." +msgstr "" + #: fdmprinter.def.json msgctxt "ironing_pattern label" msgid "Ironing Pattern" @@ -5421,6 +5604,36 @@ msgid "" "edge of the mesh may result in a jagged edge on your print." msgstr "" +#: fdmprinter.def.json +msgctxt "speed_ironing label" +msgid "Ironing Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "speed_ironing description" +msgid "The speed at which to pass over the top surface." +msgstr "" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing label" +msgid "Ironing Acceleration" +msgstr "" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing description" +msgid "The acceleration with which ironing is performed." +msgstr "" + +#: fdmprinter.def.json +msgctxt "jerk_ironing label" +msgid "Ironing Jerk" +msgstr "" + +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "" + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" From b94bcdfa9154b225db7bb5045284055c61699025 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 19 Sep 2017 11:42:24 +0200 Subject: [PATCH 199/589] Remove duplicate entry This happens because the last bits are obtained separately from plug-in JSON files that are manually tacked on the end by a script. The script doesn't check for duplicates. Contributes to issue CURA-4341. --- resources/i18n/cura.pot | 5 ----- 1 file changed, 5 deletions(-) diff --git a/resources/i18n/cura.pot b/resources/i18n/cura.pot index 2b4c1967d5..896e5bd3d8 100644 --- a/resources/i18n/cura.pot +++ b/resources/i18n/cura.pot @@ -3979,11 +3979,6 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "" -#: CuraPrintClusterUpload/plugin.json -msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers" -msgstr "" - #: CuraPrintClusterUpload/plugin.json msgctxt "name" msgid "UM3 Network Connection (Cluster)" From f231c730722628c79c399c19d4a180f0f66cc1a4 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 19 Sep 2017 13:14:47 +0200 Subject: [PATCH 200/589] Add translation texts for future features These texts are meant to be included in the final release, but the features aren't ready yet. Contributes to issue CURA-4341. --- resources/i18n/cura.pot | 235 +++++++++++++++++++++++++++++----------- 1 file changed, 169 insertions(+), 66 deletions(-) diff --git a/resources/i18n/cura.pot b/resources/i18n/cura.pot index 896e5bd3d8..7171684c05 100644 --- a/resources/i18n/cura.pot +++ b/resources/i18n/cura.pot @@ -56,8 +56,8 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:819 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:310 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 @@ -288,6 +288,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:49 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "" @@ -370,44 +371,44 @@ msgid "Send access request to the printer" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:375 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 msgctxt "@info:status" msgid "" "Connected over the network. Please approve the access request on the printer." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:382 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:366 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 msgctxt "@info:status" msgid "Connected over the network." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:379 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:400 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 msgctxt "@info:status" msgid "Access request was denied on the printer." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:403 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:387 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Access request failed due to a timeout." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:467 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:451 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "The connection with the network was lost." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:499 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:482 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 msgctxt "@info:status" msgid "" "The connection with the printer was lost. Check your printer to see if it is " @@ -415,7 +416,7 @@ msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:649 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:631 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 #, python-format msgctxt "@info:status" msgid "" @@ -429,42 +430,42 @@ msgid "Printer Status" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:655 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:682 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:662 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:671 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:681 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:716 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:695 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@label" msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:724 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:703 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 #, python-brace-format msgctxt "@label" msgid "" @@ -473,13 +474,13 @@ msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:729 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:730 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:709 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 msgctxt "@label" msgid "" "There is a mismatch between the configuration or calibration of the printer " @@ -488,13 +489,13 @@ msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:736 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:715 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:818 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 msgctxt "@info:status" msgid "Sending data to printer" msgstr "" @@ -505,50 +506,50 @@ msgid "Sending Data" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:887 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1050 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1031 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1037 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1043 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1045 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1188 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 msgctxt "@window:title" msgid "Sync with your printer" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1190 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1220 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1192 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 msgctxt "@label" msgid "" "The PrintCores and/or materials on your printer differ from those within " @@ -562,56 +563,72 @@ msgctxt "@action" msgid "Connect via Network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:47 -msgctxt "@action:button" -msgid "Print..." +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +msgid "" +"This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:143 -msgctxt "@info:status" -msgid "Unable to send new print job, still sending previous job." +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#, python-brace-format +msgctxt "Count is number of printers." +msgid "" +"This printer is the host for a group of {count} connected Ultimaker 3 " +"printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#, python-brace-format +msgid "" +"{printer_name} has finished printing '{job_name}'. Please collect the print " +"and confirm clearing the build plate." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#, python-brace-format +msgid "" +"{printer_name} is reserved to print '{job_name}'. Please change the " +"printer's configuration to match the job, for it to start printing." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 msgctxt "@info:status" msgid "" -"Unable to send new print job. The cluster does not have printers to print " -"with." +"Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:308 -#, python-brace-format -msgctxt "@info:progress" -msgid "Sending {file_name} to the cluster {cluster_name}" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:384 -#, python-brace-format -msgctxt "@info:status" -msgid "Sent {file_name} to print cluster {cluster_name}." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:389 -msgctxt "@action:button" -msgid "Show print jobs" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:390 -msgctxt "@info:tooltip" -msgid "Opens the print jobs interface in your browser." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:397 -#, python-brace-format +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 msgctxt "@info:status" msgid "" -"Could not send job to print cluster {cluster_name}: {error_string} ({error})" +"Unable to send new print job: this 3D printer is not (yet) set up to host a " +"group of connected Ultimaker 3 printers." msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 #, python-brace-format msgctxt "@info:progress" -msgid "One or more SSL errors have occurred: {0}" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." msgstr "" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 @@ -1610,7 +1627,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" -msgid "Print..." +msgid "Print over network" msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 @@ -1618,14 +1635,100 @@ msgctxt "@action:button" msgid "Print" msgstr "" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 +msgctxt "@label:status" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 +msgctxt "@label:status" +msgid "Reserved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 +msgctxt "@label:status" +msgid "Finished" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 +msgctxt "@label:status" +msgid "Preparing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 +msgctxt "@label:status" +msgid "Available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 +msgctxt "@label" +msgid "Completed on: " +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 +msgctxt "@label" +msgid "Clear build plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 +msgctxt "@label" +msgid "Preparing to print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 msgctxt "@info:tooltip" -msgid "Open the cluster's Printer Management interface in your browser." +msgid "Opens the print jobs page with your default web browser." msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 msgctxt "@action:button" -msgid "Printer Management" +msgid "View print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 +msgctxt "@label" +msgid "PRINTER GROUP" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 +msgctxt "@title" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 +msgctxt "@label" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 +msgctxt "@label" +msgid "Queued" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 +msgctxt "@label:title" +msgid "Printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 +msgctxt "@action:button" +msgid "View printers" msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 From 19222a3221789a7f5828bd420e37ed03dd30fca7 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 19 Sep 2017 13:18:24 +0200 Subject: [PATCH 201/589] Update translation templates for 3.0 These are the files that should be translated by our translators for the 3.0 release. Contributes to issue CURA-4341. --- resources/i18n/de_DE/cura.po | 1704 +++++++++++------ resources/i18n/de_DE/fdmextruder.def.json.po | 4 +- resources/i18n/de_DE/fdmprinter.def.json.po | 409 +++- resources/i18n/es_ES/cura.po | 1706 +++++++++++------ resources/i18n/es_ES/fdmextruder.def.json.po | 2 +- resources/i18n/es_ES/fdmprinter.def.json.po | 409 +++- resources/i18n/fi_FI/cura.po | 1706 +++++++++++------ resources/i18n/fi_FI/fdmextruder.def.json.po | 4 +- resources/i18n/fi_FI/fdmprinter.def.json.po | 409 +++- resources/i18n/fr_FR/cura.po | 1704 +++++++++++------ resources/i18n/fr_FR/fdmextruder.def.json.po | 4 +- resources/i18n/fr_FR/fdmprinter.def.json.po | 409 +++- resources/i18n/it_IT/cura.po | 1706 +++++++++++------ resources/i18n/it_IT/fdmextruder.def.json.po | 4 +- resources/i18n/it_IT/fdmprinter.def.json.po | 409 +++- resources/i18n/ja_JP/cura.po | 1608 ++++++++++------ resources/i18n/ja_JP/fdmextruder.def.json.po | 2 +- resources/i18n/ja_JP/fdmprinter.def.json.po | 375 +++- resources/i18n/ko_KR/cura.po | 1488 +++++++++------ resources/i18n/ko_KR/fdmprinter.def.json.po | 357 +++- resources/i18n/nl_NL/cura.po | 1745 ++++++++++++------ resources/i18n/nl_NL/fdmextruder.def.json.po | 4 +- resources/i18n/nl_NL/fdmprinter.def.json.po | 401 +++- resources/i18n/pl_PL/cura.po | 1673 +++++++++++------ resources/i18n/pl_PL/fdmprinter.def.json.po | 389 +++- resources/i18n/pt_BR/cura.po | 1670 +++++++++++------ resources/i18n/pt_BR/fdmextruder.def.json.po | 2 +- resources/i18n/pt_BR/fdmprinter.def.json.po | 391 +++- resources/i18n/ru_RU/cura.po | 1673 +++++++++++------ resources/i18n/ru_RU/fdmprinter.def.json.po | 389 +++- resources/i18n/tr_TR/cura.po | 1701 +++++++++++------ resources/i18n/tr_TR/fdmextruder.def.json.po | 4 +- resources/i18n/tr_TR/fdmprinter.def.json.po | 409 +++- resources/i18n/zh_CN/cura.po | 1708 +++++++++++------ resources/i18n/zh_CN/fdmextruder.def.json.po | 2 +- resources/i18n/zh_CN/fdmprinter.def.json.po | 407 +++- 36 files changed, 18852 insertions(+), 8135 deletions(-) diff --git a/resources/i18n/de_DE/cura.po b/resources/i18n/de_DE/cura.po index f821bcd68e..0e387a2d8b 100644 --- a/resources/i18n/de_DE/cura.po +++ b/resources/i18n/de_DE/cura.po @@ -16,15 +16,15 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:28 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" msgstr "Geräteeinstellungen" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" -msgid "X-Ray" -msgstr "Röntgen" +msgid "X-Ray view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -36,40 +36,69 @@ msgctxt "@item:inlistbox" msgid "GCode File" msgstr "G-Code-Datei" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:13 -msgctxt "@label" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:17 -msgctxt "@info:whatsthis" -msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "Akzeptiert den G-Code und sendet diesen über WiFi an eine Doodle3D WiFi-Box." - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:36 -msgctxt "@item:inmenu" -msgid "Doodle3D printing" -msgstr "Doodle3D-Drucken" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:37 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" -msgid "Print with Doodle3D" -msgstr "Mit Doodle3D drucken" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:38 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 +msgctxt "@properties:tooltip" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Abbrechen" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 +msgctxt "@info:status" +msgid "Sending data to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 +msgctxt "@info:status" +msgid "Unable to send data to Doodle3D Connect. Is another job still active?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 +msgctxt "@info:status" +msgid "File sent to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect.." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" -msgid "Print with " -msgstr "Drucken mit" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:49 -msgctxt "@title:menu" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:50 -msgctxt "@item:inlistbox" -msgid "Enable Scan devices..." -msgstr "Scan-Geräte aktivieren..." +msgid "Open the Doodle3D Connect web interface" +msgstr "" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -111,16 +140,36 @@ msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Es kann kein neuer Auftrag gestartet werden, da der Drucker beschäftigt oder nicht angeschlossen ist." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +msgctxt "@info:title" +msgid "Print Details" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "Der Drucker unterstützt keinen USB-Druck, da er die UltiGCode-Variante verwendet." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Es kann kein neuer Auftrag gestartet werden, da der Drucker keinen Druck über USB unterstützt." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:909 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 +msgctxt "@info:title" +msgid "Warning" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." @@ -132,10 +181,10 @@ msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "Die für den Drucker unter %s erforderliche Firmware wurde nicht gefunden." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:14 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3D-Datei" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +msgctxt "@info:title" +msgid "Printer Firmware" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -150,47 +199,79 @@ msgstr "Auf Wechseldatenträger speichern {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 #, python-brace-format -msgctxt "@info:progress" +msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "Wird auf Wechseldatenträger gespeichert {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +msgctxt "@info:title" +msgid "Saving" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "Konnte nicht als {0} gespeichert werden: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format -msgctxt "@info:status" -msgid "Saved to Removable Drive {0} as {1}" -msgstr "Auf Wechseldatenträger {0} gespeichert als {1}" +msgctxt "@info:status Don't translate the tag {device}!" +msgid "Could not find a file name when trying to write to {device}." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -msgctxt "@action:button" -msgid "Eject" -msgstr "Auswerfen" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -#, python-brace-format -msgctxt "@action" -msgid "Eject removable device {0}" -msgstr "Wechseldatenträger auswerfen {0}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:138 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #, python-brace-format msgctxt "@info:status" msgid "Could not save to removable drive {0}: {1}" msgstr "Konnte nicht auf dem Wechseldatenträger gespeichert werden {0}: {1}" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:148 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:675 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:683 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:145 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:152 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 +msgctxt "@info:title" +msgid "Error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +#, python-brace-format +msgctxt "@info:status" +msgid "Saved to Removable Drive {0} as {1}" +msgstr "Auf Wechseldatenträger {0} gespeichert als {1}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +msgctxt "@info:title" +msgid "File Saved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +msgctxt "@action:button" +msgid "Eject" +msgstr "Auswerfen" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +#, python-brace-format +msgctxt "@action" +msgid "Eject removable device {0}" +msgstr "Wechseldatenträger auswerfen {0}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 #, python-brace-format msgctxt "@info:status" msgid "Ejected {0}. You can now safely remove the drive." msgstr "Ausgeworfen {0}. Sie können den Datenträger jetzt sicher entfernen." -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:150 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 +msgctxt "@info:title" +msgid "Safely Remove Hardware" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format msgctxt "@info:status" msgid "Failed to eject {0}. Another program may be using the drive." @@ -201,219 +282,351 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Wechseldatenträger" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:49 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Drucken über Netzwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Drücken über Netzwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:156 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 msgctxt "@info:status" msgid "Access to the printer requested. Please approve the request on the printer" msgstr "Zugriff auf Drucker erforderlich. Bestätigen Sie den Zugriff auf den Drucker" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +msgctxt "@info:title" +msgid "Connection status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 msgctxt "@info:status" msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:468 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@action:button" msgid "Retry" msgstr "Erneut versuchen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Zugriffanforderung erneut senden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Zugriff auf den Drucker genehmigt" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 msgctxt "@info:status" msgid "No access to print with this printer. Unable to send print job." msgstr "Kein Zugriff auf das Drucken mit diesem Drucker. Druckauftrag kann nicht gesendet werden." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:28 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:72 msgctxt "@action:button" msgid "Request Access" msgstr "Zugriff anfordern" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:71 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "Zugriffsanforderung für den Drucker senden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:358 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:375 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 msgctxt "@info:status" msgid "Connected over the network. Please approve the access request on the printer." msgstr "Über Netzwerk verbunden. Geben Sie die Zugriffsanforderung für den Drucker frei." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:365 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:382 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 msgctxt "@info:status" msgid "Connected over the network." msgstr "Über Netzwerk verbunden." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:378 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "Über Netzwerk verbunden. Kein Zugriff auf die Druckerverwaltung." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:383 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:400 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 msgctxt "@info:status" msgid "Access request was denied on the printer." msgstr "Zugriffsanforderung auf den Drucker wurde abgelehnt." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:386 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:403 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Access request failed due to a timeout." msgstr "Zugriffsanforderungen aufgrund von Zeitüberschreitung fehlgeschlagen." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:450 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:467 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "The connection with the network was lost." msgstr "Die Verbindung zum Netzwerk ist verlorengegangen." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:481 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 msgctxt "@info:status" msgid "The connection with the printer was lost. Check your printer to see if it is connected." msgstr "Die Verbindung zum Drucker ist verlorengegangen. Überprüfen Sie Ihren Drucker, um festzustellen, ob er verbunden ist." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:630 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:649 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 #, python-format msgctxt "@info:status" msgid "Unable to start a new print job, printer is busy. Current printer status is %s." msgstr "Es kann kein neuer Druckauftrag gestartet werden, da der Drucker beschäftigt ist. Der aktuelle Druckerstatus lautet %s." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:654 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Es kann kein neuer Druckauftrag gestartet werden. Kein PrintCore in Steckplatz {0} geladen." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:661 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:682 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Es kann kein neuer Druckauftrag gestartet werden. Kein Material in Steckplatz {0} geladen." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:670 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Material für Spule {0} unzureichend." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:680 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Abweichender PrintCore (Cura: {0}, Drucker: {1}) für Extruder {2} gewählt" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:694 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:716 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@label" msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Abweichendes Material (Cura: {0}, Drucker: {1}) für Extruder {2} gewählt" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:724 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "PrintCore {0} ist nicht korrekt kalibriert. XY-Kalibrierung muss auf dem Drucker ausgeführt werden." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:707 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:729 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "Möchten Sie wirklich mit der gewählten Konfiguration drucken?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:730 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 msgctxt "@label" msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "Anforderungen zwischen der Druckerkonfiguration oder -kalibrierung und Cura stimmen nicht überein. Für optimale Ergebnisse schneiden Sie stets für die PrintCores und Materialien, die in Ihren Drucker eingelegt wurden." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:736 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Konfiguration nicht übereinstimmend" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:815 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Daten werden zum Drucker gesendet" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:816 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:46 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:137 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Abbrechen" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +msgctxt "@info:title" +msgid "Sending Data" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:884 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Daten können nicht zum Drucker gesendet werden. Ist noch ein weiterer Auftrag in Bearbeitung?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1018 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1050 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Drucken wird abgebrochen..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1024 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Drucken wurde abgebrochen. Den Drucker überprüfen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1030 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Drucken wird pausiert..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1032 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Drucken wird fortgesetzt..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1175 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synchronisieren Ihres Druckers" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1177 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "Möchten Sie Ihre aktuelle Druckerkonfiguration in Cura verwenden?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1220 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 msgctxt "@label" msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "Die PrintCores und/oder Materialien auf Ihrem Drucker unterscheiden sich von denen Ihres aktuellen Projekts. Für optimale Ergebnisse schneiden Sie stets für die PrintCores und Materialien, die in Ihren Drucker eingelegt wurden." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.py:19 msgctxt "@action" msgid "Connect via Network" msgstr "Anschluss über Netzwerk" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:172 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#, python-brace-format +msgctxt "Count is number of printers." +msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#, python-brace-format +msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#, python-brace-format +msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +msgctxt "@info:status" +msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#, python-brace-format +msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Download" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +msgctxt "@info" +msgid "Could not access update information." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" msgstr "Beim Öffnen Ihrer SolidWorks Datei trat ein Fehler auf! Überprüfen Sie bitte, ob sich Ihre Datei in SolidWorks ohne Probleme öffnen lässt!" @@ -432,17 +645,12 @@ msgstr "SolidWorks Einbaudatei" msgid "Configure" msgstr "Konfigurieren" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:129 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 #, python-format msgctxt "@info:status" msgid "Error while starting %s!" msgstr "Fehler beim Starten %s!" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:207 -msgctxt "@info:status" -msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" -msgstr "Beachten Sie bitte, dass Sie Ihre SolidWorks Datei manuell erneut öffnen müssen! Das erneute Laden des Modells funktioniert nicht!" - #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 msgid "Modify G-Code" msgstr "G-Code ändern" @@ -452,7 +660,12 @@ msgctxt "@info" msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." msgstr "Cura erfasst anonymisierte Slice-Informationen. Sie können dies in den Einstellungen deaktivieren." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:44 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 +msgctxt "@info:title" +msgid "Collecting Data" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" msgid "Dismiss" msgstr "Verwerfen" @@ -470,14 +683,19 @@ msgstr "G-Code-Datei" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" -msgid "Layers" -msgstr "Schichten" +msgid "Layer view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura zeigt die Schichten nicht akkurat an, wenn Wire Printing aktiviert ist." +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 +msgctxt "@info:title" +msgid "Layer View" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -503,24 +721,31 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF-Bilddatei" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:281 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "Das gewählte Material ist mit der gewählten Maschine oder Konfiguration nicht kompatibel." +msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:308 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:307 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 +msgctxt "@info:title" +msgid "Unable to slice" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Die aktuellen Einstellungen lassen kein Schneiden (Slicing) zu. Die folgenden Einstellungen sind fehlerhaft:{0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:317 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:306 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Schneiden (Slicing) ist nicht möglich, da der Einzugsturm oder die Einzugsposition(en) ungültig ist (sind)." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:325 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:315 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Es ist kein Objekt zum Schneiden vorhanden, da keines der Modelle der Druckabmessung entspricht. Bitte die Modelle passend skalieren oder drehen." @@ -531,6 +756,11 @@ msgctxt "@info:status" msgid "Processing Layers" msgstr "Schichten werden verarbeitet" +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +msgctxt "@info:title" +msgid "Information" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" msgid "Per Model Settings" @@ -542,13 +772,13 @@ msgid "Configure Per Model Settings" msgstr "Pro Objekteinstellungen konfigurieren" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:475 msgctxt "@title:tab" msgid "Recommended" msgstr "Empfohlen" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:459 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 msgctxt "@title:tab" msgid "Custom" msgstr "Benutzerdefiniert" @@ -559,25 +789,37 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF-Datei" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:122 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1050 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 msgctxt "@label" msgid "Nozzle" msgstr "Düse" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 +msgctxt "@menuitem" msgid "Browse plugins" -msgstr "Plugins durchsuchen" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:120 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +msgctxt "@info:tile" +msgid "Warning" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" msgid "Plugin browser" msgstr "Plugin-Browser" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" -msgid "Solid" -msgstr "Solide" +msgid "Solid view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -589,7 +831,13 @@ msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-Code parsen" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:365 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Stellen Sie sicher, dass der G-Code für Ihren Drucker und Ihre Druckerkonfiguration geeignet ist, bevor Sie die Datei senden. Der Darstellung des G-Codes ist möglicherweise nicht korrekt." @@ -611,7 +859,7 @@ msgid "Cura Project 3MF file" msgstr "Cura-Projekt 3MF-Datei" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Upgrades wählen" @@ -631,18 +879,73 @@ msgctxt "@action" msgid "Level build plate" msgstr "Druckbett nivellieren" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:247 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Außenwand" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Innenwände" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Außenhaut" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Füllung" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Stützstruktur-Füllung" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Stützstruktur-Schnittstelle" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support" +msgstr "Stützstruktur" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Bewegungen" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Einzüge" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Other" +msgstr "Sonstige" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Vorgeschnittene Datei {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 msgctxt "@item:material" msgid "No material loaded" msgstr "Kein Material geladen" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 msgctxt "@item:material" msgid "Unknown material" msgstr "Unbekanntes Material" @@ -652,35 +955,56 @@ msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Neue Position für Objekte finden" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:85 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Innerhalb der Druckabmessung für alle Objekte konnte keine Position gefunden werden" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:417 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 msgctxt "@title:window" msgid "File Already Exists" msgstr "Datei bereits vorhanden" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:418 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 #, python-brace-format -msgctxt "@label" +msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "Die Datei {0} ist bereits vorhanden. Soll die Datei wirklich überschrieben werden?" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:801 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" msgid "Custom" msgstr "Benutzerdefiniert" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:805 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 msgctxt "@label" msgid "Custom Material" msgstr "Benutzerdefiniertes Material" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +msgctxt "@info:status" +msgid "The selected material is incompatible with the selected machine or configuration." +msgstr "Das gewählte Material ist mit der gewählten Maschine oder Konfiguration nicht kompatibel." + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:109 +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 +msgctxt "@info:title" +msgid "Incompatible Material" +msgstr "" + #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." msgid "The selected material diameter causes the material to become incompatible with the current printer." @@ -698,70 +1022,86 @@ msgstr "Änderung des Materialdurchmessers rückgängig machen" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "Export des Profils nach {0} fehlgeschlagen: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:148 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "Export des Profils nach {0} fehlgeschlagen: Fehlermeldung von Writer-Plugin" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "Profil wurde nach {0} exportiert" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:199 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:208 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:242 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +msgctxt "@info:title" +msgid "Export Details" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:213 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:247 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "Import des Profils aus Datei {0} fehlgeschlagen: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:210 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:246 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profil erfolgreich importiert {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:249 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Profil {0} hat einen unbekannten Dateityp oder ist beschädigt." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:267 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:272 msgctxt "@label" msgid "Custom profile" msgstr "Benutzerdefiniertes Profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:278 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Für das Profil fehlt eine Qualitätsangabe." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:300 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Es konnte keine Qualitätsangabe {0} für die vorliegende Konfiguration gefunden werden." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:95 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "Die Höhe der Druckabmessung wurde aufgrund des Wertes der Einstellung „Druckreihenfolge“ reduziert, um eine Kollision der Brücke mit den gedruckten Modellen zu verhindern." +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 +msgctxt "@info:title" +msgid "Build Volume" +msgstr "" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Objekte vervielfältigen und platzieren" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "" + #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" msgid "Crash Report" @@ -773,41 +1113,44 @@ msgid "" "

A fatal exception has occurred that we could not recover from!

\n" "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" " " -msgstr "

Ein schwerer Ausnahmezustand ist aufgetreten, den wir nicht beseitigen konnten!

\n

Bitte senden Sie einen Fehlerbericht an folgende URL http://github.com/Ultimaker/Cura/issues

\n " +msgstr "" +"

Ein schwerer Ausnahmezustand ist aufgetreten, den wir nicht beseitigen konnten!

\n" +"

Bitte senden Sie einen Fehlerbericht an folgende URL http://github.com/Ultimaker/Cura/issues

\n" +" " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 msgctxt "@action:button" msgid "Open Web Page" msgstr "Webseite öffnen" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:248 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Geräte werden geladen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:610 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Die Szene wird eingerichtet..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:652 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Die Benutzeroberfläche wird geladen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:815 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1285 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1295 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Es kann nur jeweils ein G-Code gleichzeitig geladen werden. Wichtige {0} werden übersprungen." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1294 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1304 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" @@ -837,12 +1180,12 @@ msgstr "X (Breite)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:286 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:838 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:839 msgctxt "@label" msgid "mm" msgstr "mm" @@ -932,108 +1275,72 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "Der Höhenunterschied zwischen der Düsenspitze und dem Brückensystem (X- und Y-Achsen). Wird verwendet, um Kollisionen zwischen vorherigen Drucken und der Brücke zu verhindern, wenn im Modus „Nacheinander“ gedruckt wird." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Anzahl Extruder" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 msgctxt "@tooltip" msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." msgstr "Der Nenndurchmesser des durch den Drucker unterstützten Filaments. Der exakte Durchmesser wird durch das Material und/oder das Profil überschrieben." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:290 msgctxt "@label" msgid "Material diameter" msgstr "Materialdurchmesser" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:297 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:388 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 msgctxt "@label" msgid "Nozzle size" msgstr "Düsengröße" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:315 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 msgctxt "@label" msgid "Start Gcode" msgstr "G-Code starten" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:325 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "G-Code-Befehle, die zum Start ausgeführt werden sollen." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:334 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:335 msgctxt "@label" msgid "End Gcode" msgstr "G-Code beenden" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:344 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "G-Code-Befehle, die am Ende ausgeführt werden sollen." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:376 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:377 msgctxt "@label" msgid "Nozzle Settings" msgstr "Düseneinstellungen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:398 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 msgctxt "@label" msgid "Nozzle offset X" msgstr "X-Versatz Düse" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:410 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Y-Versatz Düse" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:431 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "G-Code Extruder-Start" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:449 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 msgctxt "@label" msgid "Extruder End Gcode" msgstr "G-Code Extruder-Ende" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:20 -msgctxt "@title:window" -msgid "Doodle3D Settings" -msgstr "Doodle3D-Einstellungen" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:53 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 -msgctxt "@action:button" -msgid "Save" -msgstr "Speichern" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:23 -msgctxt "@title:window" -msgid "Print to: %1" -msgstr "Drucken auf: %1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:40 -msgctxt "@label" -msgid "Extruder Temperature: %1/%2°C" -msgstr "Extruder-Temperatur %1/%2 °C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:46 -msgctxt "@label" -msgid "Bed Temperature: %1/%2°C" -msgstr "Bett-Temperatur %1/%2 °C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:64 -msgctxt "@label" -msgid "%1" -msgstr "%1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:82 -msgctxt "@action:button" -msgid "Print" -msgstr "Drucken" - #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" msgid "Changelog" @@ -1042,9 +1349,10 @@ msgstr "Änderungsprotokoll" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:55 #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:446 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:306 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:78 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:125 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 @@ -1098,30 +1406,38 @@ msgid "Unknown error code: %1" msgstr "Unbekannter Fehlercode: %1" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:55 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Anschluss an vernetzten Drucker" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:65 msgctxt "@label" msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "Um über das Netzwerk direkt auf Ihrem Drucker zu drucken, stellen Sie bitte sicher, dass der Drucker mit dem Netzwerkkabel verbunden ist oder verbinden Sie Ihren Drucker mit Ihrem WLAN-Netzwerk. Wenn Sie Cura nicht mit Ihrem Drucker verbinden, können Sie dennoch ein USB-Laufwerk für die Übertragung von G-Code-Dateien auf Ihren Drucker verwenden.\n\nWählen Sie Ihren Drucker aus der folgenden Liste:" +msgstr "" +"Um über das Netzwerk direkt auf Ihrem Drucker zu drucken, stellen Sie bitte sicher, dass der Drucker mit dem Netzwerkkabel verbunden ist oder verbinden Sie Ihren Drucker mit Ihrem WLAN-Netzwerk. Wenn Sie Cura nicht mit Ihrem Drucker verbinden, können Sie dennoch ein USB-Laufwerk für die Übertragung von G-Code-Dateien auf Ihren Drucker verwenden.\n" +"\n" +"Wählen Sie Ihren Drucker aus der folgenden Liste:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 msgctxt "@action:button" msgid "Add" msgstr "Hinzufügen" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:85 msgctxt "@action:button" msgid "Edit" msgstr "Bearbeiten" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 @@ -1130,87 +1446,210 @@ msgid "Remove" msgstr "Entfernen" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:33 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:104 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:35 msgctxt "@action:button" msgid "Refresh" msgstr "Aktualisieren" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:196 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:196 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Wenn Ihr Drucker nicht aufgeführt ist, lesen Sie die Anleitung für Fehlerbehebung für Netzwerkdruck" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:223 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:223 msgctxt "@label" msgid "Type" msgstr "Typ" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 msgctxt "@label" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:238 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:238 msgctxt "@label" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:241 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:241 msgctxt "@label" msgid "Unknown" msgstr "Unbekannt" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:254 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:254 msgctxt "@label" msgid "Firmware version" msgstr "Firmware-Version" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:266 msgctxt "@label" msgid "Address" msgstr "Adresse" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Der Drucker unter dieser Adresse hat nicht reagiert." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Verbinden" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 msgctxt "@title:window" msgid "Printer Address" msgstr "Druckeradresse" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Geben Sie die IP-Adresse oder den Hostnamen Ihres Druckers auf dem Netzwerk ein." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 msgctxt "@action:button" msgid "Ok" msgstr "Ok" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:37 msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Mit einem Drucker verbinden" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:116 msgctxt "@info:tooltip" msgid "Load the configuration of the printer into Cura" msgstr "Die Druckerkonfiguration in Cura laden" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:117 msgctxt "@action:button" msgid "Activate Configuration" msgstr "Konfiguration aktivieren" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Drucken" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 +msgctxt "@label:status" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 +msgctxt "@label:status" +msgid "Reserved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 +msgctxt "@label:status" +msgid "Finished" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 +msgctxt "@label:status" +msgid "Preparing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 +msgctxt "@label:status" +msgid "Available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 +msgctxt "@label" +msgid "Completed on: " +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 +msgctxt "@label" +msgid "Clear build plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 +msgctxt "@label" +msgid "Preparing to print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 +msgctxt "@label" +msgid "PRINTER GROUP" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 +msgctxt "@title" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 +msgctxt "@label" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 +msgctxt "@label" +msgid "Queued" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 +msgctxt "@label:title" +msgid "Printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 +msgctxt "@action:button" +msgid "View printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1299,67 +1738,62 @@ msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Aktive Skripts Nachbearbeitung ändern" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:71 -msgctxt "@label" -msgid "View Mode: Layers" -msgstr "Ansichtsmodus: Schichten" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:88 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 msgctxt "@label" msgid "Color scheme" msgstr "Farbschema" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:102 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:91 msgctxt "@label:listbox" msgid "Material Color" msgstr "Materialfarbe" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:106 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:95 msgctxt "@label:listbox" msgid "Line Type" msgstr "Linientyp" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:144 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 msgctxt "@label" msgid "Compatibility Mode" msgstr "Kompatibilitätsmodus" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:210 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 msgctxt "@label" msgid "Show Travels" msgstr "Bewegungen anzeigen" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 msgctxt "@label" msgid "Show Helpers" msgstr "Helfer anzeigen" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 msgctxt "@label" msgid "Show Shell" msgstr "Gehäuse anzeigen" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:234 msgctxt "@label" msgid "Show Infill" msgstr "Füllung anzeigen" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:264 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:283 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Nur obere Schichten anzeigen" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:273 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:292 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "5 detaillierte Schichten oben anzeigen" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:284 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:303 msgctxt "@label" msgid "Top / Bottom" msgstr "Oben/Unten" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:288 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 msgctxt "@label" msgid "Inner Wall" msgstr "Innenwand" @@ -1434,23 +1868,23 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Glättung" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:157 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 msgctxt "@action:button" msgid "Select settings" msgstr "Einstellungen wählen" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:197 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Einstellungen für die benutzerdefinierte Anpassung dieses Modells wählen" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:221 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtern..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:245 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 msgctxt "@label:checkbox" msgid "Show all" msgstr "Alle anzeigen" @@ -1587,25 +2021,43 @@ msgctxt "@title:window" msgid "Find & Update plugins" msgstr "Plugins finden und aktualisieren" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:27 msgctxt "@label" msgid "Here you can find a list of Third Party plugins." msgstr "Hier finden Sie eine Liste mit Plugins von Fremdanbietern." -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:143 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 msgctxt "@action:button" msgid "Upgrade" msgstr "Aktualisierung" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 msgctxt "@action:button" msgid "Installed" msgstr "Installiert" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 +msgctxt "@title:window" +msgid "Plugin License Agreement" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 +msgctxt "@label" +msgid "" +" plugin contains a license.\n" +"You need to accept this license to install this plugin.\n" +"Do you agree with the terms below?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" -msgid "Download" -msgstr "Download" +msgid "Accept" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" +msgstr "" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -1781,71 +2233,71 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "Alles ist in Ordnung! Der Check-up ist abgeschlossen." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Nicht mit einem Drucker verbunden" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:91 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "Drucker nimmt keine Befehle an" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "In Wartung. Den Drucker überprüfen" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Verbindung zum Drucker wurde unterbrochen" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Es wird gedruckt..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Pausiert" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Vorbereitung läuft..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Bitte den Ausdruck entfernen" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 msgctxt "@label:" msgid "Resume" msgstr "Zurückkehren" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Pause" msgstr "Pausieren" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:271 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 msgctxt "@label:" msgid "Abort Print" msgstr "Drucken abbrechen" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 msgctxt "@window:title" msgid "Abort print" msgstr "Drucken abbrechen" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:283 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Soll das Drucken wirklich abgebrochen werden?" @@ -1860,7 +2312,9 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "Sie haben einige Profileinstellungen angepasst.\nMöchten Sie diese Einstellungen übernehmen oder verwerfen?" +msgstr "" +"Sie haben einige Profileinstellungen angepasst.\n" +"Möchten Sie diese Einstellungen übernehmen oder verwerfen?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -1878,19 +2332,19 @@ msgid "Customized" msgstr "Angepasst" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Stets nachfragen" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:587 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Verwerfen und zukünftig nicht mehr nachfragen" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:588 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Übernehmen und zukünftig nicht mehr nachfragen" @@ -2031,7 +2485,7 @@ msgid "Unit" msgstr "Einheit" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 msgctxt "@title:tab" msgid "General" msgstr "Allgemein" @@ -2046,223 +2500,223 @@ msgctxt "@label" msgid "Language:" msgstr "Sprache:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 msgctxt "@label" msgid "Currency:" msgstr "Währung:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 msgctxt "@label" msgid "Theme:" msgstr "Thema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Die Anwendung muss neu gestartet werden, um die Änderungen zu übernehmen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:289 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Bei Änderung der Einstellungen automatisch schneiden." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Automatisch schneiden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Viewport-Verhalten" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Nicht gestützte Bereiche des Modells in rot hervorheben. Ohne Support werden diese Bereiche nicht korrekt gedruckt." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Überhang anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Bewegt die Kamera, bis sich das Modell im Mittelpunkt der Ansicht befindet, wenn ein Modell ausgewählt wurde" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:347 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Zentrieren Sie die Kamera, wenn das Element ausgewählt wurde" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Soll das standardmäßige Zoom-Verhalten von Cura umgekehrt werden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Kehren Sie die Richtung des Kamera-Zooms um." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Soll das Zoomen in Richtung der Maus erfolgen?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "In Mausrichtung zoomen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Sollen Modelle auf der Plattform so verschoben werden, dass sie sich nicht länger überschneiden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:382 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Stellen Sie sicher, dass die Modelle getrennt gehalten werden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Sollen Modelle auf der Plattform so nach unten verschoben werden, dass sie die Druckplatte berühren?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Setzt Modelle automatisch auf der Druckplatte ab" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Warnmeldung im G-Code-Reader anzeigen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Warnmeldung in G-Code-Reader" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Soll die Schicht in den Kompatibilitätsmodus gezwungen werden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Schichtenansicht Kompatibilitätsmodus erzwingen (Neustart erforderlich)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 msgctxt "@label" msgid "Opening and saving files" msgstr "Dateien öffnen und speichern" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Sollen Modelle an das Erstellungsvolumen angepasst werden, wenn sie zu groß sind?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:462 msgctxt "@option:check" msgid "Scale large models" msgstr "Große Modelle anpassen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Ein Modell kann extrem klein erscheinen, wenn seine Maßeinheit z. B. in Metern anstelle von Millimetern angegeben ist. Sollen diese Modelle hoch skaliert werden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:469 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Extrem kleine Modelle skalieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Soll ein Präfix anhand des Druckernamens automatisch zum Namen des Druckauftrags hinzugefügt werden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Geräte-Präfix zu Auftragsnamen hinzufügen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Soll beim Speichern einer Projektdatei eine Zusammenfassung angezeigt werden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:496 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Dialog Zusammenfassung beim Speichern eines Projekts anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Standardverhalten beim Öffnen einer Projektdatei" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:513 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Standardverhalten beim Öffnen einer Projektdatei: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:526 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 msgctxt "@option:openProject" msgid "Always ask" msgstr "Immer nachfragen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Immer als Projekt öffnen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:528 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always import models" msgstr "Modelle immer importieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:564 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Wenn Sie Änderungen für ein Profil vorgenommen haben und zu einem anderen Profil gewechselt sind, wird ein Dialog angezeigt, der hinterfragt, ob Sie Ihre Änderungen beibehalten möchten oder nicht; optional können Sie ein Standardverhalten wählen, sodass dieser Dialog nicht erneut angezeigt wird." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@label" msgid "Override Profile" msgstr "Profil überschreiben" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:622 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 msgctxt "@label" msgid "Privacy" msgstr "Privatsphäre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Soll Cura bei Programmstart nach Updates suchen?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:634 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Bei Start nach Updates suchen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Sollen anonyme Daten über Ihren Druck an Ultimaker gesendet werden? Beachten Sie, dass keine Modelle, IP-Adressen oder andere personenbezogene Daten gesendet oder gespeichert werden." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(Anonyme) Druckinformationen senden" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:441 msgctxt "@title:tab" msgid "Printers" msgstr "Drucker" @@ -2312,7 +2766,7 @@ msgid "Waiting for a printjob" msgstr "Warten auf einen Druckauftrag" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 msgctxt "@title:tab" msgid "Profiles" msgstr "Profile" @@ -2410,7 +2864,7 @@ msgid "Export Profile" msgstr "Profil exportieren" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 msgctxt "@title:tab" msgid "Materials" msgstr "Materialien" @@ -2442,14 +2896,14 @@ msgid "Import Material" msgstr "Material importieren" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "Material konnte nicht importiert werden %1: %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "Material wurde erfolgreich importiert %1" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2458,17 +2912,17 @@ msgid "Export Material" msgstr "Material exportieren" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "Exportieren des Materials nach %1: %2 schlug fehl" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "Material erfolgreich nach %1 exportiert" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:822 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 msgctxt "@title:window" msgid "Add Printer" msgstr "Drucker hinzufügen" @@ -2483,71 +2937,6 @@ msgctxt "@action:button" msgid "Add Printer" msgstr "Drucker hinzufügen" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:166 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Außenwand" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:167 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Innenwände" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:168 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Außenhaut" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:169 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Füllung" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:170 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Stützstruktur-Füllung" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:171 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Stützstruktur-Schnittstelle" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:172 -msgctxt "@tooltip" -msgid "Support" -msgstr "Stützstruktur" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:173 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Bewegungen" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:174 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Einzüge" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:175 -msgctxt "@tooltip" -msgid "Other" -msgstr "Sonstige" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:217 -msgctxt "@label" -msgid "00h 00min" -msgstr "00 Stunden 00 Minuten" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:270 -msgctxt "@label" -msgid "%1 m / ~ %2 g / ~ %4 %3" -msgstr "%1 m / ~ %2 g / ~ %4 %3" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:275 -msgctxt "@label" -msgid "%1 m / ~ %2 g" -msgstr "%1 m / ~ %2 g" - #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -2563,7 +2952,9 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "Cura wurde von Ultimaker B.V. in Zusammenarbeit mit der Community entwickelt.\nCura verwendet mit Stolz die folgenden Open Source-Projekte:" +msgstr "" +"Cura wurde von Ultimaker B.V. in Zusammenarbeit mit der Community entwickelt.\n" +"Cura verwendet mit Stolz die folgenden Open Source-Projekte:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -2655,32 +3046,48 @@ msgctxt "@label" msgid "SVG icons" msgstr "SVG-Symbole" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +msgctxt "@label" +msgid "Profile:" +msgstr "Profil:" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Einige Einstellungs-/Überschreibungswerte unterscheiden sich von den im Profil gespeicherten Werten.\n" +"\n" +"Klicken Sie, um den Profilmanager zu öffnen." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" msgid "Search..." msgstr "Suchen..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Werte für alle Extruder kopieren" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:405 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Diese Einstellung ausblenden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Diese Einstellung ausblenden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:419 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Diese Einstellung weiterhin anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:438 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Sichtbarkeit der Einstellung wird konfiguriert..." @@ -2691,7 +3098,10 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Einige ausgeblendete Einstellungen verwenden Werte, die von ihren normalen, berechneten Werten abweichen.\n\nKlicken Sie, um diese Einstellungen sichtbar zu machen." +msgstr "" +"Einige ausgeblendete Einstellungen verwenden Werte, die von ihren normalen, berechneten Werten abweichen.\n" +"\n" +"Klicken Sie, um diese Einstellungen sichtbar zu machen." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 msgctxt "@label Header for list of settings." @@ -2719,7 +3129,10 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Diese Einstellung hat einen vom Profil abweichenden Wert.\n\nKlicken Sie, um den Wert des Profils wiederherzustellen." +msgstr "" +"Diese Einstellung hat einen vom Profil abweichenden Wert.\n" +"\n" +"Klicken Sie, um den Wert des Profils wiederherzustellen." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 msgctxt "@label" @@ -2727,26 +3140,56 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Diese Einstellung wird normalerweise berechnet; aktuell ist jedoch ein Absolutwert eingestellt.\n\nKlicken Sie, um den berechneten Wert wiederherzustellen." +msgstr "" +"Diese Einstellung wird normalerweise berechnet; aktuell ist jedoch ein Absolutwert eingestellt.\n" +"\n" +"Klicken Sie, um den berechneten Wert wiederherzustellen." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Druckeinrichtung" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "Druckeinrichtung deaktiviert\nG-Code-Dateien können nicht geändert werden" +msgstr "" +"Druckeinrichtung deaktiviert\n" +"G-Code-Dateien können nicht geändert werden" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 +msgctxt "@label" +msgid "00h 00min" +msgstr "00 Stunden 00 Minuten" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +msgctxt "@tooltip" +msgid "Time information" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 +msgctxt "@description" +msgid "Print time" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +msgctxt "@label" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 +msgctxt "@label" +msgid "%1m / ~ %2g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" msgid "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." msgstr "Empfohlene Druckeinrichtung

Drucken mit den empfohlenen Einstellungen für den gewählten Drucker, das gewählte Material und die gewählte Qualität." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:460 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:481 msgctxt "@tooltip" msgid "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." msgstr "Benutzerdefinierte Druckeinrichtung

Druck mit Feineinstellung über jedem einzelnen Bereich des Schneidvorgangs." @@ -2796,81 +3239,87 @@ msgid "No printer connected" msgstr "Es ist kein Drucker verbunden" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" -msgid "Hotend" -msgstr "Heißes Ende" +msgid "Extruder" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:119 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 +msgctxt "@tooltip" +msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "Die aktuelle Temperatur dieses Extruders." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Die Farbe des Materials in diesem Extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Das Material in diesem Extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Die in diesem Extruder eingesetzte Düse." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:249 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 msgctxt "@label" msgid "Build plate" msgstr "Druckbett" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:278 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "Die Zieltemperatur des heizbaren Betts. Das Bett wird auf diese Temperatur aufgeheizt oder abgekühlt. Wenn der Wert 0 beträgt, wird die Bettheizung ausgeschaltet." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:310 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:343 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "Die aktuelle Temperatur des beheizten Betts." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:422 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "Die Temperatur, auf die das Bett vorgeheizt wird." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Abbrechen" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button" msgid "Pre-heat" msgstr "Vorheizen" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:610 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Heizen Sie das Bett vor Druckbeginn auf. Sie können Ihren Druck während des Aufheizens weiter anpassen und müssen nicht warten, bis das Bett aufgeheizt ist, wenn Sie druckbereit sind." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:677 msgctxt "@label" msgid "Active print" msgstr "Aktiver Druck" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:648 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 msgctxt "@label" msgid "Job Name" msgstr "Name des Auftrags" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 msgctxt "@label" msgid "Printing Time" msgstr "Druckzeit" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:660 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 msgctxt "@label" msgid "Estimated time left" msgstr "Geschätzte verbleibende Zeit" @@ -3061,53 +3510,53 @@ msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Sichtbarkeit einstellen wird konfiguriert..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Bitte laden Sie ein 3D-Modell" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Bereit zum Slicen (Schneiden)" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Das Slicing läuft..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Bereit zum %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Slicing nicht möglich" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Slicing ist nicht verfügbar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Vorbereiten" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Abbrechen" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:288 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Wählen Sie das aktive Ausgabegerät" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 msgctxt "@title:window" msgid "Open file(s)" msgstr "Datei(en) öffnen" @@ -3199,42 +3648,37 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Hilfe" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 msgctxt "@action:button" msgid "Open File" msgstr "Datei öffnen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:428 -msgctxt "@action:button" -msgid "View Mode" -msgstr "Ansichtsmodus" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "Settings" msgstr "Einstellungen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 msgctxt "@title:window" msgid "New project" msgstr "Neues Projekt" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:532 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "Möchten Sie wirklich ein neues Projekt beginnen? Damit werden das Druckbett und alle nicht gespeicherten Einstellungen gelöscht." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:750 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:694 msgctxt "@window:title" msgid "Install Plugin" msgstr "Plugin installieren" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:757 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 msgctxt "@title:window" msgid "Open File(s)" msgstr "Datei(en) öffnen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:760 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Es wurden eine oder mehrere G-Code-Datei(en) innerhalb der von Ihnen gewählten Dateien gefunden. Sie können nur eine G-Code-Datei auf einmal öffnen. Wenn Sie eine G-Code-Datei öffnen möchten wählen Sie bitte nur eine Datei." @@ -3259,102 +3703,87 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Projektzusammenfassung beim Speichern nicht erneut anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 +msgctxt "@action:button" +msgid "Save" +msgstr "Speichern" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 msgctxt "@title:tab" msgid "Prepare" msgstr "Vorbereiten" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" -msgid "Print" -msgstr "Drucken" +msgid "Monitor" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +msgctxt "@label" +msgid "Layer Height" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +msgctxt "@label" +msgid "Print Speed" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +msgctxt "@label" +msgid "Slower" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +msgctxt "@label" +msgid "Faster" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" msgid "Infill" msgstr "Füllung" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "0%" -msgstr "0 %" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:199 -msgctxt "@label" -msgid "Empty infill will leave your model hollow with low strength." -msgstr "Bei fehlender Füllung bleibt Ihr Modell hohl, mit einer geringen Festigkeit." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:203 -msgctxt "@label" -msgid "20%" -msgstr "20 %" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:210 -msgctxt "@label" -msgid "Light (20%) infill will give your model an average strength." -msgstr "Eine dünne (20 %) Füllung gibt Ihrem Modell eine durchschnittliche Festigkeit." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:214 -msgctxt "@label" -msgid "50%" -msgstr "50 %" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:221 -msgctxt "@label" -msgid "Dense (50%) infill will give your model an above average strength." -msgstr "Eine dichte (50 %) Füllung gibt Ihrem Modell eine überdurchschnittliche Festigkeit" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:225 -msgctxt "@label" -msgid "100%" -msgstr "100 %" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:232 -msgctxt "@label" -msgid "Solid (100%) infill will make your model completely solid." -msgstr "Eine solide (100 %) Füllung macht Ihr Modell vollständig massiv." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:236 -msgctxt "@label" -msgid "Gradual" -msgstr "Graduell" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:244 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Die graduelle Füllung steigert die Menge der Füllung nach oben hin schrittweise." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:267 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 +msgctxt "@label" +msgid "Enable gradual" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Generate Support" msgstr "Stützstruktur generieren" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Damit werden Strukturen zur Unterstützung von Modellteilen mit Überhängen generiert. Ohne diese Strukturen würden solche Teile während des Druckvorgangs zusammenfallen." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:718 msgctxt "@label" msgid "Support Extruder" msgstr "Extruder für Stützstruktur" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:391 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Wählen Sie, welcher Extruder für die Unterstützung verwendet wird. Dient zum Konstruieren von Stützstrukturen unter dem Modell, damit dieses nicht absinkt oder frei schwebend gedruckt wird." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:796 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Druckplattenhaftung" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:462 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Drucken eines Brim- oder Raft-Elements aktivieren. Es wird ein flacher Bereich rund um oder unter Ihrem Objekt hinzugefügt, das im Anschluss leicht abgeschnitten werden kann. " -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:515 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:883 msgctxt "@label" msgid "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides" msgstr "Sie benötigen Hilfe für Ihre Drucke?
Lesen Sie die Ultimaker Anleitungen für Fehlerbehebung>" @@ -3391,30 +3820,21 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Engine-Protokoll" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:193 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:236 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +msgctxt "@label" +msgid "Check material compatibility" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Klicken Sie, um die Materialkompatibilität auf Ultimaker.com zu prüfen." -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:325 -msgctxt "@label" -msgid "Profile:" -msgstr "Profil:" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "Einige Einstellungs-/Überschreibungswerte unterscheiden sich von den im Profil gespeicherten Werten.\n\nKlicken Sie, um den Profilmanager zu öffnen." - #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -3465,6 +3885,16 @@ msgctxt "name" msgid "God Mode" msgstr "Gott-Modus" +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +msgstr "" + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "" + #: ChangeLogPlugin/plugin.json msgctxt "description" msgid "Shows changes since latest checked version." @@ -3495,16 +3925,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB-Drucken" -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing X3G files" -msgstr "Bietet Unterstützung für das Schreiben von X3G-Dateien" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3G Writer" -msgstr "X3G-Writer" - #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -3525,6 +3945,21 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3-Netzwerkverbindung" +#: CuraPrintClusterUpload/plugin.json +msgctxt "name" +msgid "UM3 Network Connection (Cluster)" +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "" + #: CuraSolidWorksPlugin/plugin.json msgctxt "description" msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" @@ -3615,6 +4050,16 @@ msgctxt "name" msgid "Version Upgrade 2.5 to 2.6" msgstr "Upgrade von Version 2.5 auf 2.6" +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -3755,6 +4200,189 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura-Profil-Reader" +#~ msgctxt "@item:inlistbox" +#~ msgid "X-Ray" +#~ msgstr "Röntgen" + +#~ msgctxt "@label" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@info:whatsthis" +#~ msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +#~ msgstr "Akzeptiert den G-Code und sendet diesen über WiFi an eine Doodle3D WiFi-Box." + +#~ msgctxt "@item:inmenu" +#~ msgid "Doodle3D printing" +#~ msgstr "Doodle3D-Drucken" + +#~ msgctxt "@action:button" +#~ msgid "Print with Doodle3D" +#~ msgstr "Mit Doodle3D drucken" + +#~ msgctxt "@info:tooltip" +#~ msgid "Print with " +#~ msgstr "Drucken mit" + +#~ msgctxt "@title:menu" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Enable Scan devices..." +#~ msgstr "Scan-Geräte aktivieren..." + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3D-Datei" + +#~ msgctxt "@info:progress" +#~ msgid "Saving to Removable Drive {0}" +#~ msgstr "Wird auf Wechseldatenträger gespeichert {0}" + +#~ msgctxt "@info:status" +#~ msgid "Could not save to {0}: {1}" +#~ msgstr "Konnte nicht als {0} gespeichert werden: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" +#~ msgstr "Beachten Sie bitte, dass Sie Ihre SolidWorks Datei manuell erneut öffnen müssen! Das erneute Laden des Modells funktioniert nicht!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Layers" +#~ msgstr "Schichten" + +#~ msgid "Browse plugins" +#~ msgstr "Plugins durchsuchen" + +#~ msgctxt "@item:inmenu" +#~ msgid "Solid" +#~ msgstr "Solide" + +#~ msgctxt "@label" +#~ msgid "The file {0} already exists. Are you sure you want to overwrite it?" +#~ msgstr "Die Datei {0} ist bereits vorhanden. Soll die Datei wirklich überschrieben werden?" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: {1}" +#~ msgstr "Export des Profils nach {0} fehlgeschlagen: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: Writer plugin reported failure." +#~ msgstr "Export des Profils nach {0} fehlgeschlagen: Fehlermeldung von Writer-Plugin" + +#~ msgctxt "@info:status" +#~ msgid "Exported profile to {0}" +#~ msgstr "Profil wurde nach {0} exportiert" + +#~ msgctxt "@info:status" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Import des Profils aus Datei {0} fehlgeschlagen: {1}" + +#~ msgctxt "@title:window" +#~ msgid "Doodle3D Settings" +#~ msgstr "Doodle3D-Einstellungen" + +#~ msgctxt "@title:window" +#~ msgid "Print to: %1" +#~ msgstr "Drucken auf: %1" + +#~ msgctxt "@label" +#~ msgid "Extruder Temperature: %1/%2°C" +#~ msgstr "Extruder-Temperatur %1/%2 °C" + +#~ msgctxt "@label" +#~ msgid "Bed Temperature: %1/%2°C" +#~ msgstr "Bett-Temperatur %1/%2 °C" + +#~ msgctxt "@label" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "@label" +#~ msgid "View Mode: Layers" +#~ msgstr "Ansichtsmodus: Schichten" + +#~ msgctxt "@info:status" +#~ msgid "Could not import material %1: %2" +#~ msgstr "Material konnte nicht importiert werden %1: %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully imported material %1" +#~ msgstr "Material wurde erfolgreich importiert %1" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export material to %1: %2" +#~ msgstr "Exportieren des Materials nach %1: %2 schlug fehl" + +#~ msgctxt "@info:status" +#~ msgid "Successfully exported material to %1" +#~ msgstr "Material erfolgreich nach %1 exportiert" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g / ~ %4 %3" +#~ msgstr "%1 m / ~ %2 g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g" +#~ msgstr "%1 m / ~ %2 g" + +#~ msgctxt "@label" +#~ msgid "Hotend" +#~ msgstr "Heißes Ende" + +#~ msgctxt "@action:button" +#~ msgid "View Mode" +#~ msgstr "Ansichtsmodus" + +#~ msgctxt "@title:tab" +#~ msgid "Print" +#~ msgstr "Drucken" + +#~ msgctxt "@label" +#~ msgid "0%" +#~ msgstr "0 %" + +#~ msgctxt "@label" +#~ msgid "Empty infill will leave your model hollow with low strength." +#~ msgstr "Bei fehlender Füllung bleibt Ihr Modell hohl, mit einer geringen Festigkeit." + +#~ msgctxt "@label" +#~ msgid "20%" +#~ msgstr "20 %" + +#~ msgctxt "@label" +#~ msgid "Light (20%) infill will give your model an average strength." +#~ msgstr "Eine dünne (20 %) Füllung gibt Ihrem Modell eine durchschnittliche Festigkeit." + +#~ msgctxt "@label" +#~ msgid "50%" +#~ msgstr "50 %" + +#~ msgctxt "@label" +#~ msgid "Dense (50%) infill will give your model an above average strength." +#~ msgstr "Eine dichte (50 %) Füllung gibt Ihrem Modell eine überdurchschnittliche Festigkeit" + +#~ msgctxt "@label" +#~ msgid "100%" +#~ msgstr "100 %" + +#~ msgctxt "@label" +#~ msgid "Solid (100%) infill will make your model completely solid." +#~ msgstr "Eine solide (100 %) Füllung macht Ihr Modell vollständig massiv." + +#~ msgctxt "@label" +#~ msgid "Gradual" +#~ msgstr "Graduell" + +#~ msgctxt "description" +#~ msgid "Provides support for writing X3G files" +#~ msgstr "Bietet Unterstützung für das Schreiben von X3G-Dateien" + +#~ msgctxt "name" +#~ msgid "X3G Writer" +#~ msgstr "X3G-Writer" + #~ msgctxt "@label" #~ msgid "Machine Settings action" #~ msgstr "Beschreibung Geräteeinstellungen" @@ -4335,4 +4963,4 @@ msgstr "Cura-Profil-Reader" #~ msgctxt "@label:" #~ msgid "Print Again" -#~ msgstr "Erneut drucken" \ No newline at end of file +#~ msgstr "Erneut drucken" diff --git a/resources/i18n/de_DE/fdmextruder.def.json.po b/resources/i18n/de_DE/fdmextruder.def.json.po index 10944ce277..72980753d2 100644 --- a/resources/i18n/de_DE/fdmextruder.def.json.po +++ b/resources/i18n/de_DE/fdmextruder.def.json.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -194,4 +194,4 @@ msgstr "Y-Position Extruder-Einzug" #: fdmextruder.def.json msgctxt "extruder_prime_pos_y description" msgid "The Y coordinate of the position where the nozzle primes at the start of printing." -msgstr "Die Y-Koordinate der Position, an der die Düse am Druckbeginn einzieht." \ No newline at end of file +msgstr "Die Y-Koordinate der Position, an der die Düse am Druckbeginn einzieht." diff --git a/resources/i18n/de_DE/fdmprinter.def.json.po b/resources/i18n/de_DE/fdmprinter.def.json.po index a1776d3472..9097323729 100644 --- a/resources/i18n/de_DE/fdmprinter.def.json.po +++ b/resources/i18n/de_DE/fdmprinter.def.json.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -56,7 +56,9 @@ msgctxt "machine_start_gcode description" msgid "" "Gcode commands to be executed at the very start - separated by \n" "." -msgstr "Gcode-Befehle, die zu Beginn ausgeführt werden sollen – getrennt durch \n." +msgstr "" +"Gcode-Befehle, die zu Beginn ausgeführt werden sollen – getrennt durch \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -68,7 +70,9 @@ msgctxt "machine_end_gcode description" msgid "" "Gcode commands to be executed at the very end - separated by \n" "." -msgstr "Gcode-Befehle, die Am Ende ausgeführt werden sollen – getrennt durch \n." +msgstr "" +"Gcode-Befehle, die Am Ende ausgeführt werden sollen – getrennt durch \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -755,16 +759,6 @@ msgctxt "shell description" msgid "Shell" msgstr "Gehäuse" -#: fdmprinter.def.json -msgctxt "wall_extruder_nr label" -msgid "Wall Extruder" -msgstr "Extruder für Wand" - -#: fdmprinter.def.json -msgctxt "wall_extruder_nr description" -msgid "The extruder train used for printing the walls. This is used in multi-extrusion." -msgstr "Die für das Drucken der Wände verwendete Extruder-Einheit. Diese wird für die Mehrfach-Extrusion benutzt." - #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" msgid "Outer Wall Extruder" @@ -1125,6 +1119,11 @@ msgctxt "z_seam_type option random" msgid "Random" msgstr "Zufall" +#: fdmprinter.def.json +msgctxt "z_seam_type option sharpest_corner" +msgid "Sharpest Corner" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1145,6 +1144,36 @@ msgctxt "z_seam_y description" msgid "The Y coordinate of the position near where to start printing each part in a layer." msgstr "Die Y-Koordinate der Position, neben der der Druck jedes Teils in einer Schicht begonnen wird." +#: fdmprinter.def.json +msgctxt "z_seam_corner label" +msgid "Seam Corner Preference" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner description" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_none" +msgid "None" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_inner" +msgid "Hide Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_outer" +msgid "Expose Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_any" +msgid "Hide or Expose Seam" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1165,6 +1194,16 @@ msgctxt "skin_no_small_gaps_heuristic description" msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." msgstr "Wenn das Modell schmale vertikale Lücken hat, kann etwa 5 % zusätzliche Rechenzeit aufgewendet werden, um eine obere und untere Außenhaut in diesen engen Räumen zu generieren. In diesem Fall deaktivieren Sie die Einstellung." +#: fdmprinter.def.json +msgctxt "skin_outline_count label" +msgid "Extra Skin Wall Count" +msgstr "Linienanzahl der zusätzlichen Außenhaut" + +#: fdmprinter.def.json +msgctxt "skin_outline_count description" +msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." +msgstr "Der äußerste Teil des oberen/unteren Musters wird durch eine Anzahl von konzentrischen Linien ersetzt. Die Verwendung von ein oder zwei Linien verbessert Dächer, die auf Füllmaterial beginnen." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1212,8 +1251,8 @@ msgstr "Füllmuster" #: fdmprinter.def.json msgctxt "infill_pattern description" -msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "Das Muster des Füllmaterials des Drucks. Die Linien- und Zickzackfüllmethode wechseln nach jeder Schicht die Richtung, um Materialkosten zu reduzieren. Die Gitter-, Dreieck- Würfel-, Tetrahedral- und konzentrischen Muster werden in jeder Schicht vollständig gedruckt. Würfel- und Tetrahedral-Füllungen wechseln mit jeder Schicht, um eine gleichmäßigere Verteilung der Stärke in allen Richtungen zu erzielen." +msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1242,8 +1281,13 @@ msgstr "Würfel-Unterbereich" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" -msgid "Tetrahedral" -msgstr "Tetrahedral" +msgid "Octet" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option quarter_cubic" +msgid "Quarter Cubic" +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1260,6 +1304,26 @@ msgctxt "infill_pattern option zigzag" msgid "Zig Zag" msgstr "Zickzack" +#: fdmprinter.def.json +msgctxt "infill_pattern option cross" +msgid "Cross" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross_3d" +msgid "Cross 3D" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill label" +msgid "Connect Infill Lines" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill description" +msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" @@ -1381,34 +1445,34 @@ msgid "Don't generate areas of infill smaller than this (use skin instead)." msgstr "Keine Füllungsbereiche generieren, die kleiner als dieser sind (stattdessen Außenhaut verwenden). " #: fdmprinter.def.json -msgctxt "expand_skins_into_infill label" -msgid "Expand Skins Into Infill" -msgstr "Außenhaut in Füllung expandieren" +msgctxt "skin_preshrink label" +msgid "Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_skins_into_infill description" -msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." -msgstr "Expandieren Sie Außenhautbereiche der oberen und/oder unteren Außenhaut auf flache Flächen. Standardmäßig endet die Außenhaut unter den Wandlinien, die die Füllung umgeben, allerdings kann dies bei einer geringen Dichte der Füllung zu Lochbildung führen. Diese Einstellung erstreckt die Außenhaut über die Wandlinien hinaus, sodass die Füllung auf der nächsten Schicht auf der Außenhaut verbleibt." +msgctxt "skin_preshrink description" +msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins label" -msgid "Expand Top Skins Into Infill" -msgstr "Außenhaut oben in Füllung expandieren" +msgctxt "top_skin_preshrink label" +msgid "Top Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins description" -msgid "Expand the top skin areas (areas with air above) so that they support infill above." -msgstr "Expandiert die oberen Außenhautbereiche (Bereiche mit Luft darüber), sodass sie die Füllung darüber stützen." +msgctxt "top_skin_preshrink description" +msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins label" -msgid "Expand Bottom Skins Into Infill" -msgstr "Außenhaut unten in Füllung expandieren" +msgctxt "bottom_skin_preshrink label" +msgid "Bottom Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins description" -msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." -msgstr "Expandiert die Außenhautbodenbereiche (Bereiche mit Luft darunter), sodass sie durch die Füllungsschichten darüber und darunter verankert werden." +msgctxt "bottom_skin_preshrink description" +msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1417,8 +1481,28 @@ msgstr "Expansionsdistanz Außenhaut" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" -msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." -msgstr "Bezeichnet die Distanz der Expansion der Außenhaut in die Füllung. Die Standarddistanz ist ausreichend, um den Spalt zwischen den Füllungslinien zu füllen und verhindert, dass Löcher in der Außenhaut auftreten, wo sie auf die Wand trifft, wenn die Dichte der Füllung gering ist. Eine kleinere Distanz ist oftmals ausreichend." +msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance label" +msgid "Top Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance description" +msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance label" +msgid "Bottom Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance description" +msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." +msgstr "" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -1800,16 +1884,6 @@ msgctxt "speed_topbottom description" msgid "The speed at which top/bottom layers are printed." msgstr "Die Geschwindigkeit, mit der die oberen/unteren Schichten gedruckt werden." -#: fdmprinter.def.json -msgctxt "speed_ironing label" -msgid "Ironing Speed" -msgstr "Glättungsgeschwindigkeit" - -#: fdmprinter.def.json -msgctxt "speed_ironing description" -msgid "The speed at which to pass over the top surface." -msgstr "Die Geschwindigkeit, mit der über die Oberfläche gegangen wird." - #: fdmprinter.def.json msgctxt "speed_support label" msgid "Support Speed" @@ -2040,16 +2114,6 @@ msgctxt "acceleration_topbottom description" msgid "The acceleration with which top/bottom layers are printed." msgstr "Die Beschleunigung, mit der die oberen/unteren Schichten gedruckt werden." -#: fdmprinter.def.json -msgctxt "acceleration_ironing label" -msgid "Ironing Acceleration" -msgstr "Beschleunigung Glättung" - -#: fdmprinter.def.json -msgctxt "acceleration_ironing description" -msgid "The acceleration with which ironing is performed." -msgstr "Die Beschleunigung, mit der das Glätten erfolgt." - #: fdmprinter.def.json msgctxt "acceleration_support label" msgid "Support Acceleration" @@ -2240,16 +2304,6 @@ msgctxt "jerk_topbottom description" msgid "The maximum instantaneous velocity change with which top/bottom layers are printed." msgstr "Die maximale unmittelbare Geschwindigkeitsänderung, mit der die oberen/unteren Schichten gedruckt werden." -#: fdmprinter.def.json -msgctxt "jerk_ironing label" -msgid "Ironing Jerk" -msgstr "Ruckfunktion glätten" - -#: fdmprinter.def.json -msgctxt "jerk_ironing description" -msgid "The maximum instantaneous velocity change while performing ironing." -msgstr "Die maximale unmittelbare Geschwindigkeitsänderung während des Glättens." - #: fdmprinter.def.json msgctxt "jerk_support label" msgid "Support Jerk" @@ -2765,6 +2819,11 @@ msgctxt "support_pattern option zigzag" msgid "Zig Zag" msgstr "Zickzack" +#: fdmprinter.def.json +msgctxt "support_pattern option cross" +msgid "Cross" +msgstr "" + #: fdmprinter.def.json msgctxt "support_connect_zigzags label" msgid "Connect Support ZigZags" @@ -2777,23 +2836,33 @@ msgstr "Die Zickzack-Elemente werden verbunden. Dies erhöht die Stärke der Zic #: fdmprinter.def.json msgctxt "support_skip_some_zags label" -msgid "Skip Some ZigZags Connections" -msgstr "Einige Zickzack-Verbindungen überspringen" +msgid "Break Up Support In Chunks" +msgstr "" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" -msgid "Skip some ZigZags connections to make the support structure easier to break." -msgstr "Überspringen Sie einige Zickzack-Verbindungen, um das Brechen der Stützstruktur einfacher zu machen." +msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm description" +msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count label" -msgid "ZigZag Connection Skip Count" -msgstr "Zickzack-Verbindung Zähler überspringen" +msgid "Support Chunk Line Count" +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" -msgid "Skip one in every N connection lines to make the support structure easier to break." -msgstr "Überspringen Sie eine in jeder N-Verbindungslinie, um das Brechen der Stützstruktur einfacher zu machen." +msgid "Skip one in every N connection lines to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3335,7 +3404,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance, multiple skirt lines will extend outwards from this distance." -msgstr "Der horizontale Abstand zwischen dem Skirt und der ersten Schicht des Drucks.\nEs handelt sich dabei um den Mindestabstand. Ab diesem Abstand werden Skirt-Linien in äußerer Richtung angebracht." +msgstr "" +"Der horizontale Abstand zwischen dem Skirt und der ersten Schicht des Drucks.\n" +"Es handelt sich dabei um den Mindestabstand. Ab diesem Abstand werden Skirt-Linien in äußerer Richtung angebracht." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3377,6 +3448,26 @@ msgctxt "brim_outside_only description" msgid "Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much." msgstr "Brim nur an der Außenseite des Modells drucken. Damit reduziert sich die Anzahl der Brims, die Sie später entfernen müssen, während die Druckbetthaftung nicht signifikant eingeschränkt wird." +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 label" +msgid "Initial Layer Z Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 description" +msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers label" +msgid "Z Offset Taper Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers description" +msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3387,6 +3478,16 @@ msgctxt "raft_margin description" msgid "If the raft is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print." msgstr "Wenn die Raft-Funktion aktiviert ist, gibt es einen zusätzlichen Raft-Bereich um das Modell herum, für das ein Raft erstellt wird. Bei einem größeren Abstand wird ein kräftigeres Raft-Element hergestellt, wobei jedoch mehr Material verbraucht wird und weniger Platz für das gedruckte Modell verbleibt." +#: fdmprinter.def.json +msgctxt "raft_smoothing label" +msgid "Raft Smoothing" +msgstr "" + +#: fdmprinter.def.json +msgctxt "raft_smoothing description" +msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_airgap label" msgid "Raft Air Gap" @@ -4062,6 +4163,16 @@ msgctxt "smooth_spiralized_contours description" msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." msgstr "Glättet die spiralförmigen Konturen, um die Sichtbarkeit der Z-Naht zu reduzieren (die Z-Naht sollte auf dem Druck kaum sichtbar sein, ist jedoch in der Schichtenansicht erkennbar). Beachten Sie, dass das Glätten dazu neigt, feine Oberflächendetails zu verwischen." +#: fdmprinter.def.json +msgctxt "relative_extrusion label" +msgid "Relative Extrusion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "relative_extrusion description" +msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." +msgstr "" + #: fdmprinter.def.json msgctxt "experimental label" msgid "Experimental" @@ -4072,6 +4183,16 @@ msgctxt "experimental description" msgid "experimental!" msgstr "experimentell!" +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "" + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4182,16 +4303,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Die Geschwindigkeit, mit der die Bewegung während des Coasting erfolgt, in Relation zur Geschwindigkeit des Extrusionswegs. Ein Wert leicht unter 100 % wird empfohlen, da während der Coasting-Bewegung der Druck in den Bowden-Röhren abfällt." -#: fdmprinter.def.json -msgctxt "skin_outline_count label" -msgid "Extra Skin Wall Count" -msgstr "Linienanzahl der zusätzlichen Außenhaut" - -#: fdmprinter.def.json -msgctxt "skin_outline_count description" -msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." -msgstr "Der äußerste Teil des oberen/unteren Musters wird durch eine Anzahl von konzentrischen Linien ersetzt. Die Verwendung von ein oder zwei Linien verbessert Dächer, die auf Füllmaterial beginnen." - #: fdmprinter.def.json msgctxt "skin_alternate_rotation label" msgid "Alternate Skin Rotation" @@ -4202,6 +4313,26 @@ msgctxt "skin_alternate_rotation description" msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." msgstr "Die Richtung, in welcher die oberen/unteren Schichten gedruckt werden, wird abgewechselt. Normalerweise werden diese nur diagonal gedruckt. Diese Einstellung fügt die Nur-X- und Nur-Y-Richtung zu." +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size label" +msgid "Cross 3D Pocket Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size description" +msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly label" +msgid "Alternate Cross 3D Pockets" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly description" +msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." +msgstr "" + #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" msgid "Spaghetti Infill" @@ -4502,7 +4633,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "Die Strecke einer Aufwärtsbewegung, die mit halber Geschwindigkeit extrudiert wird.\nDies kann zu einer besseren Haftung an vorhergehenden Schichten führen, während gleichzeitig ein Überhitzen des Materials in diesen Schichten vermieden wird. Dies gilt nur für das Drucken mit Drahtstruktur." +msgstr "" +"Die Strecke einer Aufwärtsbewegung, die mit halber Geschwindigkeit extrudiert wird.\n" +"Dies kann zu einer besseren Haftung an vorhergehenden Schichten führen, während gleichzeitig ein Überhitzen des Materials in diesen Schichten vermieden wird. Dies gilt nur für das Drucken mit Drahtstruktur." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -4619,6 +4752,16 @@ msgctxt "ironing_enabled description" msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." msgstr "Gehen Sie ein weiteres Mal über die Oberfläche, jedoch ohne Extrusionsmaterial. Damit wird der Kunststoff auf der Oberfläche weiter geschmolzen, was zu einer glatteren Oberfläche führt." +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer label" +msgid "Iron Only Highest Layer" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer description" +msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." +msgstr "" + #: fdmprinter.def.json msgctxt "ironing_pattern label" msgid "Ironing Pattern" @@ -4669,6 +4812,36 @@ msgctxt "ironing_inset description" msgid "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print." msgstr "Eine Distanz, die von den Kanten des Modells einzuhalten ist. Die Glättung des gesamten Weges zur Kante des Mesh führt möglicherweise zu einer gezackten Kante Ihres Drucks." +#: fdmprinter.def.json +msgctxt "speed_ironing label" +msgid "Ironing Speed" +msgstr "Glättungsgeschwindigkeit" + +#: fdmprinter.def.json +msgctxt "speed_ironing description" +msgid "The speed at which to pass over the top surface." +msgstr "Die Geschwindigkeit, mit der über die Oberfläche gegangen wird." + +#: fdmprinter.def.json +msgctxt "acceleration_ironing label" +msgid "Ironing Acceleration" +msgstr "Beschleunigung Glättung" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing description" +msgid "The acceleration with which ironing is performed." +msgstr "Die Beschleunigung, mit der das Glätten erfolgt." + +#: fdmprinter.def.json +msgctxt "jerk_ironing label" +msgid "Ironing Jerk" +msgstr "Ruckfunktion glätten" + +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "Die maximale unmittelbare Geschwindigkeitsänderung während des Glättens." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4729,6 +4902,66 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Transformationsmatrix, die beim Laden aus der Datei auf das Modell angewandt wird." +#~ msgctxt "wall_extruder_nr label" +#~ msgid "Wall Extruder" +#~ msgstr "Extruder für Wand" + +#~ msgctxt "wall_extruder_nr description" +#~ msgid "The extruder train used for printing the walls. This is used in multi-extrusion." +#~ msgstr "Die für das Drucken der Wände verwendete Extruder-Einheit. Diese wird für die Mehrfach-Extrusion benutzt." + +#~ msgctxt "infill_pattern description" +#~ msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." +#~ msgstr "Das Muster des Füllmaterials des Drucks. Die Linien- und Zickzackfüllmethode wechseln nach jeder Schicht die Richtung, um Materialkosten zu reduzieren. Die Gitter-, Dreieck- Würfel-, Tetrahedral- und konzentrischen Muster werden in jeder Schicht vollständig gedruckt. Würfel- und Tetrahedral-Füllungen wechseln mit jeder Schicht, um eine gleichmäßigere Verteilung der Stärke in allen Richtungen zu erzielen." + +#~ msgctxt "infill_pattern option tetrahedral" +#~ msgid "Tetrahedral" +#~ msgstr "Tetrahedral" + +#~ msgctxt "expand_skins_into_infill label" +#~ msgid "Expand Skins Into Infill" +#~ msgstr "Außenhaut in Füllung expandieren" + +#~ msgctxt "expand_skins_into_infill description" +#~ msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." +#~ msgstr "Expandieren Sie Außenhautbereiche der oberen und/oder unteren Außenhaut auf flache Flächen. Standardmäßig endet die Außenhaut unter den Wandlinien, die die Füllung umgeben, allerdings kann dies bei einer geringen Dichte der Füllung zu Lochbildung führen. Diese Einstellung erstreckt die Außenhaut über die Wandlinien hinaus, sodass die Füllung auf der nächsten Schicht auf der Außenhaut verbleibt." + +#~ msgctxt "expand_upper_skins label" +#~ msgid "Expand Top Skins Into Infill" +#~ msgstr "Außenhaut oben in Füllung expandieren" + +#~ msgctxt "expand_upper_skins description" +#~ msgid "Expand the top skin areas (areas with air above) so that they support infill above." +#~ msgstr "Expandiert die oberen Außenhautbereiche (Bereiche mit Luft darüber), sodass sie die Füllung darüber stützen." + +#~ msgctxt "expand_lower_skins label" +#~ msgid "Expand Bottom Skins Into Infill" +#~ msgstr "Außenhaut unten in Füllung expandieren" + +#~ msgctxt "expand_lower_skins description" +#~ msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." +#~ msgstr "Expandiert die Außenhautbodenbereiche (Bereiche mit Luft darunter), sodass sie durch die Füllungsschichten darüber und darunter verankert werden." + +#~ msgctxt "expand_skins_expand_distance description" +#~ msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." +#~ msgstr "Bezeichnet die Distanz der Expansion der Außenhaut in die Füllung. Die Standarddistanz ist ausreichend, um den Spalt zwischen den Füllungslinien zu füllen und verhindert, dass Löcher in der Außenhaut auftreten, wo sie auf die Wand trifft, wenn die Dichte der Füllung gering ist. Eine kleinere Distanz ist oftmals ausreichend." + +#~ msgctxt "support_skip_some_zags label" +#~ msgid "Skip Some ZigZags Connections" +#~ msgstr "Einige Zickzack-Verbindungen überspringen" + +#~ msgctxt "support_skip_some_zags description" +#~ msgid "Skip some ZigZags connections to make the support structure easier to break." +#~ msgstr "Überspringen Sie einige Zickzack-Verbindungen, um das Brechen der Stützstruktur einfacher zu machen." + +#~ msgctxt "support_zag_skip_count label" +#~ msgid "ZigZag Connection Skip Count" +#~ msgstr "Zickzack-Verbindung Zähler überspringen" + +#~ msgctxt "support_zag_skip_count description" +#~ msgid "Skip one in every N connection lines to make the support structure easier to break." +#~ msgstr "Überspringen Sie eine in jeder N-Verbindungslinie, um das Brechen der Stützstruktur einfacher zu machen." + #~ msgctxt "machine_show_variants label" #~ msgid "Show machine variants" #~ msgstr "Anzeige der Gerätevarianten" @@ -4891,4 +5124,4 @@ msgstr "Transformationsmatrix, die beim Laden aus der Datei auf das Modell angew #~ msgctxt "multiple_mesh_overlap label" #~ msgid "Dual Extrusion Overlap" -#~ msgstr "Überlappung duale Extrusion" \ No newline at end of file +#~ msgstr "Überlappung duale Extrusion" diff --git a/resources/i18n/es_ES/cura.po b/resources/i18n/es_ES/cura.po index cd8fd41081..06f57ca9c9 100644 --- a/resources/i18n/es_ES/cura.po +++ b/resources/i18n/es_ES/cura.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -16,15 +16,15 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:28 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" msgstr "Ajustes de la máquina" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" -msgid "X-Ray" -msgstr "Rayos X" +msgid "X-Ray view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -36,40 +36,69 @@ msgctxt "@item:inlistbox" msgid "GCode File" msgstr "Archivo GCode" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:13 -msgctxt "@label" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:17 -msgctxt "@info:whatsthis" -msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "Acepta códigos GCode y los envía a un enrutador Doodle3D por medio de wifi." - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:36 -msgctxt "@item:inmenu" -msgid "Doodle3D printing" -msgstr "Impresión Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:37 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" -msgid "Print with Doodle3D" -msgstr "Imprimir con Doodle3D" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:38 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 +msgctxt "@properties:tooltip" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 +msgctxt "@info:status" +msgid "Sending data to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 +msgctxt "@info:status" +msgid "Unable to send data to Doodle3D Connect. Is another job still active?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 +msgctxt "@info:status" +msgid "File sent to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect.." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" -msgid "Print with " -msgstr "Imprimir con" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:49 -msgctxt "@title:menu" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:50 -msgctxt "@item:inlistbox" -msgid "Enable Scan devices..." -msgstr "Habilitar dispositivos de digitalización..." +msgid "Open the Doodle3D Connect web interface" +msgstr "" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -111,16 +140,36 @@ msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "No se puede iniciar un trabajo nuevo porque la impresora está ocupada o no está conectada." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +msgctxt "@info:title" +msgid "Print Details" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "Esta impresora no es compatible con la impresión USB porque utiliza el tipo UltiGCode." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "No se puede iniciar un trabajo nuevo porque la impresora no es compatible con la impresión USB." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:909 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 +msgctxt "@info:title" +msgid "Warning" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." @@ -132,10 +181,10 @@ msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "No se pudo encontrar el firmware necesario para la impresora en %s." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:14 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "Archivo X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +msgctxt "@info:title" +msgid "Printer Firmware" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -150,47 +199,79 @@ msgstr "Guardar en unidad extraíble {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 #, python-brace-format -msgctxt "@info:progress" +msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "Guardando en unidad extraíble {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +msgctxt "@info:title" +msgid "Saving" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "No se pudo guardar en {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format -msgctxt "@info:status" -msgid "Saved to Removable Drive {0} as {1}" -msgstr "Guardado en unidad extraíble {0} como {1}" +msgctxt "@info:status Don't translate the tag {device}!" +msgid "Could not find a file name when trying to write to {device}." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -msgctxt "@action:button" -msgid "Eject" -msgstr "Expulsar" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -#, python-brace-format -msgctxt "@action" -msgid "Eject removable device {0}" -msgstr "Expulsar dispositivo extraíble {0}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:138 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #, python-brace-format msgctxt "@info:status" msgid "Could not save to removable drive {0}: {1}" msgstr "No se pudo guardar en unidad extraíble {0}: {1}" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:148 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:675 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:683 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:145 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:152 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 +msgctxt "@info:title" +msgid "Error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +#, python-brace-format +msgctxt "@info:status" +msgid "Saved to Removable Drive {0} as {1}" +msgstr "Guardado en unidad extraíble {0} como {1}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +msgctxt "@info:title" +msgid "File Saved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +msgctxt "@action:button" +msgid "Eject" +msgstr "Expulsar" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +#, python-brace-format +msgctxt "@action" +msgid "Eject removable device {0}" +msgstr "Expulsar dispositivo extraíble {0}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 #, python-brace-format msgctxt "@info:status" msgid "Ejected {0}. You can now safely remove the drive." msgstr "Expulsado {0}. Ahora puede retirar de forma segura la unidad." -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:150 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 +msgctxt "@info:title" +msgid "Safely Remove Hardware" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format msgctxt "@info:status" msgid "Failed to eject {0}. Another program may be using the drive." @@ -201,219 +282,351 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Unidad extraíble" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:49 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Imprimir a través de la red" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Imprime a través de la red." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:156 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 msgctxt "@info:status" msgid "Access to the printer requested. Please approve the request on the printer" msgstr "Acceso a la impresora solicitado. Apruebe la solicitud en la impresora." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +msgctxt "@info:title" +msgid "Connection status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 msgctxt "@info:status" msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:468 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@action:button" msgid "Retry" msgstr "Volver a intentar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Reenvía la solicitud de acceso." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Acceso a la impresora aceptado" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 msgctxt "@info:status" msgid "No access to print with this printer. Unable to send print job." msgstr "No hay acceso para imprimir con esta impresora. No se puede enviar el trabajo de impresión." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:28 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:72 msgctxt "@action:button" msgid "Request Access" msgstr "Solicitar acceso" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:71 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "Envía la solicitud de acceso a la impresora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:358 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:375 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 msgctxt "@info:status" msgid "Connected over the network. Please approve the access request on the printer." msgstr "Conectado a través de la red. Apruebe la solicitud de acceso en la impresora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:365 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:382 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 msgctxt "@info:status" msgid "Connected over the network." msgstr "Conectado a través de la red." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:378 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "Conectado a través de la red. No hay acceso para controlar la impresora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:383 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:400 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 msgctxt "@info:status" msgid "Access request was denied on the printer." msgstr "Solicitud de acceso denegada en la impresora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:386 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:403 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Access request failed due to a timeout." msgstr "Se ha producido un error al solicitar acceso porque se ha agotado el tiempo de espera." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:450 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:467 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "The connection with the network was lost." msgstr "Se ha perdido la conexión de red." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:481 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 msgctxt "@info:status" msgid "The connection with the printer was lost. Check your printer to see if it is connected." msgstr "Se ha perdido la conexión con la impresora. Compruebe que la impresora está conectada." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:630 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:649 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 #, python-format msgctxt "@info:status" msgid "Unable to start a new print job, printer is busy. Current printer status is %s." msgstr "No se puede iniciar un trabajo nuevo de impresión, la impresora está ocupada. El estado actual de la impresora es %s." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:654 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "No se puede iniciar un trabajo nuevo de impresión. No se ha cargado ningún PrintCore en la ranura {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:661 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:682 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "No se puede iniciar un trabajo nuevo de impresión. No se ha cargado material en la ranura {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:670 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "No hay suficiente material para la bobina {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:680 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "PrintCore distinto (Cura: {0}, impresora: {1}) seleccionado para extrusor {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:694 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:716 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@label" msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Material distinto (Cura: {0}, impresora: {1}) seleccionado para extrusor {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:724 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "El PrintCore {0} no está calibrado correctamente. Debe llevarse a cabo una calibración XY de la impresora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:707 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:729 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "¿Seguro que desea imprimir con la configuración seleccionada?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:730 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 msgctxt "@label" msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "La configuración o calibración de la impresora y de Cura no coinciden. Para obtener el mejor resultado, segmente siempre los PrintCores y los materiales que se insertan en la impresora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:736 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Configuración desajustada" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:815 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Enviando datos a la impresora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:816 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:46 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:137 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Cancelar" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +msgctxt "@info:title" +msgid "Sending Data" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:884 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "No se puede enviar datos a la impresora. ¿Hay otro trabajo que todavía esté activo?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1018 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1050 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Cancelando impresión..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1024 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Impresión cancelada. Compruebe la impresora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1030 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Pausando impresión..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1032 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Reanudando impresión..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1175 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Sincronizar con la impresora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1177 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "¿Desea utilizar la configuración actual de su impresora en Cura?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1220 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 msgctxt "@label" msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "Los PrintCores o los materiales de la impresora difieren de los del proyecto actual. Para obtener el mejor resultado, segmente siempre los PrintCores y materiales que se hayan insertado en la impresora." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.py:19 msgctxt "@action" msgid "Connect via Network" msgstr "Conectar a través de la red" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:172 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#, python-brace-format +msgctxt "Count is number of printers." +msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#, python-brace-format +msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#, python-brace-format +msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +msgctxt "@info:status" +msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#, python-brace-format +msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Descargar" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +msgctxt "@info" +msgid "Could not access update information." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" msgstr "Se han producido varios errores al abrir el archivo de SolidWorks. Compruebe que el archivo se puede abrir correctamente en SolidWorks." @@ -432,17 +645,12 @@ msgstr "Archivo de ensamblado de SolidWorks" msgid "Configure" msgstr "Configurar" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:129 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 #, python-format msgctxt "@info:status" msgid "Error while starting %s!" msgstr "Error al iniciar %s" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:207 -msgctxt "@info:status" -msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" -msgstr "Tenga en cuenta que tiene que volver a abrir el archivo SolidWorks manualmente. Volver a cargar el modelo no funciona." - #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 msgid "Modify G-Code" msgstr "Modificar GCode" @@ -452,7 +660,12 @@ msgctxt "@info" msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." msgstr "Cura recopila de forma anónima información de la segmentación. Puede desactivar esta opción en las preferencias." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:44 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 +msgctxt "@info:title" +msgid "Collecting Data" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" msgid "Dismiss" msgstr "Descartar" @@ -470,14 +683,19 @@ msgstr "Archivo GCode" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" -msgid "Layers" -msgstr "Capas" +msgid "Layer view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura no muestra correctamente las capas si la impresión de alambre está habilitada." +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 +msgctxt "@info:title" +msgid "Layer View" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -503,24 +721,31 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Imagen GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:281 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "El material seleccionado no es compatible con la máquina o la configuración seleccionada." +msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:308 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:307 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 +msgctxt "@info:title" +msgid "Unable to slice" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Los ajustes actuales no permiten la segmentación. Los siguientes ajustes contienen errores: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:317 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:306 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "No se puede segmentar porque la torre auxiliar o la posición o posiciones de preparación no son válidas." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:325 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:315 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "No hay nada que segmentar porque ninguno de los modelos se adapta al volumen de impresión. Escale o rote los modelos para que se adapten." @@ -531,6 +756,11 @@ msgctxt "@info:status" msgid "Processing Layers" msgstr "Procesando capas" +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +msgctxt "@info:title" +msgid "Information" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" msgid "Per Model Settings" @@ -542,13 +772,13 @@ msgid "Configure Per Model Settings" msgstr "Configurar ajustes por modelo" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:475 msgctxt "@title:tab" msgid "Recommended" msgstr "Recomendado" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:459 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizado" @@ -559,25 +789,37 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Archivo 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:122 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1050 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 msgctxt "@label" msgid "Nozzle" msgstr "Tobera" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 +msgctxt "@menuitem" msgid "Browse plugins" -msgstr "Examinar complementos" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:120 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +msgctxt "@info:tile" +msgid "Warning" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" msgid "Plugin browser" msgstr "Explorador de complementos" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" -msgid "Solid" -msgstr "Sólido" +msgid "Solid view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -589,7 +831,13 @@ msgctxt "@info:status" msgid "Parsing G-code" msgstr "Analizar GCode" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:365 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Asegúrese de que el GCode es adecuado para la impresora y para su configuración antes de enviar el archivo a la misma. Es posible que la representación del GCode no sea precisa." @@ -611,7 +859,7 @@ msgid "Cura Project 3MF file" msgstr "Archivo 3MF del proyecto de Cura" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Seleccionar actualizaciones" @@ -631,18 +879,73 @@ msgctxt "@action" msgid "Level build plate" msgstr "Nivelar placa de impresión" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:247 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Pared exterior" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Paredes interiores" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Forro" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Relleno" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Relleno de soporte" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Interfaz de soporte" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support" +msgstr "Soporte" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Desplazamiento" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Retracciones" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Other" +msgstr "Otro" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Archivo {0} presegmentado" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 msgctxt "@item:material" msgid "No material loaded" msgstr "No se ha cargado material." -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 msgctxt "@item:material" msgid "Unknown material" msgstr "Material desconocido" @@ -652,35 +955,56 @@ msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Buscando nueva ubicación para los objetos" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:85 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "No se puede encontrar una ubicación dentro del volumen de impresión para todos los objetos" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:417 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 msgctxt "@title:window" msgid "File Already Exists" msgstr "El archivo ya existe" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:418 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 #, python-brace-format -msgctxt "@label" +msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "El archivo {0} ya existe. ¿Está seguro de que desea sobrescribirlo?" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:801 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" msgid "Custom" msgstr "Personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:805 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 msgctxt "@label" msgid "Custom Material" msgstr "Material personalizado" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +msgctxt "@info:status" +msgid "The selected material is incompatible with the selected machine or configuration." +msgstr "El material seleccionado no es compatible con la máquina o la configuración seleccionada." + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:109 +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 +msgctxt "@info:title" +msgid "Incompatible Material" +msgstr "" + #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." msgid "The selected material diameter causes the material to become incompatible with the current printer." @@ -698,70 +1022,86 @@ msgstr "Deshacer cambio del diámetro del material." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "Error al exportar el perfil a {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:148 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "Error al exportar el perfil a {0}: Error en el complemento de escritura." +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "Perfil exportado a {0}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:199 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:208 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:242 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +msgctxt "@info:title" +msgid "Export Details" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:213 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:247 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "Error al importar el perfil de {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:210 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:246 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Perfil {0} importado correctamente" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:249 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "El perfil {0} tiene un tipo de archivo desconocido o está corrupto." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:267 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:272 msgctxt "@label" msgid "Custom profile" msgstr "Perfil personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:278 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Al perfil le falta un tipo de calidad." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:300 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "No se ha podido encontrar un tipo de calidad {0} para la configuración actual." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:95 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "La altura del volumen de impresión se ha reducido debido al valor del ajuste «Secuencia de impresión» para evitar que el caballete colisione con los modelos impresos." +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 +msgctxt "@info:title" +msgid "Build Volume" +msgstr "" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Multiplicar y colocar objetos" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "" + #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" msgid "Crash Report" @@ -773,41 +1113,44 @@ msgid "" "

A fatal exception has occurred that we could not recover from!

\n" "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" " " -msgstr "

Se ha producido una excepción fatal de la que no podemos recuperarnos.

\n

Use la siguiente información para enviar un informe de error a http://github.com/Ultimaker/Cura/issues

\n " +msgstr "" +"

Se ha producido una excepción fatal de la que no podemos recuperarnos.

\n" +"

Use la siguiente información para enviar un informe de error a http://github.com/Ultimaker/Cura/issues

\n" +" " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 msgctxt "@action:button" msgid "Open Web Page" msgstr "Abrir página web" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:248 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Cargando máquinas..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:610 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Configurando escena..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:652 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Cargando interfaz..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:815 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1285 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1295 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Solo se puede cargar un archivo GCode a la vez. Se omitió la importación de {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1294 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1304 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" @@ -837,12 +1180,12 @@ msgstr "X (anchura)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:286 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:838 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:839 msgctxt "@label" msgid "mm" msgstr "mm" @@ -932,108 +1275,72 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "Diferencia de altura entre la punta de la tobera y el sistema del puente (ejes X e Y). Se usa para evitar que colisionen la impresión anterior con el caballete al imprimir «de uno en uno»." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Número de extrusores" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 msgctxt "@tooltip" msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." msgstr "El diámetro nominal del filamento compatible con la impresora. El diámetro exacto se sobrescribirá según el material o el perfil." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:290 msgctxt "@label" msgid "Material diameter" msgstr "Diámetro del material" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:297 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:388 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 msgctxt "@label" msgid "Nozzle size" msgstr "Tamaño de la tobera" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:315 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 msgctxt "@label" msgid "Start Gcode" msgstr "Iniciar GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:325 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "Los comandos de Gcode que se ejecutarán justo al inicio." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:334 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:335 msgctxt "@label" msgid "End Gcode" msgstr "Finalizar GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:344 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "Los comandos de Gcode que se ejecutarán justo al final." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:376 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:377 msgctxt "@label" msgid "Nozzle Settings" msgstr "Ajustes de la tobera" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:398 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 msgctxt "@label" msgid "Nozzle offset X" msgstr "Desplazamiento de la tobera sobre el eje X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:410 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Desplazamiento de la tobera sobre el eje Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:431 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "GCode inicial del extrusor" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:449 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 msgctxt "@label" msgid "Extruder End Gcode" msgstr "GCode final del extrusor" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:20 -msgctxt "@title:window" -msgid "Doodle3D Settings" -msgstr "Ajustes de Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:53 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 -msgctxt "@action:button" -msgid "Save" -msgstr "Guardar" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:23 -msgctxt "@title:window" -msgid "Print to: %1" -msgstr "Imprimir en: %1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:40 -msgctxt "@label" -msgid "Extruder Temperature: %1/%2°C" -msgstr "Temperatura del extrusor: %1/%2 °C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:46 -msgctxt "@label" -msgid "Bed Temperature: %1/%2°C" -msgstr "Temperatura de la plataforma: %1/%2 °C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:64 -msgctxt "@label" -msgid "%1" -msgstr "%1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:82 -msgctxt "@action:button" -msgid "Print" -msgstr "Imprimir" - #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" msgid "Changelog" @@ -1042,9 +1349,10 @@ msgstr "Registro de cambios" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:55 #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:446 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:306 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:78 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:125 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 @@ -1098,30 +1406,38 @@ msgid "Unknown error code: %1" msgstr "Código de error desconocido: %1" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:55 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Conectar con la impresora en red" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:65 msgctxt "@label" msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "Para imprimir directamente en la impresora a través de la red, asegúrese de que esta está conectada a la red utilizando un cable de red o conéctela a la red wifi. Si no conecta Cura con la impresora, también puede utilizar una unidad USB para transferir archivos GCode a la impresora.\n\nSeleccione la impresora de la siguiente lista:" +msgstr "" +"Para imprimir directamente en la impresora a través de la red, asegúrese de que esta está conectada a la red utilizando un cable de red o conéctela a la red wifi. Si no conecta Cura con la impresora, también puede utilizar una unidad USB para transferir archivos GCode a la impresora.\n" +"\n" +"Seleccione la impresora de la siguiente lista:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 msgctxt "@action:button" msgid "Add" msgstr "Agregar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:85 msgctxt "@action:button" msgid "Edit" msgstr "Editar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 @@ -1130,87 +1446,210 @@ msgid "Remove" msgstr "Eliminar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:33 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:104 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:35 msgctxt "@action:button" msgid "Refresh" msgstr "Actualizar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:196 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:196 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Si la impresora no aparece en la lista, lea la guía de solución de problemas de impresión y red" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:223 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:223 msgctxt "@label" msgid "Type" msgstr "Tipo" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 msgctxt "@label" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:238 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:238 msgctxt "@label" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:241 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:241 msgctxt "@label" msgid "Unknown" msgstr "Desconocido" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:254 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:254 msgctxt "@label" msgid "Firmware version" msgstr "Versión de firmware" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:266 msgctxt "@label" msgid "Address" msgstr "Dirección" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "La impresora todavía no ha respondido en esta dirección." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Conectar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 msgctxt "@title:window" msgid "Printer Address" msgstr "Dirección de la impresora" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Introduzca la dirección IP o el nombre de host de la impresora en red." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 msgctxt "@action:button" msgid "Ok" msgstr "Aceptar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:37 msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Conecta a una impresora." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:116 msgctxt "@info:tooltip" msgid "Load the configuration of the printer into Cura" msgstr "Carga la configuración de la impresora en Cura." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:117 msgctxt "@action:button" msgid "Activate Configuration" msgstr "Activar configuración" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Imprimir" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 +msgctxt "@label:status" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 +msgctxt "@label:status" +msgid "Reserved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 +msgctxt "@label:status" +msgid "Finished" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 +msgctxt "@label:status" +msgid "Preparing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 +msgctxt "@label:status" +msgid "Available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 +msgctxt "@label" +msgid "Completed on: " +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 +msgctxt "@label" +msgid "Clear build plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 +msgctxt "@label" +msgid "Preparing to print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 +msgctxt "@label" +msgid "PRINTER GROUP" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 +msgctxt "@title" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 +msgctxt "@label" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 +msgctxt "@label" +msgid "Queued" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 +msgctxt "@label:title" +msgid "Printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 +msgctxt "@action:button" +msgid "View printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1299,67 +1738,62 @@ msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Cambia las secuencias de comandos de posprocesamiento." -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:71 -msgctxt "@label" -msgid "View Mode: Layers" -msgstr "Ver modo: Capas" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:88 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 msgctxt "@label" msgid "Color scheme" msgstr "Combinación de colores" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:102 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:91 msgctxt "@label:listbox" msgid "Material Color" msgstr "Color del material" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:106 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:95 msgctxt "@label:listbox" msgid "Line Type" msgstr "Tipo de línea" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:144 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 msgctxt "@label" msgid "Compatibility Mode" msgstr "Modo de compatibilidad" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:210 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 msgctxt "@label" msgid "Show Travels" msgstr "Mostrar desplazamientos" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 msgctxt "@label" msgid "Show Helpers" msgstr "Mostrar asistentes" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 msgctxt "@label" msgid "Show Shell" msgstr "Mostrar perímetro" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:234 msgctxt "@label" msgid "Show Infill" msgstr "Mostrar relleno" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:264 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:283 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Mostrar solo capas superiores" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:273 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:292 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Mostrar cinco capas detalladas en la parte superior" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:284 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:303 msgctxt "@label" msgid "Top / Bottom" msgstr "Superior o inferior" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:288 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 msgctxt "@label" msgid "Inner Wall" msgstr "Pared interior" @@ -1434,23 +1868,23 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Suavizado" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:157 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 msgctxt "@action:button" msgid "Select settings" msgstr "Seleccionar ajustes" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:197 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Seleccionar ajustes o personalizar este modelo" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:221 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrar..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:245 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 msgctxt "@label:checkbox" msgid "Show all" msgstr "Mostrar todo" @@ -1587,25 +2021,43 @@ msgctxt "@title:window" msgid "Find & Update plugins" msgstr "Buscar y actualizar complementos" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:27 msgctxt "@label" msgid "Here you can find a list of Third Party plugins." msgstr "Puede ver aquí una lista de complementos de terceros." -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:143 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 msgctxt "@action:button" msgid "Upgrade" msgstr "Actualización" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 msgctxt "@action:button" msgid "Installed" msgstr "Instalado" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 +msgctxt "@title:window" +msgid "Plugin License Agreement" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 +msgctxt "@label" +msgid "" +" plugin contains a license.\n" +"You need to accept this license to install this plugin.\n" +"Do you agree with the terms below?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" -msgid "Download" -msgstr "Descargar" +msgid "Accept" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" +msgstr "" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -1781,71 +2233,71 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "¡Todo correcto! Ha terminado con la comprobación." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "No está conectado a ninguna impresora." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:91 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "La impresora no acepta comandos." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "En mantenimiento. Compruebe la impresora." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Se ha perdido la conexión con la impresora." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Imprimiendo..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "En pausa" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Preparando..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Retire la impresión." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 msgctxt "@label:" msgid "Resume" msgstr "Reanudar" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Pause" msgstr "Pausar" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:271 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 msgctxt "@label:" msgid "Abort Print" msgstr "Cancelar impresión" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 msgctxt "@window:title" msgid "Abort print" msgstr "Cancela la impresión" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:283 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "¿Está seguro de que desea cancelar la impresión?" @@ -1860,7 +2312,9 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "Ha personalizado parte de los ajustes del perfil.\n¿Desea descartar los cambios o guardarlos?" +msgstr "" +"Ha personalizado parte de los ajustes del perfil.\n" +"¿Desea descartar los cambios o guardarlos?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -1878,19 +2332,19 @@ msgid "Customized" msgstr "Valor personalizado" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Preguntar siempre" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:587 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Descartar y no volver a preguntar" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:588 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Guardar y no volver a preguntar" @@ -2031,7 +2485,7 @@ msgid "Unit" msgstr "Unidad" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 msgctxt "@title:tab" msgid "General" msgstr "General" @@ -2046,223 +2500,223 @@ msgctxt "@label" msgid "Language:" msgstr "Idioma:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 msgctxt "@label" msgid "Currency:" msgstr "Moneda:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Tendrá que reiniciar la aplicación para que estos cambios tengan efecto." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:289 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Segmentar automáticamente al cambiar los ajustes." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Segmentar automáticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamiento de la ventanilla" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Resaltar en rojo las áreas del modelo sin soporte. Sin soporte, estas áreas no se imprimirán correctamente." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Mostrar voladizos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Mueve la cámara de manera que el modelo se encuentre en el centro de la vista cuando se selecciona un modelo." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:347 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Centrar cámara cuando se selecciona elemento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "¿Se debería invertir el comportamiento predeterminado del zoom de cura?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Invertir la dirección del zoom de la cámara." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "¿Debería moverse el zoom en la dirección del ratón?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Hacer zoom en la dirección del ratón" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "¿Deben moverse los modelos en la plataforma de modo que no se crucen?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:382 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Asegúrese de que lo modelos están separados." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "¿Deben moverse los modelos del área de impresión de modo que no toquen la placa de impresión?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Arrastrar modelos a la placa de impresión de forma automática" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Mostrar mensaje de advertencia en el lector de GCode." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Mensaje de advertencia en el lector de GCode" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "¿Debe forzarse el modo de compatibilidad de la capa?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Forzar modo de compatibilidad de la vista de capas (necesario reiniciar)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 msgctxt "@label" msgid "Opening and saving files" msgstr "Abrir y guardar archivos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "¿Deben ajustarse los modelos al volumen de impresión si son demasiado grandes?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:462 msgctxt "@option:check" msgid "Scale large models" msgstr "Escalar modelos de gran tamaño" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Un modelo puede mostrarse demasiado pequeño si su unidad son metros en lugar de milímetros, por ejemplo. ¿Deben escalarse estos modelos?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:469 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Escalar modelos demasiado pequeños" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "¿Debe añadirse automáticamente un prefijo basado en el nombre de la impresora al nombre del trabajo de impresión?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Agregar prefijo de la máquina al nombre del trabajo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "¿Mostrar un resumen al guardar un archivo de proyecto?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:496 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Mostrar un cuadro de diálogo de resumen al guardar el proyecto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Comportamiento predeterminado al abrir un archivo del proyecto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:513 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Comportamiento predeterminado al abrir un archivo del proyecto: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:526 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 msgctxt "@option:openProject" msgid "Always ask" msgstr "Preguntar siempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Abrir siempre como un proyecto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:528 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always import models" msgstr "Importar modelos siempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:564 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Si ha realizado cambios en un perfil y, a continuación, ha cambiado a otro, aparecerá un cuadro de diálogo que le preguntará si desea guardar o descartar los cambios. También puede elegir el comportamiento predeterminado, así ese cuadro de diálogo no volverá a aparecer." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@label" msgid "Override Profile" msgstr "Anular perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:622 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 msgctxt "@label" msgid "Privacy" msgstr "Privacidad" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "¿Debe Cura buscar actualizaciones cuando se abre el programa?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:634 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Buscar actualizaciones al iniciar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "¿Deben enviarse datos anónimos sobre la impresión a Ultimaker? Tenga en cuenta que no se envían ni almacenan modelos, direcciones IP ni otra información de identificación personal." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Enviar información (anónima) de impresión" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:441 msgctxt "@title:tab" msgid "Printers" msgstr "Impresoras" @@ -2312,7 +2766,7 @@ msgid "Waiting for a printjob" msgstr "Esperando un trabajo de impresión..." #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 msgctxt "@title:tab" msgid "Profiles" msgstr "Perfiles" @@ -2410,7 +2864,7 @@ msgid "Export Profile" msgstr "Exportar perfil" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 msgctxt "@title:tab" msgid "Materials" msgstr "Materiales" @@ -2442,14 +2896,14 @@ msgid "Import Material" msgstr "Importar material" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "No se pudo importar el material en %1: %2." +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "El material se ha importado correctamente en %1." +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2458,17 +2912,17 @@ msgid "Export Material" msgstr "Exportar material" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "Se ha producido un error al exportar el material a %1: %2." +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "El material se ha exportado correctamente a %1." +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:822 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 msgctxt "@title:window" msgid "Add Printer" msgstr "Agregar impresora" @@ -2483,71 +2937,6 @@ msgctxt "@action:button" msgid "Add Printer" msgstr "Agregar impresora" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:166 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Pared exterior" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:167 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Paredes interiores" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:168 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Forro" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:169 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Relleno" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:170 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Relleno de soporte" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:171 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Interfaz de soporte" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:172 -msgctxt "@tooltip" -msgid "Support" -msgstr "Soporte" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:173 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Desplazamiento" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:174 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Retracciones" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:175 -msgctxt "@tooltip" -msgid "Other" -msgstr "Otro" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:217 -msgctxt "@label" -msgid "00h 00min" -msgstr "00h 00min" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:270 -msgctxt "@label" -msgid "%1 m / ~ %2 g / ~ %4 %3" -msgstr "%1 m / ~ %2 g / ~ %4 %3" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:275 -msgctxt "@label" -msgid "%1 m / ~ %2 g" -msgstr "%1 m/~ %2 g" - #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -2563,7 +2952,9 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "Ultimaker B.V. ha desarrollado Cura en cooperación con la comunidad.\nCura se enorgullece de utilizar los siguientes proyectos de código abierto:" +msgstr "" +"Ultimaker B.V. ha desarrollado Cura en cooperación con la comunidad.\n" +"Cura se enorgullece de utilizar los siguientes proyectos de código abierto:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -2655,32 +3046,48 @@ msgctxt "@label" msgid "SVG icons" msgstr "Iconos SVG" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +msgctxt "@label" +msgid "Profile:" +msgstr "Perfil:" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Algunos valores de los ajustes o sobrescrituras son distintos a los valores almacenados en el perfil.\n" +"\n" +"Haga clic para abrir el administrador de perfiles." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" msgid "Search..." msgstr "Buscar..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Copiar valor en todos los extrusores" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:405 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ocultar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "No mostrar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:419 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Mostrar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:438 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Configurar la visibilidad de los ajustes..." @@ -2691,7 +3098,10 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Algunos ajustes ocultos utilizan valores diferentes de los valores normales calculados.\n\nHaga clic para mostrar estos ajustes." +msgstr "" +"Algunos ajustes ocultos utilizan valores diferentes de los valores normales calculados.\n" +"\n" +"Haga clic para mostrar estos ajustes." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 msgctxt "@label Header for list of settings." @@ -2719,7 +3129,10 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Este ajuste tiene un valor distinto del perfil.\n\nHaga clic para restaurar el valor del perfil." +msgstr "" +"Este ajuste tiene un valor distinto del perfil.\n" +"\n" +"Haga clic para restaurar el valor del perfil." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 msgctxt "@label" @@ -2727,26 +3140,56 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Este ajuste se calcula normalmente pero actualmente tiene un valor absoluto establecido.\n\nHaga clic para restaurar el valor calculado." +msgstr "" +"Este ajuste se calcula normalmente pero actualmente tiene un valor absoluto establecido.\n" +"\n" +"Haga clic para restaurar el valor calculado." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Configuración de impresión" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "Ajustes de impresión deshabilitados\nNo se pueden modificar los archivos GCode" +msgstr "" +"Ajustes de impresión deshabilitados\n" +"No se pueden modificar los archivos GCode" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 +msgctxt "@label" +msgid "00h 00min" +msgstr "00h 00min" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +msgctxt "@tooltip" +msgid "Time information" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 +msgctxt "@description" +msgid "Print time" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +msgctxt "@label" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 +msgctxt "@label" +msgid "%1m / ~ %2g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" msgid "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." msgstr "Configuración de impresión recomendada

Imprimir con los ajustes recomendados para la impresora, el material y la calidad seleccionados." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:460 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:481 msgctxt "@tooltip" msgid "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." msgstr "Configuración de impresión personalizada

Imprimir con un control muy detallado del proceso de segmentación." @@ -2796,81 +3239,87 @@ msgid "No printer connected" msgstr "No hay ninguna impresora conectada" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" -msgid "Hotend" -msgstr "Extremo caliente" +msgid "Extruder" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:119 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 +msgctxt "@tooltip" +msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "Temperatura actual de este extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Color del material en este extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Material en este extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Tobera insertada en este extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:249 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 msgctxt "@label" msgid "Build plate" msgstr "Placa de impresión" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:278 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "Temperatura objetivo de la plataforma calentada. La plataforma se calentará o enfriará en función de esta temperatura. Si el valor es 0, el calentamiento de la plataforma se desactivará." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:310 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:343 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "Temperatura actual de la plataforma caliente." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:422 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "Temperatura a la que se va a precalentar la plataforma." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button" msgid "Pre-heat" msgstr "Precalentar" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:610 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Caliente la plataforma antes de imprimir. Puede continuar ajustando la impresión durante el calentamiento, así no tendrá que esperar a que la plataforma se caliente para poder imprimir." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:677 msgctxt "@label" msgid "Active print" msgstr "Activar impresión" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:648 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 msgctxt "@label" msgid "Job Name" msgstr "Nombre del trabajo" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 msgctxt "@label" msgid "Printing Time" msgstr "Tiempo de impresión" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:660 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 msgctxt "@label" msgid "Estimated time left" msgstr "Tiempo restante estimado" @@ -3061,53 +3510,53 @@ msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurar visibilidad de los ajustes..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Cargue un modelo en 3D" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Preparado para segmentar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Segmentando..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Listo para %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "No se puede segmentar." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "No se puede segmentar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Preparar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:288 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Seleccione el dispositivo de salida activo" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 msgctxt "@title:window" msgid "Open file(s)" msgstr "Abrir archivo(s)" @@ -3199,42 +3648,37 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "A&yuda" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 msgctxt "@action:button" msgid "Open File" msgstr "Abrir archivo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:428 -msgctxt "@action:button" -msgid "View Mode" -msgstr "Ver modo" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 msgctxt "@title:window" msgid "New project" msgstr "Nuevo proyecto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:532 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "¿Está seguro de que desea iniciar un nuevo proyecto? Esto borrará la placa de impresión y cualquier ajuste no guardado." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:750 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:694 msgctxt "@window:title" msgid "Install Plugin" msgstr "Instalar complemento" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:757 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 msgctxt "@title:window" msgid "Open File(s)" msgstr "Abrir archivo(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:760 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Hemos encontrado uno o más archivos de GCode entre los archivos que ha seleccionado. Solo puede abrir los archivos GCode de uno en uno. Si desea abrir un archivo GCode, seleccione solo uno." @@ -3259,102 +3703,87 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "No mostrar resumen de proyecto al guardar de nuevo" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 +msgctxt "@action:button" +msgid "Save" +msgstr "Guardar" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 msgctxt "@title:tab" msgid "Prepare" msgstr "Preparar" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" -msgid "Print" -msgstr "Imprimir" +msgid "Monitor" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +msgctxt "@label" +msgid "Layer Height" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +msgctxt "@label" +msgid "Print Speed" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +msgctxt "@label" +msgid "Slower" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +msgctxt "@label" +msgid "Faster" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" msgid "Infill" msgstr "Relleno" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "0%" -msgstr "0 %" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:199 -msgctxt "@label" -msgid "Empty infill will leave your model hollow with low strength." -msgstr "Un relleno vacío dejará hueco el modelo con baja resistencia." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:203 -msgctxt "@label" -msgid "20%" -msgstr "20 %" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:210 -msgctxt "@label" -msgid "Light (20%) infill will give your model an average strength." -msgstr "Un relleno ligero (20 %) dará al modelo una resistencia media." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:214 -msgctxt "@label" -msgid "50%" -msgstr "50 %" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:221 -msgctxt "@label" -msgid "Dense (50%) infill will give your model an above average strength." -msgstr "Un relleno denso (50 %) dará al modelo una resistencia por encima de la media." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:225 -msgctxt "@label" -msgid "100%" -msgstr "100 %" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:232 -msgctxt "@label" -msgid "Solid (100%) infill will make your model completely solid." -msgstr "Un relleno sólido (100 %) hará que el modelo sea completamente macizo." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:236 -msgctxt "@label" -msgid "Gradual" -msgstr "Gradual" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:244 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Un relleno gradual aumentará gradualmente la cantidad de relleno hacia arriba." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:267 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 +msgctxt "@label" +msgid "Enable gradual" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Generate Support" msgstr "Generar soporte" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Generar estructuras para soportar piezas del modelo que tengan voladizos. Sin estas estructuras, estas piezas se romperían durante la impresión." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:718 msgctxt "@label" msgid "Support Extruder" msgstr "Extrusor del soporte" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:391 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Seleccione qué extrusor se utilizará como soporte. Esta opción formará estructuras de soporte por debajo del modelo para evitar que éste se combe o la impresión se haga en el aire." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:796 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Adherencia de la placa de impresión" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:462 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Habilita la impresión de un borde o una balsa. Esta opción agregará un área plana alrededor del objeto, que es fácil de cortar después." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:515 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:883 msgctxt "@label" msgid "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides" msgstr "¿Necesita ayuda para mejorar sus impresiones?
Lea las Guías de solución de problemas de Ultimaker" @@ -3391,30 +3820,21 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Registro del motor" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:193 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:236 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +msgctxt "@label" +msgid "Check material compatibility" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Haga clic para comprobar la compatibilidad de los materiales en Utimaker.com." -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:325 -msgctxt "@label" -msgid "Profile:" -msgstr "Perfil:" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "Algunos valores de los ajustes o sobrescrituras son distintos a los valores almacenados en el perfil.\n\nHaga clic para abrir el administrador de perfiles." - #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -3465,6 +3885,16 @@ msgctxt "name" msgid "God Mode" msgstr "God Mode" +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +msgstr "" + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "" + #: ChangeLogPlugin/plugin.json msgctxt "description" msgid "Shows changes since latest checked version." @@ -3495,16 +3925,6 @@ msgctxt "name" msgid "USB printing" msgstr "Impresión USB" -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing X3G files" -msgstr "Proporciona asistencia para escribir archivos X3G." - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3G Writer" -msgstr "Escritor de X3G" - #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -3525,6 +3945,21 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Conexión de red UM3" +#: CuraPrintClusterUpload/plugin.json +msgctxt "name" +msgid "UM3 Network Connection (Cluster)" +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "" + #: CuraSolidWorksPlugin/plugin.json msgctxt "description" msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" @@ -3615,6 +4050,16 @@ msgctxt "name" msgid "Version Upgrade 2.5 to 2.6" msgstr "Actualización de la versión 2.5 a la 2.6" +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -3755,6 +4200,189 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Lector de perfiles de Cura" +#~ msgctxt "@item:inlistbox" +#~ msgid "X-Ray" +#~ msgstr "Rayos X" + +#~ msgctxt "@label" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@info:whatsthis" +#~ msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +#~ msgstr "Acepta códigos GCode y los envía a un enrutador Doodle3D por medio de wifi." + +#~ msgctxt "@item:inmenu" +#~ msgid "Doodle3D printing" +#~ msgstr "Impresión Doodle3D" + +#~ msgctxt "@action:button" +#~ msgid "Print with Doodle3D" +#~ msgstr "Imprimir con Doodle3D" + +#~ msgctxt "@info:tooltip" +#~ msgid "Print with " +#~ msgstr "Imprimir con" + +#~ msgctxt "@title:menu" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Enable Scan devices..." +#~ msgstr "Habilitar dispositivos de digitalización..." + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "Archivo X3G" + +#~ msgctxt "@info:progress" +#~ msgid "Saving to Removable Drive {0}" +#~ msgstr "Guardando en unidad extraíble {0}" + +#~ msgctxt "@info:status" +#~ msgid "Could not save to {0}: {1}" +#~ msgstr "No se pudo guardar en {0}: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" +#~ msgstr "Tenga en cuenta que tiene que volver a abrir el archivo SolidWorks manualmente. Volver a cargar el modelo no funciona." + +#~ msgctxt "@item:inlistbox" +#~ msgid "Layers" +#~ msgstr "Capas" + +#~ msgid "Browse plugins" +#~ msgstr "Examinar complementos" + +#~ msgctxt "@item:inmenu" +#~ msgid "Solid" +#~ msgstr "Sólido" + +#~ msgctxt "@label" +#~ msgid "The file {0} already exists. Are you sure you want to overwrite it?" +#~ msgstr "El archivo {0} ya existe. ¿Está seguro de que desea sobrescribirlo?" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: {1}" +#~ msgstr "Error al exportar el perfil a {0}: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: Writer plugin reported failure." +#~ msgstr "Error al exportar el perfil a {0}: Error en el complemento de escritura." + +#~ msgctxt "@info:status" +#~ msgid "Exported profile to {0}" +#~ msgstr "Perfil exportado a {0}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Error al importar el perfil de {0}: {1}" + +#~ msgctxt "@title:window" +#~ msgid "Doodle3D Settings" +#~ msgstr "Ajustes de Doodle3D" + +#~ msgctxt "@title:window" +#~ msgid "Print to: %1" +#~ msgstr "Imprimir en: %1" + +#~ msgctxt "@label" +#~ msgid "Extruder Temperature: %1/%2°C" +#~ msgstr "Temperatura del extrusor: %1/%2 °C" + +#~ msgctxt "@label" +#~ msgid "Bed Temperature: %1/%2°C" +#~ msgstr "Temperatura de la plataforma: %1/%2 °C" + +#~ msgctxt "@label" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "@label" +#~ msgid "View Mode: Layers" +#~ msgstr "Ver modo: Capas" + +#~ msgctxt "@info:status" +#~ msgid "Could not import material %1: %2" +#~ msgstr "No se pudo importar el material en %1: %2." + +#~ msgctxt "@info:status" +#~ msgid "Successfully imported material %1" +#~ msgstr "El material se ha importado correctamente en %1." + +#~ msgctxt "@info:status" +#~ msgid "Failed to export material to %1: %2" +#~ msgstr "Se ha producido un error al exportar el material a %1: %2." + +#~ msgctxt "@info:status" +#~ msgid "Successfully exported material to %1" +#~ msgstr "El material se ha exportado correctamente a %1." + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g / ~ %4 %3" +#~ msgstr "%1 m / ~ %2 g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g" +#~ msgstr "%1 m/~ %2 g" + +#~ msgctxt "@label" +#~ msgid "Hotend" +#~ msgstr "Extremo caliente" + +#~ msgctxt "@action:button" +#~ msgid "View Mode" +#~ msgstr "Ver modo" + +#~ msgctxt "@title:tab" +#~ msgid "Print" +#~ msgstr "Imprimir" + +#~ msgctxt "@label" +#~ msgid "0%" +#~ msgstr "0 %" + +#~ msgctxt "@label" +#~ msgid "Empty infill will leave your model hollow with low strength." +#~ msgstr "Un relleno vacío dejará hueco el modelo con baja resistencia." + +#~ msgctxt "@label" +#~ msgid "20%" +#~ msgstr "20 %" + +#~ msgctxt "@label" +#~ msgid "Light (20%) infill will give your model an average strength." +#~ msgstr "Un relleno ligero (20 %) dará al modelo una resistencia media." + +#~ msgctxt "@label" +#~ msgid "50%" +#~ msgstr "50 %" + +#~ msgctxt "@label" +#~ msgid "Dense (50%) infill will give your model an above average strength." +#~ msgstr "Un relleno denso (50 %) dará al modelo una resistencia por encima de la media." + +#~ msgctxt "@label" +#~ msgid "100%" +#~ msgstr "100 %" + +#~ msgctxt "@label" +#~ msgid "Solid (100%) infill will make your model completely solid." +#~ msgstr "Un relleno sólido (100 %) hará que el modelo sea completamente macizo." + +#~ msgctxt "@label" +#~ msgid "Gradual" +#~ msgstr "Gradual" + +#~ msgctxt "description" +#~ msgid "Provides support for writing X3G files" +#~ msgstr "Proporciona asistencia para escribir archivos X3G." + +#~ msgctxt "name" +#~ msgid "X3G Writer" +#~ msgstr "Escritor de X3G" + #~ msgctxt "@label" #~ msgid "Machine Settings action" #~ msgstr "Acción Ajustes de la máquina" @@ -4335,4 +4963,4 @@ msgstr "Lector de perfiles de Cura" #~ msgctxt "@label:" #~ msgid "Print Again" -#~ msgstr "Volver a imprimir" \ No newline at end of file +#~ msgstr "Volver a imprimir" diff --git a/resources/i18n/es_ES/fdmextruder.def.json.po b/resources/i18n/es_ES/fdmextruder.def.json.po index 692448c397..13adfd182d 100644 --- a/resources/i18n/es_ES/fdmextruder.def.json.po +++ b/resources/i18n/es_ES/fdmextruder.def.json.po @@ -194,4 +194,4 @@ msgstr "Posición de preparación del extrusor sobre el eje Y" #: fdmextruder.def.json msgctxt "extruder_prime_pos_y description" msgid "The Y coordinate of the position where the nozzle primes at the start of printing." -msgstr "Coordenada X de la posición en la que la tobera se coloca al inicio de la impresión." \ No newline at end of file +msgstr "Coordenada X de la posición en la que la tobera se coloca al inicio de la impresión." diff --git a/resources/i18n/es_ES/fdmprinter.def.json.po b/resources/i18n/es_ES/fdmprinter.def.json.po index 5130f1d250..65d0218dab 100644 --- a/resources/i18n/es_ES/fdmprinter.def.json.po +++ b/resources/i18n/es_ES/fdmprinter.def.json.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -56,7 +56,9 @@ msgctxt "machine_start_gcode description" msgid "" "Gcode commands to be executed at the very start - separated by \n" "." -msgstr "Los comandos de Gcode que se ejecutarán justo al inicio, separados por \n." +msgstr "" +"Los comandos de Gcode que se ejecutarán justo al inicio, separados por \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -68,7 +70,9 @@ msgctxt "machine_end_gcode description" msgid "" "Gcode commands to be executed at the very end - separated by \n" "." -msgstr "Los comandos de Gcode que se ejecutarán justo al final, separados por \n." +msgstr "" +"Los comandos de Gcode que se ejecutarán justo al final, separados por \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -755,16 +759,6 @@ msgctxt "shell description" msgid "Shell" msgstr "Perímetro" -#: fdmprinter.def.json -msgctxt "wall_extruder_nr label" -msgid "Wall Extruder" -msgstr "Extrusor de pared" - -#: fdmprinter.def.json -msgctxt "wall_extruder_nr description" -msgid "The extruder train used for printing the walls. This is used in multi-extrusion." -msgstr "El tren extrusor que se utiliza para imprimir paredes. Se emplea en la extrusión múltiple." - #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" msgid "Outer Wall Extruder" @@ -1125,6 +1119,11 @@ msgctxt "z_seam_type option random" msgid "Random" msgstr "Aleatoria" +#: fdmprinter.def.json +msgctxt "z_seam_type option sharpest_corner" +msgid "Sharpest Corner" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1145,6 +1144,36 @@ msgctxt "z_seam_y description" msgid "The Y coordinate of the position near where to start printing each part in a layer." msgstr "Coordenada Y de la posición cerca de donde se comienza a imprimir cada parte en una capa." +#: fdmprinter.def.json +msgctxt "z_seam_corner label" +msgid "Seam Corner Preference" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner description" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_none" +msgid "None" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_inner" +msgid "Hide Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_outer" +msgid "Expose Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_any" +msgid "Hide or Expose Seam" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1165,6 +1194,16 @@ msgctxt "skin_no_small_gaps_heuristic description" msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." msgstr "Cuando el modelo tiene pequeños huecos verticales, el tiempo de cálculo puede aumentar alrededor de un 5 % para generar el forro superior e inferior en estos espacios estrechos. En tal caso, desactive este ajuste." +#: fdmprinter.def.json +msgctxt "skin_outline_count label" +msgid "Extra Skin Wall Count" +msgstr "Recuento de paredes adicionales de forro" + +#: fdmprinter.def.json +msgctxt "skin_outline_count description" +msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." +msgstr "Reemplaza la parte más externa del patrón superior/inferior con un número de líneas concéntricas. Mediante el uso de una o dos líneas mejora los techos que comienzan en el material de relleno." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1212,8 +1251,8 @@ msgstr "Patrón de relleno" #: fdmprinter.def.json msgctxt "infill_pattern description" -msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "Patrón del material de relleno de la impresión. El relleno de línea y zigzag cambian de dirección en capas alternas, reduciendo así el coste del material. Los patrones de rejilla, triángulo, cúbico, tetraédrico y concéntrico se imprimen en todas las capas por completo. El relleno cúbico y el tetraédrico cambian en cada capa para proporcionar una distribución de fuerza equitativa en cada dirección." +msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1242,8 +1281,13 @@ msgstr "Subdivisión cúbica" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" -msgid "Tetrahedral" -msgstr "Tetraédrico" +msgid "Octet" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option quarter_cubic" +msgid "Quarter Cubic" +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1260,6 +1304,26 @@ msgctxt "infill_pattern option zigzag" msgid "Zig Zag" msgstr "Zigzag" +#: fdmprinter.def.json +msgctxt "infill_pattern option cross" +msgid "Cross" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross_3d" +msgid "Cross 3D" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill label" +msgid "Connect Infill Lines" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill description" +msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" @@ -1381,34 +1445,34 @@ msgid "Don't generate areas of infill smaller than this (use skin instead)." msgstr "No genere áreas con un relleno inferior a este (utilice forro)." #: fdmprinter.def.json -msgctxt "expand_skins_into_infill label" -msgid "Expand Skins Into Infill" -msgstr "Expandir forros en el relleno" +msgctxt "skin_preshrink label" +msgid "Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_skins_into_infill description" -msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." -msgstr "Expanda las áreas de forro del forro superior e inferior en superficies planas. De forma predeterminada, los forros se detienen por debajo de las líneas de pared que rodean el relleno, pero pueden aparecer agujeros si su densidad es muy baja. Esta configuración expande los forros más allá de las líneas de pared de modo que el relleno de la siguiente capa recae en el forro." +msgctxt "skin_preshrink description" +msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins label" -msgid "Expand Top Skins Into Infill" -msgstr "Expandir forros superiores en el relleno" +msgctxt "top_skin_preshrink label" +msgid "Top Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins description" -msgid "Expand the top skin areas (areas with air above) so that they support infill above." -msgstr "Expanda las áreas del forro superior (áreas con aire por encima) para que soporten el relleno que tiene arriba." +msgctxt "top_skin_preshrink description" +msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins label" -msgid "Expand Bottom Skins Into Infill" -msgstr "Expandir forros inferiores en el relleno" +msgctxt "bottom_skin_preshrink label" +msgid "Bottom Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins description" -msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." -msgstr "Expanda las áreas del forro inferior (áreas con aire por debajo) para que queden sujetas por las capas de relleno superiores e inferiores." +msgctxt "bottom_skin_preshrink description" +msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1417,8 +1481,28 @@ msgstr "Distancia de expansión del forro" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" -msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." -msgstr "Distancia de expansión de los forros en el relleno. La distancia predeterminada es suficiente para cubrir el hueco que existe entre las líneas de relleno y evitará que aparezcan agujeros en el forro en aquellas áreas en las que la densidad del relleno es baja. A menudo una distancia más pequeña es suficiente." +msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance label" +msgid "Top Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance description" +msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance label" +msgid "Bottom Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance description" +msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." +msgstr "" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -1800,16 +1884,6 @@ msgctxt "speed_topbottom description" msgid "The speed at which top/bottom layers are printed." msgstr "Velocidad a la que se imprimen las capas superiores/inferiores." -#: fdmprinter.def.json -msgctxt "speed_ironing label" -msgid "Ironing Speed" -msgstr "Velocidad de alisado" - -#: fdmprinter.def.json -msgctxt "speed_ironing description" -msgid "The speed at which to pass over the top surface." -msgstr "Velocidad a la que pasa por encima de la superficie superior." - #: fdmprinter.def.json msgctxt "speed_support label" msgid "Support Speed" @@ -2040,16 +2114,6 @@ msgctxt "acceleration_topbottom description" msgid "The acceleration with which top/bottom layers are printed." msgstr "Aceleración a la que se imprimen las capas superiores/inferiores." -#: fdmprinter.def.json -msgctxt "acceleration_ironing label" -msgid "Ironing Acceleration" -msgstr "Aceleración del alisado" - -#: fdmprinter.def.json -msgctxt "acceleration_ironing description" -msgid "The acceleration with which ironing is performed." -msgstr "La aceleración a la que se produce el alisado." - #: fdmprinter.def.json msgctxt "acceleration_support label" msgid "Support Acceleration" @@ -2240,16 +2304,6 @@ msgctxt "jerk_topbottom description" msgid "The maximum instantaneous velocity change with which top/bottom layers are printed." msgstr "Cambio en la velocidad instantánea máxima a la que se imprimen las capas superiores/inferiores." -#: fdmprinter.def.json -msgctxt "jerk_ironing label" -msgid "Ironing Jerk" -msgstr "Impulso de alisado" - -#: fdmprinter.def.json -msgctxt "jerk_ironing description" -msgid "The maximum instantaneous velocity change while performing ironing." -msgstr "Cambio en la velocidad instantánea máxima durante el alisado." - #: fdmprinter.def.json msgctxt "jerk_support label" msgid "Support Jerk" @@ -2765,6 +2819,11 @@ msgctxt "support_pattern option zigzag" msgid "Zig Zag" msgstr "Zigzag" +#: fdmprinter.def.json +msgctxt "support_pattern option cross" +msgid "Cross" +msgstr "" + #: fdmprinter.def.json msgctxt "support_connect_zigzags label" msgid "Connect Support ZigZags" @@ -2777,23 +2836,33 @@ msgstr "Conectar los zigzags. Esto aumentará la resistencia de la estructura de #: fdmprinter.def.json msgctxt "support_skip_some_zags label" -msgid "Skip Some ZigZags Connections" -msgstr "Omitir algunas conexiones en zigzag" +msgid "Break Up Support In Chunks" +msgstr "" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" -msgid "Skip some ZigZags connections to make the support structure easier to break." -msgstr "Omite algunas conexiones en zigzag para que la estructura de soporte se rompa fácilmente." +msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm description" +msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count label" -msgid "ZigZag Connection Skip Count" -msgstr "Omitir recuento de conexión en zigzag" +msgid "Support Chunk Line Count" +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" -msgid "Skip one in every N connection lines to make the support structure easier to break." -msgstr "Omite una de cada N líneas de conexión para que la estructura de soporte se rompa fácilmente." +msgid "Skip one in every N connection lines to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3335,7 +3404,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance, multiple skirt lines will extend outwards from this distance." -msgstr "La distancia horizontal entre la falda y la primera capa de la impresión.\nEsta es la distancia mínima; múltiples líneas de falda se extenderán hacia el exterior a partir de esta distancia." +msgstr "" +"La distancia horizontal entre la falda y la primera capa de la impresión.\n" +"Esta es la distancia mínima; múltiples líneas de falda se extenderán hacia el exterior a partir de esta distancia." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3377,6 +3448,26 @@ msgctxt "brim_outside_only description" msgid "Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much." msgstr "Imprimir solo el borde en el exterior del modelo. Esto reduce el número de bordes que deberá retirar después sin que la adherencia a la plataforma se vea muy afectada." +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 label" +msgid "Initial Layer Z Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 description" +msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers label" +msgid "Z Offset Taper Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers description" +msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3387,6 +3478,16 @@ msgctxt "raft_margin description" msgid "If the raft is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print." msgstr "Si la balsa está habilitada, esta es el área adicional de la balsa alrededor del modelo que también tiene una balsa. El aumento de este margen creará una balsa más resistente mientras que usará más material y dejará menos área para la impresión." +#: fdmprinter.def.json +msgctxt "raft_smoothing label" +msgid "Raft Smoothing" +msgstr "" + +#: fdmprinter.def.json +msgctxt "raft_smoothing description" +msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_airgap label" msgid "Raft Air Gap" @@ -4062,6 +4163,16 @@ msgctxt "smooth_spiralized_contours description" msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." msgstr "Suavice los contornos espiralizados para reducir la visibilidad de la costura Z (la costura Z debería ser apenas visible en la impresora pero seguirá siendo visible en la vista de capas). Tenga en cuenta que la suavización tenderá a desdibujar detalles finos de la superficie." +#: fdmprinter.def.json +msgctxt "relative_extrusion label" +msgid "Relative Extrusion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "relative_extrusion description" +msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." +msgstr "" + #: fdmprinter.def.json msgctxt "experimental label" msgid "Experimental" @@ -4072,6 +4183,16 @@ msgctxt "experimental description" msgid "experimental!" msgstr "Experimental" +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "" + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4182,16 +4303,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Velocidad a la que se desplaza durante el depósito por inercia con relación a la velocidad de la trayectoria de extrusión. Se recomienda un valor ligeramente por debajo del 100%, ya que la presión en el tubo guía disminuye durante el movimiento depósito por inercia." -#: fdmprinter.def.json -msgctxt "skin_outline_count label" -msgid "Extra Skin Wall Count" -msgstr "Recuento de paredes adicionales de forro" - -#: fdmprinter.def.json -msgctxt "skin_outline_count description" -msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." -msgstr "Reemplaza la parte más externa del patrón superior/inferior con un número de líneas concéntricas. Mediante el uso de una o dos líneas mejora los techos que comienzan en el material de relleno." - #: fdmprinter.def.json msgctxt "skin_alternate_rotation label" msgid "Alternate Skin Rotation" @@ -4202,6 +4313,26 @@ msgctxt "skin_alternate_rotation description" msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." msgstr "Alterna la dirección en la que se imprimen las capas superiores/inferiores. Normalmente, se imprimen únicamente en diagonal. Este ajuste añade las direcciones solo X y solo Y." +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size label" +msgid "Cross 3D Pocket Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size description" +msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly label" +msgid "Alternate Cross 3D Pockets" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly description" +msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." +msgstr "" + #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" msgid "Spaghetti Infill" @@ -4502,7 +4633,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "Distancia de un movimiento ascendente que se extrude a media velocidad.\nEsto puede causar una mejor adherencia a las capas anteriores, aunque no calienta demasiado el material en esas capas. Solo se aplica a la impresión de alambre." +msgstr "" +"Distancia de un movimiento ascendente que se extrude a media velocidad.\n" +"Esto puede causar una mejor adherencia a las capas anteriores, aunque no calienta demasiado el material en esas capas. Solo se aplica a la impresión de alambre." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -4619,6 +4752,16 @@ msgctxt "ironing_enabled description" msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." msgstr "Pasar por la superficie superior una vez más, pero sin extruir material, para derretir la parte externa del plástico y crear una superficie más lisa." +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer label" +msgid "Iron Only Highest Layer" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer description" +msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." +msgstr "" + #: fdmprinter.def.json msgctxt "ironing_pattern label" msgid "Ironing Pattern" @@ -4669,6 +4812,36 @@ msgctxt "ironing_inset description" msgid "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print." msgstr "Distancia que debe guardarse desde el borde del modelo. Si se alisa hasta el borde de la malla, puede quedar un borde irregular." +#: fdmprinter.def.json +msgctxt "speed_ironing label" +msgid "Ironing Speed" +msgstr "Velocidad de alisado" + +#: fdmprinter.def.json +msgctxt "speed_ironing description" +msgid "The speed at which to pass over the top surface." +msgstr "Velocidad a la que pasa por encima de la superficie superior." + +#: fdmprinter.def.json +msgctxt "acceleration_ironing label" +msgid "Ironing Acceleration" +msgstr "Aceleración del alisado" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing description" +msgid "The acceleration with which ironing is performed." +msgstr "La aceleración a la que se produce el alisado." + +#: fdmprinter.def.json +msgctxt "jerk_ironing label" +msgid "Ironing Jerk" +msgstr "Impulso de alisado" + +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "Cambio en la velocidad instantánea máxima durante el alisado." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4729,6 +4902,66 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Matriz de transformación que se aplicará al modelo cuando se cargue desde el archivo." +#~ msgctxt "wall_extruder_nr label" +#~ msgid "Wall Extruder" +#~ msgstr "Extrusor de pared" + +#~ msgctxt "wall_extruder_nr description" +#~ msgid "The extruder train used for printing the walls. This is used in multi-extrusion." +#~ msgstr "El tren extrusor que se utiliza para imprimir paredes. Se emplea en la extrusión múltiple." + +#~ msgctxt "infill_pattern description" +#~ msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." +#~ msgstr "Patrón del material de relleno de la impresión. El relleno de línea y zigzag cambian de dirección en capas alternas, reduciendo así el coste del material. Los patrones de rejilla, triángulo, cúbico, tetraédrico y concéntrico se imprimen en todas las capas por completo. El relleno cúbico y el tetraédrico cambian en cada capa para proporcionar una distribución de fuerza equitativa en cada dirección." + +#~ msgctxt "infill_pattern option tetrahedral" +#~ msgid "Tetrahedral" +#~ msgstr "Tetraédrico" + +#~ msgctxt "expand_skins_into_infill label" +#~ msgid "Expand Skins Into Infill" +#~ msgstr "Expandir forros en el relleno" + +#~ msgctxt "expand_skins_into_infill description" +#~ msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." +#~ msgstr "Expanda las áreas de forro del forro superior e inferior en superficies planas. De forma predeterminada, los forros se detienen por debajo de las líneas de pared que rodean el relleno, pero pueden aparecer agujeros si su densidad es muy baja. Esta configuración expande los forros más allá de las líneas de pared de modo que el relleno de la siguiente capa recae en el forro." + +#~ msgctxt "expand_upper_skins label" +#~ msgid "Expand Top Skins Into Infill" +#~ msgstr "Expandir forros superiores en el relleno" + +#~ msgctxt "expand_upper_skins description" +#~ msgid "Expand the top skin areas (areas with air above) so that they support infill above." +#~ msgstr "Expanda las áreas del forro superior (áreas con aire por encima) para que soporten el relleno que tiene arriba." + +#~ msgctxt "expand_lower_skins label" +#~ msgid "Expand Bottom Skins Into Infill" +#~ msgstr "Expandir forros inferiores en el relleno" + +#~ msgctxt "expand_lower_skins description" +#~ msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." +#~ msgstr "Expanda las áreas del forro inferior (áreas con aire por debajo) para que queden sujetas por las capas de relleno superiores e inferiores." + +#~ msgctxt "expand_skins_expand_distance description" +#~ msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." +#~ msgstr "Distancia de expansión de los forros en el relleno. La distancia predeterminada es suficiente para cubrir el hueco que existe entre las líneas de relleno y evitará que aparezcan agujeros en el forro en aquellas áreas en las que la densidad del relleno es baja. A menudo una distancia más pequeña es suficiente." + +#~ msgctxt "support_skip_some_zags label" +#~ msgid "Skip Some ZigZags Connections" +#~ msgstr "Omitir algunas conexiones en zigzag" + +#~ msgctxt "support_skip_some_zags description" +#~ msgid "Skip some ZigZags connections to make the support structure easier to break." +#~ msgstr "Omite algunas conexiones en zigzag para que la estructura de soporte se rompa fácilmente." + +#~ msgctxt "support_zag_skip_count label" +#~ msgid "ZigZag Connection Skip Count" +#~ msgstr "Omitir recuento de conexión en zigzag" + +#~ msgctxt "support_zag_skip_count description" +#~ msgid "Skip one in every N connection lines to make the support structure easier to break." +#~ msgstr "Omite una de cada N líneas de conexión para que la estructura de soporte se rompa fácilmente." + #~ msgctxt "machine_show_variants label" #~ msgid "Show machine variants" #~ msgstr "Mostrar versiones de la máquina" @@ -4891,4 +5124,4 @@ msgstr "Matriz de transformación que se aplicará al modelo cuando se cargue de #~ msgctxt "multiple_mesh_overlap label" #~ msgid "Dual Extrusion Overlap" -#~ msgstr "Superposición de extrusión doble" \ No newline at end of file +#~ msgstr "Superposición de extrusión doble" diff --git a/resources/i18n/fi_FI/cura.po b/resources/i18n/fi_FI/cura.po index f54122c4d6..63b47faaee 100644 --- a/resources/i18n/fi_FI/cura.po +++ b/resources/i18n/fi_FI/cura.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -16,15 +16,15 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:28 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" msgstr "Laitteen asetukset" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" -msgid "X-Ray" -msgstr "Kerros" +msgid "X-Ray view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -36,40 +36,69 @@ msgctxt "@item:inlistbox" msgid "GCode File" msgstr "GCode-tiedosto" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:13 -msgctxt "@label" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:17 -msgctxt "@info:whatsthis" -msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "Hyväksyy GCode-määrittelyt ja lähettää ne Wi-Fi-yhteyden kautta Doodle3D WiFi-Boxiin." - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:36 -msgctxt "@item:inmenu" -msgid "Doodle3D printing" -msgstr "Doodle3D-tulostus" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:37 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" -msgid "Print with Doodle3D" -msgstr "Tulostus Doodle3D:n avulla" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:38 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 +msgctxt "@properties:tooltip" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Peruuta" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 +msgctxt "@info:status" +msgid "Sending data to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 +msgctxt "@info:status" +msgid "Unable to send data to Doodle3D Connect. Is another job still active?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 +msgctxt "@info:status" +msgid "File sent to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect.." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" -msgid "Print with " -msgstr "Tulostus:" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:49 -msgctxt "@title:menu" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:50 -msgctxt "@item:inlistbox" -msgid "Enable Scan devices..." -msgstr "Ota skannauslaitteet käyttöön..." +msgid "Open the Doodle3D Connect web interface" +msgstr "" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -111,16 +140,36 @@ msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Uuden työn aloittaminen ei onnistu, koska tulostin on varattu tai sitä ei ole yhdistetty." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +msgctxt "@info:title" +msgid "Print Details" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "Tämä tulostin ei tue USB-tulostusta, koska se käyttää UltiGCode-tyyppiä." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Uuden työn aloittaminen ei onnistu, koska tulostin ei tue USB-tulostusta." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:909 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 +msgctxt "@info:title" +msgid "Warning" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." @@ -132,10 +181,10 @@ msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "Tulostimelle ei löydetty laiteohjelmistoa (%s)." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:14 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G-tiedosto" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +msgctxt "@info:title" +msgid "Printer Firmware" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -150,47 +199,79 @@ msgstr "Tallenna siirrettävälle asemalle {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 #, python-brace-format -msgctxt "@info:progress" +msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "Tallennetaan siirrettävälle asemalle {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +msgctxt "@info:title" +msgid "Saving" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "Ei voitu tallentaa tiedostoon {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format -msgctxt "@info:status" -msgid "Saved to Removable Drive {0} as {1}" -msgstr "Tallennettu siirrettävälle asemalle {0} nimellä {1}" +msgctxt "@info:status Don't translate the tag {device}!" +msgid "Could not find a file name when trying to write to {device}." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -msgctxt "@action:button" -msgid "Eject" -msgstr "Poista" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -#, python-brace-format -msgctxt "@action" -msgid "Eject removable device {0}" -msgstr "Poista siirrettävä asema {0}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:138 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #, python-brace-format msgctxt "@info:status" msgid "Could not save to removable drive {0}: {1}" msgstr "Ei voitu tallentaa siirrettävälle asemalle {0}: {1}" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:148 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:675 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:683 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:145 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:152 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 +msgctxt "@info:title" +msgid "Error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +#, python-brace-format +msgctxt "@info:status" +msgid "Saved to Removable Drive {0} as {1}" +msgstr "Tallennettu siirrettävälle asemalle {0} nimellä {1}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +msgctxt "@info:title" +msgid "File Saved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +msgctxt "@action:button" +msgid "Eject" +msgstr "Poista" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +#, python-brace-format +msgctxt "@action" +msgid "Eject removable device {0}" +msgstr "Poista siirrettävä asema {0}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 #, python-brace-format msgctxt "@info:status" msgid "Ejected {0}. You can now safely remove the drive." msgstr "Poistettu {0}. Voit nyt poistaa aseman turvallisesti." -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:150 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 +msgctxt "@info:title" +msgid "Safely Remove Hardware" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format msgctxt "@info:status" msgid "Failed to eject {0}. Another program may be using the drive." @@ -201,219 +282,351 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Siirrettävä asema" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:49 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Tulosta verkon kautta" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Tulosta verkon kautta" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:156 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 msgctxt "@info:status" msgid "Access to the printer requested. Please approve the request on the printer" msgstr "Tulostimen käyttöoikeutta pyydetty. Hyväksy tulostimen pyyntö" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +msgctxt "@info:title" +msgid "Connection status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 msgctxt "@info:status" msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:468 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@action:button" msgid "Retry" msgstr "Yritä uudelleen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Lähetä käyttöoikeuspyyntö uudelleen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Tulostimen käyttöoikeus hyväksytty" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 msgctxt "@info:status" msgid "No access to print with this printer. Unable to send print job." msgstr "Tällä tulostimella tulostukseen ei ole käyttöoikeutta. Tulostustyön lähetys ei onnistu." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:28 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:72 msgctxt "@action:button" msgid "Request Access" msgstr "Pyydä käyttöoikeutta" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:71 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "Lähetä tulostimen käyttöoikeuspyyntö" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:358 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:375 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 msgctxt "@info:status" msgid "Connected over the network. Please approve the access request on the printer." msgstr "Yhdistetty verkon kautta. Hyväksy tulostimen käyttöoikeuspyyntö." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:365 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:382 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 msgctxt "@info:status" msgid "Connected over the network." msgstr "Yhdistetty verkon kautta tulostimeen." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:378 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "Yhdistetty verkon kautta tulostimeen. Ei käyttöoikeutta tulostimen hallintaan." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:383 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:400 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 msgctxt "@info:status" msgid "Access request was denied on the printer." msgstr "Tulostimen käyttöoikeuspyyntö hylättiin." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:386 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:403 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Access request failed due to a timeout." msgstr "Käyttöoikeuspyyntö epäonnistui aikakatkaisun vuoksi." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:450 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:467 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "The connection with the network was lost." msgstr "Yhteys verkkoon menetettiin." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:481 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 msgctxt "@info:status" msgid "The connection with the printer was lost. Check your printer to see if it is connected." msgstr "Yhteys tulostimeen menetettiin. Tarkista, onko tulostin yhdistetty." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:630 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:649 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 #, python-format msgctxt "@info:status" msgid "Unable to start a new print job, printer is busy. Current printer status is %s." msgstr "Uuden tulostustyön aloittaminen ei onnistu, koska tulostin on varattu. Nykyinen tulostimen tila on %s." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:654 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Uuden tulostustyön aloittaminen ei onnistu. PrintCorea ei ole ladattu aukkoon {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:661 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:682 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Uuden tulostustyön aloittaminen ei onnistu. Materiaalia ei ole ladattu aukkoon {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:670 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Kelalle {0} ei ole tarpeeksi materiaalia." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:680 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Eri PrintCore (Cura: {0}, tulostin: {1}) valittu suulakkeelle {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:694 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:716 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@label" msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Eri materiaali (Cura: {0}, tulostin: {1}) valittu suulakkeelle {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:724 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "Print Core -tulostusydintä {0} ei ole kalibroitu oikein. Tulostimen XY-kalibrointi tulee suorittaa." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:707 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:729 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "Haluatko varmasti tulostaa valitulla määrityksellä?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:730 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 msgctxt "@label" msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "Tulostimen ja Curan määrityksen tai kalibroinnin välillä on ristiriita. Parhaat tulokset saavutetaan viipaloimalla aina tulostimeen asetetuille PrintCoreille ja materiaaleille." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:736 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Ristiriitainen määritys" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:815 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Lähetetään tietoja tulostimeen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:816 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:46 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:137 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Peruuta" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +msgctxt "@info:title" +msgid "Sending Data" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:884 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Tietojen lähetys tulostimeen ei onnistu. Onko toinen työ yhä aktiivinen?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1018 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1050 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Keskeytetään tulostus..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1024 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Tulostus keskeytetty. Tarkista tulostin" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1030 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Tulostus pysäytetään..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1032 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Tulostusta jatketaan..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1175 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synkronoi tulostimen kanssa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1177 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "Haluatko käyttää nykyistä tulostimen määritystä Curassa?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1220 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 msgctxt "@label" msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "Tulostimen PrintCoret tai materiaalit eivät vastaa tulostettavan projektin asetuksia. Parhaat tulokset saavutetaan viipaloimalla aina tulostimeen asetetuille PrintCoreille ja materiaaleille." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.py:19 msgctxt "@action" msgid "Connect via Network" msgstr "Yhdistä verkon kautta" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:172 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#, python-brace-format +msgctxt "Count is number of printers." +msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#, python-brace-format +msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#, python-brace-format +msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +msgctxt "@info:status" +msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#, python-brace-format +msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Lataa" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +msgctxt "@info" +msgid "Could not access update information." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" msgstr "SolidWorks-tiedostoa avattaessa ilmeni virheitä! Tarkista, voiko tiedoston avata SolidWorks-ohjelmistossa ilman ongelmia." @@ -432,17 +645,12 @@ msgstr "SolidWorks-kokoonpanotiedosto" msgid "Configure" msgstr "Määritä" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:129 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 #, python-format msgctxt "@info:status" msgid "Error while starting %s!" msgstr "%s:n käynnistyksen aikana ilmeni virhe!" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:207 -msgctxt "@info:status" -msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" -msgstr "Muista, että SolidWorks-tiedosto on avattava uudelleen manuaalisesti. Mallin lataaminen uudelleen ei toimi." - #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 msgid "Modify G-Code" msgstr "Muokkaa GCode-arvoa" @@ -452,7 +660,12 @@ msgctxt "@info" msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." msgstr "Cura kerää anonyymejä viipalointiin liittyviä tilastotietoja. Tämän voi poistaa käytöstä asetuksien kautta." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:44 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 +msgctxt "@info:title" +msgid "Collecting Data" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" msgid "Dismiss" msgstr "Ohita" @@ -470,14 +683,19 @@ msgstr "GCode-tiedosto" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" -msgid "Layers" -msgstr "Kerrokset" +msgid "Layer view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura ei näytä kerroksia täsmällisesti, kun rautalankatulostus on käytössä" +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 +msgctxt "@info:title" +msgid "Layer View" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -503,24 +721,31 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF-kuva" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:281 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "Valittu materiaali ei sovellu käytettäväksi valitun laitteen tai kokoonpanon kanssa." +msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:308 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:307 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 +msgctxt "@info:title" +msgid "Unable to slice" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Viipalointi ei onnistu nykyisten asetuksien ollessa voimassa. Seuraavissa asetuksissa on virheitä: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:317 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:306 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Viipalointi ei onnistu, koska esitäyttötorni tai esitäytön sijainti tai sijainnit eivät kelpaa." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:325 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:315 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Ei viipaloitavaa, koska mikään malleista ei sovellu tulostustilavuuteen. Skaalaa tai pyöritä mallia, kunnes se on sopiva." @@ -531,6 +756,11 @@ msgctxt "@info:status" msgid "Processing Layers" msgstr "Käsitellään kerroksia" +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +msgctxt "@info:title" +msgid "Information" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" msgid "Per Model Settings" @@ -542,13 +772,13 @@ msgid "Configure Per Model Settings" msgstr "Määritä mallikohtaiset asetukset" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:475 msgctxt "@title:tab" msgid "Recommended" msgstr "Suositeltu" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:459 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 msgctxt "@title:tab" msgid "Custom" msgstr "Mukautettu" @@ -559,25 +789,37 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF-tiedosto" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:122 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1050 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 msgctxt "@label" msgid "Nozzle" msgstr "Suutin" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 +msgctxt "@menuitem" msgid "Browse plugins" -msgstr "Selaa laajennuksia" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:120 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +msgctxt "@info:tile" +msgid "Warning" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" msgid "Plugin browser" msgstr "Lisäosien selain" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" -msgid "Solid" -msgstr "Kiinteä" +msgid "Solid view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -589,7 +831,13 @@ msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-coden jäsennys" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:365 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Varmista, että G-code on tulostimelle ja sen tulostusasetuksille soveltuva, ennen kuin lähetät tiedoston siihen. G-coden esitys ei välttämättä ole tarkka." @@ -611,7 +859,7 @@ msgid "Cura Project 3MF file" msgstr "Cura-projektin 3MF-tiedosto" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Valitse päivitykset" @@ -631,18 +879,73 @@ msgctxt "@action" msgid "Level build plate" msgstr "Tasaa alusta" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:247 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Ulkoseinämä" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Sisäseinämät" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Pintakalvo" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Täyttö" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Tuen täyttö" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Tukiliittymä" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support" +msgstr "Tuki" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Siirtoliike" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Takaisinvedot" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Other" +msgstr "Muu" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Esiviipaloitu tiedosto {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 msgctxt "@item:material" msgid "No material loaded" msgstr "Ei ladattua materiaalia" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 msgctxt "@item:material" msgid "Unknown material" msgstr "Tuntematon materiaali" @@ -652,35 +955,56 @@ msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Uusien paikkojen etsiminen kappaleille" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:85 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Kaikille kappaleille ei löydy paikkaa tulostustilavuudessa." -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:417 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 msgctxt "@title:window" msgid "File Already Exists" msgstr "Tiedosto on jo olemassa" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:418 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 #, python-brace-format -msgctxt "@label" +msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "Tiedosto {0} on jo olemassa. Haluatko varmasti kirjoittaa sen päälle?" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:801 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" msgid "Custom" msgstr "Mukautettu" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:805 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 msgctxt "@label" msgid "Custom Material" msgstr "Mukautettu materiaali" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +msgctxt "@info:status" +msgid "The selected material is incompatible with the selected machine or configuration." +msgstr "Valittu materiaali ei sovellu käytettäväksi valitun laitteen tai kokoonpanon kanssa." + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:109 +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 +msgctxt "@info:title" +msgid "Incompatible Material" +msgstr "" + #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." msgid "The selected material diameter causes the material to become incompatible with the current printer." @@ -698,70 +1022,86 @@ msgstr "Kumoa materiaalin halkaisijan muutokset." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "Profiilin vienti epäonnistui tiedostoon {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:148 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "Profiilin vienti epäonnistui tiedostoon {0}: Kirjoitin-lisäosa ilmoitti virheestä." +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "Profiili viety tiedostoon {0}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:199 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:208 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:242 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +msgctxt "@info:title" +msgid "Export Details" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:213 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:247 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "Profiilin tuonti epäonnistui tiedostosta {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:210 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:246 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Onnistuneesti tuotu profiili {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:249 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Profiililla {0} on tuntematon tiedostotyyppi tai se on vioittunut." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:267 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:272 msgctxt "@label" msgid "Custom profile" msgstr "Mukautettu profiili" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:278 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Profiilista puuttuu laatutyyppi." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:300 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Laatutyyppiä {0} ei löydy nykyiselle kokoonpanolle." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:95 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "Tulostustilavuuden korkeutta on vähennetty tulostusjärjestysasetuksen vuoksi, jotta koroke ei osuisi tulostettuihin malleihin." +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 +msgctxt "@info:title" +msgid "Build Volume" +msgstr "" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Kappaleiden kertominen ja sijoittelu" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "" + #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" msgid "Crash Report" @@ -773,41 +1113,44 @@ msgid "" "

A fatal exception has occurred that we could not recover from!

\n" "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" " " -msgstr "

Tapahtui vakava poikkeus, josta palautuminen ei onnistunut!

\n

Tee virheraportti alla olevien tietojen perusteella osoitteessa http://github.com/Ultimaker/Cura/issues

\n " +msgstr "" +"

Tapahtui vakava poikkeus, josta palautuminen ei onnistunut!

\n" +"

Tee virheraportti alla olevien tietojen perusteella osoitteessa http://github.com/Ultimaker/Cura/issues

\n" +" " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 msgctxt "@action:button" msgid "Open Web Page" msgstr "Avaa verkkosivu" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:248 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Ladataan laitteita..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:610 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Asetetaan näkymää..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:652 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Ladataan käyttöliittymää..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:815 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1285 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1295 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Vain yksi G-code-tiedosto voidaan ladata kerralla. Tiedoston {0} tuonti ohitettiin." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1294 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1304 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" @@ -837,12 +1180,12 @@ msgstr "X (leveys)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:286 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:838 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:839 msgctxt "@label" msgid "mm" msgstr "mm" @@ -932,108 +1275,72 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "Suuttimen kärjen ja korokejärjestelmän (X- ja Y-akselit) välinen korkeusero. Käytetään estämään aiempien tulosteiden ja korokkeen yhteentörmäyksiä, kun tulostetaan yksi kerrallaan." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Suulakkeiden määrä" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 msgctxt "@tooltip" msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." msgstr "Tulostimen tukema tulostuslangan nimellinen halkaisija. Materiaali ja/tai profiili korvaa tarkan halkaisijan." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:290 msgctxt "@label" msgid "Material diameter" msgstr "Materiaalin halkaisija" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:297 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:388 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 msgctxt "@label" msgid "Nozzle size" msgstr "Suuttimen koko" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:315 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 msgctxt "@label" msgid "Start Gcode" msgstr "Aloita GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:325 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "GCode-komennot, jotka suoritetaan aivan alussa." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:334 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:335 msgctxt "@label" msgid "End Gcode" msgstr "Lopeta GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:344 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "GCode-komennot, jotka suoritetaan aivan lopussa." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:376 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:377 msgctxt "@label" msgid "Nozzle Settings" msgstr "Suutinasetukset" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:398 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 msgctxt "@label" msgid "Nozzle offset X" msgstr "Suuttimen X-siirtymä" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:410 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Suuttimen Y-siirtymä" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:431 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "Suulake – aloita Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:449 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 msgctxt "@label" msgid "Extruder End Gcode" msgstr "Suulake – lopeta Gcode" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:20 -msgctxt "@title:window" -msgid "Doodle3D Settings" -msgstr "Doodle3D-asetukset" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:53 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 -msgctxt "@action:button" -msgid "Save" -msgstr "Tallenna" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:23 -msgctxt "@title:window" -msgid "Print to: %1" -msgstr "Tulosta kohteeseen %1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:40 -msgctxt "@label" -msgid "Extruder Temperature: %1/%2°C" -msgstr "Suulakkeen lämpötila: %1/%2 °C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:46 -msgctxt "@label" -msgid "Bed Temperature: %1/%2°C" -msgstr "Pöydän lämpötila: %1/%2 °C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:64 -msgctxt "@label" -msgid "%1" -msgstr "%1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:82 -msgctxt "@action:button" -msgid "Print" -msgstr "Tulosta" - #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" msgid "Changelog" @@ -1042,9 +1349,10 @@ msgstr "Muutosloki" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:55 #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:446 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:306 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:78 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:125 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 @@ -1098,30 +1406,38 @@ msgid "Unknown error code: %1" msgstr "Tuntemattoman virheen koodi: %1" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:55 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Yhdistä verkkotulostimeen" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:65 msgctxt "@label" msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "Tulosta suoraan tulostimeen verkon kautta yhdistämällä tulostin verkkoon verkkokaapelilla tai yhdistämällä tulostin Wi-Fi-verkkoon. Jos Curaa ei yhdistetä tulostimeen, GCode-tiedostot voidaan silti siirtää tulostimeen USB-aseman avulla.\n\nValitse tulostin alla olevasta luettelosta:" +msgstr "" +"Tulosta suoraan tulostimeen verkon kautta yhdistämällä tulostin verkkoon verkkokaapelilla tai yhdistämällä tulostin Wi-Fi-verkkoon. Jos Curaa ei yhdistetä tulostimeen, GCode-tiedostot voidaan silti siirtää tulostimeen USB-aseman avulla.\n" +"\n" +"Valitse tulostin alla olevasta luettelosta:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 msgctxt "@action:button" msgid "Add" msgstr "Lisää" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:85 msgctxt "@action:button" msgid "Edit" msgstr "Muokkaa" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 @@ -1130,87 +1446,210 @@ msgid "Remove" msgstr "Poista" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:33 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:104 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:35 msgctxt "@action:button" msgid "Refresh" msgstr "Päivitä" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:196 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:196 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Jos tulostinta ei ole luettelossa, lue verkkotulostuksen vianetsintäopas" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:223 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:223 msgctxt "@label" msgid "Type" msgstr "Tyyppi" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 msgctxt "@label" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:238 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:238 msgctxt "@label" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:241 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:241 msgctxt "@label" msgid "Unknown" msgstr "Tuntematon" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:254 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:254 msgctxt "@label" msgid "Firmware version" msgstr "Laiteohjelmistoversio" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:266 msgctxt "@label" msgid "Address" msgstr "Osoite" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Tämän osoitteen tulostin ei ole vielä vastannut." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Yhdistä" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 msgctxt "@title:window" msgid "Printer Address" msgstr "Tulostimen osoite" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Anna verkon tulostimen IP-osoite tai isäntänimi." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 msgctxt "@action:button" msgid "Ok" msgstr "OK" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:37 msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Yhdistä tulostimeen" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:116 msgctxt "@info:tooltip" msgid "Load the configuration of the printer into Cura" msgstr "Lataa tulostimen määritys Curaan" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:117 msgctxt "@action:button" msgid "Activate Configuration" msgstr "Aktivoi määritys" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Tulosta" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 +msgctxt "@label:status" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 +msgctxt "@label:status" +msgid "Reserved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 +msgctxt "@label:status" +msgid "Finished" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 +msgctxt "@label:status" +msgid "Preparing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 +msgctxt "@label:status" +msgid "Available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 +msgctxt "@label" +msgid "Completed on: " +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 +msgctxt "@label" +msgid "Clear build plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 +msgctxt "@label" +msgid "Preparing to print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 +msgctxt "@label" +msgid "PRINTER GROUP" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 +msgctxt "@title" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 +msgctxt "@label" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 +msgctxt "@label" +msgid "Queued" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 +msgctxt "@label:title" +msgid "Printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 +msgctxt "@action:button" +msgid "View printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1299,67 +1738,62 @@ msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Muuta aktiivisia jälkikäsittelykomentosarjoja" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:71 -msgctxt "@label" -msgid "View Mode: Layers" -msgstr "Näyttötapa: Kerrokset" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:88 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 msgctxt "@label" msgid "Color scheme" msgstr "Värimalli" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:102 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:91 msgctxt "@label:listbox" msgid "Material Color" msgstr "Materiaalin väri" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:106 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:95 msgctxt "@label:listbox" msgid "Line Type" msgstr "Linjojen tyyppi" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:144 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 msgctxt "@label" msgid "Compatibility Mode" msgstr "Yhteensopivuustila" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:210 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 msgctxt "@label" msgid "Show Travels" msgstr "Näytä siirtoliikkeet" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 msgctxt "@label" msgid "Show Helpers" msgstr "Näytä avustimet" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 msgctxt "@label" msgid "Show Shell" msgstr "Näytä kuori" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:234 msgctxt "@label" msgid "Show Infill" msgstr "Näytä täyttö" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:264 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:283 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Näytä vain yläkerrokset" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:273 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:292 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Näytä 5 yksityiskohtaista kerrosta ylhäällä" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:284 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:303 msgctxt "@label" msgid "Top / Bottom" msgstr "Yläosa/alaosa" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:288 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 msgctxt "@label" msgid "Inner Wall" msgstr "Sisäseinämä" @@ -1434,23 +1868,23 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Tasoitus" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:157 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 msgctxt "@action:button" msgid "Select settings" msgstr "Valitse asetukset" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:197 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Valitse tätä mallia varten mukautettavat asetukset" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:221 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Suodatin..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:245 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 msgctxt "@label:checkbox" msgid "Show all" msgstr "Näytä kaikki" @@ -1587,25 +2021,43 @@ msgctxt "@title:window" msgid "Find & Update plugins" msgstr "Etsi ja päivitä laajennuksia" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:27 msgctxt "@label" msgid "Here you can find a list of Third Party plugins." msgstr "Tässä on luettelo muiden valmistajien laajennuksista." -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:143 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 msgctxt "@action:button" msgid "Upgrade" msgstr "Päivitä" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 msgctxt "@action:button" msgid "Installed" msgstr "Asennettu" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 +msgctxt "@title:window" +msgid "Plugin License Agreement" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 +msgctxt "@label" +msgid "" +" plugin contains a license.\n" +"You need to accept this license to install this plugin.\n" +"Do you agree with the terms below?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" -msgid "Download" -msgstr "Lataa" +msgid "Accept" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" +msgstr "" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -1781,71 +2233,71 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "Kaikki on kunnossa! CheckUp on valmis." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Ei yhteyttä tulostimeen" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:91 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "Tulostin ei hyväksy komentoja" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "Huolletaan. Tarkista tulostin" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Yhteys tulostimeen menetetty" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Tulostetaan..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Keskeytetty" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Valmistellaan..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Poista tuloste" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 msgctxt "@label:" msgid "Resume" msgstr "Jatka" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Pause" msgstr "Keskeytä" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:271 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 msgctxt "@label:" msgid "Abort Print" msgstr "Keskeytä tulostus" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 msgctxt "@window:title" msgid "Abort print" msgstr "Keskeytä tulostus" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:283 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Haluatko varmasti keskeyttää tulostuksen?" @@ -1860,7 +2312,9 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "Olet mukauttanut profiilin asetuksia.\nHaluatko säilyttää vai hylätä nämä asetukset?" +msgstr "" +"Olet mukauttanut profiilin asetuksia.\n" +"Haluatko säilyttää vai hylätä nämä asetukset?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -1878,19 +2332,19 @@ msgid "Customized" msgstr "Mukautettu" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Kysy aina" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:587 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Hylkää äläkä kysy uudelleen" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:588 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Säilytä äläkä kysy uudelleen" @@ -2031,7 +2485,7 @@ msgid "Unit" msgstr "Yksikkö" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 msgctxt "@title:tab" msgid "General" msgstr "Yleiset" @@ -2046,223 +2500,223 @@ msgctxt "@label" msgid "Language:" msgstr "Kieli:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 msgctxt "@label" msgid "Currency:" msgstr "Valuutta:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 msgctxt "@label" msgid "Theme:" msgstr "Teema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Sovellus on käynnistettävä uudelleen, jotta nämä muutokset tulevat voimaan." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:289 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Viipaloi automaattisesti, kun asetuksia muutetaan." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Viipaloi automaattisesti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Näyttöikkunan käyttäytyminen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Korosta mallin vailla tukea olevat alueet punaisella. Ilman tukea nämä alueet eivät tulostu kunnolla." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Näytä uloke" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Siirtää kameraa siten, että valittuna oleva malli on näkymän keskellä." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:347 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Keskitä kamera kun kohde on valittu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Pitääkö Curan oletusarvoinen zoom-toimintatapa muuttaa päinvastaiseksi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Käännä kameran zoomin suunta päinvastaiseksi." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Tuleeko zoomauksen siirtyä hiiren suuntaan?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Zoomaa hiiren suuntaan" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Pitäisikö alustalla olevia malleja siirtää niin, etteivät ne enää leikkaa toisiaan?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:382 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Varmista, että mallit ovat erillään" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Pitäisikö tulostusalueella olevia malleja siirtää alas niin, että ne koskettavat tulostusalustaa?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Pudota mallit automaattisesti alustalle" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Näytä varoitusviesti gcode-lukijassa." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Gcode-lukijan varoitusviesti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Pakotetaanko kerros yhteensopivuustilaan?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Pakota kerrosnäkymän yhteensopivuustila (vaatii uudelleenkäynnistyksen)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 msgctxt "@label" msgid "Opening and saving files" msgstr "Tiedostojen avaaminen ja tallentaminen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Pitäisikö mallit skaalata tulostustilavuuteen, jos ne ovat liian isoja?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:462 msgctxt "@option:check" msgid "Scale large models" msgstr "Skaalaa suuret mallit" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Malli voi vaikuttaa erittäin pieneltä, jos sen koko on ilmoitettu esimerkiksi metreissä eikä millimetreissä. Pitäisikö nämä mallit suurentaa?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:469 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Skaalaa erittäin pienet mallit" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Pitäisikö tulostustyön nimeen lisätä automaattisesti tulostimen nimeen perustuva etuliite?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Lisää laitteen etuliite työn nimeen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Näytetäänkö yhteenveto, kun projektitiedosto tallennetaan?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:496 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Näytä yhteenvetoikkuna, kun projekti tallennetaan" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Projektitiedoston avaamisen oletustoimintatapa" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:513 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Projektitiedoston avaamisen oletustoimintatapa: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:526 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 msgctxt "@option:openProject" msgid "Always ask" msgstr "Kysy aina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Avaa aina projektina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:528 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always import models" msgstr "Tuo mallit aina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:564 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Kun olet tehnyt muutokset profiiliin ja vaihtanut toiseen, näytetään valintaikkuna, jossa kysytään, haluatko säilyttää vai hylätä muutokset. Tässä voit myös valita oletuskäytöksen, jolloin valintaikkunaa ei näytetä uudelleen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@label" msgid "Override Profile" msgstr "Kumoa profiili" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:622 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 msgctxt "@label" msgid "Privacy" msgstr "Tietosuoja" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Pitäisikö Curan tarkistaa saatavilla olevat päivitykset, kun ohjelma käynnistetään?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:634 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Tarkista päivitykset käynnistettäessä" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Pitäisikö anonyymejä tietoja tulosteesta lähettää Ultimakerille? Huomaa, että malleja, IP-osoitteita tai muita henkilökohtaisia tietoja ei lähetetä eikä tallenneta." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Lähetä (anonyymit) tulostustiedot" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:441 msgctxt "@title:tab" msgid "Printers" msgstr "Tulostimet" @@ -2312,7 +2766,7 @@ msgid "Waiting for a printjob" msgstr "Odotetaan tulostustyötä" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 msgctxt "@title:tab" msgid "Profiles" msgstr "Profiilit" @@ -2410,7 +2864,7 @@ msgid "Export Profile" msgstr "Profiilin vienti" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 msgctxt "@title:tab" msgid "Materials" msgstr "Materiaalit" @@ -2442,14 +2896,14 @@ msgid "Import Material" msgstr "Tuo materiaali" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "Materiaalin tuominen epäonnistui: %1: %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "Materiaalin tuominen onnistui: %1" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2458,17 +2912,17 @@ msgid "Export Material" msgstr "Vie materiaali" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "Materiaalin vieminen epäonnistui kohteeseen %1: %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "Materiaalin vieminen onnistui kohteeseen %1" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:822 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 msgctxt "@title:window" msgid "Add Printer" msgstr "Lisää tulostin" @@ -2483,71 +2937,6 @@ msgctxt "@action:button" msgid "Add Printer" msgstr "Lisää tulostin" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:166 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Ulkoseinämä" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:167 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Sisäseinämät" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:168 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Pintakalvo" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:169 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Täyttö" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:170 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Tuen täyttö" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:171 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Tukiliittymä" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:172 -msgctxt "@tooltip" -msgid "Support" -msgstr "Tuki" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:173 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Siirtoliike" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:174 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Takaisinvedot" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:175 -msgctxt "@tooltip" -msgid "Other" -msgstr "Muu" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:217 -msgctxt "@label" -msgid "00h 00min" -msgstr "00 h 00 min" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:270 -msgctxt "@label" -msgid "%1 m / ~ %2 g / ~ %4 %3" -msgstr "%1 m / ~ %2 g / ~ %4 %3" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:275 -msgctxt "@label" -msgid "%1 m / ~ %2 g" -msgstr "%1 m / ~ %2 g" - #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -2563,7 +2952,9 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "Cura-ohjelman on kehittänyt Ultimaker B.V. yhteistyössä käyttäjäyhteisön kanssa.\nCura hyödyntää seuraavia avoimeen lähdekoodiin perustuvia projekteja:" +msgstr "" +"Cura-ohjelman on kehittänyt Ultimaker B.V. yhteistyössä käyttäjäyhteisön kanssa.\n" +"Cura hyödyntää seuraavia avoimeen lähdekoodiin perustuvia projekteja:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -2655,32 +3046,48 @@ msgctxt "@label" msgid "SVG icons" msgstr "SVG-kuvakkeet" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +msgctxt "@label" +msgid "Profile:" +msgstr "Profiili:" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Jotkut asetusten ja ohitusten arvot eroavat profiiliin tallennetuista arvoista.\n" +"\n" +"Avaa profiilin hallinta napsauttamalla." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" msgid "Search..." msgstr "Haku…" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Kopioi arvo kaikkiin suulakepuristimiin" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:405 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Piilota tämä asetus" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Älä näytä tätä asetusta" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:419 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Pidä tämä asetus näkyvissä" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:438 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Määritä asetusten näkyvyys..." @@ -2691,7 +3098,10 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Jotkin piilotetut asetukset käyttävät arvoja, jotka eroavat normaaleista lasketuista arvoista.\n\nTee asetuksista näkyviä napsauttamalla." +msgstr "" +"Jotkin piilotetut asetukset käyttävät arvoja, jotka eroavat normaaleista lasketuista arvoista.\n" +"\n" +"Tee asetuksista näkyviä napsauttamalla." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 msgctxt "@label Header for list of settings." @@ -2719,7 +3129,10 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Tämän asetuksen arvo eroaa profiilin arvosta.\n\nPalauta profiilin arvo napsauttamalla." +msgstr "" +"Tämän asetuksen arvo eroaa profiilin arvosta.\n" +"\n" +"Palauta profiilin arvo napsauttamalla." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 msgctxt "@label" @@ -2727,26 +3140,56 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Tämä asetus on normaalisti laskettu, mutta sillä on tällä hetkellä absoluuttinen arvo.\n\nPalauta laskettu arvo napsauttamalla." +msgstr "" +"Tämä asetus on normaalisti laskettu, mutta sillä on tällä hetkellä absoluuttinen arvo.\n" +"\n" +"Palauta laskettu arvo napsauttamalla." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Tulostuksen asennus" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "Tulostuksen asennus ei käytössä\nG-code-tiedostoja ei voida muokata" +msgstr "" +"Tulostuksen asennus ei käytössä\n" +"G-code-tiedostoja ei voida muokata" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 +msgctxt "@label" +msgid "00h 00min" +msgstr "00 h 00 min" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +msgctxt "@tooltip" +msgid "Time information" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 +msgctxt "@description" +msgid "Print time" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +msgctxt "@label" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 +msgctxt "@label" +msgid "%1m / ~ %2g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" msgid "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." msgstr "Suositeltu tulostuksen asennus

Tulosta valitun tulostimen, materiaalin ja laadun suositelluilla asetuksilla." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:460 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:481 msgctxt "@tooltip" msgid "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." msgstr "Mukautettu tulostuksen asennus

Tulosta hallitsemalla täysin kaikkia viipalointiprosessin vaiheita." @@ -2796,81 +3239,87 @@ msgid "No printer connected" msgstr "Ei tulostinta yhdistettynä" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" -msgid "Hotend" -msgstr "Kuuma pää" +msgid "Extruder" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:119 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 +msgctxt "@tooltip" +msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "Tämän suulakkeen nykyinen lämpötila." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Tämän suulakkeen materiaalin väri." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Tämän suulakkeen materiaali." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Tähän suulakkeeseen liitetty suutin." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:249 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 msgctxt "@label" msgid "Build plate" msgstr "Alusta" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:278 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "Lämmitettävän pöydän kohdelämpötila. Pöytä lämpenee tai viilenee kohti tätä lämpötilaa. Jos asetus on 0, pöydän lämmitys sammutetaan." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:310 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:343 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "Lämmitettävän pöydän nykyinen lämpötila." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:422 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "Lämmitettävän pöydän esilämmityslämpötila." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Peruuta" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button" msgid "Pre-heat" msgstr "Esilämmitä" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:610 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Lämmitä pöytä ennen tulostusta. Voit edelleen säätää tulostinta sen lämmitessä, eikä sinun tarvitse odottaa pöydän lämpiämistä, kun olet valmis tulostamaan." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:677 msgctxt "@label" msgid "Active print" msgstr "Aktiivinen tulostustyö" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:648 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 msgctxt "@label" msgid "Job Name" msgstr "Työn nimi" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 msgctxt "@label" msgid "Printing Time" msgstr "Tulostusaika" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:660 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 msgctxt "@label" msgid "Estimated time left" msgstr "Aikaa jäljellä arviolta" @@ -3061,53 +3510,53 @@ msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Määritä asetusten näkyvyys..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Lataa 3D-malli" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Valmiina viipaloimaan" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Viipaloidaan..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Valmis: %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Viipalointi ei onnistu" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Viipalointi ei käytettävissä" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Valmistele" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Peruuta" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:288 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Valitse aktiivinen tulostusväline" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 msgctxt "@title:window" msgid "Open file(s)" msgstr "Avaa tiedosto(t)" @@ -3199,42 +3648,37 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Ohje" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 msgctxt "@action:button" msgid "Open File" msgstr "Avaa tiedosto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:428 -msgctxt "@action:button" -msgid "View Mode" -msgstr "Näyttötapa" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "Settings" msgstr "Asetukset" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 msgctxt "@title:window" msgid "New project" msgstr "Uusi projekti" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:532 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "Haluatko varmasti aloittaa uuden projektin? Se tyhjentää alustan ja kaikki tallentamattomat asetukset." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:750 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:694 msgctxt "@window:title" msgid "Install Plugin" msgstr "Asenna laajennus" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:757 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 msgctxt "@title:window" msgid "Open File(s)" msgstr "Avaa tiedosto(t)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:760 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Löysimme vähintään yhden Gcode-tiedoston valitsemiesi tiedostojen joukosta. Voit avata vain yhden Gcode-tiedoston kerrallaan. Jos haluat avata Gcode-tiedoston, valitse vain yksi." @@ -3259,102 +3703,87 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Älä näytä projektin yhteenvetoa tallennettaessa" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 +msgctxt "@action:button" +msgid "Save" +msgstr "Tallenna" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 msgctxt "@title:tab" msgid "Prepare" msgstr "Valmistele" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" -msgid "Print" -msgstr "Tulosta" +msgid "Monitor" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +msgctxt "@label" +msgid "Layer Height" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +msgctxt "@label" +msgid "Print Speed" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +msgctxt "@label" +msgid "Slower" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +msgctxt "@label" +msgid "Faster" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" msgid "Infill" msgstr "Täyttö" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "0%" -msgstr "0 %" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:199 -msgctxt "@label" -msgid "Empty infill will leave your model hollow with low strength." -msgstr "Ei täyttöä jättää mallin ontoksi ja lujuudeltaan alhaiseksi." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:203 -msgctxt "@label" -msgid "20%" -msgstr "20 %" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:210 -msgctxt "@label" -msgid "Light (20%) infill will give your model an average strength." -msgstr "Harva (20 %) täyttö antaa mallille keskimääräisen lujuuden." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:214 -msgctxt "@label" -msgid "50%" -msgstr "50 %" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:221 -msgctxt "@label" -msgid "Dense (50%) infill will give your model an above average strength." -msgstr "Tiheä (50 %) täyttö antaa mallille keskimääräistä paremman lujuuden." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:225 -msgctxt "@label" -msgid "100%" -msgstr "100 %" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:232 -msgctxt "@label" -msgid "Solid (100%) infill will make your model completely solid." -msgstr "Kiinteä (100 %) täyttö tekee mallista täysin umpinaisen." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:236 -msgctxt "@label" -msgid "Gradual" -msgstr "Asteittainen" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:244 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Asteittainen täyttö lisää täytön tiheyttä vähitellen yläosaa kohti." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:267 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 +msgctxt "@label" +msgid "Enable gradual" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Generate Support" msgstr "Muodosta tuki" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Muodosta rakenteita, jotka tukevat mallin ulokkeita sisältäviä osia. Ilman tukirakenteita kyseiset osat luhistuvat tulostuksen aikana." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:718 msgctxt "@label" msgid "Support Extruder" msgstr "Tuen suulake" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:391 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Valitse tukena käytettävä suulakepuristin. Näin mallin alle rakennetaan tukirakenteita estämään mallin painuminen tai tulostuminen ilmaan." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:796 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Alustan tarttuvuus" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:462 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Ota reunuksen tai pohjaristikon tulostus käyttöön. Tämä lisää kappaleen ympärille tai alle tasaisen alueen, joka on helppo leikata pois myöhemmin." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:515 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:883 msgctxt "@label" msgid "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides" msgstr "Tarvitsetko apua tulosteiden parantamiseen?
Lue Ultimakerin vianmääritysoppaat" @@ -3391,30 +3820,21 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Moottorin loki" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:193 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 msgctxt "@label" msgid "Material" msgstr "Materiaali" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:236 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +msgctxt "@label" +msgid "Check material compatibility" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Napsauta ja tarkista materiaalin yhteensopivuus sivustolla Ultimaker.com." -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:325 -msgctxt "@label" -msgid "Profile:" -msgstr "Profiili:" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "Jotkut asetusten ja ohitusten arvot eroavat profiiliin tallennetuista arvoista.\n\nAvaa profiilin hallinta napsauttamalla." - #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -3465,6 +3885,16 @@ msgctxt "name" msgid "God Mode" msgstr "Jumala-tila" +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +msgstr "" + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "" + #: ChangeLogPlugin/plugin.json msgctxt "description" msgid "Shows changes since latest checked version." @@ -3495,16 +3925,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB-tulostus" -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing X3G files" -msgstr "Tukee X3G-tiedostojen kirjoittamista." - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3G Writer" -msgstr "X3G-kirjoitin" - #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -3525,6 +3945,21 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3-verkkoyhteys" +#: CuraPrintClusterUpload/plugin.json +msgctxt "name" +msgid "UM3 Network Connection (Cluster)" +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "" + #: CuraSolidWorksPlugin/plugin.json msgctxt "description" msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" @@ -3615,6 +4050,16 @@ msgctxt "name" msgid "Version Upgrade 2.5 to 2.6" msgstr "Päivitys versiosta 2.5 versioon 2.6" +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -3755,6 +4200,189 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura-profiilin lukija" +#~ msgctxt "@item:inlistbox" +#~ msgid "X-Ray" +#~ msgstr "Kerros" + +#~ msgctxt "@label" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@info:whatsthis" +#~ msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +#~ msgstr "Hyväksyy GCode-määrittelyt ja lähettää ne Wi-Fi-yhteyden kautta Doodle3D WiFi-Boxiin." + +#~ msgctxt "@item:inmenu" +#~ msgid "Doodle3D printing" +#~ msgstr "Doodle3D-tulostus" + +#~ msgctxt "@action:button" +#~ msgid "Print with Doodle3D" +#~ msgstr "Tulostus Doodle3D:n avulla" + +#~ msgctxt "@info:tooltip" +#~ msgid "Print with " +#~ msgstr "Tulostus:" + +#~ msgctxt "@title:menu" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Enable Scan devices..." +#~ msgstr "Ota skannauslaitteet käyttöön..." + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G-tiedosto" + +#~ msgctxt "@info:progress" +#~ msgid "Saving to Removable Drive {0}" +#~ msgstr "Tallennetaan siirrettävälle asemalle {0}" + +#~ msgctxt "@info:status" +#~ msgid "Could not save to {0}: {1}" +#~ msgstr "Ei voitu tallentaa tiedostoon {0}: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" +#~ msgstr "Muista, että SolidWorks-tiedosto on avattava uudelleen manuaalisesti. Mallin lataaminen uudelleen ei toimi." + +#~ msgctxt "@item:inlistbox" +#~ msgid "Layers" +#~ msgstr "Kerrokset" + +#~ msgid "Browse plugins" +#~ msgstr "Selaa laajennuksia" + +#~ msgctxt "@item:inmenu" +#~ msgid "Solid" +#~ msgstr "Kiinteä" + +#~ msgctxt "@label" +#~ msgid "The file {0} already exists. Are you sure you want to overwrite it?" +#~ msgstr "Tiedosto {0} on jo olemassa. Haluatko varmasti kirjoittaa sen päälle?" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: {1}" +#~ msgstr "Profiilin vienti epäonnistui tiedostoon {0}: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: Writer plugin reported failure." +#~ msgstr "Profiilin vienti epäonnistui tiedostoon {0}: Kirjoitin-lisäosa ilmoitti virheestä." + +#~ msgctxt "@info:status" +#~ msgid "Exported profile to {0}" +#~ msgstr "Profiili viety tiedostoon {0}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Profiilin tuonti epäonnistui tiedostosta {0}: {1}" + +#~ msgctxt "@title:window" +#~ msgid "Doodle3D Settings" +#~ msgstr "Doodle3D-asetukset" + +#~ msgctxt "@title:window" +#~ msgid "Print to: %1" +#~ msgstr "Tulosta kohteeseen %1" + +#~ msgctxt "@label" +#~ msgid "Extruder Temperature: %1/%2°C" +#~ msgstr "Suulakkeen lämpötila: %1/%2 °C" + +#~ msgctxt "@label" +#~ msgid "Bed Temperature: %1/%2°C" +#~ msgstr "Pöydän lämpötila: %1/%2 °C" + +#~ msgctxt "@label" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "@label" +#~ msgid "View Mode: Layers" +#~ msgstr "Näyttötapa: Kerrokset" + +#~ msgctxt "@info:status" +#~ msgid "Could not import material %1: %2" +#~ msgstr "Materiaalin tuominen epäonnistui: %1: %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully imported material %1" +#~ msgstr "Materiaalin tuominen onnistui: %1" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export material to %1: %2" +#~ msgstr "Materiaalin vieminen epäonnistui kohteeseen %1: %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully exported material to %1" +#~ msgstr "Materiaalin vieminen onnistui kohteeseen %1" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g / ~ %4 %3" +#~ msgstr "%1 m / ~ %2 g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g" +#~ msgstr "%1 m / ~ %2 g" + +#~ msgctxt "@label" +#~ msgid "Hotend" +#~ msgstr "Kuuma pää" + +#~ msgctxt "@action:button" +#~ msgid "View Mode" +#~ msgstr "Näyttötapa" + +#~ msgctxt "@title:tab" +#~ msgid "Print" +#~ msgstr "Tulosta" + +#~ msgctxt "@label" +#~ msgid "0%" +#~ msgstr "0 %" + +#~ msgctxt "@label" +#~ msgid "Empty infill will leave your model hollow with low strength." +#~ msgstr "Ei täyttöä jättää mallin ontoksi ja lujuudeltaan alhaiseksi." + +#~ msgctxt "@label" +#~ msgid "20%" +#~ msgstr "20 %" + +#~ msgctxt "@label" +#~ msgid "Light (20%) infill will give your model an average strength." +#~ msgstr "Harva (20 %) täyttö antaa mallille keskimääräisen lujuuden." + +#~ msgctxt "@label" +#~ msgid "50%" +#~ msgstr "50 %" + +#~ msgctxt "@label" +#~ msgid "Dense (50%) infill will give your model an above average strength." +#~ msgstr "Tiheä (50 %) täyttö antaa mallille keskimääräistä paremman lujuuden." + +#~ msgctxt "@label" +#~ msgid "100%" +#~ msgstr "100 %" + +#~ msgctxt "@label" +#~ msgid "Solid (100%) infill will make your model completely solid." +#~ msgstr "Kiinteä (100 %) täyttö tekee mallista täysin umpinaisen." + +#~ msgctxt "@label" +#~ msgid "Gradual" +#~ msgstr "Asteittainen" + +#~ msgctxt "description" +#~ msgid "Provides support for writing X3G files" +#~ msgstr "Tukee X3G-tiedostojen kirjoittamista." + +#~ msgctxt "name" +#~ msgid "X3G Writer" +#~ msgstr "X3G-kirjoitin" + #~ msgctxt "@label" #~ msgid "Machine Settings action" #~ msgstr "Toiminto Laitteen asetukset" @@ -4335,4 +4963,4 @@ msgstr "Cura-profiilin lukija" #~ msgctxt "@label:" #~ msgid "Print Again" -#~ msgstr "Tulosta uudelleen" \ No newline at end of file +#~ msgstr "Tulosta uudelleen" diff --git a/resources/i18n/fi_FI/fdmextruder.def.json.po b/resources/i18n/fi_FI/fdmextruder.def.json.po index 9ac62d86c3..a8678ba379 100644 --- a/resources/i18n/fi_FI/fdmextruder.def.json.po +++ b/resources/i18n/fi_FI/fdmextruder.def.json.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -194,4 +194,4 @@ msgstr "Suulakkeen esitäytön Y-sijainti" #: fdmextruder.def.json msgctxt "extruder_prime_pos_y description" msgid "The Y coordinate of the position where the nozzle primes at the start of printing." -msgstr "Y-koordinaatti sijainnille, jossa suutin esitäytetään tulostusta aloitettaessa." \ No newline at end of file +msgstr "Y-koordinaatti sijainnille, jossa suutin esitäytetään tulostusta aloitettaessa." diff --git a/resources/i18n/fi_FI/fdmprinter.def.json.po b/resources/i18n/fi_FI/fdmprinter.def.json.po index 35ceb2a12e..000530a44f 100644 --- a/resources/i18n/fi_FI/fdmprinter.def.json.po +++ b/resources/i18n/fi_FI/fdmprinter.def.json.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -56,7 +56,9 @@ msgctxt "machine_start_gcode description" msgid "" "Gcode commands to be executed at the very start - separated by \n" "." -msgstr "GCode-komennot, jotka suoritetaan aivan alussa – eroteltuina merkillä \n." +msgstr "" +"GCode-komennot, jotka suoritetaan aivan alussa – eroteltuina merkillä \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -68,7 +70,9 @@ msgctxt "machine_end_gcode description" msgid "" "Gcode commands to be executed at the very end - separated by \n" "." -msgstr "GCode-komennot, jotka suoritetaan aivan lopussa – eroteltuina merkillä \n." +msgstr "" +"GCode-komennot, jotka suoritetaan aivan lopussa – eroteltuina merkillä \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -755,16 +759,6 @@ msgctxt "shell description" msgid "Shell" msgstr "Kuori" -#: fdmprinter.def.json -msgctxt "wall_extruder_nr label" -msgid "Wall Extruder" -msgstr "Seinämien suulake" - -#: fdmprinter.def.json -msgctxt "wall_extruder_nr description" -msgid "The extruder train used for printing the walls. This is used in multi-extrusion." -msgstr "Seinämien tulostukseen käytettävä suulakeryhmä. Tätä käytetään monipursotuksessa." - #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" msgid "Outer Wall Extruder" @@ -1125,6 +1119,11 @@ msgctxt "z_seam_type option random" msgid "Random" msgstr "Satunnainen" +#: fdmprinter.def.json +msgctxt "z_seam_type option sharpest_corner" +msgid "Sharpest Corner" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1145,6 +1144,36 @@ msgctxt "z_seam_y description" msgid "The Y coordinate of the position near where to start printing each part in a layer." msgstr "Y-koordinaatti kohdalle, jonka läheltä aloitetaan kunkin kerroksen osuuden tulostus." +#: fdmprinter.def.json +msgctxt "z_seam_corner label" +msgid "Seam Corner Preference" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner description" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_none" +msgid "None" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_inner" +msgid "Hide Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_outer" +msgid "Expose Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_any" +msgid "Hide or Expose Seam" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1165,6 +1194,16 @@ msgctxt "skin_no_small_gaps_heuristic description" msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." msgstr "Kun mallissa on pieniä pystyrakoja, ylä- ja alapuolen pintakalvon tekemiseen näihin kapeisiin paikkoihin voi kulua noin 5 % ylimääräistä laskenta-aikaa. Poista siinä tapauksessa tämä asetus käytöstä." +#: fdmprinter.def.json +msgctxt "skin_outline_count label" +msgid "Extra Skin Wall Count" +msgstr "Pintakalvojen ulkopuolisten lisäseinämien määrä" + +#: fdmprinter.def.json +msgctxt "skin_outline_count description" +msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." +msgstr "Korvaa ylä-/alakuvion uloimman osan samankeskisillä linjoilla. Yhden tai kahden linjan käyttäminen parantaa kattoja, jotka alkavat täyttömateriaalin keskeltä." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1212,8 +1251,8 @@ msgstr "Täyttökuvio" #: fdmprinter.def.json msgctxt "infill_pattern description" -msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "Tulostettava täyttömateriaalin kuvio. Linja- ja siksak-täytöt vaihtavat suuntaa kerrosten välillä, mikä vähentää materiaalikustannuksia. Ristikko-, kolmio-, kuutio-, nelitaho- ja samankeskinen-kuviot tulostetaan kokonaisuudessaan kuhunkin kerrokseen. Kuutio- ja nelitaho-täytöt muuttuvat kerroksittain, jotta vahvuus jakautuu tasaisemmin kussakin suunnassa." +msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1242,8 +1281,13 @@ msgstr "Kuution alajako" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" -msgid "Tetrahedral" -msgstr "Nelitaho" +msgid "Octet" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option quarter_cubic" +msgid "Quarter Cubic" +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1260,6 +1304,26 @@ msgctxt "infill_pattern option zigzag" msgid "Zig Zag" msgstr "Siksak" +#: fdmprinter.def.json +msgctxt "infill_pattern option cross" +msgid "Cross" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross_3d" +msgid "Cross 3D" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill label" +msgid "Connect Infill Lines" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill description" +msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" @@ -1381,34 +1445,34 @@ msgid "Don't generate areas of infill smaller than this (use skin instead)." msgstr "Älä muodosta tätä pienempiä täyttöalueita (käytä sen sijaan pintakalvoa)." #: fdmprinter.def.json -msgctxt "expand_skins_into_infill label" -msgid "Expand Skins Into Infill" -msgstr "Laajenna pintakalvot täyttöalueelle" +msgctxt "skin_preshrink label" +msgid "Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_skins_into_infill description" -msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." -msgstr "Laajenna tasaisten pintojen ylä- ja/tai alapuolen pintakalvot. Oletuksena pintakalvot päättyvät täyttöalueen ympäröivien seinämälinjojen alla, mutta tämä voi aiheuttaa reikiä, kun täyttöalueen tiheys on alhainen. Tämä asetus laajentaa pintakalvot seinämälinjoja pidemmälle niin, että seuraavan kerroksen täyttöalue lepää pintakalvon päällä." +msgctxt "skin_preshrink description" +msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins label" -msgid "Expand Top Skins Into Infill" -msgstr "Ylimpien pintakalvojen laajennus täyttöalueelle" +msgctxt "top_skin_preshrink label" +msgid "Top Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins description" -msgid "Expand the top skin areas (areas with air above) so that they support infill above." -msgstr "Laajenna ylimmät pintakalvot (alueet, joiden yläpuolella on ilmaa) niin, että ne tukevat yläpuolista täyttöaluetta." +msgctxt "top_skin_preshrink description" +msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins label" -msgid "Expand Bottom Skins Into Infill" -msgstr "Alimpien pintakalvojen laajennus täyttöalueelle" +msgctxt "bottom_skin_preshrink label" +msgid "Bottom Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins description" -msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." -msgstr "Laajenna alimmat pintakalvot (alueet, joiden alapuolella on ilmaa) niin, että ylä- ja alapuoliset täyttökerrokset ankkuroivat ne." +msgctxt "bottom_skin_preshrink description" +msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1417,8 +1481,28 @@ msgstr "Pintakalvon laajennuksen etäisyys" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" -msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." -msgstr "Pintakalvojen laajennusetäisyys täyttöalueelle. Oletusetäisyys riittää kuromaan umpeen täyttölinjojen väliset raot, ja se estää reikien ilmestymisen pintakalvoon seinämän liitoskohdassa, kun täytön tiheys on alhainen." +msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance label" +msgid "Top Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance description" +msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance label" +msgid "Bottom Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance description" +msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." +msgstr "" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -1800,16 +1884,6 @@ msgctxt "speed_topbottom description" msgid "The speed at which top/bottom layers are printed." msgstr "Ylä-/alakerrosten tulostamiseen käytettävä nopeus." -#: fdmprinter.def.json -msgctxt "speed_ironing label" -msgid "Ironing Speed" -msgstr "Silitysnopeus" - -#: fdmprinter.def.json -msgctxt "speed_ironing description" -msgid "The speed at which to pass over the top surface." -msgstr "Yläpinnan ylikulkuun käytettävä nopeus." - #: fdmprinter.def.json msgctxt "speed_support label" msgid "Support Speed" @@ -2040,16 +2114,6 @@ msgctxt "acceleration_topbottom description" msgid "The acceleration with which top/bottom layers are printed." msgstr "Kiihtyvyys, jolla ylä-/alakerrokset tulostetaan." -#: fdmprinter.def.json -msgctxt "acceleration_ironing label" -msgid "Ironing Acceleration" -msgstr "Silityksen kiihtyvyys" - -#: fdmprinter.def.json -msgctxt "acceleration_ironing description" -msgid "The acceleration with which ironing is performed." -msgstr "Kiihtyvyys, jolla silitys suoritetaan." - #: fdmprinter.def.json msgctxt "acceleration_support label" msgid "Support Acceleration" @@ -2240,16 +2304,6 @@ msgctxt "jerk_topbottom description" msgid "The maximum instantaneous velocity change with which top/bottom layers are printed." msgstr "Ylä-/alakerrosten tulostuksen nopeuden hetkellinen maksimimuutos." -#: fdmprinter.def.json -msgctxt "jerk_ironing label" -msgid "Ironing Jerk" -msgstr "Silityksen nykäisy" - -#: fdmprinter.def.json -msgctxt "jerk_ironing description" -msgid "The maximum instantaneous velocity change while performing ironing." -msgstr "Silityksen aikainen nopeuden hetkellinen maksimimuutos." - #: fdmprinter.def.json msgctxt "jerk_support label" msgid "Support Jerk" @@ -2765,6 +2819,11 @@ msgctxt "support_pattern option zigzag" msgid "Zig Zag" msgstr "Siksak" +#: fdmprinter.def.json +msgctxt "support_pattern option cross" +msgid "Cross" +msgstr "" + #: fdmprinter.def.json msgctxt "support_connect_zigzags label" msgid "Connect Support ZigZags" @@ -2777,23 +2836,33 @@ msgstr "Yhdistä siksakit. Tämä lisää siksak-tukirakenteen lujuutta." #: fdmprinter.def.json msgctxt "support_skip_some_zags label" -msgid "Skip Some ZigZags Connections" -msgstr "Ohita jotkin siksakien yhdistämiset" +msgid "Break Up Support In Chunks" +msgstr "" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" -msgid "Skip some ZigZags connections to make the support structure easier to break." -msgstr "Ohita jotkin siksakien yhdistämiset, jotta tukirakenne on helpompi rikkoa." +msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm description" +msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count label" -msgid "ZigZag Connection Skip Count" -msgstr "Siksakien yhdistämisten ohitusten määrä" +msgid "Support Chunk Line Count" +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" -msgid "Skip one in every N connection lines to make the support structure easier to break." -msgstr "Ohita yksi jokaisesta N-yhdistämislinjasta, jotta tukirakenne on helpompi rikkoa." +msgid "Skip one in every N connection lines to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3335,7 +3404,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance, multiple skirt lines will extend outwards from this distance." -msgstr "Vaakasuora etäisyys helman ja tulosteen ensimmäisen kerroksen välillä.\nTämä on minimietäisyys; useampia helmalinjoja käytettäessä ne ulottuvat tämän etäisyyden ulkopuolelle." +msgstr "" +"Vaakasuora etäisyys helman ja tulosteen ensimmäisen kerroksen välillä.\n" +"Tämä on minimietäisyys; useampia helmalinjoja käytettäessä ne ulottuvat tämän etäisyyden ulkopuolelle." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3377,6 +3448,26 @@ msgctxt "brim_outside_only description" msgid "Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much." msgstr "Tulostaa reunuksen vain mallin ulkopuolelle. Tämä vähentää myöhemmin poistettavan reunuksen määrää, mutta se ei juurikaan vähennä pöydän tarttuvuutta." +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 label" +msgid "Initial Layer Z Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 description" +msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers label" +msgid "Z Offset Taper Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers description" +msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3387,6 +3478,16 @@ msgctxt "raft_margin description" msgid "If the raft is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print." msgstr "Jos pohjaristikko on otettu käyttöön, tämä on ylimääräinen ristikkoalue malli ympärillä, jolle myös annetaan pohjaristikko. Tämän marginaalin kasvattaminen vahvistaa pohjaristikkoa, jolloin käytetään enemmän materiaalia ja tulosteelle jää vähemmän tilaa." +#: fdmprinter.def.json +msgctxt "raft_smoothing label" +msgid "Raft Smoothing" +msgstr "" + +#: fdmprinter.def.json +msgctxt "raft_smoothing description" +msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_airgap label" msgid "Raft Air Gap" @@ -4062,6 +4163,16 @@ msgctxt "smooth_spiralized_contours description" msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." msgstr "Vähennä Z-sauman näkyvyyttä tasoittamalla kierukoidut ääriviivat (Z-sauman pitäisi olla lähes näkymätön tulosteessa, mutta kerrosnäkymässä sen voi edelleen havaita). Ota huomioon, että tasoittaminen usein sumentaa pinnan pieniä yksityiskohtia." +#: fdmprinter.def.json +msgctxt "relative_extrusion label" +msgid "Relative Extrusion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "relative_extrusion description" +msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." +msgstr "" + #: fdmprinter.def.json msgctxt "experimental label" msgid "Experimental" @@ -4072,6 +4183,16 @@ msgctxt "experimental description" msgid "experimental!" msgstr "kokeellinen!" +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "" + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4182,16 +4303,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Nopeus, jolla siirrytään vapaaliu'un aikana, suhteessa pursotusreitin nopeuteen. Arvoksi suositellaan hieman alle 100 %, sillä vapaaliukusiirron aikana paine Bowden-putkessa laskee." -#: fdmprinter.def.json -msgctxt "skin_outline_count label" -msgid "Extra Skin Wall Count" -msgstr "Pintakalvojen ulkopuolisten lisäseinämien määrä" - -#: fdmprinter.def.json -msgctxt "skin_outline_count description" -msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." -msgstr "Korvaa ylä-/alakuvion uloimman osan samankeskisillä linjoilla. Yhden tai kahden linjan käyttäminen parantaa kattoja, jotka alkavat täyttömateriaalin keskeltä." - #: fdmprinter.def.json msgctxt "skin_alternate_rotation label" msgid "Alternate Skin Rotation" @@ -4202,6 +4313,26 @@ msgctxt "skin_alternate_rotation description" msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." msgstr "Muuttaa ylä-/alakerrosten tulostussuuntaa. Normaalisti ne tulostetaan vain vinottain. Tämä asetus lisää vain X- ja vain Y -suunnat." +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size label" +msgid "Cross 3D Pocket Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size description" +msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly label" +msgid "Alternate Cross 3D Pockets" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly description" +msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." +msgstr "" + #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" msgid "Spaghetti Infill" @@ -4502,7 +4633,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "Puolella nopeudella pursotetun nousuliikkeen etäisyys.\nSe voi parantaa tarttuvuutta edellisiin kerroksiin kuumentamatta materiaalia liikaa kyseisissä kerroksissa. Koskee vain rautalankamallin tulostusta." +msgstr "" +"Puolella nopeudella pursotetun nousuliikkeen etäisyys.\n" +"Se voi parantaa tarttuvuutta edellisiin kerroksiin kuumentamatta materiaalia liikaa kyseisissä kerroksissa. Koskee vain rautalankamallin tulostusta." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -4619,6 +4752,16 @@ msgctxt "ironing_enabled description" msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." msgstr "Yläpinnan läpikäynti yhden ylimääräisen kerran ilman materiaalin pursotusta. Tämän tarkoitus on sulattaa yläosan muovia enemmän, jolloin saadaan sileämpi pinta." +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer label" +msgid "Iron Only Highest Layer" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer description" +msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." +msgstr "" + #: fdmprinter.def.json msgctxt "ironing_pattern label" msgid "Ironing Pattern" @@ -4669,6 +4812,36 @@ msgctxt "ironing_inset description" msgid "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print." msgstr "Etäisyys mallin reunoihin. Silitys verkon reunoihin saakka voi johtaa rosoiseen reunaan tulosteessa." +#: fdmprinter.def.json +msgctxt "speed_ironing label" +msgid "Ironing Speed" +msgstr "Silitysnopeus" + +#: fdmprinter.def.json +msgctxt "speed_ironing description" +msgid "The speed at which to pass over the top surface." +msgstr "Yläpinnan ylikulkuun käytettävä nopeus." + +#: fdmprinter.def.json +msgctxt "acceleration_ironing label" +msgid "Ironing Acceleration" +msgstr "Silityksen kiihtyvyys" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing description" +msgid "The acceleration with which ironing is performed." +msgstr "Kiihtyvyys, jolla silitys suoritetaan." + +#: fdmprinter.def.json +msgctxt "jerk_ironing label" +msgid "Ironing Jerk" +msgstr "Silityksen nykäisy" + +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "Silityksen aikainen nopeuden hetkellinen maksimimuutos." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4729,6 +4902,66 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Mallissa käytettävä muunnosmatriisi, kun malli ladataan tiedostosta." +#~ msgctxt "wall_extruder_nr label" +#~ msgid "Wall Extruder" +#~ msgstr "Seinämien suulake" + +#~ msgctxt "wall_extruder_nr description" +#~ msgid "The extruder train used for printing the walls. This is used in multi-extrusion." +#~ msgstr "Seinämien tulostukseen käytettävä suulakeryhmä. Tätä käytetään monipursotuksessa." + +#~ msgctxt "infill_pattern description" +#~ msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." +#~ msgstr "Tulostettava täyttömateriaalin kuvio. Linja- ja siksak-täytöt vaihtavat suuntaa kerrosten välillä, mikä vähentää materiaalikustannuksia. Ristikko-, kolmio-, kuutio-, nelitaho- ja samankeskinen-kuviot tulostetaan kokonaisuudessaan kuhunkin kerrokseen. Kuutio- ja nelitaho-täytöt muuttuvat kerroksittain, jotta vahvuus jakautuu tasaisemmin kussakin suunnassa." + +#~ msgctxt "infill_pattern option tetrahedral" +#~ msgid "Tetrahedral" +#~ msgstr "Nelitaho" + +#~ msgctxt "expand_skins_into_infill label" +#~ msgid "Expand Skins Into Infill" +#~ msgstr "Laajenna pintakalvot täyttöalueelle" + +#~ msgctxt "expand_skins_into_infill description" +#~ msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." +#~ msgstr "Laajenna tasaisten pintojen ylä- ja/tai alapuolen pintakalvot. Oletuksena pintakalvot päättyvät täyttöalueen ympäröivien seinämälinjojen alla, mutta tämä voi aiheuttaa reikiä, kun täyttöalueen tiheys on alhainen. Tämä asetus laajentaa pintakalvot seinämälinjoja pidemmälle niin, että seuraavan kerroksen täyttöalue lepää pintakalvon päällä." + +#~ msgctxt "expand_upper_skins label" +#~ msgid "Expand Top Skins Into Infill" +#~ msgstr "Ylimpien pintakalvojen laajennus täyttöalueelle" + +#~ msgctxt "expand_upper_skins description" +#~ msgid "Expand the top skin areas (areas with air above) so that they support infill above." +#~ msgstr "Laajenna ylimmät pintakalvot (alueet, joiden yläpuolella on ilmaa) niin, että ne tukevat yläpuolista täyttöaluetta." + +#~ msgctxt "expand_lower_skins label" +#~ msgid "Expand Bottom Skins Into Infill" +#~ msgstr "Alimpien pintakalvojen laajennus täyttöalueelle" + +#~ msgctxt "expand_lower_skins description" +#~ msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." +#~ msgstr "Laajenna alimmat pintakalvot (alueet, joiden alapuolella on ilmaa) niin, että ylä- ja alapuoliset täyttökerrokset ankkuroivat ne." + +#~ msgctxt "expand_skins_expand_distance description" +#~ msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." +#~ msgstr "Pintakalvojen laajennusetäisyys täyttöalueelle. Oletusetäisyys riittää kuromaan umpeen täyttölinjojen väliset raot, ja se estää reikien ilmestymisen pintakalvoon seinämän liitoskohdassa, kun täytön tiheys on alhainen." + +#~ msgctxt "support_skip_some_zags label" +#~ msgid "Skip Some ZigZags Connections" +#~ msgstr "Ohita jotkin siksakien yhdistämiset" + +#~ msgctxt "support_skip_some_zags description" +#~ msgid "Skip some ZigZags connections to make the support structure easier to break." +#~ msgstr "Ohita jotkin siksakien yhdistämiset, jotta tukirakenne on helpompi rikkoa." + +#~ msgctxt "support_zag_skip_count label" +#~ msgid "ZigZag Connection Skip Count" +#~ msgstr "Siksakien yhdistämisten ohitusten määrä" + +#~ msgctxt "support_zag_skip_count description" +#~ msgid "Skip one in every N connection lines to make the support structure easier to break." +#~ msgstr "Ohita yksi jokaisesta N-yhdistämislinjasta, jotta tukirakenne on helpompi rikkoa." + #~ msgctxt "machine_show_variants label" #~ msgid "Show machine variants" #~ msgstr "Näytä laitteen variantit" @@ -4891,4 +5124,4 @@ msgstr "Mallissa käytettävä muunnosmatriisi, kun malli ladataan tiedostosta." #~ msgctxt "multiple_mesh_overlap label" #~ msgid "Dual Extrusion Overlap" -#~ msgstr "Kaksoispursotuksen limitys" \ No newline at end of file +#~ msgstr "Kaksoispursotuksen limitys" diff --git a/resources/i18n/fr_FR/cura.po b/resources/i18n/fr_FR/cura.po index 2e400a9bdb..93c1ac6eaa 100644 --- a/resources/i18n/fr_FR/cura.po +++ b/resources/i18n/fr_FR/cura.po @@ -16,15 +16,15 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:28 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" msgstr "Paramètres de la machine" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" -msgid "X-Ray" -msgstr "Rayon-X" +msgid "X-Ray view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -36,40 +36,69 @@ msgctxt "@item:inlistbox" msgid "GCode File" msgstr "Fichier GCode" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:13 -msgctxt "@label" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:17 -msgctxt "@info:whatsthis" -msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "Accepte les G-Code et les envoie par Wi-Fi à une Doodle3D WiFi-Box." - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:36 -msgctxt "@item:inmenu" -msgid "Doodle3D printing" -msgstr "Impression avec Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:37 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" -msgid "Print with Doodle3D" -msgstr "Imprimer avec Doodle3D" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:38 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 +msgctxt "@properties:tooltip" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Annuler" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 +msgctxt "@info:status" +msgid "Sending data to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 +msgctxt "@info:status" +msgid "Unable to send data to Doodle3D Connect. Is another job still active?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 +msgctxt "@info:status" +msgid "File sent to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect.." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" -msgid "Print with " -msgstr "Imprimer avec" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:49 -msgctxt "@title:menu" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:50 -msgctxt "@item:inlistbox" -msgid "Enable Scan devices..." -msgstr "Activer les périphériques de numérisation..." +msgid "Open the Doodle3D Connect web interface" +msgstr "" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -111,16 +140,36 @@ msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Impossible de démarrer une nouvelle tâche car l'imprimante est occupée ou n'est pas connectée." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +msgctxt "@info:title" +msgid "Print Details" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "L'imprimante ne prend pas en charge l'impression par USB car elle utilise UltiGCode parfum." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Impossible de démarrer une nouvelle tâche car l'imprimante ne prend pas en charge l'impression par USB." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:909 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 +msgctxt "@info:title" +msgid "Warning" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." @@ -132,10 +181,10 @@ msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "Impossible de trouver le firmware requis pour l'imprimante sur %s." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:14 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "Fichier X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +msgctxt "@info:title" +msgid "Printer Firmware" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -150,47 +199,79 @@ msgstr "Enregistrer sur un lecteur amovible {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 #, python-brace-format -msgctxt "@info:progress" +msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "Enregistrement sur le lecteur amovible {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +msgctxt "@info:title" +msgid "Saving" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "Impossible d'enregistrer {0} : {1}" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format -msgctxt "@info:status" -msgid "Saved to Removable Drive {0} as {1}" -msgstr "Enregistré sur le lecteur amovible {0} sous {1}" +msgctxt "@info:status Don't translate the tag {device}!" +msgid "Could not find a file name when trying to write to {device}." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -msgctxt "@action:button" -msgid "Eject" -msgstr "Ejecter" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -#, python-brace-format -msgctxt "@action" -msgid "Eject removable device {0}" -msgstr "Ejecter le lecteur amovible {0}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:138 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #, python-brace-format msgctxt "@info:status" msgid "Could not save to removable drive {0}: {1}" msgstr "Impossible d'enregistrer sur le lecteur {0}: {1}" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:148 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:675 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:683 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:145 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:152 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 +msgctxt "@info:title" +msgid "Error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +#, python-brace-format +msgctxt "@info:status" +msgid "Saved to Removable Drive {0} as {1}" +msgstr "Enregistré sur le lecteur amovible {0} sous {1}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +msgctxt "@info:title" +msgid "File Saved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +msgctxt "@action:button" +msgid "Eject" +msgstr "Ejecter" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +#, python-brace-format +msgctxt "@action" +msgid "Eject removable device {0}" +msgstr "Ejecter le lecteur amovible {0}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 #, python-brace-format msgctxt "@info:status" msgid "Ejected {0}. You can now safely remove the drive." msgstr "Lecteur {0} éjecté. Vous pouvez maintenant le retirer en tout sécurité." -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:150 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 +msgctxt "@info:title" +msgid "Safely Remove Hardware" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format msgctxt "@info:status" msgid "Failed to eject {0}. Another program may be using the drive." @@ -201,219 +282,351 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Lecteur amovible" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:49 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Imprimer sur le réseau" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Imprimer sur le réseau" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:156 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 msgctxt "@info:status" msgid "Access to the printer requested. Please approve the request on the printer" msgstr "Accès à l'imprimante demandé. Veuillez approuver la demande sur l'imprimante" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +msgctxt "@info:title" +msgid "Connection status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 msgctxt "@info:status" msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:468 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@action:button" msgid "Retry" msgstr "Réessayer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Renvoyer la demande d'accès" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Accès à l'imprimante accepté" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 msgctxt "@info:status" msgid "No access to print with this printer. Unable to send print job." msgstr "Aucun accès pour imprimer avec cette imprimante. Impossible d'envoyer la tâche d'impression." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:28 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:72 msgctxt "@action:button" msgid "Request Access" msgstr "Demande d'accès" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:71 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "Envoyer la demande d'accès à l'imprimante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:358 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:375 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 msgctxt "@info:status" msgid "Connected over the network. Please approve the access request on the printer." msgstr "Connecté sur le réseau. Veuillez approuver la demande d'accès sur l'imprimante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:365 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:382 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 msgctxt "@info:status" msgid "Connected over the network." msgstr "Connecté sur le réseau." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:378 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "Connecté sur le réseau. Pas d'accès pour commander l'imprimante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:383 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:400 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 msgctxt "@info:status" msgid "Access request was denied on the printer." msgstr "La demande d'accès a été refusée sur l'imprimante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:386 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:403 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Access request failed due to a timeout." msgstr "Échec de la demande d'accès à cause de la durée limite." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:450 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:467 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "The connection with the network was lost." msgstr "La connexion avec le réseau a été perdue." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:481 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 msgctxt "@info:status" msgid "The connection with the printer was lost. Check your printer to see if it is connected." msgstr "La connexion avec l'imprimante a été perdue. Vérifiez que votre imprimante est connectée." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:630 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:649 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 #, python-format msgctxt "@info:status" msgid "Unable to start a new print job, printer is busy. Current printer status is %s." msgstr "Impossible de démarrer une nouvelle tâche d'impression car l'imprimante est occupée. L'état actuel de l'imprimante est %s." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:654 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Impossible de démarrer une nouvelle tâche d'impression. Pas de PrintCore inséré dans la fente {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:661 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:682 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Impossible de démarrer une nouvelle tâche d'impression car l'imprimante est occupée. Pas de matériau chargé dans la fente {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:670 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Pas suffisamment de matériau pour bobine {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:680 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "PrintCore différent (Cura : {0}, Imprimante : {1}) sélectionné pour l'extrudeuse {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:694 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:716 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@label" msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Matériau différent (Cura : {0}, Imprimante : {1}) sélectionné pour l'extrudeuse {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:724 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "Le PrintCore {0} n'est pas correctement calibré. Le calibrage XY doit être effectué sur l'imprimante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:707 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:729 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "Êtes-vous sûr(e) de vouloir imprimer avec la configuration sélectionnée ?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:730 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 msgctxt "@label" msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "Problème de compatibilité entre la configuration ou l'étalonnage de l'imprimante et Cura. Pour un résultat optimal, découpez toujours pour les PrintCores et matériaux insérés dans votre imprimante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:736 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Configuration différente" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:815 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Envoi des données à l'imprimante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:816 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:46 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:137 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Annuler" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +msgctxt "@info:title" +msgid "Sending Data" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:884 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Impossible d'envoyer les données à l'imprimante. Une autre tâche est-elle toujours active ?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1018 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1050 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Abandon de l'impression..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1024 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Abandon de l'impression. Vérifiez l'imprimante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1030 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Mise en pause de l'impression..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1032 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Reprise de l'impression..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1175 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synchroniser avec votre imprimante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1177 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "Voulez-vous utiliser votre configuration d'imprimante actuelle dans Cura ?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1220 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 msgctxt "@label" msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "Les PrintCores et / ou matériaux sur votre imprimante diffèrent de ceux de votre projet actuel. Pour un résultat optimal, découpez toujours pour les PrintCores et matériaux insérés dans votre imprimante." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.py:19 msgctxt "@action" msgid "Connect via Network" msgstr "Connecter via le réseau" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:172 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#, python-brace-format +msgctxt "Count is number of printers." +msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#, python-brace-format +msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#, python-brace-format +msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +msgctxt "@info:status" +msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#, python-brace-format +msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Télécharger" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +msgctxt "@info" +msgid "Could not access update information." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" msgstr "Des erreurs sont apparues lors de l'ouverture de votre fichier SolidWorks ! Veuillez vérifier s'il est possible d'ouvrir votre fichier dans SolidWorks sans que cela ne cause de problèmes." @@ -432,17 +645,12 @@ msgstr "Fichier d'assemblage SolidWorks" msgid "Configure" msgstr "Configurer" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:129 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 #, python-format msgctxt "@info:status" msgid "Error while starting %s!" msgstr "Erreur lors du lancement de %s !" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:207 -msgctxt "@info:status" -msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" -msgstr "Gardez à l'esprit que vous devez rouvrir votre fichier SolidWorks manuellement ! Le fait de recharger le modèle ne marchera pas." - #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 msgid "Modify G-Code" msgstr "Modifier le G-Code" @@ -452,7 +660,12 @@ msgctxt "@info" msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." msgstr "Cura collecte des statistiques anonymes sur le découpage. Vous pouvez désactiver cette fonctionnalité dans les préférences." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:44 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 +msgctxt "@info:title" +msgid "Collecting Data" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" msgid "Dismiss" msgstr "Ignorer" @@ -470,14 +683,19 @@ msgstr "Fichier GCode" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" -msgid "Layers" -msgstr "Couches" +msgid "Layer view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura n'affiche pas les couches avec précision lorsque l'impression filaire est activée" +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 +msgctxt "@info:title" +msgid "Layer View" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -503,24 +721,31 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Image GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:281 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "Le matériau sélectionné est incompatible avec la machine ou la configuration sélectionnée." +msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:308 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:307 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 +msgctxt "@info:title" +msgid "Unable to slice" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Impossible de couper avec les paramètres actuels. Les paramètres suivants contiennent des erreurs : {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:317 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:306 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Impossible de couper car la tour primaire ou la (les) position(s) d'amorçage ne sont pas valides." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:325 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:315 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Rien à couper car aucun des modèles ne convient au volume d'impression. Mettez à l'échelle ou faites pivoter les modèles pour les faire correspondre." @@ -531,6 +756,11 @@ msgctxt "@info:status" msgid "Processing Layers" msgstr "Traitement des couches" +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +msgctxt "@info:title" +msgid "Information" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" msgid "Per Model Settings" @@ -542,13 +772,13 @@ msgid "Configure Per Model Settings" msgstr "Configurer les paramètres par modèle" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:475 msgctxt "@title:tab" msgid "Recommended" msgstr "Recommandé" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:459 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 msgctxt "@title:tab" msgid "Custom" msgstr "Personnalisé" @@ -559,25 +789,37 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Fichier 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:122 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1050 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 msgctxt "@label" msgid "Nozzle" msgstr "Buse" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 +msgctxt "@menuitem" msgid "Browse plugins" -msgstr "Parcourir les plug-ins" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:120 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +msgctxt "@info:tile" +msgid "Warning" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" msgid "Plugin browser" msgstr "Navigateur de plug-ins" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" -msgid "Solid" -msgstr "Solide" +msgid "Solid view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -589,7 +831,13 @@ msgctxt "@info:status" msgid "Parsing G-code" msgstr "Analyse du G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:365 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Assurez-vous que le g-code est adapté à votre imprimante et à la configuration de l'imprimante avant d'y envoyer le fichier. La représentation du g-code peut ne pas être exacte." @@ -611,7 +859,7 @@ msgid "Cura Project 3MF file" msgstr "Projet Cura fichier 3MF" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Sélectionner les mises à niveau" @@ -631,18 +879,73 @@ msgctxt "@action" msgid "Level build plate" msgstr "Nivellement du plateau" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:247 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Paroi externe" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Parois internes" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Couche extérieure" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Remplissage" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Remplissage du support" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Interface du support" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support" +msgstr "Support" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Déplacement" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Rétractions" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Other" +msgstr "Autre" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Fichier {0} prédécoupé" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 msgctxt "@item:material" msgid "No material loaded" msgstr "Pas de matériau chargé" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 msgctxt "@item:material" msgid "Unknown material" msgstr "Matériau inconnu" @@ -652,35 +955,56 @@ msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Recherche d'un nouvel emplacement pour les objets" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:85 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Impossible de trouver un emplacement dans le volume d'impression pour tous les objets" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:417 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 msgctxt "@title:window" msgid "File Already Exists" msgstr "Le fichier existe déjà" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:418 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 #, python-brace-format -msgctxt "@label" +msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "Le fichier {0} existe déjà. Êtes vous sûr de vouloir le remplacer ?" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:801 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" msgid "Custom" msgstr "Personnalisé" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:805 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 msgctxt "@label" msgid "Custom Material" msgstr "Matériau personnalisé" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +msgctxt "@info:status" +msgid "The selected material is incompatible with the selected machine or configuration." +msgstr "Le matériau sélectionné est incompatible avec la machine ou la configuration sélectionnée." + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:109 +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 +msgctxt "@info:title" +msgid "Incompatible Material" +msgstr "" + #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." msgid "The selected material diameter causes the material to become incompatible with the current printer." @@ -698,70 +1022,86 @@ msgstr "Annuler la modification du diamètre du matériau." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "Échec de l'exportation du profil vers {0} : {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:148 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "Échec de l'exportation du profil vers {0} : Le plug-in du générateur a rapporté une erreur." +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "Profil exporté vers {0}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:199 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:208 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:242 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +msgctxt "@info:title" +msgid "Export Details" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:213 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:247 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "Échec de l'importation du profil depuis le fichier {0} : {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:210 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:246 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Importation du profil {0} réussie" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:249 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Le profil {0} est un type de fichier inconnu ou est corrompu." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:267 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:272 msgctxt "@label" msgid "Custom profile" msgstr "Personnaliser le profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:278 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Il manque un type de qualité au profil." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:300 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Impossible de trouver un type de qualité {0} pour la configuration actuelle." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:95 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "La hauteur du volume d'impression a été réduite en raison de la valeur du paramètre « Séquence d'impression » afin d'éviter que le portique ne heurte les modèles imprimés." +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 +msgctxt "@info:title" +msgid "Build Volume" +msgstr "" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Multiplication et placement d'objets" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "" + #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" msgid "Crash Report" @@ -773,41 +1113,44 @@ msgid "" "

A fatal exception has occurred that we could not recover from!

\n" "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" " " -msgstr "

Une erreur fatale que nous ne pouvons résoudre s'est produite !

\n

Veuillez utiliser les informations ci-dessous pour envoyer un rapport d'erreur à http://github.com/Ultimaker/Cura/issues

\n " +msgstr "" +"

Une erreur fatale que nous ne pouvons résoudre s'est produite !

\n" +"

Veuillez utiliser les informations ci-dessous pour envoyer un rapport d'erreur à http://github.com/Ultimaker/Cura/issues

\n" +" " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 msgctxt "@action:button" msgid "Open Web Page" msgstr "Ouvrir la page Web" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:248 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Chargement des machines..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:610 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Préparation de la scène..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:652 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Chargement de l'interface..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:815 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1285 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1295 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Un seul fichier G-Code peut être chargé à la fois. Importation de {0} sautée" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1294 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1304 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" @@ -837,12 +1180,12 @@ msgstr "X (Largeur)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:286 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:838 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:839 msgctxt "@label" msgid "mm" msgstr "mm" @@ -932,108 +1275,72 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "La différence de hauteur entre la pointe de la buse et le système de portique (axes X et Y). Permet d'empêcher les collisions entre les impressions précédentes et le portique lors d'une impression « Un à la fois »." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Nombre d'extrudeuses" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 msgctxt "@tooltip" msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." msgstr "Le diamètre nominal de filament pris en charge par l'imprimante. Le diamètre exact sera remplacé par le matériau et / ou le profil." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:290 msgctxt "@label" msgid "Material diameter" msgstr "Diamètre du matériau" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:297 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:388 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 msgctxt "@label" msgid "Nozzle size" msgstr "Taille de la buse" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:315 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 msgctxt "@label" msgid "Start Gcode" msgstr "Début Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:325 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "Commandes Gcode à exécuter au tout début." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:334 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:335 msgctxt "@label" msgid "End Gcode" msgstr "Fin Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:344 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "Commandes Gcode à exécuter tout à la fin." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:376 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:377 msgctxt "@label" msgid "Nozzle Settings" msgstr "Paramètres de la buse" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:398 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 msgctxt "@label" msgid "Nozzle offset X" msgstr "Décalage buse X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:410 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Décalage buse Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:431 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "Extrudeuse Gcode de démarrage" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:449 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 msgctxt "@label" msgid "Extruder End Gcode" msgstr "Extrudeuse Gcode de fin" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:20 -msgctxt "@title:window" -msgid "Doodle3D Settings" -msgstr "Paramètres Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:53 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 -msgctxt "@action:button" -msgid "Save" -msgstr "Enregistrer" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:23 -msgctxt "@title:window" -msgid "Print to: %1" -msgstr "Imprimer sur : %1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:40 -msgctxt "@label" -msgid "Extruder Temperature: %1/%2°C" -msgstr "Température de l'extrudeuse : %1/%2 °C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:46 -msgctxt "@label" -msgid "Bed Temperature: %1/%2°C" -msgstr "Température du plateau : %1/%2 °C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:64 -msgctxt "@label" -msgid "%1" -msgstr "%1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:82 -msgctxt "@action:button" -msgid "Print" -msgstr "Imprimer" - #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" msgid "Changelog" @@ -1042,9 +1349,10 @@ msgstr "Récapitulatif des changements" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:55 #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:446 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:306 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:78 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:125 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 @@ -1098,30 +1406,38 @@ msgid "Unknown error code: %1" msgstr "Code erreur inconnue : %1" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:55 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Connecter à l'imprimante en réseau" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:65 msgctxt "@label" msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "Pour imprimer directement sur votre imprimante sur le réseau, assurez-vous que votre imprimante est connectée au réseau via un câble réseau ou en connectant votre imprimante à votre réseau Wi-Fi. Si vous ne connectez pas Cura avec votre imprimante, vous pouvez utiliser une clé USB pour transférer les fichiers g-code sur votre imprimante.\n\nSélectionnez votre imprimante dans la liste ci-dessous :" +msgstr "" +"Pour imprimer directement sur votre imprimante sur le réseau, assurez-vous que votre imprimante est connectée au réseau via un câble réseau ou en connectant votre imprimante à votre réseau Wi-Fi. Si vous ne connectez pas Cura avec votre imprimante, vous pouvez utiliser une clé USB pour transférer les fichiers g-code sur votre imprimante.\n" +"\n" +"Sélectionnez votre imprimante dans la liste ci-dessous :" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 msgctxt "@action:button" msgid "Add" msgstr "Ajouter" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:85 msgctxt "@action:button" msgid "Edit" msgstr "Modifier" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 @@ -1130,87 +1446,210 @@ msgid "Remove" msgstr "Supprimer" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:33 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:104 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:35 msgctxt "@action:button" msgid "Refresh" msgstr "Rafraîchir" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:196 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:196 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Si votre imprimante n'apparaît pas dans la liste, lisez le guide de dépannage de l'impression en réseau" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:223 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:223 msgctxt "@label" msgid "Type" msgstr "Type" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 msgctxt "@label" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:238 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:238 msgctxt "@label" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:241 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:241 msgctxt "@label" msgid "Unknown" msgstr "Inconnu" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:254 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:254 msgctxt "@label" msgid "Firmware version" msgstr "Version du firmware" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:266 msgctxt "@label" msgid "Address" msgstr "Adresse" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "L'imprimante à cette adresse n'a pas encore répondu." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Connecter" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 msgctxt "@title:window" msgid "Printer Address" msgstr "Adresse de l'imprimante" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Saisissez l'adresse IP ou le nom d'hôte de votre imprimante sur le réseau." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 msgctxt "@action:button" msgid "Ok" msgstr "Ok" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:37 msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Connecter à une imprimante" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:116 msgctxt "@info:tooltip" msgid "Load the configuration of the printer into Cura" msgstr "Charger la configuration de l'imprimante dans Cura" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:117 msgctxt "@action:button" msgid "Activate Configuration" msgstr "Activer la configuration" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Imprimer" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 +msgctxt "@label:status" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 +msgctxt "@label:status" +msgid "Reserved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 +msgctxt "@label:status" +msgid "Finished" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 +msgctxt "@label:status" +msgid "Preparing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 +msgctxt "@label:status" +msgid "Available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 +msgctxt "@label" +msgid "Completed on: " +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 +msgctxt "@label" +msgid "Clear build plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 +msgctxt "@label" +msgid "Preparing to print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 +msgctxt "@label" +msgid "PRINTER GROUP" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 +msgctxt "@title" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 +msgctxt "@label" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 +msgctxt "@label" +msgid "Queued" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 +msgctxt "@label:title" +msgid "Printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 +msgctxt "@action:button" +msgid "View printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1299,67 +1738,62 @@ msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Modifier les scripts de post-traitement actifs" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:71 -msgctxt "@label" -msgid "View Mode: Layers" -msgstr "Mode d’affichage : couches" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:88 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 msgctxt "@label" msgid "Color scheme" msgstr "Modèle de couleurs" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:102 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:91 msgctxt "@label:listbox" msgid "Material Color" msgstr "Couleur du matériau" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:106 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:95 msgctxt "@label:listbox" msgid "Line Type" msgstr "Type de ligne" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:144 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 msgctxt "@label" msgid "Compatibility Mode" msgstr "Mode de compatibilité" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:210 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 msgctxt "@label" msgid "Show Travels" msgstr "Afficher les déplacements" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 msgctxt "@label" msgid "Show Helpers" msgstr "Afficher les aides" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 msgctxt "@label" msgid "Show Shell" msgstr "Afficher la coque" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:234 msgctxt "@label" msgid "Show Infill" msgstr "Afficher le remplissage" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:264 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:283 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Afficher uniquement les couches supérieures" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:273 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:292 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Afficher 5 niveaux détaillés en haut" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:284 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:303 msgctxt "@label" msgid "Top / Bottom" msgstr "Haut / bas" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:288 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 msgctxt "@label" msgid "Inner Wall" msgstr "Paroi interne" @@ -1434,23 +1868,23 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Lissage" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:157 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 msgctxt "@action:button" msgid "Select settings" msgstr "Sélectionner les paramètres" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:197 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Sélectionner les paramètres pour personnaliser ce modèle" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:221 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrer..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:245 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 msgctxt "@label:checkbox" msgid "Show all" msgstr "Afficher tout" @@ -1587,25 +2021,43 @@ msgctxt "@title:window" msgid "Find & Update plugins" msgstr "Rechercher et mettre à jour les plug-ins" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:27 msgctxt "@label" msgid "Here you can find a list of Third Party plugins." msgstr "Vous pouvez trouver ici une liste de plug-ins de sources tierces." -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:143 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 msgctxt "@action:button" msgid "Upgrade" msgstr "Mettre à niveau" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 msgctxt "@action:button" msgid "Installed" msgstr "Installé" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 +msgctxt "@title:window" +msgid "Plugin License Agreement" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 +msgctxt "@label" +msgid "" +" plugin contains a license.\n" +"You need to accept this license to install this plugin.\n" +"Do you agree with the terms below?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" -msgid "Download" -msgstr "Télécharger" +msgid "Accept" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" +msgstr "" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -1781,71 +2233,71 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "Tout est en ordre ! Vous avez terminé votre check-up." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Non connecté à une imprimante" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:91 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "L'imprimante n'accepte pas les commandes" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "En maintenance. Vérifiez l'imprimante" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Connexion avec l'imprimante perdue" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Impression..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "En pause" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Préparation..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Supprimez l'imprimante" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 msgctxt "@label:" msgid "Resume" msgstr "Reprendre" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Pause" msgstr "Pause" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:271 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 msgctxt "@label:" msgid "Abort Print" msgstr "Abandonner l'impression" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 msgctxt "@window:title" msgid "Abort print" msgstr "Abandonner l'impression" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:283 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Êtes-vous sûr(e) de vouloir abandonner l'impression ?" @@ -1860,7 +2312,9 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "Vous avez personnalisé certains paramètres du profil.\nSouhaitez-vous conserver ces changements, ou les annuler ?" +msgstr "" +"Vous avez personnalisé certains paramètres du profil.\n" +"Souhaitez-vous conserver ces changements, ou les annuler ?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -1878,19 +2332,19 @@ msgid "Customized" msgstr "Personnalisé" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Toujours me demander" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:587 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Annuler et ne plus me demander" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:588 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Conserver et ne plus me demander" @@ -2031,7 +2485,7 @@ msgid "Unit" msgstr "Unité" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 msgctxt "@title:tab" msgid "General" msgstr "Général" @@ -2046,223 +2500,223 @@ msgctxt "@label" msgid "Language:" msgstr "Langue :" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 msgctxt "@label" msgid "Currency:" msgstr "Devise :" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 msgctxt "@label" msgid "Theme:" msgstr "Thème :" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Vous devez redémarrer l'application pour que ces changements prennent effet." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:289 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Découper automatiquement si les paramètres sont modifiés." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Découper automatiquement" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportement Viewport" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Surligne les parties non supportées du modèle en rouge. Sans ajouter de support, ces zones ne s'imprimeront pas correctement." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Mettre en surbrillance les porte-à-faux" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Déplace la caméra afin que le modèle sélectionné se trouve au centre de la vue." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:347 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Centrer la caméra lorsqu'un élément est sélectionné" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Le comportement de zoom par défaut de Cura doit-il être inversé ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Inverser la direction du zoom de la caméra." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Le zoom doit-il se faire dans la direction de la souris ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Zoomer vers la direction de la souris" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Les modèles dans la zone d'impression doivent-ils être déplacés afin de ne plus se croiser ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:382 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Veillez à ce que les modèles restent séparés" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Les modèles dans la zone d'impression doivent-ils être abaissés afin de toucher le plateau ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Abaisser automatiquement les modèles sur le plateau" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Afficher le message d'avertissement dans le lecteur gcode." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Message d'avertissement dans lecteur gcode." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "La couche doit-elle être forcée en mode de compatibilité ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Forcer l'affichage de la couche en mode de compatibilité (redémarrage requis)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 msgctxt "@label" msgid "Opening and saving files" msgstr "Ouvrir et enregistrer des fichiers" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Les modèles doivent-ils être mis à l'échelle du volume d'impression s'ils sont trop grands ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:462 msgctxt "@option:check" msgid "Scale large models" msgstr "Réduire la taille des modèles trop grands" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Un modèle peut apparaître en tout petit si son unité est par exemple en mètres plutôt qu'en millimètres. Ces modèles doivent-ils être agrandis ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:469 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Mettre à l'échelle les modèles extrêmement petits" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Un préfixe basé sur le nom de l'imprimante doit-il être automatiquement ajouté au nom de la tâche d'impression ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Ajouter le préfixe de la machine au nom de la tâche" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Un résumé doit-il être affiché lors de l'enregistrement d'un fichier de projet ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:496 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Afficher la boîte de dialogue du résumé lors de l'enregistrement du projet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Comportement par défaut lors de l'ouverture d'un fichier de projet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:513 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Comportement par défaut lors de l'ouverture d'un fichier de projet : " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:526 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 msgctxt "@option:openProject" msgid "Always ask" msgstr "Toujours demander" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Toujours ouvrir comme projet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:528 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always import models" msgstr "Toujours importer les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:564 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Lorsque vous apportez des modifications à un profil puis passez à un autre profil, une boîte de dialogue apparaît, vous demandant si vous souhaitez conserver les modifications. Vous pouvez aussi choisir une option par défaut, et le dialogue ne s'affichera plus." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@label" msgid "Override Profile" msgstr "Écraser le profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:622 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 msgctxt "@label" msgid "Privacy" msgstr "Confidentialité" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Cura doit-il vérifier les mises à jour au démarrage du programme ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:634 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Vérifier les mises à jour au démarrage" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Les données anonymes de votre impression doivent-elles être envoyées à Ultimaker ? Notez qu'aucun modèle, aucune adresse IP ni aucune autre information permettant de vous identifier personnellement ne seront envoyés ou stockés." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Envoyer des informations (anonymes) sur l'impression" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:441 msgctxt "@title:tab" msgid "Printers" msgstr "Imprimantes" @@ -2312,7 +2766,7 @@ msgid "Waiting for a printjob" msgstr "En attente d'une tâche d'impression" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 msgctxt "@title:tab" msgid "Profiles" msgstr "Profils" @@ -2410,7 +2864,7 @@ msgid "Export Profile" msgstr "Exporter un profil" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 msgctxt "@title:tab" msgid "Materials" msgstr "Matériaux" @@ -2442,14 +2896,14 @@ msgid "Import Material" msgstr "Importer un matériau" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "Impossible d'importer le matériau %1 : %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "Matériau %1 importé avec succès" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2458,17 +2912,17 @@ msgid "Export Material" msgstr "Exporter un matériau" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "Échec de l'export de matériau vers %1 : %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "Matériau exporté avec succès vers %1" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:822 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 msgctxt "@title:window" msgid "Add Printer" msgstr "Ajouter une imprimante" @@ -2483,71 +2937,6 @@ msgctxt "@action:button" msgid "Add Printer" msgstr "Ajouter une imprimante" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:166 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Paroi externe" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:167 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Parois internes" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:168 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Couche extérieure" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:169 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Remplissage" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:170 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Remplissage du support" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:171 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Interface du support" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:172 -msgctxt "@tooltip" -msgid "Support" -msgstr "Support" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:173 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Déplacement" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:174 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Rétractions" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:175 -msgctxt "@tooltip" -msgid "Other" -msgstr "Autre" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:217 -msgctxt "@label" -msgid "00h 00min" -msgstr "00 h 00 min" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:270 -msgctxt "@label" -msgid "%1 m / ~ %2 g / ~ %4 %3" -msgstr "%1 m / ~ %2 g / ~ %4 %3" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:275 -msgctxt "@label" -msgid "%1 m / ~ %2 g" -msgstr "%1 m / ~ %2 g" - #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -2563,7 +2952,9 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "Cura a été développé par Ultimaker B.V. en coopération avec la communauté Ultimaker.\nCura est fier d'utiliser les projets open source suivants :" +msgstr "" +"Cura a été développé par Ultimaker B.V. en coopération avec la communauté Ultimaker.\n" +"Cura est fier d'utiliser les projets open source suivants :" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -2655,32 +3046,48 @@ msgctxt "@label" msgid "SVG icons" msgstr "Icônes SVG" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +msgctxt "@label" +msgid "Profile:" +msgstr "Profil :" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Certaines valeurs de paramètre / forçage sont différentes des valeurs enregistrées dans le profil. \n" +"\n" +"Cliquez pour ouvrir le gestionnaire de profils." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" msgid "Search..." msgstr "Rechercher..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Copier la valeur vers tous les extrudeurs" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:405 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Masquer ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Masquer ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:419 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Afficher ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:438 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Configurer la visibilité des paramètres..." @@ -2691,7 +3098,10 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Certains paramètres masqués utilisent des valeurs différentes de leur valeur normalement calculée.\n\nCliquez pour rendre ces paramètres visibles." +msgstr "" +"Certains paramètres masqués utilisent des valeurs différentes de leur valeur normalement calculée.\n" +"\n" +"Cliquez pour rendre ces paramètres visibles." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 msgctxt "@label Header for list of settings." @@ -2719,7 +3129,10 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Ce paramètre possède une valeur qui est différente du profil.\n\nCliquez pour restaurer la valeur du profil." +msgstr "" +"Ce paramètre possède une valeur qui est différente du profil.\n" +"\n" +"Cliquez pour restaurer la valeur du profil." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 msgctxt "@label" @@ -2727,26 +3140,56 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Ce paramètre est normalement calculé mais il possède actuellement une valeur absolue définie.\n\nCliquez pour restaurer la valeur calculée." +msgstr "" +"Ce paramètre est normalement calculé mais il possède actuellement une valeur absolue définie.\n" +"\n" +"Cliquez pour restaurer la valeur calculée." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Configuration de l'impression" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "Configuration de l'impression désactivée\nLes fichiers G-Code ne peuvent pas être modifiés" +msgstr "" +"Configuration de l'impression désactivée\n" +"Les fichiers G-Code ne peuvent pas être modifiés" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 +msgctxt "@label" +msgid "00h 00min" +msgstr "00 h 00 min" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +msgctxt "@tooltip" +msgid "Time information" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 +msgctxt "@description" +msgid "Print time" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +msgctxt "@label" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 +msgctxt "@label" +msgid "%1m / ~ %2g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" msgid "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." msgstr "Configuration de l'impression recommandée

Imprimer avec les paramètres recommandés pour l'imprimante, le matériau et la qualité sélectionnés." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:460 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:481 msgctxt "@tooltip" msgid "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." msgstr "Configuration de l'impression personnalisée

Imprimer avec un contrôle fin de chaque élément du processus de découpe." @@ -2796,81 +3239,87 @@ msgid "No printer connected" msgstr "Aucune imprimante n'est connectée" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" -msgid "Hotend" -msgstr "Extrémité chaude" +msgid "Extruder" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:119 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 +msgctxt "@tooltip" +msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "Température actuelle de cet extrudeur." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Couleur du matériau dans cet extrudeur." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Matériau dans cet extrudeur." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Buse insérée dans cet extrudeur." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:249 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 msgctxt "@label" msgid "Build plate" msgstr "Plateau" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:278 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "Température cible du plateau chauffant. Le plateau sera chauffé ou refroidi pour tendre vers cette température. Si la valeur est 0, le chauffage du plateau sera éteint." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:310 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:343 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "Température actuelle du plateau chauffant." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:422 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "Température jusqu'à laquelle préchauffer le plateau." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Annuler" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button" msgid "Pre-heat" msgstr "Préchauffer" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:610 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Préchauffez le plateau avant l'impression. Vous pouvez continuer à ajuster votre impression pendant qu'il chauffe, et vous n'aurez pas à attendre que le plateau chauffe lorsque vous serez prêt à lancer l'impression." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:677 msgctxt "@label" msgid "Active print" msgstr "Activer l'impression" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:648 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 msgctxt "@label" msgid "Job Name" msgstr "Nom de la tâche" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 msgctxt "@label" msgid "Printing Time" msgstr "Durée d'impression" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:660 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 msgctxt "@label" msgid "Estimated time left" msgstr "Durée restante estimée" @@ -3061,53 +3510,53 @@ msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurer la visibilité des paramètres..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Veuillez charger un modèle 3D" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Prêt à découper" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Découpe en cours..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Prêt à %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Impossible de découper" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Découpe indisponible" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Préparer" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Annuler" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:288 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Sélectionner le périphérique de sortie actif" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 msgctxt "@title:window" msgid "Open file(s)" msgstr "Ouvrir le(s) fichier(s)" @@ -3199,42 +3648,37 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Aide" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 msgctxt "@action:button" msgid "Open File" msgstr "Ouvrir un fichier" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:428 -msgctxt "@action:button" -msgid "View Mode" -msgstr "Mode d’affichage" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "Settings" msgstr "Paramètres" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 msgctxt "@title:window" msgid "New project" msgstr "Nouveau projet" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:532 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "Êtes-vous sûr(e) de souhaiter lancer un nouveau projet ? Cela supprimera les objets du plateau ainsi que tous paramètres non enregistrés." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:750 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:694 msgctxt "@window:title" msgid "Install Plugin" msgstr "Installer plug-in" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:757 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 msgctxt "@title:window" msgid "Open File(s)" msgstr "Ouvrir le(s) fichier(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:760 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Nous avons trouvé au moins un fichier G-Code parmi les fichiers que vous avez sélectionné. Vous ne pouvez ouvrir qu'un seul fichier G-Code à la fois. Si vous souhaitez ouvrir un fichier G-Code, veuillez ne sélectionner qu'un seul fichier de ce type." @@ -3259,102 +3703,87 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Ne pas afficher à nouveau le résumé du projet lors de l'enregistrement" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 +msgctxt "@action:button" +msgid "Save" +msgstr "Enregistrer" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 msgctxt "@title:tab" msgid "Prepare" msgstr "Préparer" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" -msgid "Print" -msgstr "Imprimer" +msgid "Monitor" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +msgctxt "@label" +msgid "Layer Height" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +msgctxt "@label" +msgid "Print Speed" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +msgctxt "@label" +msgid "Slower" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +msgctxt "@label" +msgid "Faster" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" msgid "Infill" msgstr "Remplissage" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "0%" -msgstr "0 %" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:199 -msgctxt "@label" -msgid "Empty infill will leave your model hollow with low strength." -msgstr "Un remplissage vide laissera votre modèle creux pour une solidité faible." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:203 -msgctxt "@label" -msgid "20%" -msgstr "20 %" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:210 -msgctxt "@label" -msgid "Light (20%) infill will give your model an average strength." -msgstr "Un remplissage clairsemé (20 %) donnera à votre modèle une solidité moyenne." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:214 -msgctxt "@label" -msgid "50%" -msgstr "50 %" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:221 -msgctxt "@label" -msgid "Dense (50%) infill will give your model an above average strength." -msgstr "Un remplissage dense (50 %) donnera à votre modèle une solidité supérieure à la moyenne." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:225 -msgctxt "@label" -msgid "100%" -msgstr "100 %" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:232 -msgctxt "@label" -msgid "Solid (100%) infill will make your model completely solid." -msgstr "Un remplissage solide (100 %) rendra votre modèle vraiment résistant." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:236 -msgctxt "@label" -msgid "Gradual" -msgstr "Graduel" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:244 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Un remplissage graduel augmentera la quantité de remplissage vers le haut." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:267 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 +msgctxt "@label" +msgid "Enable gradual" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Generate Support" msgstr "Générer les supports" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Générer des structures pour soutenir les parties du modèle qui possèdent des porte-à-faux. Sans ces structures, ces parties s'effondreront durant l'impression." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:718 msgctxt "@label" msgid "Support Extruder" msgstr "Extrudeuse de soutien" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:391 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Sélectionnez l'extrudeur à utiliser comme support. Cela créera des structures de support sous le modèle afin de l'empêcher de s'affaisser ou de s'imprimer dans les airs." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:796 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Adhérence au plateau" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:462 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Activez l'impression d'une bordure ou plaquette (Brim/Raft). Cela ajoutera une zone plate autour de ou sous votre objet qui est facile à découper par la suite." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:515 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:883 msgctxt "@label" msgid "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides" msgstr "Besoin d'aide pour améliorer vos impressions ?
Lisez les Guides de dépannage Ultimaker" @@ -3391,30 +3820,21 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Journal du moteur" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:193 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 msgctxt "@label" msgid "Material" msgstr "Matériau" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:236 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +msgctxt "@label" +msgid "Check material compatibility" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Cliquez ici pour vérifier la compatibilité des matériaux sur Ultimaker.com." -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:325 -msgctxt "@label" -msgid "Profile:" -msgstr "Profil :" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "Certaines valeurs de paramètre / forçage sont différentes des valeurs enregistrées dans le profil. \n\nCliquez pour ouvrir le gestionnaire de profils." - #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -3465,6 +3885,16 @@ msgctxt "name" msgid "God Mode" msgstr "Mode God" +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +msgstr "" + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "" + #: ChangeLogPlugin/plugin.json msgctxt "description" msgid "Shows changes since latest checked version." @@ -3495,16 +3925,6 @@ msgctxt "name" msgid "USB printing" msgstr "Impression par USB" -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing X3G files" -msgstr "Permet l'écriture de fichiers X3G" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3G Writer" -msgstr "Générateur X3G" - #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -3525,6 +3945,21 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Connexion au réseau UM3" +#: CuraPrintClusterUpload/plugin.json +msgctxt "name" +msgid "UM3 Network Connection (Cluster)" +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "" + #: CuraSolidWorksPlugin/plugin.json msgctxt "description" msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" @@ -3615,6 +4050,16 @@ msgctxt "name" msgid "Version Upgrade 2.5 to 2.6" msgstr "Mise à niveau de 2.5 vers 2.6" +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -3755,6 +4200,189 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Lecteur de profil Cura" +#~ msgctxt "@item:inlistbox" +#~ msgid "X-Ray" +#~ msgstr "Rayon-X" + +#~ msgctxt "@label" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@info:whatsthis" +#~ msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +#~ msgstr "Accepte les G-Code et les envoie par Wi-Fi à une Doodle3D WiFi-Box." + +#~ msgctxt "@item:inmenu" +#~ msgid "Doodle3D printing" +#~ msgstr "Impression avec Doodle3D" + +#~ msgctxt "@action:button" +#~ msgid "Print with Doodle3D" +#~ msgstr "Imprimer avec Doodle3D" + +#~ msgctxt "@info:tooltip" +#~ msgid "Print with " +#~ msgstr "Imprimer avec" + +#~ msgctxt "@title:menu" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Enable Scan devices..." +#~ msgstr "Activer les périphériques de numérisation..." + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "Fichier X3G" + +#~ msgctxt "@info:progress" +#~ msgid "Saving to Removable Drive {0}" +#~ msgstr "Enregistrement sur le lecteur amovible {0}" + +#~ msgctxt "@info:status" +#~ msgid "Could not save to {0}: {1}" +#~ msgstr "Impossible d'enregistrer {0} : {1}" + +#~ msgctxt "@info:status" +#~ msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" +#~ msgstr "Gardez à l'esprit que vous devez rouvrir votre fichier SolidWorks manuellement ! Le fait de recharger le modèle ne marchera pas." + +#~ msgctxt "@item:inlistbox" +#~ msgid "Layers" +#~ msgstr "Couches" + +#~ msgid "Browse plugins" +#~ msgstr "Parcourir les plug-ins" + +#~ msgctxt "@item:inmenu" +#~ msgid "Solid" +#~ msgstr "Solide" + +#~ msgctxt "@label" +#~ msgid "The file {0} already exists. Are you sure you want to overwrite it?" +#~ msgstr "Le fichier {0} existe déjà. Êtes vous sûr de vouloir le remplacer ?" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: {1}" +#~ msgstr "Échec de l'exportation du profil vers {0} : {1}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: Writer plugin reported failure." +#~ msgstr "Échec de l'exportation du profil vers {0} : Le plug-in du générateur a rapporté une erreur." + +#~ msgctxt "@info:status" +#~ msgid "Exported profile to {0}" +#~ msgstr "Profil exporté vers {0}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Échec de l'importation du profil depuis le fichier {0} : {1}" + +#~ msgctxt "@title:window" +#~ msgid "Doodle3D Settings" +#~ msgstr "Paramètres Doodle3D" + +#~ msgctxt "@title:window" +#~ msgid "Print to: %1" +#~ msgstr "Imprimer sur : %1" + +#~ msgctxt "@label" +#~ msgid "Extruder Temperature: %1/%2°C" +#~ msgstr "Température de l'extrudeuse : %1/%2 °C" + +#~ msgctxt "@label" +#~ msgid "Bed Temperature: %1/%2°C" +#~ msgstr "Température du plateau : %1/%2 °C" + +#~ msgctxt "@label" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "@label" +#~ msgid "View Mode: Layers" +#~ msgstr "Mode d’affichage : couches" + +#~ msgctxt "@info:status" +#~ msgid "Could not import material %1: %2" +#~ msgstr "Impossible d'importer le matériau %1 : %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully imported material %1" +#~ msgstr "Matériau %1 importé avec succès" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export material to %1: %2" +#~ msgstr "Échec de l'export de matériau vers %1 : %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully exported material to %1" +#~ msgstr "Matériau exporté avec succès vers %1" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g / ~ %4 %3" +#~ msgstr "%1 m / ~ %2 g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g" +#~ msgstr "%1 m / ~ %2 g" + +#~ msgctxt "@label" +#~ msgid "Hotend" +#~ msgstr "Extrémité chaude" + +#~ msgctxt "@action:button" +#~ msgid "View Mode" +#~ msgstr "Mode d’affichage" + +#~ msgctxt "@title:tab" +#~ msgid "Print" +#~ msgstr "Imprimer" + +#~ msgctxt "@label" +#~ msgid "0%" +#~ msgstr "0 %" + +#~ msgctxt "@label" +#~ msgid "Empty infill will leave your model hollow with low strength." +#~ msgstr "Un remplissage vide laissera votre modèle creux pour une solidité faible." + +#~ msgctxt "@label" +#~ msgid "20%" +#~ msgstr "20 %" + +#~ msgctxt "@label" +#~ msgid "Light (20%) infill will give your model an average strength." +#~ msgstr "Un remplissage clairsemé (20 %) donnera à votre modèle une solidité moyenne." + +#~ msgctxt "@label" +#~ msgid "50%" +#~ msgstr "50 %" + +#~ msgctxt "@label" +#~ msgid "Dense (50%) infill will give your model an above average strength." +#~ msgstr "Un remplissage dense (50 %) donnera à votre modèle une solidité supérieure à la moyenne." + +#~ msgctxt "@label" +#~ msgid "100%" +#~ msgstr "100 %" + +#~ msgctxt "@label" +#~ msgid "Solid (100%) infill will make your model completely solid." +#~ msgstr "Un remplissage solide (100 %) rendra votre modèle vraiment résistant." + +#~ msgctxt "@label" +#~ msgid "Gradual" +#~ msgstr "Graduel" + +#~ msgctxt "description" +#~ msgid "Provides support for writing X3G files" +#~ msgstr "Permet l'écriture de fichiers X3G" + +#~ msgctxt "name" +#~ msgid "X3G Writer" +#~ msgstr "Générateur X3G" + #~ msgctxt "@label" #~ msgid "Machine Settings action" #~ msgstr "Action Paramètres de la machine" @@ -4334,4 +4962,4 @@ msgstr "Lecteur de profil Cura" #~ msgctxt "@label:" #~ msgid "Print Again" -#~ msgstr "Imprimer à nouveau" \ No newline at end of file +#~ msgstr "Imprimer à nouveau" diff --git a/resources/i18n/fr_FR/fdmextruder.def.json.po b/resources/i18n/fr_FR/fdmextruder.def.json.po index 6f8beee36a..4fd4448e30 100644 --- a/resources/i18n/fr_FR/fdmextruder.def.json.po +++ b/resources/i18n/fr_FR/fdmextruder.def.json.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -194,4 +194,4 @@ msgstr "Extrudeuse Position d'amorçage Y" #: fdmextruder.def.json msgctxt "extruder_prime_pos_y description" msgid "The Y coordinate of the position where the nozzle primes at the start of printing." -msgstr "Les coordonnées Y de la position à laquelle la buse s'amorce au début de l'impression." \ No newline at end of file +msgstr "Les coordonnées Y de la position à laquelle la buse s'amorce au début de l'impression." diff --git a/resources/i18n/fr_FR/fdmprinter.def.json.po b/resources/i18n/fr_FR/fdmprinter.def.json.po index e644927c40..ffeb2e1b05 100644 --- a/resources/i18n/fr_FR/fdmprinter.def.json.po +++ b/resources/i18n/fr_FR/fdmprinter.def.json.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -56,7 +56,9 @@ msgctxt "machine_start_gcode description" msgid "" "Gcode commands to be executed at the very start - separated by \n" "." -msgstr "Commandes Gcode à exécuter au tout début, séparées par \n." +msgstr "" +"Commandes Gcode à exécuter au tout début, séparées par \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -68,7 +70,9 @@ msgctxt "machine_end_gcode description" msgid "" "Gcode commands to be executed at the very end - separated by \n" "." -msgstr "Commandes Gcode à exécuter à la toute fin, séparées par \n." +msgstr "" +"Commandes Gcode à exécuter à la toute fin, séparées par \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -755,16 +759,6 @@ msgctxt "shell description" msgid "Shell" msgstr "Coque" -#: fdmprinter.def.json -msgctxt "wall_extruder_nr label" -msgid "Wall Extruder" -msgstr "Extrudeuse de paroi" - -#: fdmprinter.def.json -msgctxt "wall_extruder_nr description" -msgid "The extruder train used for printing the walls. This is used in multi-extrusion." -msgstr "Le train d'extrudeuse utilisé pour l'impression des parois. Cela est utilisé en multi-extrusion." - #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" msgid "Outer Wall Extruder" @@ -1125,6 +1119,11 @@ msgctxt "z_seam_type option random" msgid "Random" msgstr "Aléatoire" +#: fdmprinter.def.json +msgctxt "z_seam_type option sharpest_corner" +msgid "Sharpest Corner" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1145,6 +1144,36 @@ msgctxt "z_seam_y description" msgid "The Y coordinate of the position near where to start printing each part in a layer." msgstr "Coordonnée Y de la position près de laquelle démarrer l'impression de chaque partie dans une couche." +#: fdmprinter.def.json +msgctxt "z_seam_corner label" +msgid "Seam Corner Preference" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner description" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_none" +msgid "None" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_inner" +msgid "Hide Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_outer" +msgid "Expose Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_any" +msgid "Hide or Expose Seam" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1165,6 +1194,16 @@ msgctxt "skin_no_small_gaps_heuristic description" msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." msgstr "Quand le modèle présente de petits trous verticaux, environ 5 % de temps de calcul supplémentaire peut être alloué à la génération de couches du dessus et du dessous dans ces espaces étroits. Dans ce cas, désactivez ce paramètre." +#: fdmprinter.def.json +msgctxt "skin_outline_count label" +msgid "Extra Skin Wall Count" +msgstr "Nombre supplémentaire de parois extérieures" + +#: fdmprinter.def.json +msgctxt "skin_outline_count description" +msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." +msgstr "Remplace la partie la plus externe du motif du dessus/dessous par un certain nombre de lignes concentriques. Le fait d'utiliser une ou deux lignes améliore les plafonds qui commencent sur du matériau de remplissage." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1212,8 +1251,8 @@ msgstr "Motif de remplissage" #: fdmprinter.def.json msgctxt "infill_pattern description" -msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "Le motif du matériau de remplissage de l'impression. La ligne et le remplissage en zigzag changent de sens à chaque alternance de couche, réduisant ainsi les coûts matériels. Les motifs en grille, en triangle, cubiques, tétraédriques et concentriques sont entièrement imprimés sur chaque couche. Le remplissage cubique et tétraédrique change à chaque couche afin d'offrir une répartition plus égale de la solidité dans chaque direction." +msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1242,8 +1281,13 @@ msgstr "Subdivision cubique" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" -msgid "Tetrahedral" -msgstr "Tétraédrique" +msgid "Octet" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option quarter_cubic" +msgid "Quarter Cubic" +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1260,6 +1304,26 @@ msgctxt "infill_pattern option zigzag" msgid "Zig Zag" msgstr "Zig Zag" +#: fdmprinter.def.json +msgctxt "infill_pattern option cross" +msgid "Cross" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross_3d" +msgid "Cross 3D" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill label" +msgid "Connect Infill Lines" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill description" +msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" @@ -1381,34 +1445,34 @@ msgid "Don't generate areas of infill smaller than this (use skin instead)." msgstr "Ne pas générer de zones de remplissage plus petites que cela (utiliser plutôt une couche extérieure)" #: fdmprinter.def.json -msgctxt "expand_skins_into_infill label" -msgid "Expand Skins Into Infill" -msgstr "Étendre les couches extérieures dans le remplissage" +msgctxt "skin_preshrink label" +msgid "Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_skins_into_infill description" -msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." -msgstr "Étendre les zones de couche extérieure du haut et / ou du bas des surfaces planes. Par défaut, les couches extérieures s'arrêtent sous les lignes de paroi qui entourent le remplissage, mais cela peut entraîner l'apparition de trous si la densité de remplissage est faible. Ce paramètre permet d'étendre les couches extérieures au-delà des lignes de paroi de sorte que le remplissage sur les couches suivantes repose sur la couche extérieure." +msgctxt "skin_preshrink description" +msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins label" -msgid "Expand Top Skins Into Infill" -msgstr "Étendre les couches extérieures supérieures dans le remplissage" +msgctxt "top_skin_preshrink label" +msgid "Top Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins description" -msgid "Expand the top skin areas (areas with air above) so that they support infill above." -msgstr "Étendre les zones de couches extérieures supérieures (zones ayant de l'air au-dessus d'elles) de sorte à ce que le remplissage au-dessus repose sur elles." +msgctxt "top_skin_preshrink description" +msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins label" -msgid "Expand Bottom Skins Into Infill" -msgstr "Étendre les couches extérieures inférieures dans le remplissage" +msgctxt "bottom_skin_preshrink label" +msgid "Bottom Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins description" -msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." -msgstr "Étendre les zones de couches extérieures inférieures (zones ayant de l'air en-dessous d'elles) de sorte à ce qu'elles soient ancrées par les couches de remplissage au-dessus et en-dessous." +msgctxt "bottom_skin_preshrink description" +msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1417,8 +1481,28 @@ msgstr "Distance d'expansion de la couche extérieure" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" -msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." -msgstr "La distance par laquelle les couches extérieures sont étendues dans le remplissage. La distance par défaut est suffisante pour combler l'espace entre les lignes de remplissage et remédiera aux trous qui apparaissent là où la couche extérieure rencontre la paroi lorsque la densité de remplissage est faible. Une distance moindre sera souvent suffisante." +msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance label" +msgid "Top Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance description" +msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance label" +msgid "Bottom Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance description" +msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." +msgstr "" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -1800,16 +1884,6 @@ msgctxt "speed_topbottom description" msgid "The speed at which top/bottom layers are printed." msgstr "La vitesse à laquelle les couches du dessus/dessous sont imprimées." -#: fdmprinter.def.json -msgctxt "speed_ironing label" -msgid "Ironing Speed" -msgstr "Vitesse d'étirage" - -#: fdmprinter.def.json -msgctxt "speed_ironing description" -msgid "The speed at which to pass over the top surface." -msgstr "La vitesse à laquelle passer sur la surface supérieure." - #: fdmprinter.def.json msgctxt "speed_support label" msgid "Support Speed" @@ -2040,16 +2114,6 @@ msgctxt "acceleration_topbottom description" msgid "The acceleration with which top/bottom layers are printed." msgstr "L'accélération selon laquelle les couches du dessus/dessous sont imprimées." -#: fdmprinter.def.json -msgctxt "acceleration_ironing label" -msgid "Ironing Acceleration" -msgstr "Accélération d'étirage" - -#: fdmprinter.def.json -msgctxt "acceleration_ironing description" -msgid "The acceleration with which ironing is performed." -msgstr "L'accélération selon laquelle l'étirage est effectué." - #: fdmprinter.def.json msgctxt "acceleration_support label" msgid "Support Acceleration" @@ -2240,16 +2304,6 @@ msgctxt "jerk_topbottom description" msgid "The maximum instantaneous velocity change with which top/bottom layers are printed." msgstr "Le changement instantané maximal de vitesse selon lequel les couches du dessus/dessous sont imprimées." -#: fdmprinter.def.json -msgctxt "jerk_ironing label" -msgid "Ironing Jerk" -msgstr "Saccade d'étirage" - -#: fdmprinter.def.json -msgctxt "jerk_ironing description" -msgid "The maximum instantaneous velocity change while performing ironing." -msgstr "Le changement instantané maximal de vitesse lors de l'étirage." - #: fdmprinter.def.json msgctxt "jerk_support label" msgid "Support Jerk" @@ -2765,6 +2819,11 @@ msgctxt "support_pattern option zigzag" msgid "Zig Zag" msgstr "Zig Zag" +#: fdmprinter.def.json +msgctxt "support_pattern option cross" +msgid "Cross" +msgstr "" + #: fdmprinter.def.json msgctxt "support_connect_zigzags label" msgid "Connect Support ZigZags" @@ -2777,23 +2836,33 @@ msgstr "Relie les zigzags. Cela augmente la solidité des supports en zigzag." #: fdmprinter.def.json msgctxt "support_skip_some_zags label" -msgid "Skip Some ZigZags Connections" -msgstr "Ignorer certaines connexions ZigZag" +msgid "Break Up Support In Chunks" +msgstr "" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" -msgid "Skip some ZigZags connections to make the support structure easier to break." -msgstr "Ignorer certaines connexions ZigZag pour rendre la structure de support plus facile à casser." +msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm description" +msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count label" -msgid "ZigZag Connection Skip Count" -msgstr "Nombre d'omissions de connexion ZigZag" +msgid "Support Chunk Line Count" +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" -msgid "Skip one in every N connection lines to make the support structure easier to break." -msgstr "Ignorer une ligne de connexion sur N pour rendre la structure de support plus facile à casser." +msgid "Skip one in every N connection lines to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3335,7 +3404,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance, multiple skirt lines will extend outwards from this distance." -msgstr "La distance horizontale entre la jupe et la première couche de l’impression.\nIl s’agit de la distance minimale séparant la jupe de l’objet. Si la jupe a d’autres lignes, celles-ci s’étendront vers l’extérieur." +msgstr "" +"La distance horizontale entre la jupe et la première couche de l’impression.\n" +"Il s’agit de la distance minimale séparant la jupe de l’objet. Si la jupe a d’autres lignes, celles-ci s’étendront vers l’extérieur." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3377,6 +3448,26 @@ msgctxt "brim_outside_only description" msgid "Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much." msgstr "Imprimer uniquement la bordure sur l'extérieur du modèle. Cela réduit la quantité de bordure que vous devez retirer par la suite, sans toutefois véritablement réduire l'adhérence au plateau." +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 label" +msgid "Initial Layer Z Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 description" +msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers label" +msgid "Z Offset Taper Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers description" +msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3387,6 +3478,16 @@ msgctxt "raft_margin description" msgid "If the raft is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print." msgstr "Si vous avez appliqué un radeau, alors il s’agit de l’espace de radeau supplémentaire autour du modèle qui dispose déjà d’un radeau. L’augmentation de cette marge va créer un radeau plus solide, mais requiert davantage de matériau et laisse moins de place pour votre impression." +#: fdmprinter.def.json +msgctxt "raft_smoothing label" +msgid "Raft Smoothing" +msgstr "" + +#: fdmprinter.def.json +msgctxt "raft_smoothing description" +msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_airgap label" msgid "Raft Air Gap" @@ -4062,6 +4163,16 @@ msgctxt "smooth_spiralized_contours description" msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." msgstr "Lisser les contours spiralisés pour réduire la visibilité de la jointure en Z (la jointure en Z doit être à peine visible sur l'impression mais sera toujours visible dans la vue en couches). Veuillez remarquer que le lissage aura tendance à estomper les détails fins de la surface." +#: fdmprinter.def.json +msgctxt "relative_extrusion label" +msgid "Relative Extrusion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "relative_extrusion description" +msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." +msgstr "" + #: fdmprinter.def.json msgctxt "experimental label" msgid "Experimental" @@ -4072,6 +4183,16 @@ msgctxt "experimental description" msgid "experimental!" msgstr "expérimental !" +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "" + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4182,16 +4303,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Vitesse de déplacement pendant une roue libre, par rapport à la vitesse de déplacement pendant l'extrusion. Une valeur légèrement inférieure à 100 % est conseillée car, lors du mouvement en roue libre, la pression dans le tube bowden chute." -#: fdmprinter.def.json -msgctxt "skin_outline_count label" -msgid "Extra Skin Wall Count" -msgstr "Nombre supplémentaire de parois extérieures" - -#: fdmprinter.def.json -msgctxt "skin_outline_count description" -msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." -msgstr "Remplace la partie la plus externe du motif du dessus/dessous par un certain nombre de lignes concentriques. Le fait d'utiliser une ou deux lignes améliore les plafonds qui commencent sur du matériau de remplissage." - #: fdmprinter.def.json msgctxt "skin_alternate_rotation label" msgid "Alternate Skin Rotation" @@ -4202,6 +4313,26 @@ msgctxt "skin_alternate_rotation description" msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." msgstr "Alterne le sens d'impression des couches du dessus/dessous. Elles sont généralement imprimées uniquement en diagonale. Ce paramètre ajoute les sens X uniquement et Y uniquement." +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size label" +msgid "Cross 3D Pocket Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size description" +msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly label" +msgid "Alternate Cross 3D Pockets" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly description" +msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." +msgstr "" + #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" msgid "Spaghetti Infill" @@ -4502,7 +4633,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "Distance d’un déplacement ascendant qui est extrudé à mi-vitesse.\nCela peut permettre une meilleure adhérence aux couches précédentes sans surchauffer le matériau dans ces couches. Uniquement applicable à l'impression filaire." +msgstr "" +"Distance d’un déplacement ascendant qui est extrudé à mi-vitesse.\n" +"Cela peut permettre une meilleure adhérence aux couches précédentes sans surchauffer le matériau dans ces couches. Uniquement applicable à l'impression filaire." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -4619,6 +4752,16 @@ msgctxt "ironing_enabled description" msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." msgstr "Aller au-dessus de la surface supérieure une fois supplémentaire, mais sans extruder de matériau. Cela signifie de faire fondre le plastique en haut un peu plus, pour créer une surface lisse." +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer label" +msgid "Iron Only Highest Layer" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer description" +msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." +msgstr "" + #: fdmprinter.def.json msgctxt "ironing_pattern label" msgid "Ironing Pattern" @@ -4669,6 +4812,36 @@ msgctxt "ironing_inset description" msgid "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print." msgstr "Distance à garder à partir des bords du modèle. Étirer jusqu'au bord de la maille peut entraîner l'apparition d'un bord denté sur votre impression." +#: fdmprinter.def.json +msgctxt "speed_ironing label" +msgid "Ironing Speed" +msgstr "Vitesse d'étirage" + +#: fdmprinter.def.json +msgctxt "speed_ironing description" +msgid "The speed at which to pass over the top surface." +msgstr "La vitesse à laquelle passer sur la surface supérieure." + +#: fdmprinter.def.json +msgctxt "acceleration_ironing label" +msgid "Ironing Acceleration" +msgstr "Accélération d'étirage" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing description" +msgid "The acceleration with which ironing is performed." +msgstr "L'accélération selon laquelle l'étirage est effectué." + +#: fdmprinter.def.json +msgctxt "jerk_ironing label" +msgid "Ironing Jerk" +msgstr "Saccade d'étirage" + +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "Le changement instantané maximal de vitesse lors de l'étirage." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4729,6 +4902,66 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Matrice de transformation à appliquer au modèle lors de son chargement depuis le fichier." +#~ msgctxt "wall_extruder_nr label" +#~ msgid "Wall Extruder" +#~ msgstr "Extrudeuse de paroi" + +#~ msgctxt "wall_extruder_nr description" +#~ msgid "The extruder train used for printing the walls. This is used in multi-extrusion." +#~ msgstr "Le train d'extrudeuse utilisé pour l'impression des parois. Cela est utilisé en multi-extrusion." + +#~ msgctxt "infill_pattern description" +#~ msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." +#~ msgstr "Le motif du matériau de remplissage de l'impression. La ligne et le remplissage en zigzag changent de sens à chaque alternance de couche, réduisant ainsi les coûts matériels. Les motifs en grille, en triangle, cubiques, tétraédriques et concentriques sont entièrement imprimés sur chaque couche. Le remplissage cubique et tétraédrique change à chaque couche afin d'offrir une répartition plus égale de la solidité dans chaque direction." + +#~ msgctxt "infill_pattern option tetrahedral" +#~ msgid "Tetrahedral" +#~ msgstr "Tétraédrique" + +#~ msgctxt "expand_skins_into_infill label" +#~ msgid "Expand Skins Into Infill" +#~ msgstr "Étendre les couches extérieures dans le remplissage" + +#~ msgctxt "expand_skins_into_infill description" +#~ msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." +#~ msgstr "Étendre les zones de couche extérieure du haut et / ou du bas des surfaces planes. Par défaut, les couches extérieures s'arrêtent sous les lignes de paroi qui entourent le remplissage, mais cela peut entraîner l'apparition de trous si la densité de remplissage est faible. Ce paramètre permet d'étendre les couches extérieures au-delà des lignes de paroi de sorte que le remplissage sur les couches suivantes repose sur la couche extérieure." + +#~ msgctxt "expand_upper_skins label" +#~ msgid "Expand Top Skins Into Infill" +#~ msgstr "Étendre les couches extérieures supérieures dans le remplissage" + +#~ msgctxt "expand_upper_skins description" +#~ msgid "Expand the top skin areas (areas with air above) so that they support infill above." +#~ msgstr "Étendre les zones de couches extérieures supérieures (zones ayant de l'air au-dessus d'elles) de sorte à ce que le remplissage au-dessus repose sur elles." + +#~ msgctxt "expand_lower_skins label" +#~ msgid "Expand Bottom Skins Into Infill" +#~ msgstr "Étendre les couches extérieures inférieures dans le remplissage" + +#~ msgctxt "expand_lower_skins description" +#~ msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." +#~ msgstr "Étendre les zones de couches extérieures inférieures (zones ayant de l'air en-dessous d'elles) de sorte à ce qu'elles soient ancrées par les couches de remplissage au-dessus et en-dessous." + +#~ msgctxt "expand_skins_expand_distance description" +#~ msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." +#~ msgstr "La distance par laquelle les couches extérieures sont étendues dans le remplissage. La distance par défaut est suffisante pour combler l'espace entre les lignes de remplissage et remédiera aux trous qui apparaissent là où la couche extérieure rencontre la paroi lorsque la densité de remplissage est faible. Une distance moindre sera souvent suffisante." + +#~ msgctxt "support_skip_some_zags label" +#~ msgid "Skip Some ZigZags Connections" +#~ msgstr "Ignorer certaines connexions ZigZag" + +#~ msgctxt "support_skip_some_zags description" +#~ msgid "Skip some ZigZags connections to make the support structure easier to break." +#~ msgstr "Ignorer certaines connexions ZigZag pour rendre la structure de support plus facile à casser." + +#~ msgctxt "support_zag_skip_count label" +#~ msgid "ZigZag Connection Skip Count" +#~ msgstr "Nombre d'omissions de connexion ZigZag" + +#~ msgctxt "support_zag_skip_count description" +#~ msgid "Skip one in every N connection lines to make the support structure easier to break." +#~ msgstr "Ignorer une ligne de connexion sur N pour rendre la structure de support plus facile à casser." + #~ msgctxt "machine_show_variants label" #~ msgid "Show machine variants" #~ msgstr "Afficher les variantes de la machine" @@ -4891,4 +5124,4 @@ msgstr "Matrice de transformation à appliquer au modèle lors de son chargement #~ msgctxt "multiple_mesh_overlap label" #~ msgid "Dual Extrusion Overlap" -#~ msgstr "Chevauchement de double extrusion" \ No newline at end of file +#~ msgstr "Chevauchement de double extrusion" diff --git a/resources/i18n/it_IT/cura.po b/resources/i18n/it_IT/cura.po index 60b383dafd..7cce8e20aa 100644 --- a/resources/i18n/it_IT/cura.po +++ b/resources/i18n/it_IT/cura.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -16,15 +16,15 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:28 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" msgstr "Impostazioni macchina" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" -msgid "X-Ray" -msgstr "Raggi X" +msgid "X-Ray view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -36,40 +36,69 @@ msgctxt "@item:inlistbox" msgid "GCode File" msgstr "File GCode" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:13 -msgctxt "@label" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:17 -msgctxt "@info:whatsthis" -msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "Accetta i G-Code e li invia tramite WiFi a un Doodle3D WiFi-Box." - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:36 -msgctxt "@item:inmenu" -msgid "Doodle3D printing" -msgstr "Stampa Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:37 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" -msgid "Print with Doodle3D" -msgstr "Stampa con Doodle3D" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:38 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 +msgctxt "@properties:tooltip" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Annulla" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 +msgctxt "@info:status" +msgid "Sending data to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 +msgctxt "@info:status" +msgid "Unable to send data to Doodle3D Connect. Is another job still active?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 +msgctxt "@info:status" +msgid "File sent to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect.." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" -msgid "Print with " -msgstr "Stampa con" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:49 -msgctxt "@title:menu" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:50 -msgctxt "@item:inlistbox" -msgid "Enable Scan devices..." -msgstr "Abilita dispositivi di scansione..." +msgid "Open the Doodle3D Connect web interface" +msgstr "" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -111,16 +140,36 @@ msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Impossibile avviare un nuovo processo di stampa perché la stampante è occupata o non collegata." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +msgctxt "@info:title" +msgid "Print Details" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "Questa stampante non supporta la stampa tramite USB in quanto utilizza la versione UltiGCode." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Impossibile avviare un nuovo processo di stampa perché la stampante non supporta la stampa tramite USB." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:909 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 +msgctxt "@info:title" +msgid "Warning" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." @@ -132,10 +181,10 @@ msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "Impossibile trovare il firmware richiesto per la stampante a %s." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:14 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "File X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +msgctxt "@info:title" +msgid "Printer Firmware" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -150,47 +199,79 @@ msgstr "Salva su unità rimovibile {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 #, python-brace-format -msgctxt "@info:progress" +msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "Salvataggio su unità rimovibile {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +msgctxt "@info:title" +msgid "Saving" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "Impossibile salvare {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format -msgctxt "@info:status" -msgid "Saved to Removable Drive {0} as {1}" -msgstr "Salvato su unità rimovibile {0} come {1}" +msgctxt "@info:status Don't translate the tag {device}!" +msgid "Could not find a file name when trying to write to {device}." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -msgctxt "@action:button" -msgid "Eject" -msgstr "Rimuovi" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -#, python-brace-format -msgctxt "@action" -msgid "Eject removable device {0}" -msgstr "Rimuovi il dispositivo rimovibile {0}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:138 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #, python-brace-format msgctxt "@info:status" msgid "Could not save to removable drive {0}: {1}" msgstr "Impossibile salvare su unità rimovibile {0}: {1}" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:148 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:675 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:683 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:145 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:152 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 +msgctxt "@info:title" +msgid "Error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +#, python-brace-format +msgctxt "@info:status" +msgid "Saved to Removable Drive {0} as {1}" +msgstr "Salvato su unità rimovibile {0} come {1}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +msgctxt "@info:title" +msgid "File Saved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +msgctxt "@action:button" +msgid "Eject" +msgstr "Rimuovi" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +#, python-brace-format +msgctxt "@action" +msgid "Eject removable device {0}" +msgstr "Rimuovi il dispositivo rimovibile {0}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 #, python-brace-format msgctxt "@info:status" msgid "Ejected {0}. You can now safely remove the drive." msgstr "Espulso {0}. È ora possibile rimuovere in modo sicuro l'unità." -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:150 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 +msgctxt "@info:title" +msgid "Safely Remove Hardware" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format msgctxt "@info:status" msgid "Failed to eject {0}. Another program may be using the drive." @@ -201,219 +282,351 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Unità rimovibile" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:49 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Stampa sulla rete" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Stampa sulla rete" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:156 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 msgctxt "@info:status" msgid "Access to the printer requested. Please approve the request on the printer" msgstr "Richiesto accesso alla stampante. Approvare la richiesta sulla stampante" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +msgctxt "@info:title" +msgid "Connection status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 msgctxt "@info:status" msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:468 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@action:button" msgid "Retry" msgstr "Riprova" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Invia nuovamente la richiesta di accesso" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Accesso alla stampante accettato" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 msgctxt "@info:status" msgid "No access to print with this printer. Unable to send print job." msgstr "Nessun accesso per stampare con questa stampante. Impossibile inviare il processo di stampa." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:28 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:72 msgctxt "@action:button" msgid "Request Access" msgstr "Richiesta di accesso" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:71 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "Invia la richiesta di accesso alla stampante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:358 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:375 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 msgctxt "@info:status" msgid "Connected over the network. Please approve the access request on the printer." msgstr "Collegato alla rete. Si prega di approvare la richiesta di accesso sulla stampante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:365 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:382 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 msgctxt "@info:status" msgid "Connected over the network." msgstr "Collegato alla rete." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:378 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "Collegato alla rete. Nessun accesso per controllare la stampante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:383 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:400 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 msgctxt "@info:status" msgid "Access request was denied on the printer." msgstr "Richiesta di accesso negata sulla stampante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:386 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:403 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Access request failed due to a timeout." msgstr "Richiesta di accesso non riuscita per superamento tempo." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:450 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:467 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "The connection with the network was lost." msgstr "Il collegamento con la rete si è interrotto." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:481 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 msgctxt "@info:status" msgid "The connection with the printer was lost. Check your printer to see if it is connected." msgstr "Il collegamento con la stampante si è interrotto. Controllare la stampante per verificare se è collegata." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:630 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:649 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 #, python-format msgctxt "@info:status" msgid "Unable to start a new print job, printer is busy. Current printer status is %s." msgstr "Impossibile avviare un nuovo processo di stampa perché la stampante è occupata. Stato stampante corrente %s." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:654 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Impossibile avviare un nuovo processo di stampa. Nessun Printcore caricato nello slot {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:661 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:682 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Impossibile avviare un nuovo processo di stampa. Nessun materiale caricato nello slot {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:670 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Materiale per la bobina insufficiente {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:680 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "PrintCore diverso (Cura: {0}, Stampante: {1}) selezionata per estrusore {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:694 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:716 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@label" msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Materiale diverso (Cura: {0}, Stampante: {1}) selezionato per l’estrusore {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:724 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "PrintCore {0} non correttamente calibrato. Necessario eseguire calibrazione XY sulla stampante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:707 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:729 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "Sei sicuro di voler stampare con la configurazione selezionata?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:730 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 msgctxt "@label" msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "Le configurazioni o la calibrazione della stampante e di Cura non corrispondono. Per ottenere i migliori risultati, sezionare sempre per i PrintCore e i materiali inseriti nella stampante utilizzata." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:736 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Mancata corrispondenza della configurazione" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:815 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Invio dati alla stampante in corso" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:816 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:46 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:137 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Annulla" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +msgctxt "@info:title" +msgid "Sending Data" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:884 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Impossibile inviare i dati alla stampante. Altro processo ancora attivo?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1018 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1050 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Interruzione stampa in corso..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1024 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Stampa interrotta. Controllare la stampante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1030 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Messa in pausa stampa..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1032 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Ripresa stampa..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1175 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Sincronizzazione con la stampante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1177 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "Desideri utilizzare la configurazione corrente della tua stampante in Cura?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1220 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 msgctxt "@label" msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "I PrintCore e/o i materiali sulla stampante differiscono da quelli contenuti nel tuo attuale progetto. Per ottenere i risultati migliori, sezionare sempre per i PrintCore e i materiali inseriti nella stampante utilizzata." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.py:19 msgctxt "@action" msgid "Connect via Network" msgstr "Collega tramite rete" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:172 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#, python-brace-format +msgctxt "Count is number of printers." +msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#, python-brace-format +msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#, python-brace-format +msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +msgctxt "@info:status" +msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#, python-brace-format +msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Download" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +msgctxt "@info" +msgid "Could not access update information." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" msgstr "Rilevati errori all'apertura del file SolidWorks! Controllare se è possibile aprire il file in SolidWorks senza che si verifichino problemi!" @@ -432,17 +645,12 @@ msgstr "File gruppo SolidWorks" msgid "Configure" msgstr "Configura" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:129 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 #, python-format msgctxt "@info:status" msgid "Error while starting %s!" msgstr "Errore durante l'avvio di %s!" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:207 -msgctxt "@info:status" -msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" -msgstr "Tenere presente che è necessario riaprire il file SolidWorks manualmente! Il ricaricamento del modello non funziona!" - #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 msgid "Modify G-Code" msgstr "Modifica G-code" @@ -452,7 +660,12 @@ msgctxt "@info" msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." msgstr "Cura acquisisce dati statistici elaborati in forma anonima. L'acquisizione può essere disabilitata nelle preferenze." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:44 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 +msgctxt "@info:title" +msgid "Collecting Data" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" msgid "Dismiss" msgstr "Ignora" @@ -470,14 +683,19 @@ msgstr "File G-Code" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" -msgid "Layers" -msgstr "Strati" +msgid "Layer view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura non visualizza in modo accurato gli strati se la funzione Wire Printing è abilitata" +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 +msgctxt "@info:title" +msgid "Layer View" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -503,24 +721,31 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Immagine GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:281 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "Il materiale selezionato è incompatibile con la macchina o la configurazione selezionata." +msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:308 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:307 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 +msgctxt "@info:title" +msgid "Unable to slice" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Impossibile eseguire il sezionamento con le impostazioni attuali. Le seguenti impostazioni presentano errori: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:317 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:306 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Impossibile eseguire il sezionamento perché la torre di innesco o la posizione di innesco non sono valide." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:325 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:315 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Nulla da sezionare in quanto nessuno dei modelli corrisponde al volume di stampa. Ridimensionare o ruotare i modelli secondo necessità." @@ -531,6 +756,11 @@ msgctxt "@info:status" msgid "Processing Layers" msgstr "Elaborazione dei livelli" +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +msgctxt "@info:title" +msgid "Information" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" msgid "Per Model Settings" @@ -542,13 +772,13 @@ msgid "Configure Per Model Settings" msgstr "Configura impostazioni per modello" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:475 msgctxt "@title:tab" msgid "Recommended" msgstr "Consigliata" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:459 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizzata" @@ -559,25 +789,37 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "File 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:122 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1050 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 msgctxt "@label" msgid "Nozzle" msgstr "Ugello" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 +msgctxt "@menuitem" msgid "Browse plugins" -msgstr "Sfoglia plugin" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:120 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +msgctxt "@info:tile" +msgid "Warning" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" msgid "Plugin browser" msgstr "Browser plugin" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" -msgid "Solid" -msgstr "Solido" +msgid "Solid view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -589,7 +831,13 @@ msgctxt "@info:status" msgid "Parsing G-code" msgstr "Parsing codice G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:365 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Verifica che il codice G sia idoneo alla tua stampante e alla sua configurazione prima di trasmettere il file. La rappresentazione del codice G potrebbe non essere accurata." @@ -611,7 +859,7 @@ msgid "Cura Project 3MF file" msgstr "File 3MF Progetto Cura" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Seleziona aggiornamenti" @@ -631,18 +879,73 @@ msgctxt "@action" msgid "Level build plate" msgstr "Livella piano di stampa" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:247 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Parete esterna" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Pareti interne" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Rivestimento esterno" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Riempimento" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Riempimento del supporto" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Interfaccia supporto" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support" +msgstr "Supporto" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Spostamenti" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Retrazioni" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Other" +msgstr "Altro" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "File pre-sezionato {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 msgctxt "@item:material" msgid "No material loaded" msgstr "Nessun materiale caricato" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 msgctxt "@item:material" msgid "Unknown material" msgstr "Materiale sconosciuto" @@ -652,35 +955,56 @@ msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Ricerca nuova posizione per gli oggetti" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:85 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Impossibile individuare una posizione nel volume di stampa per tutti gli oggetti" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:417 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 msgctxt "@title:window" msgid "File Already Exists" msgstr "Il file esiste già" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:418 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 #, python-brace-format -msgctxt "@label" +msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "Il file {0} esiste già. Sei sicuro di voler sovrascrivere?" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:801 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" msgid "Custom" msgstr "Personalizzata" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:805 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 msgctxt "@label" msgid "Custom Material" msgstr "Materiale personalizzato" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +msgctxt "@info:status" +msgid "The selected material is incompatible with the selected machine or configuration." +msgstr "Il materiale selezionato è incompatibile con la macchina o la configurazione selezionata." + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:109 +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 +msgctxt "@info:title" +msgid "Incompatible Material" +msgstr "" + #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." msgid "The selected material diameter causes the material to become incompatible with the current printer." @@ -698,70 +1022,86 @@ msgstr "Annulla modifica del diametro del materiale." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "Impossibile esportare profilo su {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:148 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "Impossibile esportare profilo su {0}: Errore di plugin writer." +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "Profilo esportato su {0}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:199 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:208 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:242 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +msgctxt "@info:title" +msgid "Export Details" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:213 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:247 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "Impossibile importare profilo da {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:210 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:246 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profilo importato correttamente {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:249 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Il profilo {0} ha un tipo di file sconosciuto o corrotto." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:267 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:272 msgctxt "@label" msgid "Custom profile" msgstr "Profilo personalizzato" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:278 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Il profilo è privo del tipo di qualità." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:300 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Impossibile trovare un tipo qualità {0} per la configurazione corrente." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:95 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "L’altezza del volume di stampa è stata ridotta a causa del valore dell’impostazione \"Sequenza di stampa” per impedire la collisione del gantry con i modelli stampati." +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 +msgctxt "@info:title" +msgid "Build Volume" +msgstr "" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Moltiplicazione e collocazione degli oggetti" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "" + #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" msgid "Crash Report" @@ -773,41 +1113,44 @@ msgid "" "

A fatal exception has occurred that we could not recover from!

\n" "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" " " -msgstr "

Si è verificata un'eccezione fatale che non stato possibile superare!

\n

Utilizzare le informazioni sotto riportate per inviare un rapporto sull'errore a http://github.com/Ultimaker/Cura/issues

\n " +msgstr "" +"

Si è verificata un'eccezione fatale che non stato possibile superare!

\n" +"

Utilizzare le informazioni sotto riportate per inviare un rapporto sull'errore a http://github.com/Ultimaker/Cura/issues

\n" +" " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 msgctxt "@action:button" msgid "Open Web Page" msgstr "Apri pagina Web" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:248 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Caricamento macchine in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:610 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Impostazione scena in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:652 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Caricamento interfaccia in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:815 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1285 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1295 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "È possibile caricare un solo file codice G per volta. Importazione saltata {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1294 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1304 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" @@ -837,12 +1180,12 @@ msgstr "X (Larghezza)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:286 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:838 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:839 msgctxt "@label" msgid "mm" msgstr "mm" @@ -932,108 +1275,72 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "La differenza di altezza tra la punta dell’ugello e il sistema gantry (assi X e Y). Utilizzata per evitare collisioni tra le stampe precedenti e il gantry durante la stampa \"Uno alla volta\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Numero di estrusori" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 msgctxt "@tooltip" msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." msgstr "Diametro nominale del filamento supportato dalla stampante. Il diametro esatto verrà sovrapposto dal materiale e/o dal profilo." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:290 msgctxt "@label" msgid "Material diameter" msgstr "Diametro materiale" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:297 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:388 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 msgctxt "@label" msgid "Nozzle size" msgstr "Dimensione ugello" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:315 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 msgctxt "@label" msgid "Start Gcode" msgstr "Avvio GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:325 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "Comandi Gcode da eseguire all’avvio." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:334 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:335 msgctxt "@label" msgid "End Gcode" msgstr "Fine GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:344 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "Comandi Gcode da eseguire alla fine." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:376 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:377 msgctxt "@label" msgid "Nozzle Settings" msgstr "Impostazioni ugello" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:398 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 msgctxt "@label" msgid "Nozzle offset X" msgstr "Scostamento X ugello" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:410 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Scostamento Y ugello" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:431 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "Codice G avvio estrusore" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:449 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 msgctxt "@label" msgid "Extruder End Gcode" msgstr "Codice G fine estrusore" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:20 -msgctxt "@title:window" -msgid "Doodle3D Settings" -msgstr "Impostazioni Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:53 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 -msgctxt "@action:button" -msgid "Save" -msgstr "Salva" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:23 -msgctxt "@title:window" -msgid "Print to: %1" -msgstr "Stampa a: %1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:40 -msgctxt "@label" -msgid "Extruder Temperature: %1/%2°C" -msgstr "Temperatura estrusore: %1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:46 -msgctxt "@label" -msgid "Bed Temperature: %1/%2°C" -msgstr "Temperatura piano di stampa: %1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:64 -msgctxt "@label" -msgid "%1" -msgstr "%1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:82 -msgctxt "@action:button" -msgid "Print" -msgstr "Stampa" - #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" msgid "Changelog" @@ -1042,9 +1349,10 @@ msgstr "Registro modifiche" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:55 #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:446 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:306 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:78 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:125 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 @@ -1098,30 +1406,38 @@ msgid "Unknown error code: %1" msgstr "Codice errore sconosciuto: %1" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:55 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Collega alla stampante in rete" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:65 msgctxt "@label" msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "Per stampare direttamente sulla stampante in rete, verificare che la stampante desiderata sia collegata alla rete mediante un cavo di rete o mediante collegamento alla rete WIFI. Se si collega Cura alla stampante, è comunque possibile utilizzare una chiavetta USB per trasferire i file codice G alla stampante.\n\nSelezionare la stampante dall’elenco seguente:" +msgstr "" +"Per stampare direttamente sulla stampante in rete, verificare che la stampante desiderata sia collegata alla rete mediante un cavo di rete o mediante collegamento alla rete WIFI. Se si collega Cura alla stampante, è comunque possibile utilizzare una chiavetta USB per trasferire i file codice G alla stampante.\n" +"\n" +"Selezionare la stampante dall’elenco seguente:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 msgctxt "@action:button" msgid "Add" msgstr "Aggiungi" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:85 msgctxt "@action:button" msgid "Edit" msgstr "Modifica" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 @@ -1130,87 +1446,210 @@ msgid "Remove" msgstr "Rimuovi" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:33 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:104 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:35 msgctxt "@action:button" msgid "Refresh" msgstr "Aggiorna" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:196 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:196 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Se la stampante non è nell’elenco, leggere la guida alla risoluzione dei problemi per la stampa in rete" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:223 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:223 msgctxt "@label" msgid "Type" msgstr "Tipo" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 msgctxt "@label" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:238 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:238 msgctxt "@label" msgid "Ultimaker 3 Extended" msgstr "Ultimaker3 Extended" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:241 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:241 msgctxt "@label" msgid "Unknown" msgstr "Sconosciuto" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:254 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:254 msgctxt "@label" msgid "Firmware version" msgstr "Versione firmware" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:266 msgctxt "@label" msgid "Address" msgstr "Indirizzo" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "La stampante a questo indirizzo non ha ancora risposto." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Collega" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 msgctxt "@title:window" msgid "Printer Address" msgstr "Indirizzo stampante" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Inserire l’indirizzo IP o l’hostname della stampante sulla rete." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 msgctxt "@action:button" msgid "Ok" msgstr "Ok" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:37 msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Collega a una stampante" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:116 msgctxt "@info:tooltip" msgid "Load the configuration of the printer into Cura" msgstr "Carica la configurazione della stampante in Cura" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:117 msgctxt "@action:button" msgid "Activate Configuration" msgstr "Attiva la configurazione" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Stampa" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 +msgctxt "@label:status" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 +msgctxt "@label:status" +msgid "Reserved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 +msgctxt "@label:status" +msgid "Finished" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 +msgctxt "@label:status" +msgid "Preparing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 +msgctxt "@label:status" +msgid "Available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 +msgctxt "@label" +msgid "Completed on: " +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 +msgctxt "@label" +msgid "Clear build plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 +msgctxt "@label" +msgid "Preparing to print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 +msgctxt "@label" +msgid "PRINTER GROUP" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 +msgctxt "@title" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 +msgctxt "@label" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 +msgctxt "@label" +msgid "Queued" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 +msgctxt "@label:title" +msgid "Printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 +msgctxt "@action:button" +msgid "View printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1299,67 +1738,62 @@ msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Modifica script di post-elaborazione attivi" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:71 -msgctxt "@label" -msgid "View Mode: Layers" -msgstr "Modalità di visualizzazione: strati" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:88 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 msgctxt "@label" msgid "Color scheme" msgstr "Schema colori" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:102 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:91 msgctxt "@label:listbox" msgid "Material Color" msgstr "Colore materiale" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:106 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:95 msgctxt "@label:listbox" msgid "Line Type" msgstr "Tipo di linea" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:144 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 msgctxt "@label" msgid "Compatibility Mode" msgstr "Modalità di compatibilità" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:210 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 msgctxt "@label" msgid "Show Travels" msgstr "Mostra spostamenti" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 msgctxt "@label" msgid "Show Helpers" msgstr "Mostra helper" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 msgctxt "@label" msgid "Show Shell" msgstr "Mostra guscio" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:234 msgctxt "@label" msgid "Show Infill" msgstr "Mostra riempimento" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:264 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:283 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Mostra solo strati superiori" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:273 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:292 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Mostra 5 strati superiori in dettaglio" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:284 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:303 msgctxt "@label" msgid "Top / Bottom" msgstr "Superiore / Inferiore" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:288 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 msgctxt "@label" msgid "Inner Wall" msgstr "Parete interna" @@ -1434,23 +1868,23 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Smoothing" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:157 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 msgctxt "@action:button" msgid "Select settings" msgstr "Seleziona impostazioni" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:197 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Seleziona impostazioni di personalizzazione per questo modello" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:221 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtro..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:245 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 msgctxt "@label:checkbox" msgid "Show all" msgstr "Mostra tutto" @@ -1587,25 +2021,43 @@ msgctxt "@title:window" msgid "Find & Update plugins" msgstr "Trova e Aggiorna plugin" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:27 msgctxt "@label" msgid "Here you can find a list of Third Party plugins." msgstr "Qui è possibile trovare un elenco dei plugin forniti da terzi." -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:143 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 msgctxt "@action:button" msgid "Upgrade" msgstr "Aggiorna" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 msgctxt "@action:button" msgid "Installed" msgstr "Installa" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 +msgctxt "@title:window" +msgid "Plugin License Agreement" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 +msgctxt "@label" +msgid "" +" plugin contains a license.\n" +"You need to accept this license to install this plugin.\n" +"Do you agree with the terms below?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" -msgid "Download" -msgstr "Download" +msgid "Accept" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" +msgstr "" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -1781,71 +2233,71 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "È tutto in ordine! Controllo terminato." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Non collegato ad una stampante" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:91 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "La stampante non accetta comandi" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "In manutenzione. Controllare la stampante" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Persa connessione con la stampante" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Stampa in corso..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "In pausa" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Preparazione in corso..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Rimuovere la stampa" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 msgctxt "@label:" msgid "Resume" msgstr "Riprendi" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Pause" msgstr "Pausa" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:271 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 msgctxt "@label:" msgid "Abort Print" msgstr "Interrompi la stampa" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 msgctxt "@window:title" msgid "Abort print" msgstr "Interrompi la stampa" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:283 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Sei sicuro di voler interrompere la stampa?" @@ -1860,7 +2312,9 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "Sono state personalizzate alcune impostazioni del profilo.\nMantenere o eliminare tali impostazioni?" +msgstr "" +"Sono state personalizzate alcune impostazioni del profilo.\n" +"Mantenere o eliminare tali impostazioni?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -1878,19 +2332,19 @@ msgid "Customized" msgstr "Valore personalizzato" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Chiedi sempre" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:587 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Elimina e non chiedere nuovamente" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:588 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Mantieni e non chiedere nuovamente" @@ -2031,7 +2485,7 @@ msgid "Unit" msgstr "Unità" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 msgctxt "@title:tab" msgid "General" msgstr "Generale" @@ -2046,223 +2500,223 @@ msgctxt "@label" msgid "Language:" msgstr "Lingua:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 msgctxt "@label" msgid "Currency:" msgstr "Valuta:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Riavviare l'applicazione per rendere effettive le modifiche." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:289 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Seziona automaticamente alla modifica delle impostazioni." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Seziona automaticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamento del riquadro di visualizzazione" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Evidenzia in rosso le zone non supportate del modello. In assenza di supporto, queste aree non saranno stampate in modo corretto." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Visualizza sbalzo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Sposta la fotocamera in modo che il modello si trovi al centro della visualizzazione quando è selezionato" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:347 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Centratura fotocamera alla selezione dell'elemento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Il comportamento dello zoom predefinito di Cura dovrebbe essere invertito?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Inverti la direzione dello zoom della fotocamera." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Lo zoom si muove nella direzione del mouse?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Zoom verso la direzione del mouse" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "I modelli sull’area di stampa devono essere spostati per evitare intersezioni?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:382 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Assicurarsi che i modelli siano mantenuti separati" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "I modelli sull’area di stampa devono essere portati a contatto del piano di stampa?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Rilascia automaticamente i modelli sul piano di stampa" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Visualizza il messaggio di avvertimento sul lettore codice G." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Messaggio di avvertimento sul lettore codice G" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Lo strato deve essere forzato in modalità di compatibilità?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Forzare la modalità di compatibilità visualizzazione strato (riavvio necessario)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 msgctxt "@label" msgid "Opening and saving files" msgstr "Apertura e salvataggio file" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "I modelli devono essere ridimensionati al volume di stampa, se troppo grandi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:462 msgctxt "@option:check" msgid "Scale large models" msgstr "Ridimensiona i modelli troppo grandi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Un modello può apparire eccessivamente piccolo se la sua unità di misura è espressa in metri anziché in millimetri. Questi modelli devono essere aumentati?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:469 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Ridimensiona i modelli eccessivamente piccoli" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Al nome del processo di stampa deve essere aggiunto automaticamente un prefisso basato sul nome della stampante?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Aggiungi al nome del processo un prefisso macchina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Quando si salva un file di progetto deve essere visualizzato un riepilogo?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:496 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Visualizza una finestra di riepilogo quando si salva un progetto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Comportamento predefinito all'apertura di un file progetto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:513 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Comportamento predefinito all'apertura di un file progetto: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:526 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 msgctxt "@option:openProject" msgid "Always ask" msgstr "Chiedi sempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Apri sempre come progetto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:528 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always import models" msgstr "Importa sempre i modelli" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:564 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Dopo aver modificato un profilo ed essere passati a un altro, si apre una finestra di dialogo che chiede se mantenere o eliminare le modifiche oppure se scegliere un comportamento predefinito e non visualizzare più tale finestra di dialogo." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@label" msgid "Override Profile" msgstr "Override profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:622 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 msgctxt "@label" msgid "Privacy" msgstr "Privacy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Cura deve verificare la presenza di eventuali aggiornamenti all’avvio del programma?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:634 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Controlla aggiornamenti all’avvio" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "I dati anonimi sulla stampa devono essere inviati a Ultimaker? Nota, non sono trasmessi o memorizzati modelli, indirizzi IP o altre informazioni personali." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Invia informazioni di stampa (anonime)" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:441 msgctxt "@title:tab" msgid "Printers" msgstr "Stampanti" @@ -2312,7 +2766,7 @@ msgid "Waiting for a printjob" msgstr "In attesa di un processo di stampa" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 msgctxt "@title:tab" msgid "Profiles" msgstr "Profili" @@ -2410,7 +2864,7 @@ msgid "Export Profile" msgstr "Esporta profilo" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 msgctxt "@title:tab" msgid "Materials" msgstr "Materiali" @@ -2442,14 +2896,14 @@ msgid "Import Material" msgstr "Importa materiale" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "Impossibile importare materiale %1: %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "Materiale importato correttamente %1" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2458,17 +2912,17 @@ msgid "Export Material" msgstr "Esporta materiale" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "Impossibile esportare materiale su %1: %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "Materiale esportato correttamente su %1" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:822 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 msgctxt "@title:window" msgid "Add Printer" msgstr "Aggiungi stampante" @@ -2483,71 +2937,6 @@ msgctxt "@action:button" msgid "Add Printer" msgstr "Aggiungi stampante" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:166 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Parete esterna" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:167 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Pareti interne" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:168 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Rivestimento esterno" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:169 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Riempimento" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:170 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Riempimento del supporto" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:171 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Interfaccia supporto" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:172 -msgctxt "@tooltip" -msgid "Support" -msgstr "Supporto" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:173 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Spostamenti" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:174 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Retrazioni" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:175 -msgctxt "@tooltip" -msgid "Other" -msgstr "Altro" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:217 -msgctxt "@label" -msgid "00h 00min" -msgstr "00h 00min" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:270 -msgctxt "@label" -msgid "%1 m / ~ %2 g / ~ %4 %3" -msgstr "%1 m / ~ %2 g / ~ %4 %3" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:275 -msgctxt "@label" -msgid "%1 m / ~ %2 g" -msgstr "%1 m / ~ %2 g" - #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -2563,7 +2952,9 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "Cura è stato sviluppato da Ultimaker B.V. in cooperazione con la comunità.\nCura è orgogliosa di utilizzare i seguenti progetti open source:" +msgstr "" +"Cura è stato sviluppato da Ultimaker B.V. in cooperazione con la comunità.\n" +"Cura è orgogliosa di utilizzare i seguenti progetti open source:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -2655,32 +3046,48 @@ msgctxt "@label" msgid "SVG icons" msgstr "Icone SVG" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +msgctxt "@label" +msgid "Profile:" +msgstr "Profilo:" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Alcuni valori di impostazione/esclusione sono diversi dai valori memorizzati nel profilo.\n" +"\n" +"Fare clic per aprire la gestione profili." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" msgid "Search..." msgstr "Ricerca..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Copia valore su tutti gli estrusori" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:405 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Nascondi questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Nascondi questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:419 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Mantieni visibile questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:438 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Configurazione visibilità delle impostazioni in corso..." @@ -2691,7 +3098,10 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Alcune impostazioni nascoste utilizzano valori diversi dal proprio valore normale calcolato.\n\nFare clic per rendere visibili queste impostazioni." +msgstr "" +"Alcune impostazioni nascoste utilizzano valori diversi dal proprio valore normale calcolato.\n" +"\n" +"Fare clic per rendere visibili queste impostazioni." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 msgctxt "@label Header for list of settings." @@ -2719,7 +3129,10 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Questa impostazione ha un valore diverso dal profilo.\n\nFare clic per ripristinare il valore del profilo." +msgstr "" +"Questa impostazione ha un valore diverso dal profilo.\n" +"\n" +"Fare clic per ripristinare il valore del profilo." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 msgctxt "@label" @@ -2727,26 +3140,56 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Questa impostazione normalmente viene calcolata, ma attualmente ha impostato un valore assoluto.\n\nFare clic per ripristinare il valore calcolato." +msgstr "" +"Questa impostazione normalmente viene calcolata, ma attualmente ha impostato un valore assoluto.\n" +"\n" +"Fare clic per ripristinare il valore calcolato." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Impostazione di stampa" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "Impostazione di stampa disabilitata\nI file codice G non possono essere modificati" +msgstr "" +"Impostazione di stampa disabilitata\n" +"I file codice G non possono essere modificati" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 +msgctxt "@label" +msgid "00h 00min" +msgstr "00h 00min" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +msgctxt "@tooltip" +msgid "Time information" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 +msgctxt "@description" +msgid "Print time" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +msgctxt "@label" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 +msgctxt "@label" +msgid "%1m / ~ %2g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" msgid "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." msgstr "Impostazione di stampa consigliata

Stampa con le impostazioni consigliate per la stampante, il materiale e la qualità selezionati." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:460 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:481 msgctxt "@tooltip" msgid "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." msgstr "Impostazione di stampa personalizzata

Stampa con il controllo grana fine su ogni sezione finale del processo di sezionamento." @@ -2796,81 +3239,87 @@ msgid "No printer connected" msgstr "Nessuna stampante collegata" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" -msgid "Hotend" -msgstr "Estremità calda" +msgid "Extruder" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:119 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 +msgctxt "@tooltip" +msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "La temperatura corrente di questo estrusore." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Il colore del materiale di questo estrusore." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Il materiale di questo estrusore." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "L’ugello inserito in questo estrusore." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:249 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 msgctxt "@label" msgid "Build plate" msgstr "Piano di stampa" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:278 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "La temperatura target del piano riscaldato. Il piano verrà riscaldato o raffreddato a questa temperatura. Se è 0, il riscaldamento del piano viene disattivato." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:310 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:343 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "La temperatura corrente del piano riscaldato." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:422 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "La temperatura di preriscaldo del piano." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Annulla" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button" msgid "Pre-heat" msgstr "Pre-riscaldo" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:610 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Riscalda il piano prima della stampa. È possibile continuare a regolare la stampa durante il riscaldamento e non è necessario attendere il riscaldamento del piano quando si è pronti per la stampa." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:677 msgctxt "@label" msgid "Active print" msgstr "Stampa attiva" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:648 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 msgctxt "@label" msgid "Job Name" msgstr "Nome del processo" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 msgctxt "@label" msgid "Printing Time" msgstr "Tempo di stampa" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:660 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 msgctxt "@label" msgid "Estimated time left" msgstr "Tempo residuo stimato" @@ -3061,53 +3510,53 @@ msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configura visibilità delle impostazioni..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Caricare un modello 3D" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Pronto per il sezionamento" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Sezionamento in corso..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Pronto a %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Sezionamento impossibile" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Sezionamento non disponibile" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Prepara" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Annulla" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:288 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Seleziona l'unità di uscita attiva" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 msgctxt "@title:window" msgid "Open file(s)" msgstr "Apri file" @@ -3199,42 +3648,37 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Help" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 msgctxt "@action:button" msgid "Open File" msgstr "Apri file" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:428 -msgctxt "@action:button" -msgid "View Mode" -msgstr "Modalità di visualizzazione" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "Settings" msgstr "Impostazioni" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 msgctxt "@title:window" msgid "New project" msgstr "Nuovo progetto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:532 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "Sei sicuro di voler aprire un nuovo progetto? Questo cancellerà il piano di stampa e tutte le impostazioni non salvate." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:750 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:694 msgctxt "@window:title" msgid "Install Plugin" msgstr "Installa plugin" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:757 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 msgctxt "@title:window" msgid "Open File(s)" msgstr "Apri file" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:760 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Rilevata la presenza di uno o più file codice G tra i file selezionati. È possibile aprire solo un file codice G alla volta. Se desideri aprire un file codice G, selezionane uno solo. " @@ -3259,102 +3703,87 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Non mostrare il riepilogo di progetto alla ripetizione di salva" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 +msgctxt "@action:button" +msgid "Save" +msgstr "Salva" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 msgctxt "@title:tab" msgid "Prepare" msgstr "Prepara" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" -msgid "Print" -msgstr "Stampa" +msgid "Monitor" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +msgctxt "@label" +msgid "Layer Height" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +msgctxt "@label" +msgid "Print Speed" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +msgctxt "@label" +msgid "Slower" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +msgctxt "@label" +msgid "Faster" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" msgid "Infill" msgstr "Riempimento" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "0%" -msgstr "0%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:199 -msgctxt "@label" -msgid "Empty infill will leave your model hollow with low strength." -msgstr "Un riempimento vuoto lascerà il modello cavo e poco resistente." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:203 -msgctxt "@label" -msgid "20%" -msgstr "20%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:210 -msgctxt "@label" -msgid "Light (20%) infill will give your model an average strength." -msgstr "Un riempimento leggero (20%) fornirà al modello una resistenza media." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:214 -msgctxt "@label" -msgid "50%" -msgstr "50%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:221 -msgctxt "@label" -msgid "Dense (50%) infill will give your model an above average strength." -msgstr "Un riempimento denso (50%) fornirà al modello una resistenza superiore alla media." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:225 -msgctxt "@label" -msgid "100%" -msgstr "100%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:232 -msgctxt "@label" -msgid "Solid (100%) infill will make your model completely solid." -msgstr "Un riempimento solido (100%) renderà il modello completamente pieno." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:236 -msgctxt "@label" -msgid "Gradual" -msgstr "Graduale" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:244 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Un riempimento graduale aumenterà gradualmente la quantità di riempimento verso l'alto." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:267 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 +msgctxt "@label" +msgid "Enable gradual" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Generate Support" msgstr "Generazione supporto" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Genera strutture per supportare le parti del modello a sbalzo. Senza queste strutture, queste parti collasserebbero durante la stampa." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:718 msgctxt "@label" msgid "Support Extruder" msgstr "Estrusore del supporto" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:391 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Seleziona l’estrusore da utilizzare per la stampa di strutture di supporto. Ciò consentirà di costruire strutture di supporto sotto il modello per evitare cedimenti del modello o di stampare a mezz'aria." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:796 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Adesione piano di stampa" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:462 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Abilita stampa di brim o raft. Questa funzione aggiunge un’area piana attorno o sotto l’oggetto, facile da tagliare successivamente." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:515 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:883 msgctxt "@label" msgid "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides" msgstr "Serve aiuto per migliorare le tue stampe?
Leggi la Guida alla ricerca e riparazione guasti Ultimaker" @@ -3391,30 +3820,21 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Log motore" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:193 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 msgctxt "@label" msgid "Material" msgstr "Materiale" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:236 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +msgctxt "@label" +msgid "Check material compatibility" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Fai clic per verificare la compatibilità del materiale su Ultimaker.com." -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:325 -msgctxt "@label" -msgid "Profile:" -msgstr "Profilo:" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "Alcuni valori di impostazione/esclusione sono diversi dai valori memorizzati nel profilo.\n\nFare clic per aprire la gestione profili." - #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -3465,6 +3885,16 @@ msgctxt "name" msgid "God Mode" msgstr "Modalità God" +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +msgstr "" + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "" + #: ChangeLogPlugin/plugin.json msgctxt "description" msgid "Shows changes since latest checked version." @@ -3495,16 +3925,6 @@ msgctxt "name" msgid "USB printing" msgstr "Stampa USB" -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing X3G files" -msgstr "Fornisce il supporto per la scrittura di file X3G" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3G Writer" -msgstr "Writer X3G" - #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -3525,6 +3945,21 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Connessione di rete UM3" +#: CuraPrintClusterUpload/plugin.json +msgctxt "name" +msgid "UM3 Network Connection (Cluster)" +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "" + #: CuraSolidWorksPlugin/plugin.json msgctxt "description" msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" @@ -3615,6 +4050,16 @@ msgctxt "name" msgid "Version Upgrade 2.5 to 2.6" msgstr "Aggiornamento della versione da 2.5 a 2.6" +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -3755,6 +4200,189 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Lettore profilo Cura" +#~ msgctxt "@item:inlistbox" +#~ msgid "X-Ray" +#~ msgstr "Raggi X" + +#~ msgctxt "@label" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@info:whatsthis" +#~ msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +#~ msgstr "Accetta i G-Code e li invia tramite WiFi a un Doodle3D WiFi-Box." + +#~ msgctxt "@item:inmenu" +#~ msgid "Doodle3D printing" +#~ msgstr "Stampa Doodle3D" + +#~ msgctxt "@action:button" +#~ msgid "Print with Doodle3D" +#~ msgstr "Stampa con Doodle3D" + +#~ msgctxt "@info:tooltip" +#~ msgid "Print with " +#~ msgstr "Stampa con" + +#~ msgctxt "@title:menu" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Enable Scan devices..." +#~ msgstr "Abilita dispositivi di scansione..." + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "File X3G" + +#~ msgctxt "@info:progress" +#~ msgid "Saving to Removable Drive {0}" +#~ msgstr "Salvataggio su unità rimovibile {0}" + +#~ msgctxt "@info:status" +#~ msgid "Could not save to {0}: {1}" +#~ msgstr "Impossibile salvare {0}: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" +#~ msgstr "Tenere presente che è necessario riaprire il file SolidWorks manualmente! Il ricaricamento del modello non funziona!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Layers" +#~ msgstr "Strati" + +#~ msgid "Browse plugins" +#~ msgstr "Sfoglia plugin" + +#~ msgctxt "@item:inmenu" +#~ msgid "Solid" +#~ msgstr "Solido" + +#~ msgctxt "@label" +#~ msgid "The file {0} already exists. Are you sure you want to overwrite it?" +#~ msgstr "Il file {0} esiste già. Sei sicuro di voler sovrascrivere?" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: {1}" +#~ msgstr "Impossibile esportare profilo su {0}: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: Writer plugin reported failure." +#~ msgstr "Impossibile esportare profilo su {0}: Errore di plugin writer." + +#~ msgctxt "@info:status" +#~ msgid "Exported profile to {0}" +#~ msgstr "Profilo esportato su {0}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Impossibile importare profilo da {0}: {1}" + +#~ msgctxt "@title:window" +#~ msgid "Doodle3D Settings" +#~ msgstr "Impostazioni Doodle3D" + +#~ msgctxt "@title:window" +#~ msgid "Print to: %1" +#~ msgstr "Stampa a: %1" + +#~ msgctxt "@label" +#~ msgid "Extruder Temperature: %1/%2°C" +#~ msgstr "Temperatura estrusore: %1/%2°C" + +#~ msgctxt "@label" +#~ msgid "Bed Temperature: %1/%2°C" +#~ msgstr "Temperatura piano di stampa: %1/%2°C" + +#~ msgctxt "@label" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "@label" +#~ msgid "View Mode: Layers" +#~ msgstr "Modalità di visualizzazione: strati" + +#~ msgctxt "@info:status" +#~ msgid "Could not import material %1: %2" +#~ msgstr "Impossibile importare materiale %1: %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully imported material %1" +#~ msgstr "Materiale importato correttamente %1" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export material to %1: %2" +#~ msgstr "Impossibile esportare materiale su %1: %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully exported material to %1" +#~ msgstr "Materiale esportato correttamente su %1" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g / ~ %4 %3" +#~ msgstr "%1 m / ~ %2 g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g" +#~ msgstr "%1 m / ~ %2 g" + +#~ msgctxt "@label" +#~ msgid "Hotend" +#~ msgstr "Estremità calda" + +#~ msgctxt "@action:button" +#~ msgid "View Mode" +#~ msgstr "Modalità di visualizzazione" + +#~ msgctxt "@title:tab" +#~ msgid "Print" +#~ msgstr "Stampa" + +#~ msgctxt "@label" +#~ msgid "0%" +#~ msgstr "0%" + +#~ msgctxt "@label" +#~ msgid "Empty infill will leave your model hollow with low strength." +#~ msgstr "Un riempimento vuoto lascerà il modello cavo e poco resistente." + +#~ msgctxt "@label" +#~ msgid "20%" +#~ msgstr "20%" + +#~ msgctxt "@label" +#~ msgid "Light (20%) infill will give your model an average strength." +#~ msgstr "Un riempimento leggero (20%) fornirà al modello una resistenza media." + +#~ msgctxt "@label" +#~ msgid "50%" +#~ msgstr "50%" + +#~ msgctxt "@label" +#~ msgid "Dense (50%) infill will give your model an above average strength." +#~ msgstr "Un riempimento denso (50%) fornirà al modello una resistenza superiore alla media." + +#~ msgctxt "@label" +#~ msgid "100%" +#~ msgstr "100%" + +#~ msgctxt "@label" +#~ msgid "Solid (100%) infill will make your model completely solid." +#~ msgstr "Un riempimento solido (100%) renderà il modello completamente pieno." + +#~ msgctxt "@label" +#~ msgid "Gradual" +#~ msgstr "Graduale" + +#~ msgctxt "description" +#~ msgid "Provides support for writing X3G files" +#~ msgstr "Fornisce il supporto per la scrittura di file X3G" + +#~ msgctxt "name" +#~ msgid "X3G Writer" +#~ msgstr "Writer X3G" + #~ msgctxt "@label" #~ msgid "Machine Settings action" #~ msgstr "Azione Impostazioni macchina" @@ -4334,4 +4962,4 @@ msgstr "Lettore profilo Cura" #~ msgctxt "@label:" #~ msgid "Print Again" -#~ msgstr "Ripeti stampa" \ No newline at end of file +#~ msgstr "Ripeti stampa" diff --git a/resources/i18n/it_IT/fdmextruder.def.json.po b/resources/i18n/it_IT/fdmextruder.def.json.po index f6a3c95a76..56155c84bc 100644 --- a/resources/i18n/it_IT/fdmextruder.def.json.po +++ b/resources/i18n/it_IT/fdmextruder.def.json.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -194,4 +194,4 @@ msgstr "Posizione Y innesco estrusore" #: fdmextruder.def.json msgctxt "extruder_prime_pos_y description" msgid "The Y coordinate of the position where the nozzle primes at the start of printing." -msgstr "La coordinata Y della posizione in cui l’ugello si innesca all’avvio della stampa." \ No newline at end of file +msgstr "La coordinata Y della posizione in cui l’ugello si innesca all’avvio della stampa." diff --git a/resources/i18n/it_IT/fdmprinter.def.json.po b/resources/i18n/it_IT/fdmprinter.def.json.po index 82a079d01d..1a31c23913 100644 --- a/resources/i18n/it_IT/fdmprinter.def.json.po +++ b/resources/i18n/it_IT/fdmprinter.def.json.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -56,7 +56,9 @@ msgctxt "machine_start_gcode description" msgid "" "Gcode commands to be executed at the very start - separated by \n" "." -msgstr "I comandi codice G da eseguire all’avvio, separati da \n." +msgstr "" +"I comandi codice G da eseguire all’avvio, separati da \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -68,7 +70,9 @@ msgctxt "machine_end_gcode description" msgid "" "Gcode commands to be executed at the very end - separated by \n" "." -msgstr "I comandi codice G da eseguire alla fine, separati da \n." +msgstr "" +"I comandi codice G da eseguire alla fine, separati da \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -755,16 +759,6 @@ msgctxt "shell description" msgid "Shell" msgstr "Guscio" -#: fdmprinter.def.json -msgctxt "wall_extruder_nr label" -msgid "Wall Extruder" -msgstr "Estrusore pareti" - -#: fdmprinter.def.json -msgctxt "wall_extruder_nr description" -msgid "The extruder train used for printing the walls. This is used in multi-extrusion." -msgstr "Treno estrusore utilizzato per stampare le pareti. Si utilizza nell'estrusione multipla." - #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" msgid "Outer Wall Extruder" @@ -1125,6 +1119,11 @@ msgctxt "z_seam_type option random" msgid "Random" msgstr "Casuale" +#: fdmprinter.def.json +msgctxt "z_seam_type option sharpest_corner" +msgid "Sharpest Corner" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1145,6 +1144,36 @@ msgctxt "z_seam_y description" msgid "The Y coordinate of the position near where to start printing each part in a layer." msgstr "La coordinata Y della posizione in prossimità della quale si innesca all’avvio della stampa di ciascuna parte in uno strato." +#: fdmprinter.def.json +msgctxt "z_seam_corner label" +msgid "Seam Corner Preference" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner description" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_none" +msgid "None" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_inner" +msgid "Hide Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_outer" +msgid "Expose Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_any" +msgid "Hide or Expose Seam" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1165,6 +1194,16 @@ msgctxt "skin_no_small_gaps_heuristic description" msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." msgstr "Quando il modello presenta piccoli spazi vuoti verticali, circa il 5% del tempo di calcolo supplementare può essere utilizzato per la generazione di rivestimenti esterni superiori ed inferiori in questi interstizi. In questo caso disabilitare l’impostazione." +#: fdmprinter.def.json +msgctxt "skin_outline_count label" +msgid "Extra Skin Wall Count" +msgstr "Numero di pareti di rivestimento esterno supplementari" + +#: fdmprinter.def.json +msgctxt "skin_outline_count description" +msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." +msgstr "Sostituisce la parte più esterna della configurazione degli strati superiori/inferiori con una serie di linee concentriche. L’utilizzo di una o due linee migliora le parti superiori (tetti) che iniziano sul materiale di riempimento." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1212,8 +1251,8 @@ msgstr "Configurazione di riempimento" #: fdmprinter.def.json msgctxt "infill_pattern description" -msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "Indica la configurazione del materiale di riempimento della stampa. Il riempimento a linea e a zig zag cambia direzione su strati alternati, riducendo il costo del materiale. Le configurazioni a griglia, triangolo, cubo, tetraedriche e concentriche sono stampate completamente su ogni strato. Il riempimento delle configurazioni cubiche e tetraedriche cambia ad ogni strato per fornire una distribuzione più uniforme della forza su ciascuna direzione." +msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1242,8 +1281,13 @@ msgstr "Suddivisione in cubi" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" -msgid "Tetrahedral" -msgstr "Tetraedro" +msgid "Octet" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option quarter_cubic" +msgid "Quarter Cubic" +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1260,6 +1304,26 @@ msgctxt "infill_pattern option zigzag" msgid "Zig Zag" msgstr "Zig Zag" +#: fdmprinter.def.json +msgctxt "infill_pattern option cross" +msgid "Cross" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross_3d" +msgid "Cross 3D" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill label" +msgid "Connect Infill Lines" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill description" +msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" @@ -1381,34 +1445,34 @@ msgid "Don't generate areas of infill smaller than this (use skin instead)." msgstr "Non generare aree di riempimento inferiori a questa (piuttosto usare il rivestimento esterno)." #: fdmprinter.def.json -msgctxt "expand_skins_into_infill label" -msgid "Expand Skins Into Infill" -msgstr "Prolunga rivestimenti esterni nel riempimento" +msgctxt "skin_preshrink label" +msgid "Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_skins_into_infill description" -msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." -msgstr "Prolunga le aree di rivestimento esterno superiori e/o inferiori delle superfici piatte. Per default, i rivestimenti esterni si interrompono sotto le linee delle pareti circostanti il riempimento, ma questo può generare la comparsa di fori quando la densità del riempimento è bassa. Questa impostazione prolunga i rivestimenti esterni oltre le linee delle pareti in modo che il riempimento sullo strato successivo appoggi sul rivestimento esterno." +msgctxt "skin_preshrink description" +msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins label" -msgid "Expand Top Skins Into Infill" -msgstr "Prolunga rivestimenti esterni superiori nel riempimento" +msgctxt "top_skin_preshrink label" +msgid "Top Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins description" -msgid "Expand the top skin areas (areas with air above) so that they support infill above." -msgstr "Prolunga le aree di rivestimento esterno superiori (aree con aria al di sopra) in modo che supportino il riempimento sovrastante." +msgctxt "top_skin_preshrink description" +msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins label" -msgid "Expand Bottom Skins Into Infill" -msgstr "Prolunga rivestimenti esterni inferiori nel riempimento" +msgctxt "bottom_skin_preshrink label" +msgid "Bottom Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins description" -msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." -msgstr "Prolunga aree rivestimento esterno inferiori (aree con aria al di sotto) in modo che siano ancorate dagli strati di riempimento sovrastanti e sottostanti." +msgctxt "bottom_skin_preshrink description" +msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1417,8 +1481,28 @@ msgstr "Distanza prolunga rivestimento esterno" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" -msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." -msgstr "La distanza di prolungamento dei rivestimenti esterni nel riempimento. La distanza preimpostata è sufficiente per coprire lo spazio tra le linee di riempimento e chiude i fori che si presentano sul rivestimento esterno nel punto in cui incontra la parete quando la densità del riempimento è bassa. Una distanza inferiore sovente è sufficiente." +msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance label" +msgid "Top Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance description" +msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance label" +msgid "Bottom Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance description" +msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." +msgstr "" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -1800,16 +1884,6 @@ msgctxt "speed_topbottom description" msgid "The speed at which top/bottom layers are printed." msgstr "Indica la velocità alla quale vengono stampati gli strati superiore/inferiore." -#: fdmprinter.def.json -msgctxt "speed_ironing label" -msgid "Ironing Speed" -msgstr "Velocità di stiratura" - -#: fdmprinter.def.json -msgctxt "speed_ironing description" -msgid "The speed at which to pass over the top surface." -msgstr "Velocità alla quale passare sopra la superficie superiore" - #: fdmprinter.def.json msgctxt "speed_support label" msgid "Support Speed" @@ -2040,16 +2114,6 @@ msgctxt "acceleration_topbottom description" msgid "The acceleration with which top/bottom layers are printed." msgstr "Indica l’accelerazione alla quale vengono stampati gli strati superiore/inferiore." -#: fdmprinter.def.json -msgctxt "acceleration_ironing label" -msgid "Ironing Acceleration" -msgstr "Accelerazione di stiratura" - -#: fdmprinter.def.json -msgctxt "acceleration_ironing description" -msgid "The acceleration with which ironing is performed." -msgstr "L’accelerazione con cui viene effettuata la stiratura." - #: fdmprinter.def.json msgctxt "acceleration_support label" msgid "Support Acceleration" @@ -2240,16 +2304,6 @@ msgctxt "jerk_topbottom description" msgid "The maximum instantaneous velocity change with which top/bottom layers are printed." msgstr "Indica il cambio della velocità istantanea massima con cui vengono stampati gli strati superiore/inferiore." -#: fdmprinter.def.json -msgctxt "jerk_ironing label" -msgid "Ironing Jerk" -msgstr "Jerk stiratura" - -#: fdmprinter.def.json -msgctxt "jerk_ironing description" -msgid "The maximum instantaneous velocity change while performing ironing." -msgstr "Indica la variazione della velocità istantanea massima durante la stiratura." - #: fdmprinter.def.json msgctxt "jerk_support label" msgid "Support Jerk" @@ -2765,6 +2819,11 @@ msgctxt "support_pattern option zigzag" msgid "Zig Zag" msgstr "Zig Zag" +#: fdmprinter.def.json +msgctxt "support_pattern option cross" +msgid "Cross" +msgstr "" + #: fdmprinter.def.json msgctxt "support_connect_zigzags label" msgid "Connect Support ZigZags" @@ -2777,23 +2836,33 @@ msgstr "Collega i ZigZag. Questo aumenta la forza della struttura di supporto a #: fdmprinter.def.json msgctxt "support_skip_some_zags label" -msgid "Skip Some ZigZags Connections" -msgstr "Salta alcuni collegamenti a zig-zag" +msgid "Break Up Support In Chunks" +msgstr "" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" -msgid "Skip some ZigZags connections to make the support structure easier to break." -msgstr "Salto di alcuni collegamenti a zig-zag per rendere la struttura del supporto più facile da rompere." +msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm description" +msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count label" -msgid "ZigZag Connection Skip Count" -msgstr "Conteggio dei salti dei collegamenti a zig-zag" +msgid "Support Chunk Line Count" +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" -msgid "Skip one in every N connection lines to make the support structure easier to break." -msgstr "Salto di una ogni N linee di collegamento per rendere la struttura del supporto più facile da rompere." +msgid "Skip one in every N connection lines to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3335,7 +3404,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance, multiple skirt lines will extend outwards from this distance." -msgstr "Indica la distanza orizzontale tra lo skirt ed il primo strato della stampa.\nQuesta è la distanza minima, più linee di skirt aumenteranno tale distanza." +msgstr "" +"Indica la distanza orizzontale tra lo skirt ed il primo strato della stampa.\n" +"Questa è la distanza minima, più linee di skirt aumenteranno tale distanza." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3377,6 +3448,26 @@ msgctxt "brim_outside_only description" msgid "Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much." msgstr "Stampa il brim solo sull’esterno del modello. Questo riduce la quantità del brim che si deve rimuovere in seguito, mentre non riduce particolarmente l’adesione al piano." +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 label" +msgid "Initial Layer Z Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 description" +msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers label" +msgid "Z Offset Taper Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers description" +msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3387,6 +3478,16 @@ msgctxt "raft_margin description" msgid "If the raft is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print." msgstr "Se è abilitata la funzione raft, questo valore indica di quanto il raft fuoriesce rispetto al perimetro esterno del modello. Aumentando questo margine si creerà un raft più robusto, utilizzando però più materiale e lasciando meno spazio per la stampa." +#: fdmprinter.def.json +msgctxt "raft_smoothing label" +msgid "Raft Smoothing" +msgstr "" + +#: fdmprinter.def.json +msgctxt "raft_smoothing description" +msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_airgap label" msgid "Raft Air Gap" @@ -4062,6 +4163,16 @@ msgctxt "smooth_spiralized_contours description" msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." msgstr "Leviga i profili con movimento spiraliforme per ridurre la visibilità della giunzione Z (la giunzione Z dovrebbe essere appena visibile sulla stampa, ma rimane visibile nella vista dello strato). Notare che la levigatura tende a rimuovere le bavature fini della superficie." +#: fdmprinter.def.json +msgctxt "relative_extrusion label" +msgid "Relative Extrusion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "relative_extrusion description" +msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." +msgstr "" + #: fdmprinter.def.json msgctxt "experimental label" msgid "Experimental" @@ -4072,6 +4183,16 @@ msgctxt "experimental description" msgid "experimental!" msgstr "sperimentale!" +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "" + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4182,16 +4303,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "È la velocità a cui eseguire lo spostamento durante il Coasting, rispetto alla velocità del percorso di estrusione. Si consiglia di impostare un valore leggermente al di sotto del 100%, poiché durante il Coasting la pressione nel tubo Bowden scende." -#: fdmprinter.def.json -msgctxt "skin_outline_count label" -msgid "Extra Skin Wall Count" -msgstr "Numero di pareti di rivestimento esterno supplementari" - -#: fdmprinter.def.json -msgctxt "skin_outline_count description" -msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." -msgstr "Sostituisce la parte più esterna della configurazione degli strati superiori/inferiori con una serie di linee concentriche. L’utilizzo di una o due linee migliora le parti superiori (tetti) che iniziano sul materiale di riempimento." - #: fdmprinter.def.json msgctxt "skin_alternate_rotation label" msgid "Alternate Skin Rotation" @@ -4202,6 +4313,26 @@ msgctxt "skin_alternate_rotation description" msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." msgstr "Alterna la direzione di stampa degli strati superiori/inferiori. Normalmente vengono stampati solo diagonalmente. Questa impostazione aggiunge le direzioni solo X e solo Y." +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size label" +msgid "Cross 3D Pocket Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size description" +msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly label" +msgid "Alternate Cross 3D Pockets" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly description" +msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." +msgstr "" + #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" msgid "Spaghetti Infill" @@ -4502,7 +4633,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "Indica la distanza di uno spostamento verso l'alto con estrusione a velocità dimezzata.\nCiò può garantire una migliore adesione agli strati precedenti, senza eccessivo riscaldamento del materiale su questi strati. Applicabile solo alla funzione Wire Printing." +msgstr "" +"Indica la distanza di uno spostamento verso l'alto con estrusione a velocità dimezzata.\n" +"Ciò può garantire una migliore adesione agli strati precedenti, senza eccessivo riscaldamento del materiale su questi strati. Applicabile solo alla funzione Wire Printing." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -4619,6 +4752,16 @@ msgctxt "ironing_enabled description" msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." msgstr "Ulteriore passaggio sopra la superficie superiore, senza estrusione di materiale. Ha lo scopo di fondere ulteriormente la plastica alla sommità, creando una superficie più uniforme." +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer label" +msgid "Iron Only Highest Layer" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer description" +msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." +msgstr "" + #: fdmprinter.def.json msgctxt "ironing_pattern label" msgid "Ironing Pattern" @@ -4669,6 +4812,36 @@ msgctxt "ironing_inset description" msgid "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print." msgstr "Distanza da mantenere dai bordi del modello. La stiratura fino in fondo sino al bordo del reticolo può causare la formazione di un bordo frastagliato nella stampa." +#: fdmprinter.def.json +msgctxt "speed_ironing label" +msgid "Ironing Speed" +msgstr "Velocità di stiratura" + +#: fdmprinter.def.json +msgctxt "speed_ironing description" +msgid "The speed at which to pass over the top surface." +msgstr "Velocità alla quale passare sopra la superficie superiore" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing label" +msgid "Ironing Acceleration" +msgstr "Accelerazione di stiratura" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing description" +msgid "The acceleration with which ironing is performed." +msgstr "L’accelerazione con cui viene effettuata la stiratura." + +#: fdmprinter.def.json +msgctxt "jerk_ironing label" +msgid "Ironing Jerk" +msgstr "Jerk stiratura" + +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "Indica la variazione della velocità istantanea massima durante la stiratura." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4729,6 +4902,66 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Matrice di rotazione da applicare al modello quando caricato dal file." +#~ msgctxt "wall_extruder_nr label" +#~ msgid "Wall Extruder" +#~ msgstr "Estrusore pareti" + +#~ msgctxt "wall_extruder_nr description" +#~ msgid "The extruder train used for printing the walls. This is used in multi-extrusion." +#~ msgstr "Treno estrusore utilizzato per stampare le pareti. Si utilizza nell'estrusione multipla." + +#~ msgctxt "infill_pattern description" +#~ msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." +#~ msgstr "Indica la configurazione del materiale di riempimento della stampa. Il riempimento a linea e a zig zag cambia direzione su strati alternati, riducendo il costo del materiale. Le configurazioni a griglia, triangolo, cubo, tetraedriche e concentriche sono stampate completamente su ogni strato. Il riempimento delle configurazioni cubiche e tetraedriche cambia ad ogni strato per fornire una distribuzione più uniforme della forza su ciascuna direzione." + +#~ msgctxt "infill_pattern option tetrahedral" +#~ msgid "Tetrahedral" +#~ msgstr "Tetraedro" + +#~ msgctxt "expand_skins_into_infill label" +#~ msgid "Expand Skins Into Infill" +#~ msgstr "Prolunga rivestimenti esterni nel riempimento" + +#~ msgctxt "expand_skins_into_infill description" +#~ msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." +#~ msgstr "Prolunga le aree di rivestimento esterno superiori e/o inferiori delle superfici piatte. Per default, i rivestimenti esterni si interrompono sotto le linee delle pareti circostanti il riempimento, ma questo può generare la comparsa di fori quando la densità del riempimento è bassa. Questa impostazione prolunga i rivestimenti esterni oltre le linee delle pareti in modo che il riempimento sullo strato successivo appoggi sul rivestimento esterno." + +#~ msgctxt "expand_upper_skins label" +#~ msgid "Expand Top Skins Into Infill" +#~ msgstr "Prolunga rivestimenti esterni superiori nel riempimento" + +#~ msgctxt "expand_upper_skins description" +#~ msgid "Expand the top skin areas (areas with air above) so that they support infill above." +#~ msgstr "Prolunga le aree di rivestimento esterno superiori (aree con aria al di sopra) in modo che supportino il riempimento sovrastante." + +#~ msgctxt "expand_lower_skins label" +#~ msgid "Expand Bottom Skins Into Infill" +#~ msgstr "Prolunga rivestimenti esterni inferiori nel riempimento" + +#~ msgctxt "expand_lower_skins description" +#~ msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." +#~ msgstr "Prolunga aree rivestimento esterno inferiori (aree con aria al di sotto) in modo che siano ancorate dagli strati di riempimento sovrastanti e sottostanti." + +#~ msgctxt "expand_skins_expand_distance description" +#~ msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." +#~ msgstr "La distanza di prolungamento dei rivestimenti esterni nel riempimento. La distanza preimpostata è sufficiente per coprire lo spazio tra le linee di riempimento e chiude i fori che si presentano sul rivestimento esterno nel punto in cui incontra la parete quando la densità del riempimento è bassa. Una distanza inferiore sovente è sufficiente." + +#~ msgctxt "support_skip_some_zags label" +#~ msgid "Skip Some ZigZags Connections" +#~ msgstr "Salta alcuni collegamenti a zig-zag" + +#~ msgctxt "support_skip_some_zags description" +#~ msgid "Skip some ZigZags connections to make the support structure easier to break." +#~ msgstr "Salto di alcuni collegamenti a zig-zag per rendere la struttura del supporto più facile da rompere." + +#~ msgctxt "support_zag_skip_count label" +#~ msgid "ZigZag Connection Skip Count" +#~ msgstr "Conteggio dei salti dei collegamenti a zig-zag" + +#~ msgctxt "support_zag_skip_count description" +#~ msgid "Skip one in every N connection lines to make the support structure easier to break." +#~ msgstr "Salto di una ogni N linee di collegamento per rendere la struttura del supporto più facile da rompere." + #~ msgctxt "machine_show_variants label" #~ msgid "Show machine variants" #~ msgstr "Mostra varianti macchina" @@ -4891,4 +5124,4 @@ msgstr "Matrice di rotazione da applicare al modello quando caricato dal file." #~ msgctxt "multiple_mesh_overlap label" #~ msgid "Dual Extrusion Overlap" -#~ msgstr "Sovrapposizione doppia estrusione" \ No newline at end of file +#~ msgstr "Sovrapposizione doppia estrusione" diff --git a/resources/i18n/ja_JP/cura.po b/resources/i18n/ja_JP/cura.po index 72d030c87b..e39ceaec16 100644 --- a/resources/i18n/ja_JP/cura.po +++ b/resources/i18n/ja_JP/cura.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -17,15 +17,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:28 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" msgstr "Machine Settings" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" -msgid "X-Ray" -msgstr "X-Ray" +msgid "X-Ray view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -37,40 +37,69 @@ msgctxt "@item:inlistbox" msgid "GCode File" msgstr "GCode File" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:13 -msgctxt "@label" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:17 -msgctxt "@info:whatsthis" -msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "G-Codeを承認し、Wifi上でDoodle3D WiFi-Boxに送る." - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:36 -msgctxt "@item:inmenu" -msgid "Doodle3D printing" -msgstr "Doodle3D printing" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:37 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" -msgid "Print with Doodle3D" +msgid "Print with Doodle3D WiFi-Box" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:38 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 +msgctxt "@properties:tooltip" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Cancel" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 +msgctxt "@info:status" +msgid "Sending data to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 +msgctxt "@info:status" +msgid "Unable to send data to Doodle3D Connect. Is another job still active?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 +msgctxt "@info:status" +msgid "File sent to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect.." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" -msgid "Print with " -msgstr "Print with " - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:49 -msgctxt "@title:menu" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:50 -msgctxt "@item:inlistbox" -msgid "Enable Scan devices..." -msgstr "Enable Scan devices..." +msgid "Open the Doodle3D Connect web interface" +msgstr "" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -112,16 +141,36 @@ msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Unable to start a new job because the printer is busy or not connected." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +msgctxt "@info:title" +msgid "Print Details" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "This printer does not support USB printing because it uses UltiGCode flavor." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Unable to start a new job because the printer does not support usb printing." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:909 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 +msgctxt "@info:title" +msgid "Warning" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." @@ -133,10 +182,10 @@ msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "Could not find firmware required for the printer at %s." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:14 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G File" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +msgctxt "@info:title" +msgid "Printer Firmware" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -151,47 +200,79 @@ msgstr "Save to Removable Drive {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 #, python-brace-format -msgctxt "@info:progress" +msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "Saving to Removable Drive {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +msgctxt "@info:title" +msgid "Saving" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "Could not save to {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format -msgctxt "@info:status" -msgid "Saved to Removable Drive {0} as {1}" -msgstr "Saved to Removable Drive {0} as {1}" +msgctxt "@info:status Don't translate the tag {device}!" +msgid "Could not find a file name when trying to write to {device}." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -msgctxt "@action:button" -msgid "Eject" -msgstr "Eject" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -#, python-brace-format -msgctxt "@action" -msgid "Eject removable device {0}" -msgstr "Eject removable device {0}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:138 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #, python-brace-format msgctxt "@info:status" msgid "Could not save to removable drive {0}: {1}" msgstr "Could not save to removable drive {0}: {1}" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:148 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:675 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:683 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:145 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:152 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 +msgctxt "@info:title" +msgid "Error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +#, python-brace-format +msgctxt "@info:status" +msgid "Saved to Removable Drive {0} as {1}" +msgstr "Saved to Removable Drive {0} as {1}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +msgctxt "@info:title" +msgid "File Saved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +msgctxt "@action:button" +msgid "Eject" +msgstr "Eject" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +#, python-brace-format +msgctxt "@action" +msgid "Eject removable device {0}" +msgstr "Eject removable device {0}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 #, python-brace-format msgctxt "@info:status" msgid "Ejected {0}. You can now safely remove the drive." msgstr "Ejected {0}. You can now safely remove the drive." -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:150 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 +msgctxt "@info:title" +msgid "Safely Remove Hardware" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format msgctxt "@info:status" msgid "Failed to eject {0}. Another program may be using the drive." @@ -202,219 +283,351 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Removable Drive" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:49 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Print over network" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Print over network" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:156 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 msgctxt "@info:status" msgid "Access to the printer requested. Please approve the request on the printer" msgstr "Access to the printer requested. Please approve the request on the printer" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +msgctxt "@info:title" +msgid "Connection status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 msgctxt "@info:status" msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:468 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@action:button" msgid "Retry" msgstr "Retry" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Re-send the access request" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Access to the printer accepted" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 msgctxt "@info:status" msgid "No access to print with this printer. Unable to send print job." msgstr "No access to print with this printer. Unable to send print job." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:28 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:72 msgctxt "@action:button" msgid "Request Access" msgstr "Request Access" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:71 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "Send access request to the printer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:358 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:375 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 msgctxt "@info:status" msgid "Connected over the network. Please approve the access request on the printer." msgstr "Connected over the network. Please approve the access request on the printer." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:365 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:382 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 msgctxt "@info:status" msgid "Connected over the network." msgstr "Connected over the network." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:378 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "Connected over the network. No access to control the printer." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:383 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:400 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 msgctxt "@info:status" msgid "Access request was denied on the printer." msgstr "Access request was denied on the printer." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:386 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:403 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Access request failed due to a timeout." msgstr "Access request failed due to a timeout." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:450 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:467 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "The connection with the network was lost." msgstr "The connection with the network was lost." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:481 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 msgctxt "@info:status" msgid "The connection with the printer was lost. Check your printer to see if it is connected." msgstr "The connection with the printer was lost. Check your printer to see if it is connected." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:630 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:649 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 #, python-format msgctxt "@info:status" msgid "Unable to start a new print job, printer is busy. Current printer status is %s." msgstr "Unable to start a new print job, printer is busy. Current printer status is %s." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:654 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:661 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:682 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Unable to start a new print job. No material loaded in slot {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:670 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Not enough material for spool {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:680 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:694 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:716 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@label" msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:724 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:707 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:729 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "Are you sure you wish to print with the selected configuration?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:730 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 msgctxt "@label" msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:736 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Mismatched configuration" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:815 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Sending data to printer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:816 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:46 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:137 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Cancel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +msgctxt "@info:title" +msgid "Sending Data" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:884 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Unable to send data to printer. Is another job still active?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1018 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1050 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Aborting print..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1024 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Print aborted. Please check the printer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1030 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Pausing print..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1032 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Resuming print..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1175 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Sync with your printer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1177 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "Would you like to use your current printer configuration in Cura?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1220 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 msgctxt "@label" msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.py:19 msgctxt "@action" msgid "Connect via Network" msgstr "Connect via Network" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:172 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#, python-brace-format +msgctxt "Count is number of printers." +msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#, python-brace-format +msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#, python-brace-format +msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +msgctxt "@info:status" +msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#, python-brace-format +msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +msgctxt "@info" +msgid "Could not access update information." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" msgstr "" @@ -433,17 +646,12 @@ msgstr "" msgid "Configure" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:129 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 #, python-format msgctxt "@info:status" msgid "Error while starting %s!" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:207 -msgctxt "@info:status" -msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 msgid "Modify G-Code" msgstr "Modify G-Code" @@ -453,7 +661,12 @@ msgctxt "@info" msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." msgstr "" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:44 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 +msgctxt "@info:title" +msgid "Collecting Data" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" msgid "Dismiss" msgstr "Dismiss" @@ -471,14 +684,19 @@ msgstr "G-code File" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" -msgid "Layers" -msgstr "Layers" +msgid "Layer view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura does not accurately display layers when Wire Printing is enabled" +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 +msgctxt "@info:title" +msgid "Layer View" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -504,24 +722,31 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF Image" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:281 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "The selected material is incompatible with the selected machine or configuration." +msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:308 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:307 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 +msgctxt "@info:title" +msgid "Unable to slice" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Unable to slice with the current settings. The following settings have errors: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:317 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:306 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Unable to slice because the prime tower or prime position(s) are invalid." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:325 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:315 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." @@ -532,6 +757,11 @@ msgctxt "@info:status" msgid "Processing Layers" msgstr "Processing Layers" +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +msgctxt "@info:title" +msgid "Information" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" msgid "Per Model Settings" @@ -543,13 +773,13 @@ msgid "Configure Per Model Settings" msgstr "モデルごとの設定を構成する" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:475 msgctxt "@title:tab" msgid "Recommended" msgstr "Recommended" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:459 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 msgctxt "@title:tab" msgid "Custom" msgstr "Custom" @@ -560,25 +790,37 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF File" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:122 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1050 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 msgctxt "@label" msgid "Nozzle" msgstr "Nozzle" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 +msgctxt "@menuitem" msgid "Browse plugins" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:120 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +msgctxt "@info:tile" +msgid "Warning" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" msgid "Plugin browser" msgstr "" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" -msgid "Solid" -msgstr "Solid" +msgid "Solid view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -590,7 +832,13 @@ msgctxt "@info:status" msgid "Parsing G-code" msgstr "Parsing G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:365 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "" @@ -612,7 +860,7 @@ msgid "Cura Project 3MF file" msgstr "Cura Project 3MF file" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Select upgrades" @@ -632,18 +880,73 @@ msgctxt "@action" msgid "Level build plate" msgstr "Level build plate" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:247 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Skin" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Infill" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Travel" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Other" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Pre-sliced file {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 msgctxt "@item:material" msgid "No material loaded" msgstr "No material loaded" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 msgctxt "@item:material" msgid "Unknown material" msgstr "Unknown material" @@ -653,35 +956,56 @@ msgctxt "@info:status" msgid "Finding new location for objects" msgstr "" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:85 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:417 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 msgctxt "@title:window" msgid "File Already Exists" msgstr "File Already Exists" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:418 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 #, python-brace-format -msgctxt "@label" +msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "The file {0} already exists. Are you sure you want to overwrite it?" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:801 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" msgid "Custom" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:805 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 msgctxt "@label" msgid "Custom Material" msgstr "" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +msgctxt "@info:status" +msgid "The selected material is incompatible with the selected machine or configuration." +msgstr "The selected material is incompatible with the selected machine or configuration." + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:109 +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 +msgctxt "@info:title" +msgid "Incompatible Material" +msgstr "" + #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." msgid "The selected material diameter causes the material to become incompatible with the current printer." @@ -699,70 +1023,86 @@ msgstr "" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "Failed to export profile to {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:148 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "Failed to export profile to {0}: Writer plugin reported failure." +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "Exported profile to {0}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:199 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:208 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:242 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +msgctxt "@info:title" +msgid "Export Details" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:213 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:247 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "Failed to import profile from {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:210 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:246 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Successfully imported profile {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:249 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Profile {0} has an unknown file type or is corrupted." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:267 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:272 msgctxt "@label" msgid "Custom profile" msgstr "Custom profile" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:278 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:300 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:95 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 +msgctxt "@info:title" +msgid "Build Volume" +msgstr "" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "" + #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" msgid "Crash Report" @@ -781,34 +1121,34 @@ msgctxt "@action:button" msgid "Open Web Page" msgstr "Open Web Page" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:248 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Loading machines..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:610 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Setting up scene..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:652 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Loading interface..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:815 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1285 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1295 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Only one G-code file can be loaded at a time. Skipped importing {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1294 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1304 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" @@ -838,12 +1178,12 @@ msgstr "X (Width)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:286 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:838 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:839 msgctxt "@label" msgid "mm" msgstr "mm" @@ -933,113 +1273,72 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 msgctxt "@tooltip" msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:290 msgctxt "@label" msgid "Material diameter" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:297 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:388 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 msgctxt "@label" msgid "Nozzle size" msgstr "Nozzle size" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:315 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 msgctxt "@label" msgid "Start Gcode" msgstr "Start Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:325 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:334 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:335 msgctxt "@label" msgid "End Gcode" msgstr "End Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:344 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:376 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:377 msgctxt "@label" msgid "Nozzle Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:398 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 msgctxt "@label" msgid "Nozzle offset X" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:410 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset Y" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:431 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:449 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 msgctxt "@label" msgid "Extruder End Gcode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:20 -msgctxt "@title:window" -msgid "Doodle3D Settings" -msgstr "Doodle3D Settings" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:53 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 -msgctxt "@action:button" -msgid "Save" -msgstr "Save" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:23 -msgctxt "@title:window" -msgid "Print to: %1" -msgstr "Print to: %1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:40 -msgctxt "@label" -msgid "Extruder Temperature: %1/%2°C" -msgstr "Extruder Temperature: %1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:45 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:46 -msgctxt "@label" -msgid "Bed Temperature: %1/%2°C" -msgstr "Bed Temperature: %1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:64 -msgctxt "@label" -msgid "%1" -msgstr "%1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:82 -msgctxt "@action:button" -msgid "Print" -msgstr "Print" - #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" msgid "Changelog" @@ -1048,9 +1347,10 @@ msgstr "Changelog" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:55 #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:446 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:306 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:78 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:125 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 @@ -1104,11 +1404,13 @@ msgid "Unknown error code: %1" msgstr "Unknown error code: %1" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:55 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Connect to Networked Printer" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:65 msgctxt "@label" msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" @@ -1120,17 +1422,20 @@ msgstr "" "Select your printer from the list below:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 msgctxt "@action:button" msgid "Add" msgstr "Add" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:85 msgctxt "@action:button" msgid "Edit" msgstr "Edit" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 @@ -1139,87 +1444,210 @@ msgid "Remove" msgstr "Remove" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:33 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:104 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:35 msgctxt "@action:button" msgid "Refresh" msgstr "Refresh" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:196 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:196 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:223 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:223 msgctxt "@label" msgid "Type" msgstr "Type" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 msgctxt "@label" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:238 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:238 msgctxt "@label" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:241 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:241 msgctxt "@label" msgid "Unknown" msgstr "Unknown" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:254 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:254 msgctxt "@label" msgid "Firmware version" msgstr "Firmware version" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:266 msgctxt "@label" msgid "Address" msgstr "Address" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "The printer at this address has not yet responded." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Connect" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 msgctxt "@title:window" msgid "Printer Address" msgstr "Printer Address" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Enter the IP address or hostname of your printer on the network." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 msgctxt "@action:button" msgid "Ok" msgstr "Ok" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:37 msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Connect to a printer" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:116 msgctxt "@info:tooltip" msgid "Load the configuration of the printer into Cura" msgstr "Load the configuration of the printer into Cura" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:117 msgctxt "@action:button" msgid "Activate Configuration" msgstr "Activate Configuration" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Print" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 +msgctxt "@label:status" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 +msgctxt "@label:status" +msgid "Reserved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 +msgctxt "@label:status" +msgid "Finished" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 +msgctxt "@label:status" +msgid "Preparing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 +msgctxt "@label:status" +msgid "Available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 +msgctxt "@label" +msgid "Completed on: " +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 +msgctxt "@label" +msgid "Clear build plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 +msgctxt "@label" +msgid "Preparing to print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 +msgctxt "@label" +msgid "PRINTER GROUP" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 +msgctxt "@title" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 +msgctxt "@label" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 +msgctxt "@label" +msgid "Queued" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 +msgctxt "@label:title" +msgid "Printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 +msgctxt "@action:button" +msgid "View printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1308,67 +1736,62 @@ msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Change active post-processing scripts" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:71 -msgctxt "@label" -msgid "View Mode: Layers" -msgstr "View Mode: Layers" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:88 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 msgctxt "@label" msgid "Color scheme" msgstr "Color scheme" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:102 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:91 msgctxt "@label:listbox" msgid "Material Color" msgstr "Material Color" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:106 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:95 msgctxt "@label:listbox" msgid "Line Type" msgstr "Line Type" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:144 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 msgctxt "@label" msgid "Compatibility Mode" msgstr "Compatibility Mode" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:210 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 msgctxt "@label" msgid "Show Travels" msgstr "Show Travels" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 msgctxt "@label" msgid "Show Helpers" msgstr "Show Helpers" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 msgctxt "@label" msgid "Show Shell" msgstr "Show Shell" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:234 msgctxt "@label" msgid "Show Infill" msgstr "Show Infill" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:264 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:283 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Only Show Top Layers" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:273 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:292 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Show 5 Detailed Layers On Top" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:284 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:303 msgctxt "@label" msgid "Top / Bottom" msgstr "Top / Bottom" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:288 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 msgctxt "@label" msgid "Inner Wall" msgstr "Inner Wall" @@ -1443,23 +1866,23 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Smoothing" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:157 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 msgctxt "@action:button" msgid "Select settings" msgstr "Select settings" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:197 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Select Settings to Customize for this model" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:221 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filter..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:245 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 msgctxt "@label:checkbox" msgid "Show all" msgstr "Show all" @@ -1596,24 +2019,42 @@ msgctxt "@title:window" msgid "Find & Update plugins" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:27 msgctxt "@label" msgid "Here you can find a list of Third Party plugins." msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:143 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 msgctxt "@action:button" msgid "Upgrade" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 msgctxt "@action:button" msgid "Installed" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 +msgctxt "@title:window" +msgid "Plugin License Agreement" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 +msgctxt "@label" +msgid "" +" plugin contains a license.\n" +"You need to accept this license to install this plugin.\n" +"Do you agree with the terms below?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" -msgid "Download" +msgid "Accept" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" msgstr "" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 @@ -1790,71 +2231,71 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "Everything is in order! You're done with your CheckUp." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Not connected to a printer" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:91 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "Printer does not accept commands" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "In maintenance. Please check the printer" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Lost connection with the printer" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Printing..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Paused" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Preparing..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Please remove the print" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 msgctxt "@label:" msgid "Resume" msgstr "Resume" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Pause" msgstr "Pause" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:271 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 msgctxt "@label:" msgid "Abort Print" msgstr "Abort Print" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 msgctxt "@window:title" msgid "Abort print" msgstr "Abort print" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:283 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Are you sure you want to abort the print?" @@ -1889,19 +2330,19 @@ msgid "Customized" msgstr "Customized" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Always ask me this" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:587 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Discard and never ask again" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:588 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Keep and never ask again" @@ -2042,7 +2483,7 @@ msgid "Unit" msgstr "Unit" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 msgctxt "@title:tab" msgid "General" msgstr "General" @@ -2057,223 +2498,223 @@ msgctxt "@label" msgid "Language:" msgstr "Language:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 msgctxt "@label" msgid "Currency:" msgstr "Currency:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 msgctxt "@label" msgid "Theme:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:289 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Slice automatically when changing settings." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Slice automatically" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Viewport behavior" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Highlight unsupported areas of the model in red. Without support these areas will not print properly." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Display overhang" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:347 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Center camera when item is selected" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Should models on the platform be moved so that they no longer intersect?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:382 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Ensure models are kept apart" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Should models on the platform be moved down to touch the build plate?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Automatically drop models to the build plate" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Should layer be forced into compatibility mode?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Force layer view compatibility mode (restart required)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 msgctxt "@label" msgid "Opening and saving files" msgstr "Opening and saving files" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Should models be scaled to the build volume if they are too large?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:462 msgctxt "@option:check" msgid "Scale large models" msgstr "Scale large models" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:469 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Scale extremely small models" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Should a prefix based on the printer name be added to the print job name automatically?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Add machine prefix to job name" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Should a summary be shown when saving a project file?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:496 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Show summary dialog when saving project" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:513 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:526 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 msgctxt "@option:openProject" msgid "Always ask" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:528 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always import models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:564 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@label" msgid "Override Profile" msgstr "Override Profile" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:622 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 msgctxt "@label" msgid "Privacy" msgstr "Privacy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Should Cura check for updates when the program is started?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:634 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Check for updates on start" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Send (anonymous) print information" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:441 msgctxt "@title:tab" msgid "Printers" msgstr "Printers" @@ -2323,7 +2764,7 @@ msgid "Waiting for a printjob" msgstr "Waiting for a printjob" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 msgctxt "@title:tab" msgid "Profiles" msgstr "Profiles" @@ -2421,7 +2862,7 @@ msgid "Export Profile" msgstr "Export Profile" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 msgctxt "@title:tab" msgid "Materials" msgstr "Materials" @@ -2453,14 +2894,14 @@ msgid "Import Material" msgstr "Import Material" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "Could not import material %1: %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "Successfully imported material %1" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2469,17 +2910,17 @@ msgid "Export Material" msgstr "Export Material" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "Failed to export material to %1: %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "Successfully exported material to %1" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:822 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 msgctxt "@title:window" msgid "Add Printer" msgstr "Add Printer" @@ -2494,71 +2935,6 @@ msgctxt "@action:button" msgid "Add Printer" msgstr "Add Printer" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:166 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:167 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:168 -msgctxt "@tooltip" -msgid "Skin" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:169 -msgctxt "@tooltip" -msgid "Infill" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:170 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:171 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:172 -msgctxt "@tooltip" -msgid "Support" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:173 -msgctxt "@tooltip" -msgid "Travel" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:174 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:175 -msgctxt "@tooltip" -msgid "Other" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:217 -msgctxt "@label" -msgid "00h 00min" -msgstr "00h 00min" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:270 -msgctxt "@label" -msgid "%1 m / ~ %2 g / ~ %4 %3" -msgstr "%1 m / ~ %2 g / ~ %4 %3" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:275 -msgctxt "@label" -msgid "%1 m / ~ %2 g" -msgstr "%1 m / ~ %2 g" - #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -2668,32 +3044,48 @@ msgctxt "@label" msgid "SVG icons" msgstr "SVG icons" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +msgctxt "@label" +msgid "Profile:" +msgstr "Profile:" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" msgid "Search..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Copy value to all extruders" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:405 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Hide this setting" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Don't show this setting" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:419 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Keep this setting visible" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:438 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Configure setting visiblity..." @@ -2751,12 +3143,12 @@ msgstr "" "\n" "Click to restore the calculated value." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Print Setup" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" @@ -2765,12 +3157,37 @@ msgstr "" "Print Setup disabled\n" "G-code files cannot be modified" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 +msgctxt "@label" +msgid "00h 00min" +msgstr "00h 00min" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +msgctxt "@tooltip" +msgid "Time information" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 +msgctxt "@description" +msgid "Print time" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +msgctxt "@label" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 +msgctxt "@label" +msgid "%1m / ~ %2g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" msgid "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." msgstr "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:460 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:481 msgctxt "@tooltip" msgid "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." msgstr "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." @@ -2820,81 +3237,87 @@ msgid "No printer connected" msgstr "No printer connected" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" -msgid "Hotend" -msgstr "Hotend" +msgid "Extruder" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:119 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 +msgctxt "@tooltip" +msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "The current temperature of this extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "The colour of the material in this extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "The material in this extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "The nozzle inserted in this extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:249 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 msgctxt "@label" msgid "Build plate" msgstr "Build plate" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:278 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:310 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:343 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "The current temperature of the heated bed." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:422 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "The temperature to pre-heat the bed to." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Cancel" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button" msgid "Pre-heat" msgstr "Pre-heat" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:610 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:677 msgctxt "@label" msgid "Active print" msgstr "Active print" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:648 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 msgctxt "@label" msgid "Job Name" msgstr "Job Name" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 msgctxt "@label" msgid "Printing Time" msgstr "Printing Time" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:660 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 msgctxt "@label" msgid "Estimated time left" msgstr "Estimated time left" @@ -3085,53 +3508,53 @@ msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configure setting visibility..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Ready to slice" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Slicing..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Ready to %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Unable to Slice" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Slicing unavailable" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Prepare" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Cancel" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:288 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Select the active output device" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 msgctxt "@title:window" msgid "Open file(s)" msgstr "" @@ -3223,42 +3646,37 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Help" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 msgctxt "@action:button" msgid "Open File" msgstr "Open File" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:428 -msgctxt "@action:button" -msgid "View Mode" -msgstr "View Mode" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "Settings" msgstr "Settings" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 msgctxt "@title:window" msgid "New project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:532 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:750 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:694 msgctxt "@window:title" msgid "Install Plugin" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:757 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 msgctxt "@title:window" msgid "Open File(s)" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:760 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "" @@ -3283,102 +3701,87 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Don't show project summary on save again" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 +msgctxt "@action:button" +msgid "Save" +msgstr "Save" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 msgctxt "@title:tab" msgid "Prepare" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" -msgid "Print" +msgid "Monitor" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +msgctxt "@label" +msgid "Layer Height" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +msgctxt "@label" +msgid "Print Speed" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +msgctxt "@label" +msgid "Slower" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +msgctxt "@label" +msgid "Faster" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" msgid "Infill" msgstr "Infill" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "0%" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:199 -msgctxt "@label" -msgid "Empty infill will leave your model hollow with low strength." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:203 -msgctxt "@label" -msgid "20%" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:210 -msgctxt "@label" -msgid "Light (20%) infill will give your model an average strength." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:214 -msgctxt "@label" -msgid "50%" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:221 -msgctxt "@label" -msgid "Dense (50%) infill will give your model an above average strength." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:225 -msgctxt "@label" -msgid "100%" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:232 -msgctxt "@label" -msgid "Solid (100%) infill will make your model completely solid." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:236 -msgctxt "@label" -msgid "Gradual" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:244 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:267 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 +msgctxt "@label" +msgid "Enable gradual" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Generate Support" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:718 msgctxt "@label" msgid "Support Extruder" msgstr "Support Extruder" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:391 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:796 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Build Plate Adhesion" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:462 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:515 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:883 msgctxt "@label" msgid "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides" msgstr "" @@ -3415,33 +3818,21 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Engine Log" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:193 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:236 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +msgctxt "@label" +msgid "Check material compatibility" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:325 -msgctxt "@label" -msgid "Profile:" -msgstr "Profile:" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." - #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -3492,6 +3883,16 @@ msgctxt "name" msgid "God Mode" msgstr "" +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +msgstr "" + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "" + #: ChangeLogPlugin/plugin.json msgctxt "description" msgid "Shows changes since latest checked version." @@ -3522,16 +3923,6 @@ msgctxt "name" msgid "USB printing" msgstr "" -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing X3G files" -msgstr "" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3G Writer" -msgstr "" - #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -3552,6 +3943,21 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "" +#: CuraPrintClusterUpload/plugin.json +msgctxt "name" +msgid "UM3 Network Connection (Cluster)" +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "" + #: CuraSolidWorksPlugin/plugin.json msgctxt "description" msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" @@ -3642,6 +4048,16 @@ msgctxt "name" msgid "Version Upgrade 2.5 to 2.6" msgstr "" +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -3782,6 +4198,130 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "" +#~ msgctxt "@item:inlistbox" +#~ msgid "X-Ray" +#~ msgstr "X-Ray" + +#~ msgctxt "@label" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@info:whatsthis" +#~ msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +#~ msgstr "G-Codeを承認し、Wifi上でDoodle3D WiFi-Boxに送る." + +#~ msgctxt "@item:inmenu" +#~ msgid "Doodle3D printing" +#~ msgstr "Doodle3D printing" + +#~ msgctxt "@info:tooltip" +#~ msgid "Print with " +#~ msgstr "Print with " + +#~ msgctxt "@title:menu" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Enable Scan devices..." +#~ msgstr "Enable Scan devices..." + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G File" + +#~ msgctxt "@info:progress" +#~ msgid "Saving to Removable Drive {0}" +#~ msgstr "Saving to Removable Drive {0}" + +#~ msgctxt "@info:status" +#~ msgid "Could not save to {0}: {1}" +#~ msgstr "Could not save to {0}: {1}" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Layers" +#~ msgstr "Layers" + +#~ msgctxt "@item:inmenu" +#~ msgid "Solid" +#~ msgstr "Solid" + +#~ msgctxt "@label" +#~ msgid "The file {0} already exists. Are you sure you want to overwrite it?" +#~ msgstr "The file {0} already exists. Are you sure you want to overwrite it?" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: {1}" +#~ msgstr "Failed to export profile to {0}: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: Writer plugin reported failure." +#~ msgstr "Failed to export profile to {0}: Writer plugin reported failure." + +#~ msgctxt "@info:status" +#~ msgid "Exported profile to {0}" +#~ msgstr "Exported profile to {0}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Failed to import profile from {0}: {1}" + +#~ msgctxt "@title:window" +#~ msgid "Doodle3D Settings" +#~ msgstr "Doodle3D Settings" + +#~ msgctxt "@title:window" +#~ msgid "Print to: %1" +#~ msgstr "Print to: %1" + +#~ msgctxt "@label" +#~ msgid "Extruder Temperature: %1/%2°C" +#~ msgstr "Extruder Temperature: %1/%2°C" + +#~ msgctxt "@label" +#~ msgid "Bed Temperature: %1/%2°C" +#~ msgstr "Bed Temperature: %1/%2°C" + +#~ msgctxt "@label" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "@label" +#~ msgid "View Mode: Layers" +#~ msgstr "View Mode: Layers" + +#~ msgctxt "@info:status" +#~ msgid "Could not import material %1: %2" +#~ msgstr "Could not import material %1: %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully imported material %1" +#~ msgstr "Successfully imported material %1" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export material to %1: %2" +#~ msgstr "Failed to export material to %1: %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully exported material to %1" +#~ msgstr "Successfully exported material to %1" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g / ~ %4 %3" +#~ msgstr "%1 m / ~ %2 g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g" +#~ msgstr "%1 m / ~ %2 g" + +#~ msgctxt "@label" +#~ msgid "Hotend" +#~ msgstr "Hotend" + +#~ msgctxt "@action:button" +#~ msgid "View Mode" +#~ msgstr "View Mode" + #~ msgctxt "@label" #~ msgid "Machine Settings action" #~ msgstr "Machine Setting " diff --git a/resources/i18n/ja_JP/fdmextruder.def.json.po b/resources/i18n/ja_JP/fdmextruder.def.json.po index 5fc4694fc9..9605e3b409 100644 --- a/resources/i18n/ja_JP/fdmextruder.def.json.po +++ b/resources/i18n/ja_JP/fdmextruder.def.json.po @@ -195,4 +195,4 @@ msgstr "" #: fdmextruder.def.json msgctxt "extruder_prime_pos_y description" msgid "The Y coordinate of the position where the nozzle primes at the start of printing." -msgstr "印刷開始時にノズルがポジションを確認するY座標。" \ No newline at end of file +msgstr "印刷開始時にノズルがポジションを確認するY座標。" diff --git a/resources/i18n/ja_JP/fdmprinter.def.json.po b/resources/i18n/ja_JP/fdmprinter.def.json.po index 7fee36c229..655df9441e 100644 --- a/resources/i18n/ja_JP/fdmprinter.def.json.po +++ b/resources/i18n/ja_JP/fdmprinter.def.json.po @@ -761,16 +761,6 @@ msgctxt "shell description" msgid "Shell" msgstr "外郭" -#: fdmprinter.def.json -msgctxt "wall_extruder_nr label" -msgid "Wall Extruder" -msgstr "" - -#: fdmprinter.def.json -msgctxt "wall_extruder_nr description" -msgid "The extruder train used for printing the walls. This is used in multi-extrusion." -msgstr "壁造形用のエクストルーダー。デュアルノズル印刷時に使用。" - #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" msgid "Outer Wall Extruder" @@ -1131,6 +1121,11 @@ msgctxt "z_seam_type option random" msgid "Random" msgstr "Random" +#: fdmprinter.def.json +msgctxt "z_seam_type option sharpest_corner" +msgid "Sharpest Corner" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1153,6 +1148,36 @@ msgctxt "z_seam_y description" msgid "The Y coordinate of the position near where to start printing each part in a layer." msgstr "レイヤー内の各パーツの印刷を開始する場所の近くのY座標。" +#: fdmprinter.def.json +msgctxt "z_seam_corner label" +msgid "Seam Corner Preference" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner description" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_none" +msgid "None" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_inner" +msgid "Hide Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_outer" +msgid "Expose Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_any" +msgid "Hide or Expose Seam" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1173,6 +1198,16 @@ msgctxt "skin_no_small_gaps_heuristic description" msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." msgstr "モデルに垂直方向のギャップが小さくある場合、これらの狭いスペースにおいて上部および下部スキンを生成するために、約5%の計算時間が追加されます。そのような場合は、設定を無効にしてください。" +#: fdmprinter.def.json +msgctxt "skin_outline_count label" +msgid "Extra Skin Wall Count" +msgstr "Extra Skin Wall Count" + +#: fdmprinter.def.json +msgctxt "skin_outline_count description" +msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." +msgstr "上部/下部パターンの最も外側の部分を同心円の線で置き換えます。 1つまたは2つの線を使用すると、トップ部分の造形が改善されます。" + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1220,8 +1255,8 @@ msgstr "Infill Pattern" #: fdmprinter.def.json msgctxt "infill_pattern description" -msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "印刷物のインフィルのパターン。ラインとジグザグのインフィルは交互のレイヤー方向をずらし、材料費を削減します。グリッド、三角形、キュービック、四面体、同心円のパターンは、各レイヤーに完全に印刷されます。立方体および四面体のインフィルは各層ごとに変化し、各方向に沿ってより均等な強度分布を提供する。" +msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1250,8 +1285,13 @@ msgstr "Cubic Subdivision" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" -msgid "Tetrahedral" -msgstr "Tetrahedral" +msgid "Octet" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option quarter_cubic" +msgid "Quarter Cubic" +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1268,6 +1308,26 @@ msgctxt "infill_pattern option zigzag" msgid "Zig Zag" msgstr "Zig Zag" +#: fdmprinter.def.json +msgctxt "infill_pattern option cross" +msgid "Cross" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross_3d" +msgid "Cross 3D" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill label" +msgid "Connect Infill Lines" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill description" +msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" @@ -1391,34 +1451,34 @@ msgid "Don't generate areas of infill smaller than this (use skin instead)." msgstr "これより小さいインフィルの領域を生成しないでください (代わりにスキンを使用してください)。" #: fdmprinter.def.json -msgctxt "expand_skins_into_infill label" -msgid "Expand Skins Into Infill" -msgstr "Expand Skins Into Infill" - -#: fdmprinter.def.json -msgctxt "expand_skins_into_infill description" -msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." -msgstr "平らな面の上部または底部のスキン部の及びその領域を展開します。既定では、スキンインフィルの周りの壁の線で停止しますが、これはインフィル密度が低いときに現れる穴につながることがあります。この設定は、次の層の面材が皮膚にかかっているので、壁の線を超えてスキンを拡張します。" - -#: fdmprinter.def.json -msgctxt "expand_upper_skins label" -msgid "Expand Top Skins Into Infill" +msgctxt "skin_preshrink label" +msgid "Skin Removal Width" msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins description" -msgid "Expand the top skin areas (areas with air above) so that they support infill above." -msgstr "インフィルをトップの面部分 (空気に触れる領域) を広げることで、上のインフィルを支えます。" - -#: fdmprinter.def.json -msgctxt "expand_lower_skins label" -msgid "Expand Bottom Skins Into Infill" +msgctxt "skin_preshrink description" +msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins description" -msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." -msgstr "下面(下に空気がある領域)を拡大して、上と下のインフィルによって支えるようにします。" +msgctxt "top_skin_preshrink label" +msgid "Top Skin Removal Width" +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_preshrink description" +msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_preshrink label" +msgid "Bottom Skin Removal Width" +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_preshrink description" +msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1427,8 +1487,28 @@ msgstr "Skin Expand Distance" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" -msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." -msgstr "スキンがインフィルに展開される距離。デフォルトの距離は、インフィルの密度が低いときにスキンに現れる穴とインフィルの行間とギャップを埋めるのにに十分です。大抵の場合、距離は小さくても問題ありません。" +msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance label" +msgid "Top Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance description" +msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance label" +msgid "Bottom Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance description" +msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." +msgstr "" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -1813,16 +1893,6 @@ msgctxt "speed_topbottom description" msgid "The speed at which top/bottom layers are printed." msgstr "トップ/ボトムのレイヤーのプリント速度" -#: fdmprinter.def.json -msgctxt "speed_ironing label" -msgid "Ironing Speed" -msgstr "" - -#: fdmprinter.def.json -msgctxt "speed_ironing description" -msgid "The speed at which to pass over the top surface." -msgstr "上部表面通過時の速度" - #: fdmprinter.def.json msgctxt "speed_support label" msgid "Support Speed" @@ -2053,16 +2123,6 @@ msgctxt "acceleration_topbottom description" msgid "The acceleration with which top/bottom layers are printed." msgstr "トップとボトムのレイヤーの印刷加速度。" -#: fdmprinter.def.json -msgctxt "acceleration_ironing label" -msgid "Ironing Acceleration" -msgstr "" - -#: fdmprinter.def.json -msgctxt "acceleration_ironing description" -msgid "The acceleration with which ironing is performed." -msgstr "アイロン時の加速度" - #: fdmprinter.def.json msgctxt "acceleration_support label" msgid "Support Acceleration" @@ -2253,16 +2313,6 @@ msgctxt "jerk_topbottom description" msgid "The maximum instantaneous velocity change with which top/bottom layers are printed." msgstr "トップとボトムのレイヤーを印刷する際の最大瞬間速度の変更。" -#: fdmprinter.def.json -msgctxt "jerk_ironing label" -msgid "Ironing Jerk" -msgstr "" - -#: fdmprinter.def.json -msgctxt "jerk_ironing description" -msgid "The maximum instantaneous velocity change while performing ironing." -msgstr "アイロン時の最大加速度" - #: fdmprinter.def.json msgctxt "jerk_support label" msgid "Support Jerk" @@ -2781,6 +2831,11 @@ msgctxt "support_pattern option zigzag" msgid "Zig Zag" msgstr "Zig Zag" +#: fdmprinter.def.json +msgctxt "support_pattern option cross" +msgid "Cross" +msgstr "" + #: fdmprinter.def.json msgctxt "support_connect_zigzags label" msgid "Connect Support ZigZags" @@ -2793,23 +2848,33 @@ msgstr "ジグザグを接続します。ジグザグ形のサポート材の強 #: fdmprinter.def.json msgctxt "support_skip_some_zags label" -msgid "Skip Some ZigZags Connections" +msgid "Break Up Support In Chunks" msgstr "" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" -msgid "Skip some ZigZags connections to make the support structure easier to break." -msgstr "サポートを取りやすくするため、一部のジグザグ造形をスキップする" +msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm description" +msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count label" -msgid "ZigZag Connection Skip Count" +msgid "Support Chunk Line Count" msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" -msgid "Skip one in every N connection lines to make the support structure easier to break." -msgstr "サポートを取りやすくするため、この値毎のラインと壁の接続をスキップする" +msgid "Skip one in every N connection lines to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3393,6 +3458,26 @@ msgctxt "brim_outside_only description" msgid "Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much." msgstr "モデルの外側のみにブリムを印刷します。これにより、後で取り除くブリムの量が減少します。またプレートへの接着力はそれほど低下しません。" +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 label" +msgid "Initial Layer Z Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 description" +msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers label" +msgid "Z Offset Taper Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers description" +msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3403,6 +3488,16 @@ msgctxt "raft_margin description" msgid "If the raft is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print." msgstr "ラフトが有効になっている場合、モデルの周りに余分なラフト領域ができます。値を大きくするとより強力なラフトができますが、多くの材料を使用し、造形範囲は少なくなります。" +#: fdmprinter.def.json +msgctxt "raft_smoothing label" +msgid "Raft Smoothing" +msgstr "" + +#: fdmprinter.def.json +msgctxt "raft_smoothing description" +msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_airgap label" msgid "Raft Air Gap" @@ -4078,6 +4173,16 @@ msgctxt "smooth_spiralized_contours description" msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." msgstr "らせん状の輪郭を滑らかにしてZシームの視認性を低下させます(Zシームは印刷物上でほとんどみえませんが、レイヤービューでは確認できます。)スムージングは​​細かいサーフェスの詳細をぼかす傾向があることに注意してください。" +#: fdmprinter.def.json +msgctxt "relative_extrusion label" +msgid "Relative Extrusion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "relative_extrusion description" +msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." +msgstr "" + #: fdmprinter.def.json msgctxt "experimental label" msgid "Experimental" @@ -4088,6 +4193,16 @@ msgctxt "experimental description" msgid "experimental!" msgstr "実験的" +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "" + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4198,16 +4313,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "コースティング中の移動速度。印刷時の経路の速度設定に比例します。ボーデンチューブの圧力が低下するので、100%よりわずかに低い値が推奨される。" -#: fdmprinter.def.json -msgctxt "skin_outline_count label" -msgid "Extra Skin Wall Count" -msgstr "Extra Skin Wall Count" - -#: fdmprinter.def.json -msgctxt "skin_outline_count description" -msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." -msgstr "上部/下部パターンの最も外側の部分を同心円の線で置き換えます。 1つまたは2つの線を使用すると、トップ部分の造形が改善されます。" - #: fdmprinter.def.json msgctxt "skin_alternate_rotation label" msgid "Alternate Skin Rotation" @@ -4218,6 +4323,26 @@ msgctxt "skin_alternate_rotation description" msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." msgstr "トップ/ボトムのレイヤーが印刷される方向を変更します。通常、それらは斜めに印刷されます。この設定では、X方向のみとY方向のみが追加されます。" +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size label" +msgid "Cross 3D Pocket Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size description" +msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly label" +msgid "Alternate Cross 3D Pockets" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly description" +msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." +msgstr "" + #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" msgid "Spaghetti Infill" @@ -4635,6 +4760,16 @@ msgctxt "ironing_enabled description" msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." msgstr "ノズルから吐出せずに上部表面を再度動く機能。表面を溶かしてよりスムースにします。" +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer label" +msgid "Iron Only Highest Layer" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer description" +msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." +msgstr "" + #: fdmprinter.def.json msgctxt "ironing_pattern label" msgid "Ironing Pattern" @@ -4685,6 +4820,36 @@ msgctxt "ironing_inset description" msgid "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print." msgstr "モデルの端からの距離。端までアイロンをすると、端が荒れる場合があります。" +#: fdmprinter.def.json +msgctxt "speed_ironing label" +msgid "Ironing Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "speed_ironing description" +msgid "The speed at which to pass over the top surface." +msgstr "上部表面通過時の速度" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing label" +msgid "Ironing Acceleration" +msgstr "" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing description" +msgid "The acceleration with which ironing is performed." +msgstr "アイロン時の加速度" + +#: fdmprinter.def.json +msgctxt "jerk_ironing label" +msgid "Ironing Jerk" +msgstr "" + +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "アイロン時の最大加速度" + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4745,6 +4910,46 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "ファイルから読み込むときに、モデルに適用するトランスフォーメーションマトリックス。" +#~ msgctxt "wall_extruder_nr description" +#~ msgid "The extruder train used for printing the walls. This is used in multi-extrusion." +#~ msgstr "壁造形用のエクストルーダー。デュアルノズル印刷時に使用。" + +#~ msgctxt "infill_pattern description" +#~ msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." +#~ msgstr "印刷物のインフィルのパターン。ラインとジグザグのインフィルは交互のレイヤー方向をずらし、材料費を削減します。グリッド、三角形、キュービック、四面体、同心円のパターンは、各レイヤーに完全に印刷されます。立方体および四面体のインフィルは各層ごとに変化し、各方向に沿ってより均等な強度分布を提供する。" + +#~ msgctxt "infill_pattern option tetrahedral" +#~ msgid "Tetrahedral" +#~ msgstr "Tetrahedral" + +#~ msgctxt "expand_skins_into_infill label" +#~ msgid "Expand Skins Into Infill" +#~ msgstr "Expand Skins Into Infill" + +#~ msgctxt "expand_skins_into_infill description" +#~ msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." +#~ msgstr "平らな面の上部または底部のスキン部の及びその領域を展開します。既定では、スキンインフィルの周りの壁の線で停止しますが、これはインフィル密度が低いときに現れる穴につながることがあります。この設定は、次の層の面材が皮膚にかかっているので、壁の線を超えてスキンを拡張します。" + +#~ msgctxt "expand_upper_skins description" +#~ msgid "Expand the top skin areas (areas with air above) so that they support infill above." +#~ msgstr "インフィルをトップの面部分 (空気に触れる領域) を広げることで、上のインフィルを支えます。" + +#~ msgctxt "expand_lower_skins description" +#~ msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." +#~ msgstr "下面(下に空気がある領域)を拡大して、上と下のインフィルによって支えるようにします。" + +#~ msgctxt "expand_skins_expand_distance description" +#~ msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." +#~ msgstr "スキンがインフィルに展開される距離。デフォルトの距離は、インフィルの密度が低いときにスキンに現れる穴とインフィルの行間とギャップを埋めるのにに十分です。大抵の場合、距離は小さくても問題ありません。" + +#~ msgctxt "support_skip_some_zags description" +#~ msgid "Skip some ZigZags connections to make the support structure easier to break." +#~ msgstr "サポートを取りやすくするため、一部のジグザグ造形をスキップする" + +#~ msgctxt "support_zag_skip_count description" +#~ msgid "Skip one in every N connection lines to make the support structure easier to break." +#~ msgstr "サポートを取りやすくするため、この値毎のラインと壁の接続をスキップする" + #~ msgctxt "machine_show_variants label" #~ msgid "Show machine variants" #~ msgstr "プリンターのバリエーションを表示する" @@ -4887,4 +5092,4 @@ msgstr "ファイルから読み込むときに、モデルに適用するトラ #~ msgctxt "magic_spiralize description" #~ msgid "Spiralize smooths out the Z move of the outer edge. This will create a steady Z increase over the whole print. This feature turns a solid model into a single walled print with a solid bottom. This feature used to be called Joris in older versions." -#~ msgstr "Spiralizeは外縁のZ移動を平滑化します。これにより、プリント全体にわたって安定したZ値が得られます。この機能は、ソリッドモデルを単一のウォールプリントに変換し、底面と側面のみ印刷します。この機能は以前のバージョンではJorisと呼ばれていました。" \ No newline at end of file +#~ msgstr "Spiralizeは外縁のZ移動を平滑化します。これにより、プリント全体にわたって安定したZ値が得られます。この機能は、ソリッドモデルを単一のウォールプリントに変換し、底面と側面のみ印刷します。この機能は以前のバージョンではJorisと呼ばれていました。" diff --git a/resources/i18n/ko_KR/cura.po b/resources/i18n/ko_KR/cura.po index e0f1fa34ae..3670d5211e 100644 --- a/resources/i18n/ko_KR/cura.po +++ b/resources/i18n/ko_KR/cura.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -18,14 +18,14 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.0\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:28 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" msgstr "" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" -msgid "X-Ray" +msgid "X-Ray view" msgstr "" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 @@ -38,39 +38,68 @@ msgctxt "@item:inlistbox" msgid "GCode File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:13 -msgctxt "@label" -msgid "Doodle3D" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:17 -msgctxt "@info:whatsthis" -msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "G-Code를 생성하고 와이파이를 통하여 두들 3D와이파이 박스로 보냅니다. " - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:36 -msgctxt "@item:inmenu" -msgid "Doodle3D printing" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:37 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" -msgid "Print with Doodle3D" +msgid "Print with Doodle3D WiFi-Box" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:38 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 +msgctxt "@properties:tooltip" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +msgctxt "@action:button" +msgid "Cancel" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 +msgctxt "@info:status" +msgid "Sending data to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 +msgctxt "@info:status" +msgid "Unable to send data to Doodle3D Connect. Is another job still active?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 +msgctxt "@info:status" +msgid "File sent to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect.." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" -msgid "Print with " -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:49 -msgctxt "@title:menu" -msgid "Doodle3D" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:50 -msgctxt "@item:inlistbox" -msgid "Enable Scan devices..." +msgid "Open the Doodle3D Connect web interface" msgstr "" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 @@ -113,16 +142,36 @@ msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +msgctxt "@info:title" +msgid "Print Details" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:909 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 +msgctxt "@info:title" +msgid "Warning" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." @@ -134,9 +183,9 @@ msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:14 -msgctxt "X3G Writer File Description" -msgid "X3G File" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +msgctxt "@info:title" +msgid "Printer Firmware" msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 @@ -152,47 +201,79 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 #, python-brace-format -msgctxt "@info:progress" +msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" msgstr "" +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +msgctxt "@info:title" +msgid "Saving" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format -msgctxt "@info:status" -msgid "Saved to Removable Drive {0} as {1}" +msgctxt "@info:status Don't translate the tag {device}!" +msgid "Could not find a file name when trying to write to {device}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -msgctxt "@action:button" -msgid "Eject" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -#, python-brace-format -msgctxt "@action" -msgid "Eject removable device {0}" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:138 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #, python-brace-format msgctxt "@info:status" msgid "Could not save to removable drive {0}: {1}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:148 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:675 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:683 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:145 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:152 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 +msgctxt "@info:title" +msgid "Error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +#, python-brace-format +msgctxt "@info:status" +msgid "Saved to Removable Drive {0} as {1}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +msgctxt "@info:title" +msgid "File Saved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +msgctxt "@action:button" +msgid "Eject" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +#, python-brace-format +msgctxt "@action" +msgid "Eject removable device {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 #, python-brace-format msgctxt "@info:status" msgid "Ejected {0}. You can now safely remove the drive." msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:150 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 +msgctxt "@info:title" +msgid "Safely Remove Hardware" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format msgctxt "@info:status" msgid "Failed to eject {0}. Another program may be using the drive." @@ -203,22 +284,32 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:49 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:156 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 msgctxt "@info:status" msgid "Access to the printer requested. Please approve the request on the printer" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +msgctxt "@info:title" +msgid "Connection status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 #, fuzzy msgctxt "@info:status" msgid "" @@ -234,198 +325,320 @@ msgstr "" "X-Generator: Poedit 2.0\n" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:468 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@action:button" msgid "Retry" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 msgctxt "@info:status" msgid "No access to print with this printer. Unable to send print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:28 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:72 msgctxt "@action:button" msgid "Request Access" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:71 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:358 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:375 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 msgctxt "@info:status" msgid "Connected over the network. Please approve the access request on the printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:365 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:382 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 msgctxt "@info:status" msgid "Connected over the network." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:378 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:383 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:400 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 msgctxt "@info:status" msgid "Access request was denied on the printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:386 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:403 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Access request failed due to a timeout." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:450 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:467 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "The connection with the network was lost." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:481 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 msgctxt "@info:status" msgid "The connection with the printer was lost. Check your printer to see if it is connected." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:630 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:649 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 #, python-format msgctxt "@info:status" msgid "Unable to start a new print job, printer is busy. Current printer status is %s." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:654 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:661 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:682 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:670 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:680 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:694 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:716 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@label" msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:724 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:707 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:729 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:730 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 msgctxt "@label" msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:736 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:815 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 msgctxt "@info:status" msgid "Sending data to printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:816 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:46 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:137 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 -msgctxt "@action:button" -msgid "Cancel" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +msgctxt "@info:title" +msgid "Sending Data" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:884 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1018 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1050 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1024 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1030 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1032 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1175 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 msgctxt "@window:title" msgid "Sync with your printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1177 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1220 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 msgctxt "@label" msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.py:19 msgctxt "@action" msgid "Connect via Network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:172 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#, python-brace-format +msgctxt "Count is number of printers." +msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#, python-brace-format +msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#, python-brace-format +msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +msgctxt "@info:status" +msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#, python-brace-format +msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +msgctxt "@info" +msgid "Could not access update information." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" msgstr "" @@ -444,17 +657,12 @@ msgstr "" msgid "Configure" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:129 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 #, python-format msgctxt "@info:status" msgid "Error while starting %s!" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:207 -msgctxt "@info:status" -msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 msgid "Modify G-Code" msgstr "" @@ -464,7 +672,12 @@ msgctxt "@info" msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." msgstr "" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:44 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 +msgctxt "@info:title" +msgid "Collecting Data" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" msgid "Dismiss" msgstr "" @@ -482,7 +695,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" -msgid "Layers" +msgid "Layer view" msgstr "" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 @@ -490,6 +703,11 @@ msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "" +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 +msgctxt "@info:title" +msgid "Layer View" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -515,24 +733,31 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:281 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." +msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:308 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:307 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 +msgctxt "@info:title" +msgid "Unable to slice" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:317 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:306 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:325 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:315 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "" @@ -543,6 +768,11 @@ msgctxt "@info:status" msgid "Processing Layers" msgstr "" +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +msgctxt "@info:title" +msgid "Information" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" msgid "Per Model Settings" @@ -554,13 +784,13 @@ msgid "Configure Per Model Settings" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:475 msgctxt "@title:tab" msgid "Recommended" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:459 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 msgctxt "@title:tab" msgid "Custom" msgstr "" @@ -571,24 +801,36 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:122 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1050 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 msgctxt "@label" msgid "Nozzle" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 +msgctxt "@menuitem" msgid "Browse plugins" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:120 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +msgctxt "@info:tile" +msgid "Warning" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" msgid "Plugin browser" msgstr "" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" -msgid "Solid" +msgid "Solid view" msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 @@ -601,7 +843,13 @@ msgctxt "@info:status" msgid "Parsing G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:365 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "" @@ -623,7 +871,7 @@ msgid "Cura Project 3MF file" msgstr "" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "" @@ -643,18 +891,73 @@ msgctxt "@action" msgid "Level build plate" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:247 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Skin" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Infill" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Travel" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Other" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 msgctxt "@item:material" msgid "No material loaded" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 msgctxt "@item:material" msgid "Unknown material" msgstr "" @@ -664,35 +967,56 @@ msgctxt "@info:status" msgid "Finding new location for objects" msgstr "" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:85 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:417 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 msgctxt "@title:window" msgid "File Already Exists" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:418 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 #, python-brace-format -msgctxt "@label" +msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:801 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" msgid "Custom" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:805 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 msgctxt "@label" msgid "Custom Material" msgstr "" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +msgctxt "@info:status" +msgid "The selected material is incompatible with the selected machine or configuration." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:109 +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 +msgctxt "@info:title" +msgid "Incompatible Material" +msgstr "" + #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." msgid "The selected material diameter causes the material to become incompatible with the current printer." @@ -710,70 +1034,86 @@ msgstr "" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:148 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:199 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:208 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:242 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +msgctxt "@info:title" +msgid "Export Details" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:213 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:247 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:210 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:246 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:249 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:267 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:272 msgctxt "@label" msgid "Custom profile" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:278 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:300 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:95 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "" +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 +msgctxt "@info:title" +msgid "Build Volume" +msgstr "" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "" + #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" msgid "Crash Report" @@ -792,34 +1132,34 @@ msgctxt "@action:button" msgid "Open Web Page" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:248 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 msgctxt "@info:progress" msgid "Loading machines..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:610 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:652 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Loading interface..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:815 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1285 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1295 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1294 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1304 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" @@ -849,12 +1189,12 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:286 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:838 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:839 msgctxt "@label" msgid "mm" msgstr "" @@ -944,123 +1284,72 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 msgctxt "@tooltip" msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:290 msgctxt "@label" msgid "Material diameter" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:297 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:388 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 msgctxt "@label" msgid "Nozzle size" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:315 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 msgctxt "@label" msgid "Start Gcode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:325 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:334 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:335 msgctxt "@label" msgid "End Gcode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:344 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:376 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:377 msgctxt "@label" msgid "Nozzle Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:398 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 msgctxt "@label" msgid "Nozzle offset X" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:410 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset Y" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:431 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:449 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 msgctxt "@label" msgid "Extruder End Gcode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:20 -msgctxt "@title:window" -msgid "Doodle3D Settings" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:53 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 -msgctxt "@action:button" -msgid "Save" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:23 -msgctxt "@title:window" -msgid "Print to: %1" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:40 -msgctxt "@label" -msgid "Extruder Temperature: %1/%2°C" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:45 -#, fuzzy -msgctxt "@label" -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0\n" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:46 -msgctxt "@label" -msgid "Bed Temperature: %1/%2°C" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:64 -msgctxt "@label" -msgid "%1" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:82 -msgctxt "@action:button" -msgid "Print" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" msgid "Changelog" @@ -1069,9 +1358,10 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:55 #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:446 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:306 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:78 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:125 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 @@ -1125,11 +1415,13 @@ msgid "Unknown error code: %1" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:55 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:65 msgctxt "@label" msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" @@ -1138,17 +1430,20 @@ msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 msgctxt "@action:button" msgid "Add" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:85 msgctxt "@action:button" msgid "Edit" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 @@ -1157,87 +1452,210 @@ msgid "Remove" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:33 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:104 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:35 msgctxt "@action:button" msgid "Refresh" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:196 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:196 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:223 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:223 msgctxt "@label" msgid "Type" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 msgctxt "@label" msgid "Ultimaker 3" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:238 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:238 msgctxt "@label" msgid "Ultimaker 3 Extended" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:241 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:241 msgctxt "@label" msgid "Unknown" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:254 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:254 msgctxt "@label" msgid "Firmware version" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:266 msgctxt "@label" msgid "Address" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 msgctxt "@title:window" msgid "Printer Address" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 msgctxt "@action:button" msgid "Ok" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:37 msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:116 msgctxt "@info:tooltip" msgid "Load the configuration of the printer into Cura" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:117 msgctxt "@action:button" msgid "Activate Configuration" msgstr "" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 +msgctxt "@label:status" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 +msgctxt "@label:status" +msgid "Reserved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 +msgctxt "@label:status" +msgid "Finished" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 +msgctxt "@label:status" +msgid "Preparing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 +msgctxt "@label:status" +msgid "Available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 +msgctxt "@label" +msgid "Completed on: " +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 +msgctxt "@label" +msgid "Clear build plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 +msgctxt "@label" +msgid "Preparing to print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 +msgctxt "@label" +msgid "PRINTER GROUP" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 +msgctxt "@title" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 +msgctxt "@label" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 +msgctxt "@label" +msgid "Queued" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 +msgctxt "@label:title" +msgid "Printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 +msgctxt "@action:button" +msgid "View printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1326,67 +1744,62 @@ msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:71 -msgctxt "@label" -msgid "View Mode: Layers" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:88 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 msgctxt "@label" msgid "Color scheme" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:102 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:91 msgctxt "@label:listbox" msgid "Material Color" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:106 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:95 msgctxt "@label:listbox" msgid "Line Type" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:144 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 msgctxt "@label" msgid "Compatibility Mode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:210 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 msgctxt "@label" msgid "Show Travels" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 msgctxt "@label" msgid "Show Helpers" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 msgctxt "@label" msgid "Show Shell" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:234 msgctxt "@label" msgid "Show Infill" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:264 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:283 msgctxt "@label" msgid "Only Show Top Layers" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:273 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:292 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:284 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:303 msgctxt "@label" msgid "Top / Bottom" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:288 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 msgctxt "@label" msgid "Inner Wall" msgstr "" @@ -1461,23 +1874,23 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:157 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 msgctxt "@action:button" msgid "Select settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:197 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:221 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:245 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 msgctxt "@label:checkbox" msgid "Show all" msgstr "" @@ -1614,24 +2027,42 @@ msgctxt "@title:window" msgid "Find & Update plugins" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:27 msgctxt "@label" msgid "Here you can find a list of Third Party plugins." msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:143 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 msgctxt "@action:button" msgid "Upgrade" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 msgctxt "@action:button" msgid "Installed" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 +msgctxt "@title:window" +msgid "Plugin License Agreement" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 +msgctxt "@label" +msgid "" +" plugin contains a license.\n" +"You need to accept this license to install this plugin.\n" +"Do you agree with the terms below?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" -msgid "Download" +msgid "Accept" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" msgstr "" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 @@ -1808,71 +2239,71 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:91 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 msgctxt "@label:" msgid "Resume" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Pause" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:271 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 msgctxt "@label:" msgid "Abort Print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 msgctxt "@window:title" msgid "Abort print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:283 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "" @@ -1905,19 +2336,19 @@ msgid "Customized" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:587 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:588 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "" @@ -2058,7 +2489,7 @@ msgid "Unit" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 msgctxt "@title:tab" msgid "General" msgstr "" @@ -2073,223 +2504,223 @@ msgctxt "@label" msgid "Language:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 msgctxt "@label" msgid "Currency:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 msgctxt "@label" msgid "Theme:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:289 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:347 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:382 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 msgctxt "@label" msgid "Opening and saving files" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:462 msgctxt "@option:check" msgid "Scale large models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:469 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:496 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:513 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:526 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 msgctxt "@option:openProject" msgid "Always ask" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:528 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always import models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:564 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@label" msgid "Override Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:622 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 msgctxt "@label" msgid "Privacy" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:634 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:check" msgid "Check for updates on start" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:441 msgctxt "@title:tab" msgid "Printers" msgstr "" @@ -2339,7 +2770,7 @@ msgid "Waiting for a printjob" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 msgctxt "@title:tab" msgid "Profiles" msgstr "" @@ -2437,7 +2868,7 @@ msgid "Export Profile" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 msgctxt "@title:tab" msgid "Materials" msgstr "" @@ -2469,12 +2900,12 @@ msgid "Import Material" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "" @@ -2485,17 +2916,17 @@ msgid "Export Material" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:822 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 msgctxt "@title:window" msgid "Add Printer" msgstr "" @@ -2510,71 +2941,6 @@ msgctxt "@action:button" msgid "Add Printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:166 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:167 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:168 -msgctxt "@tooltip" -msgid "Skin" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:169 -msgctxt "@tooltip" -msgid "Infill" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:170 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:171 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:172 -msgctxt "@tooltip" -msgid "Support" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:173 -msgctxt "@tooltip" -msgid "Travel" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:174 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:175 -msgctxt "@tooltip" -msgid "Other" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:217 -msgctxt "@label" -msgid "00h 00min" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:270 -msgctxt "@label" -msgid "%1 m / ~ %2 g / ~ %4 %3" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:275 -msgctxt "@label" -msgid "%1 m / ~ %2 g" -msgstr "" - #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -2682,32 +3048,45 @@ msgctxt "@label" msgid "SVG icons" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +msgctxt "@label" +msgid "Profile:" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" msgid "Search..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:405 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 msgctxt "@action:menu" msgid "Hide this setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:419 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:438 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "" @@ -2756,24 +3135,49 @@ msgid "" "Click to restore the calculated value." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "Print Setup" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 +msgctxt "@label" +msgid "00h 00min" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +msgctxt "@tooltip" +msgid "Time information" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 +msgctxt "@description" +msgid "Print time" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +msgctxt "@label" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 +msgctxt "@label" +msgid "%1m / ~ %2g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" msgid "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:460 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:481 msgctxt "@tooltip" msgid "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." msgstr "" @@ -2823,81 +3227,87 @@ msgid "No printer connected" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" -msgid "Hotend" +msgid "Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:119 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 +msgctxt "@tooltip" +msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:249 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 msgctxt "@label" msgid "Build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:278 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:310 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:343 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:422 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button" msgid "Pre-heat" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:610 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:677 msgctxt "@label" msgid "Active print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:648 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 msgctxt "@label" msgid "Job Name" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 msgctxt "@label" msgid "Printing Time" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:660 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 msgctxt "@label" msgid "Estimated time left" msgstr "" @@ -3088,53 +3498,53 @@ msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Prepare" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Cancel" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:288 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 msgctxt "@title:window" msgid "Open file(s)" msgstr "" @@ -3226,42 +3636,37 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 msgctxt "@action:button" msgid "Open File" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:428 -msgctxt "@action:button" -msgid "View Mode" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "Settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 msgctxt "@title:window" msgid "New project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:532 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:750 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:694 msgctxt "@window:title" msgid "Install Plugin" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:757 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 msgctxt "@title:window" msgid "Open File(s)" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:760 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "" @@ -3286,102 +3691,87 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 +msgctxt "@action:button" +msgid "Save" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 msgctxt "@title:tab" msgid "Prepare" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" -msgid "Print" +msgid "Monitor" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 msgctxt "@label" -msgid "Infill" +msgid "Layer Height" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 msgctxt "@label" -msgid "0%" +msgid "Print Speed" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:199 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 msgctxt "@label" -msgid "Empty infill will leave your model hollow with low strength." +msgid "Slower" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 msgctxt "@label" -msgid "20%" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:210 -msgctxt "@label" -msgid "Light (20%) infill will give your model an average strength." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:214 -msgctxt "@label" -msgid "50%" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:221 -msgctxt "@label" -msgid "Dense (50%) infill will give your model an above average strength." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:225 -msgctxt "@label" -msgid "100%" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:232 -msgctxt "@label" -msgid "Solid (100%) infill will make your model completely solid." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:236 -msgctxt "@label" -msgid "Gradual" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:244 -msgctxt "@label" -msgid "Gradual infill will gradually increase the amount of infill towards the top." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:267 -msgctxt "@label" -msgid "Generate Support" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:300 -msgctxt "@label" -msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:317 -msgctxt "@label" -msgid "Support Extruder" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:391 -msgctxt "@label" -msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +msgid "Faster" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" +msgid "Infill" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 +msgctxt "@label" +msgid "Enable gradual" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 +msgctxt "@label" +msgid "Generate Support" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 +msgctxt "@label" +msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:718 +msgctxt "@label" +msgid "Support Extruder" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 +msgctxt "@label" +msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:796 +msgctxt "@label" msgid "Build Plate Adhesion" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:462 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:515 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:883 msgctxt "@label" msgid "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides" msgstr "" @@ -3418,30 +3808,21 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:193 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 msgctxt "@label" msgid "Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:236 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +msgctxt "@label" +msgid "Check material compatibility" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:325 -msgctxt "@label" -msgid "Profile:" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" - #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -3492,6 +3873,16 @@ msgctxt "name" msgid "God Mode" msgstr "" +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +msgstr "" + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "" + #: ChangeLogPlugin/plugin.json msgctxt "description" msgid "Shows changes since latest checked version." @@ -3522,16 +3913,6 @@ msgctxt "name" msgid "USB printing" msgstr "" -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing X3G files" -msgstr "" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3G Writer" -msgstr "" - #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -3552,6 +3933,21 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "" +#: CuraPrintClusterUpload/plugin.json +msgctxt "name" +msgid "UM3 Network Connection (Cluster)" +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "" + #: CuraSolidWorksPlugin/plugin.json msgctxt "description" msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" @@ -3642,6 +4038,16 @@ msgctxt "name" msgid "Version Upgrade 2.5 to 2.6" msgstr "" +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -3782,6 +4188,24 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "" +#~ msgctxt "@info:whatsthis" +#~ msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +#~ msgstr "G-Code를 생성하고 와이파이를 통하여 두들 3D와이파이 박스로 보냅니다. " + +#, fuzzy +#~ msgctxt "@label" +#~ msgid "" +#~ msgstr "" +#~ "Project-Id-Version: \n" +#~ "POT-Creation-Date: \n" +#~ "PO-Revision-Date: \n" +#~ "Last-Translator: \n" +#~ "Language-Team: \n" +#~ "MIME-Version: 1.0\n" +#~ "Content-Type: text/plain; charset=UTF-8\n" +#~ "Content-Transfer-Encoding: 8bit\n" +#~ "X-Generator: Poedit 2.0\n" + #~ msgctxt "@info:whatsthis" #~ msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" #~ msgstr "빌드볼륨, 노즐 사이즈 등, 장비 셋팅의 방법을 제공합니다. " diff --git a/resources/i18n/ko_KR/fdmprinter.def.json.po b/resources/i18n/ko_KR/fdmprinter.def.json.po index 06dfd79408..506f76b66f 100644 --- a/resources/i18n/ko_KR/fdmprinter.def.json.po +++ b/resources/i18n/ko_KR/fdmprinter.def.json.po @@ -757,16 +757,6 @@ msgctxt "shell description" msgid "Shell" msgstr "겉면 " -#: fdmprinter.def.json -msgctxt "wall_extruder_nr label" -msgid "Wall Extruder" -msgstr "" - -#: fdmprinter.def.json -msgctxt "wall_extruder_nr description" -msgid "The extruder train used for printing the walls. This is used in multi-extrusion." -msgstr "벽을 인쇄하는 데 사용되는 압출기 트레인. 이것은 다중 압출에 사용됩니다. " - #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" msgid "Outer Wall Extruder" @@ -1127,6 +1117,11 @@ msgctxt "z_seam_type option random" msgid "Random" msgstr "" +#: fdmprinter.def.json +msgctxt "z_seam_type option sharpest_corner" +msgid "Sharpest Corner" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1147,6 +1142,36 @@ msgctxt "z_seam_y description" msgid "The Y coordinate of the position near where to start printing each part in a layer." msgstr "레이어의 각 부분을 인쇄 할 위치 근처의 위치에 대한 Y 좌표입니다. " +#: fdmprinter.def.json +msgctxt "z_seam_corner label" +msgid "Seam Corner Preference" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner description" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_none" +msgid "None" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_inner" +msgid "Hide Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_outer" +msgid "Expose Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_any" +msgid "Hide or Expose Seam" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1167,6 +1192,16 @@ msgctxt "skin_no_small_gaps_heuristic description" msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." msgstr "모델에 수직 간격이 작 으면이 좁은 공간에서 상단 및 하단 스킨을 생성하는 데 약 5 %의 추가 계산 시간을 소비 할 수 있습니다. 이 경우 설정을 해제하십시오. " +#: fdmprinter.def.json +msgctxt "skin_outline_count label" +msgid "Extra Skin Wall Count" +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_outline_count description" +msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." +msgstr "위쪽 / 아래쪽 패턴의 가장 바깥 쪽 부분을 여러 동심 선으로 바꿉니다. 하나 또는 두 개의 선을 사용하면 충진재로 시작하는 지붕이 향상됩니다. " + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1214,8 +1249,8 @@ msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern description" -msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "프린트의 충전재 패턴. 라인과 지그는 대체 층에서 스필 방향을 바꾸어 재료비를 줄입니다. 그리드, 삼각형, 큐빅, 사면체 및 동심원 패턴은 모든 레이어에 완전히 인쇄됩니다. 입방체 및 사면체 충전재는 각 방향마다 강도가 균등하게 분포되도록 모든 층을 변경합니다. " +msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1244,7 +1279,12 @@ msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" -msgid "Tetrahedral" +msgid "Octet" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option quarter_cubic" +msgid "Quarter Cubic" msgstr "" #: fdmprinter.def.json @@ -1262,6 +1302,26 @@ msgctxt "infill_pattern option zigzag" msgid "Zig Zag" msgstr "" +#: fdmprinter.def.json +msgctxt "infill_pattern option cross" +msgid "Cross" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross_3d" +msgid "Cross 3D" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill label" +msgid "Connect Infill Lines" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill description" +msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" @@ -1383,34 +1443,34 @@ msgid "Don't generate areas of infill smaller than this (use skin instead)." msgstr "이보다 작은 충진물 영역을 생성하지 마십시오 (대신 스킨 사용). " #: fdmprinter.def.json -msgctxt "expand_skins_into_infill label" -msgid "Expand Skins Into Infill" +msgctxt "skin_preshrink label" +msgid "Skin Removal Width" msgstr "" #: fdmprinter.def.json -msgctxt "expand_skins_into_infill description" -msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." -msgstr "평면의 상단 및 / 또는 하단 스킨 영역을 확장합니다. 기본적으로 스필은 충진을 둘러싸는 벽 선 아래에서 멈 춥니 다. 그러나 이는 충진 밀도가 낮을 때 나타나는 구멍으로 이어질 수 있습니다. 이 설정은 스킨을 벽 선 너머로 확장하여 다음 레이어의 필이 피부에 놓 이도록합니다. " - -#: fdmprinter.def.json -msgctxt "expand_upper_skins label" -msgid "Expand Top Skins Into Infill" +msgctxt "skin_preshrink description" +msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins description" -msgid "Expand the top skin areas (areas with air above) so that they support infill above." -msgstr "상단 피부 영역 (위의 공기가있는 영역)을 확장하여 위의 충진물을 지탱하도록하십시오. " - -#: fdmprinter.def.json -msgctxt "expand_lower_skins label" -msgid "Expand Bottom Skins Into Infill" +msgctxt "top_skin_preshrink label" +msgid "Top Skin Removal Width" msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins description" -msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." -msgstr "아래 피부 영역 (공기가있는 부분)을 확장하여 위와 아래의 충진층으로 고정시킵니다. " +msgctxt "top_skin_preshrink description" +msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_preshrink label" +msgid "Bottom Skin Removal Width" +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_preshrink description" +msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1419,8 +1479,28 @@ msgstr "" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" -msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." -msgstr "스킨이 충진 될 거리입니다. 기본 거리는 충진 선 사이의 간격을 메우기에 충분하며 충진 밀도가 낮을 때 벽과 만나는 스킨에 나타나는 구멍을 막습니다. 거리가 짧으면 충분합니다. " +msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance label" +msgid "Top Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance description" +msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance label" +msgid "Bottom Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance description" +msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." +msgstr "" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -1802,16 +1882,6 @@ msgctxt "speed_topbottom description" msgid "The speed at which top/bottom layers are printed." msgstr "위쪽 / 아래쪽 레이어가 인쇄되는 속도입니다. " -#: fdmprinter.def.json -msgctxt "speed_ironing label" -msgid "Ironing Speed" -msgstr "" - -#: fdmprinter.def.json -msgctxt "speed_ironing description" -msgid "The speed at which to pass over the top surface." -msgstr "상단 표면을 통과하는 속도. " - #: fdmprinter.def.json msgctxt "speed_support label" msgid "Support Speed" @@ -2042,16 +2112,6 @@ msgctxt "acceleration_topbottom description" msgid "The acceleration with which top/bottom layers are printed." msgstr "위쪽 / 아래쪽 레이어가 인쇄되는 가속도입니다. " -#: fdmprinter.def.json -msgctxt "acceleration_ironing label" -msgid "Ironing Acceleration" -msgstr "" - -#: fdmprinter.def.json -msgctxt "acceleration_ironing description" -msgid "The acceleration with which ironing is performed." -msgstr "다림질이 수행되는 가속도. " - #: fdmprinter.def.json msgctxt "acceleration_support label" msgid "Support Acceleration" @@ -2242,16 +2302,6 @@ msgctxt "jerk_topbottom description" msgid "The maximum instantaneous velocity change with which top/bottom layers are printed." msgstr "상단 / 하단 레이어가 인쇄되는 최대 순간 속도 변화. " -#: fdmprinter.def.json -msgctxt "jerk_ironing label" -msgid "Ironing Jerk" -msgstr "" - -#: fdmprinter.def.json -msgctxt "jerk_ironing description" -msgid "The maximum instantaneous velocity change while performing ironing." -msgstr "다림질을하는 동안 최대 순간 속도 변화. " - #: fdmprinter.def.json msgctxt "jerk_support label" msgid "Support Jerk" @@ -2767,6 +2817,11 @@ msgctxt "support_pattern option zigzag" msgid "Zig Zag" msgstr "" +#: fdmprinter.def.json +msgctxt "support_pattern option cross" +msgid "Cross" +msgstr "" + #: fdmprinter.def.json msgctxt "support_connect_zigzags label" msgid "Connect Support ZigZags" @@ -2779,23 +2834,33 @@ msgstr "지그재그를 연결하십시오. 이것은 지그재그지지 구조 #: fdmprinter.def.json msgctxt "support_skip_some_zags label" -msgid "Skip Some ZigZags Connections" +msgid "Break Up Support In Chunks" msgstr "" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" -msgid "Skip some ZigZags connections to make the support structure easier to break." -msgstr "지그재그 연결을 건너 뛰면 지원 구조를 쉽게 끊을 수 있습니다. " +msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm description" +msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count label" -msgid "ZigZag Connection Skip Count" +msgid "Support Chunk Line Count" msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" -msgid "Skip one in every N connection lines to make the support structure easier to break." -msgstr "지원 구조를 쉽게 깨뜨릴 수 있도록 N 개의 연결 라인마다 하나씩 건너 뜁니다. " +msgid "Skip one in every N connection lines to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3379,6 +3444,26 @@ msgctxt "brim_outside_only description" msgid "Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much." msgstr "모델 바깥 쪽 가장자리에만 인쇄하십시오. 이렇게하면 나중에 제거해야하는 가장자리의 양이 줄어들지 만 침대 접착력은 그렇게 많이 줄어들지 않습니다. " +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 label" +msgid "Initial Layer Z Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 description" +msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers label" +msgid "Z Offset Taper Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers description" +msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3389,6 +3474,16 @@ msgctxt "raft_margin description" msgid "If the raft is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print." msgstr "래프트가 활성화 된 경우 래프트가 주어진 모델 주변의 추가 뗏목 지역입니다. 이 여백을 늘리면 재료를 더 많이 사용하고 인쇄물을 적게 차지하면서 더 강력한 래프트가 만들어집니다. " +#: fdmprinter.def.json +msgctxt "raft_smoothing label" +msgid "Raft Smoothing" +msgstr "" + +#: fdmprinter.def.json +msgctxt "raft_smoothing description" +msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_airgap label" msgid "Raft Air Gap" @@ -4064,6 +4159,16 @@ msgctxt "smooth_spiralized_contours description" msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." msgstr "나선형 윤곽선을 부드럽게하여 Z 솔기의 가시성을 줄이십시오 (Z- 솔기는 인쇄물에서는 거의 보이지 않지만 레이어 뷰에서는 여전히 보임). 매끄러움은 표면의 세부 묘사를 흐릿하게하는 경향이 있습니다. " +#: fdmprinter.def.json +msgctxt "relative_extrusion label" +msgid "Relative Extrusion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "relative_extrusion description" +msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." +msgstr "" + #: fdmprinter.def.json msgctxt "experimental label" msgid "Experimental" @@ -4074,6 +4179,16 @@ msgctxt "experimental description" msgid "experimental!" msgstr "실험적인 " +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "" + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4184,16 +4299,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "코스팅(Coasting) 시, 이동 속도. 돌출 경로의 속도에 상대적입니다. 해안 이동 중에 보우 덴 튜브의 압력이 떨어지기 때문에 100 %보다 약간 작은 값을 권합니다. " -#: fdmprinter.def.json -msgctxt "skin_outline_count label" -msgid "Extra Skin Wall Count" -msgstr "" - -#: fdmprinter.def.json -msgctxt "skin_outline_count description" -msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." -msgstr "위쪽 / 아래쪽 패턴의 가장 바깥 쪽 부분을 여러 동심 선으로 바꿉니다. 하나 또는 두 개의 선을 사용하면 충진재로 시작하는 지붕이 향상됩니다. " - #: fdmprinter.def.json msgctxt "skin_alternate_rotation label" msgid "Alternate Skin Rotation" @@ -4204,6 +4309,26 @@ msgctxt "skin_alternate_rotation description" msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." msgstr "위쪽 / 아래쪽 레이어가 인쇄되는 방향을 바꿉니다. 보통 대각선으로 만 인쇄됩니다. 이 설정은 X 전용 및 Y 전용 방향을 추가합니다. " +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size label" +msgid "Cross 3D Pocket Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size description" +msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly label" +msgid "Alternate Cross 3D Pockets" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly description" +msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." +msgstr "" + #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" msgid "Spaghetti Infill" @@ -4621,6 +4746,16 @@ msgctxt "ironing_enabled description" msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." msgstr "상단 표면을 한 번 더 이동 시키되 재료를 돌출시키지 마십시오. 이것은 플라스틱을 맨 위에 더 녹여 부드러운 표면을 만듭니다. " +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer label" +msgid "Iron Only Highest Layer" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer description" +msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." +msgstr "" + #: fdmprinter.def.json msgctxt "ironing_pattern label" msgid "Ironing Pattern" @@ -4671,6 +4806,36 @@ msgctxt "ironing_inset description" msgid "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print." msgstr "모델 가장자리에서 떨어지지 않는 거리. 메쉬 가장자리까지 다림질하면 인쇄물의 가장자리가 고르지 않을 수 있습니다. " +#: fdmprinter.def.json +msgctxt "speed_ironing label" +msgid "Ironing Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "speed_ironing description" +msgid "The speed at which to pass over the top surface." +msgstr "상단 표면을 통과하는 속도. " + +#: fdmprinter.def.json +msgctxt "acceleration_ironing label" +msgid "Ironing Acceleration" +msgstr "" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing description" +msgid "The acceleration with which ironing is performed." +msgstr "다림질이 수행되는 가속도. " + +#: fdmprinter.def.json +msgctxt "jerk_ironing label" +msgid "Ironing Jerk" +msgstr "" + +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "다림질을하는 동안 최대 순간 속도 변화. " + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4731,6 +4896,38 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "파일로부터 로드 하는 경유, 모델에 적용될 변환 행렬입니다. " +#~ msgctxt "wall_extruder_nr description" +#~ msgid "The extruder train used for printing the walls. This is used in multi-extrusion." +#~ msgstr "벽을 인쇄하는 데 사용되는 압출기 트레인. 이것은 다중 압출에 사용됩니다. " + +#~ msgctxt "infill_pattern description" +#~ msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." +#~ msgstr "프린트의 충전재 패턴. 라인과 지그는 대체 층에서 스필 방향을 바꾸어 재료비를 줄입니다. 그리드, 삼각형, 큐빅, 사면체 및 동심원 패턴은 모든 레이어에 완전히 인쇄됩니다. 입방체 및 사면체 충전재는 각 방향마다 강도가 균등하게 분포되도록 모든 층을 변경합니다. " + +#~ msgctxt "expand_skins_into_infill description" +#~ msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." +#~ msgstr "평면의 상단 및 / 또는 하단 스킨 영역을 확장합니다. 기본적으로 스필은 충진을 둘러싸는 벽 선 아래에서 멈 춥니 다. 그러나 이는 충진 밀도가 낮을 때 나타나는 구멍으로 이어질 수 있습니다. 이 설정은 스킨을 벽 선 너머로 확장하여 다음 레이어의 필이 피부에 놓 이도록합니다. " + +#~ msgctxt "expand_upper_skins description" +#~ msgid "Expand the top skin areas (areas with air above) so that they support infill above." +#~ msgstr "상단 피부 영역 (위의 공기가있는 영역)을 확장하여 위의 충진물을 지탱하도록하십시오. " + +#~ msgctxt "expand_lower_skins description" +#~ msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." +#~ msgstr "아래 피부 영역 (공기가있는 부분)을 확장하여 위와 아래의 충진층으로 고정시킵니다. " + +#~ msgctxt "expand_skins_expand_distance description" +#~ msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." +#~ msgstr "스킨이 충진 될 거리입니다. 기본 거리는 충진 선 사이의 간격을 메우기에 충분하며 충진 밀도가 낮을 때 벽과 만나는 스킨에 나타나는 구멍을 막습니다. 거리가 짧으면 충분합니다. " + +#~ msgctxt "support_skip_some_zags description" +#~ msgid "Skip some ZigZags connections to make the support structure easier to break." +#~ msgstr "지그재그 연결을 건너 뛰면 지원 구조를 쉽게 끊을 수 있습니다. " + +#~ msgctxt "support_zag_skip_count description" +#~ msgid "Skip one in every N connection lines to make the support structure easier to break." +#~ msgstr "지원 구조를 쉽게 깨뜨릴 수 있도록 N 개의 연결 라인마다 하나씩 건너 뜁니다. " + #~ msgctxt "wall_thickness description" #~ msgid "The thickness of the outside walls in the horizontal direction. This value divided by the wall line width defines the number of walls." #~ msgstr "외벽의 수평 방향의 두께. 이 값을 벽 선 너비로 나눈 값은 벽의 수를 정의합니다. " diff --git a/resources/i18n/nl_NL/cura.po b/resources/i18n/nl_NL/cura.po index 639fe9169a..780090ddd0 100644 --- a/resources/i18n/nl_NL/cura.po +++ b/resources/i18n/nl_NL/cura.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -16,15 +16,15 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:28 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" msgstr "Machine-instellingen" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" -msgid "X-Ray" -msgstr "Röntgen" +msgid "X-Ray view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -36,40 +36,69 @@ msgctxt "@item:inlistbox" msgid "GCode File" msgstr "G-code-bestand" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:13 -msgctxt "@label" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:17 -msgctxt "@info:whatsthis" -msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "Accepteert G-code en verzendt deze code via WiFi naar een Doodle3D WiFi-Box." - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:36 -msgctxt "@item:inmenu" -msgid "Doodle3D printing" -msgstr "Doodle3D-printen" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:37 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" -msgid "Print with Doodle3D" -msgstr "Printen via Doodle3D" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:38 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 +msgctxt "@properties:tooltip" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Annuleren" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 +msgctxt "@info:status" +msgid "Sending data to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 +msgctxt "@info:status" +msgid "Unable to send data to Doodle3D Connect. Is another job still active?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 +msgctxt "@info:status" +msgid "File sent to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect.." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" -msgid "Print with " -msgstr "Printen via" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:49 -msgctxt "@title:menu" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:50 -msgctxt "@item:inlistbox" -msgid "Enable Scan devices..." -msgstr "Scanners inschakelen..." +msgid "Open the Doodle3D Connect web interface" +msgstr "" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -111,16 +140,36 @@ msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Er kan geen nieuwe taak worden gestart omdat de printer bezig is of niet aangesloten is." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +msgctxt "@info:title" +msgid "Print Details" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "De printer biedt geen ondersteuning voor USB-printen omdat deze de codeversie UltiGCode gebruikt." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Er kan geen nieuwe taak worden gestart omdat de printer geen ondersteuning biedt voor USB-printen." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:909 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 +msgctxt "@info:title" +msgid "Warning" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." @@ -132,10 +181,10 @@ msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "De voor de printer benodigde software is niet op %s te vinden." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:14 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G-bestand" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +msgctxt "@info:title" +msgid "Printer Firmware" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -150,47 +199,79 @@ msgstr "Opslaan op Verwisselbaar Station {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 #, python-brace-format -msgctxt "@info:progress" +msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "Opslaan op Verwisselbaar Station {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +msgctxt "@info:title" +msgid "Saving" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "Kan niet opslaan als {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format -msgctxt "@info:status" -msgid "Saved to Removable Drive {0} as {1}" -msgstr "Opgeslagen op Verwisselbaar Station {0} als {1}" +msgctxt "@info:status Don't translate the tag {device}!" +msgid "Could not find a file name when trying to write to {device}." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -msgctxt "@action:button" -msgid "Eject" -msgstr "Uitwerpen" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -#, python-brace-format -msgctxt "@action" -msgid "Eject removable device {0}" -msgstr "Verwisselbaar station {0} uitwerpen" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:138 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #, python-brace-format msgctxt "@info:status" msgid "Could not save to removable drive {0}: {1}" msgstr "Kan niet opslaan op verwisselbaar station {0}: {1}" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:148 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:675 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:683 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:145 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:152 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 +msgctxt "@info:title" +msgid "Error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +#, python-brace-format +msgctxt "@info:status" +msgid "Saved to Removable Drive {0} as {1}" +msgstr "Opgeslagen op Verwisselbaar Station {0} als {1}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +msgctxt "@info:title" +msgid "File Saved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +msgctxt "@action:button" +msgid "Eject" +msgstr "Uitwerpen" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +#, python-brace-format +msgctxt "@action" +msgid "Eject removable device {0}" +msgstr "Verwisselbaar station {0} uitwerpen" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 #, python-brace-format msgctxt "@info:status" msgid "Ejected {0}. You can now safely remove the drive." msgstr "{0} is uitgeworpen. U kunt het station nu veilig verwijderen." -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:150 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 +msgctxt "@info:title" +msgid "Safely Remove Hardware" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format msgctxt "@info:status" msgid "Failed to eject {0}. Another program may be using the drive." @@ -201,219 +282,351 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Verwisselbaar Station" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:49 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Printen via netwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Printen via netwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:156 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 msgctxt "@info:status" msgid "Access to the printer requested. Please approve the request on the printer" msgstr "Er is een toegangsaanvraag voor de printer verstuurd. Keur de aanvraag goed op de printer" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +msgctxt "@info:title" +msgid "Connection status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 msgctxt "@info:status" msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:468 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@action:button" msgid "Retry" msgstr "Opnieuw proberen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "De toegangsaanvraag opnieuw verzenden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Toegang tot de printer is geaccepteerd" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 msgctxt "@info:status" msgid "No access to print with this printer. Unable to send print job." msgstr "Kan geen toegang verkrijgen om met deze printer te printen. Kan de printtaak niet verzenden." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:28 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:72 msgctxt "@action:button" msgid "Request Access" msgstr "Toegang aanvragen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:71 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "Toegangsaanvraag naar de printer verzenden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:358 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:375 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 msgctxt "@info:status" msgid "Connected over the network. Please approve the access request on the printer." msgstr "Via het netwerk verbonden. Keur de aanvraag goed op de printer." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:365 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:382 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 msgctxt "@info:status" msgid "Connected over the network." msgstr "Via het netwerk verbonden." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:378 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "Via het netwerk verbonden. Kan de printer niet beheren." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:383 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:400 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 msgctxt "@info:status" msgid "Access request was denied on the printer." msgstr "Toegang is op de printer geweigerd." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:386 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:403 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Access request failed due to a timeout." msgstr "De toegangsaanvraag is mislukt vanwege een time-out." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:450 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:467 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "The connection with the network was lost." msgstr "De verbinding met het netwerk is verbroken." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:481 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 msgctxt "@info:status" msgid "The connection with the printer was lost. Check your printer to see if it is connected." msgstr "De verbinding met de printer is verbroken. Controleer of de printer nog is aangesloten." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:630 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:649 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 #, python-format msgctxt "@info:status" msgid "Unable to start a new print job, printer is busy. Current printer status is %s." msgstr "Er kan geen nieuwe taak worden gestart omdat de printer bezig is. De huidige printerstatus is %s." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:654 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Er kan geen nieuwe taak worden gestart. Er is geen PrintCore geladen in de sleuf {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:661 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:682 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Er kan geen nieuwe taak worden gestart. Er is geen materiaal geladen in de sleuf {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:670 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Er is onvoldoende materiaal voor de spool {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:680 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Afwijkende PrintCore (Cura: {0}, Printer: {1}) geselecteerd voor de extruder {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:694 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:716 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@label" msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Afwijkend materiaal (Cura: {0}, Printer: {1}) geselecteerd voor de extruder {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:724 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "De PrintCore {0} is niet correct gekalibreerd. Op de printer moet XY-kalibratie worden uitgevoerd." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:707 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:729 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "Weet u zeker dat u met de geselecteerde configuratie wilt printen?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:730 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 msgctxt "@label" msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "De configuratie of kalibratie van de printer komt niet overeen met de configuratie van Cura. Slice voor het beste resultaat altijd voor de PrintCores en materialen die in de printer zijn ingevoerd." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:736 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "De configuratie komt niet overeen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:815 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 msgctxt "@info:status" msgid "Sending data to printer" msgstr "De gegevens worden naar de printer verzonden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:816 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:46 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:137 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Annuleren" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +msgctxt "@info:title" +msgid "Sending Data" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:884 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Kan geen gegevens naar de printer verzenden. Is er nog een andere taak actief?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1018 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1050 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Printen afbreken..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1024 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Print afgebroken. Controleer de printer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1030 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Print onderbreken..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1032 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Print hervatten..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1175 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synchroniseren met de printer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1177 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "Wilt u uw huidige printerconfiguratie gebruiken in Cura?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1220 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 msgctxt "@label" msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "De PrintCores en/of materialen in de printer wijken af van de PrintCores en/of materialen in uw huidige project. Slice voor het beste resultaat altijd voor de PrintCores en materialen die in de printer zijn ingevoerd." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.py:19 msgctxt "@action" msgid "Connect via Network" msgstr "Verbinding Maken via Netwerk" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:172 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#, python-brace-format +msgctxt "Count is number of printers." +msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#, python-brace-format +msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#, python-brace-format +msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +msgctxt "@info:status" +msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#, python-brace-format +msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Downloaden" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +msgctxt "@info" +msgid "Could not access update information." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" msgstr "Er zijn fouten opgetreden tijdens het openen van het SolidWorks-bestand. Controleer of u het bestand zonder problemen in SolidWorks kunt openen." @@ -432,17 +645,12 @@ msgstr "Montagebestand SolidWorks" msgid "Configure" msgstr "Configureren" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:129 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 #, python-format msgctxt "@info:status" msgid "Error while starting %s!" msgstr "Er is een fout opgetreden tijdens het starten van %s!" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:207 -msgctxt "@info:status" -msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" -msgstr "Houd er rekening mee dat u het SolidWorks-bestand handmatig opnieuw moet openen. Het opnieuw laden van het bestand zal geen effect hebben." - #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 msgid "Modify G-Code" msgstr "G-code wijzigen" @@ -452,7 +660,12 @@ msgctxt "@info" msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." msgstr "Cura verzamelt geanonimiseerde slicing-statistieken. Dit kan bij de voorkeuren worden uitgeschakeld." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:44 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 +msgctxt "@info:title" +msgid "Collecting Data" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" msgid "Dismiss" msgstr "Verwijderen" @@ -470,14 +683,19 @@ msgstr "G-code-bestand" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" -msgid "Layers" -msgstr "Lagen" +msgid "Layer view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Als draadprinten is ingeschakeld, geeft Cura lagen niet nauwkeurig weer" +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 +msgctxt "@info:title" +msgid "Layer View" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -503,24 +721,31 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF-afbeelding" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:281 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "Het geselecteerde materiaal is niet compatibel met de geselecteerde machine of configuratie." +msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:308 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:307 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 +msgctxt "@info:title" +msgid "Unable to slice" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Met de huidige instellingen is slicing niet mogelijk. De volgende instellingen bevatten fouten: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:317 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:306 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Slicen is niet mogelijk omdat de terugduwpijler of terugduwpositie(s) ongeldig zijn." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:325 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:315 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Er valt niets te slicen omdat geen van de modellen in het bouwvolume past. Schaal of roteer de modellen totdat deze passen." @@ -531,6 +756,11 @@ msgctxt "@info:status" msgid "Processing Layers" msgstr "Lagen verwerken" +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +msgctxt "@info:title" +msgid "Information" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" msgid "Per Model Settings" @@ -542,13 +772,13 @@ msgid "Configure Per Model Settings" msgstr "Instellingen per Model configureren" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:475 msgctxt "@title:tab" msgid "Recommended" msgstr "Aanbevolen" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:459 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 msgctxt "@title:tab" msgid "Custom" msgstr "Aangepast" @@ -559,25 +789,37 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF-bestand" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:122 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1050 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 msgctxt "@label" msgid "Nozzle" msgstr "Nozzle" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 +msgctxt "@menuitem" msgid "Browse plugins" -msgstr "Vind invoegtoepassingen" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:120 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +msgctxt "@info:tile" +msgid "Warning" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" msgid "Plugin browser" msgstr "Invoegtoepassingbrowser" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" -msgid "Solid" -msgstr "Solide" +msgid "Solid view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -589,7 +831,13 @@ msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-code parseren" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:365 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Zorg ervoor dat de G-code geschikt is voor uw printer en de printerconfiguratie voordat u het bestand verzendt. Mogelijk is de weergave van de G-code niet nauwkeurig." @@ -611,7 +859,7 @@ msgid "Cura Project 3MF file" msgstr "Cura-project 3MF-bestand" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Upgrades selecteren" @@ -631,18 +879,73 @@ msgctxt "@action" msgid "Level build plate" msgstr "Platform kalibreren" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:247 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Buitenwand" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Binnenwanden" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Skin" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Vulling" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Supportvulling" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Verbindingsstructuur" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support" +msgstr "Supportstructuur" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Beweging" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Intrekkingen" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Other" +msgstr "Overig(e)" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Vooraf geslicet bestand {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 msgctxt "@item:material" msgid "No material loaded" msgstr "Geen materiaal ingevoerd" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 msgctxt "@item:material" msgid "Unknown material" msgstr "Onbekend materiaal" @@ -652,35 +955,56 @@ msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Nieuwe locatie vinden voor objecten" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:85 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Kan binnen het werkvolume niet voor alle objecten een locatie vinden" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:417 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 msgctxt "@title:window" msgid "File Already Exists" msgstr "Het Bestand Bestaat Al" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:418 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 #, python-brace-format -msgctxt "@label" +msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "Het bestand {0} bestaat al. Weet u zeker dat u dit bestand wilt overschrijven?" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:801 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" msgid "Custom" msgstr "Aangepast" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:805 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 msgctxt "@label" msgid "Custom Material" msgstr "Aangepast materiaal" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +msgctxt "@info:status" +msgid "The selected material is incompatible with the selected machine or configuration." +msgstr "Het geselecteerde materiaal is niet compatibel met de geselecteerde machine of configuratie." + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:109 +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 +msgctxt "@info:title" +msgid "Incompatible Material" +msgstr "" + #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." msgid "The selected material diameter causes the material to become incompatible with the current printer." @@ -698,70 +1022,86 @@ msgstr "Maak wijzigen van de materiaaldiameter ongedaan." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "Kan het profiel niet exporteren als {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:148 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "Kan het profiel niet exporteren als {0}: de invoegtoepassing voor de schrijver heeft een fout gerapporteerd." +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "Het profiel is geëxporteerd als {0}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:199 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:208 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:242 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +msgctxt "@info:title" +msgid "Export Details" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:213 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:247 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "Kan het profiel niet importeren uit {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:210 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:246 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Het profiel {0} is geïmporteerd" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:249 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Het profiel {0} heeft een onbekend bestandstype of is beschadigd." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:267 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:272 msgctxt "@label" msgid "Custom profile" msgstr "Aangepast profiel" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:278 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Er ontbreekt een kwaliteitstype in het profiel." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:300 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Kan geen kwaliteitstype {0} vinden voor de huidige configuratie." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:95 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "De hoogte van het bouwvolume is verminderd wegens de waarde van de instelling “Printvolgorde”, om te voorkomen dat de rijbrug tegen geprinte modellen botst." +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 +msgctxt "@info:title" +msgid "Build Volume" +msgstr "" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Objecten verveelvoudigen en plaatsen" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "" + #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" msgid "Crash Report" @@ -773,41 +1113,44 @@ msgid "" "

A fatal exception has occurred that we could not recover from!

\n" "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" " " -msgstr "

Er is een fatale fout opgetreden die niet kan worden hersteld!

\n

Gebruik de onderstaande informatie om een bugrapport te plaatsen op http://github.com/Ultimaker/Cura/issues

\n " +msgstr "" +"

Er is een fatale fout opgetreden die niet kan worden hersteld!

\n" +"

Gebruik de onderstaande informatie om een bugrapport te plaatsen op http://github.com/Ultimaker/Cura/issues

\n" +" " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 msgctxt "@action:button" msgid "Open Web Page" msgstr "Webpagina openen" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:248 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Machines laden..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:610 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Scene instellen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:652 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Interface laden..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:815 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1285 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1295 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Er kan slechts één G-code-bestand tegelijkertijd worden geladen. Het importeren van {0} is overgeslagen" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1294 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1304 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" @@ -837,12 +1180,12 @@ msgstr "X (Breedte)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:286 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:838 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:839 msgctxt "@label" msgid "mm" msgstr "mm" @@ -932,128 +1275,72 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "Het hoogteverschil tussen de punt van de nozzle en het rijbrugsysteem (X- en Y-as). Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en het rijbrugsysteem te voorkomen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Aantal extruders" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 msgctxt "@tooltip" msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." msgstr "De nominale diameter van het filament dat wordt ondersteund door de printer. De exacte diameter wordt overschreven door het materiaal en/of het profiel." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:290 msgctxt "@label" msgid "Material diameter" msgstr "Materiaaldiameter" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:297 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:388 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 msgctxt "@label" msgid "Nozzle size" msgstr "Maat nozzle" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:315 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 msgctxt "@label" msgid "Start Gcode" msgstr "Start G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:325 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "G-code-opdrachten die aan het begin worden uitgevoerd." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:334 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:335 msgctxt "@label" msgid "End Gcode" msgstr "Eind G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:344 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "G-code-opdrachten die aan het eind worden uitgevoerd." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:376 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:377 msgctxt "@label" msgid "Nozzle Settings" msgstr "Nozzle-instellingen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:398 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 msgctxt "@label" msgid "Nozzle offset X" msgstr "Nozzle-offset X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:410 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Nozzle-offset Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:431 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "Start-G-code van extruder" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:449 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 msgctxt "@label" msgid "Extruder End Gcode" msgstr "Eind-G-code van extruder" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:20 -msgctxt "@title:window" -msgid "Doodle3D Settings" -msgstr "Doodle3D-instellingen" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:53 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 -msgctxt "@action:button" -msgid "Save" -msgstr "Opslaan" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:23 -msgctxt "@title:window" -msgid "Print to: %1" -msgstr "Printen naar: %1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:40 -msgctxt "@label" -msgid "Extruder Temperature: %1/%2°C" -msgstr "Extrudertemperatuur: %1/%2°C" - -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:45 -msgctxt "@label" -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-09-13 17:41+0200\n" -"PO-Revision-Date: 2016-09-29 13:44+0200\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:46 -msgctxt "@label" -msgid "Bed Temperature: %1/%2°C" -msgstr "Printbedtemperatuur: %1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:64 -msgctxt "@label" -msgid "%1" -msgstr "%1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:82 -msgctxt "@action:button" -msgid "Print" -msgstr "Printen" - #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" msgid "Changelog" @@ -1062,9 +1349,10 @@ msgstr "Wijzigingenlogboek" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:55 #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:446 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:306 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:78 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:125 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 @@ -1118,30 +1406,38 @@ msgid "Unknown error code: %1" msgstr "Onbekende foutcode: %1" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:55 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Verbinding Maken met Printer in het Netwerk" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:65 msgctxt "@label" msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "Als u rechtstreeks via het netwerk wilt printen naar de printer, moet u ervoor zorgen dat de printer met een netwerkkabel is verbonden met het netwerk of moet u verbinding maken met de printer via het wifi-netwerk. Als u geen verbinding maakt tussen Cura en de printer, kunt u een USB-station gebruiken om g-code-bestanden naar de printer over te zetten.\n\nSelecteer uw printer in de onderstaande lijst:" +msgstr "" +"Als u rechtstreeks via het netwerk wilt printen naar de printer, moet u ervoor zorgen dat de printer met een netwerkkabel is verbonden met het netwerk of moet u verbinding maken met de printer via het wifi-netwerk. Als u geen verbinding maakt tussen Cura en de printer, kunt u een USB-station gebruiken om g-code-bestanden naar de printer over te zetten.\n" +"\n" +"Selecteer uw printer in de onderstaande lijst:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 msgctxt "@action:button" msgid "Add" msgstr "Toevoegen" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:85 msgctxt "@action:button" msgid "Edit" msgstr "Bewerken" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 @@ -1150,87 +1446,210 @@ msgid "Remove" msgstr "Verwijderen" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:33 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:104 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:35 msgctxt "@action:button" msgid "Refresh" msgstr "Vernieuwen" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:196 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:196 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Raadpleeg de handleiding voor probleemoplossing bij printen via het netwerk als uw printer niet in de lijst wordt vermeld" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:223 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:223 msgctxt "@label" msgid "Type" msgstr "Type" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 msgctxt "@label" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:238 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:238 msgctxt "@label" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:241 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:241 msgctxt "@label" msgid "Unknown" msgstr "Onbekend" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:254 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:254 msgctxt "@label" msgid "Firmware version" msgstr "Firmwareversie" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:266 msgctxt "@label" msgid "Address" msgstr "Adres" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "De printer op dit adres heeft nog niet gereageerd." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Verbinden" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 msgctxt "@title:window" msgid "Printer Address" msgstr "Printeradres" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Voer het IP-adres of de hostnaam van de printer in het netwerk in." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 msgctxt "@action:button" msgid "Ok" msgstr "OK" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:37 msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Verbinding maken met een printer" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:116 msgctxt "@info:tooltip" msgid "Load the configuration of the printer into Cura" msgstr "De configuratie van de printer in Cura laden" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:117 msgctxt "@action:button" msgid "Activate Configuration" msgstr "Configuratie Activeren" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Printen" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 +msgctxt "@label:status" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 +msgctxt "@label:status" +msgid "Reserved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 +msgctxt "@label:status" +msgid "Finished" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 +msgctxt "@label:status" +msgid "Preparing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 +msgctxt "@label:status" +msgid "Available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 +msgctxt "@label" +msgid "Completed on: " +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 +msgctxt "@label" +msgid "Clear build plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 +msgctxt "@label" +msgid "Preparing to print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 +msgctxt "@label" +msgid "PRINTER GROUP" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 +msgctxt "@title" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 +msgctxt "@label" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 +msgctxt "@label" +msgid "Queued" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 +msgctxt "@label:title" +msgid "Printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 +msgctxt "@action:button" +msgid "View printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1319,67 +1738,62 @@ msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Actieve scripts voor nabewerking wijzigen" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:71 -msgctxt "@label" -msgid "View Mode: Layers" -msgstr "Weergavemodus: lagen" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:88 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 msgctxt "@label" msgid "Color scheme" msgstr "Kleurenschema" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:102 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:91 msgctxt "@label:listbox" msgid "Material Color" msgstr "Materiaalkleur" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:106 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:95 msgctxt "@label:listbox" msgid "Line Type" msgstr "Lijntype" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:144 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 msgctxt "@label" msgid "Compatibility Mode" msgstr "Compatibiliteitsmodus" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:210 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 msgctxt "@label" msgid "Show Travels" msgstr "Bewegingen weergeven" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 msgctxt "@label" msgid "Show Helpers" msgstr "Helpers weergeven" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 msgctxt "@label" msgid "Show Shell" msgstr "Shell weergeven" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:234 msgctxt "@label" msgid "Show Infill" msgstr "Vulling weergeven" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:264 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:283 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Alleen bovenlagen weergegeven" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:273 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:292 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "5 gedetailleerde lagen bovenaan weergeven" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:284 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:303 msgctxt "@label" msgid "Top / Bottom" msgstr "Boven-/onderkant" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:288 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 msgctxt "@label" msgid "Inner Wall" msgstr "Binnenwand" @@ -1454,23 +1868,23 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Effenen" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:157 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 msgctxt "@action:button" msgid "Select settings" msgstr "Instellingen selecteren" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:197 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Instellingen Selecteren om Dit Model Aan te Passen" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:221 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filteren..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:245 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 msgctxt "@label:checkbox" msgid "Show all" msgstr "Alles weergeven" @@ -1607,25 +2021,43 @@ msgctxt "@title:window" msgid "Find & Update plugins" msgstr "Invoegtoepassingen zoeken en bijwerken" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:27 msgctxt "@label" msgid "Here you can find a list of Third Party plugins." msgstr "Hier vindt u een lijst met invoegtoepassingen van derden." -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:143 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 msgctxt "@action:button" msgid "Upgrade" msgstr "Upgrade" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 msgctxt "@action:button" msgid "Installed" msgstr "Geïnstalleerd" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 +msgctxt "@title:window" +msgid "Plugin License Agreement" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 +msgctxt "@label" +msgid "" +" plugin contains a license.\n" +"You need to accept this license to install this plugin.\n" +"Do you agree with the terms below?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" -msgid "Download" -msgstr "Downloaden" +msgid "Accept" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" +msgstr "" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -1801,71 +2233,71 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "Alles is in orde! De controle is voltooid." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Niet met een printer verbonden" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:91 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "Printer accepteert geen opdrachten" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "In onderhoud. Controleer de printer" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Verbinding met de printer is verbroken" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Printen..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Gepauzeerd" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Voorbereiden..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Verwijder de print" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 msgctxt "@label:" msgid "Resume" msgstr "Hervatten" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Pause" msgstr "Pauzeren" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:271 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 msgctxt "@label:" msgid "Abort Print" msgstr "Printen Afbreken" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 msgctxt "@window:title" msgid "Abort print" msgstr "Printen afbreken" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:283 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Weet u zeker dat u het printen wilt afbreken?" @@ -1880,7 +2312,9 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "U hebt enkele profielinstellingen aangepast.\nWilt u deze instellingen behouden of verwijderen?" +msgstr "" +"U hebt enkele profielinstellingen aangepast.\n" +"Wilt u deze instellingen behouden of verwijderen?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -1898,19 +2332,19 @@ msgid "Customized" msgstr "Aangepast" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Altijd vragen" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:587 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Verwijderen en nooit meer vragen" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:588 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Behouden en nooit meer vragen" @@ -2051,7 +2485,7 @@ msgid "Unit" msgstr "Eenheid" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 msgctxt "@title:tab" msgid "General" msgstr "Algemeen" @@ -2066,223 +2500,223 @@ msgctxt "@label" msgid "Language:" msgstr "Taal:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 msgctxt "@label" msgid "Currency:" msgstr "Valuta:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 msgctxt "@label" msgid "Theme:" msgstr "Thema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "U moet de toepassing opnieuw starten voordat deze wijzigingen van kracht worden." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:289 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Automatisch slicen bij wijzigen van instellingen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Automatisch slicen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Gedrag kijkvenster" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Geef niet-ondersteunde gedeelten van het model een rode markering. Zonder ondersteuning zullen deze gedeelten niet goed worden geprint." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Overhang weergeven" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Verplaatst de camera zodanig dat wanneer een model wordt geselecteerd, het model in het midden van het beeld wordt weergegeven" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:347 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Camera centreren wanneer een item wordt geselecteerd" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Moet het standaard zoomgedrag van Cura worden omgekeerd?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Keer de richting van de camerazoom om." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Moet het zoomen in de richting van de muis gebeuren?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Zoomen in de richting van de muis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Moeten modellen op het platform zodanig worden verplaatst dat ze elkaar niet meer doorsnijden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:382 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Modellen gescheiden houden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Moeten modellen in het printgebied omlaag worden gebracht zodat ze het platform raken?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Modellen automatisch op het platform laten vallen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Toon het waarschuwingsbericht in de G-code-lezer." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Waarschuwingsbericht in de G-code-lezer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Moet de laag in de compatibiliteitsmodus worden geforceerd?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Compatibiliteitsmodus voor laagweergave forceren (opnieuw opstarten vereist)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 msgctxt "@label" msgid "Opening and saving files" msgstr "Bestanden openen en opslaan" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Moeten modellen worden geschaald naar het werkvolume als ze te groot zijn?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:462 msgctxt "@option:check" msgid "Scale large models" msgstr "Grote modellen schalen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Een model wordt mogelijk extreem klein weergegeven als de eenheden bijvoorbeeld in meters zijn in plaats van in millimeters. Moeten dergelijke modellen worden opgeschaald?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:469 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Extreem kleine modellen schalen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Moet er automatisch een op de printernaam gebaseerde voorvoegsel aan de naam van de printtaak worden toegevoegd?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Machinevoorvoegsel toevoegen aan taaknaam" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Dient er een samenvatting te worden weergegeven wanneer een projectbestand wordt opgeslagen?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:496 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Dialoogvenster voor samenvatting weergeven tijdens het opslaan van een project" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Standaardgedrag tijdens het openen van een projectbestand" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:513 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Standaardgedrag tijdens het openen van een projectbestand: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:526 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 msgctxt "@option:openProject" msgid "Always ask" msgstr "Altijd vragen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Altijd als project openen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:528 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always import models" msgstr "Altijd modellen importeren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:564 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Wanneer u wijzigingen hebt aangebracht aan een profiel en naar een ander profiel wisselt, wordt een dialoogvenster weergegeven waarin u wordt gevraagd of u de aanpassingen wilt behouden. U kunt ook een standaardgedrag kiezen en het dialoogvenster nooit meer laten weergeven." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@label" msgid "Override Profile" msgstr "Profiel overschrijven" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:622 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 msgctxt "@label" msgid "Privacy" msgstr "Privacy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Moet Cura op updates controleren wanneer het programma wordt gestart?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:634 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Bij starten op updates controleren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Mogen anonieme gegevens over uw print naar Ultimaker worden verzonden? Opmerking: er worden geen modellen, IP-adressen of andere persoonlijk identificeerbare gegevens verzonden of opgeslagen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(Anonieme) printgegevens verzenden" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:441 msgctxt "@title:tab" msgid "Printers" msgstr "Printers" @@ -2332,7 +2766,7 @@ msgid "Waiting for a printjob" msgstr "Wachten op een printtaak" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 msgctxt "@title:tab" msgid "Profiles" msgstr "Profielen" @@ -2430,7 +2864,7 @@ msgid "Export Profile" msgstr "Profiel exporteren" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 msgctxt "@title:tab" msgid "Materials" msgstr "Materialen" @@ -2462,14 +2896,14 @@ msgid "Import Material" msgstr "Materiaal Importeren" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "Kon materiaal %1 niet importeren: %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "Materiaal %1 is geïmporteerd" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2478,17 +2912,17 @@ msgid "Export Material" msgstr "Materiaal Exporteren" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "Exporteren van materiaal naar %1 is mislukt: %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "Materiaal is geëxporteerd naar %1" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:822 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 msgctxt "@title:window" msgid "Add Printer" msgstr "Printer Toevoegen" @@ -2503,71 +2937,6 @@ msgctxt "@action:button" msgid "Add Printer" msgstr "Printer Toevoegen" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:166 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Buitenwand" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:167 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Binnenwanden" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:168 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Skin" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:169 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Vulling" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:170 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Supportvulling" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:171 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Verbindingsstructuur" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:172 -msgctxt "@tooltip" -msgid "Support" -msgstr "Supportstructuur" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:173 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Beweging" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:174 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Intrekkingen" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:175 -msgctxt "@tooltip" -msgid "Other" -msgstr "Overig(e)" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:217 -msgctxt "@label" -msgid "00h 00min" -msgstr "00u 00min" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:270 -msgctxt "@label" -msgid "%1 m / ~ %2 g / ~ %4 %3" -msgstr "%1 m / ~ %2 g / ~ %4 %3" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:275 -msgctxt "@label" -msgid "%1 m / ~ %2 g" -msgstr "%1 m / ~ %2 g" - #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -2583,7 +2952,9 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "Cura is ontwikkeld door Ultimaker B.V. in samenwerking met de community.\nCura is er trots op gebruik te maken van de volgende opensourceprojecten:" +msgstr "" +"Cura is ontwikkeld door Ultimaker B.V. in samenwerking met de community.\n" +"Cura is er trots op gebruik te maken van de volgende opensourceprojecten:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -2675,32 +3046,48 @@ msgctxt "@label" msgid "SVG icons" msgstr "SVG-pictogrammen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +msgctxt "@label" +msgid "Profile:" +msgstr "Profiel:" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Sommige waarden voor instellingen/overschrijvingen zijn anders dan de waarden die in het profiel zijn opgeslagen.\n" +"\n" +"Klik om het profielbeheer te openen." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" msgid "Search..." msgstr "Zoeken..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Waarde naar alle extruders kopiëren" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:405 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Deze instelling verbergen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Deze instelling verbergen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:419 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Deze instelling zichtbaar houden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:438 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Zichtbaarheid van instelling configureren..." @@ -2711,7 +3098,10 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Een aantal verborgen instellingen gebruiken andere waarden dan hun normale berekende waarde.\n\nKlik om deze instellingen zichtbaar te maken." +msgstr "" +"Een aantal verborgen instellingen gebruiken andere waarden dan hun normale berekende waarde.\n" +"\n" +"Klik om deze instellingen zichtbaar te maken." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 msgctxt "@label Header for list of settings." @@ -2739,7 +3129,10 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Deze instelling heeft een andere waarde dan in het profiel.\n\nKlik om de waarde van het profiel te herstellen." +msgstr "" +"Deze instelling heeft een andere waarde dan in het profiel.\n" +"\n" +"Klik om de waarde van het profiel te herstellen." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 msgctxt "@label" @@ -2747,26 +3140,56 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Deze instelling wordt normaliter berekend, maar is nu ingesteld op een absolute waarde.\n\nKlik om de berekende waarde te herstellen." +msgstr "" +"Deze instelling wordt normaliter berekend, maar is nu ingesteld op een absolute waarde.\n" +"\n" +"Klik om de berekende waarde te herstellen." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Instelling voor Printen" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "Instelling voor printen uitgeschakeld\nG-code-bestanden kunnen niet worden aangepast" +msgstr "" +"Instelling voor printen uitgeschakeld\n" +"G-code-bestanden kunnen niet worden aangepast" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 +msgctxt "@label" +msgid "00h 00min" +msgstr "00u 00min" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +msgctxt "@tooltip" +msgid "Time information" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 +msgctxt "@description" +msgid "Print time" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +msgctxt "@label" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 +msgctxt "@label" +msgid "%1m / ~ %2g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" msgid "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." msgstr "Aanbevolen instellingen voor printen

Print met de aanbevolen instellingen voor de geselecteerde printer en kwaliteit, en het geselecteerde materiaal." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:460 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:481 msgctxt "@tooltip" msgid "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." msgstr "Aangepaste instellingen voor printen

Print met uiterst precieze controle over elk detail van het slice-proces." @@ -2816,81 +3239,87 @@ msgid "No printer connected" msgstr "Er is geen printer aangesloten" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" -msgid "Hotend" -msgstr "Hotend" +msgid "Extruder" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:119 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 +msgctxt "@tooltip" +msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "De huidige temperatuur van deze extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "De kleur van het materiaal in deze extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Het materiaal in deze extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "De nozzle die in deze extruder geplaatst is." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:249 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 msgctxt "@label" msgid "Build plate" msgstr "Platform" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:278 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "De doeltemperatuur van het verwarmde bed. Het bed wordt verwarmd of afgekoeld totdat deze temperatuur bereikt is. Als deze waarde ingesteld is op 0, wordt de verwarming van het bed uitgeschakeld." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:310 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:343 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "De huidige temperatuur van het verwarmde bed." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:422 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "De temperatuur waarnaar het bed moet worden voorverwarmd." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Annuleren" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button" msgid "Pre-heat" msgstr "Voorverwarmen" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:610 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Verwarm het bed voordat u gaat printen. U kunt doorgaan met het aanpassen van uw print terwijl het bed wordt verwarmd. Zo hoeft u niet te wachten totdat het bed opgewarmd is wanneer u gereed bent om te printen." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:677 msgctxt "@label" msgid "Active print" msgstr "Actieve print" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:648 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 msgctxt "@label" msgid "Job Name" msgstr "Taaknaam" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 msgctxt "@label" msgid "Printing Time" msgstr "Printtijd" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:660 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 msgctxt "@label" msgid "Estimated time left" msgstr "Geschatte resterende tijd" @@ -3081,53 +3510,53 @@ msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Zichtbaarheid Instelling Configureren..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Laad een 3D-model" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Gereed om te slicen" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Slicen..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Gereed voor %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Kan Niet Slicen" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Slicen is niet beschikbaar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Voorbereiden" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Annuleren" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:288 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Actief Uitvoerapparaat Selecteren" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 msgctxt "@title:window" msgid "Open file(s)" msgstr "Bestand(en) openen" @@ -3219,42 +3648,37 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Help" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 msgctxt "@action:button" msgid "Open File" msgstr "Bestand Openen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:428 -msgctxt "@action:button" -msgid "View Mode" -msgstr "Weergavemodus" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "Settings" msgstr "Instellingen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 msgctxt "@title:window" msgid "New project" msgstr "Nieuw project" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:532 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "Weet u zeker dat u een nieuw project wilt starten? Hiermee wordt het platform leeggemaakt en worden eventuele niet-opgeslagen instellingen verwijderd." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:750 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:694 msgctxt "@window:title" msgid "Install Plugin" msgstr "Invoegtoepassing installeren" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:757 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 msgctxt "@title:window" msgid "Open File(s)" msgstr "Bestand(en) openen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:760 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Binnen de door u geselecteerde bestanden zijn een of meer G-code-bestanden aangetroffen. U kunt maximaal één G-code-bestand tegelijk openen. Selecteer maximaal één bestand als u dit wilt openen als G-code-bestand." @@ -3279,102 +3703,87 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Bij opnieuw opslaan projectsamenvatting niet weergeven" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 +msgctxt "@action:button" +msgid "Save" +msgstr "Opslaan" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 msgctxt "@title:tab" msgid "Prepare" msgstr "Voorbereiden" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" -msgid "Print" -msgstr "Printen" +msgid "Monitor" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +msgctxt "@label" +msgid "Layer Height" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +msgctxt "@label" +msgid "Print Speed" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +msgctxt "@label" +msgid "Slower" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +msgctxt "@label" +msgid "Faster" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" msgid "Infill" msgstr "Vulling" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "0%" -msgstr "0%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:199 -msgctxt "@label" -msgid "Empty infill will leave your model hollow with low strength." -msgstr "Zonder vulling blijft uw model hol en heeft deze weinig sterkte." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:203 -msgctxt "@label" -msgid "20%" -msgstr "20%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:210 -msgctxt "@label" -msgid "Light (20%) infill will give your model an average strength." -msgstr "Met lichte vulling (20%) krijgt uw model een gemiddelde sterkte." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:214 -msgctxt "@label" -msgid "50%" -msgstr "50%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:221 -msgctxt "@label" -msgid "Dense (50%) infill will give your model an above average strength." -msgstr "Met een dichte vulling (50%) krijgt uw model een bovengemiddelde sterkte." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:225 -msgctxt "@label" -msgid "100%" -msgstr "100%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:232 -msgctxt "@label" -msgid "Solid (100%) infill will make your model completely solid." -msgstr "Met solide vulling (100%) is uw model volledig massief." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:236 -msgctxt "@label" -msgid "Gradual" -msgstr "Geleidelijk" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:244 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Met geleidelijke vulling neemt de hoeveelheid vulling naar boven toe." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:267 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 +msgctxt "@label" +msgid "Enable gradual" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Generate Support" msgstr "Support genereren" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Genereer structuren om delen van het model met overhang te ondersteunen. Zonder deze structuren zakken dergelijke delen in tijdens het printen." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:718 msgctxt "@label" msgid "Support Extruder" msgstr "Extruder voor supportstructuur" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:391 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Selecteren welke extruder voor support wordt gebruikt. Deze optie zorgt ervoor dat onder het model ondersteuning wordt geprint, om te voorkomen dat dit doorzakt of dat er midden in de lucht moet worden geprint." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:796 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Hechting aan platform" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:462 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Het printen van een brim of raft inschakelen. Deze optie zorgt ervoor dat er extra materiaal rondom of onder het object wordt neergelegd, dat er naderhand eenvoudig kan worden afgesneden." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:515 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:883 msgctxt "@label" msgid "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides" msgstr "Hebt u hulp nodig om betere prints te krijgen?
Lees de Ultimaker Troubleshooting Guides (Handleiding voor probleemoplossing)" @@ -3411,30 +3820,21 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Engine-logboek" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:193 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 msgctxt "@label" msgid "Material" msgstr "Materiaal" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:236 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +msgctxt "@label" +msgid "Check material compatibility" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Klik om de materiaalcompatibiliteit te controleren op Ultimaker.com." -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:325 -msgctxt "@label" -msgid "Profile:" -msgstr "Profiel:" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "Sommige waarden voor instellingen/overschrijvingen zijn anders dan de waarden die in het profiel zijn opgeslagen.\n\nKlik om het profielbeheer te openen." - #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -3485,6 +3885,16 @@ msgctxt "name" msgid "God Mode" msgstr "Godmodus" +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +msgstr "" + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "" + #: ChangeLogPlugin/plugin.json msgctxt "description" msgid "Shows changes since latest checked version." @@ -3515,16 +3925,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB-printen" -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing X3G files" -msgstr "Biedt ondersteuning voor het schrijven van X3G-bestanden." - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3G Writer" -msgstr "X3G-schrijver" - #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -3545,6 +3945,21 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3-netwerkverbinding" +#: CuraPrintClusterUpload/plugin.json +msgctxt "name" +msgid "UM3 Network Connection (Cluster)" +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "" + #: CuraSolidWorksPlugin/plugin.json msgctxt "description" msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" @@ -3635,6 +4050,16 @@ msgctxt "name" msgid "Version Upgrade 2.5 to 2.6" msgstr "Versie-upgrade van 2.5 naar 2.6." +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -3775,6 +4200,208 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura-profiellezer" +#~ msgctxt "@item:inlistbox" +#~ msgid "X-Ray" +#~ msgstr "Röntgen" + +#~ msgctxt "@label" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@info:whatsthis" +#~ msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +#~ msgstr "Accepteert G-code en verzendt deze code via WiFi naar een Doodle3D WiFi-Box." + +#~ msgctxt "@item:inmenu" +#~ msgid "Doodle3D printing" +#~ msgstr "Doodle3D-printen" + +#~ msgctxt "@action:button" +#~ msgid "Print with Doodle3D" +#~ msgstr "Printen via Doodle3D" + +#~ msgctxt "@info:tooltip" +#~ msgid "Print with " +#~ msgstr "Printen via" + +#~ msgctxt "@title:menu" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Enable Scan devices..." +#~ msgstr "Scanners inschakelen..." + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G-bestand" + +#~ msgctxt "@info:progress" +#~ msgid "Saving to Removable Drive {0}" +#~ msgstr "Opslaan op Verwisselbaar Station {0}" + +#~ msgctxt "@info:status" +#~ msgid "Could not save to {0}: {1}" +#~ msgstr "Kan niet opslaan als {0}: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" +#~ msgstr "Houd er rekening mee dat u het SolidWorks-bestand handmatig opnieuw moet openen. Het opnieuw laden van het bestand zal geen effect hebben." + +#~ msgctxt "@item:inlistbox" +#~ msgid "Layers" +#~ msgstr "Lagen" + +#~ msgid "Browse plugins" +#~ msgstr "Vind invoegtoepassingen" + +#~ msgctxt "@item:inmenu" +#~ msgid "Solid" +#~ msgstr "Solide" + +#~ msgctxt "@label" +#~ msgid "The file {0} already exists. Are you sure you want to overwrite it?" +#~ msgstr "Het bestand {0} bestaat al. Weet u zeker dat u dit bestand wilt overschrijven?" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: {1}" +#~ msgstr "Kan het profiel niet exporteren als {0}: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: Writer plugin reported failure." +#~ msgstr "Kan het profiel niet exporteren als {0}: de invoegtoepassing voor de schrijver heeft een fout gerapporteerd." + +#~ msgctxt "@info:status" +#~ msgid "Exported profile to {0}" +#~ msgstr "Het profiel is geëxporteerd als {0}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Kan het profiel niet importeren uit {0}: {1}" + +#~ msgctxt "@title:window" +#~ msgid "Doodle3D Settings" +#~ msgstr "Doodle3D-instellingen" + +#~ msgctxt "@title:window" +#~ msgid "Print to: %1" +#~ msgstr "Printen naar: %1" + +#~ msgctxt "@label" +#~ msgid "Extruder Temperature: %1/%2°C" +#~ msgstr "Extrudertemperatuur: %1/%2°C" + +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#~ msgctxt "@label" +#~ msgid "" +#~ msgstr "" +#~ "Project-Id-Version: PACKAGE VERSION\n" +#~ "Report-Msgid-Bugs-To: \n" +#~ "POT-Creation-Date: 2016-09-13 17:41+0200\n" +#~ "PO-Revision-Date: 2016-09-29 13:44+0200\n" +#~ "Last-Translator: FULL NAME \n" +#~ "Language-Team: LANGUAGE \n" +#~ "Language: \n" +#~ "MIME-Version: 1.0\n" +#~ "Content-Type: text/plain; charset=UTF-8\n" +#~ "Content-Transfer-Encoding: 8bit\n" + +#~ msgctxt "@label" +#~ msgid "Bed Temperature: %1/%2°C" +#~ msgstr "Printbedtemperatuur: %1/%2°C" + +#~ msgctxt "@label" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "@label" +#~ msgid "View Mode: Layers" +#~ msgstr "Weergavemodus: lagen" + +#~ msgctxt "@info:status" +#~ msgid "Could not import material %1: %2" +#~ msgstr "Kon materiaal %1 niet importeren: %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully imported material %1" +#~ msgstr "Materiaal %1 is geïmporteerd" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export material to %1: %2" +#~ msgstr "Exporteren van materiaal naar %1 is mislukt: %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully exported material to %1" +#~ msgstr "Materiaal is geëxporteerd naar %1" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g / ~ %4 %3" +#~ msgstr "%1 m / ~ %2 g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g" +#~ msgstr "%1 m / ~ %2 g" + +#~ msgctxt "@label" +#~ msgid "Hotend" +#~ msgstr "Hotend" + +#~ msgctxt "@action:button" +#~ msgid "View Mode" +#~ msgstr "Weergavemodus" + +#~ msgctxt "@title:tab" +#~ msgid "Print" +#~ msgstr "Printen" + +#~ msgctxt "@label" +#~ msgid "0%" +#~ msgstr "0%" + +#~ msgctxt "@label" +#~ msgid "Empty infill will leave your model hollow with low strength." +#~ msgstr "Zonder vulling blijft uw model hol en heeft deze weinig sterkte." + +#~ msgctxt "@label" +#~ msgid "20%" +#~ msgstr "20%" + +#~ msgctxt "@label" +#~ msgid "Light (20%) infill will give your model an average strength." +#~ msgstr "Met lichte vulling (20%) krijgt uw model een gemiddelde sterkte." + +#~ msgctxt "@label" +#~ msgid "50%" +#~ msgstr "50%" + +#~ msgctxt "@label" +#~ msgid "Dense (50%) infill will give your model an above average strength." +#~ msgstr "Met een dichte vulling (50%) krijgt uw model een bovengemiddelde sterkte." + +#~ msgctxt "@label" +#~ msgid "100%" +#~ msgstr "100%" + +#~ msgctxt "@label" +#~ msgid "Solid (100%) infill will make your model completely solid." +#~ msgstr "Met solide vulling (100%) is uw model volledig massief." + +#~ msgctxt "@label" +#~ msgid "Gradual" +#~ msgstr "Geleidelijk" + +#~ msgctxt "description" +#~ msgid "Provides support for writing X3G files" +#~ msgstr "Biedt ondersteuning voor het schrijven van X3G-bestanden." + +#~ msgctxt "name" +#~ msgid "X3G Writer" +#~ msgstr "X3G-schrijver" + #~ msgctxt "@label" #~ msgid "Machine Settings action" #~ msgstr "Actie machine-instellingen" @@ -4355,4 +4982,4 @@ msgstr "Cura-profiellezer" #~ msgctxt "@label:" #~ msgid "Print Again" -#~ msgstr "Opnieuw Printen" \ No newline at end of file +#~ msgstr "Opnieuw Printen" diff --git a/resources/i18n/nl_NL/fdmextruder.def.json.po b/resources/i18n/nl_NL/fdmextruder.def.json.po index a72e57782c..ff8dd364d4 100644 --- a/resources/i18n/nl_NL/fdmextruder.def.json.po +++ b/resources/i18n/nl_NL/fdmextruder.def.json.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -194,4 +194,4 @@ msgstr "Y-positie voor Primen Extruder" #: fdmextruder.def.json msgctxt "extruder_prime_pos_y description" msgid "The Y coordinate of the position where the nozzle primes at the start of printing." -msgstr "De Y-coördinaat van de positie waar filament in de nozzle wordt geprimed aan het begin van het printen." \ No newline at end of file +msgstr "De Y-coördinaat van de positie waar filament in de nozzle wordt geprimed aan het begin van het printen." diff --git a/resources/i18n/nl_NL/fdmprinter.def.json.po b/resources/i18n/nl_NL/fdmprinter.def.json.po index 2fed3af7cd..1c566ae3c1 100644 --- a/resources/i18n/nl_NL/fdmprinter.def.json.po +++ b/resources/i18n/nl_NL/fdmprinter.def.json.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -755,16 +755,6 @@ msgctxt "shell description" msgid "Shell" msgstr "Shell" -#: fdmprinter.def.json -msgctxt "wall_extruder_nr label" -msgid "Wall Extruder" -msgstr "Wandextruder" - -#: fdmprinter.def.json -msgctxt "wall_extruder_nr description" -msgid "The extruder train used for printing the walls. This is used in multi-extrusion." -msgstr "De extruder train die voor het printen van de wanden wordt gebruikt. Deze wordt gebruikt in meervoudige doorvoer." - #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" msgid "Outer Wall Extruder" @@ -1125,6 +1115,11 @@ msgctxt "z_seam_type option random" msgid "Random" msgstr "Willekeurig" +#: fdmprinter.def.json +msgctxt "z_seam_type option sharpest_corner" +msgid "Sharpest Corner" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1145,6 +1140,36 @@ msgctxt "z_seam_y description" msgid "The Y coordinate of the position near where to start printing each part in a layer." msgstr "De Y-coördinaat van de positie nabij waar met het printen van elk deel van een laag moet worden begonnen." +#: fdmprinter.def.json +msgctxt "z_seam_corner label" +msgid "Seam Corner Preference" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner description" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_none" +msgid "None" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_inner" +msgid "Hide Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_outer" +msgid "Expose Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_any" +msgid "Hide or Expose Seam" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1165,6 +1190,16 @@ msgctxt "skin_no_small_gaps_heuristic description" msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." msgstr "Wanneer het model kleine verticale gaten heeft, kan er circa 5% berekeningstijd extra worden besteed aan het genereren van de boven- en onderskin in deze kleine ruimten. Indien u dit wenst, schakelt u de instelling uit." +#: fdmprinter.def.json +msgctxt "skin_outline_count label" +msgid "Extra Skin Wall Count" +msgstr "Aantal Extra Wandlijnen Rond Skin" + +#: fdmprinter.def.json +msgctxt "skin_outline_count description" +msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." +msgstr "Vervang het buitenste gedeelte van het patroon boven-/onderkant door een aantal concentrische lijnen. Het gebruik van 1 of 2 lijnen verbetert daken die op vulmateriaal beginnen." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1212,8 +1247,8 @@ msgstr "Vulpatroon" #: fdmprinter.def.json msgctxt "infill_pattern description" -msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "Het patroon van het vulmateriaal van de print. De lijn- en zigzagvulling veranderen per vullaag van richting, waardoor wordt bespaard op materiaalkosten. De raster-, driekhoeks-, kubische, viervlaks- en concentrische patronen worden elke laag volledig geprint. Kubische en viervlaksvulling veranderen elke laag voor een meer gelijke krachtsverdeling in elke richting." +msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1242,8 +1277,13 @@ msgstr "Kubische onderverdeling" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" -msgid "Tetrahedral" -msgstr "Viervlaks" +msgid "Octet" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option quarter_cubic" +msgid "Quarter Cubic" +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1260,6 +1300,26 @@ msgctxt "infill_pattern option zigzag" msgid "Zig Zag" msgstr "Zigzag" +#: fdmprinter.def.json +msgctxt "infill_pattern option cross" +msgid "Cross" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross_3d" +msgid "Cross 3D" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill label" +msgid "Connect Infill Lines" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill description" +msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" @@ -1381,34 +1441,34 @@ msgid "Don't generate areas of infill smaller than this (use skin instead)." msgstr "Genereer geen gebieden met vulling die kleiner zijn dan deze waarde (gebruik in plaats daarvan een skin)." #: fdmprinter.def.json -msgctxt "expand_skins_into_infill label" -msgid "Expand Skins Into Infill" -msgstr "Skin uitbreiden naar vulling" +msgctxt "skin_preshrink label" +msgid "Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_skins_into_infill description" -msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." -msgstr "Breid skingebieden van de boven- en/of onderskin van een plat oppervlak uit. Standaard stopt de skin onder de wandlijnen rond de vulling. Bij een lage dichtheid van de vulling kunnen hierdoor echter gaten ontstaan. Met deze instelling worden de skins uitgebreid tot onder de wandlijnen zodat de vulling op de volgende laag op de skin rust." +msgctxt "skin_preshrink description" +msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins label" -msgid "Expand Top Skins Into Infill" -msgstr "Bovenskin uitbreiden naar vulling" +msgctxt "top_skin_preshrink label" +msgid "Top Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins description" -msgid "Expand the top skin areas (areas with air above) so that they support infill above." -msgstr "Breid bovenskingebieden (gebieden waarboven zich lucht bevindt) uit, zodat deze de bovenliggende vulling ondersteunen." +msgctxt "top_skin_preshrink description" +msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins label" -msgid "Expand Bottom Skins Into Infill" -msgstr "Onderskin uitbreiden naar vulling" +msgctxt "bottom_skin_preshrink label" +msgid "Bottom Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins description" -msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." -msgstr "Breid onderskingebieden (gebieden waaronder zich lucht bevindt) uit, zodat deze worden verankerd door de boven- en onderliggende vullagen." +msgctxt "bottom_skin_preshrink description" +msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1417,8 +1477,28 @@ msgstr "Uitbreidingsafstand van skin" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" -msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." -msgstr "De afstand waarmee de skin wordt uitgebreid in de vulling. De standaardafstand is voldoende om het gat tussen de vullijnen te overbruggen. Bij een lage vuldichtheid wordt hiermee voorkomen dat gaten ontstaan in de skin waar deze bij de wand komt. Een kleinere afstand is over het algemeen voldoende." +msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance label" +msgid "Top Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance description" +msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance label" +msgid "Bottom Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance description" +msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." +msgstr "" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -1800,16 +1880,6 @@ msgctxt "speed_topbottom description" msgid "The speed at which top/bottom layers are printed." msgstr "De snelheid waarmee boven-/onderlagen worden geprint." -#: fdmprinter.def.json -msgctxt "speed_ironing label" -msgid "Ironing Speed" -msgstr "Strijksnelheid" - -#: fdmprinter.def.json -msgctxt "speed_ironing description" -msgid "The speed at which to pass over the top surface." -msgstr "De snelheid waarmee over de bovenste laag wordt bewogen." - #: fdmprinter.def.json msgctxt "speed_support label" msgid "Support Speed" @@ -2040,16 +2110,6 @@ msgctxt "acceleration_topbottom description" msgid "The acceleration with which top/bottom layers are printed." msgstr "De acceleratie tijdens het printen van de boven-/onderlagen." -#: fdmprinter.def.json -msgctxt "acceleration_ironing label" -msgid "Ironing Acceleration" -msgstr "Strijkacceleratie" - -#: fdmprinter.def.json -msgctxt "acceleration_ironing description" -msgid "The acceleration with which ironing is performed." -msgstr "De acceleratie tijdens het strijken." - #: fdmprinter.def.json msgctxt "acceleration_support label" msgid "Support Acceleration" @@ -2240,16 +2300,6 @@ msgctxt "jerk_topbottom description" msgid "The maximum instantaneous velocity change with which top/bottom layers are printed." msgstr "De maximale onmiddellijke snelheidsverandering tijdens het printen van de boven-/onderlagen." -#: fdmprinter.def.json -msgctxt "jerk_ironing label" -msgid "Ironing Jerk" -msgstr "Schok strijken" - -#: fdmprinter.def.json -msgctxt "jerk_ironing description" -msgid "The maximum instantaneous velocity change while performing ironing." -msgstr "De maximale onmiddellijke snelheidsverandering tijdens het strijken." - #: fdmprinter.def.json msgctxt "jerk_support label" msgid "Support Jerk" @@ -2765,6 +2815,11 @@ msgctxt "support_pattern option zigzag" msgid "Zig Zag" msgstr "Zigzag" +#: fdmprinter.def.json +msgctxt "support_pattern option cross" +msgid "Cross" +msgstr "" + #: fdmprinter.def.json msgctxt "support_connect_zigzags label" msgid "Connect Support ZigZags" @@ -2777,23 +2832,33 @@ msgstr "Verbind de zigzaglijnen. Hiermee versterkt u de zigzag-supportstructuur. #: fdmprinter.def.json msgctxt "support_skip_some_zags label" -msgid "Skip Some ZigZags Connections" -msgstr "Enkele Zigzagverbindingen overslaan" +msgid "Break Up Support In Chunks" +msgstr "" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" -msgid "Skip some ZigZags connections to make the support structure easier to break." -msgstr "Sla enkele Zigzagverbindingen over zodat de supportstructuur gemakkelijker kan worden verbroken." +msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm description" +msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count label" -msgid "ZigZag Connection Skip Count" -msgstr "Aantal overslaan Zigzagverbinding" +msgid "Support Chunk Line Count" +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" -msgid "Skip one in every N connection lines to make the support structure easier to break." -msgstr "Sla elke N verbindingslijnen één lijn over zodat de supportstructuur gemakkelijker kan worden verbroken." +msgid "Skip one in every N connection lines to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3335,7 +3400,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance, multiple skirt lines will extend outwards from this distance." -msgstr "De horizontale afstand tussen de skirt en de eerste laag van de print.\nDit is de minimumafstand; als u meerdere skirtlijnen print, worden deze vanaf deze afstand naar buiten geprint." +msgstr "" +"De horizontale afstand tussen de skirt en de eerste laag van de print.\n" +"Dit is de minimumafstand; als u meerdere skirtlijnen print, worden deze vanaf deze afstand naar buiten geprint." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3377,6 +3444,26 @@ msgctxt "brim_outside_only description" msgid "Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much." msgstr "Print de brim alleen aan de buitenkant van het model. Hiermee verkleint u de hoeveelheid brim die u achteraf moet verwijderen, zonder dat dit de hechting aan het printbed te zeer vermindert." +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 label" +msgid "Initial Layer Z Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 description" +msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers label" +msgid "Z Offset Taper Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers description" +msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3387,6 +3474,16 @@ msgctxt "raft_margin description" msgid "If the raft is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print." msgstr "Als de raft is ingeschakeld, is dit het extra raftgebied rond het model dat ook van een raft wordt voorzien. Als u deze marge vergroot, krijgt u een stevigere raft, maar gebruikt u ook meer materiaal en houdt u minder ruimte over voor de print." +#: fdmprinter.def.json +msgctxt "raft_smoothing label" +msgid "Raft Smoothing" +msgstr "" + +#: fdmprinter.def.json +msgctxt "raft_smoothing description" +msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_airgap label" msgid "Raft Air Gap" @@ -4062,6 +4159,16 @@ msgctxt "smooth_spiralized_contours description" msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." msgstr "Maak de gespiraliseerde contouren vlak om de zichtbaarheid van de Z-naad te verminderen (de Z-naad mag in de print nauwelijks zichtbaar zijn, maar is nog wel zichtbaar in de laagweergave). Houd er rekening mee dat fijne oppervlaktedetails worden vervaagd door het effenen." +#: fdmprinter.def.json +msgctxt "relative_extrusion label" +msgid "Relative Extrusion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "relative_extrusion description" +msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." +msgstr "" + #: fdmprinter.def.json msgctxt "experimental label" msgid "Experimental" @@ -4072,6 +4179,16 @@ msgctxt "experimental description" msgid "experimental!" msgstr "experimenteel!" +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "" + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4182,16 +4299,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "De snelheid waarmee de printkop tijdens coasting beweegt ten opzichte van de snelheid voor het doorvoerpad. Hiervoor wordt een waarde van iets minder dan 100% aangeraden, omdat de druk in de bowden-buis zakt tijdens een coasting-beweging." -#: fdmprinter.def.json -msgctxt "skin_outline_count label" -msgid "Extra Skin Wall Count" -msgstr "Aantal Extra Wandlijnen Rond Skin" - -#: fdmprinter.def.json -msgctxt "skin_outline_count description" -msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." -msgstr "Vervang het buitenste gedeelte van het patroon boven-/onderkant door een aantal concentrische lijnen. Het gebruik van 1 of 2 lijnen verbetert daken die op vulmateriaal beginnen." - #: fdmprinter.def.json msgctxt "skin_alternate_rotation label" msgid "Alternate Skin Rotation" @@ -4202,6 +4309,26 @@ msgctxt "skin_alternate_rotation description" msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." msgstr "Wissel de richting af waarin de boven-/onderlagen worden geprint. Normaal worden deze alleen diagonaal geprint. Met deze instelling worden de alleen-X- en alleen-Y-richtingen toegevoegd." +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size label" +msgid "Cross 3D Pocket Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size description" +msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly label" +msgid "Alternate Cross 3D Pockets" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly description" +msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." +msgstr "" + #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" msgid "Spaghetti Infill" @@ -4502,7 +4629,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "De afstand van een opwaartse beweging waarbij de doorvoersnelheid wordt gehalveerd.\nHierdoor ontstaat een betere hechting aan voorgaande lagen, zonder dat het materiaal in die lagen te zeer wordt verwarmd. Alleen van toepassing op Draadprinten." +msgstr "" +"De afstand van een opwaartse beweging waarbij de doorvoersnelheid wordt gehalveerd.\n" +"Hierdoor ontstaat een betere hechting aan voorgaande lagen, zonder dat het materiaal in die lagen te zeer wordt verwarmd. Alleen van toepassing op Draadprinten." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -4619,6 +4748,16 @@ msgctxt "ironing_enabled description" msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." msgstr "Ga nog een extra keer over de bovenlaag, echter zonder materiaal door te voeren. Hierdoor wordt de kunststof aan de bovenkant verder gesmolten, waardoor een gladder oppervlak wordt verkregen." +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer label" +msgid "Iron Only Highest Layer" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer description" +msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." +msgstr "" + #: fdmprinter.def.json msgctxt "ironing_pattern label" msgid "Ironing Pattern" @@ -4669,6 +4808,36 @@ msgctxt "ironing_inset description" msgid "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print." msgstr "De afstand die moet worden aangehouden tot de randen van het model. Strijken tot de rand van het raster kan leiden tot een gerafelde rand van de print." +#: fdmprinter.def.json +msgctxt "speed_ironing label" +msgid "Ironing Speed" +msgstr "Strijksnelheid" + +#: fdmprinter.def.json +msgctxt "speed_ironing description" +msgid "The speed at which to pass over the top surface." +msgstr "De snelheid waarmee over de bovenste laag wordt bewogen." + +#: fdmprinter.def.json +msgctxt "acceleration_ironing label" +msgid "Ironing Acceleration" +msgstr "Strijkacceleratie" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing description" +msgid "The acceleration with which ironing is performed." +msgstr "De acceleratie tijdens het strijken." + +#: fdmprinter.def.json +msgctxt "jerk_ironing label" +msgid "Ironing Jerk" +msgstr "Schok strijken" + +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "De maximale onmiddellijke snelheidsverandering tijdens het strijken." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4729,6 +4898,66 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Omzettingsmatrix die moet worden toegepast op het model wanneer dit wordt geladen vanuit een bestand." +#~ msgctxt "wall_extruder_nr label" +#~ msgid "Wall Extruder" +#~ msgstr "Wandextruder" + +#~ msgctxt "wall_extruder_nr description" +#~ msgid "The extruder train used for printing the walls. This is used in multi-extrusion." +#~ msgstr "De extruder train die voor het printen van de wanden wordt gebruikt. Deze wordt gebruikt in meervoudige doorvoer." + +#~ msgctxt "infill_pattern description" +#~ msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." +#~ msgstr "Het patroon van het vulmateriaal van de print. De lijn- en zigzagvulling veranderen per vullaag van richting, waardoor wordt bespaard op materiaalkosten. De raster-, driekhoeks-, kubische, viervlaks- en concentrische patronen worden elke laag volledig geprint. Kubische en viervlaksvulling veranderen elke laag voor een meer gelijke krachtsverdeling in elke richting." + +#~ msgctxt "infill_pattern option tetrahedral" +#~ msgid "Tetrahedral" +#~ msgstr "Viervlaks" + +#~ msgctxt "expand_skins_into_infill label" +#~ msgid "Expand Skins Into Infill" +#~ msgstr "Skin uitbreiden naar vulling" + +#~ msgctxt "expand_skins_into_infill description" +#~ msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." +#~ msgstr "Breid skingebieden van de boven- en/of onderskin van een plat oppervlak uit. Standaard stopt de skin onder de wandlijnen rond de vulling. Bij een lage dichtheid van de vulling kunnen hierdoor echter gaten ontstaan. Met deze instelling worden de skins uitgebreid tot onder de wandlijnen zodat de vulling op de volgende laag op de skin rust." + +#~ msgctxt "expand_upper_skins label" +#~ msgid "Expand Top Skins Into Infill" +#~ msgstr "Bovenskin uitbreiden naar vulling" + +#~ msgctxt "expand_upper_skins description" +#~ msgid "Expand the top skin areas (areas with air above) so that they support infill above." +#~ msgstr "Breid bovenskingebieden (gebieden waarboven zich lucht bevindt) uit, zodat deze de bovenliggende vulling ondersteunen." + +#~ msgctxt "expand_lower_skins label" +#~ msgid "Expand Bottom Skins Into Infill" +#~ msgstr "Onderskin uitbreiden naar vulling" + +#~ msgctxt "expand_lower_skins description" +#~ msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." +#~ msgstr "Breid onderskingebieden (gebieden waaronder zich lucht bevindt) uit, zodat deze worden verankerd door de boven- en onderliggende vullagen." + +#~ msgctxt "expand_skins_expand_distance description" +#~ msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." +#~ msgstr "De afstand waarmee de skin wordt uitgebreid in de vulling. De standaardafstand is voldoende om het gat tussen de vullijnen te overbruggen. Bij een lage vuldichtheid wordt hiermee voorkomen dat gaten ontstaan in de skin waar deze bij de wand komt. Een kleinere afstand is over het algemeen voldoende." + +#~ msgctxt "support_skip_some_zags label" +#~ msgid "Skip Some ZigZags Connections" +#~ msgstr "Enkele Zigzagverbindingen overslaan" + +#~ msgctxt "support_skip_some_zags description" +#~ msgid "Skip some ZigZags connections to make the support structure easier to break." +#~ msgstr "Sla enkele Zigzagverbindingen over zodat de supportstructuur gemakkelijker kan worden verbroken." + +#~ msgctxt "support_zag_skip_count label" +#~ msgid "ZigZag Connection Skip Count" +#~ msgstr "Aantal overslaan Zigzagverbinding" + +#~ msgctxt "support_zag_skip_count description" +#~ msgid "Skip one in every N connection lines to make the support structure easier to break." +#~ msgstr "Sla elke N verbindingslijnen één lijn over zodat de supportstructuur gemakkelijker kan worden verbroken." + #~ msgctxt "machine_show_variants label" #~ msgid "Show machine variants" #~ msgstr "Machinevarianten tonen" @@ -4891,4 +5120,4 @@ msgstr "Omzettingsmatrix die moet worden toegepast op het model wanneer dit word #~ msgctxt "multiple_mesh_overlap label" #~ msgid "Dual Extrusion Overlap" -#~ msgstr "Overlap Dubbele Doorvoer" \ No newline at end of file +#~ msgstr "Overlap Dubbele Doorvoer" diff --git a/resources/i18n/pl_PL/cura.po b/resources/i18n/pl_PL/cura.po index 32a3866129..81f7afb752 100644 --- a/resources/i18n/pl_PL/cura.po +++ b/resources/i18n/pl_PL/cura.po @@ -18,15 +18,15 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.0.3\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:28 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" msgstr "Ustawienia drukarki" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" -msgid "X-Ray" -msgstr "Prześwietlenie" +msgid "X-Ray view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -38,40 +38,69 @@ msgctxt "@item:inlistbox" msgid "GCode File" msgstr "Plik GCode" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:13 -msgctxt "@label" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:17 -msgctxt "@info:whatsthis" -msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "Akceptuje G-code i wysyła je przez WiFi do Doodle3D WiFi-Box." - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:36 -msgctxt "@item:inmenu" -msgid "Doodle3D printing" -msgstr "Drukowanie Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:37 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" -msgid "Print with Doodle3D" -msgstr "Drukuj z Doodle3D" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:38 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 +msgctxt "@properties:tooltip" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Anuluj" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 +msgctxt "@info:status" +msgid "Sending data to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 +msgctxt "@info:status" +msgid "Unable to send data to Doodle3D Connect. Is another job still active?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 +msgctxt "@info:status" +msgid "File sent to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect.." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" -msgid "Print with " -msgstr "Drukuj z " - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:49 -msgctxt "@title:menu" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:50 -msgctxt "@item:inlistbox" -msgid "Enable Scan devices..." -msgstr "Włącz skanowanie urządzeń ..." +msgid "Open the Doodle3D Connect web interface" +msgstr "" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -113,16 +142,36 @@ msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Nie można uruchomić nowego zadania, ponieważ drukarka jest zajęta lub nie jest podłączona." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +msgctxt "@info:title" +msgid "Print Details" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "Ta drukarka nie obsługuje drukowania USB, ponieważ korzysta z UltiGCode." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Nie można uruchomić nowego zadania, ponieważ drukarka nie obsługuje drukowania poprzez USB." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:909 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 +msgctxt "@info:title" +msgid "Warning" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." @@ -134,10 +183,10 @@ msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "Nie znaleziono oprogramowania wymaganego dla drukarki w %s." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:14 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "Plik X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +msgctxt "@info:title" +msgid "Printer Firmware" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -152,47 +201,79 @@ msgstr "Zapisz na dysk wymienny {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 #, python-brace-format -msgctxt "@info:progress" +msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "Zapisywanie na dysk wymienny {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +msgctxt "@info:title" +msgid "Saving" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "Nie udało się zapisać do {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format -msgctxt "@info:status" -msgid "Saved to Removable Drive {0} as {1}" -msgstr "Zapisano na dysk wymienny {0} jako {1}" +msgctxt "@info:status Don't translate the tag {device}!" +msgid "Could not find a file name when trying to write to {device}." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -msgctxt "@action:button" -msgid "Eject" -msgstr "Wyjmij" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -#, python-brace-format -msgctxt "@action" -msgid "Eject removable device {0}" -msgstr "Wyjmij urządzenie wymienne {0}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:138 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #, python-brace-format msgctxt "@info:status" msgid "Could not save to removable drive {0}: {1}" msgstr "Nie można zapisać na wymiennym dysku {0}: {1}" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:148 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:675 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:683 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:145 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:152 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 +msgctxt "@info:title" +msgid "Error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +#, python-brace-format +msgctxt "@info:status" +msgid "Saved to Removable Drive {0} as {1}" +msgstr "Zapisano na dysk wymienny {0} jako {1}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +msgctxt "@info:title" +msgid "File Saved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +msgctxt "@action:button" +msgid "Eject" +msgstr "Wyjmij" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +#, python-brace-format +msgctxt "@action" +msgid "Eject removable device {0}" +msgstr "Wyjmij urządzenie wymienne {0}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 #, python-brace-format msgctxt "@info:status" msgid "Ejected {0}. You can now safely remove the drive." msgstr "Wyjęto {0}. Możesz teraz bezpiecznie wyjąć dysk." -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:150 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 +msgctxt "@info:title" +msgid "Safely Remove Hardware" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format msgctxt "@info:status" msgid "Failed to eject {0}. Another program may be using the drive." @@ -203,219 +284,351 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Dysk wymienny" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:49 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Drukuj przez sieć" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Drukuj przez sieć" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:156 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 msgctxt "@info:status" msgid "Access to the printer requested. Please approve the request on the printer" msgstr "Wymagany dostęp do drukarki. Proszę zatwierdzić prośbę na drukarce" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +msgctxt "@info:title" +msgid "Connection status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 msgctxt "@info:status" msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:468 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@action:button" msgid "Retry" msgstr "Spróbuj ponownie" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Prześlij ponownie żądanie dostępu" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Dostęp do drukarki został zaakceptowany" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 msgctxt "@info:status" msgid "No access to print with this printer. Unable to send print job." msgstr "Brak dostępu do tej drukarki. Nie można wysłać zadania drukowania." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:28 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:72 msgctxt "@action:button" msgid "Request Access" msgstr "Poproś o dostęp" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:71 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "Wyślij żądanie dostępu do drukarki" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:358 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:375 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 msgctxt "@info:status" msgid "Connected over the network. Please approve the access request on the printer." msgstr "Połączono przez sieć. Proszę zatwierdzić żądanie dostępu na drukarce." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:365 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:382 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 msgctxt "@info:status" msgid "Connected over the network." msgstr "Połączono przez sieć." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:378 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "Połączono przez sieć. Brak dostępu do sterowania drukarką." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:383 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:400 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 msgctxt "@info:status" msgid "Access request was denied on the printer." msgstr "Żądanie dostępu zostało odrzucone na drukarce." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:386 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:403 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Access request failed due to a timeout." msgstr "Żądanie dostępu nie powiodło się z powodu limitu czasu." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:450 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:467 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "The connection with the network was lost." msgstr "Połączenie z siecią zostało utracone." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:481 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 msgctxt "@info:status" msgid "The connection with the printer was lost. Check your printer to see if it is connected." msgstr "Połączenie z drukarką zostało utracone. Sprawdź, czy drukarka jest podłączona." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:630 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:649 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 #, python-format msgctxt "@info:status" msgid "Unable to start a new print job, printer is busy. Current printer status is %s." msgstr "Nie można uruchomić nowego zadania, drukarka jest zajęta. Aktualny stan drukarki to %s." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:654 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Nie można uruchomić nowego zadania. Brak Printcore w slocie {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:661 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:682 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Nie można uruchomić nowego zadania. Brak materiału w slocie {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:670 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Nie ma wystarczającej ilości materiału na szpuli {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:680 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Różne PrintCore (Cura: {0}, Drukarka: {1}) wybrane dla ekstrudera {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:694 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:716 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@label" msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Różne materiały (Cura: {0}, Drukarka: {1}) wybrane do dzyszy {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:724 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "PrintCore {0} nie jest poprawnie skalibrowany. Kalibracja XY musi zostać wykonana na tej drukarce." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:707 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:729 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "Czy na pewno chcesz drukować z wybraną konfiguracją?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:730 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 msgctxt "@label" msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "Występuje niezgodność między konfiguracją lub kalibracją drukarki a Curą. Aby uzyskać najlepszy rezultat, zawsze tnij dla Print core'ów i materiałów włożonych do drukarki." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:736 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Niedopasowana konfiguracja" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:815 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Wysyłanie danych do drukarki" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:816 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:46 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:137 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Anuluj" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +msgctxt "@info:title" +msgid "Sending Data" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:884 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Nie można wysłać danych do drukarki. Czy inna praca jest nadal aktywna?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1018 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1050 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Przerywanie drukowania..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1024 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Wydruk został przerwany. Sprawdź drukarkę" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1030 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Wstrzymywanie drukowania..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1032 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Wznawianie drukowania ..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1175 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synchronizuj się z drukarką" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1177 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "Czy chcesz używać bieżącej konfiguracji drukarki w programie Cura?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1220 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 msgctxt "@label" msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "PrintCore'y i/lub materiały w drukarce różnią się od tych w obecnym projekcie. Dla najlepszego rezultatu, zawsze tnij dla wybranych PrinCore'ów i materiałów, które są umieszczone w drukarce." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.py:19 msgctxt "@action" msgid "Connect via Network" msgstr "Połącz przez sieć" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:172 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#, python-brace-format +msgctxt "Count is number of printers." +msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#, python-brace-format +msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#, python-brace-format +msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +msgctxt "@info:status" +msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#, python-brace-format +msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Pobierz" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +msgctxt "@info" +msgid "Could not access update information." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" msgstr "Wystąpił błąd podczas otwierania pliku SolidWorks! Proszę sprawdź, czy możesz otworzyć plik SolidWorks bez żadnych problemów!" @@ -434,17 +647,12 @@ msgstr "Plik złożenia SolidWorks" msgid "Configure" msgstr "Konfiguruj" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:129 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 #, python-format msgctxt "@info:status" msgid "Error while starting %s!" msgstr "Błąd podczas rozpoczynania %s!" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:207 -msgctxt "@info:status" -msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" -msgstr "Pamiętaj, że musisz ponownie otworzyć plik SolidWorks ręcznie! Przeładowanie modelu nie będzie działać!" - #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 msgid "Modify G-Code" msgstr "Modyfikuj G-Code" @@ -454,7 +662,12 @@ msgctxt "@info" msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." msgstr "Cura zbiera anonimowe statystyki cięcia. Możesz wyłączyć to w ustawieniach." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:44 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 +msgctxt "@info:title" +msgid "Collecting Data" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" msgid "Dismiss" msgstr "Anuluj" @@ -472,14 +685,19 @@ msgstr "Pliki G-code" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" -msgid "Layers" -msgstr "Warstwy" +msgid "Layer view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura nie wyświetla dokładnie warstw kiedy drukowanie przewodowe jest włączone" +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 +msgctxt "@info:title" +msgid "Layer View" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -505,24 +723,31 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Obraz GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:281 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "Wybrany materiał jest niezgodny z wybranym urządzeniem lub konfiguracją." +msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:308 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:307 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 +msgctxt "@info:title" +msgid "Unable to slice" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Nie można pociąć z bieżącymi ustawieniami. Następujące ustawienia mają błędy: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:317 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:306 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Nie można pociąć, ponieważ wieża czyszcząca lub jej pozycja(e) są niewłaściwe." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:325 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:315 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Nic do pocięcia, ponieważ żaden z modeli nie pasuje do obszaru roboczego. Proszę o przeskalowanie lub obrócenie modelu, żeby pasował." @@ -533,6 +758,11 @@ msgctxt "@info:status" msgid "Processing Layers" msgstr "Przetwarzanie warstw" +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +msgctxt "@info:title" +msgid "Information" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" msgid "Per Model Settings" @@ -544,13 +774,13 @@ msgid "Configure Per Model Settings" msgstr "Konfiguruj ustawienia każdego modelu z osobna" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:475 msgctxt "@title:tab" msgid "Recommended" msgstr "Zalecane" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:459 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 msgctxt "@title:tab" msgid "Custom" msgstr "Niestandardowe" @@ -561,25 +791,37 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Plik 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:122 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1050 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 msgctxt "@label" msgid "Nozzle" msgstr "Dysza" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 +msgctxt "@menuitem" msgid "Browse plugins" -msgstr "Przeglądaj wtyczki" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:120 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +msgctxt "@info:tile" +msgid "Warning" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" msgid "Plugin browser" msgstr "Przeglądarka wtyczek" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" -msgid "Solid" -msgstr "Bryła" +msgid "Solid view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -591,7 +833,13 @@ msgctxt "@info:status" msgid "Parsing G-code" msgstr "Analizowanie G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:365 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Przed wysłaniem pliku upewnij się, że G-code jest odpowiedni do konfiguracji drukarki. Przedstawienie G-kodu może nie być dokładne." @@ -613,7 +861,7 @@ msgid "Cura Project 3MF file" msgstr "Plik Cura Project 3MF" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Wybierz aktualizacje" @@ -633,18 +881,73 @@ msgctxt "@action" msgid "Level build plate" msgstr "Wypoziomuj stół" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:247 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Zewnętrzna ściana" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Ściany wewnętrzne" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Skin" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Wypełnienie" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Wypełnienie podpór" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Łączenie podpory" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support" +msgstr "Podpory " + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Ruch jałowy" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Retrakcja" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Other" +msgstr "Inny" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Plik pocięty wcześniej {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 msgctxt "@item:material" msgid "No material loaded" msgstr "Nie załadowano materiału" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 msgctxt "@item:material" msgid "Unknown material" msgstr "Nieznany materiał" @@ -654,35 +957,56 @@ msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Znajdowanie nowej lokalizacji obiektów" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:85 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Nie można znaleźć lokalizacji w obrębie obszaru roboczego dla wszystkich obiektów" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:417 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 msgctxt "@title:window" msgid "File Already Exists" msgstr "Plik już istnieje" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:418 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 #, python-brace-format -msgctxt "@label" +msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "Plik {0} już istnieje. Czy na pewno chcesz go nadpisać?" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:801 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" msgid "Custom" msgstr "Niestandardowy" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:805 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 msgctxt "@label" msgid "Custom Material" msgstr "Niestandardowy materiał" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +msgctxt "@info:status" +msgid "The selected material is incompatible with the selected machine or configuration." +msgstr "Wybrany materiał jest niezgodny z wybranym urządzeniem lub konfiguracją." + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:109 +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 +msgctxt "@info:title" +msgid "Incompatible Material" +msgstr "" + #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." msgid "The selected material diameter causes the material to become incompatible with the current printer." @@ -700,70 +1024,86 @@ msgstr "Cofnij zmianę średnicy materiału." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "Nie można wyeksportować profilu do {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:148 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "Nie można wyeksportować profilu do {0}: Wtyczka Cura zgłosiła błąd." +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "Wyeksportowano profil do {0}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:199 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:208 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:242 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +msgctxt "@info:title" +msgid "Export Details" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:213 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:247 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "Nie można zaimportować profilu z {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:210 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:246 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profil zaimportowany {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:249 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Profil {0} ma nieznany typ pliku lub jest uszkodzony." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:267 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:272 msgctxt "@label" msgid "Custom profile" msgstr "Niestandardowy profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:278 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Profilowi brakuje typu jakości." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:300 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Nie można znaleźć typu jakości {0} dla bieżącej konfiguracji." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:95 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "Wysokość obszaru roboczego została zmniejszona ze względu na wartość ustawienia Print Sequence (Sekwencja wydruku), aby zapobiec kolizji z wydrukowanymi modelami." +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 +msgctxt "@info:title" +msgid "Build Volume" +msgstr "" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Zwielokrotnienie i umieszczanie przedmiotów" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "" + #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" msgid "Crash Report" @@ -785,34 +1125,34 @@ msgctxt "@action:button" msgid "Open Web Page" msgstr "Otwórz stronę sieci Web" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:248 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Ładowanie drukarek..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:610 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Ustawianie sceny ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:652 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Ładowanie interfejsu ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:815 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1285 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1295 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Jednocześnie można załadować tylko jeden plik G-code. Pominięto importowanie {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1294 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1304 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" @@ -842,12 +1182,12 @@ msgstr "X (Szerokość)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:286 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:838 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:839 msgctxt "@label" msgid "mm" msgstr "mm" @@ -937,113 +1277,72 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "Różnica w wysokości pomiędzy końcówką dyszy i systemem suwnym (osie X i Y). Używane do unikania kolizji z poprzednimi wydrukami podczas drukowania \"Jeden na Raz\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Liczba ekstruderów" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 msgctxt "@tooltip" msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." msgstr "Nominalna średnica filamentu wspierana przez drukarkę. Dokładna średnica będzie nadpisana przez materiał i/lub profil." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:290 msgctxt "@label" msgid "Material diameter" msgstr "Średnica materiału" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:297 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:388 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 msgctxt "@label" msgid "Nozzle size" msgstr "Rozmiar dyszy" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:315 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 msgctxt "@label" msgid "Start Gcode" msgstr "Początk. Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:325 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "Komendy Gcode wykonywane na samym początku." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:334 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:335 msgctxt "@label" msgid "End Gcode" msgstr "Końcowy Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:344 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "Komendy Gcode wykonywane na samym początku." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:376 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:377 msgctxt "@label" msgid "Nozzle Settings" msgstr "Ustawienia dyszy" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:398 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 msgctxt "@label" msgid "Nozzle offset X" msgstr "Korekcja dyszy X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:410 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Korekcja dyszy Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:431 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "Początkowy Gcode ekstrudera" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:449 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 msgctxt "@label" msgid "Extruder End Gcode" msgstr "Końcowy Gcode ekstrudera" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:20 -msgctxt "@title:window" -msgid "Doodle3D Settings" -msgstr "Ustawienia Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:53 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 -msgctxt "@action:button" -msgid "Save" -msgstr "Zapisz" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:23 -msgctxt "@title:window" -msgid "Print to: %1" -msgstr "Drukuj do: %1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:40 -msgctxt "@label" -msgid "Extruder Temperature: %1/%2°C" -msgstr "Temperatura dyszy: %1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:45 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:46 -msgctxt "@label" -msgid "Bed Temperature: %1/%2°C" -msgstr "Temperatura stołu: %1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:64 -msgctxt "@label" -msgid "%1" -msgstr "%1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:82 -msgctxt "@action:button" -msgid "Print" -msgstr "Drukuj" - #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" msgid "Changelog" @@ -1052,9 +1351,10 @@ msgstr "Dziennik" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:55 #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:446 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:306 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:78 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:125 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 @@ -1108,11 +1408,13 @@ msgid "Unknown error code: %1" msgstr "Nieznany kod błędu: %1" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:55 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Połącz się z drukarką sieciową" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:65 msgctxt "@label" msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" @@ -1124,17 +1426,20 @@ msgstr "" "Wybierz drukarkę z poniższej listy:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 msgctxt "@action:button" msgid "Add" msgstr "Dodaj" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:85 msgctxt "@action:button" msgid "Edit" msgstr "Edycja" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 @@ -1143,87 +1448,210 @@ msgid "Remove" msgstr "Usunąć" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:33 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:104 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:35 msgctxt "@action:button" msgid "Refresh" msgstr "Odśwież" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:196 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:196 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Jeżeli twojej drukarki nie ma na liście, przeczytaj poradnik o problemach z drukowaniem przez sieć" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:223 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:223 msgctxt "@label" msgid "Type" msgstr "Rodzaj" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 msgctxt "@label" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:238 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:238 msgctxt "@label" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:241 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:241 msgctxt "@label" msgid "Unknown" msgstr "Nieznany" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:254 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:254 msgctxt "@label" msgid "Firmware version" msgstr "Wersja oprogramowania" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:266 msgctxt "@label" msgid "Address" msgstr "Adres" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Drukarka pod tym adresem jeszcze nie odpowiedziała." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Połącz" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 msgctxt "@title:window" msgid "Printer Address" msgstr "Adres drukarki" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Wpisz adres IP lub nazwę hosta drukarki w sieci." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 msgctxt "@action:button" msgid "Ok" msgstr "Ok" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:37 msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Podłącz do drukarki" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:116 msgctxt "@info:tooltip" msgid "Load the configuration of the printer into Cura" msgstr "Załaduj konfigurację drukarki do Cura" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:117 msgctxt "@action:button" msgid "Activate Configuration" msgstr "Uaktywnij konfigurację" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Drukuj" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 +msgctxt "@label:status" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 +msgctxt "@label:status" +msgid "Reserved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 +msgctxt "@label:status" +msgid "Finished" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 +msgctxt "@label:status" +msgid "Preparing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 +msgctxt "@label:status" +msgid "Available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 +msgctxt "@label" +msgid "Completed on: " +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 +msgctxt "@label" +msgid "Clear build plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 +msgctxt "@label" +msgid "Preparing to print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 +msgctxt "@label" +msgid "PRINTER GROUP" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 +msgctxt "@title" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 +msgctxt "@label" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 +msgctxt "@label" +msgid "Queued" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 +msgctxt "@label:title" +msgid "Printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 +msgctxt "@action:button" +msgid "View printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1312,67 +1740,62 @@ msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Zmień aktywne skrypty post-processingu" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:71 -msgctxt "@label" -msgid "View Mode: Layers" -msgstr "Tryb widoku: warstwy" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:88 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 msgctxt "@label" msgid "Color scheme" msgstr "Schemat kolorów" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:102 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:91 msgctxt "@label:listbox" msgid "Material Color" msgstr "Kolor materiału" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:106 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:95 msgctxt "@label:listbox" msgid "Line Type" msgstr "Rodzaj linii" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:144 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 msgctxt "@label" msgid "Compatibility Mode" msgstr "Tryb zgodności" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:210 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 msgctxt "@label" msgid "Show Travels" msgstr "Pokaż ruch jałowy" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 msgctxt "@label" msgid "Show Helpers" msgstr "Pokaż pomocnik" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 msgctxt "@label" msgid "Show Shell" msgstr "Pokaż powłokę" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:234 msgctxt "@label" msgid "Show Infill" msgstr "Pokaż wypełnienie" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:264 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:283 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Pokaż tylko najwyższe warstwy" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:273 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:292 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Pokaż 5 Szczegółowych Warstw" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:284 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:303 msgctxt "@label" msgid "Top / Bottom" msgstr "Góra/ Dół" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:288 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 msgctxt "@label" msgid "Inner Wall" msgstr "Wewnętrzna ściana" @@ -1447,23 +1870,23 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Wygładzanie" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:157 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 msgctxt "@action:button" msgid "Select settings" msgstr "Wybierz ustawienia" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:197 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Wybierz Ustawienia, aby dostosować ten model" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:221 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtr..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:245 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 msgctxt "@label:checkbox" msgid "Show all" msgstr "Pokaż wszystko" @@ -1600,25 +2023,43 @@ msgctxt "@title:window" msgid "Find & Update plugins" msgstr "Znajdź i Zaktualizuj Wtyczki" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:27 msgctxt "@label" msgid "Here you can find a list of Third Party plugins." msgstr "Tutaj możesz znaleźć listę wtyczek innych firm." -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:143 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 msgctxt "@action:button" msgid "Upgrade" msgstr "Ulepsz" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 msgctxt "@action:button" msgid "Installed" msgstr "Zainstalowane" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 +msgctxt "@title:window" +msgid "Plugin License Agreement" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 +msgctxt "@label" +msgid "" +" plugin contains a license.\n" +"You need to accept this license to install this plugin.\n" +"Do you agree with the terms below?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" -msgid "Download" -msgstr "Pobierz" +msgid "Accept" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" +msgstr "" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -1794,71 +2235,71 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "Wszystko w porządku! Skończono sprawdzenie." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Nie podłączono do drukarki" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:91 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "Drukarka nie akceptuje poleceń" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "W naprawie. Sprawdź drukarkę" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Utracone połączenie z drukarką" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Drukowanie..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Wstrzymano" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Przygotowywanie ..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Usuń wydruk" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 msgctxt "@label:" msgid "Resume" msgstr "Wznów" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Pause" msgstr "Wstrzymaj" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:271 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 msgctxt "@label:" msgid "Abort Print" msgstr "Przerwij wydruk" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 msgctxt "@window:title" msgid "Abort print" msgstr "Przerwij wydruk" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:283 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Czy na pewno chcesz przerwać drukowanie?" @@ -1893,19 +2334,19 @@ msgid "Customized" msgstr "Dostosowane" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Zawsze pytaj o to" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:587 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Odrzuć i nigdy nie pytaj" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:588 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Zachowaj i nigdy nie pytaj" @@ -2046,7 +2487,7 @@ msgid "Unit" msgstr "Jednostka" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 msgctxt "@title:tab" msgid "General" msgstr "Ogólny" @@ -2061,223 +2502,223 @@ msgctxt "@label" msgid "Language:" msgstr "Język:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 msgctxt "@label" msgid "Currency:" msgstr "Waluta:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 msgctxt "@label" msgid "Theme:" msgstr "Motyw:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Musisz zrestartować aplikację, aby te zmiany zaczęły obowiązywać." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:289 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Tnij automatycznie podczas zmiany ustawień." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Automatyczne Cięcie" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Zachowanie okna edycji" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Zaznacz nieobsługiwane obszary modelu na czerwono. Bez wsparcia te obszary nie będą drukowane prawidłowo." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Wyświetl zwis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Przenosi kamerę, aby model był w centrum widoku, gdy wybrano model" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:347 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Wyśrodkuj kamerę kiedy przedmiot jest zaznaczony" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Czy domyślne zachowanie zoomu powinno zostać odwrócone?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Odwróć kierunek zoomu kamery." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Czy przybliżanie powinno poruszać się w kierunku myszy?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Przybliżaj w kierunku myszy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Czy modele na platformie powinny być przenoszone w taki sposób, aby nie przecinały się?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:382 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Upewnij się, że modele są oddzielone" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Czy modele na platformie powinny być przesunięte w dół, aby dotknęły stołu roboczego?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Automatycznie upuść modele na stół roboczy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Pokaż komunikat ostrzegawczy w tekście G-code." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Komunikat ostrzegawczy w tekście G-code" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Czy warstwa powinna być wymuszona w trybie zgodności?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Wymuszenie widoku warstw w trybie zgodności (wymaga ponownego uruchomienia)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 msgctxt "@label" msgid "Opening and saving files" msgstr "Otwieranie i zapisywanie plików" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Czy modele powinny być skalowane do wielkości obszaru roboczego, jeśli są zbyt duże?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:462 msgctxt "@option:check" msgid "Scale large models" msgstr "Skaluj duże modele" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Model może wydawać się bardzo mały, jeśli jego jednostka jest na przykład w metrach, a nie w milimetrach. Czy takie modele powinny być skalowane?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:469 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Skaluj bardzo małe modele" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Czy przedrostek oparty na nazwie drukarki powinien być automatycznie dodawany do nazwy zadania?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Dodaj przedrostek maszyny do nazwy zadania" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Czy podsumowanie powinno być wyświetlane podczas zapisu projektu?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:496 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Pokaż okno podsumowania podczas zapisywaniu projektu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Domyślne zachowanie podczas otwierania pliku projektu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:513 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Domyślne zachowanie podczas otwierania pliku projektu: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:526 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 msgctxt "@option:openProject" msgid "Always ask" msgstr "Zawsze pytaj" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Zawsze otwieraj jako projekt" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:528 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always import models" msgstr "Zawsze importuj modele" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:564 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Kiedy dokonasz zmian w profilu i przełączysz się na inny, zostanie wyświetlone okno z pytaniem, czy chcesz zachować twoje zmiany, czy nie. Możesz też wybrać domyślne zachowanie, żeby to okno już nigdy nie było pokazywane." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@label" msgid "Override Profile" msgstr "Nadpisz profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:622 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 msgctxt "@label" msgid "Privacy" msgstr "Prywatność" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Czy Cura ma sprawdzać dostępność aktualizacji podczas uruchamiania programu?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:634 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Sprawdź, dostępność aktualizacji podczas uruchamiania" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Czy anonimowe dane na temat wydruku mają być wysyłane do Ultimaker? Uwaga. Żadne modele, adresy IP, ani żadne inne dane osobiste nie będą wysyłane i/lub przechowywane." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Wyślij (anonimowe) informacje o drukowaniu" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:441 msgctxt "@title:tab" msgid "Printers" msgstr "Drukarki" @@ -2327,7 +2768,7 @@ msgid "Waiting for a printjob" msgstr "Oczekiwanie na zadanie drukowania" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 msgctxt "@title:tab" msgid "Profiles" msgstr "Profile" @@ -2425,7 +2866,7 @@ msgid "Export Profile" msgstr "Eksportuj Profil" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 msgctxt "@title:tab" msgid "Materials" msgstr "Materiał" @@ -2457,14 +2898,14 @@ msgid "Import Material" msgstr "Importuj Materiał" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "Nie można zaimportować materiału %1: %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "Pomyślnie zaimportowano materiał %1" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2473,17 +2914,17 @@ msgid "Export Material" msgstr "Eksportuj Materiał" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "Nie udało się wyeksportować materiału do %1: %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "Udało się wyeksportować materiał do %1" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:822 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 msgctxt "@title:window" msgid "Add Printer" msgstr "Dodaj drukarkę" @@ -2498,71 +2939,6 @@ msgctxt "@action:button" msgid "Add Printer" msgstr "Dodaj drukarkę" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:166 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Zewnętrzna ściana" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:167 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Ściany wewnętrzne" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:168 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Skin" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:169 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Wypełnienie" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:170 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Wypełnienie podpór" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:171 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Łączenie podpory" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:172 -msgctxt "@tooltip" -msgid "Support" -msgstr "Podpory " - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:173 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Ruch jałowy" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:174 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Retrakcja" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:175 -msgctxt "@tooltip" -msgid "Other" -msgstr "Inny" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:217 -msgctxt "@label" -msgid "00h 00min" -msgstr "00h 00min" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:270 -msgctxt "@label" -msgid "%1 m / ~ %2 g / ~ %4 %3" -msgstr "%1 m / ~ %2 g / ~ %4 %3" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:275 -msgctxt "@label" -msgid "%1 m / ~ %2 g" -msgstr "%1 m / ~ %2 g" - #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -2672,32 +3048,48 @@ msgctxt "@label" msgid "SVG icons" msgstr "Ikony SVG" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +msgctxt "@label" +msgid "Profile:" +msgstr "Profil:" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Niektóre wartości ustawień różnią się od wartości zapisanych w profilu.\n" +"\n" +"Kliknij, aby otworzyć menedżer profili." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" msgid "Search..." msgstr "Szukanie..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Skopiuj wartość do wszystkich ekstruderów" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:405 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ukryj tę opcję" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Nie pokazuj tej opcji" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:419 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Pozostaw tę opcję widoczną" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:438 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Skonfiguruj widoczność ustawień..." @@ -2755,12 +3147,12 @@ msgstr "" "\n" "Kliknij, aby przywrócić wartość obliczoną." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Ustawienia druku" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" @@ -2769,12 +3161,37 @@ msgstr "" "Konfiguracja wydruku jest wyłączona\n" "Pliki G-code nie mogą zostać zmodyfikowane" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 +msgctxt "@label" +msgid "00h 00min" +msgstr "00h 00min" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +msgctxt "@tooltip" +msgid "Time information" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 +msgctxt "@description" +msgid "Print time" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +msgctxt "@label" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 +msgctxt "@label" +msgid "%1m / ~ %2g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" msgid "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." msgstr "Zalecana konfiguracja wydruku

Drukowanie z zalecanymi ustawieniami dla wybranej drukarki, materiału i jakości." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:460 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:481 msgctxt "@tooltip" msgid "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." msgstr "Niestandardowa konfiguracja wydruku

Drukowanie z precyzyjną kontrolą nad każdym elementem procesu cięcia." @@ -2824,81 +3241,87 @@ msgid "No printer connected" msgstr "Nie podłączono drukarki" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" -msgid "Hotend" -msgstr "Głowica" +msgid "Extruder" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:119 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 +msgctxt "@tooltip" +msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "Bieżąca temperatura głowicy drukującej." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Kolor materiału w tym ekstruderze." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Materiał w głowicy drukującej." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Dysza włożona do tego ekstrudera." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:249 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 msgctxt "@label" msgid "Build plate" msgstr "Stół roboczy" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:278 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "Temperatura docelowa podgrzewanego stołu. Stół rozgrzeje się lub schłodzi w kierunku tej temperatury. Jeśli ustawione jest 0, grzanie stołu jest wyłączone." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:310 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:343 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "Bieżąca temperatura podgrzewanego stołu." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:422 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "Temperatura do wstępnego podgrzewania stołu." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Anuluj" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button" msgid "Pre-heat" msgstr "Podgrzewanie wstępne" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:610 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Przed drukowaniem podgrzej stół. W dalszym ciągu można dostosowywać druk podczas nagrzewania, a nie będziesz musiał czekać na rozgrzanie stołu, gdy będziesz gotowy do drukowania." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:677 msgctxt "@label" msgid "Active print" msgstr "Aktywny wydruk" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:648 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 msgctxt "@label" msgid "Job Name" msgstr "Nazwa pracy" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 msgctxt "@label" msgid "Printing Time" msgstr "Czas druku" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:660 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 msgctxt "@label" msgid "Estimated time left" msgstr "Szacowany czas pozostały" @@ -3089,53 +3512,53 @@ msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Skonfiguruj widoczność ustawień ..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Proszę załaduj model 3D" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Gotowy do cięcia" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Cięcie..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Gotowy do %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Nie można pociąć" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Cięcie niedostępne" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Przygotuj" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Anuluj" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:288 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Wybierz aktywne urządzenie wyjściowe" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 msgctxt "@title:window" msgid "Open file(s)" msgstr "Otwórz plik(i)" @@ -3227,42 +3650,37 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Pomoc" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 msgctxt "@action:button" msgid "Open File" msgstr "Otwórz plik" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:428 -msgctxt "@action:button" -msgid "View Mode" -msgstr "Tryb podglądu" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "Settings" msgstr "Ustawienia" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 msgctxt "@title:window" msgid "New project" msgstr "Nowy projekt" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:532 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "Czy na pewno chcesz rozpocząć nowy projekt? Spowoduje to wyczyszczenie stołu i niezapisanych ustawień." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:750 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:694 msgctxt "@window:title" msgid "Install Plugin" msgstr "Zainstaluj Wtyczkę" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:757 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 msgctxt "@title:window" msgid "Open File(s)" msgstr "Otwórz plik(i)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:760 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Znaleziono jeden lub więcej plików G-code w wybranych plikach. Możesz otwierać tylko jeden plik G-code jednocześnie. Jeśli chcesz otworzyć plik G-code, proszę wybierz tylko jeden." @@ -3287,102 +3705,87 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Nie pokazuj podsumowania projektu podczas ponownego zapisywania" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 +msgctxt "@action:button" +msgid "Save" +msgstr "Zapisz" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 msgctxt "@title:tab" msgid "Prepare" msgstr "Przygotuj" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" -msgid "Print" -msgstr "Drukuj" +msgid "Monitor" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +msgctxt "@label" +msgid "Layer Height" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +msgctxt "@label" +msgid "Print Speed" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +msgctxt "@label" +msgid "Slower" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +msgctxt "@label" +msgid "Faster" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" msgid "Infill" msgstr "Wypełnienie" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "0%" -msgstr "0%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:199 -msgctxt "@label" -msgid "Empty infill will leave your model hollow with low strength." -msgstr "Puste wypełnienie pozostawi twój model pusty z niską wytrzymałością." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:203 -msgctxt "@label" -msgid "20%" -msgstr "20%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:210 -msgctxt "@label" -msgid "Light (20%) infill will give your model an average strength." -msgstr "Lekkie (20%) wypełnienie sprawi, że model będzie średniej wytrzymałości." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:214 -msgctxt "@label" -msgid "50%" -msgstr "50%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:221 -msgctxt "@label" -msgid "Dense (50%) infill will give your model an above average strength." -msgstr "Gęste wypełnienie (50%) da modelowi wyższą niż średnia wytrzymałość." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:225 -msgctxt "@label" -msgid "100%" -msgstr "100%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:232 -msgctxt "@label" -msgid "Solid (100%) infill will make your model completely solid." -msgstr "Pełne (100%) wypełnienie sprawi, że model będzie całkowicie wypełniony." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:236 -msgctxt "@label" -msgid "Gradual" -msgstr "Stopniowy" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:244 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Stopniowe wypełnienie stopniowo zwiększa ilość wypełnień w górę." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:267 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 +msgctxt "@label" +msgid "Enable gradual" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Generate Support" msgstr "Generuj podpory" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Generuje podpory wspierające części modelu, które mają zwis. Bez tych podpór takie części mogłyby spaść podczas drukowania." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:718 msgctxt "@label" msgid "Support Extruder" msgstr "Ekstruder od podpór" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:391 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Wybierz, który ekstruder ma służyć do drukowania podpór. Powoduje to tworzenie podpór poniżej modelu, aby zapobiec spadaniu lub drukowaniu modelu w powietrzu." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:796 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Popraw przycz. modelu" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:462 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Włącz drukowanie obrysu lub tratwy. Spowoduje to dodanie płaskiej powierzchni wokół lub pod Twoim obiektem, która jest łatwa do usunięcia po wydruku." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:515 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:883 msgctxt "@label" msgid "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides" msgstr "Potrzebujesz pomocy w ulepszaniu wydruków?
Przeczytaj instrukcje dotyczące rozwiązywania problemów" @@ -3419,33 +3822,21 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Dziennik silnika" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:193 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 msgctxt "@label" msgid "Material" msgstr "Materiał" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:236 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +msgctxt "@label" +msgid "Check material compatibility" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Kliknij, aby sprawdzić zgodność materiału na Ultimaker.com." -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:325 -msgctxt "@label" -msgid "Profile:" -msgstr "Profil:" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" -"Niektóre wartości ustawień różnią się od wartości zapisanych w profilu.\n" -"\n" -"Kliknij, aby otworzyć menedżer profili." - #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -3496,6 +3887,16 @@ msgctxt "name" msgid "God Mode" msgstr "Tryb Boga" +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +msgstr "" + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "" + #: ChangeLogPlugin/plugin.json msgctxt "description" msgid "Shows changes since latest checked version." @@ -3526,16 +3927,6 @@ msgctxt "name" msgid "USB printing" msgstr "Drukowanie USB" -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing X3G files" -msgstr "Zapewnia wsparcie w tworzeniu plików X3G" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3G Writer" -msgstr "X3G Writer" - #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -3556,6 +3947,21 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Połączenie Sieciowe UM3" +#: CuraPrintClusterUpload/plugin.json +msgctxt "name" +msgid "UM3 Network Connection (Cluster)" +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "" + #: CuraSolidWorksPlugin/plugin.json msgctxt "description" msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" @@ -3646,6 +4052,16 @@ msgctxt "name" msgid "Version Upgrade 2.5 to 2.6" msgstr "Ulepszenie Wersji z 2.5 do 2.6" +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -3786,6 +4202,189 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Czytnik Profili Cura" +#~ msgctxt "@item:inlistbox" +#~ msgid "X-Ray" +#~ msgstr "Prześwietlenie" + +#~ msgctxt "@label" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@info:whatsthis" +#~ msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +#~ msgstr "Akceptuje G-code i wysyła je przez WiFi do Doodle3D WiFi-Box." + +#~ msgctxt "@item:inmenu" +#~ msgid "Doodle3D printing" +#~ msgstr "Drukowanie Doodle3D" + +#~ msgctxt "@action:button" +#~ msgid "Print with Doodle3D" +#~ msgstr "Drukuj z Doodle3D" + +#~ msgctxt "@info:tooltip" +#~ msgid "Print with " +#~ msgstr "Drukuj z " + +#~ msgctxt "@title:menu" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Enable Scan devices..." +#~ msgstr "Włącz skanowanie urządzeń ..." + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "Plik X3G" + +#~ msgctxt "@info:progress" +#~ msgid "Saving to Removable Drive {0}" +#~ msgstr "Zapisywanie na dysk wymienny {0}" + +#~ msgctxt "@info:status" +#~ msgid "Could not save to {0}: {1}" +#~ msgstr "Nie udało się zapisać do {0}: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" +#~ msgstr "Pamiętaj, że musisz ponownie otworzyć plik SolidWorks ręcznie! Przeładowanie modelu nie będzie działać!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Layers" +#~ msgstr "Warstwy" + +#~ msgid "Browse plugins" +#~ msgstr "Przeglądaj wtyczki" + +#~ msgctxt "@item:inmenu" +#~ msgid "Solid" +#~ msgstr "Bryła" + +#~ msgctxt "@label" +#~ msgid "The file {0} already exists. Are you sure you want to overwrite it?" +#~ msgstr "Plik {0} już istnieje. Czy na pewno chcesz go nadpisać?" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: {1}" +#~ msgstr "Nie można wyeksportować profilu do {0}: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: Writer plugin reported failure." +#~ msgstr "Nie można wyeksportować profilu do {0}: Wtyczka Cura zgłosiła błąd." + +#~ msgctxt "@info:status" +#~ msgid "Exported profile to {0}" +#~ msgstr "Wyeksportowano profil do {0}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Nie można zaimportować profilu z {0}: {1}" + +#~ msgctxt "@title:window" +#~ msgid "Doodle3D Settings" +#~ msgstr "Ustawienia Doodle3D" + +#~ msgctxt "@title:window" +#~ msgid "Print to: %1" +#~ msgstr "Drukuj do: %1" + +#~ msgctxt "@label" +#~ msgid "Extruder Temperature: %1/%2°C" +#~ msgstr "Temperatura dyszy: %1/%2°C" + +#~ msgctxt "@label" +#~ msgid "Bed Temperature: %1/%2°C" +#~ msgstr "Temperatura stołu: %1/%2°C" + +#~ msgctxt "@label" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "@label" +#~ msgid "View Mode: Layers" +#~ msgstr "Tryb widoku: warstwy" + +#~ msgctxt "@info:status" +#~ msgid "Could not import material %1: %2" +#~ msgstr "Nie można zaimportować materiału %1: %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully imported material %1" +#~ msgstr "Pomyślnie zaimportowano materiał %1" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export material to %1: %2" +#~ msgstr "Nie udało się wyeksportować materiału do %1: %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully exported material to %1" +#~ msgstr "Udało się wyeksportować materiał do %1" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g / ~ %4 %3" +#~ msgstr "%1 m / ~ %2 g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g" +#~ msgstr "%1 m / ~ %2 g" + +#~ msgctxt "@label" +#~ msgid "Hotend" +#~ msgstr "Głowica" + +#~ msgctxt "@action:button" +#~ msgid "View Mode" +#~ msgstr "Tryb podglądu" + +#~ msgctxt "@title:tab" +#~ msgid "Print" +#~ msgstr "Drukuj" + +#~ msgctxt "@label" +#~ msgid "0%" +#~ msgstr "0%" + +#~ msgctxt "@label" +#~ msgid "Empty infill will leave your model hollow with low strength." +#~ msgstr "Puste wypełnienie pozostawi twój model pusty z niską wytrzymałością." + +#~ msgctxt "@label" +#~ msgid "20%" +#~ msgstr "20%" + +#~ msgctxt "@label" +#~ msgid "Light (20%) infill will give your model an average strength." +#~ msgstr "Lekkie (20%) wypełnienie sprawi, że model będzie średniej wytrzymałości." + +#~ msgctxt "@label" +#~ msgid "50%" +#~ msgstr "50%" + +#~ msgctxt "@label" +#~ msgid "Dense (50%) infill will give your model an above average strength." +#~ msgstr "Gęste wypełnienie (50%) da modelowi wyższą niż średnia wytrzymałość." + +#~ msgctxt "@label" +#~ msgid "100%" +#~ msgstr "100%" + +#~ msgctxt "@label" +#~ msgid "Solid (100%) infill will make your model completely solid." +#~ msgstr "Pełne (100%) wypełnienie sprawi, że model będzie całkowicie wypełniony." + +#~ msgctxt "@label" +#~ msgid "Gradual" +#~ msgstr "Stopniowy" + +#~ msgctxt "description" +#~ msgid "Provides support for writing X3G files" +#~ msgstr "Zapewnia wsparcie w tworzeniu plików X3G" + +#~ msgctxt "name" +#~ msgid "X3G Writer" +#~ msgstr "X3G Writer" + #~ msgctxt "@label" #~ msgid "Machine Settings action" #~ msgstr "Czynność ustawienia drukarki" diff --git a/resources/i18n/pl_PL/fdmprinter.def.json.po b/resources/i18n/pl_PL/fdmprinter.def.json.po index 63a4915f22..4df9eec09e 100644 --- a/resources/i18n/pl_PL/fdmprinter.def.json.po +++ b/resources/i18n/pl_PL/fdmprinter.def.json.po @@ -760,16 +760,6 @@ msgctxt "shell description" msgid "Shell" msgstr "Powłoka" -#: fdmprinter.def.json -msgctxt "wall_extruder_nr label" -msgid "Wall Extruder" -msgstr "Ekstruder Ściany" - -#: fdmprinter.def.json -msgctxt "wall_extruder_nr description" -msgid "The extruder train used for printing the walls. This is used in multi-extrusion." -msgstr "Ekstruder używany do drukowania ścian. Używane w multi-esktruzji." - #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" msgid "Outer Wall Extruder" @@ -1130,6 +1120,11 @@ msgctxt "z_seam_type option random" msgid "Random" msgstr "Losowe" +#: fdmprinter.def.json +msgctxt "z_seam_type option sharpest_corner" +msgid "Sharpest Corner" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1150,6 +1145,36 @@ msgctxt "z_seam_y description" msgid "The Y coordinate of the position near where to start printing each part in a layer." msgstr "Współrzędna Y położenia, w pobliżu miejsca rozpoczęcia drukowania każdej warstwy." +#: fdmprinter.def.json +msgctxt "z_seam_corner label" +msgid "Seam Corner Preference" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner description" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_none" +msgid "None" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_inner" +msgid "Hide Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_outer" +msgid "Expose Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_any" +msgid "Hide or Expose Seam" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1170,6 +1195,16 @@ msgctxt "skin_no_small_gaps_heuristic description" msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." msgstr "Jeśli model ma małe, pionowe szczeliny, to można wykorzystać dodatkowe 5% mocy obliczeniowej do wygenerowania górnej i dolnej skóry w wąskich przestrzeniach. W takim wypadku, wyłącz tę opcję." +#: fdmprinter.def.json +msgctxt "skin_outline_count label" +msgid "Extra Skin Wall Count" +msgstr "Liczba Dod. Ścian na Skórze" + +#: fdmprinter.def.json +msgctxt "skin_outline_count description" +msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." +msgstr "Zastępuje najbardziej zewnętrzną część wzoru górnego/dolnego za pomocą kilku koncentrycznych linii. Korzystanie z jednej lub dwóch linii poprawia dachy, które zaczynają się na wypełnieniu." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1217,8 +1252,8 @@ msgstr "Wzór Wypełn." #: fdmprinter.def.json msgctxt "infill_pattern description" -msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "Wzór materiału wypełniającego. Linia i zygzakowy wypełnienie zmienia kierunek na przemiennych warstwach zmniejszając koszt materiału. Wzory siatki, trójkątne, sześcienne, czworościenne i koncentryczne są w pełni drukowane na każdej warstwie. Wypełnienie sześcienne i czworościenne zmienia się co każdą warstwę, aby zapewnić równe rozłożenie siły w każdym kierunku." +msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1247,8 +1282,13 @@ msgstr "Podział sześcienny" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" -msgid "Tetrahedral" -msgstr "Czworościenny" +msgid "Octet" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option quarter_cubic" +msgid "Quarter Cubic" +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1265,6 +1305,26 @@ msgctxt "infill_pattern option zigzag" msgid "Zig Zag" msgstr "Zygzak" +#: fdmprinter.def.json +msgctxt "infill_pattern option cross" +msgid "Cross" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross_3d" +msgid "Cross 3D" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill label" +msgid "Connect Infill Lines" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill description" +msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" @@ -1386,34 +1446,34 @@ msgid "Don't generate areas of infill smaller than this (use skin instead)." msgstr "Nie generuj obszarów wypełnienia mniejszych niż to (zamiast tego używaj skóry)." #: fdmprinter.def.json -msgctxt "expand_skins_into_infill label" -msgid "Expand Skins Into Infill" -msgstr "Rozszerz Powłokę Do Wypełn." +msgctxt "skin_preshrink label" +msgid "Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_skins_into_infill description" -msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." -msgstr "Rozszerz obszary powłoki na górze i/lub dole powierzchni płaskich. Domyślnie, powłoka kończy się na linii ściany otaczające wypełnienie, chociaż może to prowadzić do powstawania dziur kiedy gęstość wypełnienia jest niska. Ustawienie to rozciąga powłokę poza linię ściany, dzięki czemu wypełnienie na kolejnej warstwie osiada na powłoce." +msgctxt "skin_preshrink description" +msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins label" -msgid "Expand Top Skins Into Infill" -msgstr "Rozszerz Górną Powłokę Do Wypełn." +msgctxt "top_skin_preshrink label" +msgid "Top Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins description" -msgid "Expand the top skin areas (areas with air above) so that they support infill above." -msgstr "Rozszerz górne obszary ścian (obszary, które mają ponad sobą powietrze) tak, aby wspomagały wypełnienie powyżej." +msgctxt "top_skin_preshrink description" +msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins label" -msgid "Expand Bottom Skins Into Infill" -msgstr "Rozszerz Dolną Powłokę Do Wypełn." +msgctxt "bottom_skin_preshrink label" +msgid "Bottom Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins description" -msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." -msgstr "Rozszerz dolną powłokę (obszary, pod którym jest powietrze) tak, aby zostały zakotwiczone o warstwy wypełniające powyżej i poniżej." +msgctxt "bottom_skin_preshrink description" +msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1422,8 +1482,28 @@ msgstr "Odległość Rozsz. Powłoki" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" -msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." -msgstr "Odległość na jaką powłoki zostają rozszerzone do wypełnienia. Domyślna odległość wystarcza, aby pokonać szczelinę między liniami wypełnienia i nie dopuścić do powstania dziur, gdzie spotyka się z powłoką, gdy gęstość wypełnienia jest niska. Mniejsza odległość będzie często wystarczająca." +msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance label" +msgid "Top Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance description" +msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance label" +msgid "Bottom Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance description" +msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." +msgstr "" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -1805,16 +1885,6 @@ msgctxt "speed_topbottom description" msgid "The speed at which top/bottom layers are printed." msgstr "Szybkość, z jaką drukowane są górne/dolne warstwy." -#: fdmprinter.def.json -msgctxt "speed_ironing label" -msgid "Ironing Speed" -msgstr "Prędkość Prasowania" - -#: fdmprinter.def.json -msgctxt "speed_ironing description" -msgid "The speed at which to pass over the top surface." -msgstr "Prędkość, z jaką drukarka przejeżdża nad górnymi powierzchniami." - #: fdmprinter.def.json msgctxt "speed_support label" msgid "Support Speed" @@ -2045,16 +2115,6 @@ msgctxt "acceleration_topbottom description" msgid "The acceleration with which top/bottom layers are printed." msgstr "Przyspieszenie, z jakim drukowane są górne/dolne warstwy." -#: fdmprinter.def.json -msgctxt "acceleration_ironing label" -msgid "Ironing Acceleration" -msgstr "Przyspieszenie Prasowania" - -#: fdmprinter.def.json -msgctxt "acceleration_ironing description" -msgid "The acceleration with which ironing is performed." -msgstr "Przyspieszenie, z jakim przeprowadzane jest prasowanie." - #: fdmprinter.def.json msgctxt "acceleration_support label" msgid "Support Acceleration" @@ -2245,16 +2305,6 @@ msgctxt "jerk_topbottom description" msgid "The maximum instantaneous velocity change with which top/bottom layers are printed." msgstr "Maksymalna zmiana prędkości chwilowej z jaką drukowane są górne/dolne warstwy." -#: fdmprinter.def.json -msgctxt "jerk_ironing label" -msgid "Ironing Jerk" -msgstr "Zryw Prasowania" - -#: fdmprinter.def.json -msgctxt "jerk_ironing description" -msgid "The maximum instantaneous velocity change while performing ironing." -msgstr "Maksymalna nagła zmiana prędkości podczas przeprowadzania prasowania." - #: fdmprinter.def.json msgctxt "jerk_support label" msgid "Support Jerk" @@ -2770,6 +2820,11 @@ msgctxt "support_pattern option zigzag" msgid "Zig Zag" msgstr "Zygzak" +#: fdmprinter.def.json +msgctxt "support_pattern option cross" +msgid "Cross" +msgstr "" + #: fdmprinter.def.json msgctxt "support_connect_zigzags label" msgid "Connect Support ZigZags" @@ -2782,23 +2837,33 @@ msgstr "Połącz Zygzaki. To zwiększa wytrzymałość zygzakowatej podpory." #: fdmprinter.def.json msgctxt "support_skip_some_zags label" -msgid "Skip Some ZigZags Connections" -msgstr "Pomijaj Niektóre Połączenia Zygzak" +msgid "Break Up Support In Chunks" +msgstr "" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" -msgid "Skip some ZigZags connections to make the support structure easier to break." -msgstr "Pomijaj niektóre połączenia Zygzak, aby struktura podpór łatwiej się odrywała." +msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm description" +msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count label" -msgid "ZigZag Connection Skip Count" -msgstr "Ilość Pominięć Połącz. Zygzak" +msgid "Support Chunk Line Count" +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" -msgid "Skip one in every N connection lines to make the support structure easier to break." -msgstr "Pomijaj jedno na każde N linii połączeń, aby struktury podpór łatwiej się odrywały." +msgid "Skip one in every N connection lines to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3384,6 +3449,26 @@ msgctxt "brim_outside_only description" msgid "Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much." msgstr "Drukuj obrys tylko na zewnątrz modelu. Zmniejsza to liczbę obrysu, który trzeba usunąć po wydruku, podczas gdy nie zmniejsza znacząco przyczepności do stołu." +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 label" +msgid "Initial Layer Z Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 description" +msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers label" +msgid "Z Offset Taper Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers description" +msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3394,6 +3479,16 @@ msgctxt "raft_margin description" msgid "If the raft is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print." msgstr "Jeśli tratwa jest włączona, jest to dodatkowy obszar tratwy wokół modelu, który ma również tratwę. Zwiększenie marginesu wzmocni tratwę przy wykorzystaniu z większej ilości materiału i pozostawi mniej miejsca na wydruk." +#: fdmprinter.def.json +msgctxt "raft_smoothing label" +msgid "Raft Smoothing" +msgstr "" + +#: fdmprinter.def.json +msgctxt "raft_smoothing description" +msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_airgap label" msgid "Raft Air Gap" @@ -4069,6 +4164,16 @@ msgctxt "smooth_spiralized_contours description" msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." msgstr "Wygładź spiralny kontur, aby zmniejszyć widoczność szwu Z (szew Z powinien być ledwo widoczny na wydruku, ale nadal będzie widoczny w widoku warstwy). Należy pamiętać, że wygładzanie będzie miało tendencję do rozmycia drobnych szczegółów powierzchni." +#: fdmprinter.def.json +msgctxt "relative_extrusion label" +msgid "Relative Extrusion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "relative_extrusion description" +msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." +msgstr "" + #: fdmprinter.def.json msgctxt "experimental label" msgid "Experimental" @@ -4079,6 +4184,16 @@ msgctxt "experimental description" msgid "experimental!" msgstr "eksperymentalne!" +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "" + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4189,16 +4304,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Prędkość poruszania się podczas Wypływania, w stosunku do prędkości ścieżki ekstruzji. Zaleca się wartość nieco poniżej 100%, ponieważ podczas Wypływania ciśnienie w rurce bowden spada." -#: fdmprinter.def.json -msgctxt "skin_outline_count label" -msgid "Extra Skin Wall Count" -msgstr "Liczba Dod. Ścian na Skórze" - -#: fdmprinter.def.json -msgctxt "skin_outline_count description" -msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." -msgstr "Zastępuje najbardziej zewnętrzną część wzoru górnego/dolnego za pomocą kilku koncentrycznych linii. Korzystanie z jednej lub dwóch linii poprawia dachy, które zaczynają się na wypełnieniu." - #: fdmprinter.def.json msgctxt "skin_alternate_rotation label" msgid "Alternate Skin Rotation" @@ -4209,6 +4314,26 @@ msgctxt "skin_alternate_rotation description" msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." msgstr "Zmień kierunek, w jakim drukowane są górne/dolne warstwy. Zazwyczaj są one drukowane na ukos. Ustawienie to dodaje kierunek \"tylko X\" i \"tylko Y\"." +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size label" +msgid "Cross 3D Pocket Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size description" +msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly label" +msgid "Alternate Cross 3D Pockets" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly description" +msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." +msgstr "" + #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" msgid "Spaghetti Infill" @@ -4628,6 +4753,16 @@ msgctxt "ironing_enabled description" msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." msgstr "Przejedź nad górną powierzchnią dodatkowy raz, ale bez ekstrudowania materiału. Topi to plastyk na górze, co powoduje gładszą powierzchnię." +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer label" +msgid "Iron Only Highest Layer" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer description" +msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." +msgstr "" + #: fdmprinter.def.json msgctxt "ironing_pattern label" msgid "Ironing Pattern" @@ -4678,6 +4813,36 @@ msgctxt "ironing_inset description" msgid "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print." msgstr "Odległość utrzymywana od krawędzi modelu. Prasowanie do końca krawędzi siatki może powodować zadarte krawędzie na wydruku." +#: fdmprinter.def.json +msgctxt "speed_ironing label" +msgid "Ironing Speed" +msgstr "Prędkość Prasowania" + +#: fdmprinter.def.json +msgctxt "speed_ironing description" +msgid "The speed at which to pass over the top surface." +msgstr "Prędkość, z jaką drukarka przejeżdża nad górnymi powierzchniami." + +#: fdmprinter.def.json +msgctxt "acceleration_ironing label" +msgid "Ironing Acceleration" +msgstr "Przyspieszenie Prasowania" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing description" +msgid "The acceleration with which ironing is performed." +msgstr "Przyspieszenie, z jakim przeprowadzane jest prasowanie." + +#: fdmprinter.def.json +msgctxt "jerk_ironing label" +msgid "Ironing Jerk" +msgstr "Zryw Prasowania" + +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "Maksymalna nagła zmiana prędkości podczas przeprowadzania prasowania." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4738,6 +4903,66 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Forma przesunięcia, która ma być zastosowana do modelu podczas ładowania z pliku." +#~ msgctxt "wall_extruder_nr label" +#~ msgid "Wall Extruder" +#~ msgstr "Ekstruder Ściany" + +#~ msgctxt "wall_extruder_nr description" +#~ msgid "The extruder train used for printing the walls. This is used in multi-extrusion." +#~ msgstr "Ekstruder używany do drukowania ścian. Używane w multi-esktruzji." + +#~ msgctxt "infill_pattern description" +#~ msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." +#~ msgstr "Wzór materiału wypełniającego. Linia i zygzakowy wypełnienie zmienia kierunek na przemiennych warstwach zmniejszając koszt materiału. Wzory siatki, trójkątne, sześcienne, czworościenne i koncentryczne są w pełni drukowane na każdej warstwie. Wypełnienie sześcienne i czworościenne zmienia się co każdą warstwę, aby zapewnić równe rozłożenie siły w każdym kierunku." + +#~ msgctxt "infill_pattern option tetrahedral" +#~ msgid "Tetrahedral" +#~ msgstr "Czworościenny" + +#~ msgctxt "expand_skins_into_infill label" +#~ msgid "Expand Skins Into Infill" +#~ msgstr "Rozszerz Powłokę Do Wypełn." + +#~ msgctxt "expand_skins_into_infill description" +#~ msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." +#~ msgstr "Rozszerz obszary powłoki na górze i/lub dole powierzchni płaskich. Domyślnie, powłoka kończy się na linii ściany otaczające wypełnienie, chociaż może to prowadzić do powstawania dziur kiedy gęstość wypełnienia jest niska. Ustawienie to rozciąga powłokę poza linię ściany, dzięki czemu wypełnienie na kolejnej warstwie osiada na powłoce." + +#~ msgctxt "expand_upper_skins label" +#~ msgid "Expand Top Skins Into Infill" +#~ msgstr "Rozszerz Górną Powłokę Do Wypełn." + +#~ msgctxt "expand_upper_skins description" +#~ msgid "Expand the top skin areas (areas with air above) so that they support infill above." +#~ msgstr "Rozszerz górne obszary ścian (obszary, które mają ponad sobą powietrze) tak, aby wspomagały wypełnienie powyżej." + +#~ msgctxt "expand_lower_skins label" +#~ msgid "Expand Bottom Skins Into Infill" +#~ msgstr "Rozszerz Dolną Powłokę Do Wypełn." + +#~ msgctxt "expand_lower_skins description" +#~ msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." +#~ msgstr "Rozszerz dolną powłokę (obszary, pod którym jest powietrze) tak, aby zostały zakotwiczone o warstwy wypełniające powyżej i poniżej." + +#~ msgctxt "expand_skins_expand_distance description" +#~ msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." +#~ msgstr "Odległość na jaką powłoki zostają rozszerzone do wypełnienia. Domyślna odległość wystarcza, aby pokonać szczelinę między liniami wypełnienia i nie dopuścić do powstania dziur, gdzie spotyka się z powłoką, gdy gęstość wypełnienia jest niska. Mniejsza odległość będzie często wystarczająca." + +#~ msgctxt "support_skip_some_zags label" +#~ msgid "Skip Some ZigZags Connections" +#~ msgstr "Pomijaj Niektóre Połączenia Zygzak" + +#~ msgctxt "support_skip_some_zags description" +#~ msgid "Skip some ZigZags connections to make the support structure easier to break." +#~ msgstr "Pomijaj niektóre połączenia Zygzak, aby struktura podpór łatwiej się odrywała." + +#~ msgctxt "support_zag_skip_count label" +#~ msgid "ZigZag Connection Skip Count" +#~ msgstr "Ilość Pominięć Połącz. Zygzak" + +#~ msgctxt "support_zag_skip_count description" +#~ msgid "Skip one in every N connection lines to make the support structure easier to break." +#~ msgstr "Pomijaj jedno na każde N linii połączeń, aby struktury podpór łatwiej się odrywały." + #~ msgctxt "machine_center_is_zero label" #~ msgid "Is center origin" #~ msgstr "Począt. na Środku" diff --git a/resources/i18n/pt_BR/cura.po b/resources/i18n/pt_BR/cura.po index 19929dadaa..5176636cfc 100644 --- a/resources/i18n/pt_BR/cura.po +++ b/resources/i18n/pt_BR/cura.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -17,15 +17,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:28 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" msgstr "Ajustes da Máquina" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" -msgid "X-Ray" -msgstr "Raios X" +msgid "X-Ray view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -37,40 +37,69 @@ msgctxt "@item:inlistbox" msgid "GCode File" msgstr "Arquivo G-Code" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:13 -msgctxt "@label" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:17 -msgctxt "@info:whatsthis" -msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "Aceita G-Code e o envia por wifi para o aplicativo de celular Doodle3D." - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:36 -msgctxt "@item:inmenu" -msgid "Doodle3D printing" -msgstr "Impressão Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:37 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" -msgid "Print with Doodle3D" -msgstr "Imprimir com Doodle3D" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:38 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 +msgctxt "@properties:tooltip" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 +msgctxt "@info:status" +msgid "Sending data to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 +msgctxt "@info:status" +msgid "Unable to send data to Doodle3D Connect. Is another job still active?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 +msgctxt "@info:status" +msgid "File sent to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect.." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" -msgid "Print with " -msgstr "Imprimir com " - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:49 -msgctxt "@title:menu" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:50 -msgctxt "@item:inlistbox" -msgid "Enable Scan devices..." -msgstr "Habilitar dispositivos de escaneamento..." +msgid "Open the Doodle3D Connect web interface" +msgstr "" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -112,16 +141,36 @@ msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Incapaz de iniciar novo trabalho porque a impressora está ocupada ou não conectada." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +msgctxt "@info:title" +msgid "Print Details" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "Esta impressora não suporta impressão USB porque usa G-Code UltiGCode." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Incapaz de iniciar um novo trabalho porque a impressora não suporta impressão USB." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:909 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 +msgctxt "@info:title" +msgid "Warning" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." @@ -133,10 +182,10 @@ msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "Não foi possível encontrar o firmware requerido para a impressora em %s." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:14 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "Arquivo X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +msgctxt "@info:title" +msgid "Printer Firmware" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -151,47 +200,79 @@ msgstr "Salvar em Unidade Removível {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 #, python-brace-format -msgctxt "@info:progress" +msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "Salvando em Unidade Removível {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +msgctxt "@info:title" +msgid "Saving" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "Incapaz de salvar para {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format -msgctxt "@info:status" -msgid "Saved to Removable Drive {0} as {1}" -msgstr "Salvo em Unidade Removível {0} como {1}" +msgctxt "@info:status Don't translate the tag {device}!" +msgid "Could not find a file name when trying to write to {device}." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -msgctxt "@action:button" -msgid "Eject" -msgstr "Ejetar" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -#, python-brace-format -msgctxt "@action" -msgid "Eject removable device {0}" -msgstr "Ejetar dispositivo removível {0}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:138 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #, python-brace-format msgctxt "@info:status" msgid "Could not save to removable drive {0}: {1}" msgstr "Não foi possível salvar em unidade removível {0}: {1}" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:148 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:675 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:683 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:145 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:152 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 +msgctxt "@info:title" +msgid "Error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +#, python-brace-format +msgctxt "@info:status" +msgid "Saved to Removable Drive {0} as {1}" +msgstr "Salvo em Unidade Removível {0} como {1}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +msgctxt "@info:title" +msgid "File Saved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +msgctxt "@action:button" +msgid "Eject" +msgstr "Ejetar" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +#, python-brace-format +msgctxt "@action" +msgid "Eject removable device {0}" +msgstr "Ejetar dispositivo removível {0}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 #, python-brace-format msgctxt "@info:status" msgid "Ejected {0}. You can now safely remove the drive." msgstr "{0} ejetado. A unidade agora pode ser removida de forma segura." -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:150 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 +msgctxt "@info:title" +msgid "Safely Remove Hardware" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format msgctxt "@info:status" msgid "Failed to eject {0}. Another program may be using the drive." @@ -202,219 +283,351 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Unidade Removível" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:49 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Imprimir pela rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Imprime pela rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:156 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 msgctxt "@info:status" msgid "Access to the printer requested. Please approve the request on the printer" msgstr "Acesso à impressora solicitado. Por favor aprove a requisição na impressora" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +msgctxt "@info:title" +msgid "Connection status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 msgctxt "@info:status" msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:468 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@action:button" msgid "Retry" msgstr "Tentar novamente" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Reenvia o pedido de acesso" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Acesso à impressora confirmado" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 msgctxt "@info:status" msgid "No access to print with this printer. Unable to send print job." msgstr "Sem acesso para imprimir por esta impressora. Incapaz de enviar o trabalho de impressão." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:28 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:72 msgctxt "@action:button" msgid "Request Access" msgstr "Solicitar acesso" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:71 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "Envia pedido de acesso à impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:358 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:375 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 msgctxt "@info:status" msgid "Connected over the network. Please approve the access request on the printer." msgstr "Conectado pela rede. Por favor aprove a requisição de acesso na impressora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:365 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:382 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 msgctxt "@info:status" msgid "Connected over the network." msgstr "Conectado pela rede." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:378 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "Conectado pela rede. Sem acesso para controlar a impressora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:383 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:400 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 msgctxt "@info:status" msgid "Access request was denied on the printer." msgstr "Pedido de acesso foi negado na impressora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:386 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:403 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Access request failed due to a timeout." msgstr "Pedido de acesso falhou devido a tempo esgotado." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:450 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:467 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "The connection with the network was lost." msgstr "A conexão à rede foi perdida." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:481 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 msgctxt "@info:status" msgid "The connection with the printer was lost. Check your printer to see if it is connected." msgstr "A conexão com a impressora foi perdida. Verifique se sua impressora está conectada." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:630 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:649 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 #, python-format msgctxt "@info:status" msgid "Unable to start a new print job, printer is busy. Current printer status is %s." msgstr "Incapaz de iniciar um novo trabalho de impressão, a impressora está ocupada. O estado atual da impressora é %s." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:654 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Incapaz de iniciar um novo trabalho de impressão. Nenhum Printcore carregado no slot {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:661 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:682 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Incapaz de iniciar um novo trabalho de impressão. Não há material carregado no slot {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:670 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Não há material suficiente para o carretel {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:680 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:694 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:716 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@label" msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Material diferente (Cura: {0}, Impressora: {1}) selecionado para o extrusor {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:724 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:707 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:729 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "Tem certeza que quer imprimir com a configuração selecionada?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:730 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 msgctxt "@label" msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "Há divergências entre a configuração ou calibração da impressora e do Cura. Para melhores resultados, sempre fatie com os PrintCores e materiais que estão carregados em sua impressora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:736 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Configuração divergente" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:815 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Enviando dados à impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:816 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:46 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:137 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Cancelar" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +msgctxt "@info:title" +msgid "Sending Data" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:884 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Incapaz de enviar dados à impressora. Há outro trabalho de impressão ativo?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1018 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1050 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Abortando impressão..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1024 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Impressão abortada. Por favor verifique a impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1030 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Pausando impressão..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1032 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Continuando impressão..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1175 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Sincronizar com a impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1177 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "Deseja usar a configuração atual de sua impressora no Cura?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1220 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 msgctxt "@label" msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "Os PrintCores e/ou materiais da sua impressora diferem dos que estão dentro de seu projeto atual. Para melhores resultados, sempre fatie para os PrintCores e materiais que estão na sua impressora." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.py:19 msgctxt "@action" msgid "Connect via Network" msgstr "Conectar pela rede" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:172 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#, python-brace-format +msgctxt "Count is number of printers." +msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#, python-brace-format +msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#, python-brace-format +msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +msgctxt "@info:status" +msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#, python-brace-format +msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Baixar" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +msgctxt "@info" +msgid "Could not access update information." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" msgstr "Erros apareceram ao abrir seu arquivo SolidWorks! Por favor verifique se é possível abrir seu arquivo no próprio SolidWorks sem problema também!" @@ -433,17 +646,12 @@ msgstr "Arquivo de montagem de SolidWorks" msgid "Configure" msgstr "Configure" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:129 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 #, python-format msgctxt "@info:status" msgid "Error while starting %s!" msgstr "Erro ao iniciar %s!" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:207 -msgctxt "@info:status" -msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" -msgstr "Por favor tenha em mente que você precisa reabrir seu arquivo Solidworks manualmente! Recarregar o modelo não irá funcionar!" - #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 msgid "Modify G-Code" msgstr "Modificar G-Code" @@ -453,7 +661,12 @@ msgctxt "@info" msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." msgstr "O Cura coleta estatística de fatiamento anonimizadas. Você pode desabilitar isso nas preferências." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:44 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 +msgctxt "@info:title" +msgid "Collecting Data" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" msgid "Dismiss" msgstr "Fechar" @@ -471,14 +684,19 @@ msgstr "Arquivo G-Code" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" -msgid "Layers" -msgstr "Camadas" +msgid "Layer view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "O Cura não mostra as camadas corretamente quando Impressão em Arame estiver habilitada" +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 +msgctxt "@info:title" +msgid "Layer View" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -504,24 +722,31 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Imagem GIF" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:281 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "O material selecionado é incompatível com a máquina ou configuração selecionada." +msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:308 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:307 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 +msgctxt "@info:title" +msgid "Unable to slice" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Incapaz de fatiar com os ajustes atuais. Os seguintes ajustes têm erros: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:317 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:306 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Incapaz de fatiar porque a torre de purga ou posição de purga são inválidas." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:325 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:315 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Nada a fatiar porque nenhum dos modelos cabe no volume de impressão. Por favor redimensione ou rotacione os modelos para caberem." @@ -532,6 +757,11 @@ msgctxt "@info:status" msgid "Processing Layers" msgstr "Processando Camadas" +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +msgctxt "@info:title" +msgid "Information" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" msgid "Per Model Settings" @@ -543,13 +773,13 @@ msgid "Configure Per Model Settings" msgstr "Configurar ajustes por Modelo" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:475 msgctxt "@title:tab" msgid "Recommended" msgstr "Recomendado" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:459 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizado" @@ -560,25 +790,37 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Arquivo 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:122 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1050 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 msgctxt "@label" msgid "Nozzle" msgstr "Bico" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 +msgctxt "@menuitem" msgid "Browse plugins" -msgstr "Navegar por plugins" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:120 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +msgctxt "@info:tile" +msgid "Warning" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" msgid "Plugin browser" msgstr "Navegador de Plugin" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" -msgid "Solid" -msgstr "Sólido" +msgid "Solid view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -590,7 +832,13 @@ msgctxt "@info:status" msgid "Parsing G-code" msgstr "Interpretando G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:365 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Assegure que o g-code é adequado para sua impressora e configuração antes de enviar o arquivo. A representação de g-code pode não ser acurada." @@ -612,7 +860,7 @@ msgid "Cura Project 3MF file" msgstr "Arquivo de Projeto 3MF do Cura" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Selecionar Atualizações" @@ -632,18 +880,73 @@ msgctxt "@action" msgid "Level build plate" msgstr "Nivelar mesa" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:247 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Parede Externa" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Paredes Internas" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Contorno" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Preenchimento" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Preenchimento de Suporte" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Interface de Suporte" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support" +msgstr "Suporte" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Percurso" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Retrações" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Other" +msgstr "Outros" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Arquivo pré-fatiado {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 msgctxt "@item:material" msgid "No material loaded" msgstr "Não há material carregado" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 msgctxt "@item:material" msgid "Unknown material" msgstr "Material desconhecido" @@ -653,35 +956,56 @@ msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Achando novos lugares para objetos" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:85 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Incapaz de achar um lugar dentro do volume de construção para todos os objetos" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:417 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 msgctxt "@title:window" msgid "File Already Exists" msgstr "O Arquivo Já Existe" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:418 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 #, python-brace-format -msgctxt "@label" +msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "O arquivo {0} já existe. Tem certeza que quer sobrescrevê-lo?" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:801 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" msgid "Custom" msgstr "Personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:805 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 msgctxt "@label" msgid "Custom Material" msgstr "Material Personalizado" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +msgctxt "@info:status" +msgid "The selected material is incompatible with the selected machine or configuration." +msgstr "O material selecionado é incompatível com a máquina ou configuração selecionada." + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:109 +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 +msgctxt "@info:title" +msgid "Incompatible Material" +msgstr "" + #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." msgid "The selected material diameter causes the material to become incompatible with the current printer." @@ -699,70 +1023,86 @@ msgstr "Desfaz a mudança no diâmetro do material." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "Falha na exportação de perfil para {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:148 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "Falha na exportação de perfil para {0}: Complemento de gravação acusou falha." +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "Perfil exportado para {0}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:199 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:208 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:242 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +msgctxt "@info:title" +msgid "Export Details" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:213 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:247 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "Falha na importação de perfil de {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:210 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:246 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Perfil {0} importado com sucesso" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:249 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "O Perfil {0} tem tipo de arquivo desconhecido ou está corrompido." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:267 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:272 msgctxt "@label" msgid "Custom profile" msgstr "Perfil personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:278 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Falta um tipo de qualidade ao Perfil." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:300 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Não foi possível encontrar tipo de qualidade {0} para a configuração atual." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:95 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "A altura do volume de impressão foi reduzida para que o valor da \"Sequência de Impressão\" impeça o eixo de colidir com os modelos impressos." +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 +msgctxt "@info:title" +msgid "Build Volume" +msgstr "" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Multiplicando e colocando objetos" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "" + #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" msgid "Crash Report" @@ -784,34 +1124,34 @@ msgctxt "@action:button" msgid "Open Web Page" msgstr "Abrir Página Web" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:248 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Carregando máquinas..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:610 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Configurando cena..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:652 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Carregando interface..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:815 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1285 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1295 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Somente um arquivo G-Code pode ser carregado por vez. Pulando importação de {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1294 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1304 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" @@ -841,12 +1181,12 @@ msgstr "X (anchura)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:286 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:838 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:839 msgctxt "@label" msgid "mm" msgstr "mm" @@ -936,108 +1276,72 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "A diferença de altura entre a ponta do bico e o sistema de eixos X e Y. Usado para prevenir colisões entre impressões e a cabeça ao imprimir \"Um de cada Vez\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Número de Extrusores" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 msgctxt "@tooltip" msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." msgstr "O diâmetro nominal do filamento suportado pela impressora. O diâmetro exato será sobrepujado pelo material e/ou perfil." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:290 msgctxt "@label" msgid "Material diameter" msgstr "Diâmetro do material" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:297 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:388 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 msgctxt "@label" msgid "Nozzle size" msgstr "Tamanho do bico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:315 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 msgctxt "@label" msgid "Start Gcode" msgstr "G-Code Inicial" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:325 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "Comandos de G-Code a serem executados no início da impressão." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:334 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:335 msgctxt "@label" msgid "End Gcode" msgstr "G-Code Final" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:344 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "Comandos de G-Code a serem executados no final da impressão." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:376 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:377 msgctxt "@label" msgid "Nozzle Settings" msgstr "Ajustes do Bico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:398 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 msgctxt "@label" msgid "Nozzle offset X" msgstr "Deslocamento X do Bico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:410 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Deslocamento Y do Bico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:431 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "G-Code Inicial do Extrusor" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:449 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 msgctxt "@label" msgid "Extruder End Gcode" msgstr "G-Code Final do Extrusor" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:20 -msgctxt "@title:window" -msgid "Doodle3D Settings" -msgstr "Ajustes de Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:53 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 -msgctxt "@action:button" -msgid "Save" -msgstr "Salvar" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:23 -msgctxt "@title:window" -msgid "Print to: %1" -msgstr "Imprimir em: %1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:40 -msgctxt "@label" -msgid "Extruder Temperature: %1/%2°C" -msgstr "Temperatura do Extrusor: %1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:46 -msgctxt "@label" -msgid "Bed Temperature: %1/%2°C" -msgstr "Temperatura da Mesa: %1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:64 -msgctxt "@label" -msgid "%1" -msgstr "%1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:82 -msgctxt "@action:button" -msgid "Print" -msgstr "Imprimir" - #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" msgid "Changelog" @@ -1046,9 +1350,10 @@ msgstr "Registro de alterações" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:55 #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:446 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:306 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:78 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:125 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 @@ -1102,11 +1407,13 @@ msgid "Unknown error code: %1" msgstr "Código de erro desconhecido: %1" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:55 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Conectar a Impressora de Rede" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:65 msgctxt "@label" msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" @@ -1118,17 +1425,20 @@ msgstr "" "Selecione sua impressora da lista abaixo:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 msgctxt "@action:button" msgid "Add" msgstr "Adicionar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:85 msgctxt "@action:button" msgid "Edit" msgstr "Editar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 @@ -1137,87 +1447,210 @@ msgid "Remove" msgstr "Remover" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:33 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:104 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:35 msgctxt "@action:button" msgid "Refresh" msgstr "Atualizar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:196 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:196 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Se sua impressora não está listada, leia o guia de resolução de problemas de impressão em rede" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:223 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:223 msgctxt "@label" msgid "Type" msgstr "Tipo" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 msgctxt "@label" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:238 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:238 msgctxt "@label" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:241 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:241 msgctxt "@label" msgid "Unknown" msgstr "Desconhecido" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:254 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:254 msgctxt "@label" msgid "Firmware version" msgstr "Versão do firmware" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:266 msgctxt "@label" msgid "Address" msgstr "Endereço" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "A impressora neste endereço ainda não respondeu." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Conectar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 msgctxt "@title:window" msgid "Printer Address" msgstr "Endereço da Impressora" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Introduza o endereço IP ou hostname da sua impressora na rede." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 msgctxt "@action:button" msgid "Ok" msgstr "Ok" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:37 msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Conecta a uma impressora." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:116 msgctxt "@info:tooltip" msgid "Load the configuration of the printer into Cura" msgstr "Carrega a configuração da impressora no Cura" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:117 msgctxt "@action:button" msgid "Activate Configuration" msgstr "Ativar Configuração" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Imprimir" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 +msgctxt "@label:status" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 +msgctxt "@label:status" +msgid "Reserved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 +msgctxt "@label:status" +msgid "Finished" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 +msgctxt "@label:status" +msgid "Preparing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 +msgctxt "@label:status" +msgid "Available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 +msgctxt "@label" +msgid "Completed on: " +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 +msgctxt "@label" +msgid "Clear build plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 +msgctxt "@label" +msgid "Preparing to print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 +msgctxt "@label" +msgid "PRINTER GROUP" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 +msgctxt "@title" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 +msgctxt "@label" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 +msgctxt "@label" +msgid "Queued" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 +msgctxt "@label:title" +msgid "Printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 +msgctxt "@action:button" +msgid "View printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1306,67 +1739,62 @@ msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Troca os scripts de pós-processamento ativos" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:71 -msgctxt "@label" -msgid "View Mode: Layers" -msgstr "Modo de Visão: Camadas" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:88 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 msgctxt "@label" msgid "Color scheme" msgstr "Esquema de Cores" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:102 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:91 msgctxt "@label:listbox" msgid "Material Color" msgstr "Cor do Material" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:106 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:95 msgctxt "@label:listbox" msgid "Line Type" msgstr "Tipo de Linha" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:144 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 msgctxt "@label" msgid "Compatibility Mode" msgstr "Modo de Compatibilidade" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:210 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 msgctxt "@label" msgid "Show Travels" msgstr "Exibir Percursos" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 msgctxt "@label" msgid "Show Helpers" msgstr "Exibir Assistentes" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 msgctxt "@label" msgid "Show Shell" msgstr "Exibir Perímetro" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:234 msgctxt "@label" msgid "Show Infill" msgstr "Exibir Preenchimento" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:264 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:283 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Somente Exibir Camadas Superiores" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:273 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:292 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Exibir 5 Camadas Superiores Detalhadas" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:284 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:303 msgctxt "@label" msgid "Top / Bottom" msgstr "Topo / Base" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:288 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 msgctxt "@label" msgid "Inner Wall" msgstr "Parede Interna" @@ -1441,23 +1869,23 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Suavização" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:157 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 msgctxt "@action:button" msgid "Select settings" msgstr "Selecionar ajustes" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:197 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Selecionar Ajustes a Personalizar para este modelo" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:221 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrar..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:245 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 msgctxt "@label:checkbox" msgid "Show all" msgstr "Exibir tudo" @@ -1594,25 +2022,43 @@ msgctxt "@title:window" msgid "Find & Update plugins" msgstr "Buscar & Atualizar plugins" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:27 msgctxt "@label" msgid "Here you can find a list of Third Party plugins." msgstr "Aqui você pode encontrar uma lista de plugins de Terceiros." -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:143 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 msgctxt "@action:button" msgid "Upgrade" msgstr "Atualizar" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 msgctxt "@action:button" msgid "Installed" msgstr "Instalado" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 +msgctxt "@title:window" +msgid "Plugin License Agreement" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 +msgctxt "@label" +msgid "" +" plugin contains a license.\n" +"You need to accept this license to install this plugin.\n" +"Do you agree with the terms below?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" -msgid "Download" -msgstr "Baixar" +msgid "Accept" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" +msgstr "" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -1788,71 +2234,71 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "Tudo está em ordem! A verificação terminou." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Não conectado a nenhuma impressora." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:91 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "A impressora não aceita comandos" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "Em manutenção. Por favor verifique a impressora" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "A conexão à impressora foi perdida" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Imprimindo..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Pausado" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Preparando..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Por favor remova a impressão" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 msgctxt "@label:" msgid "Resume" msgstr "Continuar" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Pause" msgstr "Pausar" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:271 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 msgctxt "@label:" msgid "Abort Print" msgstr "Abortar Impressão" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 msgctxt "@window:title" msgid "Abort print" msgstr "Abortar impressão" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:283 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Tem certeza que deseja abortar a impressão?" @@ -1887,19 +2333,19 @@ msgid "Customized" msgstr "Personalizado" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Sempre perguntar" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:587 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Descartar e não perguntar novamente" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:588 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Manter e não perguntar novamente" @@ -2040,7 +2486,7 @@ msgid "Unit" msgstr "Unidade" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 msgctxt "@title:tab" msgid "General" msgstr "Geral" @@ -2055,223 +2501,223 @@ msgctxt "@label" msgid "Language:" msgstr "Idioma:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 msgctxt "@label" msgid "Currency:" msgstr "Moeda:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Você precisará reiniciar a aplicação para que essas mudanças tenham efeito." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:289 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Fatiar automaticamente quando mudar ajustes." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Fatiar automaticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamento da área de visualização" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Ressaltar áreas sem suporte do modelo em vermelho. Sem suporte, estas áreas não serão impressas corretamente." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Exibir seções pendentes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Move a câmera de modo que o modelo fique no centro da visão quando for selecionado." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:347 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Centralizar câmera quanto o item é selecionado" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "O comportamento default de zoom deve ser invertido?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Inverter a direção do zoom de câmera." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Os modelos devem ser movidos na plataforma de modo que não se sobreponham?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:382 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Assegurar que os modelos sejam mantidos separados" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Os modelos devem ser movidos pra baixo pra se assentar na plataforma de impressão?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Automaticamente fazer os modelos caírem na mesa de impressão." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Exibir mensagem de advertência no leitor de g-code." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Mensagem de advertência no leitor de g-code" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "A Visão de Camada deve ser forçada a ficar em modo de compatibilidade?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Forçar modo de compatibilidade da visão de camadas (requer reinício)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 msgctxt "@label" msgid "Opening and saving files" msgstr "Abrindo e salvando arquivos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Os modelos devem ser redimensionados dentro do volume de impressão se forem muito grandes?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:462 msgctxt "@option:check" msgid "Scale large models" msgstr "Redimensionar modelos grandes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Um modelo pode ser carregado diminuto se sua unidade for por exemplo em metros ao invés de milímetros. Devem esses modelos ser redimensionados?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:469 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Redimensionar modelos diminutos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Um prefixo baseado no nome da impressora deve ser adicionado ao nome do trabalho de impressão automaticamente?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Adicionar prefixo de máquina ao nome do trabalho" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Um resumo deve ser exibido ao salvar um arquivo de projeto?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:496 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Exibir diálogo de resumo ao salvar projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Comportamento default ao abrir um arquivo de projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:513 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Comportamento default ao abrir um arquivo de projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:526 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 msgctxt "@option:openProject" msgid "Always ask" msgstr "Sempre perguntar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Sempre abrir como projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:528 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always import models" msgstr "Sempre importar modelos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:564 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Quando você faz alterações em um perfil e troca para um diferent, um diálogo aparecerá perguntando se você quer manter ou aplicar suas modificações, ou você pode forçar um comportamento default e não ter o diálogo." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@label" msgid "Override Profile" msgstr "Sobrepujar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:622 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 msgctxt "@label" msgid "Privacy" msgstr "Privacidade" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "O Cura deve verificar novas atualizações quando o programa for iniciado?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:634 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Verificar atualizações na inicialização" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Dados anônimos sobre sua impressão podem ser enviados para a Ultimaker? Nota: nenhuma informação pessoalmente identificável, modelos ou endereços IP são enviados ou armazenados." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Enviar informação (anônima) de impressão." #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:441 msgctxt "@title:tab" msgid "Printers" msgstr "Impressoras" @@ -2321,7 +2767,7 @@ msgid "Waiting for a printjob" msgstr "Esperando um trabalho de impressão" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 msgctxt "@title:tab" msgid "Profiles" msgstr "Perfis" @@ -2419,7 +2865,7 @@ msgid "Export Profile" msgstr "Exportar Perfil" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 msgctxt "@title:tab" msgid "Materials" msgstr "Materiais" @@ -2451,14 +2897,14 @@ msgid "Import Material" msgstr "Importar Material" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "Não foi possível importar material%1: %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "Material %1 importado com sucesso" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2467,17 +2913,17 @@ msgid "Export Material" msgstr "Exportar Material" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "Falha ao exportar material para %1: %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "Material %1 exportado com sucesso" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:822 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 msgctxt "@title:window" msgid "Add Printer" msgstr "Adicionar Impressora" @@ -2492,71 +2938,6 @@ msgctxt "@action:button" msgid "Add Printer" msgstr "Adicionar Impressora" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:166 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Parede Externa" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:167 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Paredes Internas" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:168 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Contorno" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:169 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Preenchimento" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:170 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Preenchimento de Suporte" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:171 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Interface de Suporte" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:172 -msgctxt "@tooltip" -msgid "Support" -msgstr "Suporte" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:173 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Percurso" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:174 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Retrações" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:175 -msgctxt "@tooltip" -msgid "Other" -msgstr "Outros" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:217 -msgctxt "@label" -msgid "00h 00min" -msgstr "00h 00min" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:270 -msgctxt "@label" -msgid "%1 m / ~ %2 g / ~ %4 %3" -msgstr "%1 m / ~ %2 g / ~ %4 %3" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:275 -msgctxt "@label" -msgid "%1 m / ~ %2 g" -msgstr "%1 m / ~ %2 g" - #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -2666,32 +3047,48 @@ msgctxt "@label" msgid "SVG icons" msgstr "Ícones SVG" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +msgctxt "@label" +msgid "Profile:" +msgstr "Perfil:" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Alguns ajustes/sobrepujanças têm valores diferentes dos que estão armazenados no perfil.\n" +"\n" +"Clique para abrir o gerenciador de perfis." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" msgid "Search..." msgstr "Buscar..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Copiar valor para todos os extrusores" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:405 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ocultar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Não exibir este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:419 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Manter este ajuste visível" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:438 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Configurar a visibilidade dos ajustes..." @@ -2747,12 +3144,12 @@ msgstr "" "Este ajuste é normalmente calculado, mas atualmente tem um conjunto absoluto de valores.\n" "Clique para restaurar o valor calculado." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Configuração de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" @@ -2761,12 +3158,37 @@ msgstr "" "Configuração de Impressão desabilitada\n" "Arquivos G-Code não podem ser modificados" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 +msgctxt "@label" +msgid "00h 00min" +msgstr "00h 00min" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +msgctxt "@tooltip" +msgid "Time information" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 +msgctxt "@description" +msgid "Print time" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +msgctxt "@label" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 +msgctxt "@label" +msgid "%1m / ~ %2g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" msgid "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." msgstr "Configuração Recomendada de Impressão

Imprimir com os ajustes recomendados para a impressora, material e qualidade selecionados." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:460 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:481 msgctxt "@tooltip" msgid "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." msgstr "Configuração de Impressão Personalizada

Imprimir com controle fino sobre cada parte do processo de fatiamento." @@ -2816,81 +3238,87 @@ msgid "No printer connected" msgstr "Nenhuma impressora conectada" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" -msgid "Hotend" -msgstr "Hotend" +msgid "Extruder" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:119 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 +msgctxt "@tooltip" +msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "A temperatura atual deste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "A cor do material neste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "O material neste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "O bico inserido neste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:249 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 msgctxt "@label" msgid "Build plate" msgstr "Mesa de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:278 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "A temperatura-alvo da mesa aquecida. A mesa aquecerá ou resfriará para esta temperatura. Se for zero, o aquecimento é desligado." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:310 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:343 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "A temperatura atual da mesa aquecida." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:422 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "A temperatura em que pré-aquecer a mesa." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button" msgid "Pre-heat" msgstr "Pré-aquecer" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:610 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Aquecer a mesa antes de imprimir. Você pode continuar ajustando sua impressão enquanto ela está aquecendo, e não terá que esperar o aquecimento quando estiver pronto pra imprimir." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:677 msgctxt "@label" msgid "Active print" msgstr "Impressão ativa" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:648 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 msgctxt "@label" msgid "Job Name" msgstr "Nome do Trabalho" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 msgctxt "@label" msgid "Printing Time" msgstr "Tempo de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:660 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 msgctxt "@label" msgid "Estimated time left" msgstr "Tempo restante estimado" @@ -3081,53 +3509,53 @@ msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurar a visibilidade dos ajustes..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Por favor carregue um modelo 3D" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Pronto para fatiar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Fatiando..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Pronto para %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Incapaz de Fatiar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Fatiamento indisponível" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Preparar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:288 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Selecione o dispositivo de saída ativo" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 msgctxt "@title:window" msgid "Open file(s)" msgstr "Abrir arquivo(s)" @@ -3219,42 +3647,37 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "A&juda" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 msgctxt "@action:button" msgid "Open File" msgstr "Abrir arquivo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:428 -msgctxt "@action:button" -msgid "View Mode" -msgstr "Modo de Visualização" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 msgctxt "@title:window" msgid "New project" msgstr "Novo projeto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:532 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "Tem certeza que quer iniciar novo projeto? Isto esvaziará a mesa de impressão e quaisquer ajustes não salvos." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:750 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:694 msgctxt "@window:title" msgid "Install Plugin" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:757 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 msgctxt "@title:window" msgid "Open File(s)" msgstr "Abrir Arquivo(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:760 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Encontramos um ou mais arquivos de G-Code entre os arquivos que você selecionou. Você só pode abrir um arquivo de G-Code por vez. Se você quiser abrir um arquivo de G-Code, por favor selecione somente um." @@ -3279,102 +3702,87 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Não exibir resumo do projeto ao salvar novamente" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 +msgctxt "@action:button" +msgid "Save" +msgstr "Salvar" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 msgctxt "@title:tab" msgid "Prepare" msgstr "Preparar" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" -msgid "Print" -msgstr "Imprimir" +msgid "Monitor" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +msgctxt "@label" +msgid "Layer Height" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +msgctxt "@label" +msgid "Print Speed" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +msgctxt "@label" +msgid "Slower" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +msgctxt "@label" +msgid "Faster" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" msgid "Infill" msgstr "Preenchimento:" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "0%" -msgstr "0%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:199 -msgctxt "@label" -msgid "Empty infill will leave your model hollow with low strength." -msgstr "Preenchimento vazio deixará seu modelo oco e com baixa resistência." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:203 -msgctxt "@label" -msgid "20%" -msgstr "20%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:210 -msgctxt "@label" -msgid "Light (20%) infill will give your model an average strength." -msgstr "Preenchimento leve (20%) dará ao seu modelo uma resistência média." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:214 -msgctxt "@label" -msgid "50%" -msgstr "50%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:221 -msgctxt "@label" -msgid "Dense (50%) infill will give your model an above average strength." -msgstr "Preenchimento denso (50%) dará ao seu modelo uma resistência acima da média." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:225 -msgctxt "@label" -msgid "100%" -msgstr "100%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:232 -msgctxt "@label" -msgid "Solid (100%) infill will make your model completely solid." -msgstr "Preenchimento sólido (100%) fará seu modelo completamente sólido." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:236 -msgctxt "@label" -msgid "Gradual" -msgstr "Gradual" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:244 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Preenchimento gradual aumentará gradualmente a quantidade de preenchimento em direção ao topo." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:267 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 +msgctxt "@label" +msgid "Enable gradual" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Generate Support" msgstr "Gerar Suportes" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Gera estrutura que suportarão partes do modelo que têm seções pendentes. Sem estas estruturas, tais partes desabariam durante a impressão." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:718 msgctxt "@label" msgid "Support Extruder" msgstr "Extrusor do Suporte" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:391 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Selecione qual extrusor a usar para o suporte. Isto construirá estruturas de suportes abaixo do modelo para prevenir que o modelo desabe ou seja impresso no ar." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:796 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Aderência à Mesa de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:462 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Habilita imprimir um brim (bainha) ou raft (jangada). Adicionará uma área chata em volta ou sob o objeto que é fácil de remover após a impressão ter finalizado." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:515 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:883 msgctxt "@label" msgid "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides" msgstr "Precisa de ajuda para melhorar sua impressões?
Leia os Guias de Resolução de Problema da Ultimaker" @@ -3411,33 +3819,21 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Registro do Motor de Fatiamento" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:193 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:236 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +msgctxt "@label" +msgid "Check material compatibility" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Clique para verificar a compatibilidade do material em Ultimaker.com." -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:325 -msgctxt "@label" -msgid "Profile:" -msgstr "Perfil:" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" -"Alguns ajustes/sobrepujanças têm valores diferentes dos que estão armazenados no perfil.\n" -"\n" -"Clique para abrir o gerenciador de perfis." - #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -3488,6 +3884,16 @@ msgctxt "name" msgid "God Mode" msgstr "Modo Deus" +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +msgstr "" + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "" + #: ChangeLogPlugin/plugin.json msgctxt "description" msgid "Shows changes since latest checked version." @@ -3518,16 +3924,6 @@ msgctxt "name" msgid "USB printing" msgstr "Impressão USB" -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing X3G files" -msgstr "Provê suporte à escrita de arquivos X3G" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3G Writer" -msgstr "Gerador de X3G" - #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -3548,6 +3944,21 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Conexão de Rede UM3" +#: CuraPrintClusterUpload/plugin.json +msgctxt "name" +msgid "UM3 Network Connection (Cluster)" +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "" + #: CuraSolidWorksPlugin/plugin.json msgctxt "description" msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" @@ -3638,6 +4049,16 @@ msgctxt "name" msgid "Version Upgrade 2.5 to 2.6" msgstr "Atualização de Versão de 2.5 para 2.6" +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -3778,6 +4199,189 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Leitor de Perfis do Cura" +#~ msgctxt "@item:inlistbox" +#~ msgid "X-Ray" +#~ msgstr "Raios X" + +#~ msgctxt "@label" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@info:whatsthis" +#~ msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +#~ msgstr "Aceita G-Code e o envia por wifi para o aplicativo de celular Doodle3D." + +#~ msgctxt "@item:inmenu" +#~ msgid "Doodle3D printing" +#~ msgstr "Impressão Doodle3D" + +#~ msgctxt "@action:button" +#~ msgid "Print with Doodle3D" +#~ msgstr "Imprimir com Doodle3D" + +#~ msgctxt "@info:tooltip" +#~ msgid "Print with " +#~ msgstr "Imprimir com " + +#~ msgctxt "@title:menu" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Enable Scan devices..." +#~ msgstr "Habilitar dispositivos de escaneamento..." + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "Arquivo X3G" + +#~ msgctxt "@info:progress" +#~ msgid "Saving to Removable Drive {0}" +#~ msgstr "Salvando em Unidade Removível {0}" + +#~ msgctxt "@info:status" +#~ msgid "Could not save to {0}: {1}" +#~ msgstr "Incapaz de salvar para {0}: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" +#~ msgstr "Por favor tenha em mente que você precisa reabrir seu arquivo Solidworks manualmente! Recarregar o modelo não irá funcionar!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Layers" +#~ msgstr "Camadas" + +#~ msgid "Browse plugins" +#~ msgstr "Navegar por plugins" + +#~ msgctxt "@item:inmenu" +#~ msgid "Solid" +#~ msgstr "Sólido" + +#~ msgctxt "@label" +#~ msgid "The file {0} already exists. Are you sure you want to overwrite it?" +#~ msgstr "O arquivo {0} já existe. Tem certeza que quer sobrescrevê-lo?" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: {1}" +#~ msgstr "Falha na exportação de perfil para {0}: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: Writer plugin reported failure." +#~ msgstr "Falha na exportação de perfil para {0}: Complemento de gravação acusou falha." + +#~ msgctxt "@info:status" +#~ msgid "Exported profile to {0}" +#~ msgstr "Perfil exportado para {0}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Falha na importação de perfil de {0}: {1}" + +#~ msgctxt "@title:window" +#~ msgid "Doodle3D Settings" +#~ msgstr "Ajustes de Doodle3D" + +#~ msgctxt "@title:window" +#~ msgid "Print to: %1" +#~ msgstr "Imprimir em: %1" + +#~ msgctxt "@label" +#~ msgid "Extruder Temperature: %1/%2°C" +#~ msgstr "Temperatura do Extrusor: %1/%2°C" + +#~ msgctxt "@label" +#~ msgid "Bed Temperature: %1/%2°C" +#~ msgstr "Temperatura da Mesa: %1/%2°C" + +#~ msgctxt "@label" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "@label" +#~ msgid "View Mode: Layers" +#~ msgstr "Modo de Visão: Camadas" + +#~ msgctxt "@info:status" +#~ msgid "Could not import material %1: %2" +#~ msgstr "Não foi possível importar material%1: %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully imported material %1" +#~ msgstr "Material %1 importado com sucesso" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export material to %1: %2" +#~ msgstr "Falha ao exportar material para %1: %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully exported material to %1" +#~ msgstr "Material %1 exportado com sucesso" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g / ~ %4 %3" +#~ msgstr "%1 m / ~ %2 g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g" +#~ msgstr "%1 m / ~ %2 g" + +#~ msgctxt "@label" +#~ msgid "Hotend" +#~ msgstr "Hotend" + +#~ msgctxt "@action:button" +#~ msgid "View Mode" +#~ msgstr "Modo de Visualização" + +#~ msgctxt "@title:tab" +#~ msgid "Print" +#~ msgstr "Imprimir" + +#~ msgctxt "@label" +#~ msgid "0%" +#~ msgstr "0%" + +#~ msgctxt "@label" +#~ msgid "Empty infill will leave your model hollow with low strength." +#~ msgstr "Preenchimento vazio deixará seu modelo oco e com baixa resistência." + +#~ msgctxt "@label" +#~ msgid "20%" +#~ msgstr "20%" + +#~ msgctxt "@label" +#~ msgid "Light (20%) infill will give your model an average strength." +#~ msgstr "Preenchimento leve (20%) dará ao seu modelo uma resistência média." + +#~ msgctxt "@label" +#~ msgid "50%" +#~ msgstr "50%" + +#~ msgctxt "@label" +#~ msgid "Dense (50%) infill will give your model an above average strength." +#~ msgstr "Preenchimento denso (50%) dará ao seu modelo uma resistência acima da média." + +#~ msgctxt "@label" +#~ msgid "100%" +#~ msgstr "100%" + +#~ msgctxt "@label" +#~ msgid "Solid (100%) infill will make your model completely solid." +#~ msgstr "Preenchimento sólido (100%) fará seu modelo completamente sólido." + +#~ msgctxt "@label" +#~ msgid "Gradual" +#~ msgstr "Gradual" + +#~ msgctxt "description" +#~ msgid "Provides support for writing X3G files" +#~ msgstr "Provê suporte à escrita de arquivos X3G" + +#~ msgctxt "name" +#~ msgid "X3G Writer" +#~ msgstr "Gerador de X3G" + #~ msgctxt "@label" #~ msgid "Machine Settings action" #~ msgstr "Ação de ajustes da máquina" diff --git a/resources/i18n/pt_BR/fdmextruder.def.json.po b/resources/i18n/pt_BR/fdmextruder.def.json.po index 0b9a8023d9..e6a18bbe8a 100644 --- a/resources/i18n/pt_BR/fdmextruder.def.json.po +++ b/resources/i18n/pt_BR/fdmextruder.def.json.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" diff --git a/resources/i18n/pt_BR/fdmprinter.def.json.po b/resources/i18n/pt_BR/fdmprinter.def.json.po index fd4ca3fd9c..0633fd6552 100644 --- a/resources/i18n/pt_BR/fdmprinter.def.json.po +++ b/resources/i18n/pt_BR/fdmprinter.def.json.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -760,16 +760,6 @@ msgctxt "shell description" msgid "Shell" msgstr "Perímetro" -#: fdmprinter.def.json -msgctxt "wall_extruder_nr label" -msgid "Wall Extruder" -msgstr "Extrusor das Paredes" - -#: fdmprinter.def.json -msgctxt "wall_extruder_nr description" -msgid "The extruder train used for printing the walls. This is used in multi-extrusion." -msgstr "O carro extrusor usado para imprimir paredes. Este ajuste é usado em multi-extrusão." - #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" msgid "Outer Wall Extruder" @@ -1130,6 +1120,11 @@ msgctxt "z_seam_type option random" msgid "Random" msgstr "Aleatório" +#: fdmprinter.def.json +msgctxt "z_seam_type option sharpest_corner" +msgid "Sharpest Corner" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1150,6 +1145,36 @@ msgctxt "z_seam_y description" msgid "The Y coordinate of the position near where to start printing each part in a layer." msgstr "A coordenada Y da posição onde iniciar a impressão de cada parte em uma camada." +#: fdmprinter.def.json +msgctxt "z_seam_corner label" +msgid "Seam Corner Preference" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner description" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_none" +msgid "None" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_inner" +msgid "Hide Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_outer" +msgid "Expose Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_any" +msgid "Hide or Expose Seam" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1170,6 +1195,16 @@ msgctxt "skin_no_small_gaps_heuristic description" msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." msgstr "Quando o modelo tem pequenas lacunas verticais, aproximadamente 5% de tempo de computação adicional pode ser gasto ao gerar camada externa superior e inferior nestes espaços estreitos. Em tal caso, desabilite este ajuste." +#: fdmprinter.def.json +msgctxt "skin_outline_count label" +msgid "Extra Skin Wall Count" +msgstr "Contagem de Paredes Extras de Contorno" + +#: fdmprinter.def.json +msgctxt "skin_outline_count description" +msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." +msgstr "Substitui a parte externa do padrão superior/inferir com um número de linhas concêntricas. Usar uma ou duas linhas melhora tetos e topos que começam a ser construídos em cima de padrões de preenchimento." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1217,8 +1252,8 @@ msgstr "Padrão de Preenchimento" #: fdmprinter.def.json msgctxt "infill_pattern description" -msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "Padrão ou estampa do material de preenchimento da impressão. Os preenchimentos de linha e ziguezague trocam de direção em camadas alternadas, reduzindo custo de material. Os padrões de grade, triângulo, cúbico, tetraédrico e concêntrico são totalmente impressos a cada camada. Os padrões cúbico e tetraédrico mudam a cada camada para prover uma distribuição mais igualitária de força para cada direção." +msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1247,8 +1282,13 @@ msgstr "Subdivisão Cúbica" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" -msgid "Tetrahedral" -msgstr "Tetraédrico" +msgid "Octet" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option quarter_cubic" +msgid "Quarter Cubic" +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1265,6 +1305,26 @@ msgctxt "infill_pattern option zigzag" msgid "Zig Zag" msgstr "Ziguezague" +#: fdmprinter.def.json +msgctxt "infill_pattern option cross" +msgid "Cross" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross_3d" +msgid "Cross 3D" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill label" +msgid "Connect Infill Lines" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill description" +msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" @@ -1386,34 +1446,34 @@ msgid "Don't generate areas of infill smaller than this (use skin instead)." msgstr "Não gerar preenchimento para áreas menores que esta (usar contorno)." #: fdmprinter.def.json -msgctxt "expand_skins_into_infill label" -msgid "Expand Skins Into Infill" -msgstr "Expandir Contorno Para Preenchimento" +msgctxt "skin_preshrink label" +msgid "Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_skins_into_infill description" -msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." -msgstr "Expandir áreas de perímetro das partes superiores e inferiores de superfícies chatas. Por default, o perímetro para sob as paredes que rodeiam o preenchimento mas isso pode fazer com que buracos apareçam caso a densidade de preenchimento seja baixa. Este ajuste estenda os perímetros além das linhas de parede de modo que o preenchimento da próxima camada fique em cima de perímetros." +msgctxt "skin_preshrink description" +msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins label" -msgid "Expand Top Skins Into Infill" -msgstr "Expandir Contorno do Topo Para Preenchimento" +msgctxt "top_skin_preshrink label" +msgid "Top Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins description" -msgid "Expand the top skin areas (areas with air above) so that they support infill above." -msgstr "Expande as áreas de perímetro do topo (áreas com ar acima delas) de modo que suportem o preenchimento de cima." +msgctxt "top_skin_preshrink description" +msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins label" -msgid "Expand Bottom Skins Into Infill" -msgstr "Expande Contorno da Base Para Preenchimento" +msgctxt "bottom_skin_preshrink label" +msgid "Bottom Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins description" -msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." -msgstr "Expande as áreas de perímetro da base (áreas com ar abaixo delas) de modo que se ancorem nas camadas de preenchimento embaixo e acima." +msgctxt "bottom_skin_preshrink description" +msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1422,8 +1482,28 @@ msgstr "Distância de Expansão do Contorno" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" -msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." -msgstr "A distância que os contornos são expandidos para dentro do preenchimento. A distância default é suficiente para ligar o vão entre as linhas de preenchimento e impedirá que buracos apareçam no contorno onde ele encontrar a parede em que a densidade de preenchimento é baixa. Uma distância menor pode ser suficiente." +msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance label" +msgid "Top Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance description" +msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance label" +msgid "Bottom Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance description" +msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." +msgstr "" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -1805,16 +1885,6 @@ msgctxt "speed_topbottom description" msgid "The speed at which top/bottom layers are printed." msgstr "Velocidade em que as camadas superiores e inferiores são impressas." -#: fdmprinter.def.json -msgctxt "speed_ironing label" -msgid "Ironing Speed" -msgstr "Velocidade de Passar o Ferro" - -#: fdmprinter.def.json -msgctxt "speed_ironing description" -msgid "The speed at which to pass over the top surface." -msgstr "A velocidade com a qual o ajuste de passar ferro é aplicado sobre a superfície superior." - #: fdmprinter.def.json msgctxt "speed_support label" msgid "Support Speed" @@ -2045,16 +2115,6 @@ msgctxt "acceleration_topbottom description" msgid "The acceleration with which top/bottom layers are printed." msgstr "Aceleração com que as camadas superiores e inferiores são impressas." -#: fdmprinter.def.json -msgctxt "acceleration_ironing label" -msgid "Ironing Acceleration" -msgstr "Aceleração de Passar a Ferro" - -#: fdmprinter.def.json -msgctxt "acceleration_ironing description" -msgid "The acceleration with which ironing is performed." -msgstr "A aceleração com que o recurso de passar a ferro é feito." - #: fdmprinter.def.json msgctxt "acceleration_support label" msgid "Support Acceleration" @@ -2245,16 +2305,6 @@ msgctxt "jerk_topbottom description" msgid "The maximum instantaneous velocity change with which top/bottom layers are printed." msgstr "A máxima mudança de velocidade instantânea em uma direção com que as camadas superiores e inferiores são impressas." -#: fdmprinter.def.json -msgctxt "jerk_ironing label" -msgid "Ironing Jerk" -msgstr "Jerk de Passar a Ferro" - -#: fdmprinter.def.json -msgctxt "jerk_ironing description" -msgid "The maximum instantaneous velocity change while performing ironing." -msgstr "A máxima mudança de velocidade instantânea em uma direção com que o recurso de passar a ferro é feito." - #: fdmprinter.def.json msgctxt "jerk_support label" msgid "Support Jerk" @@ -2770,6 +2820,11 @@ msgctxt "support_pattern option zigzag" msgid "Zig Zag" msgstr "Ziguezague" +#: fdmprinter.def.json +msgctxt "support_pattern option cross" +msgid "Cross" +msgstr "" + #: fdmprinter.def.json msgctxt "support_connect_zigzags label" msgid "Connect Support ZigZags" @@ -2782,23 +2837,33 @@ msgstr "Conecta os ziguezagues. Isto aumentará a força da estrutura de suporte #: fdmprinter.def.json msgctxt "support_skip_some_zags label" -msgid "Skip Some ZigZags Connections" -msgstr "Pular Algumas Conexões de Ziguezague" +msgid "Break Up Support In Chunks" +msgstr "" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" -msgid "Skip some ZigZags connections to make the support structure easier to break." -msgstr "Pula algumas conexões de Ziguezague para fazer a estrutura de suporte mais fácil de ser removida." +msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm description" +msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count label" -msgid "ZigZag Connection Skip Count" -msgstr "Contagem de Pulos das Conexões de Ziguezague" +msgid "Support Chunk Line Count" +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" -msgid "Skip one in every N connection lines to make the support structure easier to break." -msgstr "Pular uma em cada N linhas de conexão para fazer a estrutura de suporte mais fácil de ser removida." +msgid "Skip one in every N connection lines to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3384,6 +3449,26 @@ msgctxt "brim_outside_only description" msgid "Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much." msgstr "Imprimir o Brim somente no lado de fora do modelo. Isto reduz a quantidade de brim a ser removida no final, e não reduz tanto a aderência à mesa." +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 label" +msgid "Initial Layer Z Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 description" +msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers label" +msgid "Z Offset Taper Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers description" +msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3394,6 +3479,16 @@ msgctxt "raft_margin description" msgid "If the raft is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print." msgstr "Se o Raft estiver habilitado, esta é a área extra do raft em volta do modelo que também faz parte dele. Aumentar esta margem criará um raft mais forte mas também gastará mais material e deixará menos área para sua impressão." +#: fdmprinter.def.json +msgctxt "raft_smoothing label" +msgid "Raft Smoothing" +msgstr "" + +#: fdmprinter.def.json +msgctxt "raft_smoothing description" +msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_airgap label" msgid "Raft Air Gap" @@ -4069,6 +4164,16 @@ msgctxt "smooth_spiralized_contours description" msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." msgstr "Suaviza os contornos espiralizados para reduzir a visibilidade da costura em Z (esta costura será quase invisível na impressão mas ainda pode ser vista na visão de camadas). Note que suavizar tenderá a remover detalhes finos de superfície." +#: fdmprinter.def.json +msgctxt "relative_extrusion label" +msgid "Relative Extrusion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "relative_extrusion description" +msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." +msgstr "" + #: fdmprinter.def.json msgctxt "experimental label" msgid "Experimental" @@ -4079,6 +4184,16 @@ msgctxt "experimental description" msgid "experimental!" msgstr "experimental!" +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "" + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4189,16 +4304,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "A velocidade pela qual se mover durante a desengrenagem, relativa à velocidade do caminho de extrusão. Um valor ligeiramente menor que 100% é sugerido, já que durante a desengrenagem a pressão dentro do hotend cai." -#: fdmprinter.def.json -msgctxt "skin_outline_count label" -msgid "Extra Skin Wall Count" -msgstr "Contagem de Paredes Extras de Contorno" - -#: fdmprinter.def.json -msgctxt "skin_outline_count description" -msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." -msgstr "Substitui a parte externa do padrão superior/inferir com um número de linhas concêntricas. Usar uma ou duas linhas melhora tetos e topos que começam a ser construídos em cima de padrões de preenchimento." - #: fdmprinter.def.json msgctxt "skin_alternate_rotation label" msgid "Alternate Skin Rotation" @@ -4209,6 +4314,26 @@ msgctxt "skin_alternate_rotation description" msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." msgstr "Alterna a direção em que as camadas superiores e inferiores são impressas. Normalmente elas são impressas somente na diagonal. Este ajuste permite direções somente no X e somente no Y." +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size label" +msgid "Cross 3D Pocket Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size description" +msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly label" +msgid "Alternate Cross 3D Pockets" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly description" +msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." +msgstr "" + #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" msgid "Spaghetti Infill" @@ -4628,6 +4753,16 @@ msgctxt "ironing_enabled description" msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." msgstr "Passar sobre a superfície superior depois de impressa, mas sem extrudar material. A idéia é derreter o plástico do topo ainda mais, criando uma superfície mais lisa." +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer label" +msgid "Iron Only Highest Layer" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer description" +msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." +msgstr "" + #: fdmprinter.def.json msgctxt "ironing_pattern label" msgid "Ironing Pattern" @@ -4678,6 +4813,36 @@ msgctxt "ironing_inset description" msgid "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print." msgstr "A distância a manter das arestas do modelo. Passar a ferro as arestas da malha podem resultar em um aspecto entalhado da sua peça." +#: fdmprinter.def.json +msgctxt "speed_ironing label" +msgid "Ironing Speed" +msgstr "Velocidade de Passar o Ferro" + +#: fdmprinter.def.json +msgctxt "speed_ironing description" +msgid "The speed at which to pass over the top surface." +msgstr "A velocidade com a qual o ajuste de passar ferro é aplicado sobre a superfície superior." + +#: fdmprinter.def.json +msgctxt "acceleration_ironing label" +msgid "Ironing Acceleration" +msgstr "Aceleração de Passar a Ferro" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing description" +msgid "The acceleration with which ironing is performed." +msgstr "A aceleração com que o recurso de passar a ferro é feito." + +#: fdmprinter.def.json +msgctxt "jerk_ironing label" +msgid "Ironing Jerk" +msgstr "Jerk de Passar a Ferro" + +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "A máxima mudança de velocidade instantânea em uma direção com que o recurso de passar a ferro é feito." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4738,6 +4903,66 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Matriz de transformação a ser aplicada ao modelo após o carregamento do arquivo." +#~ msgctxt "wall_extruder_nr label" +#~ msgid "Wall Extruder" +#~ msgstr "Extrusor das Paredes" + +#~ msgctxt "wall_extruder_nr description" +#~ msgid "The extruder train used for printing the walls. This is used in multi-extrusion." +#~ msgstr "O carro extrusor usado para imprimir paredes. Este ajuste é usado em multi-extrusão." + +#~ msgctxt "infill_pattern description" +#~ msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." +#~ msgstr "Padrão ou estampa do material de preenchimento da impressão. Os preenchimentos de linha e ziguezague trocam de direção em camadas alternadas, reduzindo custo de material. Os padrões de grade, triângulo, cúbico, tetraédrico e concêntrico são totalmente impressos a cada camada. Os padrões cúbico e tetraédrico mudam a cada camada para prover uma distribuição mais igualitária de força para cada direção." + +#~ msgctxt "infill_pattern option tetrahedral" +#~ msgid "Tetrahedral" +#~ msgstr "Tetraédrico" + +#~ msgctxt "expand_skins_into_infill label" +#~ msgid "Expand Skins Into Infill" +#~ msgstr "Expandir Contorno Para Preenchimento" + +#~ msgctxt "expand_skins_into_infill description" +#~ msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." +#~ msgstr "Expandir áreas de perímetro das partes superiores e inferiores de superfícies chatas. Por default, o perímetro para sob as paredes que rodeiam o preenchimento mas isso pode fazer com que buracos apareçam caso a densidade de preenchimento seja baixa. Este ajuste estenda os perímetros além das linhas de parede de modo que o preenchimento da próxima camada fique em cima de perímetros." + +#~ msgctxt "expand_upper_skins label" +#~ msgid "Expand Top Skins Into Infill" +#~ msgstr "Expandir Contorno do Topo Para Preenchimento" + +#~ msgctxt "expand_upper_skins description" +#~ msgid "Expand the top skin areas (areas with air above) so that they support infill above." +#~ msgstr "Expande as áreas de perímetro do topo (áreas com ar acima delas) de modo que suportem o preenchimento de cima." + +#~ msgctxt "expand_lower_skins label" +#~ msgid "Expand Bottom Skins Into Infill" +#~ msgstr "Expande Contorno da Base Para Preenchimento" + +#~ msgctxt "expand_lower_skins description" +#~ msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." +#~ msgstr "Expande as áreas de perímetro da base (áreas com ar abaixo delas) de modo que se ancorem nas camadas de preenchimento embaixo e acima." + +#~ msgctxt "expand_skins_expand_distance description" +#~ msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." +#~ msgstr "A distância que os contornos são expandidos para dentro do preenchimento. A distância default é suficiente para ligar o vão entre as linhas de preenchimento e impedirá que buracos apareçam no contorno onde ele encontrar a parede em que a densidade de preenchimento é baixa. Uma distância menor pode ser suficiente." + +#~ msgctxt "support_skip_some_zags label" +#~ msgid "Skip Some ZigZags Connections" +#~ msgstr "Pular Algumas Conexões de Ziguezague" + +#~ msgctxt "support_skip_some_zags description" +#~ msgid "Skip some ZigZags connections to make the support structure easier to break." +#~ msgstr "Pula algumas conexões de Ziguezague para fazer a estrutura de suporte mais fácil de ser removida." + +#~ msgctxt "support_zag_skip_count label" +#~ msgid "ZigZag Connection Skip Count" +#~ msgstr "Contagem de Pulos das Conexões de Ziguezague" + +#~ msgctxt "support_zag_skip_count description" +#~ msgid "Skip one in every N connection lines to make the support structure easier to break." +#~ msgstr "Pular uma em cada N linhas de conexão para fazer a estrutura de suporte mais fácil de ser removida." + #~ msgctxt "machine_show_variants label" #~ msgid "Show machine variants" #~ msgstr "Mostrar variantes da máquina" diff --git a/resources/i18n/ru_RU/cura.po b/resources/i18n/ru_RU/cura.po index 6ec67a1cd8..e6fb0328c2 100755 --- a/resources/i18n/ru_RU/cura.po +++ b/resources/i18n/ru_RU/cura.po @@ -18,15 +18,15 @@ msgstr "" "X-Generator: Poedit 2.0\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:28 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" msgstr "Параметры принтера" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" -msgid "X-Ray" -msgstr "Рентген" +msgid "X-Ray view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -38,40 +38,69 @@ msgctxt "@item:inlistbox" msgid "GCode File" msgstr "Файл GCode" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:13 -msgctxt "@label" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:17 -msgctxt "@info:whatsthis" -msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "Принимает G-Code и отправляет его через WiFi на Doodle3D WiFi-Box." - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:36 -msgctxt "@item:inmenu" -msgid "Doodle3D printing" -msgstr "Печать Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:37 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" -msgid "Print with Doodle3D" -msgstr "Печать через Doodle3D" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:38 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 +msgctxt "@properties:tooltip" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Отмена" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 +msgctxt "@info:status" +msgid "Sending data to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 +msgctxt "@info:status" +msgid "Unable to send data to Doodle3D Connect. Is another job still active?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 +msgctxt "@info:status" +msgid "File sent to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect.." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" -msgid "Print with " -msgstr "Печать через " - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:49 -msgctxt "@title:menu" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:50 -msgctxt "@item:inlistbox" -msgid "Enable Scan devices..." -msgstr "Активировать сканеры..." +msgid "Open the Doodle3D Connect web interface" +msgstr "" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -113,16 +142,36 @@ msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Невозможно запустить новое задание, потому что принтер занят или не подключен." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +msgctxt "@info:title" +msgid "Print Details" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "Данный принтер не поддерживает печать через USB, потому что он использует UltiGCode диалект." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Невозможно запустить новую задачу, так как принтер не поддерживает печать через USB." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:909 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 +msgctxt "@info:title" +msgid "Warning" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." @@ -134,10 +183,10 @@ msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "Не могу найти прошивку, подходящую для принтера в %s." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:14 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G файл" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +msgctxt "@info:title" +msgid "Printer Firmware" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -152,47 +201,79 @@ msgstr "Сохранить на внешний носитель {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 #, python-brace-format -msgctxt "@info:progress" +msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "Сохранение на внешний носитель {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +msgctxt "@info:title" +msgid "Saving" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "Не могу сохранить {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format -msgctxt "@info:status" -msgid "Saved to Removable Drive {0} as {1}" -msgstr "Сохранено на внешний носитель {0} как {1}" +msgctxt "@info:status Don't translate the tag {device}!" +msgid "Could not find a file name when trying to write to {device}." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -msgctxt "@action:button" -msgid "Eject" -msgstr "Извлечь" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -#, python-brace-format -msgctxt "@action" -msgid "Eject removable device {0}" -msgstr "Извлекает внешний носитель {0}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:138 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #, python-brace-format msgctxt "@info:status" msgid "Could not save to removable drive {0}: {1}" msgstr "Невозможно сохранить на внешний носитель {0}: {1}" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:148 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:675 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:683 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:145 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:152 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 +msgctxt "@info:title" +msgid "Error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +#, python-brace-format +msgctxt "@info:status" +msgid "Saved to Removable Drive {0} as {1}" +msgstr "Сохранено на внешний носитель {0} как {1}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +msgctxt "@info:title" +msgid "File Saved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +msgctxt "@action:button" +msgid "Eject" +msgstr "Извлечь" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +#, python-brace-format +msgctxt "@action" +msgid "Eject removable device {0}" +msgstr "Извлекает внешний носитель {0}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 #, python-brace-format msgctxt "@info:status" msgid "Ejected {0}. You can now safely remove the drive." msgstr "Извлечено {0}. Вы можете теперь безопасно извлечь носитель." -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:150 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 +msgctxt "@info:title" +msgid "Safely Remove Hardware" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format msgctxt "@info:status" msgid "Failed to eject {0}. Another program may be using the drive." @@ -203,219 +284,351 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Внешний носитель" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:49 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Печать через сеть" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Печать через сеть" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:156 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 msgctxt "@info:status" msgid "Access to the printer requested. Please approve the request on the printer" msgstr "Запрошен доступ к принтеру. Пожалуйста, подтвердите запрос на принтере" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +msgctxt "@info:title" +msgid "Connection status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 msgctxt "@info:status" msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:468 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@action:button" msgid "Retry" msgstr "Повторить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Послать запрос доступа ещё раз" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Доступ к принтеру получен" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 msgctxt "@info:status" msgid "No access to print with this printer. Unable to send print job." msgstr "Нет доступа к использованию этого принтера. Невозможно отправить задачу на печать." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:28 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:72 msgctxt "@action:button" msgid "Request Access" msgstr "Запросить доступ" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:71 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "Отправить запрос на доступ к принтеру" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:358 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:375 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 msgctxt "@info:status" msgid "Connected over the network. Please approve the access request on the printer." msgstr "Подключен по сети. Пожалуйста, подтвердите запрос на принтере." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:365 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:382 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 msgctxt "@info:status" msgid "Connected over the network." msgstr "Подключен по сети." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:378 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "Подключен по сети. Нет доступа к управлению принтером." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:383 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:400 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 msgctxt "@info:status" msgid "Access request was denied on the printer." msgstr "Запрос доступа к принтеру был отклонён." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:386 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:403 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Access request failed due to a timeout." msgstr "Запрос доступа был неудачен из-за таймаута." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:450 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:467 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "The connection with the network was lost." msgstr "Соединение с сетью было потеряно." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:481 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 msgctxt "@info:status" msgid "The connection with the printer was lost. Check your printer to see if it is connected." msgstr "Соединение с принтером было потеряно. Проверьте свой принтер, подключен ли он." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:630 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:649 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 #, python-format msgctxt "@info:status" msgid "Unable to start a new print job, printer is busy. Current printer status is %s." msgstr "Невозможно запустить новую задачу на печать, принтер занят. Текущий статус принтера %s." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:654 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Невозможно запустить новую задачу на печать. PrinterCore не был загружен в слот {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:661 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:682 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Невозможно запустить новую задачу на печать. Материал не загружен в слот {0}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:670 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Недостаточно материала в катушке {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:680 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Разный PrintCore (Cura: {0}, Принтер: {1}) выбран для экструдера {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:694 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:716 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@label" msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Разный материал (Cura: {0}, Принтер: {1}) выбран для экструдера {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:724 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "PrintCore {0} не откалибровано. Необходимо выполнить XY калибровку для принтера." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:707 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:729 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "Вы уверены, что желаете печатать с использованием выбранной конфигурации?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:730 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 msgctxt "@label" msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "Есть несовпадение между конфигурацией или калибровкой принтера и Cura. Для лучшего результата, всегда производите слайсинг для PrintCore и материала, которые установлены в вашем принтере." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:736 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Несовпадение конфигурации" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:815 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Отправка данных на принтер" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:816 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:46 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:137 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Отмена" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +msgctxt "@info:title" +msgid "Sending Data" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:884 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Невозможно отправить данные на принтер. Другая задача всё ещё активна?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1018 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1050 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Прерывание печати…" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1024 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Печать прервана. Пожалуйста, проверьте принтер" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1030 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Печать приостановлена..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1032 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Печать возобновлена..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1175 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Синхронизация с вашим принтером" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1177 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "Желаете использовать текущую конфигурацию принтера в Cura?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1220 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 msgctxt "@label" msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "Модуль PrintCore и/или материал в вашем принтере отличается от тех, что вы используете в текущем проекте. Для наилучшего результата всегда указывайте правильный модуль PrintCore и материалы, которые вставлены в ваш принтер." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.py:19 msgctxt "@action" msgid "Connect via Network" msgstr "Подключиться через сеть" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:172 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#, python-brace-format +msgctxt "Count is number of printers." +msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#, python-brace-format +msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#, python-brace-format +msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +msgctxt "@info:status" +msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#, python-brace-format +msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Скачать" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +msgctxt "@info" +msgid "Could not access update information." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" msgstr "Возникли ошибки во время открытия файла SolidWorks! Пожалуйста, проверьте может ли SolidWorks открыть этот файл без проблем!" @@ -434,17 +647,12 @@ msgstr "Файл сборки SolidWorks" msgid "Configure" msgstr "Настройка" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:129 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 #, python-format msgctxt "@info:status" msgid "Error while starting %s!" msgstr "Ошибка при запуске %s!" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:207 -msgctxt "@info:status" -msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" -msgstr "Запомните, пожалуйста, что вы должны вручную открыть заново файл SolidWorks файл! Перезагрузка моделей не поможет!" - #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 msgid "Modify G-Code" msgstr "Изменить G-код" @@ -454,7 +662,12 @@ msgctxt "@info" msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." msgstr "Cura собирает анонимную статистику о нарезке модели. Вы можете отключить это в настройках." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:44 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 +msgctxt "@info:title" +msgid "Collecting Data" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" msgid "Dismiss" msgstr "Отменить" @@ -472,14 +685,19 @@ msgstr "Файл G-code" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" -msgid "Layers" -msgstr "Слои" +msgid "Layer view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura не аккуратно отображает слои при использовании печати через кабель" +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 +msgctxt "@info:title" +msgid "Layer View" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -505,24 +723,31 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF изображение" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:281 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "Выбранный материал несовместим с выбранным принтером или конфигурацией." +msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:308 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:307 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 +msgctxt "@info:title" +msgid "Unable to slice" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Не могу выполнить слайсинг на текущих настройках. Проверьте следующие настройки: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:317 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:306 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "Слайсинг невозможен так как черновая башня или её позиция неверные." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:325 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:315 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Нечего нарезать, так как ни одна модель не попадает в объём принтера. Пожалуйста, отмасштабируйте или поверните модель." @@ -533,6 +758,11 @@ msgctxt "@info:status" msgid "Processing Layers" msgstr "Обработка слоёв" +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +msgctxt "@info:title" +msgid "Information" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" msgid "Per Model Settings" @@ -544,13 +774,13 @@ msgid "Configure Per Model Settings" msgstr "Правка параметров модели" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:475 msgctxt "@title:tab" msgid "Recommended" msgstr "Рекомендованная" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:459 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 msgctxt "@title:tab" msgid "Custom" msgstr "Своя" @@ -561,25 +791,37 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Файл 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:122 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1050 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 msgctxt "@label" msgid "Nozzle" msgstr "Сопло" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 +msgctxt "@menuitem" msgid "Browse plugins" -msgstr "Просмотр плагинов" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:120 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +msgctxt "@info:tile" +msgid "Warning" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" msgid "Plugin browser" msgstr "Браузер плагинов" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" -msgid "Solid" -msgstr "Твёрдое тело" +msgid "Solid view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -591,7 +833,13 @@ msgctxt "@info:status" msgid "Parsing G-code" msgstr "Обработка G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:365 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Перед отправкой G-code на принтер удостоверьтесь в его соответствии вашему принтеру и его настройкам. Возможны неточности в G-code." @@ -613,7 +861,7 @@ msgid "Cura Project 3MF file" msgstr "3MF файл проекта Cura" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Выбор обновлений" @@ -633,18 +881,73 @@ msgctxt "@action" msgid "Level build plate" msgstr "Выравнивание стола" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:247 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Внешняя стенка" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Внутренние стенки" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Покрытие" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Заполнение" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Заполнение поддержек" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Связующий слой поддержек" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support" +msgstr "Поддержки" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Перемещение" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Откаты" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Other" +msgstr "Другое" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Предообратка файла {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 msgctxt "@item:material" msgid "No material loaded" msgstr "Материал не загружен" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 msgctxt "@item:material" msgid "Unknown material" msgstr "Неизвестный материал" @@ -654,35 +957,56 @@ msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Поиск места для новых объектов" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:85 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Невозможно разместить все объекты внутри печатаемого объёма" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:417 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 msgctxt "@title:window" msgid "File Already Exists" msgstr "Файл уже существует" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:418 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 #, python-brace-format -msgctxt "@label" +msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "Файл {0} уже существует. Вы желаете его перезаписать?" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:801 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" msgid "Custom" msgstr "Своё" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:805 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 msgctxt "@label" msgid "Custom Material" msgstr "Собственный материал" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +msgctxt "@info:status" +msgid "The selected material is incompatible with the selected machine or configuration." +msgstr "Выбранный материал несовместим с выбранным принтером или конфигурацией." + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:109 +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 +msgctxt "@info:title" +msgid "Incompatible Material" +msgstr "" + #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." msgid "The selected material diameter causes the material to become incompatible with the current printer." @@ -700,70 +1024,86 @@ msgstr "Отмена изменения диаметра материала." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "Невозможно экспортировать профиль в {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:148 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "Невозможно экспортировать профиль в {0}: Плагин записи уведомил об ошибке." +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "Экспортирование профиля в {0}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:199 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:208 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:242 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +msgctxt "@info:title" +msgid "Export Details" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:213 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:247 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "Невозможно импортировать профиль из {0}: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:210 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:246 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Успешно импортирован профиль {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:249 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Профиль {0} имеет неизвестный тип файла или повреждён." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:267 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:272 msgctxt "@label" msgid "Custom profile" msgstr "Собственный профиль" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:278 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "У профайла отсутствует тип качества." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:300 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Невозможно найти тип качества {0} для текущей конфигурации." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:95 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "Высота печатаемого объёма была уменьшена до значения параметра \"Последовательность печати\", чтобы предотвратить касание портала за напечатанные детали." +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 +msgctxt "@info:title" +msgid "Build Volume" +msgstr "" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Размножение и размещение объектов" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "" + #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" msgid "Crash Report" @@ -784,34 +1124,34 @@ msgctxt "@action:button" msgid "Open Web Page" msgstr "Открыть веб страницу" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:248 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Загрузка принтеров..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:610 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Настройка сцены..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:652 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Загрузка интерфейса..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:815 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f мм" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1285 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1295 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Только один G-code файла может быть загружен в момент времени. Пропускаю импортирование {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1294 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1304 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" @@ -841,12 +1181,12 @@ msgstr "X (Ширина)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:286 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:838 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:839 msgctxt "@label" msgid "mm" msgstr "мм" @@ -936,113 +1276,72 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "Разница в высоте от кончика сопла до портала (по осям X и Y). Используется для предотвращения столкновений с уже напечатанной частью и головой в режиме \"По отдельности\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Количество экструдеров" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 msgctxt "@tooltip" msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." msgstr "Номинальный диаметр материала, поддерживаемый принтером. Точный диаметр будет указан в материале и/или в профиле." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:290 msgctxt "@label" msgid "Material diameter" msgstr "Диаметр материала" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:297 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:388 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 msgctxt "@label" msgid "Nozzle size" msgstr "Диаметр сопла" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:315 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 msgctxt "@label" msgid "Start Gcode" msgstr "Начало G-кода" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:325 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "Команды в G-коде, которые будут выполнены при старте печати." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:334 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:335 msgctxt "@label" msgid "End Gcode" msgstr "Конец G-кода" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:344 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "Команды в G-коде, которые будут выполнены в конце печати." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:376 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:377 msgctxt "@label" msgid "Nozzle Settings" msgstr "Параметры сопла" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:398 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 msgctxt "@label" msgid "Nozzle offset X" msgstr "Смещение сопла по оси X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:410 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Смещение сопла по оси Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:431 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "G-код старта экструдера" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:449 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 msgctxt "@label" msgid "Extruder End Gcode" msgstr "G-код завершения экструдера" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:20 -msgctxt "@title:window" -msgid "Doodle3D Settings" -msgstr "Настройки Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:53 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 -msgctxt "@action:button" -msgid "Save" -msgstr "Сохранить" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:23 -msgctxt "@title:window" -msgid "Print to: %1" -msgstr "Печатать на: %1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:40 -msgctxt "@label" -msgid "Extruder Temperature: %1/%2°C" -msgstr "Температура экструдера: %1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:45 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:46 -msgctxt "@label" -msgid "Bed Temperature: %1/%2°C" -msgstr "Температура стола: %1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:64 -msgctxt "@label" -msgid "%1" -msgstr "%1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:82 -msgctxt "@action:button" -msgid "Print" -msgstr "Печать" - #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" msgid "Changelog" @@ -1051,9 +1350,10 @@ msgstr "Журнал изменений" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:55 #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:446 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:306 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:78 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:125 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 @@ -1107,11 +1407,13 @@ msgid "Unknown error code: %1" msgstr "Неизвестный код ошибки: %1" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:55 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Подключение к сетевому принтеру" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:65 msgctxt "@label" msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" @@ -1123,17 +1425,20 @@ msgstr "" "Укажите ваш принтер в списке ниже:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 msgctxt "@action:button" msgid "Add" msgstr "Добавить" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:85 msgctxt "@action:button" msgid "Edit" msgstr "Правка" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 @@ -1142,87 +1447,210 @@ msgid "Remove" msgstr "Удалить" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:33 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:104 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:35 msgctxt "@action:button" msgid "Refresh" msgstr "Обновить" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:196 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:196 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Если ваш принтер отсутствует в списке, обратитесь к руководству по решению проблем с сетевой печатью" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:223 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:223 msgctxt "@label" msgid "Type" msgstr "Тип" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 msgctxt "@label" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:238 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:238 msgctxt "@label" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Расширенный" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:241 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:241 msgctxt "@label" msgid "Unknown" msgstr "Неизвестный" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:254 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:254 msgctxt "@label" msgid "Firmware version" msgstr "Версия прошивки" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:266 msgctxt "@label" msgid "Address" msgstr "Адрес" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Принтер по этому адресу ещё не отвечал." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Подключить" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 msgctxt "@title:window" msgid "Printer Address" msgstr "Адрес принтера" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Введите IP адрес принтера или его имя в сети." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 msgctxt "@action:button" msgid "Ok" msgstr "Ok" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:37 msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Подключение к принтеру" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:116 msgctxt "@info:tooltip" msgid "Load the configuration of the printer into Cura" msgstr "Загрузка конфигурации принтера в Cura" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:117 msgctxt "@action:button" msgid "Activate Configuration" msgstr "Активировать конфигурацию" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Печать" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 +msgctxt "@label:status" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 +msgctxt "@label:status" +msgid "Reserved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 +msgctxt "@label:status" +msgid "Finished" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 +msgctxt "@label:status" +msgid "Preparing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 +msgctxt "@label:status" +msgid "Available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 +msgctxt "@label" +msgid "Completed on: " +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 +msgctxt "@label" +msgid "Clear build plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 +msgctxt "@label" +msgid "Preparing to print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 +msgctxt "@label" +msgid "PRINTER GROUP" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 +msgctxt "@title" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 +msgctxt "@label" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 +msgctxt "@label" +msgid "Queued" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 +msgctxt "@label:title" +msgid "Printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 +msgctxt "@action:button" +msgid "View printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1311,67 +1739,62 @@ msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Изменить активные скрипты пост-обработки" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:71 -msgctxt "@label" -msgid "View Mode: Layers" -msgstr "Режим просмотра: Слои" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:88 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 msgctxt "@label" msgid "Color scheme" msgstr "Цветовая схема" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:102 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:91 msgctxt "@label:listbox" msgid "Material Color" msgstr "Цвет материала" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:106 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:95 msgctxt "@label:listbox" msgid "Line Type" msgstr "Тип линии" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:144 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 msgctxt "@label" msgid "Compatibility Mode" msgstr "Режим совместимости" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:210 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 msgctxt "@label" msgid "Show Travels" msgstr "Показать движения" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 msgctxt "@label" msgid "Show Helpers" msgstr "Показать поддержку" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 msgctxt "@label" msgid "Show Shell" msgstr "Показать стенки" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:234 msgctxt "@label" msgid "Show Infill" msgstr "Показать заполнение" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:264 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:283 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Показать только верхние слои" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:273 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:292 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "Показать 5 детализированных слоёв сверху" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:284 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:303 msgctxt "@label" msgid "Top / Bottom" msgstr "Дно / крышка" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:288 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 msgctxt "@label" msgid "Inner Wall" msgstr "Внутренняя стенка" @@ -1446,23 +1869,23 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Сглаживание" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:157 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 msgctxt "@action:button" msgid "Select settings" msgstr "Выберите параметры" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:197 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Выберите параметр для изменения этой модели" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:221 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Фильтр..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:245 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 msgctxt "@label:checkbox" msgid "Show all" msgstr "Показать всё" @@ -1601,25 +2024,43 @@ msgctxt "@title:window" msgid "Find & Update plugins" msgstr "Найти и обновить плагины" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:27 msgctxt "@label" msgid "Here you can find a list of Third Party plugins." msgstr "Здесь вы можете найти список сторонних плагинов." -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:143 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 msgctxt "@action:button" msgid "Upgrade" msgstr "Обновление" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 msgctxt "@action:button" msgid "Installed" msgstr "Установлено" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 +msgctxt "@title:window" +msgid "Plugin License Agreement" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 +msgctxt "@label" +msgid "" +" plugin contains a license.\n" +"You need to accept this license to install this plugin.\n" +"Do you agree with the terms below?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" -msgid "Download" -msgstr "Скачать" +msgid "Accept" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" +msgstr "" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -1795,71 +2236,71 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "Всё в порядке! Проверка завершена." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Не подключен к принтеру" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:91 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "Принтер не принимает команды" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "В режиме обслуживания. Пожалуйста, проверьте принтер" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Потеряно соединение с принтером" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Печать..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Приостановлен" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Подготовка..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Пожалуйста, удалите напечатанное" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 msgctxt "@label:" msgid "Resume" msgstr "Продолжить" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Pause" msgstr "Пауза" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:271 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 msgctxt "@label:" msgid "Abort Print" msgstr "Прервать печать" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 msgctxt "@window:title" msgid "Abort print" msgstr "Прекращение печати" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:283 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Вы уверены, что желаете прервать печать?" @@ -1894,19 +2335,19 @@ msgid "Customized" msgstr "Свой" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Всегда спрашивать меня" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:587 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "Сбросить и никогда больше не спрашивать" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:588 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Сохранить и никогда больше не спрашивать" @@ -2047,7 +2488,7 @@ msgid "Unit" msgstr "Единица" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 msgctxt "@title:tab" msgid "General" msgstr "Общее" @@ -2062,223 +2503,223 @@ msgctxt "@label" msgid "Language:" msgstr "Язык:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 msgctxt "@label" msgid "Currency:" msgstr "Валюта:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 msgctxt "@label" msgid "Theme:" msgstr "Тема:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Для применения данных изменений вам потребуется перезапустить приложение." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:289 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Нарезать автоматически при изменении настроек." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Нарезать автоматически" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Поведение окна" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Подсвечивать красным области модели, требующие поддержек. Без поддержек эти области не будут напечатаны правильно." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Отобразить нависания" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Перемещать камеру так, чтобы выбранная модель помещалась в центр экрана" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:347 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Центрировать камеру на выбранном объекте" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Следует ли инвертировать стандартный способ увеличения в Cura?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Инвертировать направление увеличения камеры." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Увеличивать по мере движения мышкой?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Увеличивать по движению мышки" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Следует ли размещать модели на столе так, чтобы они больше не пересекались?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:382 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Удостовериться, что модели размещены рядом" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Следует ли опустить модели на стол?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Автоматически опускать модели на стол" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Показывать важное сообщение при чтении G-кода." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Важное сообщение при чтении G-кода" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Должен ли слой быть переведён в режим совместимости?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Просматривать слои в режиме совместимости (требуется перезапуск)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 msgctxt "@label" msgid "Opening and saving files" msgstr "Открытие и сохранение файлов" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Масштабировать ли модели для размещения внутри печатаемого объёма, если они не влезают в него?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:462 msgctxt "@option:check" msgid "Scale large models" msgstr "Масштабировать большие модели" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Модель может показаться очень маленькой, если её размерность задана в метрах, а не миллиметрах. Следует ли масштабировать такие модели?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:469 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Масштабировать очень маленькие модели" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Надо ли автоматически добавлять префикс, основанный на имени принтера, к названию задачи на печать?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Добавить префикс принтера к имени задачи" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Показывать сводку при сохранении файла проекта?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:496 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Показывать сводку при сохранении проекта" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Стандартное поведение при открытии файла проекта" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:513 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Стандартное поведение при открытии файла проекта: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:526 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 msgctxt "@option:openProject" msgid "Always ask" msgstr "Всегда спрашивать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Всегда открывать как проект" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:528 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always import models" msgstr "Всегда импортировать модели" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:564 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "При внесении изменений в профиль и переключении на другой, будет показан диалог, запрашивающий ваше решение о сохранении ваших изменений, или вы можете указать стандартное поведение и не показывать такой диалог." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@label" msgid "Override Profile" msgstr "Переопределение профиля" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:622 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 msgctxt "@label" msgid "Privacy" msgstr "Приватность" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Должна ли Cura проверять обновления программы при старте?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:634 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Проверять обновления при старте" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Можно ли отправлять анонимную информацию о вашей печати в Ultimaker? Следует отметить, что ни модели, ни IP адреса и никакая другая персональная информация не будет отправлена или сохранена." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Отправлять (анонимно) информацию о печати" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:441 msgctxt "@title:tab" msgid "Printers" msgstr "Принтеры" @@ -2328,7 +2769,7 @@ msgid "Waiting for a printjob" msgstr "Ожидаем задание на печать" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 msgctxt "@title:tab" msgid "Profiles" msgstr "Профили" @@ -2426,7 +2867,7 @@ msgid "Export Profile" msgstr "Экспортировать профиль" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 msgctxt "@title:tab" msgid "Materials" msgstr "Материалы" @@ -2458,14 +2899,14 @@ msgid "Import Material" msgstr "Импортировать материал" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "Не могу импортировать материал %1: %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "Успешно импортированный материал %1" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2474,17 +2915,17 @@ msgid "Export Material" msgstr "Экспортировать материал" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "Не могу экспортировать материал %1: %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "Материал успешно экспортирован в %1" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:822 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 msgctxt "@title:window" msgid "Add Printer" msgstr "Добавление принтера" @@ -2499,71 +2940,6 @@ msgctxt "@action:button" msgid "Add Printer" msgstr "Добавить принтер" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:166 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Внешняя стенка" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:167 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "Внутренние стенки" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:168 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Покрытие" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:169 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Заполнение" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:170 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Заполнение поддержек" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:171 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Связующий слой поддержек" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:172 -msgctxt "@tooltip" -msgid "Support" -msgstr "Поддержки" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:173 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Перемещение" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:174 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Откаты" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:175 -msgctxt "@tooltip" -msgid "Other" -msgstr "Другое" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:217 -msgctxt "@label" -msgid "00h 00min" -msgstr "00ч 00мин" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:270 -msgctxt "@label" -msgid "%1 m / ~ %2 g / ~ %4 %3" -msgstr "%1 м / ~ %2 гр / ~ %4 %3" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:275 -msgctxt "@label" -msgid "%1 m / ~ %2 g" -msgstr "%1 м / ~ %2 г" - #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -2673,32 +3049,48 @@ msgctxt "@label" msgid "SVG icons" msgstr "Иконки SVG" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +msgctxt "@label" +msgid "Profile:" +msgstr "Профиль:" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Значения некоторых параметров отличаются от значений профиля.\n" +"\n" +"Нажмите для открытия менеджера профилей." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" msgid "Search..." msgstr "Поиск..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Скопировать значение для всех экструдеров" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:405 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Спрятать этот параметр" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Не показывать этот параметр" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:419 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Оставить этот параметр видимым" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:438 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Настроить видимость параметров..." @@ -2756,12 +3148,12 @@ msgstr "" "\n" "Щёлкните для восстановления вычисленного значения." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Настройка печати" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" @@ -2770,12 +3162,37 @@ msgstr "" "Настройка принтера отключена\n" "G-code файлы нельзя изменять" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 +msgctxt "@label" +msgid "00h 00min" +msgstr "00ч 00мин" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +msgctxt "@tooltip" +msgid "Time information" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 +msgctxt "@description" +msgid "Print time" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +msgctxt "@label" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 +msgctxt "@label" +msgid "%1m / ~ %2g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" msgid "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." msgstr "Рекомендованные параметры печати

Печатайте с рекомендованными параметрами для выбранных принтера, материала и качества." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:460 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:481 msgctxt "@tooltip" msgid "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." msgstr "Свои параметры печати

Печатайте с полным контролем над каждой особенностью процесса слайсинга." @@ -2827,81 +3244,87 @@ msgid "No printer connected" msgstr "Принтер не подключен" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" -msgid "Hotend" -msgstr "Голова" +msgid "Extruder" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:119 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 +msgctxt "@tooltip" +msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "Текущая температура экструдера." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Цвет материала в данном экструдере." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Материал в данном экструдере." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Сопло, вставленное в данный экструдер." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:249 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 msgctxt "@label" msgid "Build plate" msgstr "Стол" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:278 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "Целевая температура горячего стола. Стол будет нагреваться и охлаждаться, оставаясь на этой температуре. Если установлена в 0, значит нагрев стола отключен." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:310 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:343 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "Текущая температура горячего стола." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:422 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "Температура преднагрева горячего стола." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Отмена" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button" msgid "Pre-heat" msgstr "Преднагрев" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:610 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Нагрев горячего стола перед печатью. Вы можете продолжать настройки вашей печати, пока стол нагревается, и вам не понадобится ждать нагрева стола для старта печати." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:677 msgctxt "@label" msgid "Active print" msgstr "Идёт печать" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:648 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 msgctxt "@label" msgid "Job Name" msgstr "Имя задачи" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 msgctxt "@label" msgid "Printing Time" msgstr "Время печати" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:660 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 msgctxt "@label" msgid "Estimated time left" msgstr "Осталось примерно" @@ -3095,53 +3518,53 @@ msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Видимость параметров…" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Пожалуйста, загрузите 3D модель" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Готов к нарезке" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Нарезка на слои..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Готов к %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Невозможно нарезать" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Нарезка недоступна" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Подготовка" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Отмена" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:288 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Выберите активное целевое устройство" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 msgctxt "@title:window" msgid "Open file(s)" msgstr "Открыть файл(ы)" @@ -3233,42 +3656,37 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "Справка" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 msgctxt "@action:button" msgid "Open File" msgstr "Открыть файл" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:428 -msgctxt "@action:button" -msgid "View Mode" -msgstr "Режим просмотра" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "Settings" msgstr "Параметры" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 msgctxt "@title:window" msgid "New project" msgstr "Новый проект" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:532 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "Вы действительно желаете начать новый проект? Это действие очистит область печати и сбросит все несохранённые настройки." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:750 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:694 msgctxt "@window:title" msgid "Install Plugin" msgstr "Установка плагина" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:757 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 msgctxt "@title:window" msgid "Open File(s)" msgstr "Открыть файл(ы)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:760 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Среди выбранных файлов мы нашли несколько файлов с G-кодом. Вы можете открыть только один файл за раз. Измените свой выбор, пожалуйста." @@ -3293,102 +3711,87 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Больше не показывать сводку по проекту" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 +msgctxt "@action:button" +msgid "Save" +msgstr "Сохранить" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 msgctxt "@title:tab" msgid "Prepare" msgstr "Подготовка" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" -msgid "Print" -msgstr "Печать" +msgid "Monitor" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +msgctxt "@label" +msgid "Layer Height" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +msgctxt "@label" +msgid "Print Speed" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +msgctxt "@label" +msgid "Slower" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +msgctxt "@label" +msgid "Faster" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" msgid "Infill" msgstr "Заполнение" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "0%" -msgstr "0%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:199 -msgctxt "@label" -msgid "Empty infill will leave your model hollow with low strength." -msgstr "Пустое заполнение сделает вашу модель полой и хрупкой." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:203 -msgctxt "@label" -msgid "20%" -msgstr "20%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:210 -msgctxt "@label" -msgid "Light (20%) infill will give your model an average strength." -msgstr "Слабое (20%) заполнение сделает вашу модель менее хрупкой." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:214 -msgctxt "@label" -msgid "50%" -msgstr "50%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:221 -msgctxt "@label" -msgid "Dense (50%) infill will give your model an above average strength." -msgstr "Плотное (50%) заполнение придаст вашей модели прочность выше среднего." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:225 -msgctxt "@label" -msgid "100%" -msgstr "100%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:232 -msgctxt "@label" -msgid "Solid (100%) infill will make your model completely solid." -msgstr "Сплошное (100%) заполнение сделает вашу модель крепкой." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:236 -msgctxt "@label" -msgid "Gradual" -msgstr "Постепенное" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:244 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Постепенное заполнение будет постепенно увеличивать объём заполнения по направлению вверх." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:267 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 +msgctxt "@label" +msgid "Enable gradual" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Generate Support" msgstr "Генерация поддержек" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Генерация структур для поддержки нависающих частей модели. Без этих структур такие части будут складываться во время печати." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:718 msgctxt "@label" msgid "Support Extruder" msgstr "Экструдер поддержек" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:391 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Выбирает какой экструдер следует использовать для поддержек. Будут созданы поддерживающие структуры под моделью для предотвращения проседания краёв или печати в воздухе." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:796 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Тип прилипания к столу" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:462 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Разрешает печать каймы или подложки. Это добавляет плоскую область вокруг или под вашим объектом, которую легко удалить после печати." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:515 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:883 msgctxt "@label" msgid "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides" msgstr "Требуется помощь в улучшении вашей печати?
Обратитесь к Руководству Ultimaker по решению проблем" @@ -3426,33 +3829,21 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Журнал движка" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:193 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 msgctxt "@label" msgid "Material" msgstr "Материал" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:236 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +msgctxt "@label" +msgid "Check material compatibility" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Нажмите для проверки совместимости материала на Ultimaker.com." -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:325 -msgctxt "@label" -msgid "Profile:" -msgstr "Профиль:" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "" -"Значения некоторых параметров отличаются от значений профиля.\n" -"\n" -"Нажмите для открытия менеджера профилей." - #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -3503,6 +3894,16 @@ msgctxt "name" msgid "God Mode" msgstr "Режим бога" +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +msgstr "" + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "" + #: ChangeLogPlugin/plugin.json msgctxt "description" msgid "Shows changes since latest checked version." @@ -3533,16 +3934,6 @@ msgctxt "name" msgid "USB printing" msgstr "Печать через USB" -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing X3G files" -msgstr "Предоставляет возможность записи X3G файлов" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3G Writer" -msgstr "Запись X3G" - #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -3563,6 +3954,21 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Соединение с сетью UM3" +#: CuraPrintClusterUpload/plugin.json +msgctxt "name" +msgid "UM3 Network Connection (Cluster)" +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "" + #: CuraSolidWorksPlugin/plugin.json msgctxt "description" msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" @@ -3653,6 +4059,16 @@ msgctxt "name" msgid "Version Upgrade 2.5 to 2.6" msgstr "Обновление версии с 2.5 до 2.6" +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -3793,6 +4209,189 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Чтение профиля Cura" +#~ msgctxt "@item:inlistbox" +#~ msgid "X-Ray" +#~ msgstr "Рентген" + +#~ msgctxt "@label" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@info:whatsthis" +#~ msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +#~ msgstr "Принимает G-Code и отправляет его через WiFi на Doodle3D WiFi-Box." + +#~ msgctxt "@item:inmenu" +#~ msgid "Doodle3D printing" +#~ msgstr "Печать Doodle3D" + +#~ msgctxt "@action:button" +#~ msgid "Print with Doodle3D" +#~ msgstr "Печать через Doodle3D" + +#~ msgctxt "@info:tooltip" +#~ msgid "Print with " +#~ msgstr "Печать через " + +#~ msgctxt "@title:menu" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Enable Scan devices..." +#~ msgstr "Активировать сканеры..." + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G файл" + +#~ msgctxt "@info:progress" +#~ msgid "Saving to Removable Drive {0}" +#~ msgstr "Сохранение на внешний носитель {0}" + +#~ msgctxt "@info:status" +#~ msgid "Could not save to {0}: {1}" +#~ msgstr "Не могу сохранить {0}: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" +#~ msgstr "Запомните, пожалуйста, что вы должны вручную открыть заново файл SolidWorks файл! Перезагрузка моделей не поможет!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Layers" +#~ msgstr "Слои" + +#~ msgid "Browse plugins" +#~ msgstr "Просмотр плагинов" + +#~ msgctxt "@item:inmenu" +#~ msgid "Solid" +#~ msgstr "Твёрдое тело" + +#~ msgctxt "@label" +#~ msgid "The file {0} already exists. Are you sure you want to overwrite it?" +#~ msgstr "Файл {0} уже существует. Вы желаете его перезаписать?" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: {1}" +#~ msgstr "Невозможно экспортировать профиль в {0}: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: Writer plugin reported failure." +#~ msgstr "Невозможно экспортировать профиль в {0}: Плагин записи уведомил об ошибке." + +#~ msgctxt "@info:status" +#~ msgid "Exported profile to {0}" +#~ msgstr "Экспортирование профиля в {0}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "Невозможно импортировать профиль из {0}: {1}" + +#~ msgctxt "@title:window" +#~ msgid "Doodle3D Settings" +#~ msgstr "Настройки Doodle3D" + +#~ msgctxt "@title:window" +#~ msgid "Print to: %1" +#~ msgstr "Печатать на: %1" + +#~ msgctxt "@label" +#~ msgid "Extruder Temperature: %1/%2°C" +#~ msgstr "Температура экструдера: %1/%2°C" + +#~ msgctxt "@label" +#~ msgid "Bed Temperature: %1/%2°C" +#~ msgstr "Температура стола: %1/%2°C" + +#~ msgctxt "@label" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "@label" +#~ msgid "View Mode: Layers" +#~ msgstr "Режим просмотра: Слои" + +#~ msgctxt "@info:status" +#~ msgid "Could not import material %1: %2" +#~ msgstr "Не могу импортировать материал %1: %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully imported material %1" +#~ msgstr "Успешно импортированный материал %1" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export material to %1: %2" +#~ msgstr "Не могу экспортировать материал %1: %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully exported material to %1" +#~ msgstr "Материал успешно экспортирован в %1" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g / ~ %4 %3" +#~ msgstr "%1 м / ~ %2 гр / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g" +#~ msgstr "%1 м / ~ %2 г" + +#~ msgctxt "@label" +#~ msgid "Hotend" +#~ msgstr "Голова" + +#~ msgctxt "@action:button" +#~ msgid "View Mode" +#~ msgstr "Режим просмотра" + +#~ msgctxt "@title:tab" +#~ msgid "Print" +#~ msgstr "Печать" + +#~ msgctxt "@label" +#~ msgid "0%" +#~ msgstr "0%" + +#~ msgctxt "@label" +#~ msgid "Empty infill will leave your model hollow with low strength." +#~ msgstr "Пустое заполнение сделает вашу модель полой и хрупкой." + +#~ msgctxt "@label" +#~ msgid "20%" +#~ msgstr "20%" + +#~ msgctxt "@label" +#~ msgid "Light (20%) infill will give your model an average strength." +#~ msgstr "Слабое (20%) заполнение сделает вашу модель менее хрупкой." + +#~ msgctxt "@label" +#~ msgid "50%" +#~ msgstr "50%" + +#~ msgctxt "@label" +#~ msgid "Dense (50%) infill will give your model an above average strength." +#~ msgstr "Плотное (50%) заполнение придаст вашей модели прочность выше среднего." + +#~ msgctxt "@label" +#~ msgid "100%" +#~ msgstr "100%" + +#~ msgctxt "@label" +#~ msgid "Solid (100%) infill will make your model completely solid." +#~ msgstr "Сплошное (100%) заполнение сделает вашу модель крепкой." + +#~ msgctxt "@label" +#~ msgid "Gradual" +#~ msgstr "Постепенное" + +#~ msgctxt "description" +#~ msgid "Provides support for writing X3G files" +#~ msgstr "Предоставляет возможность записи X3G файлов" + +#~ msgctxt "name" +#~ msgid "X3G Writer" +#~ msgstr "Запись X3G" + #~ msgctxt "@label" #~ msgid "Machine Settings action" #~ msgstr "Параметры принтера действие" diff --git a/resources/i18n/ru_RU/fdmprinter.def.json.po b/resources/i18n/ru_RU/fdmprinter.def.json.po index eb3bbf74fd..c68235c988 100755 --- a/resources/i18n/ru_RU/fdmprinter.def.json.po +++ b/resources/i18n/ru_RU/fdmprinter.def.json.po @@ -761,16 +761,6 @@ msgctxt "shell description" msgid "Shell" msgstr "Ограждение" -#: fdmprinter.def.json -msgctxt "wall_extruder_nr label" -msgid "Wall Extruder" -msgstr "Экструдер стенок" - -#: fdmprinter.def.json -msgctxt "wall_extruder_nr description" -msgid "The extruder train used for printing the walls. This is used in multi-extrusion." -msgstr "Этот экструдер используется для печати стенок. Используется при наличии нескольких экструдеров." - #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" msgid "Outer Wall Extruder" @@ -1131,6 +1121,11 @@ msgctxt "z_seam_type option random" msgid "Random" msgstr "Случайно" +#: fdmprinter.def.json +msgctxt "z_seam_type option sharpest_corner" +msgid "Sharpest Corner" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1151,6 +1146,36 @@ msgctxt "z_seam_y description" msgid "The Y coordinate of the position near where to start printing each part in a layer." msgstr "Y координата позиции вблизи которой следует начинать путь на каждом слое." +#: fdmprinter.def.json +msgctxt "z_seam_corner label" +msgid "Seam Corner Preference" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner description" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_none" +msgid "None" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_inner" +msgid "Hide Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_outer" +msgid "Expose Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_any" +msgid "Hide or Expose Seam" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1171,6 +1196,16 @@ msgctxt "skin_no_small_gaps_heuristic description" msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." msgstr "Когда модель имеет небольшие вертикальные зазоры, около 5% дополнительного времени будет потрачено на вычисления верхних и нижних оболочек в этих узких пространствах. В этом случае, отключите данный параметр." +#: fdmprinter.def.json +msgctxt "skin_outline_count label" +msgid "Extra Skin Wall Count" +msgstr "Количество внешних дополнительных оболочек" + +#: fdmprinter.def.json +msgctxt "skin_outline_count description" +msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." +msgstr "Заменяет внешнюю часть шаблона крышки/дна рядом концентрических линий. Использование одной или двух линий улучшает мосты, которые печатаются поверх материала заполнения." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1218,8 +1253,8 @@ msgstr "Шаблон заполнения" #: fdmprinter.def.json msgctxt "infill_pattern description" -msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "Шаблон для материала заполнения при печати. Заполнение линиями и зигзагом меняет направление при смене слоя, уменьшая стоимость материала. Сетчатый, треугольный и концентрический шаблоны полностью печатаются на каждом слое. Кубическое и тетраэдральное заполнение меняется на каждом слое для равного распределения прочности по каждому направлению." +msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1248,8 +1283,13 @@ msgstr "Динамический куб" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" -msgid "Tetrahedral" -msgstr "Тетраэдр" +msgid "Octet" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option quarter_cubic" +msgid "Quarter Cubic" +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1266,6 +1306,26 @@ msgctxt "infill_pattern option zigzag" msgid "Zig Zag" msgstr "Зигзаг" +#: fdmprinter.def.json +msgctxt "infill_pattern option cross" +msgid "Cross" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross_3d" +msgid "Cross 3D" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill label" +msgid "Connect Infill Lines" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill description" +msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" @@ -1387,34 +1447,34 @@ msgid "Don't generate areas of infill smaller than this (use skin instead)." msgstr "Не генерировать области заполнения меньше чем указано здесь (вместо этого использовать оболочку)." #: fdmprinter.def.json -msgctxt "expand_skins_into_infill label" -msgid "Expand Skins Into Infill" -msgstr "Расширять оболочку в заполнение" +msgctxt "skin_preshrink label" +msgid "Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_skins_into_infill description" -msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." -msgstr "Расширять области оболочки на верхних и/или нижних обшивках плоских поверхностях. По умолчанию, обшивки завершаются под линиями стенки, которые окружают заполнение, но это может приводить к отверстиям, появляющимся при малой плотности заполнения. Данный параметр расширяет обшивку позади линий стенки таким образом, что заполнение следующего слоя располагается на обшивке." +msgctxt "skin_preshrink description" +msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins label" -msgid "Expand Top Skins Into Infill" -msgstr "Расширять верхнюю оболочку в заполнение" +msgctxt "top_skin_preshrink label" +msgid "Top Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins description" -msgid "Expand the top skin areas (areas with air above) so that they support infill above." -msgstr "Расширять области верхней оболочки (над ними будет воздух) так, что они поддерживают заполнение над ними." +msgctxt "top_skin_preshrink description" +msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins label" -msgid "Expand Bottom Skins Into Infill" -msgstr "Расширять нижнюю оболочку в заполнение" +msgctxt "bottom_skin_preshrink label" +msgid "Bottom Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins description" -msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." -msgstr "Расширять области нижней оболочки (под ними будет воздух) так, что они сцепляются с слоями заполнения сверху и снизу." +msgctxt "bottom_skin_preshrink description" +msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1423,8 +1483,28 @@ msgstr "Дистанция расширения оболочки" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" -msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." -msgstr "Дистанция, на которую расширяется оболочка внутри заполнения. По умолчанию, дистанция достаточна для связывания промежутков между линиями заполнения и предотвращает появление отверстий в оболочке, где она встречается со стенкой когда плотность заполнения низкая. Меньшая дистанция чаще всего будет достаточной." +msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance label" +msgid "Top Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance description" +msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance label" +msgid "Bottom Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance description" +msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." +msgstr "" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -1806,16 +1886,6 @@ msgctxt "speed_topbottom description" msgid "The speed at which top/bottom layers are printed." msgstr "Скорость, на которой печатаются слои крышки/дна." -#: fdmprinter.def.json -msgctxt "speed_ironing label" -msgid "Ironing Speed" -msgstr "Скорость разглаживания" - -#: fdmprinter.def.json -msgctxt "speed_ironing description" -msgid "The speed at which to pass over the top surface." -msgstr "Скорость, на которой голова проходит над верхней оболочкой." - #: fdmprinter.def.json msgctxt "speed_support label" msgid "Support Speed" @@ -2046,16 +2116,6 @@ msgctxt "acceleration_topbottom description" msgid "The acceleration with which top/bottom layers are printed." msgstr "Ускорение, с которым печатаются слои крышки/дна." -#: fdmprinter.def.json -msgctxt "acceleration_ironing label" -msgid "Ironing Acceleration" -msgstr "Ускорение разглаживания" - -#: fdmprinter.def.json -msgctxt "acceleration_ironing description" -msgid "The acceleration with which ironing is performed." -msgstr "Ускорение, с которым производится разглаживание." - #: fdmprinter.def.json msgctxt "acceleration_support label" msgid "Support Acceleration" @@ -2246,16 +2306,6 @@ msgctxt "jerk_topbottom description" msgid "The maximum instantaneous velocity change with which top/bottom layers are printed." msgstr "Изменение максимальной мгновенной скорости, с которой печатаются верхние и нижние слои." -#: fdmprinter.def.json -msgctxt "jerk_ironing label" -msgid "Ironing Jerk" -msgstr "Рывок разглаживания" - -#: fdmprinter.def.json -msgctxt "jerk_ironing description" -msgid "The maximum instantaneous velocity change while performing ironing." -msgstr "Изменение максимальной мгновенной скорости, с которой выполняется разглаживание." - #: fdmprinter.def.json msgctxt "jerk_support label" msgid "Support Jerk" @@ -2771,6 +2821,11 @@ msgctxt "support_pattern option zigzag" msgid "Zig Zag" msgstr "Зигзаг" +#: fdmprinter.def.json +msgctxt "support_pattern option cross" +msgid "Cross" +msgstr "" + #: fdmprinter.def.json msgctxt "support_connect_zigzags label" msgid "Connect Support ZigZags" @@ -2783,23 +2838,33 @@ msgstr "Соединяет зигзаги. Это увеличивает про #: fdmprinter.def.json msgctxt "support_skip_some_zags label" -msgid "Skip Some ZigZags Connections" -msgstr "Пропускать несколько соединений при зигзаге." +msgid "Break Up Support In Chunks" +msgstr "" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" -msgid "Skip some ZigZags connections to make the support structure easier to break." -msgstr "Пропускать несколько соединений при зигзаге, чтобы облегчить последующее удаление структуры поддержек." +msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm description" +msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count label" -msgid "ZigZag Connection Skip Count" -msgstr "Количество пропускаемых соединений при зигзаге" +msgid "Support Chunk Line Count" +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" -msgid "Skip one in every N connection lines to make the support structure easier to break." -msgstr "Пропускать одну в каждой N-ой линии соединений для облегчения последующего удаления структуры поддержек." +msgid "Skip one in every N connection lines to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3385,6 +3450,26 @@ msgctxt "brim_outside_only description" msgid "Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much." msgstr "Печатать кайму только на внешней стороне модели. Это сокращает объём каймы, которую вам потребуется удалить в дальнейшем, и не снижает качество прилипания к столу." +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 label" +msgid "Initial Layer Z Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 description" +msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers label" +msgid "Z Offset Taper Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers description" +msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3395,6 +3480,16 @@ msgctxt "raft_margin description" msgid "If the raft is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print." msgstr "Если подложка включена, это дополнительное поле вокруг модели, которая также имеет подложку. Увеличение этого значения создаст более крепкую поддержку, используя больше материала и оставляя меньше свободной области для печати." +#: fdmprinter.def.json +msgctxt "raft_smoothing label" +msgid "Raft Smoothing" +msgstr "" + +#: fdmprinter.def.json +msgctxt "raft_smoothing description" +msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_airgap label" msgid "Raft Air Gap" @@ -4070,6 +4165,16 @@ msgctxt "smooth_spiralized_contours description" msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." msgstr "Сглаживает спиральные контуры для уменьшения видимости шва по оси Z (такой шов должен быть едва виден при печати, но по-прежнему виден при послойном просмотре). Следует отметить, что сглаживание ведёт к размыванию мелких деталей поверхности." +#: fdmprinter.def.json +msgctxt "relative_extrusion label" +msgid "Relative Extrusion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "relative_extrusion description" +msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." +msgstr "" + #: fdmprinter.def.json msgctxt "experimental label" msgid "Experimental" @@ -4080,6 +4185,16 @@ msgctxt "experimental description" msgid "experimental!" msgstr "экспериментальное!" +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "" + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4190,16 +4305,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Скорость, с которой производятся движения во время наката, относительно скорости печати. Рекомендуется использовать значение чуть меньше 100%, так как во время наката давление в боудене снижается." -#: fdmprinter.def.json -msgctxt "skin_outline_count label" -msgid "Extra Skin Wall Count" -msgstr "Количество внешних дополнительных оболочек" - -#: fdmprinter.def.json -msgctxt "skin_outline_count description" -msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." -msgstr "Заменяет внешнюю часть шаблона крышки/дна рядом концентрических линий. Использование одной или двух линий улучшает мосты, которые печатаются поверх материала заполнения." - #: fdmprinter.def.json msgctxt "skin_alternate_rotation label" msgid "Alternate Skin Rotation" @@ -4210,6 +4315,26 @@ msgctxt "skin_alternate_rotation description" msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." msgstr "Изменить направление, в котором печатаются слои крышки/дна. Обычно, они печатаются по диагонали. Данный параметр добавляет направления X-только и Y-только." +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size label" +msgid "Cross 3D Pocket Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size description" +msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly label" +msgid "Alternate Cross 3D Pockets" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly description" +msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." +msgstr "" + #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" msgid "Spaghetti Infill" @@ -4629,6 +4754,16 @@ msgctxt "ironing_enabled description" msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." msgstr "Проходить по верхней оболочке ещё раз, но без выдавливания материала. Это приводит к плавлению пластика, что создаёт более гладкую поверхность." +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer label" +msgid "Iron Only Highest Layer" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer description" +msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." +msgstr "" + #: fdmprinter.def.json msgctxt "ironing_pattern label" msgid "Ironing Pattern" @@ -4679,6 +4814,36 @@ msgctxt "ironing_inset description" msgid "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print." msgstr "Расстояние от краёв модели. Разглаживание от края до края может выразится в загибании краёв при печати." +#: fdmprinter.def.json +msgctxt "speed_ironing label" +msgid "Ironing Speed" +msgstr "Скорость разглаживания" + +#: fdmprinter.def.json +msgctxt "speed_ironing description" +msgid "The speed at which to pass over the top surface." +msgstr "Скорость, на которой голова проходит над верхней оболочкой." + +#: fdmprinter.def.json +msgctxt "acceleration_ironing label" +msgid "Ironing Acceleration" +msgstr "Ускорение разглаживания" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing description" +msgid "The acceleration with which ironing is performed." +msgstr "Ускорение, с которым производится разглаживание." + +#: fdmprinter.def.json +msgctxt "jerk_ironing label" +msgid "Ironing Jerk" +msgstr "Рывок разглаживания" + +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "Изменение максимальной мгновенной скорости, с которой выполняется разглаживание." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4739,6 +4904,66 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Матрица преобразования, применяемая к модели при её загрузки из файла." +#~ msgctxt "wall_extruder_nr label" +#~ msgid "Wall Extruder" +#~ msgstr "Экструдер стенок" + +#~ msgctxt "wall_extruder_nr description" +#~ msgid "The extruder train used for printing the walls. This is used in multi-extrusion." +#~ msgstr "Этот экструдер используется для печати стенок. Используется при наличии нескольких экструдеров." + +#~ msgctxt "infill_pattern description" +#~ msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." +#~ msgstr "Шаблон для материала заполнения при печати. Заполнение линиями и зигзагом меняет направление при смене слоя, уменьшая стоимость материала. Сетчатый, треугольный и концентрический шаблоны полностью печатаются на каждом слое. Кубическое и тетраэдральное заполнение меняется на каждом слое для равного распределения прочности по каждому направлению." + +#~ msgctxt "infill_pattern option tetrahedral" +#~ msgid "Tetrahedral" +#~ msgstr "Тетраэдр" + +#~ msgctxt "expand_skins_into_infill label" +#~ msgid "Expand Skins Into Infill" +#~ msgstr "Расширять оболочку в заполнение" + +#~ msgctxt "expand_skins_into_infill description" +#~ msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." +#~ msgstr "Расширять области оболочки на верхних и/или нижних обшивках плоских поверхностях. По умолчанию, обшивки завершаются под линиями стенки, которые окружают заполнение, но это может приводить к отверстиям, появляющимся при малой плотности заполнения. Данный параметр расширяет обшивку позади линий стенки таким образом, что заполнение следующего слоя располагается на обшивке." + +#~ msgctxt "expand_upper_skins label" +#~ msgid "Expand Top Skins Into Infill" +#~ msgstr "Расширять верхнюю оболочку в заполнение" + +#~ msgctxt "expand_upper_skins description" +#~ msgid "Expand the top skin areas (areas with air above) so that they support infill above." +#~ msgstr "Расширять области верхней оболочки (над ними будет воздух) так, что они поддерживают заполнение над ними." + +#~ msgctxt "expand_lower_skins label" +#~ msgid "Expand Bottom Skins Into Infill" +#~ msgstr "Расширять нижнюю оболочку в заполнение" + +#~ msgctxt "expand_lower_skins description" +#~ msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." +#~ msgstr "Расширять области нижней оболочки (под ними будет воздух) так, что они сцепляются с слоями заполнения сверху и снизу." + +#~ msgctxt "expand_skins_expand_distance description" +#~ msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." +#~ msgstr "Дистанция, на которую расширяется оболочка внутри заполнения. По умолчанию, дистанция достаточна для связывания промежутков между линиями заполнения и предотвращает появление отверстий в оболочке, где она встречается со стенкой когда плотность заполнения низкая. Меньшая дистанция чаще всего будет достаточной." + +#~ msgctxt "support_skip_some_zags label" +#~ msgid "Skip Some ZigZags Connections" +#~ msgstr "Пропускать несколько соединений при зигзаге." + +#~ msgctxt "support_skip_some_zags description" +#~ msgid "Skip some ZigZags connections to make the support structure easier to break." +#~ msgstr "Пропускать несколько соединений при зигзаге, чтобы облегчить последующее удаление структуры поддержек." + +#~ msgctxt "support_zag_skip_count label" +#~ msgid "ZigZag Connection Skip Count" +#~ msgstr "Количество пропускаемых соединений при зигзаге" + +#~ msgctxt "support_zag_skip_count description" +#~ msgid "Skip one in every N connection lines to make the support structure easier to break." +#~ msgstr "Пропускать одну в каждой N-ой линии соединений для облегчения последующего удаления структуры поддержек." + #~ msgctxt "machine_show_variants label" #~ msgid "Show machine variants" #~ msgstr "Показать варианты принтера" diff --git a/resources/i18n/tr_TR/cura.po b/resources/i18n/tr_TR/cura.po index 7aaa3afb17..7acf443fae 100644 --- a/resources/i18n/tr_TR/cura.po +++ b/resources/i18n/tr_TR/cura.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -16,15 +16,15 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:28 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" msgstr "Makine Ayarları" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" -msgid "X-Ray" -msgstr "X-Ray" +msgid "X-Ray view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -36,40 +36,69 @@ msgctxt "@item:inlistbox" msgid "GCode File" msgstr "GCode Dosyası" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:13 -msgctxt "@label" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:17 -msgctxt "@info:whatsthis" -msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "G-Code’u kabul eder ve WiFi üzerinden Doodle3D WiFi-Box'a gönderir." - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:36 -msgctxt "@item:inmenu" -msgid "Doodle3D printing" -msgstr "Doodle3D yazdırma" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:37 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" -msgid "Print with Doodle3D" -msgstr "Doodle3D ile yazdır" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:38 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 +msgctxt "@properties:tooltip" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +msgctxt "@action:button" +msgid "Cancel" +msgstr "İptal et" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 +msgctxt "@info:status" +msgid "Sending data to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 +msgctxt "@info:status" +msgid "Unable to send data to Doodle3D Connect. Is another job still active?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 +msgctxt "@info:status" +msgid "File sent to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect.." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" -msgid "Print with " -msgstr "Şununla yazdır:" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:49 -msgctxt "@title:menu" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:50 -msgctxt "@item:inlistbox" -msgid "Enable Scan devices..." -msgstr "Tarama aygıtlarını etkinleştir..." +msgid "Open the Doodle3D Connect web interface" +msgstr "" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -111,16 +140,36 @@ msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "Yazıcı meşgul veya bağlı olmadığı için yeni bir işlem başlatılamıyor." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +msgctxt "@info:title" +msgid "Print Details" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "Yazıcı, UltiGCode türü kullandığı için USB yazdırmayı desteklemiyor." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "Yazıcı USB ile yazdırmayı desteklemediği için yeni bir işlem başlatılamıyor." +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:909 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 +msgctxt "@info:title" +msgid "Warning" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." @@ -132,10 +181,10 @@ msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "%s’te yazıcı için gerekli aygıt yazılım bulunamadı." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:14 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G Dosyası" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +msgctxt "@info:title" +msgid "Printer Firmware" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -150,47 +199,79 @@ msgstr "Çıkarılabilir Sürücüye Kaydediliyor {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 #, python-brace-format -msgctxt "@info:progress" +msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "Çıkarılabilir Sürücüye Kaydediliyor {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +msgctxt "@info:title" +msgid "Saving" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "{0}na kaydedilemedi: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format -msgctxt "@info:status" -msgid "Saved to Removable Drive {0} as {1}" -msgstr "Çıkarılabilir Sürücüye {0}, {1} olarak kaydedildi" +msgctxt "@info:status Don't translate the tag {device}!" +msgid "Could not find a file name when trying to write to {device}." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -msgctxt "@action:button" -msgid "Eject" -msgstr "Çıkar" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -#, python-brace-format -msgctxt "@action" -msgid "Eject removable device {0}" -msgstr "Çıkarılabilir aygıtı çıkar {0}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:138 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #, python-brace-format msgctxt "@info:status" msgid "Could not save to removable drive {0}: {1}" msgstr "Çıkarılabilir aygıta {0} kaydedilemedi: {1}" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:148 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:675 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:683 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:145 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:152 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 +msgctxt "@info:title" +msgid "Error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +#, python-brace-format +msgctxt "@info:status" +msgid "Saved to Removable Drive {0} as {1}" +msgstr "Çıkarılabilir Sürücüye {0}, {1} olarak kaydedildi" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +msgctxt "@info:title" +msgid "File Saved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +msgctxt "@action:button" +msgid "Eject" +msgstr "Çıkar" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +#, python-brace-format +msgctxt "@action" +msgid "Eject removable device {0}" +msgstr "Çıkarılabilir aygıtı çıkar {0}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 #, python-brace-format msgctxt "@info:status" msgid "Ejected {0}. You can now safely remove the drive." msgstr "Çıkarıldı {0}. Şimdi sürücüyü güvenle kaldırabilirsiniz." -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:150 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 +msgctxt "@info:title" +msgid "Safely Remove Hardware" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format msgctxt "@info:status" msgid "Failed to eject {0}. Another program may be using the drive." @@ -201,219 +282,351 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Çıkarılabilir Sürücü" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:49 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Ağ üzerinden yazdır" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Ağ üzerinden yazdır" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:156 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 msgctxt "@info:status" msgid "Access to the printer requested. Please approve the request on the printer" msgstr "İstenen yazıcıya erişim. Lütfen yazıcı isteğini onaylayın" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +msgctxt "@info:title" +msgid "Connection status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 msgctxt "@info:status" msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:468 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@action:button" msgid "Retry" msgstr "Yeniden dene" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Erişim talebini yeniden gönder" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Kabul edilen yazıcıya erişim" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 msgctxt "@info:status" msgid "No access to print with this printer. Unable to send print job." msgstr "Bu yazıcıyla yazdırmaya erişim yok. Yazdırma işi gönderilemedi." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:28 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:72 msgctxt "@action:button" msgid "Request Access" msgstr "Erişim Talep Et" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:71 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "Yazıcıya erişim talebi gönder" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:358 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:375 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 msgctxt "@info:status" msgid "Connected over the network. Please approve the access request on the printer." msgstr "Ağ üzerinden bağlandı. Lütfen yazıcıya erişim isteğini onaylayın." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:365 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:382 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 msgctxt "@info:status" msgid "Connected over the network." msgstr "Ağ üzerinden bağlandı." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:378 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "Ağ üzerinden bağlandı. Yazıcıyı kontrol etmek için erişim yok." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:383 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:400 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 msgctxt "@info:status" msgid "Access request was denied on the printer." msgstr "Yazıcıya erişim talebi reddedildi." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:386 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:403 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Access request failed due to a timeout." msgstr "Erişim talebi zaman aşımı nedeniyle başarısız oldu." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:450 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:467 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "The connection with the network was lost." msgstr "Ağ bağlantısı kaybedildi." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:481 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 msgctxt "@info:status" msgid "The connection with the printer was lost. Check your printer to see if it is connected." msgstr "Yazıcı bağlantısı kaybedildi. Yazıcınızın bağlı olup olmadığını kontrol edin." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:630 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:649 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 #, python-format msgctxt "@info:status" msgid "Unable to start a new print job, printer is busy. Current printer status is %s." msgstr "Yazıcı meşgul, yeni bir yazdırma başlatılamıyor. Geçerli yazıcı durumu: %s." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:654 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "Yeni yazdırma işi başlatılamıyor. {0} yuvasına PrintCore yüklenmedi." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:661 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:682 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "Yeni bir yazdırma başlatılamıyor. {0} yuvasına Malzeme yüklenmedi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:670 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Biriktirme {0} için yeterli malzeme yok." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:680 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Ekstruder {2} için farklı bir PrintCore (Cura: {0}, Yazıcı: {1}) seçildi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:694 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:716 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@label" msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "Farklı malzeme (Cura: {0}, Yazıcı: {1}), ekstrüder {2} için seçildi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:724 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "PrintCore {0} düzgün bir şekilde ayarlanmadı. XY ayarının yazıcıda yapılması gerekiyor." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:707 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:729 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "Seçilen yapılandırma ile yazdırmak istediğinizden emin misiniz?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:730 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 msgctxt "@label" msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "Yazıcı yapılandırması veya kalibrasyonu ile Cura arasında eşleşme sorunu var. En iyi sonucu almak istiyorsanız her zaman PrintCore ve yazıcıya eklenen malzemeler için dilimleme yapın." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:736 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Uyumsuz yapılandırma" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:815 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Veriler yazıcıya gönderiliyor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:816 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:46 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:137 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 -msgctxt "@action:button" -msgid "Cancel" -msgstr "İptal et" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +msgctxt "@info:title" +msgid "Sending Data" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:884 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "Veriler yazıcıya gönderilemedi. Hala etkin olan başka bir iş var mı?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1018 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1050 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Yazdırma durduruluyor..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1024 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Yazdırma durduruldu. Lütfen yazıcıyı kontrol edin" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1030 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Yazdırma duraklatılıyor..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1032 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Yazdırma devam ediyor..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1175 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Yazıcınız ile eşitleyin" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1177 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "Cura’da geçerli yazıcı yapılandırmanızı kullanmak istiyor musunuz?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1220 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 msgctxt "@label" msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "Yazıcınızda bulunan PrintCore’lar ve/veya malzemeler geçerli projenizde bulunandan farklı. En iyi sonucu almak istiyorsanız, her zaman PrintCore ve yazıcıya eklenen malzemeler için dilimleme yapın." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.py:19 msgctxt "@action" msgid "Connect via Network" msgstr "Ağ ile Bağlan" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:172 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#, python-brace-format +msgctxt "Count is number of printers." +msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#, python-brace-format +msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#, python-brace-format +msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +msgctxt "@info:status" +msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#, python-brace-format +msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "İndir" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +msgctxt "@info" +msgid "Could not access update information." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" msgstr "SolidWorks dosyanızı açarken hata meydana geldi! Lütfen dosyanızın SolidWorks’te sorunsuz açılıp açılmadığını kontrol edin!" @@ -432,17 +645,12 @@ msgstr "SolidWorks assembly dosyası" msgid "Configure" msgstr "Yapılandırma" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:129 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 #, python-format msgctxt "@info:status" msgid "Error while starting %s!" msgstr "%s başlatılırken hata oluştu!" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:207 -msgctxt "@info:status" -msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" -msgstr "SolidWorks dosyanızı tekrar manuel olarak açmanız gerektiğini unutmayın! Modeli yeniden yüklemek işe yaramayacaktır!" - #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 msgid "Modify G-Code" msgstr "GCode Değiştir" @@ -452,7 +660,12 @@ msgctxt "@info" msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." msgstr "Cura anonim dilimleme istatistiklerini toplar. Bu özelliği tercihlerden devre dışı bırakabilirsiniz." -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:44 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 +msgctxt "@info:title" +msgid "Collecting Data" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" msgid "Dismiss" msgstr "Son Ver" @@ -470,14 +683,19 @@ msgstr "G-code dosyası" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" -msgid "Layers" -msgstr "Katmanlar" +msgid "Layer view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Tel Yazma etkinleştirildiğinde, Cura katmanları doğru olarak görüntülemez." +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 +msgctxt "@info:title" +msgid "Layer View" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -503,24 +721,31 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF Resmi" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:281 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "Seçilen malzeme, seçilen makine veya yapılandırma ile uyumlu değil." +msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:308 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:307 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 +msgctxt "@info:title" +msgid "Unable to slice" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "Geçerli ayarlarla dilimlenemiyor. Şu ayarlarda hata var: {0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:317 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:306 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "İlk direk veya ilk konum(lar) geçersiz olduğu için dilimlenemiyor." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:325 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:315 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Modeller yapı hacmine sığmadığı için dilimlenecek bir şey yok. Lütfen sığdırmak için modelleri ölçeklendirin veya döndürün." @@ -531,6 +756,11 @@ msgctxt "@info:status" msgid "Processing Layers" msgstr "Katmanlar İşleniyor" +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +msgctxt "@info:title" +msgid "Information" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" msgid "Per Model Settings" @@ -542,13 +772,13 @@ msgid "Configure Per Model Settings" msgstr "Model Başına Ayarları Yapılandır" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:475 msgctxt "@title:tab" msgid "Recommended" msgstr "Önerilen Ayarlar" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:459 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 msgctxt "@title:tab" msgid "Custom" msgstr "Özel" @@ -559,25 +789,37 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF Dosyası" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:122 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1050 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 msgctxt "@label" msgid "Nozzle" msgstr "Nozül" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 +msgctxt "@menuitem" msgid "Browse plugins" -msgstr "Eklentilere göz at" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:120 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +msgctxt "@info:tile" +msgid "Warning" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" msgid "Plugin browser" msgstr "Eklenti tarayıcısı" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" -msgid "Solid" -msgstr "Katı" +msgid "Solid view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -589,7 +831,13 @@ msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-code ayrıştırma" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:365 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Dosya göndermeden önce g-code’un yazıcınız ve yazıcı yapılandırmanız için uygun olduğundan emin olun. G-code temsili doğru olmayabilir." @@ -611,7 +859,7 @@ msgid "Cura Project 3MF file" msgstr "Cura Projesi 3MF dosyası" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "Yükseltmeleri seçin" @@ -631,18 +879,73 @@ msgctxt "@action" msgid "Level build plate" msgstr "Yapı levhasını dengele" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:247 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Dış Duvar" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "İç Duvarlar" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Yüzey Alanı" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Dolgu" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Destek Dolgusu" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Destek Arayüzü" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support" +msgstr "Destek" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Hareket" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Geri Çekmeler" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Other" +msgstr "Diğer" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Önceden dilimlenmiş dosya {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 msgctxt "@item:material" msgid "No material loaded" msgstr "Hiçbir malzeme yüklenmedi" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 msgctxt "@item:material" msgid "Unknown material" msgstr "Bilinmeyen malzeme" @@ -652,35 +955,56 @@ msgctxt "@info:status" msgid "Finding new location for objects" msgstr "Nesneler için yeni konum bulunuyor" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:85 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Yapılan hacim içinde tüm nesneler için konum bulunamadı" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:417 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 msgctxt "@title:window" msgid "File Already Exists" msgstr "Dosya Zaten Mevcut" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:418 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 #, python-brace-format -msgctxt "@label" +msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "Dosya {0} zaten mevcut. Üstüne yazmak istediğinizden emin misiniz?" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:801 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" msgid "Custom" msgstr "Özel" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:805 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 msgctxt "@label" msgid "Custom Material" msgstr "Özel Malzeme" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +msgctxt "@info:status" +msgid "The selected material is incompatible with the selected machine or configuration." +msgstr "Seçilen malzeme, seçilen makine veya yapılandırma ile uyumlu değil." + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:109 +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 +msgctxt "@info:title" +msgid "Incompatible Material" +msgstr "" + #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." msgid "The selected material diameter causes the material to become incompatible with the current printer." @@ -698,70 +1022,86 @@ msgstr "Malzeme çapını değiştirme işlemini geri al." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "Profilin {0}na aktarımı başarısız oldu: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:148 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "Profilin {0}na aktarımı başarısız oldu: Yazıcı uzantı hata bildirdi." +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "Profil {0}na aktarıldı" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:199 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:208 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:242 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +msgctxt "@info:title" +msgid "Export Details" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:213 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:247 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "{0}dan profil içe aktarımı başarısız oldu: {1}" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:210 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:246 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profil başarıyla içe aktarıldı {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:249 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Profil {0} öğesinde bilinmeyen bir dosya türü var veya profil bozuk." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:267 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:272 msgctxt "@label" msgid "Custom profile" msgstr "Özel profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:278 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Profilde eksik bir kalite tipi var." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:300 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "Mevcut yapılandırma için bir kalite tipi {0} bulunamıyor." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:95 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "Portalın yazdırılan modeller ile çarpışmasını önlemek için yapı hacmi yüksekliği “Sıralamayı Yazdır” ayarı nedeniyle azaltıldı." +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 +msgctxt "@info:title" +msgid "Build Volume" +msgstr "" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Nesneler çoğaltılıyor ve yerleştiriliyor" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "" + #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" msgid "Crash Report" @@ -783,34 +1123,34 @@ msgctxt "@action:button" msgid "Open Web Page" msgstr "Web Sayfasını Aç" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:248 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Makineler yükleniyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:610 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Görünüm ayarlanıyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:652 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Arayüz yükleniyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:815 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1285 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1295 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Aynı anda yalnızca bir G-code dosyası yüklenebilir. {0} içe aktarma atlandı" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1294 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1304 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" @@ -840,12 +1180,12 @@ msgstr "X (Genişlik)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:286 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:838 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:839 msgctxt "@label" msgid "mm" msgstr "mm" @@ -935,108 +1275,72 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "Nozül ucu ve portal sistemi (X ve Y aksları) arasındaki yükseklik farkı. “Birer birer” çıktı alırken önceki çıktılar ile portalın çakışmasını önlemek için kullanılır." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "Ekstrüder Sayısı" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 msgctxt "@tooltip" msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." msgstr "Yazıcı tarafından desteklenen nominal filaman çapı. Tam çap malzeme ve/veya profil tarafından etkisiz kılınacaktır." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:290 msgctxt "@label" msgid "Material diameter" msgstr "Malzeme çapı" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:297 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:388 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 msgctxt "@label" msgid "Nozzle size" msgstr "Nozzle boyutu" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:315 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 msgctxt "@label" msgid "Start Gcode" msgstr "Gcode’u başlat" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:325 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "Başlangıçta yürütülecek Gcode komutları." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:334 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:335 msgctxt "@label" msgid "End Gcode" msgstr "Gcode’u sonlandır" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:344 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "Bitişte yürütülecek Gcode komutları." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:376 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:377 msgctxt "@label" msgid "Nozzle Settings" msgstr "Nozül Ayarları" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:398 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 msgctxt "@label" msgid "Nozzle offset X" msgstr "Nozül X ofseti" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:410 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Nozül Y ofseti" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:431 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "Ekstrüder Gcode’u başlat" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:449 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 msgctxt "@label" msgid "Extruder End Gcode" msgstr "Ekstrüder Gcode’u sonlandır" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:20 -msgctxt "@title:window" -msgid "Doodle3D Settings" -msgstr "Doodle3D Ayarları" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:53 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 -msgctxt "@action:button" -msgid "Save" -msgstr "Kaydet" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:23 -msgctxt "@title:window" -msgid "Print to: %1" -msgstr "Şuraya yazdır: %1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:40 -msgctxt "@label" -msgid "Extruder Temperature: %1/%2°C" -msgstr "Ekstruder Sıcaklığı: %1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:46 -msgctxt "@label" -msgid "Bed Temperature: %1/%2°C" -msgstr "Yatak Sıcaklığı: %1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:64 -msgctxt "@label" -msgid "%1" -msgstr "%1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:82 -msgctxt "@action:button" -msgid "Print" -msgstr "Yazdır" - #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" msgid "Changelog" @@ -1045,9 +1349,10 @@ msgstr "Değişiklik Günlüğü" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:55 #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:446 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:306 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:78 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:125 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 @@ -1101,30 +1406,38 @@ msgid "Unknown error code: %1" msgstr "Bilinmeyen hata kodu: %1" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:55 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Ağ Yazıcısına Bağlan" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:65 msgctxt "@label" msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "Yazıcınıza ağ üzerinden doğrudan bağlamak için, lütfen yazıcınızın ağ kablosu kullanan bir ağa bağlı olduğundan emin olun veya yazıcınızı WiFi ağına bağlayın. Cura'ya yazıcınız ile bağlanamıyorsanız g-code dosyalarını yazıcınıza aktarmak için USB sürücüsü kullanabilirsiniz.\n\nAşağıdaki listeden yazıcınızı seçin:" +msgstr "" +"Yazıcınıza ağ üzerinden doğrudan bağlamak için, lütfen yazıcınızın ağ kablosu kullanan bir ağa bağlı olduğundan emin olun veya yazıcınızı WiFi ağına bağlayın. Cura'ya yazıcınız ile bağlanamıyorsanız g-code dosyalarını yazıcınıza aktarmak için USB sürücüsü kullanabilirsiniz.\n" +"\n" +"Aşağıdaki listeden yazıcınızı seçin:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 msgctxt "@action:button" msgid "Add" msgstr "Ekle" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:85 msgctxt "@action:button" msgid "Edit" msgstr "Düzenle" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 @@ -1133,87 +1446,210 @@ msgid "Remove" msgstr "Kaldır" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:33 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:104 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:35 msgctxt "@action:button" msgid "Refresh" msgstr "Yenile" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:196 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:196 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Yazıcınız listede yoksa ağ yazdırma sorun giderme kılavuzunu okuyun" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:223 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:223 msgctxt "@label" msgid "Type" msgstr "Tür" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 msgctxt "@label" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:238 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:238 msgctxt "@label" msgid "Ultimaker 3 Extended" msgstr "Genişletilmiş Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:241 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:241 msgctxt "@label" msgid "Unknown" msgstr "Bilinmiyor" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:254 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:254 msgctxt "@label" msgid "Firmware version" msgstr "Üretici yazılımı sürümü" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:266 msgctxt "@label" msgid "Address" msgstr "Adres" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Bu adresteki yazıcı henüz yanıt vermedi." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Bağlan" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 msgctxt "@title:window" msgid "Printer Address" msgstr "Yazıcı Adresi" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "IP adresini veya yazıcınızın ağ üzerindeki ana bilgisayar adını girin." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 msgctxt "@action:button" msgid "Ok" msgstr "Tamam" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:37 msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "Yazıcıya Bağlan" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:116 msgctxt "@info:tooltip" msgid "Load the configuration of the printer into Cura" msgstr "Yazıcı yapılandırmasını Cura’ya yükle" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:117 msgctxt "@action:button" msgid "Activate Configuration" msgstr "Yapılandırmayı Etkinleştir" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Yazdır" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 +msgctxt "@label:status" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 +msgctxt "@label:status" +msgid "Reserved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 +msgctxt "@label:status" +msgid "Finished" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 +msgctxt "@label:status" +msgid "Preparing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 +msgctxt "@label:status" +msgid "Available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 +msgctxt "@label" +msgid "Completed on: " +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 +msgctxt "@label" +msgid "Clear build plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 +msgctxt "@label" +msgid "Preparing to print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 +msgctxt "@label" +msgid "PRINTER GROUP" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 +msgctxt "@title" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 +msgctxt "@label" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 +msgctxt "@label" +msgid "Queued" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 +msgctxt "@label:title" +msgid "Printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 +msgctxt "@action:button" +msgid "View printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1302,67 +1738,62 @@ msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Etkin son işleme dosyalarını değiştir" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:71 -msgctxt "@label" -msgid "View Mode: Layers" -msgstr "Görüntüleme Modu: Katmanlar" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:88 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 msgctxt "@label" msgid "Color scheme" msgstr "Renk şeması" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:102 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:91 msgctxt "@label:listbox" msgid "Material Color" msgstr "Malzeme Rengi" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:106 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:95 msgctxt "@label:listbox" msgid "Line Type" msgstr "Çizgi Tipi" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:144 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 msgctxt "@label" msgid "Compatibility Mode" msgstr "Uyumluluk Modu" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:210 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 msgctxt "@label" msgid "Show Travels" msgstr "Geçişleri Göster" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 msgctxt "@label" msgid "Show Helpers" msgstr "Yardımcıları Göster" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 msgctxt "@label" msgid "Show Shell" msgstr "Kabuğu Göster" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:234 msgctxt "@label" msgid "Show Infill" msgstr "Dolguyu Göster" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:264 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:283 msgctxt "@label" msgid "Only Show Top Layers" msgstr "Yalnızca Üst Katmanları Göster" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:273 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:292 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "En Üstteki 5 Ayrıntılı Katmanı Göster" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:284 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:303 msgctxt "@label" msgid "Top / Bottom" msgstr "Üst / Alt" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:288 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 msgctxt "@label" msgid "Inner Wall" msgstr "İç Duvar" @@ -1437,23 +1868,23 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Düzeltme" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:157 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 msgctxt "@action:button" msgid "Select settings" msgstr "Ayarları seçin" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:197 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Bu modeli Özelleştirmek için Ayarları seçin" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:221 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrele..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:245 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 msgctxt "@label:checkbox" msgid "Show all" msgstr "Tümünü göster" @@ -1590,25 +2021,43 @@ msgctxt "@title:window" msgid "Find & Update plugins" msgstr "Eklentileri Bul ve Güncelle" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:27 msgctxt "@label" msgid "Here you can find a list of Third Party plugins." msgstr "Burada Üçüncü Taraf eklentilerinin listesini görebilirsiniz." -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:143 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 msgctxt "@action:button" msgid "Upgrade" msgstr "Yükselt" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 msgctxt "@action:button" msgid "Installed" msgstr "Yüklü" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 +msgctxt "@title:window" +msgid "Plugin License Agreement" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 +msgctxt "@label" +msgid "" +" plugin contains a license.\n" +"You need to accept this license to install this plugin.\n" +"Do you agree with the terms below?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" -msgid "Download" -msgstr "İndir" +msgid "Accept" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" +msgstr "" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -1784,71 +2233,71 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "Her şey yolunda! Kontrol işlemini tamamladınız." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "Yazıcıya bağlı değil" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:91 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "Yazıcı komutları kabul etmiyor" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "Bakımda. Lütfen yazıcıyı kontrol edin" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "Yazıcı bağlantısı koptu" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Yazdırılıyor..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Duraklatıldı" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Hazırlanıyor..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "Lütfen yazıcıyı çıkarın " -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 msgctxt "@label:" msgid "Resume" msgstr "Devam et" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Pause" msgstr "Durdur" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:271 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 msgctxt "@label:" msgid "Abort Print" msgstr "Yazdırmayı Durdur" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 msgctxt "@window:title" msgid "Abort print" msgstr "Yazdırmayı durdur" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:283 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Yazdırmayı iptal etmek istediğinizden emin misiniz?" @@ -1863,7 +2312,9 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "Bazı profil ayarlarını özelleştirdiniz.\nBu ayarları kaydetmek veya iptal etmek ister misiniz?" +msgstr "" +"Bazı profil ayarlarını özelleştirdiniz.\n" +"Bu ayarları kaydetmek veya iptal etmek ister misiniz?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -1881,19 +2332,19 @@ msgid "Customized" msgstr "Özelleştirilmiş" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Her zaman sor" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:587 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "İptal et ve bir daha sorma" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:588 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "Kaydet ve bir daha sorma" @@ -2034,7 +2485,7 @@ msgid "Unit" msgstr "Birim" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 msgctxt "@title:tab" msgid "General" msgstr "Genel" @@ -2049,223 +2500,223 @@ msgctxt "@label" msgid "Language:" msgstr "Dil:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 msgctxt "@label" msgid "Currency:" msgstr "Para Birimi:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 msgctxt "@label" msgid "Theme:" msgstr "Tema:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Bu değişikliklerinin geçerli olması için uygulamayı yeniden başlatmanız gerekecektir." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:289 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Ayarlar değiştirilirken otomatik olarak dilimle." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Otomatik olarak dilimle" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Görünüm şekli" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Modelin desteklenmeyen alanlarını kırmızı ile gösterin. Destek alınmadan bu alanlar düzgün bir şekilde yazdırılmayacaktır." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Dışarıda kalan alanı göster" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Bir model seçildiğinde bu model görüntünün ortasında kalacak şekilde kamera hareket eder." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:347 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Öğeyi seçince kamerayı ortalayın" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Cura’nın varsayılan yakınlaştırma davranışı tersine çevrilsin mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Kamera yakınlaştırma yönünü ters çevir." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Yakınlaştırma farenin hareket yönüne uygun olsun mu?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Farenin hareket yönüne göre yakınlaştır" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Platformun üzerindeki öğeler kesişmemeleri için hareket ettirilmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:382 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Modellerin birbirinden ayrı olduğundan emin olduğundan emin olun" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Platformun üzerindeki modeller yapı levhasına değmeleri için indirilmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Modelleri otomatik olarak yapı tahtasına indirin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "Gcode okuyucuda uyarı mesajı göster." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "Gcode okuyucuda uyarı mesajı" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Katman, uyumluluk moduna zorlansın mı?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Katman görünümünü uyumluluk moduna zorla (yeniden başlatma gerekir)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 msgctxt "@label" msgid "Opening and saving files" msgstr "Dosyaların açılması ve kaydedilmesi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Modeller çok büyükse yapı hacmine göre ölçeklendirilmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:462 msgctxt "@option:check" msgid "Scale large models" msgstr "Büyük modelleri ölçeklendirin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Bir modelin birimi milimetre değil de metre ise oldukça küçük görünebilir. Bu modeller ölçeklendirilmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:469 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Çok küçük modelleri ölçeklendirin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Yazıcı adına bağlı bir ön ek otomatik olarak yazdırma işinin adına eklenmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Makine ön ekini iş adına ekleyin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Bir proje dosyasını kaydederken özet gösterilmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:496 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Projeyi kaydederken özet iletişim kutusunu göster" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Bir proje dosyası açıldığında varsayılan davranış" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:513 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Bir proje dosyası açıldığında varsayılan davranış: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:526 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 msgctxt "@option:openProject" msgid "Always ask" msgstr "Her zaman sor" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Her zaman proje olarak aç" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:528 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always import models" msgstr "Her zaman modelleri içe aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:564 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Bir profil üzerinde değişiklik yapıp farklı bir profile geçtiğinizde, değişikliklerin kaydedilmesini isteyip istemediğinizi soran bir iletişim kutusu açılır. Alternatif olarak bu işleve yönelik varsayılan bir davranış seçebilir ve bu iletişim kutusunun bir daha görüntülenmemesini tercih edebilirsiniz." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@label" msgid "Override Profile" msgstr "Profilin Üzerine Yaz" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:622 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 msgctxt "@label" msgid "Privacy" msgstr "Gizlilik" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Cura, program başladığında güncellemeleri kontrol etmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:634 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Başlangıçta güncellemeleri kontrol edin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Yazdırmanızdaki anonim veriler Ultimaker’a gönderilmeli mi? Unutmayın; hiçbir model, IP adresi veya diğer kişiye özgü bilgiler gönderilmez veya saklanmaz." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(Anonim) yazdırma bilgisi gönder" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:441 msgctxt "@title:tab" msgid "Printers" msgstr "Yazıcılar" @@ -2315,7 +2766,7 @@ msgid "Waiting for a printjob" msgstr "Yazdırma işlemi bekleniyor" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 msgctxt "@title:tab" msgid "Profiles" msgstr "Profiller" @@ -2413,7 +2864,7 @@ msgid "Export Profile" msgstr "Profili Dışa Aktar" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 msgctxt "@title:tab" msgid "Materials" msgstr "Malzemeler" @@ -2445,14 +2896,14 @@ msgid "Import Material" msgstr "Malzemeyi İçe Aktar" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "Malzeme aktarılamadı %1: %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "Malzeme başarıyla aktarıldı %1" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2461,17 +2912,17 @@ msgid "Export Material" msgstr "Malzemeyi Dışa Aktar" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "Malzemenin dışa aktarımı başarısız oldu %1: %2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "Malzeme başarıyla dışa aktarıldı %1" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:822 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 msgctxt "@title:window" msgid "Add Printer" msgstr "Yazıcı Ekle" @@ -2486,71 +2937,6 @@ msgctxt "@action:button" msgid "Add Printer" msgstr "Yazıcı Ekle" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:166 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "Dış Duvar" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:167 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "İç Duvarlar" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:168 -msgctxt "@tooltip" -msgid "Skin" -msgstr "Yüzey Alanı" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:169 -msgctxt "@tooltip" -msgid "Infill" -msgstr "Dolgu" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:170 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "Destek Dolgusu" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:171 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "Destek Arayüzü" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:172 -msgctxt "@tooltip" -msgid "Support" -msgstr "Destek" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:173 -msgctxt "@tooltip" -msgid "Travel" -msgstr "Hareket" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:174 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "Geri Çekmeler" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:175 -msgctxt "@tooltip" -msgid "Other" -msgstr "Diğer" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:217 -msgctxt "@label" -msgid "00h 00min" -msgstr "00sa 00dk" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:270 -msgctxt "@label" -msgid "%1 m / ~ %2 g / ~ %4 %3" -msgstr "%1 m / ~ %2 g / ~ %4 %3" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:275 -msgctxt "@label" -msgid "%1 m / ~ %2 g" -msgstr "%1 m / ~ %2 g" - #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -2566,7 +2952,9 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "Cura, topluluk iş birliği ile Ultimaker B.V. tarafından geliştirilmiştir.\nCura aşağıdaki açık kaynak projelerini gururla kullanmaktadır:" +msgstr "" +"Cura, topluluk iş birliği ile Ultimaker B.V. tarafından geliştirilmiştir.\n" +"Cura aşağıdaki açık kaynak projelerini gururla kullanmaktadır:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -2658,32 +3046,48 @@ msgctxt "@label" msgid "SVG icons" msgstr "SVG simgeleri" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +msgctxt "@label" +msgid "Profile:" +msgstr "Profil:" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"Bazı ayar/geçersiz kılma değerleri profilinizde saklanan değerlerden farklıdır.\n" +"\n" +"Profil yöneticisini açmak için tıklayın." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" msgid "Search..." msgstr "Ara..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Değeri tüm ekstruderlere kopyala" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:405 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Bu ayarı gizle" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Bu ayarı gösterme" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:419 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Bu ayarı görünür yap" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:438 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Görünürlük ayarını yapılandır..." @@ -2694,7 +3098,10 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Gizlenen bazı ayarlar normal hesaplanan değerden farklı değerler kullanır.\n\nBu ayarları görmek için tıklayın." +msgstr "" +"Gizlenen bazı ayarlar normal hesaplanan değerden farklı değerler kullanır.\n" +"\n" +"Bu ayarları görmek için tıklayın." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 msgctxt "@label Header for list of settings." @@ -2722,7 +3129,10 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Bu ayarın değeri profilden farklıdır.\n\nProfil değerini yenilemek için tıklayın." +msgstr "" +"Bu ayarın değeri profilden farklıdır.\n" +"\n" +"Profil değerini yenilemek için tıklayın." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 msgctxt "@label" @@ -2730,26 +3140,56 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Bu ayar normal olarak yapılır ama şu anda mutlak değer ayarı var.\n\nHesaplanan değeri yenilemek için tıklayın." +msgstr "" +"Bu ayar normal olarak yapılır ama şu anda mutlak değer ayarı var.\n" +"\n" +"Hesaplanan değeri yenilemek için tıklayın." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Yazıcı Ayarları" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "Yazdırma Ayarı devre dışı\nG-code dosyaları üzerinde değişiklik yapılamaz" +msgstr "" +"Yazdırma Ayarı devre dışı\n" +"G-code dosyaları üzerinde değişiklik yapılamaz" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 +msgctxt "@label" +msgid "00h 00min" +msgstr "00sa 00dk" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +msgctxt "@tooltip" +msgid "Time information" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 +msgctxt "@description" +msgid "Print time" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +msgctxt "@label" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 +msgctxt "@label" +msgid "%1m / ~ %2g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" msgid "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." msgstr "Önerilen Yazıcı Ayarları

Seçilen yazıcı, malzeme ve kalite için önerilen ayarları kullanarak yazdırın." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:460 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:481 msgctxt "@tooltip" msgid "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." msgstr "Özel Yazıcı Ayarları

Dilimleme işleminin her bir bölümünü detaylıca kontrol ederek yazdırın." @@ -2799,81 +3239,87 @@ msgid "No printer connected" msgstr "Yazıcı bağlı değil" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" -msgid "Hotend" -msgstr "Sıcak uç" +msgid "Extruder" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:119 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 +msgctxt "@tooltip" +msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "Bu ekstruderin geçerli sıcaklığı." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Bu ekstruderdeki malzemenin rengi." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Bu ekstruderdeki malzeme." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Bu ekstrudere takılan nozül." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:249 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 msgctxt "@label" msgid "Build plate" msgstr "Yapı levhası" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:278 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "Isıtılmış yatağın hedef sıcaklığı. Yatak, bu sıcaklığa doğru ısıtılır veya soğutulur. Bu ayar 0 olarak belirlenirse yatak ısıtma kapatılır." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:310 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:343 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "Isıtılmış yatağın geçerli sıcaklığı." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:422 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "Yatağın ön ısıtma sıcaklığı." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "İptal Et" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button" msgid "Pre-heat" msgstr "Ön ısıtma" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:610 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "Yazdırma öncesinde yatağı ısıt. Isıtma sırasında yazdırma işinizi ayarlamaya devam edebilirsiniz. Böylece yazdırmaya hazır olduğunuzda yatağın ısınmasını beklemeniz gerekmez." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:677 msgctxt "@label" msgid "Active print" msgstr "Geçerli yazdırma" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:648 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 msgctxt "@label" msgid "Job Name" msgstr "İşin Adı" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 msgctxt "@label" msgid "Printing Time" msgstr "Yazdırma süresi" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:660 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 msgctxt "@label" msgid "Estimated time left" msgstr "Kalan tahmini süre" @@ -3064,53 +3510,53 @@ msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Görünürlük ayarını yapılandır..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Lütfen bir 3D model yükleyin" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Dilimlemeye hazır" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Dilimleniyor..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "%1 Hazır" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Dilimlenemedi" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Dilimleme kullanılamıyor" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Hazırla" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Cancel" msgstr "İptal Et" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:288 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "Etkin çıkış aygıtını seçin" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 msgctxt "@title:window" msgid "Open file(s)" msgstr "Dosya aç" @@ -3202,42 +3648,37 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Yardım" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 msgctxt "@action:button" msgid "Open File" msgstr "Dosya Aç" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:428 -msgctxt "@action:button" -msgid "View Mode" -msgstr "Görüntüleme Modu" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "Settings" msgstr "Ayarlar" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 msgctxt "@title:window" msgid "New project" msgstr "Yeni proje" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:532 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "Yeni bir proje başlatmak istediğinizden emin misiniz? Bu işlem yapı levhasını ve kaydedilmemiş tüm ayarları silecektir." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:750 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:694 msgctxt "@window:title" msgid "Install Plugin" msgstr "Eklenti Kur" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:757 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 msgctxt "@title:window" msgid "Open File(s)" msgstr "Dosya Aç" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:760 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Seçtiğiniz dosyalar arasında bir veya daha fazla G-code dosyası bulduk. Tek seferde sadece bir G-code dosyası açabilirsiniz. Bir G-code dosyası açmak istiyorsanız, sadece birini seçiniz." @@ -3262,102 +3703,87 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Kaydederken proje özetini bir daha gösterme" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 +msgctxt "@action:button" +msgid "Save" +msgstr "Kaydet" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 msgctxt "@title:tab" msgid "Prepare" msgstr "Hazırla" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" -msgid "Print" -msgstr "Yazdır" +msgid "Monitor" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +msgctxt "@label" +msgid "Layer Height" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +msgctxt "@label" +msgid "Print Speed" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +msgctxt "@label" +msgid "Slower" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +msgctxt "@label" +msgid "Faster" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" msgid "Infill" msgstr "Dolgu" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "0%" -msgstr "%0" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:199 -msgctxt "@label" -msgid "Empty infill will leave your model hollow with low strength." -msgstr "Boş dolgu, modelinizin içinin boş ve düşük dayanımlı olmasına neden olacaktır." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:203 -msgctxt "@label" -msgid "20%" -msgstr "%20" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:210 -msgctxt "@label" -msgid "Light (20%) infill will give your model an average strength." -msgstr "Hafif (%20) dolgu, modelinize ortalama bir dayanıklılık verecektir." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:214 -msgctxt "@label" -msgid "50%" -msgstr "%50" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:221 -msgctxt "@label" -msgid "Dense (50%) infill will give your model an above average strength." -msgstr "Yoğun (%50) dolgu, modelinize ortalamanın üstünde bir dayanıklılık verecektir." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:225 -msgctxt "@label" -msgid "100%" -msgstr "%100" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:232 -msgctxt "@label" -msgid "Solid (100%) infill will make your model completely solid." -msgstr "Katı (%100) dolgu, modelinizi tamamen katı bir hale getirecektir." - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:236 -msgctxt "@label" -msgid "Gradual" -msgstr "Kademeli" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:244 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "Kademeli dolgu, yukarıya doğru dolgu miktarını kademeli olarak yükselecektir." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:267 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 +msgctxt "@label" +msgid "Enable gradual" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Generate Support" msgstr "Oluşturma Desteği" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Modellerin askıda kalan kısımlarını destekleyen yapılar oluşturun. Bu yapılar olmadan, yazdırma sırasında söz konusu kısımlar düşebilir." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:718 msgctxt "@label" msgid "Support Extruder" msgstr "Destek Ekstrüderi" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:391 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "Destek için kullanacağınız ekstruderi seçin. Bu, modelin havadayken düşmesini veya yazdırılmasını önlemek için modelin altındaki destekleyici yapıları güçlendirir." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:796 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Yapı Levhası Yapıştırması" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:462 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "Bir kenar veya radye yazdırın. Bu nesnenizin etrafına veya altına daha sonra kesilmesi kolay olan düz bir alan sağlayacak." -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:515 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:883 msgctxt "@label" msgid "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides" msgstr "Yazıcı çıktılarınızı iyileştirmek için yardıma mı ihtiyacınız var?
Ultimaker Sorun Giderme Kılavuzlarını okuyun" @@ -3394,30 +3820,21 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Motor Günlüğü" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:193 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 msgctxt "@label" msgid "Material" msgstr "Malzeme" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:236 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +msgctxt "@label" +msgid "Check material compatibility" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Malzemenin uyumluluğunu Ultimaker.com üzerinden kontrol etmek için tıklayın." -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:325 -msgctxt "@label" -msgid "Profile:" -msgstr "Profil:" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "Bazı ayar/geçersiz kılma değerleri profilinizde saklanan değerlerden farklıdır.\n\nProfil yöneticisini açmak için tıklayın." - #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -3468,6 +3885,16 @@ msgctxt "name" msgid "God Mode" msgstr "Tanrı Modu" +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +msgstr "" + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "" + #: ChangeLogPlugin/plugin.json msgctxt "description" msgid "Shows changes since latest checked version." @@ -3498,16 +3925,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB yazdırma" -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing X3G files" -msgstr "X3G dosyalarının yazılması için destek sağlar" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3G Writer" -msgstr "X3G Yazıcı" - #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -3528,6 +3945,21 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3 Ağ Bağlantısı" +#: CuraPrintClusterUpload/plugin.json +msgctxt "name" +msgid "UM3 Network Connection (Cluster)" +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "" + #: CuraSolidWorksPlugin/plugin.json msgctxt "description" msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" @@ -3618,6 +4050,16 @@ msgctxt "name" msgid "Version Upgrade 2.5 to 2.6" msgstr "2.5’ten 2.6’ya Sürüm Yükseltme" +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -3758,6 +4200,189 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura Profil Okuyucu" +#~ msgctxt "@item:inlistbox" +#~ msgid "X-Ray" +#~ msgstr "X-Ray" + +#~ msgctxt "@label" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@info:whatsthis" +#~ msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +#~ msgstr "G-Code’u kabul eder ve WiFi üzerinden Doodle3D WiFi-Box'a gönderir." + +#~ msgctxt "@item:inmenu" +#~ msgid "Doodle3D printing" +#~ msgstr "Doodle3D yazdırma" + +#~ msgctxt "@action:button" +#~ msgid "Print with Doodle3D" +#~ msgstr "Doodle3D ile yazdır" + +#~ msgctxt "@info:tooltip" +#~ msgid "Print with " +#~ msgstr "Şununla yazdır:" + +#~ msgctxt "@title:menu" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Enable Scan devices..." +#~ msgstr "Tarama aygıtlarını etkinleştir..." + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G Dosyası" + +#~ msgctxt "@info:progress" +#~ msgid "Saving to Removable Drive {0}" +#~ msgstr "Çıkarılabilir Sürücüye Kaydediliyor {0}" + +#~ msgctxt "@info:status" +#~ msgid "Could not save to {0}: {1}" +#~ msgstr "{0}na kaydedilemedi: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" +#~ msgstr "SolidWorks dosyanızı tekrar manuel olarak açmanız gerektiğini unutmayın! Modeli yeniden yüklemek işe yaramayacaktır!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Layers" +#~ msgstr "Katmanlar" + +#~ msgid "Browse plugins" +#~ msgstr "Eklentilere göz at" + +#~ msgctxt "@item:inmenu" +#~ msgid "Solid" +#~ msgstr "Katı" + +#~ msgctxt "@label" +#~ msgid "The file {0} already exists. Are you sure you want to overwrite it?" +#~ msgstr "Dosya {0} zaten mevcut. Üstüne yazmak istediğinizden emin misiniz?" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: {1}" +#~ msgstr "Profilin {0}na aktarımı başarısız oldu: {1}" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: Writer plugin reported failure." +#~ msgstr "Profilin {0}na aktarımı başarısız oldu: Yazıcı uzantı hata bildirdi." + +#~ msgctxt "@info:status" +#~ msgid "Exported profile to {0}" +#~ msgstr "Profil {0}na aktarıldı" + +#~ msgctxt "@info:status" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "{0}dan profil içe aktarımı başarısız oldu: {1}" + +#~ msgctxt "@title:window" +#~ msgid "Doodle3D Settings" +#~ msgstr "Doodle3D Ayarları" + +#~ msgctxt "@title:window" +#~ msgid "Print to: %1" +#~ msgstr "Şuraya yazdır: %1" + +#~ msgctxt "@label" +#~ msgid "Extruder Temperature: %1/%2°C" +#~ msgstr "Ekstruder Sıcaklığı: %1/%2°C" + +#~ msgctxt "@label" +#~ msgid "Bed Temperature: %1/%2°C" +#~ msgstr "Yatak Sıcaklığı: %1/%2°C" + +#~ msgctxt "@label" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "@label" +#~ msgid "View Mode: Layers" +#~ msgstr "Görüntüleme Modu: Katmanlar" + +#~ msgctxt "@info:status" +#~ msgid "Could not import material %1: %2" +#~ msgstr "Malzeme aktarılamadı %1: %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully imported material %1" +#~ msgstr "Malzeme başarıyla aktarıldı %1" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export material to %1: %2" +#~ msgstr "Malzemenin dışa aktarımı başarısız oldu %1: %2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully exported material to %1" +#~ msgstr "Malzeme başarıyla dışa aktarıldı %1" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g / ~ %4 %3" +#~ msgstr "%1 m / ~ %2 g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g" +#~ msgstr "%1 m / ~ %2 g" + +#~ msgctxt "@label" +#~ msgid "Hotend" +#~ msgstr "Sıcak uç" + +#~ msgctxt "@action:button" +#~ msgid "View Mode" +#~ msgstr "Görüntüleme Modu" + +#~ msgctxt "@title:tab" +#~ msgid "Print" +#~ msgstr "Yazdır" + +#~ msgctxt "@label" +#~ msgid "0%" +#~ msgstr "%0" + +#~ msgctxt "@label" +#~ msgid "Empty infill will leave your model hollow with low strength." +#~ msgstr "Boş dolgu, modelinizin içinin boş ve düşük dayanımlı olmasına neden olacaktır." + +#~ msgctxt "@label" +#~ msgid "20%" +#~ msgstr "%20" + +#~ msgctxt "@label" +#~ msgid "Light (20%) infill will give your model an average strength." +#~ msgstr "Hafif (%20) dolgu, modelinize ortalama bir dayanıklılık verecektir." + +#~ msgctxt "@label" +#~ msgid "50%" +#~ msgstr "%50" + +#~ msgctxt "@label" +#~ msgid "Dense (50%) infill will give your model an above average strength." +#~ msgstr "Yoğun (%50) dolgu, modelinize ortalamanın üstünde bir dayanıklılık verecektir." + +#~ msgctxt "@label" +#~ msgid "100%" +#~ msgstr "%100" + +#~ msgctxt "@label" +#~ msgid "Solid (100%) infill will make your model completely solid." +#~ msgstr "Katı (%100) dolgu, modelinizi tamamen katı bir hale getirecektir." + +#~ msgctxt "@label" +#~ msgid "Gradual" +#~ msgstr "Kademeli" + +#~ msgctxt "description" +#~ msgid "Provides support for writing X3G files" +#~ msgstr "X3G dosyalarının yazılması için destek sağlar" + +#~ msgctxt "name" +#~ msgid "X3G Writer" +#~ msgstr "X3G Yazıcı" + #~ msgctxt "@label" #~ msgid "Machine Settings action" #~ msgstr "Makine Ayarları eylemi" @@ -4338,4 +4963,4 @@ msgstr "Cura Profil Okuyucu" #~ msgctxt "@label:" #~ msgid "Print Again" -#~ msgstr "Yeniden Yazdır" \ No newline at end of file +#~ msgstr "Yeniden Yazdır" diff --git a/resources/i18n/tr_TR/fdmextruder.def.json.po b/resources/i18n/tr_TR/fdmextruder.def.json.po index 348d28ab76..afe8879bf7 100644 --- a/resources/i18n/tr_TR/fdmextruder.def.json.po +++ b/resources/i18n/tr_TR/fdmextruder.def.json.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -194,4 +194,4 @@ msgstr "Extruder İlk Y konumu" #: fdmextruder.def.json msgctxt "extruder_prime_pos_y description" msgid "The Y coordinate of the position where the nozzle primes at the start of printing." -msgstr "Nozül yazdırma işlemini başlatmaya hazırlandığında konumun Y koordinatı." \ No newline at end of file +msgstr "Nozül yazdırma işlemini başlatmaya hazırlandığında konumun Y koordinatı." diff --git a/resources/i18n/tr_TR/fdmprinter.def.json.po b/resources/i18n/tr_TR/fdmprinter.def.json.po index 15fbec28fa..6342b4f822 100644 --- a/resources/i18n/tr_TR/fdmprinter.def.json.po +++ b/resources/i18n/tr_TR/fdmprinter.def.json.po @@ -2,7 +2,7 @@ # Copyright (C) 2017 Ultimaker # This file is distributed under the same license as the Cura package. # Ruben Dulek , 2017. -# +# msgid "" msgstr "" "Project-Id-Version: Cura 2.7\n" @@ -56,7 +56,9 @@ msgctxt "machine_start_gcode description" msgid "" "Gcode commands to be executed at the very start - separated by \n" "." -msgstr "​\n ile ayrılan, başlangıçta yürütülecek G-code komutları." +msgstr "" +"​\n" +" ile ayrılan, başlangıçta yürütülecek G-code komutları." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -68,7 +70,9 @@ msgctxt "machine_end_gcode description" msgid "" "Gcode commands to be executed at the very end - separated by \n" "." -msgstr "​\n ile ayrılan, bitişte yürütülecek Gcode komutları." +msgstr "" +"​\n" +" ile ayrılan, bitişte yürütülecek Gcode komutları." #: fdmprinter.def.json msgctxt "material_guid label" @@ -755,16 +759,6 @@ msgctxt "shell description" msgid "Shell" msgstr "Kovan" -#: fdmprinter.def.json -msgctxt "wall_extruder_nr label" -msgid "Wall Extruder" -msgstr "Duvar Ekstruderi" - -#: fdmprinter.def.json -msgctxt "wall_extruder_nr description" -msgid "The extruder train used for printing the walls. This is used in multi-extrusion." -msgstr "Duvarları yazdırmak için kullanılan ekstruder dişli çarkı. Çoklu ekstrüzyon işlemi için kullanılır." - #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" msgid "Outer Wall Extruder" @@ -1125,6 +1119,11 @@ msgctxt "z_seam_type option random" msgid "Random" msgstr "Gelişigüzel" +#: fdmprinter.def.json +msgctxt "z_seam_type option sharpest_corner" +msgid "Sharpest Corner" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1145,6 +1144,36 @@ msgctxt "z_seam_y description" msgid "The Y coordinate of the position near where to start printing each part in a layer." msgstr "Bir katmandaki her kısmın yazdırılmaya başlanacağı yere yakın konumun Y koordinatı." +#: fdmprinter.def.json +msgctxt "z_seam_corner label" +msgid "Seam Corner Preference" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner description" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_none" +msgid "None" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_inner" +msgid "Hide Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_outer" +msgid "Expose Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_any" +msgid "Hide or Expose Seam" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1165,6 +1194,16 @@ msgctxt "skin_no_small_gaps_heuristic description" msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." msgstr "Modelde küçük dikey açıklıklar varsa bu dar yerlerdeki üst ve alt yüzeyleri oluşturmak için %5 oranında ek hesaplama süresi verilebilir. Bu gibi bir durumda ayarı devre dışı bırakın." +#: fdmprinter.def.json +msgctxt "skin_outline_count label" +msgid "Extra Skin Wall Count" +msgstr "Ek Dış Katman Duvar Sayısı" + +#: fdmprinter.def.json +msgctxt "skin_outline_count description" +msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." +msgstr "Üst/alt şeklin en dıştaki parçasını eş merkezli hatlar ile değiştirir. Bir veya iki hat kullanmak, dolgu malzemesinde başlayan tavanları geliştirir." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1212,8 +1251,8 @@ msgstr "Dolgu Şekli" #: fdmprinter.def.json msgctxt "infill_pattern description" -msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "Yazdırma dolgu malzemesinin şekli. Hat ve zik zak dolguları alternatif katmanlarda yön değiştirerek malzeme masrafını azaltır Izgara, üçgen, kübik, dört yüzlü ve eş merkezli desenler her katmanda tamamıyla yazdırılır. Her yönde daha eşit dayanıklılık dağılımı sağlamak için küp ve dört yüzlü dolgular her katmanda değişir." +msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1242,8 +1281,13 @@ msgstr "Kübik Alt Bölüm" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" -msgid "Tetrahedral" -msgstr "Dört yüzlü" +msgid "Octet" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option quarter_cubic" +msgid "Quarter Cubic" +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1260,6 +1304,26 @@ msgctxt "infill_pattern option zigzag" msgid "Zig Zag" msgstr "Zik Zak" +#: fdmprinter.def.json +msgctxt "infill_pattern option cross" +msgid "Cross" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross_3d" +msgid "Cross 3D" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill label" +msgid "Connect Infill Lines" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill description" +msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" @@ -1381,34 +1445,34 @@ msgid "Don't generate areas of infill smaller than this (use skin instead)." msgstr "Bundan küçük dolgu alanları oluşturma (onun yerine yüzey kullan)." #: fdmprinter.def.json -msgctxt "expand_skins_into_infill label" -msgid "Expand Skins Into Infill" -msgstr "Yüzeyleri Dolguya Genişlet" +msgctxt "skin_preshrink label" +msgid "Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_skins_into_infill description" -msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." -msgstr "Düz zeminlerin üst ve/veya alt yüzeylerinin yüzey alanlarını genişletin. Varsayılan olarak yüzeyler dolguyu çevreleyen duvar çizgilerinin altında sona erer. Ancak bu ayar, dolgu yoğunluğu düşük olduğunda deliklerin görünmesine neden olur. Bu ayar, yüzeyleri duvar çizgisinin ötesine genişleterek sonraki katmandaki dolgunun yüzeye dayanmasını sağlar." +msgctxt "skin_preshrink description" +msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins label" -msgid "Expand Top Skins Into Infill" -msgstr "Üst Yüzey Alanını Dolguya Genişlet" +msgctxt "top_skin_preshrink label" +msgid "Top Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins description" -msgid "Expand the top skin areas (areas with air above) so that they support infill above." -msgstr "Dolguyu yukarıdan desteklemeleri için üst yüzey alanlarını (üzerinde hava bulunan alanları) genişletin." +msgctxt "top_skin_preshrink description" +msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins label" -msgid "Expand Bottom Skins Into Infill" -msgstr "Alt Yüzey Alanını Dolguya Genişlet" +msgctxt "bottom_skin_preshrink label" +msgid "Bottom Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins description" -msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." -msgstr "Dolgu katmanlarını yukarıdan ve aşağıdan desteklemeleri için alt yüzey alanlarını (altında hava bulunan alanları) genişletin." +msgctxt "bottom_skin_preshrink description" +msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1417,8 +1481,28 @@ msgstr "Yüzey Genişleme Mesafesi" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" -msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." -msgstr "Yüzeylerin dolguya doğru genişleyeceği mesafe. Varsayılan mesafe dolgu hatları arasındaki boşluğu kapatmaya yeterlidir ve dolgu yoğunluğu düşük olduğunda yüzeyin duvara temas ettiği kısımlarda oluşan delikleri önler. Küçük bir mesafe genellikle yeterli olur." +msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance label" +msgid "Top Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance description" +msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance label" +msgid "Bottom Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance description" +msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." +msgstr "" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -1800,16 +1884,6 @@ msgctxt "speed_topbottom description" msgid "The speed at which top/bottom layers are printed." msgstr "Üst/alt katmanların yazdırıldığı hız." -#: fdmprinter.def.json -msgctxt "speed_ironing label" -msgid "Ironing Speed" -msgstr "Ütüleme Hızı" - -#: fdmprinter.def.json -msgctxt "speed_ironing description" -msgid "The speed at which to pass over the top surface." -msgstr "Üst yüzeyi geçmek için gereken süre." - #: fdmprinter.def.json msgctxt "speed_support label" msgid "Support Speed" @@ -2040,16 +2114,6 @@ msgctxt "acceleration_topbottom description" msgid "The acceleration with which top/bottom layers are printed." msgstr "Üst/alt katmanların yazdırıldığı ivme." -#: fdmprinter.def.json -msgctxt "acceleration_ironing label" -msgid "Ironing Acceleration" -msgstr "Ütüleme İvmesi" - -#: fdmprinter.def.json -msgctxt "acceleration_ironing description" -msgid "The acceleration with which ironing is performed." -msgstr "Ütülemenin gerçekleştiği ivme." - #: fdmprinter.def.json msgctxt "acceleration_support label" msgid "Support Acceleration" @@ -2240,16 +2304,6 @@ msgctxt "jerk_topbottom description" msgid "The maximum instantaneous velocity change with which top/bottom layers are printed." msgstr "Üst/alt katmanların yazdırıldığı maksimum anlık hız değişimi." -#: fdmprinter.def.json -msgctxt "jerk_ironing label" -msgid "Ironing Jerk" -msgstr "Ütüleme İvmesi Değişimi" - -#: fdmprinter.def.json -msgctxt "jerk_ironing description" -msgid "The maximum instantaneous velocity change while performing ironing." -msgstr "Ütüleme sırasında oluşan maksimum anlık hız değişimi." - #: fdmprinter.def.json msgctxt "jerk_support label" msgid "Support Jerk" @@ -2765,6 +2819,11 @@ msgctxt "support_pattern option zigzag" msgid "Zig Zag" msgstr "Zik Zak" +#: fdmprinter.def.json +msgctxt "support_pattern option cross" +msgid "Cross" +msgstr "" + #: fdmprinter.def.json msgctxt "support_connect_zigzags label" msgid "Connect Support ZigZags" @@ -2777,23 +2836,33 @@ msgstr "Zikzakları Bağla Zik zak destek yapısının sağlamlığını artır #: fdmprinter.def.json msgctxt "support_skip_some_zags label" -msgid "Skip Some ZigZags Connections" -msgstr "Bazı Zikzak Bağlantılarını Atla" +msgid "Break Up Support In Chunks" +msgstr "" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" -msgid "Skip some ZigZags connections to make the support structure easier to break." -msgstr "Destek yapısının daha kolay kırılması için bazı Zikzak bağlantılarını atlayın." +msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm description" +msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count label" -msgid "ZigZag Connection Skip Count" -msgstr "Atlanan Zikzak Bağlantısı Sayısı" +msgid "Support Chunk Line Count" +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" -msgid "Skip one in every N connection lines to make the support structure easier to break." -msgstr "Destek yapısının daha kolay kırılması için her N bağlantı hattında bir zikzak atlayın." +msgid "Skip one in every N connection lines to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3335,7 +3404,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance, multiple skirt lines will extend outwards from this distance." -msgstr "Etek ve baskının ilk katmanı arasındaki yatay mesafe.\nBu minimum mesafedir ve çoklu etek hatları bu mesafeden dışa doğru genişleyecektir." +msgstr "" +"Etek ve baskının ilk katmanı arasındaki yatay mesafe.\n" +"Bu minimum mesafedir ve çoklu etek hatları bu mesafeden dışa doğru genişleyecektir." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3377,6 +3448,26 @@ msgctxt "brim_outside_only description" msgid "Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much." msgstr "Sadece modelin dış kısmındaki kenarı yazdırır. Yatak yapışmasını büyük oranda azaltmasa da daha sonra kaldırmanız gereken kenar sayısını azaltır." +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 label" +msgid "Initial Layer Z Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 description" +msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers label" +msgid "Z Offset Taper Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers description" +msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3387,6 +3478,16 @@ msgctxt "raft_margin description" msgid "If the raft is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print." msgstr "Radye etkinleştirildiğinde, ayrıca radye verilen model etrafındaki ek radye alanıdır. Bu boşluğu artırmak, daha fazla malzeme kullanırken ve yazdırma için daha az alan bırakırken daha sağlam bir radye oluşturacaktır." +#: fdmprinter.def.json +msgctxt "raft_smoothing label" +msgid "Raft Smoothing" +msgstr "" + +#: fdmprinter.def.json +msgctxt "raft_smoothing description" +msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_airgap label" msgid "Raft Air Gap" @@ -4062,6 +4163,16 @@ msgctxt "smooth_spiralized_contours description" msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." msgstr "Z dikişinin görünürlüğünü azaltmak için helezon şeklinde konturları düzeltin (Z-dikişi yazdırma durumunda çok az görünür olmalı, ancak tabaka görünümünde halen görünür olmalıdır). Düzeltme işleminin ince yüzey detaylarında bulanıklığa neden olabileceğini unutmayınız." +#: fdmprinter.def.json +msgctxt "relative_extrusion label" +msgid "Relative Extrusion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "relative_extrusion description" +msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." +msgstr "" + #: fdmprinter.def.json msgctxt "experimental label" msgid "Experimental" @@ -4072,6 +4183,16 @@ msgctxt "experimental description" msgid "experimental!" msgstr "deneysel!" +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "" + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4182,16 +4303,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Ekstrüzyon yolu hızına göre tarama sırasındaki hareket hızı. Tarama hareketi sırasında bowden tüpündeki basınç düştüğü için değerin %100’ün altında olması öneriliyor." -#: fdmprinter.def.json -msgctxt "skin_outline_count label" -msgid "Extra Skin Wall Count" -msgstr "Ek Dış Katman Duvar Sayısı" - -#: fdmprinter.def.json -msgctxt "skin_outline_count description" -msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." -msgstr "Üst/alt şeklin en dıştaki parçasını eş merkezli hatlar ile değiştirir. Bir veya iki hat kullanmak, dolgu malzemesinde başlayan tavanları geliştirir." - #: fdmprinter.def.json msgctxt "skin_alternate_rotation label" msgid "Alternate Skin Rotation" @@ -4202,6 +4313,26 @@ msgctxt "skin_alternate_rotation description" msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." msgstr "Üst/alt katmanların yazdırıldığı yönü değiştirin. Normal koşullarda sadece çapraz şekilde yazdırılırlar. Bu ayar sadece-X ve sadece-Y yönlerini ekler." +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size label" +msgid "Cross 3D Pocket Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size description" +msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly label" +msgid "Alternate Cross 3D Pockets" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly description" +msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." +msgstr "" + #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" msgid "Spaghetti Infill" @@ -4502,7 +4633,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "Yarı hızda sıkıştırılmış yukarı doğru hareket mesafesi.\nBu katmanlarda malzemeyi çok fazla ısıtmayarak önceki katmanlarda daha iyi yapışma sağlayabilir. Sadece kablo yazdırmaya uygulanır." +msgstr "" +"Yarı hızda sıkıştırılmış yukarı doğru hareket mesafesi.\n" +"Bu katmanlarda malzemeyi çok fazla ısıtmayarak önceki katmanlarda daha iyi yapışma sağlayabilir. Sadece kablo yazdırmaya uygulanır." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -4619,6 +4752,16 @@ msgctxt "ironing_enabled description" msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." msgstr "Malzeme ekstrude edilmeden önce üst yüzey üzerinden bir kere daha geçilir. Bu işlem en üstte bulunan plastiği eriterek daha pürüzsüz bir yüzey elde etmek için kullanılır." +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer label" +msgid "Iron Only Highest Layer" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer description" +msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." +msgstr "" + #: fdmprinter.def.json msgctxt "ironing_pattern label" msgid "Ironing Pattern" @@ -4669,6 +4812,36 @@ msgctxt "ironing_inset description" msgid "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print." msgstr "Modelin kenarlarından bırakılması gereken mesafe. Ağın kenarlarına kadar ütülemek baskınızın kenarlarının pürüzlü olmasına neden olabilir." +#: fdmprinter.def.json +msgctxt "speed_ironing label" +msgid "Ironing Speed" +msgstr "Ütüleme Hızı" + +#: fdmprinter.def.json +msgctxt "speed_ironing description" +msgid "The speed at which to pass over the top surface." +msgstr "Üst yüzeyi geçmek için gereken süre." + +#: fdmprinter.def.json +msgctxt "acceleration_ironing label" +msgid "Ironing Acceleration" +msgstr "Ütüleme İvmesi" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing description" +msgid "The acceleration with which ironing is performed." +msgstr "Ütülemenin gerçekleştiği ivme." + +#: fdmprinter.def.json +msgctxt "jerk_ironing label" +msgid "Ironing Jerk" +msgstr "Ütüleme İvmesi Değişimi" + +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "Ütüleme sırasında oluşan maksimum anlık hız değişimi." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4729,6 +4902,66 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Modeli dosyadan indirirken modele uygulanacak olan dönüşüm matrisi" +#~ msgctxt "wall_extruder_nr label" +#~ msgid "Wall Extruder" +#~ msgstr "Duvar Ekstruderi" + +#~ msgctxt "wall_extruder_nr description" +#~ msgid "The extruder train used for printing the walls. This is used in multi-extrusion." +#~ msgstr "Duvarları yazdırmak için kullanılan ekstruder dişli çarkı. Çoklu ekstrüzyon işlemi için kullanılır." + +#~ msgctxt "infill_pattern description" +#~ msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." +#~ msgstr "Yazdırma dolgu malzemesinin şekli. Hat ve zik zak dolguları alternatif katmanlarda yön değiştirerek malzeme masrafını azaltır Izgara, üçgen, kübik, dört yüzlü ve eş merkezli desenler her katmanda tamamıyla yazdırılır. Her yönde daha eşit dayanıklılık dağılımı sağlamak için küp ve dört yüzlü dolgular her katmanda değişir." + +#~ msgctxt "infill_pattern option tetrahedral" +#~ msgid "Tetrahedral" +#~ msgstr "Dört yüzlü" + +#~ msgctxt "expand_skins_into_infill label" +#~ msgid "Expand Skins Into Infill" +#~ msgstr "Yüzeyleri Dolguya Genişlet" + +#~ msgctxt "expand_skins_into_infill description" +#~ msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." +#~ msgstr "Düz zeminlerin üst ve/veya alt yüzeylerinin yüzey alanlarını genişletin. Varsayılan olarak yüzeyler dolguyu çevreleyen duvar çizgilerinin altında sona erer. Ancak bu ayar, dolgu yoğunluğu düşük olduğunda deliklerin görünmesine neden olur. Bu ayar, yüzeyleri duvar çizgisinin ötesine genişleterek sonraki katmandaki dolgunun yüzeye dayanmasını sağlar." + +#~ msgctxt "expand_upper_skins label" +#~ msgid "Expand Top Skins Into Infill" +#~ msgstr "Üst Yüzey Alanını Dolguya Genişlet" + +#~ msgctxt "expand_upper_skins description" +#~ msgid "Expand the top skin areas (areas with air above) so that they support infill above." +#~ msgstr "Dolguyu yukarıdan desteklemeleri için üst yüzey alanlarını (üzerinde hava bulunan alanları) genişletin." + +#~ msgctxt "expand_lower_skins label" +#~ msgid "Expand Bottom Skins Into Infill" +#~ msgstr "Alt Yüzey Alanını Dolguya Genişlet" + +#~ msgctxt "expand_lower_skins description" +#~ msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." +#~ msgstr "Dolgu katmanlarını yukarıdan ve aşağıdan desteklemeleri için alt yüzey alanlarını (altında hava bulunan alanları) genişletin." + +#~ msgctxt "expand_skins_expand_distance description" +#~ msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." +#~ msgstr "Yüzeylerin dolguya doğru genişleyeceği mesafe. Varsayılan mesafe dolgu hatları arasındaki boşluğu kapatmaya yeterlidir ve dolgu yoğunluğu düşük olduğunda yüzeyin duvara temas ettiği kısımlarda oluşan delikleri önler. Küçük bir mesafe genellikle yeterli olur." + +#~ msgctxt "support_skip_some_zags label" +#~ msgid "Skip Some ZigZags Connections" +#~ msgstr "Bazı Zikzak Bağlantılarını Atla" + +#~ msgctxt "support_skip_some_zags description" +#~ msgid "Skip some ZigZags connections to make the support structure easier to break." +#~ msgstr "Destek yapısının daha kolay kırılması için bazı Zikzak bağlantılarını atlayın." + +#~ msgctxt "support_zag_skip_count label" +#~ msgid "ZigZag Connection Skip Count" +#~ msgstr "Atlanan Zikzak Bağlantısı Sayısı" + +#~ msgctxt "support_zag_skip_count description" +#~ msgid "Skip one in every N connection lines to make the support structure easier to break." +#~ msgstr "Destek yapısının daha kolay kırılması için her N bağlantı hattında bir zikzak atlayın." + #~ msgctxt "machine_show_variants label" #~ msgid "Show machine variants" #~ msgstr "Makine varyantlarını göster" @@ -4891,4 +5124,4 @@ msgstr "Modeli dosyadan indirirken modele uygulanacak olan dönüşüm matrisi" #~ msgctxt "multiple_mesh_overlap label" #~ msgid "Dual Extrusion Overlap" -#~ msgstr "İkili Ekstrüzyon Çakışması" \ No newline at end of file +#~ msgstr "İkili Ekstrüzyon Çakışması" diff --git a/resources/i18n/zh_CN/cura.po b/resources/i18n/zh_CN/cura.po index 61830f2998..8fd99ceaf1 100644 --- a/resources/i18n/zh_CN/cura.po +++ b/resources/i18n/zh_CN/cura.po @@ -18,15 +18,15 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 1.7.3\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:28 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" msgstr "打印机设置" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" -msgid "X-Ray" -msgstr "透视" +msgid "X-Ray view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -38,40 +38,69 @@ msgctxt "@item:inlistbox" msgid "GCode File" msgstr "GCode 文件" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:13 -msgctxt "@label" -msgid "Doodle3D" -msgstr "Doodle3D" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/__init__.py:17 -msgctxt "@info:whatsthis" -msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "接受 G-Code 并通过 WiFi 将其发送到 Doodle3D WiFi-Box。" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:36 -msgctxt "@item:inmenu" -msgid "Doodle3D printing" -msgstr "Doodle3D 打印" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:37 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" -msgid "Print with Doodle3D" -msgstr "使用 Doodle3D 打印" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/PrinterConnection.py:38 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 +msgctxt "@properties:tooltip" +msgid "Print with Doodle3D WiFi-Box" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 +msgctxt "@action:button" +msgid "Cancel" +msgstr "取消" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 +msgctxt "@info:status" +msgid "Sending data to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 +msgctxt "@info:status" +msgid "Unable to send data to Doodle3D Connect. Is another job still active?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 +msgctxt "@info:status" +msgid "File sent to Doodle3D Connect" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect.." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" -msgid "Print with " -msgstr "使用 " - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:49 -msgctxt "@title:menu" -msgid "Doodle3D" -msgstr "Doodle3D 打印" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D.py:50 -msgctxt "@item:inlistbox" -msgid "Enable Scan devices..." -msgstr "启用扫描设备..." +msgid "Open the Doodle3D Connect web interface" +msgstr "" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -113,16 +142,36 @@ msgctxt "@info:status" msgid "Unable to start a new job because the printer is busy or not connected." msgstr "无法启动新作业,因为打印机处于忙碌状态或未连接。" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +msgctxt "@info:title" +msgid "Print Details" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "This printer does not support USB printing because it uses UltiGCode flavor." msgstr "此打印机不支持通过 USB 打印,因为其使用 UltiGCode 类型的 G-code 文件。" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" msgid "Unable to start a new job because the printer does not support usb printing." msgstr "无法启动新作业,因为该打印机不支持通过 USB 打印。" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:909 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 +msgctxt "@info:title" +msgid "Warning" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" msgid "Unable to update firmware because there are no printers connected." @@ -134,10 +183,10 @@ msgctxt "@info" msgid "Could not find firmware required for the printer at %s." msgstr "在 %s 无法找到打印机所需的固件。" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:14 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G 文件" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +msgctxt "@info:title" +msgid "Printer Firmware" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -152,47 +201,79 @@ msgstr "保存到可移动磁盘 {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 #, python-brace-format -msgctxt "@info:progress" +msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "保存到可移动磁盘 {0} " +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +msgctxt "@info:title" +msgid "Saving" +msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "无法保存到 {0}{1}" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format -msgctxt "@info:status" -msgid "Saved to Removable Drive {0} as {1}" -msgstr "保存到可移动磁盘 {0} :{1}" +msgctxt "@info:status Don't translate the tag {device}!" +msgid "Could not find a file name when trying to write to {device}." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -msgctxt "@action:button" -msgid "Eject" -msgstr "弹出" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:133 -#, python-brace-format -msgctxt "@action" -msgid "Eject removable device {0}" -msgstr "弹出可移动设备 {0}" - -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:138 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 #, python-brace-format msgctxt "@info:status" msgid "Could not save to removable drive {0}: {1}" msgstr "无法保存到可移动磁盘 {0}:{1}" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:148 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:675 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:683 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:145 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:152 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 +msgctxt "@info:title" +msgid "Error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +#, python-brace-format +msgctxt "@info:status" +msgid "Saved to Removable Drive {0} as {1}" +msgstr "保存到可移动磁盘 {0} :{1}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +msgctxt "@info:title" +msgid "File Saved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +msgctxt "@action:button" +msgid "Eject" +msgstr "弹出" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 +#, python-brace-format +msgctxt "@action" +msgid "Eject removable device {0}" +msgstr "弹出可移动设备 {0}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 #, python-brace-format msgctxt "@info:status" msgid "Ejected {0}. You can now safely remove the drive." msgstr "已弹出 {0}。现在,您可以安全地拔出磁盘。" -#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:150 +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 +msgctxt "@info:title" +msgid "Safely Remove Hardware" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format msgctxt "@info:status" msgid "Failed to eject {0}. Another program may be using the drive." @@ -203,219 +284,351 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "可移动磁盘" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:49 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "通过网络打印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:107 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "通过网络打印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:156 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 msgctxt "@info:status" msgid "Access to the printer requested. Please approve the request on the printer" msgstr "已发送打印机访问请求,请在打印机上批准该请求。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 +msgctxt "@info:title" +msgid "Connection status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 msgctxt "@info:status" msgid "" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:468 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@action:button" msgid "Retry" msgstr "重试" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "重新发送访问请求" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "打印机接受了访问请求" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 msgctxt "@info:status" msgid "No access to print with this printer. Unable to send print job." msgstr "无法使用本打印机进行打印,无法发送打印作业。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:28 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:72 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:28 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:72 msgctxt "@action:button" msgid "Request Access" msgstr "请求访问" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:27 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:71 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:27 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:71 msgctxt "@info:tooltip" msgid "Send access request to the printer" msgstr "向打印机发送访问请求" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:358 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:375 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 msgctxt "@info:status" msgid "Connected over the network. Please approve the access request on the printer." msgstr "已通过网络连接。请在打印机上接受访问请求。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:365 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:382 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 msgctxt "@info:status" msgid "Connected over the network." msgstr "已通过网络连接。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:378 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 msgctxt "@info:status" msgid "Connected over the network. No access to control the printer." msgstr "已通过网络连接,但没有打印机的控制权限。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:383 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:400 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 msgctxt "@info:status" msgid "Access request was denied on the printer." msgstr "访问请求在打印机上被拒绝。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:386 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:403 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Access request failed due to a timeout." msgstr "访问请求失败(原因:超时)。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:450 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:467 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 msgctxt "@info:status" msgid "The connection with the network was lost." msgstr "网络连接中断。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:481 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 msgctxt "@info:status" msgid "The connection with the printer was lost. Check your printer to see if it is connected." msgstr "与打印机的连接中断,请检查打印机是否已连接。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:630 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:649 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 #, python-format msgctxt "@info:status" msgid "Unable to start a new print job, printer is busy. Current printer status is %s." msgstr "打印机无法启动新的打印作业,当前的打印机状态为 %s。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:654 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No Printcore loaded in slot {0}" msgstr "无法启动新的打印作业。插槽 {0} 中未加载打印头。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:661 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:682 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 #, python-brace-format msgctxt "@info:status" msgid "Unable to start a new print job. No material loaded in slot {0}" msgstr "无法启动新的打印作业。插槽 {0} 中未加载材料。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:670 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "线轴 {0} 上没有足够的材料。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:680 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "不同的打印头(Cura: {0},打印机: 为挤出机 {2} 选择了 {1})" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:694 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:716 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 #, python-brace-format msgctxt "@label" msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "您为挤出机 {2} 选择了不同的材料(Cura:{0},打印机:{1})" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:724 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "打印头 {0} 未正确校准。 需要在打印机上执行 XY 校准。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:707 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:729 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 msgctxt "@label" msgid "Are you sure you wish to print with the selected configuration?" msgstr "您确定要使用所选配置进行打印吗?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:730 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 msgctxt "@label" msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "打印机的配置或校准与 Cura 之间不匹配。为了获得最佳打印效果,请务必切换打印头和打印机中插入的材料。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:736 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "配置不匹配" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:815 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 msgctxt "@info:status" msgid "Sending data to printer" msgstr "向打印机发送数据" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:816 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:46 -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 -#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:371 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:137 -#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:87 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:251 -msgctxt "@action:button" -msgid "Cancel" -msgstr "取消" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +msgctxt "@info:title" +msgid "Sending Data" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:884 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 msgctxt "@info:status" msgid "Unable to send data to printer. Is another job still active?" msgstr "无法向打印机发送数据。请确认是否有另一项打印任务仍在进行?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1018 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1050 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "中止打印..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1024 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "打印已中止。请检查打印机" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1030 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "暂停打印..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1032 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "恢复打印..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1175 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 msgctxt "@window:title" msgid "Sync with your printer" msgstr "与您的打印机同步" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1177 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "您想在 Cura 中使用当前的打印机配置吗?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1179 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1220 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 msgctxt "@label" msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." msgstr "打印机上的打印头和/或材料与当前项目中的不同。 为获得最佳打印效果,请始终使用已插入打印机的打印头和材料进行切片。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.py:19 msgctxt "@action" msgid "Connect via Network" msgstr "通过网络连接" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:172 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#, python-brace-format +msgctxt "Count is number of printers." +msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#, python-brace-format +msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#, python-brace-format +msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +msgctxt "@info:status" +msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#, python-brace-format +msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "下载" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +msgctxt "@info" +msgid "Could not access update information." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" msgid "Errors appeared while opening your SolidWorks file! Please check, whether it is possible to open your file in SolidWorks itself without any problems as well!" msgstr "打开 SolidWorks 文件时发生错误! 请检查能否在 SolidWorks 中正常打开文件而不出现任何问题!" @@ -434,17 +647,12 @@ msgstr "SolidWorks 组件文件" msgid "Configure" msgstr "配置" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:129 +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:135 #, python-format msgctxt "@info:status" msgid "Error while starting %s!" msgstr "启动 %s 时发生错误!" -#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/CommonComReader.py:207 -msgctxt "@info:status" -msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" -msgstr "请记住,您必须手动重新打开 SolidWorks 文件! 重新加载模型将无法正常工作!" - #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 msgid "Modify G-Code" msgstr "修改 G-Code 文件" @@ -454,7 +662,12 @@ msgctxt "@info" msgid "Cura collects anonymised slicing statistics. You can disable this in the preferences." msgstr "Cura 收集匿名切片统计资料。 您可以在偏好设置中禁用此选项。" -#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:44 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 +msgctxt "@info:title" +msgid "Collecting Data" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" msgid "Dismiss" msgstr "关闭此通知" @@ -472,14 +685,19 @@ msgstr "GCode 文件" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" -msgid "Layers" -msgstr "层" +msgid "Layer view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "当单线打印(Wire Printing)功能开启时,Cura 将无法准确地显示打印层(Layers)" +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 +msgctxt "@info:title" +msgid "Layer View" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -505,24 +723,31 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF 图像" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:281 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" -msgid "The selected material is incompatible with the selected machine or configuration." -msgstr "所选材料与所选机器或配置不兼容。" +msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:308 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:307 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 +msgctxt "@info:title" +msgid "Unable to slice" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format msgctxt "@info:status" msgid "Unable to slice with the current settings. The following settings have errors: {0}" msgstr "无法使用当前设置进行切片。以下设置存在错误:{0}" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:317 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:306 msgctxt "@info:status" msgid "Unable to slice because the prime tower or prime position(s) are invalid." msgstr "无法切片(原因:主塔或主位置无效)。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:325 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:315 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "无法执行,因为没有一个模型符合成形空间体积。请缩放或旋转模型以适应打印平台。" @@ -533,6 +758,11 @@ msgctxt "@info:status" msgid "Processing Layers" msgstr "正在处理层" +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +msgctxt "@info:title" +msgid "Information" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" msgid "Per Model Settings" @@ -544,13 +774,13 @@ msgid "Configure Per Model Settings" msgstr "设置对每个模型的单独设定" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:454 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:475 msgctxt "@title:tab" msgid "Recommended" msgstr "推荐" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:459 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 msgctxt "@title:tab" msgid "Custom" msgstr "自定义" @@ -561,25 +791,37 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF 文件" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:122 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1050 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 msgctxt "@label" msgid "Nozzle" msgstr "喷嘴" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 +msgctxt "@menuitem" msgid "Browse plugins" -msgstr "浏览插件" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:120 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +msgctxt "@info:tile" +msgid "Warning" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" msgid "Plugin browser" msgstr "插件浏览器" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" -msgid "Solid" -msgstr "实体" +msgid "Solid view" +msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -591,7 +833,13 @@ msgctxt "@info:status" msgid "Parsing G-code" msgstr "解析 G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:365 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "发送文件之前,请确保 G-code 适用于当前打印机和打印机配置。当前 G-code 文件可能不准确。" @@ -613,7 +861,7 @@ msgid "Cura Project 3MF file" msgstr "Cura 项目 3MF 文件" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" msgstr "选择升级" @@ -633,18 +881,73 @@ msgctxt "@action" msgid "Level build plate" msgstr "调平打印平台" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:247 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "外壁" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "内壁" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Skin" +msgstr "表层" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Infill" +msgstr "填充" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "支撑填充" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "支撑接触面" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support" +msgstr "支撑" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Travel" +msgstr "移动" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "回抽" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Other" +msgstr "其它" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "预切片文件 {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:440 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 msgctxt "@item:material" msgid "No material loaded" msgstr "未加载材料" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:447 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 msgctxt "@item:material" msgid "Unknown material" msgstr "未知材料" @@ -654,35 +957,56 @@ msgctxt "@info:status" msgid "Finding new location for objects" msgstr "正在为模型寻找新位置" -#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:85 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "无法在成形空间体积内放下全部模型" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:417 +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 msgctxt "@title:window" msgid "File Already Exists" msgstr "文件已存在" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:418 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 #, python-brace-format -msgctxt "@label" +msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "文件 {0} 已存在。你确定要替换它吗?" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:801 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" msgid "Custom" msgstr "自定义" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:805 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 msgctxt "@label" msgid "Custom Material" msgstr "自定义材料" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +msgctxt "@info:status" +msgid "The selected material is incompatible with the selected machine or configuration." +msgstr "所选材料与所选机器或配置不兼容。" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:109 +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 +msgctxt "@info:title" +msgid "Incompatible Material" +msgstr "" + #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." msgid "The selected material diameter causes the material to become incompatible with the current printer." @@ -700,70 +1024,86 @@ msgstr "撤销更改材料直径。" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "无法将配置文件导出至 {0} {1} " +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:148 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "无法将配置文件导出至 {0} :写入器插件报告故障。" +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "配置文件已导出至: {0} " +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:199 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:208 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:242 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +msgctxt "@info:title" +msgid "Export Details" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:213 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:247 #, python-brace-format -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "无法从 {0} 导入配置文件: {1} " +msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:210 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:246 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "已成功导入配置文件 {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:249 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "配置 {0} 文件类型未知或已损坏。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:267 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:272 msgctxt "@label" msgid "Custom profile" msgstr "自定义配置文件" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:278 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "配置文件缺少打印质量类型定义。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:300 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." msgstr "无法为当前配置找到质量类型 {0}。" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:95 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:100 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "由于“打印序列”设置的值,成形空间体积高度已被减少,以防止十字轴与打印模型相冲突。" +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 +msgctxt "@info:title" +msgid "Build Volume" +msgstr "" + #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "复制并放置模型" +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "" + #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" msgid "Crash Report" @@ -775,41 +1115,43 @@ msgid "" "

A fatal exception has occurred that we could not recover from!

\n" "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" " " -msgstr "

发生了致命错误,我们无法恢复!

\n

请在以下网址中使用下方的信息提交错误报告:http://github.com/Ultimaker/Cura/issues

" +msgstr "" +"

发生了致命错误,我们无法恢复!

\n" +"

请在以下网址中使用下方的信息提交错误报告:http://github.com/Ultimaker/Cura/issues

" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 msgctxt "@action:button" msgid "Open Web Page" msgstr "打开网页" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:248 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 msgctxt "@info:progress" msgid "Loading machines..." msgstr "正在载入打印机..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:610 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "正在设置场景..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:652 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Loading interface..." msgstr "正在载入界面…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:815 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1285 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1295 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "一次只能加载一个 G-code 文件。{0} 已跳过导入" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1294 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1304 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" @@ -839,12 +1181,12 @@ msgstr "X (宽度)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:286 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:838 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:839 msgctxt "@label" msgid "mm" msgstr "mm" @@ -934,113 +1276,72 @@ msgctxt "@tooltip" msgid "The height difference between the tip of the nozzle and the gantry system (X and Y axes). Used to prevent collisions between previous prints and the gantry when printing \"One at a Time\"." msgstr "喷嘴尖端与十字轴系统(X 轴和 Y 轴)之间的高度差。 用于防止“排队”打印时之前的打印品与十字轴发生碰撞。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:253 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 msgctxt "@label" msgid "Number of Extruders" msgstr "挤出机数目" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:287 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 msgctxt "@tooltip" msgid "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile." msgstr "打印机所支持耗材的公称直径。 材料和/或配置文件将覆盖精确直径。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:290 msgctxt "@label" msgid "Material diameter" msgstr "材料直径" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:297 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:388 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:298 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:389 msgctxt "@label" msgid "Nozzle size" msgstr "喷嘴孔径" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:315 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 msgctxt "@label" msgid "Start Gcode" msgstr "GCode 开始部分" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:325 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "将在开始时执行的 Gcode 命令。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:334 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:335 msgctxt "@label" msgid "End Gcode" msgstr "GCode 结束部分" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:344 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "将在结束时执行的 Gcode 命令。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:376 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:377 msgctxt "@label" msgid "Nozzle Settings" msgstr "喷嘴设置" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:398 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 msgctxt "@label" msgid "Nozzle offset X" msgstr "喷嘴偏移 X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:410 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 msgctxt "@label" msgid "Nozzle offset Y" msgstr "喷嘴偏移 Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:431 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "挤出机 Gcode 开始部分" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:449 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 msgctxt "@label" msgid "Extruder End Gcode" msgstr "挤出机 Gcode 结束部分" -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:20 -msgctxt "@title:window" -msgid "Doodle3D Settings" -msgstr "Doodle3D 设置" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/SettingsWindow.qml:53 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 -msgctxt "@action:button" -msgid "Save" -msgstr "保存" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:23 -msgctxt "@title:window" -msgid "Print to: %1" -msgstr "打印至:%1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:40 -msgctxt "@label" -msgid "Extruder Temperature: %1/%2°C" -msgstr "打印头温度:%1/%2 °C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:45 -msgctxt "@label" -msgid "" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:46 -msgctxt "@label" -msgid "Bed Temperature: %1/%2°C" -msgstr "热床温度:%1/%2°C" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:64 -msgctxt "@label" -msgid "%1" -msgstr "%1" - -#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/ControlWindow.qml:82 -msgctxt "@action:button" -msgid "Print" -msgstr "打印" - #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 msgctxt "@label" msgid "Changelog" @@ -1049,9 +1350,10 @@ msgstr "更新日志" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:37 #: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:107 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:55 #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:446 -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:306 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:78 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:357 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:80 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:125 #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:146 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 @@ -1105,30 +1407,38 @@ msgid "Unknown error code: %1" msgstr "未知错误代码: %1" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:55 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "连接到网络打印机" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:65 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:65 msgctxt "@label" msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "要通过网络向打印机发送打印请求,请确保您的打印机已通过网线或 WIFI 连接到网络。若您不能连接 Cura 与打印机,您仍然可以使用 USB 设备将 G-code 文件传输到打印机。\n\n从以下列表中选择您的打印机:" +msgstr "" +"要通过网络向打印机发送打印请求,请确保您的打印机已通过网线或 WIFI 连接到网络。若您不能连接 Cura 与打印机,您仍然可以使用 USB 设备将 G-code 文件传输到打印机。\n" +"\n" +"从以下列表中选择您的打印机:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:44 msgctxt "@action:button" msgid "Add" msgstr "添加" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:85 msgctxt "@action:button" msgid "Edit" msgstr "编辑" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:96 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:50 #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:95 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:190 @@ -1137,87 +1447,210 @@ msgid "Remove" msgstr "删除" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:33 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:104 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:35 msgctxt "@action:button" msgid "Refresh" msgstr "刷新" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:196 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:196 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "如果您的打印机未列出,请阅读网络打印故障排除指南" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:223 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:223 msgctxt "@label" msgid "Type" msgstr "类型" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 msgctxt "@label" msgid "Ultimaker 3" msgstr "Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:238 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:238 msgctxt "@label" msgid "Ultimaker 3 Extended" msgstr "Ultimaker 3 Extended" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:241 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:241 msgctxt "@label" msgid "Unknown" msgstr "未知" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:254 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:254 msgctxt "@label" msgid "Firmware version" msgstr "固件版本" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:266 msgctxt "@label" msgid "Address" msgstr "地址" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "该网络地址的打印机尚未响应。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "连接" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 msgctxt "@title:window" msgid "Printer Address" msgstr "打印机网络地址" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "输入打印机在网络上的 IP 地址或主机名。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 msgctxt "@action:button" msgid "Ok" msgstr "确定" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:37 msgctxt "@info:tooltip" msgid "Connect to a printer" msgstr "连接到打印机" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:116 msgctxt "@info:tooltip" msgid "Load the configuration of the printer into Cura" msgstr "将打印机配置导入 Cura" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:117 msgctxt "@action:button" msgid "Activate Configuration" msgstr "应用配置" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "打印" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 +msgctxt "@label:status" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 +msgctxt "@label:status" +msgid "Reserved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 +msgctxt "@label:status" +msgid "Finished" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 +msgctxt "@label:status" +msgid "Preparing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 +msgctxt "@label:status" +msgid "Available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 +msgctxt "@label" +msgid "Completed on: " +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 +msgctxt "@label" +msgid "Clear build plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 +msgctxt "@label" +msgid "Preparing to print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 +msgctxt "@label" +msgid "PRINTER GROUP" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 +msgctxt "@title" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 +msgctxt "@label" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 +msgctxt "@label" +msgid "Queued" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 +msgctxt "@label:title" +msgid "Printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 +msgctxt "@action:button" +msgid "View printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1306,67 +1739,62 @@ msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "更改目前启用的后期处理脚本" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:71 -msgctxt "@label" -msgid "View Mode: Layers" -msgstr "视图模式:分层" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:88 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 msgctxt "@label" msgid "Color scheme" msgstr "颜色方案" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:102 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:91 msgctxt "@label:listbox" msgid "Material Color" msgstr "材料颜色" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:106 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:95 msgctxt "@label:listbox" msgid "Line Type" msgstr "走线类型" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:144 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 msgctxt "@label" msgid "Compatibility Mode" msgstr "兼容模式" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:210 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 msgctxt "@label" msgid "Show Travels" msgstr "显示移动轨迹" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 msgctxt "@label" msgid "Show Helpers" msgstr "显示打印辅助结构" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 msgctxt "@label" msgid "Show Shell" msgstr "显示外壳" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:234 msgctxt "@label" msgid "Show Infill" msgstr "显示填充" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:264 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:283 msgctxt "@label" msgid "Only Show Top Layers" msgstr "只显示顶层" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:273 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:292 msgctxt "@label" msgid "Show 5 Detailed Layers On Top" msgstr "在顶部显示 5 层打印细节" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:284 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:303 msgctxt "@label" msgid "Top / Bottom" msgstr "顶 / 底层" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:288 +#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 msgctxt "@label" msgid "Inner Wall" msgstr "内壁" @@ -1441,23 +1869,23 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "平滑" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:157 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 msgctxt "@action:button" msgid "Select settings" msgstr "选择设置" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:197 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "选择对此模型的自定义设置" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:221 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:272 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:91 msgctxt "@label:textbox" msgid "Filter..." msgstr "筛选…" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:245 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:296 msgctxt "@label:checkbox" msgid "Show all" msgstr "显示全部" @@ -1592,25 +2020,43 @@ msgctxt "@title:window" msgid "Find & Update plugins" msgstr "查找与更新插件" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:25 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:27 msgctxt "@label" msgid "Here you can find a list of Third Party plugins." msgstr "您可以在这里找到第三方插件列表。" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:143 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 msgctxt "@action:button" msgid "Upgrade" msgstr "升级" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 msgctxt "@action:button" msgid "Installed" msgstr "已安装" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 +msgctxt "@title:window" +msgid "Plugin License Agreement" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 +msgctxt "@label" +msgid "" +" plugin contains a license.\n" +"You need to accept this license to install this plugin.\n" +"Do you agree with the terms below?" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" -msgid "Download" -msgstr "下载" +msgid "Accept" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" +msgstr "" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -1786,71 +2232,71 @@ msgctxt "@label" msgid "Everything is in order! You're done with your CheckUp." msgstr "一切正常!你已经完成检查。" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 msgctxt "@label:MonitorStatus" msgid "Not connected to a printer" msgstr "未连接至打印机" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:91 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:90 msgctxt "@label:MonitorStatus" msgid "Printer does not accept commands" msgstr "打印机不接受命令" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "维护中。请检查打印机" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 msgctxt "@label:MonitorStatus" msgid "Lost connection with the printer" msgstr "与打印机的连接中断" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:104 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "打印中..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:107 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "已暂停" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "初始化中..." -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 msgctxt "@label:MonitorStatus" msgid "Please remove the print" msgstr "请取出打印件" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 msgctxt "@label:" msgid "Resume" msgstr "恢复" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:242 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 msgctxt "@label:" msgid "Pause" msgstr "暂停" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:271 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 msgctxt "@label:" msgid "Abort Print" msgstr "中止打印" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 msgctxt "@window:title" msgid "Abort print" msgstr "中止打印" -#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:283 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "您确定要中止打印吗?" @@ -1865,7 +2311,9 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "您已自定义某些配置文件设置。\n您想保留或舍弃这些设置吗?" +msgstr "" +"您已自定义某些配置文件设置。\n" +"您想保留或舍弃这些设置吗?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -1883,19 +2331,19 @@ msgid "Customized" msgstr "自定义" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:586 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "总是询问" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:587 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 msgctxt "@option:discardOrKeep" msgid "Discard and never ask again" msgstr "舍弃更改,并不再询问此问题" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:588 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:discardOrKeep" msgid "Keep and never ask again" msgstr "保留更改,并不再询问此问题" @@ -2036,7 +2484,7 @@ msgid "Unit" msgstr "单位" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 msgctxt "@title:tab" msgid "General" msgstr "基本" @@ -2051,223 +2499,223 @@ msgctxt "@label" msgid "Language:" msgstr "语言:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:198 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 msgctxt "@label" msgid "Currency:" msgstr "币种:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:212 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 msgctxt "@label" msgid "Theme:" msgstr "主题:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:272 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "需重新启动 Cura,新的设置才能生效。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:289 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "当设置被更改时自动进行切片。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "自动切片" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "视区行为" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:319 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "以红色突出显示模型需要增加支撑结构的区域。没有支撑,这些区域将无法正确打印。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:328 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "显示悬垂(Overhang)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:342 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "当模型被选中时,视角将自动调整到最合适的观察位置(模型处于正中央)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:347 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "当项目被选中时,自动对中视角" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:349 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:356 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "需要令 Cura 的默认缩放操作反转吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:354 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "反转视角变焦方向。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "是否跟随鼠标方向进行缩放?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:368 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "跟随鼠标方向缩放" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:377 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "需要移动平台上的模型,使它们不再相交吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:382 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "确保每个模型都保持分离" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:397 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "需要转动模型,使它们接触打印平台吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:395 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "自动下降模型到打印平台" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:407 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 msgctxt "@info:tooltip" msgid "Show caution message in gcode reader." msgstr "在 G-code 读取器中显示警告信息。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 msgctxt "@option:check" msgid "Caution message in gcode reader" msgstr "G-code 读取器中的警告信息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "层视图要强制进入兼容模式吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:435 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "强制层视图兼容模式(需要重新启动)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:444 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 msgctxt "@label" msgid "Opening and saving files" msgstr "打开并保存文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:457 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "当模型的尺寸过大时,是否将模型自动缩小至成形空间体积?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:462 msgctxt "@option:check" msgid "Scale large models" msgstr "缩小过大模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:464 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "当模型以米而不是毫米为单位时,模型可能会在打印平台中显得非常小。在此情况下是否进行放大?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:469 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "放大过小模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:485 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "打印机名是否自动作为打印作业名称的前缀?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:483 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "将机器前缀添加到作业名称中" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:492 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:499 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "保存项目文件时是否显示摘要?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:496 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "保存项目时显示摘要对话框" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "打开项目文件时的默认行为" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:513 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "打开项目文件时的默认行为:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:526 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 msgctxt "@option:openProject" msgid "Always ask" msgstr "总是询问" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:527 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "始终作为一个项目打开" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:528 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 msgctxt "@option:openProject" msgid "Always import models" msgstr "始终导入模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:564 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:571 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "当您对配置文件进行更改并切换到其他配置文件时将显示一个对话框,询问您是否要保留修改。您也可以选择一个默认行为并令其不再显示该对话框。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:573 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@label" msgid "Override Profile" msgstr "重写配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:622 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 msgctxt "@label" msgid "Privacy" msgstr "隐私" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:636 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "当 Cura 启动时,是否自动检查更新?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:634 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:check" msgid "Check for updates on start" msgstr "启动时检查更新" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:651 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "您愿意将关于您的打印数据以匿名形式发送到 Ultimaker 吗?注意:我们不会记录/发送任何模型、IP 地址或其他私人数据。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(匿名)发送打印信息" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:441 msgctxt "@title:tab" msgid "Printers" msgstr "打印机" @@ -2317,7 +2765,7 @@ msgid "Waiting for a printjob" msgstr "等待打印作业" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 msgctxt "@title:tab" msgid "Profiles" msgstr "配置文件" @@ -2415,7 +2863,7 @@ msgid "Export Profile" msgstr "导出配置文件" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:499 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 msgctxt "@title:tab" msgid "Materials" msgstr "材料" @@ -2447,14 +2895,14 @@ msgid "Import Material" msgstr "导入配置" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "无法导入材料 %1%2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "成功导入材料 %1" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2463,17 +2911,17 @@ msgid "Export Material" msgstr "导出材料" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "无法导出材料至 %1%2" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 -msgctxt "@info:status" +msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "成功导出材料至: %1" +msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:822 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 msgctxt "@title:window" msgid "Add Printer" msgstr "新增打印机" @@ -2488,71 +2936,6 @@ msgctxt "@action:button" msgid "Add Printer" msgstr "新增打印机" -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:166 -msgctxt "@tooltip" -msgid "Outer Wall" -msgstr "外壁" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:167 -msgctxt "@tooltip" -msgid "Inner Walls" -msgstr "内壁" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:168 -msgctxt "@tooltip" -msgid "Skin" -msgstr "表层" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:169 -msgctxt "@tooltip" -msgid "Infill" -msgstr "填充" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:170 -msgctxt "@tooltip" -msgid "Support Infill" -msgstr "支撑填充" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:171 -msgctxt "@tooltip" -msgid "Support Interface" -msgstr "支撑接触面" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:172 -msgctxt "@tooltip" -msgid "Support" -msgstr "支撑" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:173 -msgctxt "@tooltip" -msgid "Travel" -msgstr "移动" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:174 -msgctxt "@tooltip" -msgid "Retractions" -msgstr "回抽" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:175 -msgctxt "@tooltip" -msgid "Other" -msgstr "其它" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:217 -msgctxt "@label" -msgid "00h 00min" -msgstr "00 小时 00 分" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:270 -msgctxt "@label" -msgid "%1 m / ~ %2 g / ~ %4 %3" -msgstr "%1 m / ~ %2 g / ~ %4 %3" - -#: /home/ruben/Projects/Cura/resources/qml/JobSpecs.qml:275 -msgctxt "@label" -msgid "%1 m / ~ %2 g" -msgstr "%1 m / ~ %2 g" - #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 msgctxt "@title:window" msgid "About Cura" @@ -2568,7 +2951,9 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "Cura 由 Ultimaker B.V. 与社区合作开发。\nCura 使用以下开源项目:" +msgstr "" +"Cura 由 Ultimaker B.V. 与社区合作开发。\n" +"Cura 使用以下开源项目:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -2660,32 +3045,48 @@ msgctxt "@label" msgid "SVG icons" msgstr "SVG 图标" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +msgctxt "@label" +msgid "Profile:" +msgstr "配置文件:" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +msgctxt "@tooltip" +msgid "" +"Some setting/override values are different from the values stored in the profile.\n" +"\n" +"Click to open the profile manager." +msgstr "" +"某些设置/重写值与存储在配置文件中的值不同。\n" +"\n" +"点击打开配置文件管理器。" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" msgid "Search..." msgstr "搜索..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:390 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "将值复制到所有挤出机" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:405 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 msgctxt "@action:menu" msgid "Hide this setting" msgstr "隐藏此设置" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "不再显示此设置" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:419 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "保持此设置可见" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:438 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "配置设置可见性..." @@ -2696,7 +3097,10 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "一些隐藏设置正在使用有别于一般设置的计算值。\n\n单击以使这些设置可见。" +msgstr "" +"一些隐藏设置正在使用有别于一般设置的计算值。\n" +"\n" +"单击以使这些设置可见。" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 msgctxt "@label Header for list of settings." @@ -2724,7 +3128,10 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "此设置的值与配置文件不同。\n\n单击以恢复配置文件的值。" +msgstr "" +"此设置的值与配置文件不同。\n" +"\n" +"单击以恢复配置文件的值。" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 msgctxt "@label" @@ -2732,26 +3139,56 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "此设置通常可被自动计算,但其当前已被绝对定义。\n\n单击以恢复自动计算的值。" +msgstr "" +"此设置通常可被自动计算,但其当前已被绝对定义。\n" +"\n" +"单击以恢复自动计算的值。" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "Print Setup" msgstr "打印设置" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:112 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "打印设置已禁用\nG-code 文件无法被修改" +msgstr "" +"打印设置已禁用\n" +"G-code 文件无法被修改" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:455 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 +msgctxt "@label" +msgid "00h 00min" +msgstr "00 小时 00 分" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +msgctxt "@tooltip" +msgid "Time information" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 +msgctxt "@description" +msgid "Print time" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +msgctxt "@label" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 +msgctxt "@label" +msgid "%1m / ~ %2g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" msgid "Recommended Print Setup

Print with the recommended settings for the selected printer, material and quality." msgstr "推荐的打印设置

使用针对所选打印机、材料和质量的推荐设置进行打印。" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:460 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:481 msgctxt "@tooltip" msgid "Custom Print Setup

Print with finegrained control over every last bit of the slicing process." msgstr "自定义打印设置
对切片过程中的每一个细节进行精细控制。" @@ -2799,81 +3236,87 @@ msgid "No printer connected" msgstr "没有连接打印机" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" -msgid "Hotend" -msgstr "热端" +msgid "Extruder" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:119 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 +msgctxt "@tooltip" +msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "该挤出机的当前温度。" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "该挤出机中材料的颜色。" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "该挤出机中的材料。" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:218 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "该挤出机所使用的喷嘴。" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:249 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 msgctxt "@label" msgid "Build plate" msgstr "打印平台" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:278 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 msgctxt "@tooltip" msgid "The target temperature of the heated bed. The bed will heat up or cool down towards this temperature. If this is 0, the bed heating is turned off." msgstr "热床的目标温度。热床将加热或冷却至此温度。若设置为 0,则不使用热床。" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:310 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:343 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "热床当前温度。" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:389 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:422 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "热床的预热温度。" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "取消" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:583 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 msgctxt "@button" msgid "Pre-heat" msgstr "预热" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:610 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 msgctxt "@tooltip of pre-heat" msgid "Heat the bed in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the bed to heat up when you're ready to print." msgstr "打印前请预热热床。您可以在热床加热时继续调整相关项,让您在准备打印时不必等待热床加热完毕。" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:643 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:677 msgctxt "@label" msgid "Active print" msgstr "正在打印" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:648 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 msgctxt "@label" msgid "Job Name" msgstr "作业名" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 msgctxt "@label" msgid "Printing Time" msgstr "打印时间" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:660 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 msgctxt "@label" msgid "Estimated time left" msgstr "预计剩余时间" @@ -3061,53 +3504,53 @@ msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "配置设定可见性..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "请载入一个 3D 模型" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "切片已准备就绪" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "正在切片..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:37 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "%1 已准备就绪" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:39 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "无法切片" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "切片不可用" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Prepare" msgstr "准备" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 msgctxt "@label:Printjob" msgid "Cancel" msgstr "取消" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:288 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 msgctxt "@info:tooltip" msgid "Select the active output device" msgstr "选择活动的输出装置" #: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:19 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:649 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:593 msgctxt "@title:window" msgid "Open file(s)" msgstr "打开文件" @@ -3199,42 +3642,37 @@ msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "帮助(&H)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:343 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 msgctxt "@action:button" msgid "Open File" msgstr "打开文件" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:428 -msgctxt "@action:button" -msgid "View Mode" -msgstr "视图模式" - -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:495 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "Settings" msgstr "设置" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:531 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 msgctxt "@title:window" msgid "New project" msgstr "新建项目" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:532 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 msgctxt "@info:question" msgid "Are you sure you want to start a new project? This will clear the build plate and any unsaved settings." msgstr "你确定要开始一个新项目吗?这将清除打印平台及任何未保存的设置。" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:750 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:694 msgctxt "@window:title" msgid "Install Plugin" msgstr "安装插件" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:757 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 msgctxt "@title:window" msgid "Open File(s)" msgstr "打开文件" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:760 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "我们已经在您选择的文件中找到一个或多个 G-Code 文件。您一次只能打开一个 G-Code 文件。若需打开 G-Code 文件,请仅选择一个。" @@ -3259,102 +3697,87 @@ msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "保存时不再显示项目摘要" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 +msgctxt "@action:button" +msgid "Save" +msgstr "保存" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 msgctxt "@title:tab" msgid "Prepare" msgstr "准备" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:60 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" -msgid "Print" -msgstr "打印" +msgid "Monitor" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +msgctxt "@label" +msgid "Layer Height" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +msgctxt "@label" +msgid "Print Speed" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +msgctxt "@label" +msgid "Slower" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +msgctxt "@label" +msgid "Faster" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" msgid "Infill" msgstr "填充" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:192 -msgctxt "@label" -msgid "0%" -msgstr "0%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:199 -msgctxt "@label" -msgid "Empty infill will leave your model hollow with low strength." -msgstr "无填充将使模型处于低强度且保持空心状态。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:203 -msgctxt "@label" -msgid "20%" -msgstr "20%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:210 -msgctxt "@label" -msgid "Light (20%) infill will give your model an average strength." -msgstr "轻度(20%)填充将使打印模型处于中等强度。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:214 -msgctxt "@label" -msgid "50%" -msgstr "50%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:221 -msgctxt "@label" -msgid "Dense (50%) infill will give your model an above average strength." -msgstr "密集(50%)填充将使打印模型高于平均的强度。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:225 -msgctxt "@label" -msgid "100%" -msgstr "100%" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:232 -msgctxt "@label" -msgid "Solid (100%) infill will make your model completely solid." -msgstr "完全(100%)填充将使您的模型处于完全实心状态。" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:236 -msgctxt "@label" -msgid "Gradual" -msgstr "渐层填充" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:244 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 msgctxt "@label" msgid "Gradual infill will gradually increase the amount of infill towards the top." msgstr "渐层填充(Gradual infill)将随着打印高度的提升而逐渐加大填充密度。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:267 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 +msgctxt "@label" +msgid "Enable gradual" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" msgid "Generate Support" msgstr "生成支撑" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "在模型的悬垂(Overhangs)部分生成支撑结构。若不这样做,这些部分在打印时将倒塌。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:317 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:718 msgctxt "@label" msgid "Support Extruder" msgstr "支撑用挤出机" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:391 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 msgctxt "@label" msgid "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air." msgstr "选择用于支撑的挤出机。该挤出机将在模型之下建立支撑结构,以防止模型下垂或在空中打印。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:796 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "打印平台附着" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:462 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 msgctxt "@label" msgid "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards." msgstr "允许打印 Brim 或 Raft。这将在您的对象周围或下方添加一个容易切断的平面区域。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:515 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:883 msgctxt "@label" msgid "Need help improving your prints?
Read the Ultimaker Troubleshooting Guides" msgstr "需要帮助改善您的打印?阅读 Ultimaker 故障排除指南" @@ -3390,30 +3813,21 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "引擎日志" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:193 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 msgctxt "@label" msgid "Material" msgstr "材料" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:236 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +msgctxt "@label" +msgid "Check material compatibility" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "点击查看 Ultimaker.com 上的材料兼容情况。" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:325 -msgctxt "@label" -msgid "Profile:" -msgstr "配置文件:" - -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:376 -msgctxt "@tooltip" -msgid "" -"Some setting/override values are different from the values stored in the profile.\n" -"\n" -"Click to open the profile manager." -msgstr "某些设置/重写值与存储在配置文件中的值不同。\n\n点击打开配置文件管理器。" - #: MachineSettingsAction/plugin.json msgctxt "description" msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" @@ -3464,6 +3878,16 @@ msgctxt "name" msgid "God Mode" msgstr "God 模式" +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +msgstr "" + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "" + #: ChangeLogPlugin/plugin.json msgctxt "description" msgid "Shows changes since latest checked version." @@ -3494,16 +3918,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB 联机打印" -#: X3GWriter/plugin.json -msgctxt "description" -msgid "Provides support for writing X3G files" -msgstr "提供对写入 X3G 文件的支持" - -#: X3GWriter/plugin.json -msgctxt "name" -msgid "X3G Writer" -msgstr "X3G 写入器" - #: RemovableDriveOutputDevice/plugin.json msgctxt "description" msgid "Provides removable drive hotplugging and writing support." @@ -3524,6 +3938,21 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3 网络连接" +#: CuraPrintClusterUpload/plugin.json +msgctxt "name" +msgid "UM3 Network Connection (Cluster)" +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "" + #: CuraSolidWorksPlugin/plugin.json msgctxt "description" msgid "Gives you the possibility to open certain files via SolidWorks itself. These are then converted and loaded into Cura" @@ -3614,6 +4043,16 @@ msgctxt "name" msgid "Version Upgrade 2.5 to 2.6" msgstr "版本自 2.5 升级到 2.6" +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -3754,6 +4193,189 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura 配置文件读取器" +#~ msgctxt "@item:inlistbox" +#~ msgid "X-Ray" +#~ msgstr "透视" + +#~ msgctxt "@label" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D" + +#~ msgctxt "@info:whatsthis" +#~ msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +#~ msgstr "接受 G-Code 并通过 WiFi 将其发送到 Doodle3D WiFi-Box。" + +#~ msgctxt "@item:inmenu" +#~ msgid "Doodle3D printing" +#~ msgstr "Doodle3D 打印" + +#~ msgctxt "@action:button" +#~ msgid "Print with Doodle3D" +#~ msgstr "使用 Doodle3D 打印" + +#~ msgctxt "@info:tooltip" +#~ msgid "Print with " +#~ msgstr "使用 " + +#~ msgctxt "@title:menu" +#~ msgid "Doodle3D" +#~ msgstr "Doodle3D 打印" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Enable Scan devices..." +#~ msgstr "启用扫描设备..." + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G 文件" + +#~ msgctxt "@info:progress" +#~ msgid "Saving to Removable Drive {0}" +#~ msgstr "保存到可移动磁盘 {0} " + +#~ msgctxt "@info:status" +#~ msgid "Could not save to {0}: {1}" +#~ msgstr "无法保存到 {0}{1}" + +#~ msgctxt "@info:status" +#~ msgid "Please keep in mind, that you have to reopen your SolidWorks file manually! Reloading the model won't work!" +#~ msgstr "请记住,您必须手动重新打开 SolidWorks 文件! 重新加载模型将无法正常工作!" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Layers" +#~ msgstr "层" + +#~ msgid "Browse plugins" +#~ msgstr "浏览插件" + +#~ msgctxt "@item:inmenu" +#~ msgid "Solid" +#~ msgstr "实体" + +#~ msgctxt "@label" +#~ msgid "The file {0} already exists. Are you sure you want to overwrite it?" +#~ msgstr "文件 {0} 已存在。你确定要替换它吗?" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: {1}" +#~ msgstr "无法将配置文件导出至 {0} {1} " + +#~ msgctxt "@info:status" +#~ msgid "Failed to export profile to {0}: Writer plugin reported failure." +#~ msgstr "无法将配置文件导出至 {0} :写入器插件报告故障。" + +#~ msgctxt "@info:status" +#~ msgid "Exported profile to {0}" +#~ msgstr "配置文件已导出至: {0} " + +#~ msgctxt "@info:status" +#~ msgid "Failed to import profile from {0}: {1}" +#~ msgstr "无法从 {0} 导入配置文件: {1} " + +#~ msgctxt "@title:window" +#~ msgid "Doodle3D Settings" +#~ msgstr "Doodle3D 设置" + +#~ msgctxt "@title:window" +#~ msgid "Print to: %1" +#~ msgstr "打印至:%1" + +#~ msgctxt "@label" +#~ msgid "Extruder Temperature: %1/%2°C" +#~ msgstr "打印头温度:%1/%2 °C" + +#~ msgctxt "@label" +#~ msgid "Bed Temperature: %1/%2°C" +#~ msgstr "热床温度:%1/%2°C" + +#~ msgctxt "@label" +#~ msgid "%1" +#~ msgstr "%1" + +#~ msgctxt "@label" +#~ msgid "View Mode: Layers" +#~ msgstr "视图模式:分层" + +#~ msgctxt "@info:status" +#~ msgid "Could not import material %1: %2" +#~ msgstr "无法导入材料 %1%2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully imported material %1" +#~ msgstr "成功导入材料 %1" + +#~ msgctxt "@info:status" +#~ msgid "Failed to export material to %1: %2" +#~ msgstr "无法导出材料至 %1%2" + +#~ msgctxt "@info:status" +#~ msgid "Successfully exported material to %1" +#~ msgstr "成功导出材料至: %1" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g / ~ %4 %3" +#~ msgstr "%1 m / ~ %2 g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1 m / ~ %2 g" +#~ msgstr "%1 m / ~ %2 g" + +#~ msgctxt "@label" +#~ msgid "Hotend" +#~ msgstr "热端" + +#~ msgctxt "@action:button" +#~ msgid "View Mode" +#~ msgstr "视图模式" + +#~ msgctxt "@title:tab" +#~ msgid "Print" +#~ msgstr "打印" + +#~ msgctxt "@label" +#~ msgid "0%" +#~ msgstr "0%" + +#~ msgctxt "@label" +#~ msgid "Empty infill will leave your model hollow with low strength." +#~ msgstr "无填充将使模型处于低强度且保持空心状态。" + +#~ msgctxt "@label" +#~ msgid "20%" +#~ msgstr "20%" + +#~ msgctxt "@label" +#~ msgid "Light (20%) infill will give your model an average strength." +#~ msgstr "轻度(20%)填充将使打印模型处于中等强度。" + +#~ msgctxt "@label" +#~ msgid "50%" +#~ msgstr "50%" + +#~ msgctxt "@label" +#~ msgid "Dense (50%) infill will give your model an above average strength." +#~ msgstr "密集(50%)填充将使打印模型高于平均的强度。" + +#~ msgctxt "@label" +#~ msgid "100%" +#~ msgstr "100%" + +#~ msgctxt "@label" +#~ msgid "Solid (100%) infill will make your model completely solid." +#~ msgstr "完全(100%)填充将使您的模型处于完全实心状态。" + +#~ msgctxt "@label" +#~ msgid "Gradual" +#~ msgstr "渐层填充" + +#~ msgctxt "description" +#~ msgid "Provides support for writing X3G files" +#~ msgstr "提供对写入 X3G 文件的支持" + +#~ msgctxt "name" +#~ msgid "X3G Writer" +#~ msgstr "X3G 写入器" + #~ msgctxt "@label" #~ msgid "Machine Settings action" #~ msgstr "打印机设置操作" @@ -4057,4 +4679,4 @@ msgstr "Cura 配置文件读取器" #~ msgctxt "@label" #~ msgid "Print Selected Model with %1" #~ msgid_plural "Print Selected Models With %1" -#~ msgstr[0] "用 %1 打印所选模型" \ No newline at end of file +#~ msgstr[0] "用 %1 打印所选模型" diff --git a/resources/i18n/zh_CN/fdmextruder.def.json.po b/resources/i18n/zh_CN/fdmextruder.def.json.po index 7ad2e67409..8d89076087 100644 --- a/resources/i18n/zh_CN/fdmextruder.def.json.po +++ b/resources/i18n/zh_CN/fdmextruder.def.json.po @@ -196,4 +196,4 @@ msgstr "挤出机 Y 轴起始位置" #: fdmextruder.def.json msgctxt "extruder_prime_pos_y description" msgid "The Y coordinate of the position where the nozzle primes at the start of printing." -msgstr "打印开始时,喷头在 Y 轴坐标上初始位置。" \ No newline at end of file +msgstr "打印开始时,喷头在 Y 轴坐标上初始位置。" diff --git a/resources/i18n/zh_CN/fdmprinter.def.json.po b/resources/i18n/zh_CN/fdmprinter.def.json.po index fade03ebf4..78d7007a4e 100644 --- a/resources/i18n/zh_CN/fdmprinter.def.json.po +++ b/resources/i18n/zh_CN/fdmprinter.def.json.po @@ -58,7 +58,9 @@ msgctxt "machine_start_gcode description" msgid "" "Gcode commands to be executed at the very start - separated by \n" "." -msgstr "在开始后执行的 G-code 命令 - 以 \n 分行" +msgstr "" +"在开始后执行的 G-code 命令 - 以 \n" +" 分行" #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -70,7 +72,9 @@ msgctxt "machine_end_gcode description" msgid "" "Gcode commands to be executed at the very end - separated by \n" "." -msgstr "在结束前执行的 G-code 命令 - 以 \n 分行" +msgstr "" +"在结束前执行的 G-code 命令 - 以 \n" +" 分行" #: fdmprinter.def.json msgctxt "material_guid label" @@ -757,16 +761,6 @@ msgctxt "shell description" msgid "Shell" msgstr "外壳" -#: fdmprinter.def.json -msgctxt "wall_extruder_nr label" -msgid "Wall Extruder" -msgstr "壁挤出机" - -#: fdmprinter.def.json -msgctxt "wall_extruder_nr description" -msgid "The extruder train used for printing the walls. This is used in multi-extrusion." -msgstr "用于打印壁的挤出机组。 用于多重挤出。" - #: fdmprinter.def.json msgctxt "wall_0_extruder_nr label" msgid "Outer Wall Extruder" @@ -1127,6 +1121,11 @@ msgctxt "z_seam_type option random" msgid "Random" msgstr "随机" +#: fdmprinter.def.json +msgctxt "z_seam_type option sharpest_corner" +msgid "Sharpest Corner" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1147,6 +1146,36 @@ msgctxt "z_seam_y description" msgid "The Y coordinate of the position near where to start printing each part in a layer." msgstr "位置的 Y 轴坐标,在该位置附近开始打印层中各个部分。" +#: fdmprinter.def.json +msgctxt "z_seam_corner label" +msgid "Seam Corner Preference" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner description" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_none" +msgid "None" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_inner" +msgid "Hide Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_outer" +msgid "Expose Seam" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_any" +msgid "Hide or Expose Seam" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1167,6 +1196,16 @@ msgctxt "skin_no_small_gaps_heuristic description" msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." msgstr "当模型具有小的垂直间隙时,可能会花费大约 5% 的额外计算时间来生成这些狭窄空间中的顶部和底部皮肤。 这种情况下,禁用该设置。" +#: fdmprinter.def.json +msgctxt "skin_outline_count label" +msgid "Extra Skin Wall Count" +msgstr "额外皮肤壁计数" + +#: fdmprinter.def.json +msgctxt "skin_outline_count description" +msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." +msgstr "用多个同心线代替顶部/底部图案的最外面部分。 使用一条或两条线改善从填充材料开始的顶板。" + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1214,8 +1253,8 @@ msgstr "填充图案" #: fdmprinter.def.json msgctxt "infill_pattern description" -msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "打印填充材料的图案。 线条和锯齿形填充在交替层上的交换方向,从而降低材料成本。 网格、三角形、立方体、四面体和同心图案在每层完整打印。 立方体和四面体填充随每层变化,以在各个方向提供更均衡的强度分布。" +msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1244,8 +1283,13 @@ msgstr "立方体分区" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" -msgid "Tetrahedral" -msgstr "正四面体" +msgid "Octet" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option quarter_cubic" +msgid "Quarter Cubic" +msgstr "" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1262,6 +1306,26 @@ msgctxt "infill_pattern option zigzag" msgid "Zig Zag" msgstr "锯齿状" +#: fdmprinter.def.json +msgctxt "infill_pattern option cross" +msgid "Cross" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross_3d" +msgid "Cross 3D" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill label" +msgid "Connect Infill Lines" +msgstr "" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill description" +msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" @@ -1383,34 +1447,34 @@ msgid "Don't generate areas of infill smaller than this (use skin instead)." msgstr "不要生成小于此面积的填充区域(使用皮肤取代)。" #: fdmprinter.def.json -msgctxt "expand_skins_into_infill label" -msgid "Expand Skins Into Infill" -msgstr "将皮肤扩展到填充物中" +msgctxt "skin_preshrink label" +msgid "Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_skins_into_infill description" -msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." -msgstr "扩展平面顶部和/或底部皮肤的皮肤区域。 默认情况下,皮肤会在环绕填充的壁线下方停止,但如果填充密度较低,则可能导致出现孔洞。 该设置将皮肤延展到壁线以外,因此下一层的填充物会停留在皮肤上。" +msgctxt "skin_preshrink description" +msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins label" -msgid "Expand Top Skins Into Infill" -msgstr "将顶部皮肤扩展到填充物中" +msgctxt "top_skin_preshrink label" +msgid "Top Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_upper_skins description" -msgid "Expand the top skin areas (areas with air above) so that they support infill above." -msgstr "扩展顶部皮肤区域(上方有空气的区域),让它们支撑上方的填充物。" +msgctxt "top_skin_preshrink description" +msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins label" -msgid "Expand Bottom Skins Into Infill" -msgstr "将底部皮肤扩展到填充物中" +msgctxt "bottom_skin_preshrink label" +msgid "Bottom Skin Removal Width" +msgstr "" #: fdmprinter.def.json -msgctxt "expand_lower_skins description" -msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." -msgstr "扩展底部皮肤区域(下方有空气的区域),让它们由上下的填充层锚定。" +msgctxt "bottom_skin_preshrink description" +msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." +msgstr "" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1419,8 +1483,28 @@ msgstr "皮肤扩展距离" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" -msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." -msgstr "皮肤扩展到填充物中的距离。 默认距离足以弥合填充线之间的间隙,并且在填充密度低时,可以防止在皮肤与壁接触的位置出现孔洞。 通常较小的距离就足够了。" +msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance label" +msgid "Top Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance description" +msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance label" +msgid "Bottom Skin Expand Distance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance description" +msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." +msgstr "" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -1802,16 +1886,6 @@ msgctxt "speed_topbottom description" msgid "The speed at which top/bottom layers are printed." msgstr "打印顶部/底部层的速度。" -#: fdmprinter.def.json -msgctxt "speed_ironing label" -msgid "Ironing Speed" -msgstr "熨平速度" - -#: fdmprinter.def.json -msgctxt "speed_ironing description" -msgid "The speed at which to pass over the top surface." -msgstr "通过顶部表面的速度。" - #: fdmprinter.def.json msgctxt "speed_support label" msgid "Support Speed" @@ -2042,16 +2116,6 @@ msgctxt "acceleration_topbottom description" msgid "The acceleration with which top/bottom layers are printed." msgstr "打印顶部/底部层的加速度。" -#: fdmprinter.def.json -msgctxt "acceleration_ironing label" -msgid "Ironing Acceleration" -msgstr "熨平加速度" - -#: fdmprinter.def.json -msgctxt "acceleration_ironing description" -msgid "The acceleration with which ironing is performed." -msgstr "执行熨平的加速度。" - #: fdmprinter.def.json msgctxt "acceleration_support label" msgid "Support Acceleration" @@ -2242,16 +2306,6 @@ msgctxt "jerk_topbottom description" msgid "The maximum instantaneous velocity change with which top/bottom layers are printed." msgstr "打印顶部/底部层时的最大瞬时速度变化。" -#: fdmprinter.def.json -msgctxt "jerk_ironing label" -msgid "Ironing Jerk" -msgstr "熨平抖动速度" - -#: fdmprinter.def.json -msgctxt "jerk_ironing description" -msgid "The maximum instantaneous velocity change while performing ironing." -msgstr "执行熨平时的最大瞬时速度变化。" - #: fdmprinter.def.json msgctxt "jerk_support label" msgid "Support Jerk" @@ -2767,6 +2821,11 @@ msgctxt "support_pattern option zigzag" msgid "Zig Zag" msgstr "锯齿形" +#: fdmprinter.def.json +msgctxt "support_pattern option cross" +msgid "Cross" +msgstr "" + #: fdmprinter.def.json msgctxt "support_connect_zigzags label" msgid "Connect Support ZigZags" @@ -2779,23 +2838,33 @@ msgstr "连接锯齿形。 这将增加锯齿形支撑结构的强度。" #: fdmprinter.def.json msgctxt "support_skip_some_zags label" -msgid "Skip Some ZigZags Connections" -msgstr "跳过部分锯齿形连接" +msgid "Break Up Support In Chunks" +msgstr "" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" -msgid "Skip some ZigZags connections to make the support structure easier to break." -msgstr "跳过部分锯齿形连接,让支撑结构更容易打破。" +msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm description" +msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count label" -msgid "ZigZag Connection Skip Count" -msgstr "锯齿形连接跳过计数" +msgid "Support Chunk Line Count" +msgstr "" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" -msgid "Skip one in every N connection lines to make the support structure easier to break." -msgstr "每隔 N 个连接线跳过一次,让支撑结构更容易打破。" +msgid "Skip one in every N connection lines to make the support structure easier to break away." +msgstr "" #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3337,7 +3406,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance, multiple skirt lines will extend outwards from this distance." -msgstr "skirt 和打印第一层之间的水平距离。\n这是最小距离,多个 skirt 走线将从此距离向外延伸。" +msgstr "" +"skirt 和打印第一层之间的水平距离。\n" +"这是最小距离,多个 skirt 走线将从此距离向外延伸。" #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3379,6 +3450,26 @@ msgctxt "brim_outside_only description" msgid "Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much." msgstr "仅在模型外部打印 brim。 这会减少您之后需要移除的 brim 量,而不会过度影响热床附着。" +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 label" +msgid "Initial Layer Z Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_layer_0 description" +msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers label" +msgid "Z Offset Taper Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_offset_taper_layers description" +msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3389,6 +3480,16 @@ msgctxt "raft_margin description" msgid "If the raft is enabled, this is the extra raft area around the model which is also given a raft. Increasing this margin will create a stronger raft while using more material and leaving less area for your print." msgstr "如果启用了 raft,则这是指也被提供了 raft 的模型周围的额外 raft 区域。 增加此留白将创建强度更大的 raft,但会使用更多材料,为打印品留下的空间更少。" +#: fdmprinter.def.json +msgctxt "raft_smoothing label" +msgid "Raft Smoothing" +msgstr "" + +#: fdmprinter.def.json +msgctxt "raft_smoothing description" +msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." +msgstr "" + #: fdmprinter.def.json msgctxt "raft_airgap label" msgid "Raft Air Gap" @@ -4064,6 +4165,16 @@ msgctxt "smooth_spiralized_contours description" msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." msgstr "平滑螺旋轮廓以减少 Z 缝的可见性(Z 缝应在打印品上几乎看不到,但在层视图中仍然可见)。 请注意,平滑操作将倾向于模糊精细的表面细节。" +#: fdmprinter.def.json +msgctxt "relative_extrusion label" +msgid "Relative Extrusion" +msgstr "" + +#: fdmprinter.def.json +msgctxt "relative_extrusion description" +msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." +msgstr "" + #: fdmprinter.def.json msgctxt "experimental label" msgid "Experimental" @@ -4074,6 +4185,16 @@ msgctxt "experimental description" msgid "experimental!" msgstr "实验性!" +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order description" +msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." +msgstr "" + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4184,16 +4305,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "滑行期间的移动速度,相对于挤出路径的速度。 建议采用略低于 100% 的值,因为在滑行移动期间鲍登管中的压力会下降。" -#: fdmprinter.def.json -msgctxt "skin_outline_count label" -msgid "Extra Skin Wall Count" -msgstr "额外皮肤壁计数" - -#: fdmprinter.def.json -msgctxt "skin_outline_count description" -msgid "Replaces the outermost part of the top/bottom pattern with a number of concentric lines. Using one or two lines improves roofs that start on infill material." -msgstr "用多个同心线代替顶部/底部图案的最外面部分。 使用一条或两条线改善从填充材料开始的顶板。" - #: fdmprinter.def.json msgctxt "skin_alternate_rotation label" msgid "Alternate Skin Rotation" @@ -4204,6 +4315,26 @@ msgctxt "skin_alternate_rotation description" msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." msgstr "交替打印顶部/底部层的方向。 通常它们只进行对角线打印。 此设置添加仅限 X 和仅限 Y 的方向。" +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size label" +msgid "Cross 3D Pocket Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size description" +msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly label" +msgid "Alternate Cross 3D Pockets" +msgstr "" + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly description" +msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." +msgstr "" + #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" msgid "Spaghetti Infill" @@ -4504,7 +4635,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "以半速挤出的上行移动的距离。\n这会与之前的层产生更好的附着,而不会将这些层中的材料过度加热。 仅应用于单线打印。" +msgstr "" +"以半速挤出的上行移动的距离。\n" +"这会与之前的层产生更好的附着,而不会将这些层中的材料过度加热。 仅应用于单线打印。" #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -4621,6 +4754,16 @@ msgctxt "ironing_enabled description" msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." msgstr "再一次经过顶部表面,但不挤出材料。 这是为了进一步融化顶部的塑料,打造更平滑的表面。" +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer label" +msgid "Iron Only Highest Layer" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer description" +msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." +msgstr "" + #: fdmprinter.def.json msgctxt "ironing_pattern label" msgid "Ironing Pattern" @@ -4671,6 +4814,36 @@ msgctxt "ironing_inset description" msgid "A distance to keep from the edges of the model. Ironing all the way to the edge of the mesh may result in a jagged edge on your print." msgstr "与模型边缘保持的距离。 一直熨平至网格的边缘可能导致打印品出现锯齿状边缘。" +#: fdmprinter.def.json +msgctxt "speed_ironing label" +msgid "Ironing Speed" +msgstr "熨平速度" + +#: fdmprinter.def.json +msgctxt "speed_ironing description" +msgid "The speed at which to pass over the top surface." +msgstr "通过顶部表面的速度。" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing label" +msgid "Ironing Acceleration" +msgstr "熨平加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing description" +msgid "The acceleration with which ironing is performed." +msgstr "执行熨平的加速度。" + +#: fdmprinter.def.json +msgctxt "jerk_ironing label" +msgid "Ironing Jerk" +msgstr "熨平抖动速度" + +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "执行熨平时的最大瞬时速度变化。" + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -4731,6 +4904,66 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "在将模型从文件中载入时应用在模型上的转换矩阵。" +#~ msgctxt "wall_extruder_nr label" +#~ msgid "Wall Extruder" +#~ msgstr "壁挤出机" + +#~ msgctxt "wall_extruder_nr description" +#~ msgid "The extruder train used for printing the walls. This is used in multi-extrusion." +#~ msgstr "用于打印壁的挤出机组。 用于多重挤出。" + +#~ msgctxt "infill_pattern description" +#~ msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, tetrahedral and concentric patterns are fully printed every layer. Cubic and tetrahedral infill change with every layer to provide a more equal distribution of strength over each direction." +#~ msgstr "打印填充材料的图案。 线条和锯齿形填充在交替层上的交换方向,从而降低材料成本。 网格、三角形、立方体、四面体和同心图案在每层完整打印。 立方体和四面体填充随每层变化,以在各个方向提供更均衡的强度分布。" + +#~ msgctxt "infill_pattern option tetrahedral" +#~ msgid "Tetrahedral" +#~ msgstr "正四面体" + +#~ msgctxt "expand_skins_into_infill label" +#~ msgid "Expand Skins Into Infill" +#~ msgstr "将皮肤扩展到填充物中" + +#~ msgctxt "expand_skins_into_infill description" +#~ msgid "Expand skin areas of top and/or bottom skin of flat surfaces. By default, skins stop under the wall lines that surround infill but this can lead to holes appearing when the infill density is low. This setting extends the skins beyond the wall lines so that the infill on the next layer rests on skin." +#~ msgstr "扩展平面顶部和/或底部皮肤的皮肤区域。 默认情况下,皮肤会在环绕填充的壁线下方停止,但如果填充密度较低,则可能导致出现孔洞。 该设置将皮肤延展到壁线以外,因此下一层的填充物会停留在皮肤上。" + +#~ msgctxt "expand_upper_skins label" +#~ msgid "Expand Top Skins Into Infill" +#~ msgstr "将顶部皮肤扩展到填充物中" + +#~ msgctxt "expand_upper_skins description" +#~ msgid "Expand the top skin areas (areas with air above) so that they support infill above." +#~ msgstr "扩展顶部皮肤区域(上方有空气的区域),让它们支撑上方的填充物。" + +#~ msgctxt "expand_lower_skins label" +#~ msgid "Expand Bottom Skins Into Infill" +#~ msgstr "将底部皮肤扩展到填充物中" + +#~ msgctxt "expand_lower_skins description" +#~ msgid "Expand the bottom skin areas (areas with air below) so that they are anchored by the infill layers above and below." +#~ msgstr "扩展底部皮肤区域(下方有空气的区域),让它们由上下的填充层锚定。" + +#~ msgctxt "expand_skins_expand_distance description" +#~ msgid "The distance the skins are expanded into the infill. The default distance is enough to bridge the gap between the infill lines and will stop holes appearing in the skin where it meets the wall when the infill density is low. A smaller distance will often be sufficient." +#~ msgstr "皮肤扩展到填充物中的距离。 默认距离足以弥合填充线之间的间隙,并且在填充密度低时,可以防止在皮肤与壁接触的位置出现孔洞。 通常较小的距离就足够了。" + +#~ msgctxt "support_skip_some_zags label" +#~ msgid "Skip Some ZigZags Connections" +#~ msgstr "跳过部分锯齿形连接" + +#~ msgctxt "support_skip_some_zags description" +#~ msgid "Skip some ZigZags connections to make the support structure easier to break." +#~ msgstr "跳过部分锯齿形连接,让支撑结构更容易打破。" + +#~ msgctxt "support_zag_skip_count label" +#~ msgid "ZigZag Connection Skip Count" +#~ msgstr "锯齿形连接跳过计数" + +#~ msgctxt "support_zag_skip_count description" +#~ msgid "Skip one in every N connection lines to make the support structure easier to break." +#~ msgstr "每隔 N 个连接线跳过一次,让支撑结构更容易打破。" + #~ msgctxt "machine_show_variants label" #~ msgid "Show machine variants" #~ msgstr "显示机器型号" @@ -4773,4 +5006,4 @@ msgstr "在将模型从文件中载入时应用在模型上的转换矩阵。" #~ msgctxt "machine_gcode_flavor option RepRap (Volumatric)" #~ msgid "RepRap (Volumetric)" -#~ msgstr "RepRap (Volumetric)" \ No newline at end of file +#~ msgstr "RepRap (Volumetric)" From d47bc710bfbf9e87da03fde72ac786d62e7ca17e Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 19 Sep 2017 13:21:48 +0200 Subject: [PATCH 202/589] Last minute string changes Some new message that still needed to be in... Contributes to issue CURA-4341. --- resources/i18n/cura.pot | 48 +++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/resources/i18n/cura.pot b/resources/i18n/cura.pot index 7171684c05..e228325a47 100644 --- a/resources/i18n/cura.pot +++ b/resources/i18n/cura.pot @@ -57,9 +57,9 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:428 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:367 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 @@ -563,12 +563,12 @@ msgctxt "@action" msgid "Connect via Network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "" "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "" @@ -576,56 +576,56 @@ msgid "" "printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "" "{printer_name} has finished printing '{job_name}'. Please collect the print " "and confirm clearing the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "" "{printer_name} is reserved to print '{job_name}'. Please change the " "printer's configuration to match the job, for it to start printing." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "" "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "" "Unable to send new print job: this 3D printer is not (yet) set up to host a " "group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." @@ -1576,33 +1576,33 @@ msgid "Address" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:302 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:316 msgctxt "@title:window" msgid "Printer Address" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:346 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:376 msgctxt "@action:button" msgid "Ok" msgstr "" @@ -1625,6 +1625,18 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 +msgctxt "@label" +msgid "" +"This printer is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 +msgctxt "@label" +msgid "" +"This printer is the host for a group of %1 connected Ultimaker 3 printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" From 8a1b5d3cda6f86dd423cdcb8c27a4892e125898c Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 19 Sep 2017 13:23:37 +0200 Subject: [PATCH 203/589] Update translation templates again Last minute changes... Contributes to issue CURA-4341. --- resources/i18n/de_DE/cura.po | 46 ++++++++++++++++++++++-------------- resources/i18n/es_ES/cura.po | 46 ++++++++++++++++++++++-------------- resources/i18n/fi_FI/cura.po | 46 ++++++++++++++++++++++-------------- resources/i18n/fr_FR/cura.po | 46 ++++++++++++++++++++++-------------- resources/i18n/it_IT/cura.po | 46 ++++++++++++++++++++++-------------- resources/i18n/ja_JP/cura.po | 46 ++++++++++++++++++++++-------------- resources/i18n/ko_KR/cura.po | 46 ++++++++++++++++++++++-------------- resources/i18n/nl_NL/cura.po | 46 ++++++++++++++++++++++-------------- resources/i18n/pl_PL/cura.po | 46 ++++++++++++++++++++++-------------- resources/i18n/pt_BR/cura.po | 46 ++++++++++++++++++++++-------------- resources/i18n/ru_RU/cura.po | 46 ++++++++++++++++++++++-------------- resources/i18n/tr_TR/cura.po | 46 ++++++++++++++++++++++-------------- resources/i18n/zh_CN/cura.po | 46 ++++++++++++++++++++++-------------- 13 files changed, 364 insertions(+), 234 deletions(-) diff --git a/resources/i18n/de_DE/cura.po b/resources/i18n/de_DE/cura.po index 0e387a2d8b..9be716a954 100644 --- a/resources/i18n/de_DE/cura.po +++ b/resources/i18n/de_DE/cura.po @@ -55,9 +55,9 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:428 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:367 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 @@ -545,59 +545,59 @@ msgctxt "@action" msgid "Connect via Network" msgstr "Anschluss über Netzwerk" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." @@ -1495,33 +1495,33 @@ msgid "Address" msgstr "Adresse" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Der Drucker unter dieser Adresse hat nicht reagiert." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:302 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Verbinden" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:316 msgctxt "@title:window" msgid "Printer Address" msgstr "Druckeradresse" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:346 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Geben Sie die IP-Adresse oder den Hostnamen Ihres Druckers auf dem Netzwerk ein." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:376 msgctxt "@action:button" msgid "Ok" msgstr "Ok" @@ -1544,6 +1544,16 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Konfiguration aktivieren" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 +msgctxt "@label" +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 +msgctxt "@label" +msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" diff --git a/resources/i18n/es_ES/cura.po b/resources/i18n/es_ES/cura.po index 06f57ca9c9..504815d41b 100644 --- a/resources/i18n/es_ES/cura.po +++ b/resources/i18n/es_ES/cura.po @@ -55,9 +55,9 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:428 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:367 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 @@ -545,59 +545,59 @@ msgctxt "@action" msgid "Connect via Network" msgstr "Conectar a través de la red" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." @@ -1495,33 +1495,33 @@ msgid "Address" msgstr "Dirección" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "La impresora todavía no ha respondido en esta dirección." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:302 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Conectar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:316 msgctxt "@title:window" msgid "Printer Address" msgstr "Dirección de la impresora" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:346 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Introduzca la dirección IP o el nombre de host de la impresora en red." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:376 msgctxt "@action:button" msgid "Ok" msgstr "Aceptar" @@ -1544,6 +1544,16 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Activar configuración" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 +msgctxt "@label" +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 +msgctxt "@label" +msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" diff --git a/resources/i18n/fi_FI/cura.po b/resources/i18n/fi_FI/cura.po index 63b47faaee..f4fdbf58be 100644 --- a/resources/i18n/fi_FI/cura.po +++ b/resources/i18n/fi_FI/cura.po @@ -55,9 +55,9 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:428 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:367 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 @@ -545,59 +545,59 @@ msgctxt "@action" msgid "Connect via Network" msgstr "Yhdistä verkon kautta" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." @@ -1495,33 +1495,33 @@ msgid "Address" msgstr "Osoite" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Tämän osoitteen tulostin ei ole vielä vastannut." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:302 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Yhdistä" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:316 msgctxt "@title:window" msgid "Printer Address" msgstr "Tulostimen osoite" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:346 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Anna verkon tulostimen IP-osoite tai isäntänimi." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:376 msgctxt "@action:button" msgid "Ok" msgstr "OK" @@ -1544,6 +1544,16 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Aktivoi määritys" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 +msgctxt "@label" +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 +msgctxt "@label" +msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" diff --git a/resources/i18n/fr_FR/cura.po b/resources/i18n/fr_FR/cura.po index 93c1ac6eaa..38bb413f05 100644 --- a/resources/i18n/fr_FR/cura.po +++ b/resources/i18n/fr_FR/cura.po @@ -55,9 +55,9 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:428 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:367 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 @@ -545,59 +545,59 @@ msgctxt "@action" msgid "Connect via Network" msgstr "Connecter via le réseau" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." @@ -1495,33 +1495,33 @@ msgid "Address" msgstr "Adresse" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "L'imprimante à cette adresse n'a pas encore répondu." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:302 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Connecter" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:316 msgctxt "@title:window" msgid "Printer Address" msgstr "Adresse de l'imprimante" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:346 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Saisissez l'adresse IP ou le nom d'hôte de votre imprimante sur le réseau." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:376 msgctxt "@action:button" msgid "Ok" msgstr "Ok" @@ -1544,6 +1544,16 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Activer la configuration" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 +msgctxt "@label" +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 +msgctxt "@label" +msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" diff --git a/resources/i18n/it_IT/cura.po b/resources/i18n/it_IT/cura.po index 7cce8e20aa..9116394927 100644 --- a/resources/i18n/it_IT/cura.po +++ b/resources/i18n/it_IT/cura.po @@ -55,9 +55,9 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:428 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:367 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 @@ -545,59 +545,59 @@ msgctxt "@action" msgid "Connect via Network" msgstr "Collega tramite rete" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." @@ -1495,33 +1495,33 @@ msgid "Address" msgstr "Indirizzo" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "La stampante a questo indirizzo non ha ancora risposto." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:302 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Collega" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:316 msgctxt "@title:window" msgid "Printer Address" msgstr "Indirizzo stampante" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:346 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Inserire l’indirizzo IP o l’hostname della stampante sulla rete." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:376 msgctxt "@action:button" msgid "Ok" msgstr "Ok" @@ -1544,6 +1544,16 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Attiva la configurazione" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 +msgctxt "@label" +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 +msgctxt "@label" +msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" diff --git a/resources/i18n/ja_JP/cura.po b/resources/i18n/ja_JP/cura.po index e39ceaec16..4068425769 100644 --- a/resources/i18n/ja_JP/cura.po +++ b/resources/i18n/ja_JP/cura.po @@ -56,9 +56,9 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:428 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:367 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 @@ -546,59 +546,59 @@ msgctxt "@action" msgid "Connect via Network" msgstr "Connect via Network" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." @@ -1493,33 +1493,33 @@ msgid "Address" msgstr "Address" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "The printer at this address has not yet responded." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:302 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Connect" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:316 msgctxt "@title:window" msgid "Printer Address" msgstr "Printer Address" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:346 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Enter the IP address or hostname of your printer on the network." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:376 msgctxt "@action:button" msgid "Ok" msgstr "Ok" @@ -1542,6 +1542,16 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Activate Configuration" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 +msgctxt "@label" +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 +msgctxt "@label" +msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" diff --git a/resources/i18n/ko_KR/cura.po b/resources/i18n/ko_KR/cura.po index 3670d5211e..c26e00a401 100644 --- a/resources/i18n/ko_KR/cura.po +++ b/resources/i18n/ko_KR/cura.po @@ -57,9 +57,9 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:428 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:367 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 @@ -557,59 +557,59 @@ msgctxt "@action" msgid "Connect via Network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." @@ -1501,33 +1501,33 @@ msgid "Address" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:302 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:316 msgctxt "@title:window" msgid "Printer Address" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:346 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:376 msgctxt "@action:button" msgid "Ok" msgstr "" @@ -1550,6 +1550,16 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 +msgctxt "@label" +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 +msgctxt "@label" +msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" diff --git a/resources/i18n/nl_NL/cura.po b/resources/i18n/nl_NL/cura.po index 780090ddd0..5f65c5220f 100644 --- a/resources/i18n/nl_NL/cura.po +++ b/resources/i18n/nl_NL/cura.po @@ -55,9 +55,9 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:428 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:367 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 @@ -545,59 +545,59 @@ msgctxt "@action" msgid "Connect via Network" msgstr "Verbinding Maken via Netwerk" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." @@ -1495,33 +1495,33 @@ msgid "Address" msgstr "Adres" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "De printer op dit adres heeft nog niet gereageerd." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:302 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Verbinden" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:316 msgctxt "@title:window" msgid "Printer Address" msgstr "Printeradres" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:346 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Voer het IP-adres of de hostnaam van de printer in het netwerk in." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:376 msgctxt "@action:button" msgid "Ok" msgstr "OK" @@ -1544,6 +1544,16 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Configuratie Activeren" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 +msgctxt "@label" +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 +msgctxt "@label" +msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" diff --git a/resources/i18n/pl_PL/cura.po b/resources/i18n/pl_PL/cura.po index 81f7afb752..748e969bdf 100644 --- a/resources/i18n/pl_PL/cura.po +++ b/resources/i18n/pl_PL/cura.po @@ -57,9 +57,9 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:428 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:367 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 @@ -547,59 +547,59 @@ msgctxt "@action" msgid "Connect via Network" msgstr "Połącz przez sieć" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." @@ -1497,33 +1497,33 @@ msgid "Address" msgstr "Adres" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Drukarka pod tym adresem jeszcze nie odpowiedziała." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:302 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Połącz" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:316 msgctxt "@title:window" msgid "Printer Address" msgstr "Adres drukarki" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:346 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Wpisz adres IP lub nazwę hosta drukarki w sieci." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:376 msgctxt "@action:button" msgid "Ok" msgstr "Ok" @@ -1546,6 +1546,16 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Uaktywnij konfigurację" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 +msgctxt "@label" +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 +msgctxt "@label" +msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" diff --git a/resources/i18n/pt_BR/cura.po b/resources/i18n/pt_BR/cura.po index 5176636cfc..97133430f2 100644 --- a/resources/i18n/pt_BR/cura.po +++ b/resources/i18n/pt_BR/cura.po @@ -56,9 +56,9 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:428 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:367 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 @@ -546,59 +546,59 @@ msgctxt "@action" msgid "Connect via Network" msgstr "Conectar pela rede" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." @@ -1496,33 +1496,33 @@ msgid "Address" msgstr "Endereço" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "A impressora neste endereço ainda não respondeu." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:302 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Conectar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:316 msgctxt "@title:window" msgid "Printer Address" msgstr "Endereço da Impressora" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:346 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Introduza o endereço IP ou hostname da sua impressora na rede." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:376 msgctxt "@action:button" msgid "Ok" msgstr "Ok" @@ -1545,6 +1545,16 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Ativar Configuração" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 +msgctxt "@label" +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 +msgctxt "@label" +msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" diff --git a/resources/i18n/ru_RU/cura.po b/resources/i18n/ru_RU/cura.po index e6fb0328c2..dbfb08f22d 100755 --- a/resources/i18n/ru_RU/cura.po +++ b/resources/i18n/ru_RU/cura.po @@ -57,9 +57,9 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:428 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:367 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 @@ -547,59 +547,59 @@ msgctxt "@action" msgid "Connect via Network" msgstr "Подключиться через сеть" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." @@ -1496,33 +1496,33 @@ msgid "Address" msgstr "Адрес" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Принтер по этому адресу ещё не отвечал." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:302 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Подключить" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:316 msgctxt "@title:window" msgid "Printer Address" msgstr "Адрес принтера" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:346 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "Введите IP адрес принтера или его имя в сети." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:376 msgctxt "@action:button" msgid "Ok" msgstr "Ok" @@ -1545,6 +1545,16 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Активировать конфигурацию" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 +msgctxt "@label" +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 +msgctxt "@label" +msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" diff --git a/resources/i18n/tr_TR/cura.po b/resources/i18n/tr_TR/cura.po index 7acf443fae..6d234bd372 100644 --- a/resources/i18n/tr_TR/cura.po +++ b/resources/i18n/tr_TR/cura.po @@ -55,9 +55,9 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:428 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:367 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 @@ -545,59 +545,59 @@ msgctxt "@action" msgid "Connect via Network" msgstr "Ağ ile Bağlan" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." @@ -1495,33 +1495,33 @@ msgid "Address" msgstr "Adres" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Bu adresteki yazıcı henüz yanıt vermedi." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:302 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "Bağlan" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:316 msgctxt "@title:window" msgid "Printer Address" msgstr "Yazıcı Adresi" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:346 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "IP adresini veya yazıcınızın ağ üzerindeki ana bilgisayar adını girin." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:376 msgctxt "@action:button" msgid "Ok" msgstr "Tamam" @@ -1544,6 +1544,16 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "Yapılandırmayı Etkinleştir" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 +msgctxt "@label" +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 +msgctxt "@label" +msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" diff --git a/resources/i18n/zh_CN/cura.po b/resources/i18n/zh_CN/cura.po index 8fd99ceaf1..e7e816f89f 100644 --- a/resources/i18n/zh_CN/cura.po +++ b/resources/i18n/zh_CN/cura.po @@ -57,9 +57,9 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:840 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:822 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:423 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:428 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:350 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:350 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:367 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:78 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:104 #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:99 @@ -547,59 +547,59 @@ msgctxt "@action" msgid "Connect via Network" msgstr "通过网络连接" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:102 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:191 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:207 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:420 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:493 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:499 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:515 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." @@ -1496,33 +1496,33 @@ msgid "Address" msgstr "地址" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:280 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "该网络地址的打印机尚未响应。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:285 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:285 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:302 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/UM3InfoComponents.qml:38 msgctxt "@action:button" msgid "Connect" msgstr "连接" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:299 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:299 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:316 msgctxt "@title:window" msgid "Printer Address" msgstr "打印机网络地址" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:329 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:346 msgctxt "@alabel" msgid "Enter the IP address or hostname of your printer on the network." msgstr "输入打印机在网络上的 IP 地址或主机名。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:359 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:359 +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:376 msgctxt "@action:button" msgid "Ok" msgstr "确定" @@ -1545,6 +1545,16 @@ msgctxt "@action:button" msgid "Activate Configuration" msgstr "应用配置" +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 +msgctxt "@label" +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 +msgctxt "@label" +msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" From e5f3d45385fe370dc670d02e62be02653f873c50 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 19 Sep 2017 14:02:01 +0200 Subject: [PATCH 204/589] When project loading needs to create a new machine, also create a new definition changes CURA-4345 --- plugins/3MFReader/ThreeMFWorkspaceReader.py | 1 + plugins/3MFReader/WorkspaceDialog.py | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 590de1d49b..647d731d46 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -748,6 +748,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # MUST get updated too. # if self._resolve_strategies["machine"] == "new": + # A new machine was made, but it was serialized with the wrong user container. Fix that now. for container in user_instance_containers: # replacing the container ID for user instance containers for the extruders diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 9d6c70cf8b..75ee5c30f0 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -26,7 +26,7 @@ class WorkspaceDialog(QObject): self._view = None self._qml_url = "WorkspaceDialog.qml" self._lock = threading.Lock() - self._default_strategy = "override" + self._default_strategy = None self._result = {"machine": self._default_strategy, "quality_changes": self._default_strategy, "definition_changes": self._default_strategy, @@ -233,6 +233,11 @@ class WorkspaceDialog(QObject): self._result["quality_changes"] = None if "definition_changes" in self._result and not self._has_definition_changes_conflict: self._result["definition_changes"] = None + + # If the machine needs to be re-created, the definition_changes should also be re-created. + if self._result["machine"] == "new" and self._result["definition_changes"] is None: + self._result["definition_changes"] = "new" + if "material" in self._result and not self._has_material_conflict: self._result["material"] = None return self._result From c4f5c970e5632c8851e19262cef1b0ed2d51f0fe Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 19 Sep 2017 16:39:51 +0200 Subject: [PATCH 205/589] Removed uneeded logging --- plugins/3MFReader/ThreeMFReader.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index 4175514238..a19005057c 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -47,9 +47,7 @@ class ThreeMFReader(MeshReader): def _createMatrixFromTransformationString(self, transformation): if transformation == "": return Matrix() - - Logger.log("d", "raw_transformation=%s", transformation) - + splitted_transformation = transformation.split() ## Transformation is saved as: ## M00 M01 M02 0.0 From ebd180bfdcb0d16fa251149d601ac1e921858881 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Wed, 20 Sep 2017 08:50:58 +0200 Subject: [PATCH 206/589] Custom profiles are now shown in the preference panel - CURA-4327 --- cura/Settings/ProfilesModel.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py index 2942577fc6..4df362cdef 100644 --- a/cura/Settings/ProfilesModel.py +++ b/cura/Settings/ProfilesModel.py @@ -125,11 +125,22 @@ class ProfilesModel(InstanceContainersModel): for key in reversed(tmp_all_quality_items.keys()): all_quality_items[key] = tmp_all_quality_items[key] + # First the suitable containers are set in the model + containers = [] for data_item in all_quality_items.values(): - item = data_item["suitable_container"] - if item is None: - item = data_item["all_containers"][0] + suitable_item = data_item["suitable_container"] + if suitable_item is None: + suitable_item = data_item["all_containers"][0] + containers.append(suitable_item) + # Once the suitable containers are collected, the rest of the containers are appended + for data_item in all_quality_items.values(): + for item in data_item["all_containers"]: + if item not in containers: + containers.append(item) + + # Now all the containers are set + for item in containers: profile = container_registry.findContainers(id = item["id"]) if not profile: item["layer_height"] = "" #Can't update a profile that is unknown. From ddacdf523eca634ce78582dc226dbae9133fe321 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 20 Sep 2017 09:48:00 +0200 Subject: [PATCH 207/589] Fixed some small issues when certain qml objects were null CURA-4349 --- plugins/LayerView/LayerView.qml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 26087b8b65..274b5c695c 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -30,11 +30,15 @@ Item } property var buttonTarget: { - var force_binding = parent.y; // ensure this gets reevaluated when the panel moves - return base.mapFromItem(parent.parent, parent.buttonTarget.x, parent.buttonTarget.y); + if(parent != null) + { + var force_binding = parent.y; // ensure this gets reevaluated when the panel moves + return base.mapFromItem(parent.parent, parent.buttonTarget.x, parent.buttonTarget.y) + } + return Qt.point(0,0) } - visible: !parent.parent.monitoringPrint + visible: parent != null ? !parent.parent.monitoringPrint: true UM.PointingRectangle { id: layerViewMenu From ade1c039ea3d0658158bcc273d20f4712e816da2 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 20 Sep 2017 11:03:20 +0200 Subject: [PATCH 208/589] Print information not being set won't cause crash anymore --- plugins/CuraEngineBackend/CuraEngineBackend.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index dd5b182607..cb7d333cde 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -195,8 +195,8 @@ class CuraEngineBackend(QObject, Backend): self.backendStateChange.emit(BackendState.Done) Logger.log("w", "Slice unnecessary, nothing has changed that needs reslicing.") return - - Application.getInstance().getPrintInformation().setToZeroPrintInformation() + if Application.getInstance().getPrintInformation(): + Application.getInstance().getPrintInformation().setToZeroPrintInformation() self._stored_layer_data = [] self._stored_optimized_layer_data = [] From b434fdb875127bc999523b3ab5c8eee02b230b1e Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 20 Sep 2017 13:35:13 +0200 Subject: [PATCH 209/589] Layerview scrollbar now has fixed size. Instead of using the size of the other items. This worked when the bar was still part of the larger view, but since it's now below the item it broke it. CURA-4342 --- plugins/LayerView/LayerView.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 274b5c695c..21032be6ea 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -342,7 +342,7 @@ Item { id: slider width: handleSize - height: parent.height - 2*UM.Theme.getSize("slider_layerview_margin").height + height: UM.Theme.getSize("layerview_menu_size").height anchors.top: parent.bottom anchors.topMargin: UM.Theme.getSize("slider_layerview_margin").height anchors.right: layerViewMenu.right From 4d99fb067f3f9a9187121cc67dd41a8b8a29ba7b Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Wed, 20 Sep 2017 17:19:44 +0200 Subject: [PATCH 210/589] After disconnect a signal, now is reconnected the correct one - CURA-4327 --- cura/Settings/MachineManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 4fb700e5ea..e807e49200 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -965,7 +965,7 @@ class MachineManager(QObject): if container_type == "quality": stack.quality.nameChanged.disconnect(self._onQualityNameChanged) stack.setQuality(container, postpone_emit = postpone_emit) - stack.qualityChanges.nameChanged.connect(self._onQualityNameChanged) + stack.quality.nameChanged.connect(self._onQualityNameChanged) elif container_type == "quality_changes" or container_type is None: # If the container is an empty container, we need to change the quality_changes. # Quality can never be set to empty. From 11060e010b770af4d8b2215ec02e11cb9413a29e Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 21 Sep 2017 12:52:07 +0200 Subject: [PATCH 211/589] Clarify message title The title should add something to the message, such as a summary. --- plugins/USBPrinting/USBPrinterOutputDevice.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/USBPrinting/USBPrinterOutputDevice.py b/plugins/USBPrinting/USBPrinterOutputDevice.py index 4b4c24c5d2..4d3b8446a3 100644 --- a/plugins/USBPrinting/USBPrinterOutputDevice.py +++ b/plugins/USBPrinting/USBPrinterOutputDevice.py @@ -150,7 +150,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): def printGCode(self, gcode_list): Logger.log("d", "Started printing g-code") if self._progress or self._connection_state != ConnectionState.connected: - self._error_message = Message(catalog.i18nc("@info:status", "Unable to start a new job because the printer is busy or not connected."), title = catalog.i18nc("@info:title", "Print Details")) + self._error_message = Message(catalog.i18nc("@info:status", "Unable to start a new job because the printer is busy or not connected."), title = catalog.i18nc("@info:title", "Printer Unavailable")) self._error_message.show() Logger.log("d", "Printer is busy or not connected, aborting print") self.writeError.emit(self) From 382fcdb4feda6081479053d908d4280f15189401 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 21 Sep 2017 12:54:04 +0200 Subject: [PATCH 212/589] Better title for export succeeded message --- cura/Settings/CuraContainerRegistry.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 5b7f4199d8..1c2d76c3b2 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -153,7 +153,7 @@ class CuraContainerRegistry(ContainerRegistry): m.show() return m = Message(catalog.i18nc("@info:status Don't translate the XML tag !", "Exported profile to {0}", file_name), - title = catalog.i18nc("@info:title", "Export Details")) + title = catalog.i18nc("@info:title", "Export succeeded")) m.show() ## Gets the plugin object matching the criteria From adb41a19b751b14db667a79fe13b745954909034 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 21 Sep 2017 12:59:46 +0200 Subject: [PATCH 213/589] Fix typos in description of Zig Zaggify Infill --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 5c3dc44f24..ece8fd48a4 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1389,7 +1389,7 @@ "zig_zaggify_infill": { "label": "Connect Infill Lines", - "description": "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used.", + "description": "Connect the ends where the infill pattern meets the inner wall using a line which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduce the effects of infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used.", "type": "bool", "default_value": true, "enabled": "infill_pattern == 'cross' or infill_pattern == 'cross_3d'", From cdc1b9ba66c17301b57a2918fb09956d383b5392 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 21 Sep 2017 14:28:22 +0200 Subject: [PATCH 214/589] CURA-4303 infill slider icon color, border, alignment --- resources/qml/SidebarSimple.qml | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 9bd5c7590a..f3202d0e63 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -509,21 +509,23 @@ Item } } - Item + Rectangle { id: infillIcon - width: (infillCellRight.width / 5) - (UM.Theme.getSize("sidebar_margin").width) + width: (parent.width / 5) - (UM.Theme.getSize("sidebar_margin").width) height: width - anchors.right: infillCellRight.right - anchors.top: infillSlider.top + anchors.right: parent.right + anchors.top: parent.top + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height / 2 // we loop over all density icons and only show the one that has the current density and steps Repeater { id: infillIconList model: infillModel + anchors.fill: parent property int activeIndex: { for (var i = 0; i < infillModel.count; i++) { @@ -541,20 +543,21 @@ Item return -1 } - Item { + Rectangle + { anchors.fill: parent + visible: infillIconList.activeIndex == index - Rectangle { + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("quality_slider_available") + + UM.RecolorImage { anchors.fill: parent - visible: infillIconList.activeIndex == index - - UM.RecolorImage { - anchors.fill: parent - sourceSize.width: width - sourceSize.height: width - source: UM.Theme.getIcon(model.icon) - color: UM.Theme.getColor("quality_slider_available") - } + anchors.margins: 2 + sourceSize.width: width + sourceSize.height: width + source: UM.Theme.getIcon(model.icon) + color: UM.Theme.getColor("quality_slider_unavailable") } } } From ddfb5f0b48446fff8d5bb037bbb6f9b9b7892928 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 21 Sep 2017 15:09:04 +0200 Subject: [PATCH 215/589] fix conflict after revert --- plugins/3MFReader/ThreeMFReader.py | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index a19005057c..93a8dc1c65 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -12,7 +12,6 @@ from UM.Mesh.MeshBuilder import MeshBuilder from UM.Mesh.MeshReader import MeshReader from UM.Scene.GroupDecorator import GroupDecorator from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator -from cura.ZOffsetDecorator import ZOffsetDecorator from UM.Application import Application from cura.Settings.ExtruderManager import ExtruderManager from cura.QualityManager import QualityManager @@ -47,7 +46,7 @@ class ThreeMFReader(MeshReader): def _createMatrixFromTransformationString(self, transformation): if transformation == "": return Matrix() - + splitted_transformation = transformation.split() ## Transformation is saved as: ## M00 M01 M02 0.0 @@ -105,8 +104,8 @@ class ThreeMFReader(MeshReader): # Add the setting override decorator, so we can add settings to this node. if settings: um_node.addDecorator(SettingOverrideDecorator()) - global_container_stack = Application.getInstance().getGlobalContainerStack() + global_container_stack = Application.getInstance().getGlobalContainerStack() # Ensure the correct next container for the SettingOverride decorator is set. if global_container_stack: multi_extrusion = global_container_stack.getProperty("machine_extruder_count", "value") > 1 @@ -144,15 +143,12 @@ class ThreeMFReader(MeshReader): if len(um_node.getChildren()) > 0: group_decorator = GroupDecorator() um_node.addDecorator(group_decorator) - um_node.setSelectable(True) - if um_node.getMeshData(): # Assuming that all nodes with mesh data are printable objects # affects (auto) slicing sliceable_decorator = SliceableObjectDecorator() um_node.addDecorator(sliceable_decorator) - return um_node def read(self, file_name): @@ -172,18 +168,10 @@ class ThreeMFReader(MeshReader): transform_matrix = Matrix() mesh_data = um_node.getMeshData() - if mesh_data is not None: extents = mesh_data.getExtents() center_vector = Vector(extents.center.x, extents.center.y, extents.center.z) - - # If the object in a saved project is below the bed, keep it that way - if extents.minimum.z < 0.0: - um_node.addDecorator(ZOffsetDecorator()) - um_node.callDecoration("setZOffset", extents.minimum.z) - transform_matrix.setByTranslation(center_vector) - transform_matrix.multiply(um_node.getLocalTransformation()) um_node.setTransformation(transform_matrix) @@ -207,7 +195,7 @@ class ThreeMFReader(MeshReader): translation_matrix.setByTranslation(translation_vector) transformation_matrix.multiply(translation_matrix) - # Third step: 3MF also defines a unit, whereas Cura always assumes mm. + # Third step: 3MF also defines a unit, wheras Cura always assumes mm. scale_matrix = Matrix() scale_matrix.setByScaleVector(self._getScaleFromUnit(self._unit)) transformation_matrix.multiply(scale_matrix) From 78987ba666c332920d7fea098a5388e342b099b6 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Thu, 21 Sep 2017 15:19:00 +0200 Subject: [PATCH 216/589] When tool icon can not be found in theme, try to find it in the plugin folder CURA-4345 --- resources/qml/Toolbar.qml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/resources/qml/Toolbar.qml b/resources/qml/Toolbar.qml index 0903c0555b..bc7905c527 100644 --- a/resources/qml/Toolbar.qml +++ b/resources/qml/Toolbar.qml @@ -34,7 +34,15 @@ Item Button { text: model.name - iconSource: UM.Theme.getIcon(model.icon); + iconSource: + { + var result = UM.Theme.getIcon(model.icon) + if(result == "") + { + return model.location + "/" + model.icon + } + return result + } checkable: true; checked: model.active; From bd6bb872b7cf8c7aac8e53ca14cd8da715e0f7e7 Mon Sep 17 00:00:00 2001 From: alekseisasin Date: Thu, 21 Sep 2017 15:24:40 +0200 Subject: [PATCH 217/589] Changed Quality slider CURA-4182 --- resources/qml/SidebarSimple.qml | 589 ++++++++++++++------------------ 1 file changed, 260 insertions(+), 329 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 9bd5c7590a..072b6d2ee7 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -40,74 +40,20 @@ Item // // Quality profile // - Text + Rectangle { - id: resolutionLabel - anchors.top: resolutionSlider.top - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - text: catalog.i18nc("@label", "Layer Height") - font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") - } - - Text - { - id: speedLabel - anchors.bottom: resolutionSlider.bottom - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - - text: catalog.i18nc("@label", "Print Speed") - font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") - } - - Text - { - id: speedLabelSlower - anchors.bottom: speedLabel.bottom - anchors.left: resolutionSlider.left - - text: catalog.i18nc("@label", "Slower") - font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") - horizontalAlignment: Text.AlignLeft - } - - Text - { - id: speedLabelFaster - anchors.bottom: speedLabel.bottom - anchors.right: resolutionSlider.right - - text: catalog.i18nc("@label", "Faster") - font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") - horizontalAlignment: Text.AlignRight - } - - Item - { - id: resolutionSlider - anchors.top: parent.top - anchors.left: infillCellRight.left - anchors.right: infillCellRight.right - - width: UM.Theme.getSize("sidebar").width * .55 - height: UM.Theme.getSize("quality_slider_bar").height * 25 - - property var model: Cura.ProfilesModel - - Connections - { - target: Cura.ProfilesModel - onItemsChanged: - { - resolutionSlider.updateCurrentQualityIndex(); - resolutionSlider.updateBar(); + Timer { + id: qualitySliderChangeTimer + interval: 50 + running: false + repeat: false + onTriggered: Cura.MachineManager.setActiveQuality(Cura.ProfilesModel.getItem(qualityRowSlider.value).id) } + + Component.onCompleted: + { + qualityRow.updateAvailableTotalTicks() } Connections @@ -115,287 +61,271 @@ Item target: Cura.MachineManager onActiveQualityChanged: { - resolutionSlider.updateCurrentQualityIndex(); - resolutionSlider.updateBar(); + qualityRow.updateAvailableTotalTicks() } } + /* Component.onCompleted: { updateCurrentQualityIndex(); updateBar(); } + */ - function updateCurrentQualityIndex() + id: qualityRow + + property var totalTicks: 0 + property var availableTotalTicks: 0 + property var qualitySliderStep: qualityRow.totalTicks != 0 ? (base.width * 0.55) / (qualityRow.totalTicks) : 0 + property var qualitySliderSelectedValue: 0 + + property var sliderAvailableMin : 0 + property var sliderAvailableMax : 0 + property var sliderMarginRight : 0 + + function updateAvailableTotalTicks() { - for (var i = 0; i < resolutionSlider.model.rowCount(); ++i) + qualityRow.totalTicks = Cura.ProfilesModel.rowCount() - 1 // minus one, because slider starts from 0 + + var availableMin = -1 + var availableMax = -1 + + for (var i = 0; i <= Cura.ProfilesModel.rowCount(); i++) { - if (Cura.MachineManager.activeQualityId == resolutionSlider.model.getItem(i).id) + //Find slider range, min and max value + if (availableMin == -1 && Cura.ProfilesModel.getItem(i).available) { - if (resolutionSlider.currentQualityIndex != i) + availableMin = i + availableMax = i + } + else if(Cura.ProfilesModel.getItem(i).available) + { + availableMax = i + } + + //Find selected value + if(Cura.MachineManager.activeQualityId == Cura.ProfilesModel.getItem(i).id) + { + qualitySliderSelectedValue = i + } + } + + if(availableMin !=-1) + { + availableTotalTicks = availableMax - availableMin + } + else + { + availableTotalTicks = -1 + } + + qualitySliderStep = qualityRow.totalTicks != 0 ? (base.width * 0.55) / (qualityRow.totalTicks) : 0 + + if(availableMin == -1) + { + sliderMarginRight = base.width * 0.55 + } + else if (availableMin == 0 && availableMax == 0) + { + sliderMarginRight = base.width * 0.55 + } + else if(availableMin == availableMax) + { + sliderMarginRight = (qualityRow.totalTicks - availableMin) * qualitySliderStep + } + else if(availableMin != availableMax) + { + sliderMarginRight = (qualityRow.totalTicks - availableMax) * qualitySliderStep + } + + + qualityRow.sliderAvailableMin = availableMin + qualityRow.sliderAvailableMax = availableMax + + //console.log("==>>FIND.availableMin: " + availableMin) + //console.log("==>>FIND.availableMax: " + availableMax) + //console.log("==>>FIND.qualitySliderSelectedValue: " + qualitySliderSelectedValue) + //console.log("==>>FIND.sliderMarginRightVALUE: "+ sliderMarginRight) + + } + + height: UM.Theme.getSize("sidebar_margin").height + + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width + anchors.right: parent.right + + Text + { + id: qualityRowTitle + text: catalog.i18nc("@label", "Layer Height") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + } + + //Show titles for the each quality slider ticks + Item + { + y: -5; + anchors.left: speedSlider.left + Repeater + { + model: qualityRow.totalTicks + 1 + Text + { + anchors.verticalCenter: parent.verticalCenter + anchors.top: parent.top + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height / 2 + color: UM.Theme.getColor("text") + text: { - resolutionSlider.currentQualityIndex = i; + return Cura.ProfilesModel.getItem(index).layer_height_without_unit } - return; - } - } - resolutionSlider.currentQualityIndex = undefined; - backgroundBarUpdateTimer.start(); - } - - function updateBar() - { - fullRangeMax = Cura.ProfilesModel.rowCount(); - - // set avaiableMin - var foundAvaiableMin = false; - for (var i = 0; i < Cura.ProfilesModel.rowCount(); ++i) - { - if (Cura.ProfilesModel.getItem(i).available) - { - avaiableMin = i; - foundAvaiableMin = true; - break; - } - } - if (!foundAvaiableMin) - { - avaiableMin = undefined; - } - - var foundAvaiableMax = false; - for (var i = Cura.ProfilesModel.rowCount() - 1; i >= 0; --i) - { - if (Cura.ProfilesModel.getItem(i).available) - { - avaiableMax = i; - foundAvaiableMax = true; - break; - } - } - if (!foundAvaiableMax) - { - avaiableMax = undefined; - } - - currentHover = undefined; - backgroundBar.requestPaint(); - } - - property var fullRangeMin: 0 - property var fullRangeMax: model.rowCount() - - property var avaiableMin - property var avaiableMax - property var currentQualityIndex - property var currentHover - - //TODO: get from theme - property var barLeftRightMargin: 5 - property var tickLeftRightMargin: 2 - property var tickMargin: 15 - property var tickThickness: 1 - property var tickWidth: 1 - property var tickHeight: 5 - property var tickTextHeight: 8 - property var totalTickCount: fullRangeMax - fullRangeMin - property var selectedCircleDiameter: 10 - - property var showQualityText: false - - property var tickStepSize: (width - (barLeftRightMargin + tickLeftRightMargin) * 2) / (totalTickCount > 1 ? totalTickCount - 1 : 1) - property var tickAreaList: - { - var area_list = []; - if (avaiableMin != undefined && avaiableMax != undefined) - { - for (var i = avaiableMin; i <= avaiableMax; ++i) - { - var start_x = (barLeftRightMargin + tickLeftRightMargin) + tickStepSize * (i - fullRangeMin); - var diameter = tickStepSize * 0.9; - start_x = start_x + tickWidth / 2 - (diameter / 2); - var end_x = start_x + diameter; - var start_y = height / 2 - diameter / 2; - var end_y = start_y + diameter; - - var area = {"id": i, - "start_x": start_x, "end_x": end_x, - "start_y": start_y, "end_y": end_y, - }; - area_list.push(area); - } - } - return area_list; - } - - onCurrentHoverChanged: - { - backgroundBar.requestPaint(); - } - onCurrentQualityIndex: - { - backgroundBar.requestPaint(); - } - - // background bar - Canvas - { - id: backgroundBar - anchors.fill: parent - - Timer { - id: backgroundBarUpdateTimer - interval: 10 - running: false - repeat: false - onTriggered: backgroundBar.requestPaint() - } - - onPaint: - { - var ctx = getContext("2d"); - ctx.reset(); - ctx.fillStyle = UM.Theme.getColor("quality_slider_unavailable"); - - const bar_left_right_margin = resolutionSlider.barLeftRightMargin; - const tick_left_right_margin = resolutionSlider.tickLeftRightMargin; - const tick_margin = resolutionSlider.tickMargin; - const bar_thickness = resolutionSlider.tickThickness; - const tick_width = resolutionSlider.tickWidth; - const tick_height = resolutionSlider.tickHeight; - const tick_text_height = resolutionSlider.tickTextHeight; - const selected_circle_diameter = resolutionSlider.selectedCircleDiameter; - - // draw unavailable bar - const bar_top = parent.height / 2 - bar_thickness / 2; - ctx.fillRect(bar_left_right_margin, bar_top, width - bar_left_right_margin * 2, bar_thickness); - - // draw unavailable ticks - var total_tick_count = resolutionSlider.totalTickCount; - const step_size = resolutionSlider.tickStepSize; - var current_start_x = bar_left_right_margin + tick_left_right_margin; - - const tick_top = parent.height / 2 - tick_height / 2; - - for (var i = 0; i < total_tick_count; ++i) - { - ctx.fillRect(current_start_x, tick_top, tick_width, tick_height); - current_start_x += step_size; - } - - // draw available bar and ticks - if (resolutionSlider.avaiableMin != undefined && resolutionSlider.avaiableMax != undefined) - { - current_start_x = (bar_left_right_margin + tick_left_right_margin) + step_size * (resolutionSlider.avaiableMin - resolutionSlider.fullRangeMin); - ctx.fillStyle = UM.Theme.getColor("quality_slider_available"); - total_tick_count = resolutionSlider.avaiableMax - resolutionSlider.avaiableMin + 1; - - const available_bar_width = step_size * (total_tick_count - 1); - ctx.fillRect(current_start_x, bar_top, available_bar_width, bar_thickness); - - for (var i = 0; i < total_tick_count; ++i) + width: 1 + x: { - ctx.fillRect(current_start_x, tick_top, tick_width, tick_height); - current_start_x += step_size; + if(index != qualityRow.totalTicks) + return (base.width * 0.55 / qualityRow.totalTicks) * index; + else + return (base.width * 0.55 / qualityRow.totalTicks) * index - 15; } } + } + } - // print the selected circle - if (resolutionSlider.currentQualityIndex != undefined) - { - var circle_start_x = (bar_left_right_margin + tick_left_right_margin) + step_size * (resolutionSlider.currentQualityIndex - resolutionSlider.fullRangeMin); - circle_start_x = circle_start_x + tick_width / 2 - selected_circle_diameter / 2; - var circle_start_y = height / 2 - selected_circle_diameter / 2; - ctx.fillStyle = UM.Theme.getColor("quality_slider_handle"); - ctx.beginPath(); - ctx.ellipse(circle_start_x, circle_start_y, selected_circle_diameter, selected_circle_diameter); - ctx.fill(); - ctx.closePath(); - } + //Print speed slider + Item + { + id: speedSlider + width: base.width * 0.55 + height: UM.Theme.getSize("sidebar_margin").height + anchors.right: parent.right + anchors.top: parent.top + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height - // print the hovered circle - if (resolutionSlider.currentHover != undefined && resolutionSlider.currentHover != resolutionSlider.currentQualityIndex) - { - var circle_start_x = (bar_left_right_margin + tick_left_right_margin) + step_size * (resolutionSlider.currentHover - resolutionSlider.fullRangeMin); - circle_start_x = circle_start_x + tick_width / 2 - selected_circle_diameter / 2; - var circle_start_y = height / 2 - selected_circle_diameter / 2; - ctx.fillStyle = UM.Theme.getColor("quality_slider_handle_hover"); - ctx.beginPath(); - ctx.ellipse(circle_start_x, circle_start_y, selected_circle_diameter, selected_circle_diameter); - ctx.fill(); - ctx.closePath(); - } + // Draw Unavailable line + Rectangle + { + id: groovechildrect + width: base.width * 0.55 + height: 2 + color: UM.Theme.getColor("quality_slider_unavailable") + //radius: parent.radius + y: 9 + x: 0 + } - // print layer height texts - total_tick_count = resolutionSlider.totalTickCount; - const step_size = resolutionSlider.tickStepSize; - current_start_x = bar_left_right_margin + tick_left_right_margin; - for (var i = 0; i < total_tick_count; ++i) - { - const text_top = parent.height / 2 - tick_height - tick_text_height; - ctx.fillStyle = UM.Theme.getColor("quality_slider_text"); - - ctx.font = "12px sans-serif"; - const string_length = resolutionSlider.model.getItem(i).layer_height_without_unit.length; - const offset = string_length / 2 * 4; - - var start_x = current_start_x - offset; - if (i == 0) - { - start_x = 0; - } - else if (i == total_tick_count - 1) - { - start_x = current_start_x - offset * 2.5; - } - - ctx.fillText(resolutionSlider.model.getItem(i).layer_height_without_unit, start_x, text_top); - current_start_x += step_size; + // Draw ticks + Repeater + { + id: qualityRepeater + model: qualityRow.totalTicks + 1 + Rectangle { + anchors.verticalCenter: parent.verticalCenter + color: qualityRow.availableTotalTicks != 0 ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") + width: 1 + height: 6 + y: 0 + x: qualityRow.qualitySliderStep * index } } - MouseArea + + Slider { - anchors.fill: parent - hoverEnabled: true - onClicked: + id: qualityRowSlider + height: UM.Theme.getSize("sidebar_margin").height + anchors.bottom: speedSlider.bottom + enabled: qualityRow.availableTotalTicks != 0 + updateValueWhileDragging : false + + minimumValue: qualityRow.sliderAvailableMin + maximumValue: qualityRow.sliderAvailableMax + stepSize: 1 + + value: qualityRow.qualitySliderSelectedValue + + width:{ + return qualityRow.qualitySliderStep * (qualityRow.availableTotalTicks) + } + + anchors.right: parent.right + anchors.rightMargin:{ + return qualityRow.sliderMarginRight + } + + style: SliderStyle { - for (var i = 0; i < resolutionSlider.tickAreaList.length; ++i) - { - var area = resolutionSlider.tickAreaList[i]; - if (area.start_x <= mouseX && mouseX <= area.end_x && area.start_y <= mouseY && mouseY <= area.end_y) - { - resolutionSlider.currentHover = undefined; - resolutionSlider.currentQualityIndex = area.id; - - Cura.MachineManager.setActiveQuality(resolutionSlider.model.getItem(resolutionSlider.currentQualityIndex).id); - return; + //Draw Available line + groove: Rectangle { + implicitHeight: 2 + color: UM.Theme.getColor("quality_slider_available") + radius: 1 + } + handle: Item { + Rectangle { + id: qualityhandleButton + anchors.centerIn: parent + color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") + implicitWidth: 10 + implicitHeight: 10 + radius: 10 } } - resolutionSlider.currentHover = undefined; } - onPositionChanged: - { - for (var i = 0; i < resolutionSlider.tickAreaList.length; ++i) + + onValueChanged: { + + //Prevent updating during view initializing. Trigger only if the value changed by user + if(qualityRowSlider.value != qualityRow.qualitySliderSelectedValue) { - var area = resolutionSlider.tickAreaList[i]; - if (area.start_x <= mouseX && mouseX <= area.end_x && area.start_y <= mouseY && mouseY <= area.end_y) - { - resolutionSlider.currentHover = area.id; - return; - } + //start updating with short delay + qualitySliderChangeTimer.start(); } - resolutionSlider.currentHover = undefined; - } - onExited: - { - resolutionSlider.currentHover = undefined; } } } + + Text + { + id: speedLabel + anchors.top: speedSlider.bottom + + anchors.left: parent.left + + text: catalog.i18nc("@label", "Print Speed") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + } + + Text + { + anchors.bottom: speedLabel.bottom + anchors.left: speedSlider.left + + text: catalog.i18nc("@label", "Slower") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + horizontalAlignment: Text.AlignLeft + } + + Text + { + anchors.bottom: speedLabel.bottom + anchors.right: speedSlider.right + + text: catalog.i18nc("@label", "Faster") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + horizontalAlignment: Text.AlignRight + } } + + // // Infill // @@ -403,12 +333,11 @@ Item { id: infillCellLeft - anchors.top: speedLabel.bottom + anchors.top: qualityRow.bottom anchors.topMargin: UM.Theme.getSize("sidebar_margin").height anchors.left: parent.left width: UM.Theme.getSize("sidebar").width * .45 - UM.Theme.getSize("sidebar_margin").width - height: UM.Theme.getSize("sidebar_margin").height Text { @@ -418,12 +347,14 @@ Item color: UM.Theme.getColor("text") anchors.top: parent.top - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 1.7 anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width } } + + Item { id: infillCellRight @@ -438,7 +369,7 @@ Item Text { id: selectedInfillRateText - anchors.top: parent.top + //anchors.top: parent.top anchors.left: infillSlider.left anchors.leftMargin: (infillSlider.value / infillSlider.stepSize) * (infillSlider.width / (infillSlider.maximumValue / infillSlider.stepSize)) - 10 anchors.right: parent.right @@ -455,10 +386,9 @@ Item anchors.top: selectedInfillRateText.bottom anchors.left: parent.left - anchors.right: infillIcon.left - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width height: UM.Theme.getSize("sidebar_margin").height + width: infillCellRight.width - UM.Theme.getSize("sidebar_margin").width - style.handleWidth minimumValue: 0 maximumValue: 100 @@ -477,6 +407,7 @@ Item style: SliderStyle { + groove: Rectangle { id: groove implicitWidth: 200 @@ -485,13 +416,15 @@ Item radius: 1 } - handle: Rectangle { - id: handleButton - anchors.centerIn: parent - color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - implicitWidth: 10 - implicitHeight: 10 - radius: 10 + handle: Item { + Rectangle { + id: handleButton + anchors.centerIn: parent + color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") + implicitWidth: 10 + implicitHeight: 10 + radius: 10 + } } tickmarks: Repeater { @@ -511,8 +444,6 @@ Item Item { - id: infillIcon - width: (infillCellRight.width / 5) - (UM.Theme.getSize("sidebar_margin").width) height: width @@ -549,6 +480,7 @@ Item visible: infillIconList.activeIndex == index UM.RecolorImage { + id: infillIcon anchors.fill: parent sourceSize.width: width sourceSize.height: width @@ -602,7 +534,6 @@ Item text: catalog.i18nc("@label", "Enable gradual") font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") - elide: Text.ElideRight } } @@ -659,8 +590,8 @@ Item id: enableSupportLabel visible: enableSupportCheckBox.visible - anchors.top: enableSupportCheckBox.top - + anchors.top: infillCellRight.bottom + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width anchors.verticalCenter: enableSupportCheckBox.verticalCenter @@ -676,7 +607,7 @@ Item property alias _hovered: enableSupportMouseArea.containsMouse anchors.top: infillCellRight.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 2 + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height anchors.left: infillCellRight.left style: UM.Theme.styles.checkbox; From f7d14c5b7f0d2471cbbc2959ca88ce45e7a5cb09 Mon Sep 17 00:00:00 2001 From: Mark Date: Thu, 21 Sep 2017 16:08:46 +0200 Subject: [PATCH 218/589] dont disappear when click on splashscreen CURA-4343 --- cura/CuraSplashScreen.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index 4fc81e815f..eedf1e3d53 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -41,6 +41,10 @@ class CuraSplashScreen(QSplashScreen): self._loading_image_rotation_angle -= 10 self.repaint() + # Override the mousePressEvent so the splashscreen doesn't disappear when clicked + def mousePressEvent(self, mouse_event): + pass + def drawContents(self, painter): if self._to_stop: return From e73e218c4e68e9b8554125c300099af77b25e14b Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Thu, 21 Sep 2017 16:28:50 +0200 Subject: [PATCH 219/589] Detecting whether the profile is created for multiple extrusion printers or not - CURA-4327 --- cura/QualityManager.py | 4 +--- cura/Settings/QualityAndUserProfilesModel.py | 13 +++++++++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/cura/QualityManager.py b/cura/QualityManager.py index 813d23ea13..c0b5afb71e 100644 --- a/cura/QualityManager.py +++ b/cura/QualityManager.py @@ -61,8 +61,6 @@ class QualityManager: machine_definition = global_stack.definition result = self.findAllQualityChangesForMachine(machine_definition) - for extruder in self.findAllExtruderDefinitionsForMachine(machine_definition): - result.extend(self.findAllQualityChangesForExtruder(extruder)) result = [quality_change for quality_change in result if quality_change.getName() == quality_changes_name] return result @@ -151,7 +149,7 @@ class QualityManager: else: definition_id = "fdmprinter" - filter_dict = { "type": "quality_changes", "extruder": None, "definition": definition_id } + filter_dict = { "type": "quality_changes", "definition": definition_id } quality_changes_list = ContainerRegistry.getInstance().findInstanceContainers(**filter_dict) return quality_changes_list diff --git a/cura/Settings/QualityAndUserProfilesModel.py b/cura/Settings/QualityAndUserProfilesModel.py index b6ac3fb6d0..1fa45a5902 100644 --- a/cura/Settings/QualityAndUserProfilesModel.py +++ b/cura/Settings/QualityAndUserProfilesModel.py @@ -25,21 +25,30 @@ class QualityAndUserProfilesModel(ProfilesModel): machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.getBottom()) quality_changes_list = quality_manager.findAllQualityChangesForMachine(machine_definition) + # Detecting if the machine has multiple extrusion + multiple_extrusion = False # Get the list of extruders and place the selected extruder at the front of the list. extruder_manager = ExtruderManager.getInstance() active_extruder = extruder_manager.getActiveExtruderStack() extruder_stacks = extruder_manager.getActiveExtruderStacks() if active_extruder in extruder_stacks: + multiple_extrusion = True extruder_stacks.remove(active_extruder) extruder_stacks = [active_extruder] + extruder_stacks # Fetch the list of useable qualities across all extruders. # The actual list of quality profiles come from the first extruder in the extruder list. - quality_list = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, + quality_list = quality_manager.findAllUsableQualitiesForMachineAndExtruders(global_container_stack, extruder_stacks) # Filter the quality_change by the list of available quality_types quality_type_set = set([x.getMetaDataEntry("quality_type") for x in quality_list]) - filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set and qc.getMetaDataEntry("extruder") is None] + + if multiple_extrusion: + # If the printer has multiple extruders then quality changes related to the current extruder are kept + filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set and qc.getMetaDataEntry("extruder") == active_extruder.definition.getId()] + else: + # If not, the quality changes of the global stack are selected + filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set] return quality_list + filtered_quality_changes From ecafa248884cf27399f0bd82720def2c4bd633c6 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Thu, 21 Sep 2017 17:35:12 +0200 Subject: [PATCH 220/589] code cleanup --- cura/Settings/ProfilesModel.py | 1 + resources/qml/SidebarSimple.qml | 21 +++++++++------------ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py index 4df362cdef..e39ed949b0 100644 --- a/cura/Settings/ProfilesModel.py +++ b/cura/Settings/ProfilesModel.py @@ -75,6 +75,7 @@ class ProfilesModel(InstanceContainersModel): # The actual list of quality profiles come from the first extruder in the extruder list. result = QualityManager.getInstance().findAllQualitiesForMachineAndMaterials(global_stack_definition, materials) + for quality in QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders( global_container_stack, extruder_stacks): if quality not in result: diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 76bfe6a8c2..ff2339371c 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -179,10 +179,8 @@ Item anchors.top: parent.top anchors.topMargin: UM.Theme.getSize("sidebar_margin").height / 2 color: UM.Theme.getColor("text") - text: - { - return Cura.ProfilesModel.getItem(index).layer_height_without_unit - } + text: Cura.ProfilesModel.getItem(index).layer_height_without_unit + width: 1 x: { @@ -213,7 +211,7 @@ Item height: 2 color: UM.Theme.getColor("quality_slider_unavailable") //radius: parent.radius - y: 9 + y: 8.5 x: 0 } @@ -248,14 +246,10 @@ Item value: qualityRow.qualitySliderSelectedValue - width:{ - return qualityRow.qualitySliderStep * (qualityRow.availableTotalTicks) - } + width: qualityRow.qualitySliderStep * (qualityRow.availableTotalTicks) anchors.right: parent.right - anchors.rightMargin:{ - return qualityRow.sliderMarginRight - } + anchors.rightMargin: qualityRow.sliderMarginRight style: SliderStyle { @@ -265,6 +259,7 @@ Item color: UM.Theme.getColor("quality_slider_available") radius: 1 } + handle: Item { Rectangle { id: qualityhandleButton @@ -334,7 +329,7 @@ Item id: infillCellLeft anchors.top: qualityRow.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 2 anchors.left: parent.left width: UM.Theme.getSize("sidebar").width * .45 - UM.Theme.getSize("sidebar_margin").width @@ -386,6 +381,8 @@ Item anchors.top: selectedInfillRateText.bottom anchors.left: parent.left + anchors.right: infillIcon.left + anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width height: UM.Theme.getSize("sidebar_margin").height width: infillCellRight.width - UM.Theme.getSize("sidebar_margin").width - style.handleWidth From 7c462f57038447269505363848acc986bd5a8855 Mon Sep 17 00:00:00 2001 From: alekseisasin Date: Thu, 21 Sep 2017 17:36:12 +0200 Subject: [PATCH 221/589] After loading a model from a project Y position is ignored CURA-4269 --- plugins/3MFReader/ThreeMFReader.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index 93a8dc1c65..c264c381f8 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -17,6 +17,7 @@ from cura.Settings.ExtruderManager import ExtruderManager from cura.QualityManager import QualityManager from UM.Scene.SceneNode import SceneNode from cura.SliceableObjectDecorator import SliceableObjectDecorator +from cura.ZOffsetDecorator import ZOffsetDecorator MYPY = False @@ -195,7 +196,7 @@ class ThreeMFReader(MeshReader): translation_matrix.setByTranslation(translation_vector) transformation_matrix.multiply(translation_matrix) - # Third step: 3MF also defines a unit, wheras Cura always assumes mm. + # Third step: 3MF also defines a unit, whereas Cura always assumes mm. scale_matrix = Matrix() scale_matrix.setByScaleVector(self._getScaleFromUnit(self._unit)) transformation_matrix.multiply(scale_matrix) @@ -203,6 +204,11 @@ class ThreeMFReader(MeshReader): # Pre multiply the transformation with the loaded transformation, so the data is handled correctly. um_node.setTransformation(um_node.getLocalTransformation().preMultiply(transformation_matrix)) + # If the object in a saved project is below the bed, keep it that way + if um_node.getMeshData() != None and um_node.getMeshData().getExtents(um_node.getWorldTransformation()).minimum.y < 0: + um_node.addDecorator(ZOffsetDecorator()) + um_node.callDecoration("setZOffset",um_node.getMeshData().getExtents(um_node.getWorldTransformation()).minimum.y) + result.append(um_node) except Exception: From 879b3df816a88373f64d85cd9b01fba64f0cac7b Mon Sep 17 00:00:00 2001 From: Aleksei Sasin Date: Thu, 21 Sep 2017 21:20:54 +0200 Subject: [PATCH 222/589] On Windows platform the qualitys slider is properly aligned CURA-4182 --- resources/qml/SidebarSimple.qml | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index ff2339371c..c91c1fcb93 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -53,7 +53,7 @@ Item Component.onCompleted: { - qualityRow.updateAvailableTotalTicks() + qualityRow.updateQualitySliderProperties() } Connections @@ -61,17 +61,10 @@ Item target: Cura.MachineManager onActiveQualityChanged: { - qualityRow.updateAvailableTotalTicks() + qualityRow.updateQualitySliderProperties() } } - /* - Component.onCompleted: - { - updateCurrentQualityIndex(); - updateBar(); - } - */ id: qualityRow @@ -84,7 +77,7 @@ Item property var sliderAvailableMax : 0 property var sliderMarginRight : 0 - function updateAvailableTotalTicks() + function updateQualitySliderProperties() { qualityRow.totalTicks = Cura.ProfilesModel.rowCount() - 1 // minus one, because slider starts from 0 @@ -142,12 +135,6 @@ Item qualityRow.sliderAvailableMin = availableMin qualityRow.sliderAvailableMax = availableMax - - //console.log("==>>FIND.availableMin: " + availableMin) - //console.log("==>>FIND.availableMax: " + availableMax) - //console.log("==>>FIND.qualitySliderSelectedValue: " + qualitySliderSelectedValue) - //console.log("==>>FIND.sliderMarginRightVALUE: "+ sliderMarginRight) - } height: UM.Theme.getSize("sidebar_margin").height @@ -211,7 +198,7 @@ Item height: 2 color: UM.Theme.getColor("quality_slider_unavailable") //radius: parent.radius - y: 8.5 + anchors.verticalCenter: qualityRowSlider.verticalCenter x: 0 } @@ -256,13 +243,14 @@ Item //Draw Available line groove: Rectangle { implicitHeight: 2 + anchors.verticalCenter: qualityRowSlider.verticalCenter color: UM.Theme.getColor("quality_slider_available") radius: 1 } - handle: Item { Rectangle { id: qualityhandleButton + anchors.verticalCenter: qualityRowSlider.verticalCenter anchors.centerIn: parent color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") implicitWidth: 10 From d2de039371f3b1ebc0e45637972fcdb5397c13e9 Mon Sep 17 00:00:00 2001 From: Mark Date: Thu, 21 Sep 2017 16:08:46 +0200 Subject: [PATCH 223/589] dont disappear when click on splashscreen CURA-4343 --- cura/CuraSplashScreen.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index 4fc81e815f..eedf1e3d53 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -41,6 +41,10 @@ class CuraSplashScreen(QSplashScreen): self._loading_image_rotation_angle -= 10 self.repaint() + # Override the mousePressEvent so the splashscreen doesn't disappear when clicked + def mousePressEvent(self, mouse_event): + pass + def drawContents(self, painter): if self._to_stop: return From e7e24caf97851f999c807fc88e9588fbd42108b2 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Sep 2017 09:31:11 +0200 Subject: [PATCH 224/589] CURA-4269 small code improvement for z-offset in project loading --- plugins/3MFReader/ThreeMFReader.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index c264c381f8..283a685498 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -204,10 +204,11 @@ class ThreeMFReader(MeshReader): # Pre multiply the transformation with the loaded transformation, so the data is handled correctly. um_node.setTransformation(um_node.getLocalTransformation().preMultiply(transformation_matrix)) - # If the object in a saved project is below the bed, keep it that way - if um_node.getMeshData() != None and um_node.getMeshData().getExtents(um_node.getWorldTransformation()).minimum.y < 0: + # Check if the model is positioned below the build plate and honor that when loading project files. + if um_node.getMeshData() is not None: + z_offset_value = um_node.getMeshData().getExtents(um_node.getWorldTransformation()).minimum.y um_node.addDecorator(ZOffsetDecorator()) - um_node.callDecoration("setZOffset",um_node.getMeshData().getExtents(um_node.getWorldTransformation()).minimum.y) + um_node.callDecoration("setZOffset", z_offset_value) result.append(um_node) From 21ea99d9f2c77242c17ee35317f403b23597343c Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Sep 2017 09:34:24 +0200 Subject: [PATCH 225/589] CURA-4269 small code improvement for z-offset in project loading --- plugins/3MFReader/ThreeMFReader.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index 283a685498..57b3b9e0fd 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -206,9 +206,10 @@ class ThreeMFReader(MeshReader): # Check if the model is positioned below the build plate and honor that when loading project files. if um_node.getMeshData() is not None: - z_offset_value = um_node.getMeshData().getExtents(um_node.getWorldTransformation()).minimum.y - um_node.addDecorator(ZOffsetDecorator()) - um_node.callDecoration("setZOffset", z_offset_value) + minimum_z_value = um_node.getMeshData().getExtents(um_node.getWorldTransformation()).minimum.y # y is z in transformation coordinates + if minimum_z_value < 0: + um_node.addDecorator(ZOffsetDecorator()) + um_node.callDecoration("setZOffset", minimum_z_value) result.append(um_node) From ab8bcc4ae38564c16b45bf40cd06983e5fa31cbf Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Sep 2017 09:51:59 +0200 Subject: [PATCH 226/589] small code fixes --- cura/Settings/ProfilesModel.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py index e39ed949b0..c1f41c58d2 100644 --- a/cura/Settings/ProfilesModel.py +++ b/cura/Settings/ProfilesModel.py @@ -110,12 +110,11 @@ class ProfilesModel(InstanceContainersModel): # active machine and material, and later yield the right ones. tmp_all_quality_items = OrderedDict() for item in super()._recomputeItems(): - profile = container_registry.findContainers(id = item["id"]) + profile = container_registry.findContainers(id=item["id"]) quality_type = profile[0].getMetaDataEntry("quality_type") if profile else "" if quality_type not in tmp_all_quality_items: - tmp_all_quality_items[quality_type] = {"suitable_container": None, - "all_containers": []} + tmp_all_quality_items[quality_type] = {"suitable_container": None, "all_containers": []} tmp_all_quality_items[quality_type]["all_containers"].append(item) if tmp_all_quality_items[quality_type]["suitable_container"] is None and profile[0] in qualities: @@ -142,9 +141,9 @@ class ProfilesModel(InstanceContainersModel): # Now all the containers are set for item in containers: - profile = container_registry.findContainers(id = item["id"]) + profile = container_registry.findContainers(id=item["id"]) if not profile: - item["layer_height"] = "" #Can't update a profile that is unknown. + item["layer_height"] = "" # Can't update a profile that is unknown. item["available"] = False yield item continue @@ -152,13 +151,13 @@ class ProfilesModel(InstanceContainersModel): profile = profile[0] item["available"] = profile in qualities - #Easy case: This profile defines its own layer height. + # Easy case: This profile defines its own layer height. if profile.hasProperty("layer_height", "value"): self._setItemLayerHeight(item, profile.getProperty("layer_height", "value"), unit) yield item continue - #Quality-changes profile that has no value for layer height. Get the corresponding quality profile and ask that profile. + # Quality-changes profile that has no value for layer height. Get the corresponding quality profile and ask that profile. quality_type = profile.getMetaDataEntry("quality_type", None) if quality_type: quality_results = machine_manager.determineQualityAndQualityChangesForQualityType(quality_type) From 7f909df84a7fa3014046a3336a37f897461a5678 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Sep 2017 11:04:46 +0200 Subject: [PATCH 227/589] CURA-4182 refactor quality slider to use model for updating --- resources/qml/SidebarSimple.qml | 246 +++++++++++++++----------------- 1 file changed, 119 insertions(+), 127 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index c91c1fcb93..3347f56f43 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -40,110 +40,111 @@ Item // // Quality profile // - Rectangle + Item { - - Timer { - id: qualitySliderChangeTimer - interval: 50 - running: false - repeat: false - onTriggered: Cura.MachineManager.setActiveQuality(Cura.ProfilesModel.getItem(qualityRowSlider.value).id) - } - - Component.onCompleted: - { - qualityRow.updateQualitySliderProperties() - } - - Connections - { - target: Cura.MachineManager - onActiveQualityChanged: - { - qualityRow.updateQualitySliderProperties() - } - } - - id: qualityRow - property var totalTicks: 0 - property var availableTotalTicks: 0 - property var qualitySliderStep: qualityRow.totalTicks != 0 ? (base.width * 0.55) / (qualityRow.totalTicks) : 0 - property var qualitySliderSelectedValue: 0 - - property var sliderAvailableMin : 0 - property var sliderAvailableMax : 0 - property var sliderMarginRight : 0 - - function updateQualitySliderProperties() - { - qualityRow.totalTicks = Cura.ProfilesModel.rowCount() - 1 // minus one, because slider starts from 0 - - var availableMin = -1 - var availableMax = -1 - - for (var i = 0; i <= Cura.ProfilesModel.rowCount(); i++) - { - //Find slider range, min and max value - if (availableMin == -1 && Cura.ProfilesModel.getItem(i).available) - { - availableMin = i - availableMax = i - } - else if(Cura.ProfilesModel.getItem(i).available) - { - availableMax = i - } - - //Find selected value - if(Cura.MachineManager.activeQualityId == Cura.ProfilesModel.getItem(i).id) - { - qualitySliderSelectedValue = i - } - } - - if(availableMin !=-1) - { - availableTotalTicks = availableMax - availableMin - } - else - { - availableTotalTicks = -1 - } - - qualitySliderStep = qualityRow.totalTicks != 0 ? (base.width * 0.55) / (qualityRow.totalTicks) : 0 - - if(availableMin == -1) - { - sliderMarginRight = base.width * 0.55 - } - else if (availableMin == 0 && availableMax == 0) - { - sliderMarginRight = base.width * 0.55 - } - else if(availableMin == availableMax) - { - sliderMarginRight = (qualityRow.totalTicks - availableMin) * qualitySliderStep - } - else if(availableMin != availableMax) - { - sliderMarginRight = (qualityRow.totalTicks - availableMax) * qualitySliderStep - } - - - qualityRow.sliderAvailableMin = availableMin - qualityRow.sliderAvailableMax = availableMax - } - height: UM.Theme.getSize("sidebar_margin").height - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width anchors.right: parent.right + Timer + { + id: qualitySliderChangeTimer + interval: 50 + running: false + repeat: false + onTriggered: Cura.MachineManager.setActiveQuality(Cura.ProfilesModel.getItem(qualitySlider.value).id) + } + + Component.onCompleted: qualityModel.update() + + Connections + { + target: Cura.MachineManager + onActiveQualityChanged: qualityModel.update() + } + + ListModel + { + id: qualityModel + + property var totalTicks: 0 + property var availableTotalTicks: 0 + property var qualitySliderStepWidth: qualityModel.totalTicks != 0 ? (base.width * 0.55) / (qualityModel.totalTicks) : 0 + property var activeQualityId: 0 + + property var sliderAvailableMin : 0 + property var sliderAvailableMax : 0 + property var sliderMarginRight : 0 + + function update () { + qualityModel.clear() + + qualityModel.totalTicks = Cura.ProfilesModel.rowCount() - 1 // minus one, because slider starts from 0 + + var availableMin = -1 + var availableMax = -1 + + for (var i = 0; i <= Cura.ProfilesModel.rowCount(); i++) { + var qualityItem = Cura.ProfilesModel.getItem(i) + + // Add each quality item to the UI quality model + qualityModel.append(qualityItem) + + // Find slider range, min and max value + if (qualityItem.available && availableMin == -1) { + availableMin = i + availableMax = i + } else if (qualityItem.available) { + availableMax = i + } + + // Find selected value + if(Cura.MachineManager.activeQualityId == qualityItem.id) { + qualityModel.activeQualityId = i + } + } + + if (availableMin != -1) { + qualityModel.availableTotalTicks = availableMax - availableMin + } else { + qualityModel.availableTotalTicks = -1 + } + + calculateSliderStepWidth(qualityModel.totalTicks) + calculateSliderMargins(availableMin, availableMax) + + qualityModel.sliderAvailableMin = availableMin + qualityModel.sliderAvailableMax = availableMax + } + + function calculateSliderStepWidth (totalTicks) { + qualityModel.qualitySliderStepWidth = totalTicks != 0 ? (base.width * 0.55) / (totalTicks) : 0 + } + + function calculateSliderMargins (availableMin, availableMax) { + if(availableMin == -1) + { + qualityModel.sliderMarginRight = base.width * 0.55 + } + else if (availableMin == 0 && availableMax == 0) + { + qualityModel.sliderMarginRight = base.width * 0.55 + } + else if(availableMin == availableMax) + { + qualityModel.sliderMarginRight = (qualityModel.totalTicks - availableMin) * qualitySliderStepWidth + } + else if(availableMin != availableMax) + { + qualityModel.sliderMarginRight = (qualityModel.totalTicks - availableMax) * qualitySliderStepWidth + } + } + } + Text { id: qualityRowTitle @@ -159,7 +160,8 @@ Item anchors.left: speedSlider.left Repeater { - model: qualityRow.totalTicks + 1 + model: qualityModel + Text { anchors.verticalCenter: parent.verticalCenter @@ -167,15 +169,8 @@ Item anchors.topMargin: UM.Theme.getSize("sidebar_margin").height / 2 color: UM.Theme.getColor("text") text: Cura.ProfilesModel.getItem(index).layer_height_without_unit - width: 1 - x: - { - if(index != qualityRow.totalTicks) - return (base.width * 0.55 / qualityRow.totalTicks) * index; - else - return (base.width * 0.55 / qualityRow.totalTicks) * index - 15; - } + x: (index != qualityModel.totalTicks) ? (base.width * 0.55 / qualityModel.totalTicks) * index : (base.width * 0.55 / qualityModel.totalTicks) * index - 15 } } } @@ -197,8 +192,7 @@ Item width: base.width * 0.55 height: 2 color: UM.Theme.getColor("quality_slider_unavailable") - //radius: parent.radius - anchors.verticalCenter: qualityRowSlider.verticalCenter + anchors.verticalCenter: qualitySlider.verticalCenter x: 0 } @@ -206,51 +200,52 @@ Item Repeater { id: qualityRepeater - model: qualityRow.totalTicks + 1 - Rectangle { + model: qualityModel + + Rectangle + { anchors.verticalCenter: parent.verticalCenter - color: qualityRow.availableTotalTicks != 0 ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") + color: qualityModel.count > 1 ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") width: 1 height: 6 y: 0 - x: qualityRow.qualitySliderStep * index + x: qualityModel.qualitySliderStepWidth * index } } Slider { - - id: qualityRowSlider + id: qualitySlider height: UM.Theme.getSize("sidebar_margin").height anchors.bottom: speedSlider.bottom - enabled: qualityRow.availableTotalTicks != 0 + enabled: qualityModel.availableTotalTicks > 0 updateValueWhileDragging : false - minimumValue: qualityRow.sliderAvailableMin - maximumValue: qualityRow.sliderAvailableMax + minimumValue: qualityModel.sliderAvailableMin + maximumValue: qualityModel.sliderAvailableMax stepSize: 1 - value: qualityRow.qualitySliderSelectedValue + value: qualityModel.activeQualityId - width: qualityRow.qualitySliderStep * (qualityRow.availableTotalTicks) + width: qualityModel.qualitySliderStepWidth * qualityModel.availableTotalTicks anchors.right: parent.right - anchors.rightMargin: qualityRow.sliderMarginRight + anchors.rightMargin: qualityModel.sliderMarginRight style: SliderStyle { //Draw Available line groove: Rectangle { implicitHeight: 2 - anchors.verticalCenter: qualityRowSlider.verticalCenter + anchors.verticalCenter: qualitySlider.verticalCenter color: UM.Theme.getColor("quality_slider_available") radius: 1 } handle: Item { Rectangle { id: qualityhandleButton - anchors.verticalCenter: qualityRowSlider.verticalCenter + anchors.verticalCenter: qualitySlider.verticalCenter anchors.centerIn: parent color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") implicitWidth: 10 @@ -261,12 +256,9 @@ Item } onValueChanged: { - - //Prevent updating during view initializing. Trigger only if the value changed by user - if(qualityRowSlider.value != qualityRow.qualitySliderSelectedValue) - { - //start updating with short delay - qualitySliderChangeTimer.start(); + // Prevent updating during view initializing. Trigger only if the value changed by user + if (qualitySlider.value != qualityModel.activeQualityId) { + qualitySliderChangeTimer.start() } } } @@ -519,7 +511,7 @@ Item Text { id: gradualInfillLabel anchors.left: enableGradualInfillCheckBox.right - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width / 2 // FIXME better margin value + anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width / 2 text: catalog.i18nc("@label", "Enable gradual") font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") From 88155d35e8987a61fefeb3cb4f94e18d3f1ca101 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 22 Sep 2017 11:11:34 +0200 Subject: [PATCH 228/589] Correct signature of activeMachine Because there isn't always a global container stack. Contributes to issue CURA-4357. --- cura/Settings/MachineManager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index e807e49200..a2d32a35ea 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -475,7 +475,7 @@ class MachineManager(QObject): return "" @pyqtProperty(QObject, notify = globalContainerChanged) - def activeMachine(self) -> "GlobalStack": + def activeMachine(self) -> Optional["GlobalStack"]: return self._global_container_stack @pyqtProperty(str, notify = activeStackChanged) From ae6b1a9f156626ae8efeaf26bb292582b657aa7d Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Sep 2017 11:14:13 +0200 Subject: [PATCH 229/589] CURA-4182 better variable names --- resources/qml/SidebarSimple.qml | 36 ++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 3347f56f43..1b042d8748 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -73,17 +73,15 @@ Item property var totalTicks: 0 property var availableTotalTicks: 0 - property var qualitySliderStepWidth: qualityModel.totalTicks != 0 ? (base.width * 0.55) / (qualityModel.totalTicks) : 0 property var activeQualityId: 0 - property var sliderAvailableMin : 0 - property var sliderAvailableMax : 0 - property var sliderMarginRight : 0 + property var qualitySliderStepWidth: qualityModel.totalTicks != 0 ? (base.width * 0.55) / (qualityModel.totalTicks) : 0 + property var qualitySliderAvailableMin : 0 + property var qualitySliderAvailableMax : 0 + property var qualitySliderMarginRight : 0 function update () { - qualityModel.clear() - - qualityModel.totalTicks = Cura.ProfilesModel.rowCount() - 1 // minus one, because slider starts from 0 + reset() var availableMin = -1 var availableMax = -1 @@ -117,8 +115,8 @@ Item calculateSliderStepWidth(qualityModel.totalTicks) calculateSliderMargins(availableMin, availableMax) - qualityModel.sliderAvailableMin = availableMin - qualityModel.sliderAvailableMax = availableMax + qualityModel.qualitySliderAvailableMin = availableMin + qualityModel.qualitySliderAvailableMax = availableMax } function calculateSliderStepWidth (totalTicks) { @@ -128,21 +126,27 @@ Item function calculateSliderMargins (availableMin, availableMax) { if(availableMin == -1) { - qualityModel.sliderMarginRight = base.width * 0.55 + qualityModel.qualitySliderMarginRight = base.width * 0.55 } else if (availableMin == 0 && availableMax == 0) { - qualityModel.sliderMarginRight = base.width * 0.55 + qualityModel.qualitySliderMarginRight = base.width * 0.55 } else if(availableMin == availableMax) { - qualityModel.sliderMarginRight = (qualityModel.totalTicks - availableMin) * qualitySliderStepWidth + qualityModel.qualitySliderMarginRight = (qualityModel.totalTicks - availableMin) * qualitySliderStepWidth } else if(availableMin != availableMax) { - qualityModel.sliderMarginRight = (qualityModel.totalTicks - availableMax) * qualitySliderStepWidth + qualityModel.qualitySliderMarginRight = (qualityModel.totalTicks - availableMax) * qualitySliderStepWidth } } + + function reset () { + qualityModel.clear() + qualityModel.totalTicks = Cura.ProfilesModel.rowCount() - 1 // minus one, because slider starts from 0 + qualityModel.availableTotalTicks = -1 + } } Text @@ -222,8 +226,8 @@ Item enabled: qualityModel.availableTotalTicks > 0 updateValueWhileDragging : false - minimumValue: qualityModel.sliderAvailableMin - maximumValue: qualityModel.sliderAvailableMax + minimumValue: qualityModel.qualitySliderAvailableMin + maximumValue: qualityModel.qualitySliderAvailableMax stepSize: 1 value: qualityModel.activeQualityId @@ -231,7 +235,7 @@ Item width: qualityModel.qualitySliderStepWidth * qualityModel.availableTotalTicks anchors.right: parent.right - anchors.rightMargin: qualityModel.sliderMarginRight + anchors.rightMargin: qualityModel.qualitySliderMarginRight style: SliderStyle { From 1596437bbdbcfc22875aa18db78428a9e1e70acc Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 22 Sep 2017 11:17:42 +0200 Subject: [PATCH 230/589] getActiveGlobalAndContainerStacks may return None Change the code to reflect on this. Mostly this is to fix up the type warnings, because we were already checking for there being no global container stack but that was not thread-safe. Contributes to issue CURA-4357. --- cura/Settings/MachineManager.py | 42 ++++++++++++++++----------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index a2d32a35ea..26deaa6987 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -497,8 +497,9 @@ class MachineManager(QObject): @pyqtProperty("QVariantList", notify=activeVariantChanged) def activeVariantNames(self): result = [] - if ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() is not None: - for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks(): + active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() + if active_stacks is not None: + for stack in active_stacks: variant_container = stack.variant if variant_container and variant_container != self._empty_variant_container: result.append(variant_container.getName()) @@ -508,8 +509,9 @@ class MachineManager(QObject): @pyqtProperty("QVariantList", notify = activeMaterialChanged) def activeMaterialNames(self): result = [] - if ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() is not None: - for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks(): + active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() + if active_stacks is not None: + for stack in active_stacks: material_container = stack.material if material_container and material_container != self._empty_material_container: result.append(material_container.getName()) @@ -526,33 +528,29 @@ class MachineManager(QObject): @pyqtProperty("QVariantMap", notify = activeVariantChanged) def allActiveVariantIds(self): - if not self._global_container_stack: - return {} - result = {} + active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() + if active_stacks is not None: #If we have a global stack. + for stack in active_stacks: + variant_container = stack.variant + if not variant_container: + continue - for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks(): - variant_container = stack.variant - if not variant_container: - continue - - result[stack.getId()] = variant_container.getId() + result[stack.getId()] = variant_container.getId() return result @pyqtProperty("QVariantMap", notify = activeMaterialChanged) def allActiveMaterialIds(self): - if not self._global_container_stack: - return {} - result = {} + active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() + if active_stacks is not None: #If we have a global stack. + for stack in active_stacks: + material_container = stack.material + if not material_container: + continue - for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks(): - material_container = stack.material - if not material_container: - continue - - result[stack.getId()] = material_container.getId() + result[stack.getId()] = material_container.getId() return result From 37da9f654bde6cf92548a6b18b9b4f5be3d0206c Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Fri, 22 Sep 2017 11:20:57 +0200 Subject: [PATCH 231/589] Reverted changes done that makes sliders fail - CURA-4327 --- cura/Settings/ProfilesModel.py | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py index e39ed949b0..b6ef1fdcef 100644 --- a/cura/Settings/ProfilesModel.py +++ b/cura/Settings/ProfilesModel.py @@ -126,25 +126,14 @@ class ProfilesModel(InstanceContainersModel): for key in reversed(tmp_all_quality_items.keys()): all_quality_items[key] = tmp_all_quality_items[key] - # First the suitable containers are set in the model - containers = [] for data_item in all_quality_items.values(): - suitable_item = data_item["suitable_container"] - if suitable_item is None: - suitable_item = data_item["all_containers"][0] - containers.append(suitable_item) + item = data_item["suitable_container"] + if item is None: + item = data_item["all_containers"][0] - # Once the suitable containers are collected, the rest of the containers are appended - for data_item in all_quality_items.values(): - for item in data_item["all_containers"]: - if item not in containers: - containers.append(item) - - # Now all the containers are set - for item in containers: profile = container_registry.findContainers(id = item["id"]) if not profile: - item["layer_height"] = "" #Can't update a profile that is unknown. + item["layer_height"] = "" # Can't update a profile that is unknown. item["available"] = False yield item continue From f016e5346a7bfbf641400b45834ee1926246343e Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Sep 2017 11:29:18 +0200 Subject: [PATCH 232/589] CURA-4182 code improvements for slider property calcs --- resources/qml/SidebarSimple.qml | 51 +++++++++++++++------------------ 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 1b042d8748..8f30c24d42 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -75,7 +75,7 @@ Item property var availableTotalTicks: 0 property var activeQualityId: 0 - property var qualitySliderStepWidth: qualityModel.totalTicks != 0 ? (base.width * 0.55) / (qualityModel.totalTicks) : 0 + property var qualitySliderStepWidth: 0 property var qualitySliderAvailableMin : 0 property var qualitySliderAvailableMax : 0 property var qualitySliderMarginRight : 0 @@ -92,28 +92,30 @@ Item // Add each quality item to the UI quality model qualityModel.append(qualityItem) - // Find slider range, min and max value - if (qualityItem.available && availableMin == -1) { - availableMin = i - availableMax = i - } else if (qualityItem.available) { - availableMax = i - } - - // Find selected value - if(Cura.MachineManager.activeQualityId == qualityItem.id) { + // Set selected value + if (Cura.MachineManager.activeQualityId == qualityItem.id) { qualityModel.activeQualityId = i } + + // Set min available + if (qualityItem.available && availableMin == -1) { + availableMin = i + } + + // Set max available + if (qualityItem.available) { + availableMax = i + } } + // Set total available ticks for active slider part if (availableMin != -1) { qualityModel.availableTotalTicks = availableMax - availableMin - } else { - qualityModel.availableTotalTicks = -1 } + // Calculate slider values calculateSliderStepWidth(qualityModel.totalTicks) - calculateSliderMargins(availableMin, availableMax) + calculateSliderMargins(availableMin, availableMax, qualityModel.totalTicks) qualityModel.qualitySliderAvailableMin = availableMin qualityModel.qualitySliderAvailableMax = availableMax @@ -123,22 +125,15 @@ Item qualityModel.qualitySliderStepWidth = totalTicks != 0 ? (base.width * 0.55) / (totalTicks) : 0 } - function calculateSliderMargins (availableMin, availableMax) { - if(availableMin == -1) - { + function calculateSliderMargins (availableMin, availableMax, totalTicks) { + if (availableMin == -1) { qualityModel.qualitySliderMarginRight = base.width * 0.55 - } - else if (availableMin == 0 && availableMax == 0) - { + } else if (availableMin == 0 && availableMax == 0) { qualityModel.qualitySliderMarginRight = base.width * 0.55 - } - else if(availableMin == availableMax) - { - qualityModel.qualitySliderMarginRight = (qualityModel.totalTicks - availableMin) * qualitySliderStepWidth - } - else if(availableMin != availableMax) - { - qualityModel.qualitySliderMarginRight = (qualityModel.totalTicks - availableMax) * qualitySliderStepWidth + } else if (availableMin == availableMax) { + qualityModel.qualitySliderMarginRight = (totalTicks - availableMin) * qualitySliderStepWidth + } else if (availableMin != availableMax) { + qualityModel.qualitySliderMarginRight = (totalTicks - availableMax) * qualitySliderStepWidth } } From 3d921c1b4e7c1c9c7f5c447556ac41bee050459a Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 22 Sep 2017 11:30:35 +0200 Subject: [PATCH 233/589] Add type hinting of return values I thought this might help find some bugs there. Contributes to issue CURA-4357. --- cura/Settings/MachineManager.py | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 26deaa6987..6712bef92d 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -1,6 +1,9 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. -from typing import Union + +#Type hinting. +from typing import Union, List, Dict +from UM.Signal import Signal from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal, QTimer from UM.FlameProfiler import pyqtSlot @@ -366,7 +369,7 @@ class MachineManager(QObject): def _createUniqueName(self, container_type: str, current_name: str, new_name: str, fallback_name: str) -> str: return ContainerRegistry.getInstance().createUniqueName(container_type, current_name, new_name, fallback_name) - def _checkStacksHaveErrors(self): + def _checkStacksHaveErrors(self) -> bool: if self._global_container_stack is None: #No active machine. return False @@ -390,7 +393,7 @@ class MachineManager(QObject): ## Check if the global_container has instances in the user container @pyqtProperty(bool, notify = activeStackValueChanged) - def hasUserSettings(self): + def hasUserSettings(self) -> bool: if not self._global_container_stack: return False @@ -405,7 +408,7 @@ class MachineManager(QObject): return False @pyqtProperty(int, notify = activeStackValueChanged) - def numUserSettings(self): + def numUserSettings(self) -> int: if not self._global_container_stack: return 0 num_user_settings = 0 @@ -450,7 +453,7 @@ class MachineManager(QObject): # Note that the _stacks_have_errors is cached due to performance issues # Calling _checkStack(s)ForErrors on every change is simply too expensive @pyqtProperty(bool, notify = stacksValidationChanged) - def stacksHaveErrors(self): + def stacksHaveErrors(self) -> bool: return bool(self._stacks_have_errors) @pyqtProperty(str, notify = activeStackChanged) @@ -495,7 +498,7 @@ class MachineManager(QObject): return "" @pyqtProperty("QVariantList", notify=activeVariantChanged) - def activeVariantNames(self): + def activeVariantNames(self) -> List[str]: result = [] active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() if active_stacks is not None: @@ -507,7 +510,7 @@ class MachineManager(QObject): return result @pyqtProperty("QVariantList", notify = activeMaterialChanged) - def activeMaterialNames(self): + def activeMaterialNames(self) -> List[str]: result = [] active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() if active_stacks is not None: @@ -527,7 +530,7 @@ class MachineManager(QObject): return "" @pyqtProperty("QVariantMap", notify = activeVariantChanged) - def allActiveVariantIds(self): + def allActiveVariantIds(self) -> Dict[str, str]: result = {} active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() if active_stacks is not None: #If we have a global stack. @@ -541,7 +544,7 @@ class MachineManager(QObject): return result @pyqtProperty("QVariantMap", notify = activeMaterialChanged) - def allActiveMaterialIds(self): + def allActiveMaterialIds(self) -> Dict[str, str]: result = {} active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() if active_stacks is not None: #If we have a global stack. @@ -860,7 +863,7 @@ class MachineManager(QObject): # \param quality_name \type{str} the name of the quality. # \return \type{List[Dict]} with keys "stack", "quality" and "quality_changes". @UM.FlameProfiler.profile - def determineQualityAndQualityChangesForQualityType(self, quality_type: str): + def determineQualityAndQualityChangesForQualityType(self, quality_type: str) -> List[Dict[str, Union[CuraContainerStack, InstanceContainer]]]: quality_manager = QualityManager.getInstance() result = [] empty_quality_changes = self._empty_quality_changes_container @@ -897,7 +900,7 @@ class MachineManager(QObject): # # \param quality_changes_name \type{str} the name of the quality changes. # \return \type{List[Dict]} with keys "stack", "quality" and "quality_changes". - def _determineQualityAndQualityChangesForQualityChanges(self, quality_changes_name: str): + def _determineQualityAndQualityChangesForQualityChanges(self, quality_changes_name: str) -> Optional[List[Dict[str, Union[CuraContainerStack, InstanceContainer]]]]: result = [] quality_manager = QualityManager.getInstance() @@ -1134,7 +1137,7 @@ class MachineManager(QObject): return MachineManager() @deprecated("Use ExtruderStack.material = ... and it won't be necessary", "2.7") - def _updateMaterialContainer(self, definition: "DefinitionContainer", stack: "ContainerStack", variant_container: Optional["InstanceContainer"] = None, preferred_material_name: Optional[str] = None): + def _updateMaterialContainer(self, definition: "DefinitionContainer", stack: "ContainerStack", variant_container: Optional["InstanceContainer"] = None, preferred_material_name: Optional[str] = None) -> InstanceContainer: if not definition.getMetaDataEntry("has_materials"): return self._empty_material_container @@ -1180,7 +1183,7 @@ class MachineManager(QObject): def _onQualityNameChanged(self): self.activeQualityChanged.emit() - def _getContainerChangedSignals(self): + def _getContainerChangedSignals(self) -> List[Signal]: stacks = ExtruderManager.getInstance().getActiveExtruderStacks() stacks.append(self._global_container_stack) return [ s.containersChanged for s in stacks ] From 781f2d56c81981bf14a4825db022e3ed10466d38 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Sep 2017 11:31:24 +0200 Subject: [PATCH 234/589] CURA-4182 code improvements for slider property calcs 2 --- resources/qml/SidebarSimple.qml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 8f30c24d42..1528ed26a7 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -126,13 +126,11 @@ Item } function calculateSliderMargins (availableMin, availableMax, totalTicks) { - if (availableMin == -1) { - qualityModel.qualitySliderMarginRight = base.width * 0.55 - } else if (availableMin == 0 && availableMax == 0) { + if (availableMin == -1 || (availableMin == 0 && availableMax == 0)) { qualityModel.qualitySliderMarginRight = base.width * 0.55 } else if (availableMin == availableMax) { qualityModel.qualitySliderMarginRight = (totalTicks - availableMin) * qualitySliderStepWidth - } else if (availableMin != availableMax) { + } else { qualityModel.qualitySliderMarginRight = (totalTicks - availableMax) * qualitySliderStepWidth } } From 261089eed3a9b8f3f2ce48c00f9c6b8cae258533 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 22 Sep 2017 11:53:10 +0200 Subject: [PATCH 235/589] Fix type hinting imports Because circular imports. I hate our current import technique... Contributes to issue CURA-4357. --- cura/Settings/MachineManager.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 6712bef92d..69f672ab0f 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -863,7 +863,7 @@ class MachineManager(QObject): # \param quality_name \type{str} the name of the quality. # \return \type{List[Dict]} with keys "stack", "quality" and "quality_changes". @UM.FlameProfiler.profile - def determineQualityAndQualityChangesForQualityType(self, quality_type: str) -> List[Dict[str, Union[CuraContainerStack, InstanceContainer]]]: + def determineQualityAndQualityChangesForQualityType(self, quality_type: str) -> List[Dict[str, Union["CuraContainerStack", InstanceContainer]]]: quality_manager = QualityManager.getInstance() result = [] empty_quality_changes = self._empty_quality_changes_container @@ -900,7 +900,7 @@ class MachineManager(QObject): # # \param quality_changes_name \type{str} the name of the quality changes. # \return \type{List[Dict]} with keys "stack", "quality" and "quality_changes". - def _determineQualityAndQualityChangesForQualityChanges(self, quality_changes_name: str) -> Optional[List[Dict[str, Union[CuraContainerStack, InstanceContainer]]]]: + def _determineQualityAndQualityChangesForQualityChanges(self, quality_changes_name: str) -> Optional[List[Dict[str, Union["CuraContainerStack", InstanceContainer]]]]: result = [] quality_manager = QualityManager.getInstance() From fe5910dd9619bd0ad89a7a0bb4bcd6de73e7f67d Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Sep 2017 11:54:59 +0200 Subject: [PATCH 236/589] CURA-4182 final tweaks to quality slider color and position --- resources/qml/SidebarSimple.qml | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 1528ed26a7..3cc65f47d3 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -150,7 +150,7 @@ Item color: UM.Theme.getColor("text") } - //Show titles for the each quality slider ticks + // Show titles for the each quality slider ticks Item { y: -5; @@ -164,10 +164,20 @@ Item anchors.verticalCenter: parent.verticalCenter anchors.top: parent.top anchors.topMargin: UM.Theme.getSize("sidebar_margin").height / 2 - color: UM.Theme.getColor("text") + + color: UM.Theme.getColor("quality_slider_unavailable") ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") text: Cura.ProfilesModel.getItem(index).layer_height_without_unit - width: 1 - x: (index != qualityModel.totalTicks) ? (base.width * 0.55 / qualityModel.totalTicks) * index : (base.width * 0.55 / qualityModel.totalTicks) * index - 15 + + x: { + // Make sure the text aligns correctly with each tick + if (index == 0) { + return (base.width * 0.55 / qualityModel.totalTicks) * index + } else if (index == qualityModel.totalTicks) { + return (base.width * 0.55 / qualityModel.totalTicks) * index - width + } else { + return (base.width * 0.55 / qualityModel.totalTicks) * index - (width / 2) + } + } } } } @@ -202,7 +212,7 @@ Item Rectangle { anchors.verticalCenter: parent.verticalCenter - color: qualityModel.count > 1 ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") + color: Cura.ProfilesModel.getItem(index).available ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") width: 1 height: 6 y: 0 From 0fa3bdd68b868a45690b86c07666ae8a4486d9a6 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Sep 2017 11:57:05 +0200 Subject: [PATCH 237/589] CURA-4182 text color for unavailable quality to disabled --- resources/qml/SidebarSimple.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 3cc65f47d3..500cf115fe 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -165,7 +165,7 @@ Item anchors.top: parent.top anchors.topMargin: UM.Theme.getSize("sidebar_margin").height / 2 - color: UM.Theme.getColor("quality_slider_unavailable") ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") + color: Cura.ProfilesModel.getItem(index).available ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") text: Cura.ProfilesModel.getItem(index).layer_height_without_unit x: { From 0183616b8f1af34da765dced9e0d313798284e3d Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 22 Sep 2017 12:48:05 +0200 Subject: [PATCH 238/589] Only switch profiles with slider if there is an added machine Otherwise we crash and burn. Contributes to issue CURA-4357. --- resources/qml/SidebarSimple.qml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index c91c1fcb93..cb6a0f2643 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -261,12 +261,14 @@ Item } onValueChanged: { - - //Prevent updating during view initializing. Trigger only if the value changed by user - if(qualityRowSlider.value != qualityRow.qualitySliderSelectedValue) + if(Cura.MachineManager.activeMachine != null) { - //start updating with short delay - qualitySliderChangeTimer.start(); + //Prevent updating during view initializing. Trigger only if the value changed by user + if(qualityRowSlider.value != qualityRow.qualitySliderSelectedValue) + { + //start updating with short delay + qualitySliderChangeTimer.start(); + } } } } From 191854adefd6a5582041bf2d263c5cb362c0ecaa Mon Sep 17 00:00:00 2001 From: alekseisasin Date: Fri, 22 Sep 2017 12:52:03 +0200 Subject: [PATCH 239/589] Added tooltip text for the infill icons CURA-4303 --- resources/qml/SidebarSimple.qml | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index c91c1fcb93..3732339774 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -479,6 +479,49 @@ Item } } } + + MouseArea { + id: enableGradualInfillMouseArea_1 + + anchors.fill: parent + hoverEnabled: true + enabled: true + + onEntered: { + + var selectedStep = parseInt(infillSlider.value) / parseInt(infillSlider.stepSize) + + var tooltipText = "" + + if( enableGradualInfillCheckBox.checked){ + tooltipText = catalog.i18nc("@label", "Gradual infill will gradually increase the amount of infill towards the top."); + } + else{ + + switch(selectedStep){ + case 0: tooltipText = catalog.i18nc("@label", "Empty infill will leave your model hollow with low strength."); break; + case 1: + case 2: + case 3: + case 4: tooltipText = catalog.i18nc("@label", "Light infill will give your model an average strength."); break; + case 5: + case 6: + case 7: + case 8: tooltipText = catalog.i18nc("@label", "Dense infill will give your model an above average strength."); break; + case 9: + case 10: tooltipText = catalog.i18nc("@label", "Solid infill will make your model completely solid."); break; + } + } + + if(tooltipText != "") + base.showTooltip(base, Qt.point(0,infillCellRight.y + infillIcon.y),tooltipText) + } + + onExited: { + base.hideTooltip() + } + + } } // Gradual Support Infill Checkbox From bf6c6891c4cf91ebf87ff9046fd6fc4037cc86bd Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 22 Sep 2017 12:52:22 +0200 Subject: [PATCH 240/589] Don't display layer height before a printer is added Contributes to issue CURA-4357, somewhat. --- resources/qml/SidebarSimple.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index cb6a0f2643..194c43bc55 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -166,7 +166,7 @@ Item anchors.top: parent.top anchors.topMargin: UM.Theme.getSize("sidebar_margin").height / 2 color: UM.Theme.getColor("text") - text: Cura.ProfilesModel.getItem(index).layer_height_without_unit + text: Cura.MachineManager.activeMachine != null ? Cura.ProfilesModel.getItem(index).layer_height_without_unit : "" width: 1 x: From b748bf2011e86ff8207e46052cadad0002a0ec3b Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Sep 2017 13:11:57 +0200 Subject: [PATCH 241/589] CURA-4341 add bi-directional signal to update topbar when monitoring --- resources/qml/Cura.qml | 9 ++++++++- resources/qml/Topbar.qml | 11 ++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 37c481defc..702864f01b 100755 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -25,8 +25,11 @@ UM.MainWindow target: Printer onShowPrintMonitor: { + topbar.monitoringChanged(show) + if (show) { + topbar.startMonitoringPrint() } else @@ -349,13 +352,17 @@ UM.MainWindow } } + function isMonitoringPrint () { + return base.showPrintMonitor + } + Topbar { id: topbar anchors.left:parent.left anchors.right: parent.right anchors.top: parent.top - monitoringPrint: base.showPrintMonitor + monitoringPrint: isMonitoringPrint() onStartMonitoringPrint: base.showPrintMonitor = true onStopMonitoringPrint: base.showPrintMonitor = false } diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index e3550aaad7..4cd684339f 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -22,7 +22,16 @@ Rectangle property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands - property bool monitoringPrint: false + + // monitoring status + property bool monitoringPrint + + // incoming signal + function monitoringChanged (isNowMonitoring) { + monitoringPrint = isNowMonitoring + } + + // outgoing signal signal startMonitoringPrint() signal stopMonitoringPrint() From 07161f5d5018f122d5b62fa8d9ca2b636fae032e Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Sep 2017 13:40:55 +0200 Subject: [PATCH 242/589] CURA-4341 use existing signals instead to update topbar monitoring --- resources/qml/Cura.qml | 19 ++++--------------- resources/qml/Topbar.qml | 19 +++++++++++-------- 2 files changed, 15 insertions(+), 23 deletions(-) diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 702864f01b..5877656acc 100755 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -23,17 +23,10 @@ UM.MainWindow Connections { target: Printer - onShowPrintMonitor: - { - topbar.monitoringChanged(show) - - if (show) - { - + onShowPrintMonitor: { + if (show) { topbar.startMonitoringPrint() - } - else - { + } else { topbar.stopMonitoringPrint() } } @@ -352,17 +345,13 @@ UM.MainWindow } } - function isMonitoringPrint () { - return base.showPrintMonitor - } - Topbar { id: topbar anchors.left:parent.left anchors.right: parent.right anchors.top: parent.top - monitoringPrint: isMonitoringPrint() + monitoringPrint: base.showPrintMonitor onStartMonitoringPrint: base.showPrintMonitor = true onStopMonitoringPrint: base.showPrintMonitor = false } diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 4cd684339f..5e208a40b4 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -22,19 +22,22 @@ Rectangle property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands - - // monitoring status - property bool monitoringPrint - - // incoming signal - function monitoringChanged (isNowMonitoring) { - monitoringPrint = isNowMonitoring - } + property bool monitoringPrint: false // outgoing signal signal startMonitoringPrint() signal stopMonitoringPrint() + // update monitoring status when event was triggered outside topbar + Component.onCompleted: { + startMonitoringPrint.connect(function () { + base.monitoringPrint = true + }) + stopMonitoringPrint.connect(function () { + base.monitoringPrint = false + }) + } + UM.I18nCatalog { id: catalog From 9a0926b0099a0037552dfed0698f9bdd05b3635a Mon Sep 17 00:00:00 2001 From: alekseisasin Date: Fri, 22 Sep 2017 13:50:31 +0200 Subject: [PATCH 243/589] Check undefined text CURA-4182 --- resources/qml/SidebarSimple.qml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index e3b0f21056..4063af322a 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -165,7 +165,18 @@ Item anchors.top: parent.top anchors.topMargin: UM.Theme.getSize("sidebar_margin").height / 2 color: (Cura.MachineManager.activeMachine != null && Cura.ProfilesModel.getItem(index).available) ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - text: Cura.MachineManager.activeMachine != null ? Cura.ProfilesModel.getItem(index).layer_height_without_unit : "" + text: + { + var result = "" + if(Cura.MachineManager.activeMachine != null){ + + var result = Cura.ProfilesModel.getItem(index).layer_height_without_unit + + if(result == undefined) + result = "" + } + return result + } x: { // Make sure the text aligns correctly with each tick @@ -244,14 +255,12 @@ Item //Draw Available line groove: Rectangle { implicitHeight: 2 - anchors.verticalCenter: qualitySlider.verticalCenter color: UM.Theme.getColor("quality_slider_available") radius: 1 } handle: Item { Rectangle { id: qualityhandleButton - anchors.verticalCenter: qualitySlider.verticalCenter anchors.centerIn: parent color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") implicitWidth: 10 From e1f8676cacd94196468422fa4ebfb0c16ee6db27 Mon Sep 17 00:00:00 2001 From: alekseisasin Date: Fri, 22 Sep 2017 14:02:13 +0200 Subject: [PATCH 244/589] Removed tooltip translation in SidebarSimple CURA-4182 --- resources/qml/SidebarSimple.qml | 43 --------------------------------- 1 file changed, 43 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 70500e0041..4063af322a 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -491,49 +491,6 @@ Item } } } - - MouseArea { - id: enableGradualInfillMouseArea_1 - - anchors.fill: parent - hoverEnabled: true - enabled: true - - onEntered: { - - var selectedStep = parseInt(infillSlider.value) / parseInt(infillSlider.stepSize) - - var tooltipText = "" - - if( enableGradualInfillCheckBox.checked){ - tooltipText = catalog.i18nc("@label", "Gradual infill will gradually increase the amount of infill towards the top."); - } - else{ - - switch(selectedStep){ - case 0: tooltipText = catalog.i18nc("@label", "Empty infill will leave your model hollow with low strength."); break; - case 1: - case 2: - case 3: - case 4: tooltipText = catalog.i18nc("@label", "Light infill will give your model an average strength."); break; - case 5: - case 6: - case 7: - case 8: tooltipText = catalog.i18nc("@label", "Dense infill will give your model an above average strength."); break; - case 9: - case 10: tooltipText = catalog.i18nc("@label", "Solid infill will make your model completely solid."); break; - } - } - - if(tooltipText != "") - base.showTooltip(base, Qt.point(0,infillCellRight.y + infillIcon.y),tooltipText) - } - - onExited: { - base.hideTooltip() - } - - } } // Gradual Support Infill Checkbox From 14429d81ccfe03adafe8ebc151d77170cafa3313 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Sep 2017 14:31:19 +0200 Subject: [PATCH 245/589] CURA-4313 fix re-binding checkboxes after manually clicking them --- resources/qml/Cura.qml | 1 + resources/qml/Topbar.qml | 39 +++++++++++++++++++++++++++------------ 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 5877656acc..9a0a84b39e 100755 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -24,6 +24,7 @@ UM.MainWindow { target: Printer onShowPrintMonitor: { + console.log("show", show) if (show) { topbar.startMonitoringPrint() } else { diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 5e208a40b4..24ffe4252e 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -71,15 +71,23 @@ Rectangle { id: showSettings height: UM.Theme.getSize("sidebar_header").height - onClicked: base.stopMonitoringPrint() - property color overlayColor: "transparent" - property string overlayIconSource: "" text: catalog.i18nc("@title:tab", "Prepare") checkable: true - checked: !base.monitoringPrint + checked: isChecked() exclusiveGroup: sidebarHeaderBarGroup - style: UM.Theme.styles.topbar_header_tab + + onClicked: { + base.stopMonitoringPrint() + checked = Qt.binding(isChecked) + } + + function isChecked () { + return !base.monitoringPrint + } + + property color overlayColor: "transparent" + property string overlayIconSource: "" } Button @@ -87,8 +95,21 @@ Rectangle id: showMonitor width: UM.Theme.getSize("topbar_button").width height: UM.Theme.getSize("sidebar_header").height - onClicked: base.startMonitoringPrint() text: catalog.i18nc("@title:tab", "Monitor") + checkable: true + checked: isChecked() + exclusiveGroup: sidebarHeaderBarGroup + style: UM.Theme.styles.topbar_header_tab_no_overlay + + onClicked: { + base.startMonitoringPrint() + checked = Qt.binding(isChecked) + } + + function isChecked () { + return base.monitoringPrint + } + property string iconSource: { if (!printerConnected) @@ -125,12 +146,6 @@ Rectangle return UM.Theme.getIcon("tab_status_unknown") } } - - checkable: true - checked: base.monitoringPrint - exclusiveGroup: sidebarHeaderBarGroup - - style: UM.Theme.styles.topbar_header_tab_no_overlay } ExclusiveGroup { id: sidebarHeaderBarGroup } From ea654579204fb60d90f6a6edafd9fdd5e38504c4 Mon Sep 17 00:00:00 2001 From: alekseisasin Date: Fri, 22 Sep 2017 14:45:23 +0200 Subject: [PATCH 246/589] After first start (no machine added) the controls on right side are invisible CURA-4357 --- resources/qml/Sidebar.qml | 5 +++-- resources/qml/SidebarSimple.qml | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index 2db3bed7c4..cdfe5e7a81 100755 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -16,6 +16,7 @@ Rectangle property int currentModeIndex; property bool hideSettings: PrintInformation.preSliced + property bool hideView: Cura.MachineManager.activeMachineName == "" // Is there an output device for this printer? property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 @@ -123,7 +124,7 @@ Rectangle width: parent.width * 0.45 font: UM.Theme.getFont("large") color: UM.Theme.getColor("text") - visible: !monitoringPrint + visible: !monitoringPrint && !hideView } Rectangle { @@ -145,7 +146,7 @@ Rectangle } } anchors.topMargin: UM.Theme.getSize("sidebar_margin").height - visible: !monitoringPrint && !hideSettings + visible: !monitoringPrint && !hideSettings && !hideView Component{ id: wizardDelegate Button { diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 4063af322a..e53d07ae69 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -27,6 +27,7 @@ Item ScrollView { + visible: Cura.MachineManager.activeMachineName != "" // If no printers added then the view is invisible anchors.fill: parent style: UM.Theme.styles.scrollview flickableItem.flickableDirection: Flickable.VerticalFlick From cf94c8d37d0fa431d587d166165d86154fa86dea Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Fri, 22 Sep 2017 14:47:20 +0200 Subject: [PATCH 247/589] Working on fixing several issues with profiles - CURA-4327 --- cura/QualityManager.py | 25 ++++++++++++ cura/Settings/ProfilesModel.py | 62 +++++++++++++++++++---------- cura/Settings/UserProfilesModel.py | 29 ++++++++++---- resources/qml/Menus/ProfileMenu.qml | 2 +- 4 files changed, 88 insertions(+), 30 deletions(-) diff --git a/cura/QualityManager.py b/cura/QualityManager.py index c0b5afb71e..763599ac73 100644 --- a/cura/QualityManager.py +++ b/cura/QualityManager.py @@ -64,6 +64,19 @@ class QualityManager: result = [quality_change for quality_change in result if quality_change.getName() == quality_changes_name] return result + ## Fetch the list of available quality types for this machine definition. + # + # \param machine_definition \type{DefinitionContainer} + # \param material_containers \type{List[InstanceContainer]} + # \return \type{List[str]} + def findAllQualityTypesForMachine(self, machine_definition: "DefinitionContainerInterface") -> List[str]: + # Determine the common set of quality types which can be + # applied to all of the materials for this machine. + quality_type_dict = self.__fetchQualityTypeDict(machine_definition) + common_quality_types = set(quality_type_dict.keys()) + + return list(common_quality_types) + ## Fetch the list of available quality types for this combination of machine definition and materials. # # \param machine_definition \type{DefinitionContainer} @@ -91,6 +104,18 @@ class QualityManager: return list(qualities) + ## Fetches a dict of quality types names to quality profiles for a combination of machine and material. + # + # \param machine_definition \type{DefinitionContainer} the machine definition. + # \param material \type{InstanceContainer} the material. + # \return \type{Dict[str, InstanceContainer]} the dict of suitable quality type names mapping to qualities. + def __fetchQualityTypeDict(self, machine_definition: "DefinitionContainerInterface") -> Dict[str, InstanceContainer]: + qualities = self.findAllQualitiesForMachineMaterial(machine_definition, None) + quality_type_dict = {} + for quality in qualities: + quality_type_dict[quality.getMetaDataEntry("quality_type")] = quality + return quality_type_dict + ## Fetches a dict of quality types names to quality profiles for a combination of machine and material. # # \param machine_definition \type{DefinitionContainer} the machine definition. diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py index c7348ea920..9fcffc9f57 100644 --- a/cura/Settings/ProfilesModel.py +++ b/cura/Settings/ProfilesModel.py @@ -54,7 +54,7 @@ class ProfilesModel(InstanceContainersModel): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack is None: return [] - global_stack_definition = global_container_stack.getBottom() + # global_stack_definition = global_container_stack.getBottom() # Get the list of extruders and place the selected extruder at the front of the list. extruder_manager = ExtruderManager.getInstance() @@ -64,23 +64,26 @@ class ProfilesModel(InstanceContainersModel): extruder_stacks.remove(active_extruder) extruder_stacks = [active_extruder] + extruder_stacks - if ExtruderManager.getInstance().getActiveExtruderStacks(): - # Multi-extruder machine detected. - materials = [extruder.material for extruder in extruder_stacks] - else: - # Machine with one extruder. - materials = [global_container_stack.material] + # if ExtruderManager.getInstance().getActiveExtruderStacks(): + # # Multi-extruder machine detected. + # materials = [extruder.material for extruder in extruder_stacks] + # else: + # # Machine with one extruder. + # materials = [global_container_stack.material] + # + # # Fetch the list of usable qualities across all extruders. + # # The actual list of quality profiles come from the first extruder in the extruder list. + # result = QualityManager.getInstance().findAllQualitiesForMachineAndMaterials(global_stack_definition, + # materials) + # + # for quality in QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders( + # global_container_stack, extruder_stacks): + # if quality not in result: + # result.append(quality) + quality_list = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, + extruder_stacks) - # Fetch the list of usable qualities across all extruders. - # The actual list of quality profiles come from the first extruder in the extruder list. - result = QualityManager.getInstance().findAllQualitiesForMachineAndMaterials(global_stack_definition, - materials) - - for quality in QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders( - global_container_stack, extruder_stacks): - if quality not in result: - result.append(quality) - return result + return quality_list ## Re-computes the items in this model, and adds the layer height role. def _recomputeItems(self): @@ -93,12 +96,18 @@ class ProfilesModel(InstanceContainersModel): extruder_manager = ExtruderManager.getInstance() active_extruder = extruder_manager.getActiveExtruderStack() extruder_stacks = extruder_manager.getActiveExtruderStacks() + material = global_container_stack.material if active_extruder in extruder_stacks: extruder_stacks.remove(active_extruder) extruder_stacks = [active_extruder] + extruder_stacks + material = active_extruder.material + # Get a list of available qualities for this machine and material qualities = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, extruder_stacks) + + all_qualities = QualityManager.getInstance().findAllQualitiesForMachineMaterial(global_container_stack.getBottom(), material) + container_registry = ContainerRegistry.getInstance() machine_manager = Application.getInstance().getMachineManager() @@ -125,12 +134,23 @@ class ProfilesModel(InstanceContainersModel): for key in reversed(tmp_all_quality_items.keys()): all_quality_items[key] = tmp_all_quality_items[key] + # First the suitable containers are set in the model + containers = [] for data_item in all_quality_items.values(): - item = data_item["suitable_container"] - if item is None: - item = data_item["all_containers"][0] + suitable_item = data_item["suitable_container"] + if suitable_item is None: + suitable_item = data_item["all_containers"][0] + containers.append(suitable_item) - profile = container_registry.findContainers(id = item["id"]) + # Once the suitable containers are collected, the rest of the containers are appended + for data_item in all_quality_items.values(): + for item in data_item["all_containers"]: + if item not in containers: + containers.append(item) + + # Now all the containers are set + for item in containers: + profile = container_registry.findContainers(id=item["id"]) if not profile: item["layer_height"] = "" # Can't update a profile that is unknown. item["available"] = False diff --git a/cura/Settings/UserProfilesModel.py b/cura/Settings/UserProfilesModel.py index 07669422d2..fdb44ce313 100644 --- a/cura/Settings/UserProfilesModel.py +++ b/cura/Settings/UserProfilesModel.py @@ -25,17 +25,30 @@ class UserProfilesModel(ProfilesModel): machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.getBottom()) quality_changes_list = quality_manager.findAllQualityChangesForMachine(machine_definition) - # Fetch the list of qualities - quality_list = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, - ExtruderManager.getInstance().getActiveExtruderStacks()) + # Detecting if the machine has multiple extrusion + multiple_extrusion = False + # Get the list of extruders and place the selected extruder at the front of the list. + extruder_manager = ExtruderManager.getInstance() + active_extruder = extruder_manager.getActiveExtruderStack() + extruder_stacks = extruder_manager.getActiveExtruderStacks() + if active_extruder in extruder_stacks: + multiple_extrusion = True + extruder_stacks.remove(active_extruder) + extruder_stacks = [active_extruder] + extruder_stacks + + # Fetch the list of useable qualities across all extruders. + # The actual list of quality profiles come from the first extruder in the extruder list. + quality_list = quality_manager.findAllUsableQualitiesForMachineAndExtruders(global_container_stack, + extruder_stacks) # Filter the quality_change by the list of available quality_types quality_type_set = set([x.getMetaDataEntry("quality_type") for x in quality_list]) - filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set] - #Only display the global quality changes. - #Otherwise you get multiple copies of every quality changes profile. - #The actual profile switching goes by profile name (not ID), and as long as the names are consistent, switching to any of the profiles will cause all stacks to switch. - filtered_quality_changes = list(filter(lambda quality_changes: quality_changes.getMetaDataEntry("extruder") is None, filtered_quality_changes)) + if multiple_extrusion: + # If the printer has multiple extruders then quality changes related to the current extruder are kept + filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set and qc.getMetaDataEntry("extruder") == active_extruder.definition.getId()] + else: + # If not, the quality changes of the global stack are selected + filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set] return filtered_quality_changes diff --git a/resources/qml/Menus/ProfileMenu.qml b/resources/qml/Menus/ProfileMenu.qml index d6412c50be..0ed4448d1b 100644 --- a/resources/qml/Menus/ProfileMenu.qml +++ b/resources/qml/Menus/ProfileMenu.qml @@ -43,7 +43,7 @@ Menu { text: model.name + " - " + model.layer_height checkable: true - checked: Cura.MachineManager.globalQualityId == model.id + checked: Cura.MachineManager.activeQualityChangesId == model.id exclusiveGroup: group onTriggered: Cura.MachineManager.setActiveQuality(model.id) } From 0d6c366fa4a977b1b5ade2bd8a0d04819d943b3c Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Sep 2017 14:58:08 +0200 Subject: [PATCH 248/589] CURA-4341 remove debug logging --- resources/qml/Cura.qml | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 9a0a84b39e..5877656acc 100755 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -24,7 +24,6 @@ UM.MainWindow { target: Printer onShowPrintMonitor: { - console.log("show", show) if (show) { topbar.startMonitoringPrint() } else { From eb39d857e9ba37b2fa53090791308aef2158687b Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Sep 2017 15:00:55 +0200 Subject: [PATCH 249/589] CURA-4341 add documentation for Qt checkbox binding workaround --- resources/qml/Topbar.qml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 24ffe4252e..23fd77511e 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -77,6 +77,8 @@ Rectangle exclusiveGroup: sidebarHeaderBarGroup style: UM.Theme.styles.topbar_header_tab + // We use a Qt.binding to re-bind the checkbox state after manually setting it + // https://stackoverflow.com/questions/38798450/qt-5-7-qml-why-are-my-checkbox-property-bindings-disappearing onClicked: { base.stopMonitoringPrint() checked = Qt.binding(isChecked) @@ -101,6 +103,8 @@ Rectangle exclusiveGroup: sidebarHeaderBarGroup style: UM.Theme.styles.topbar_header_tab_no_overlay + // We use a Qt.binding to re-bind the checkbox state after manually setting it + // https://stackoverflow.com/questions/38798450/qt-5-7-qml-why-are-my-checkbox-property-bindings-disappearing onClicked: { base.startMonitoringPrint() checked = Qt.binding(isChecked) From 3de608cb0f00e22d9a9ef728c6a66329ff55da4b Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Fri, 22 Sep 2017 15:14:03 +0200 Subject: [PATCH 250/589] Fix display of bed temperature before a printer is added Otherwise you get an error if you switch to the print monitor before adding a printer. --- resources/qml/PrintMonitor.qml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/resources/qml/PrintMonitor.qml b/resources/qml/PrintMonitor.qml index 0aecf839d2..931a8ae23f 100644 --- a/resources/qml/PrintMonitor.qml +++ b/resources/qml/PrintMonitor.qml @@ -444,6 +444,10 @@ Column Component.onCompleted: { + if (!bedTemperature.properties.value) + { + text = ""; + } if ((bedTemperature.resolve != "None" && bedTemperature.resolve) && (bedTemperature.stackLevels[0] != 0) && (bedTemperature.stackLevels[0] != 1)) { // We have a resolve function. Indicates that the setting is not settable per extruder and that From 045f1ce259bf59025caa9a95de1ad4041fce3a64 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Sep 2017 15:52:44 +0200 Subject: [PATCH 251/589] update print button dropdown color and hover color --- resources/qml/SaveButton.qml | 18 +++++++++--------- resources/themes/cura-light/theme.json | 8 ++++---- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/resources/qml/SaveButton.qml b/resources/qml/SaveButton.qml index 2b7930793f..0a792c8bba 100644 --- a/resources/qml/SaveButton.qml +++ b/resources/qml/SaveButton.qml @@ -305,22 +305,22 @@ Item { if(!control.enabled) return UM.Theme.getColor("action_button_disabled_border"); else if(control.pressed) - return UM.Theme.getColor("action_button_active_border"); + return UM.Theme.getColor("print_button_ready_pressed_border"); else if(control.hovered) - return UM.Theme.getColor("action_button_hovered_border"); + return UM.Theme.getColor("print_button_ready_hovered_border"); else - return UM.Theme.getColor("action_button_border"); + return UM.Theme.getColor("print_button_ready_border"); } color: { if(!control.enabled) return UM.Theme.getColor("action_button_disabled"); else if(control.pressed) - return UM.Theme.getColor("action_button_active"); + return UM.Theme.getColor("print_button_ready_pressed"); else if(control.hovered) - return UM.Theme.getColor("action_button_hovered"); + return UM.Theme.getColor("print_button_ready_hovered"); else - return UM.Theme.getColor("action_button"); + return UM.Theme.getColor("print_button_ready"); } Behavior on color { ColorAnimation { duration: 50; } } anchors.left: parent.left @@ -340,11 +340,11 @@ Item { if(!control.enabled) return UM.Theme.getColor("action_button_disabled_text"); else if(control.pressed) - return UM.Theme.getColor("action_button_active_text"); + return UM.Theme.getColor("print_button_ready_text"); else if(control.hovered) - return UM.Theme.getColor("action_button_hovered_text"); + return UM.Theme.getColor("print_button_ready_text"); else - return UM.Theme.getColor("action_button_text"); + return UM.Theme.getColor("print_button_ready_text"); } source: UM.Theme.getIcon("arrow_bottom"); } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 8624760e3a..62e22e4f0d 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -132,10 +132,10 @@ "print_button_ready": [12, 169, 227, 255], "print_button_ready_border": [12, 169, 227, 255], "print_button_ready_text": [255, 255, 255, 255], - "print_button_ready_hovered": [12, 169, 255, 255], - "print_button_ready_hovered_border": [12, 169, 227, 255], - "print_button_ready_pressed": [12, 169, 220, 255], - "print_button_ready_pressed_border": [12, 169, 227, 255], + "print_button_ready_hovered": [30, 186, 245, 243], + "print_button_ready_hovered_border": [30, 186, 245, 243], + "print_button_ready_pressed": [30, 186, 245, 243], + "print_button_ready_pressed_border": [30, 186, 245, 243], "scrollbar_background": [255, 255, 255, 255], "scrollbar_handle": [24, 41, 77, 255], From 11241642b3873ddea7d5806c00639d7a66f28547 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Fri, 22 Sep 2017 16:15:38 +0200 Subject: [PATCH 252/589] CURA-4354 fixed plugin injected tool icon path finding, example in PerObjectSettingsTool --- plugins/PerObjectSettingsTool/__init__.py | 2 +- plugins/PerObjectSettingsTool/tool_icon.svg | 3 +++ resources/qml/Toolbar.qml | 26 +++++++-------------- 3 files changed, 12 insertions(+), 19 deletions(-) create mode 100644 plugins/PerObjectSettingsTool/tool_icon.svg diff --git a/plugins/PerObjectSettingsTool/__init__.py b/plugins/PerObjectSettingsTool/__init__.py index eb102fde5d..214820acf2 100644 --- a/plugins/PerObjectSettingsTool/__init__.py +++ b/plugins/PerObjectSettingsTool/__init__.py @@ -13,7 +13,7 @@ def getMetaData(): "tool": { "name": i18n_catalog.i18nc("@label", "Per Model Settings"), "description": i18n_catalog.i18nc("@info:tooltip", "Configure Per Model Settings"), - "icon": "setting_per_object", + "icon": "tool_icon.svg", "tool_panel": "PerObjectSettingsPanel.qml", "weight": 3 }, diff --git a/plugins/PerObjectSettingsTool/tool_icon.svg b/plugins/PerObjectSettingsTool/tool_icon.svg new file mode 100644 index 0000000000..4b15eb453f --- /dev/null +++ b/plugins/PerObjectSettingsTool/tool_icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/qml/Toolbar.qml b/resources/qml/Toolbar.qml index bc7905c527..dd57fcc78b 100644 --- a/resources/qml/Toolbar.qml +++ b/resources/qml/Toolbar.qml @@ -34,28 +34,18 @@ Item Button { text: model.name - iconSource: - { - var result = UM.Theme.getIcon(model.icon) - if(result == "") - { - return model.location + "/" + model.icon - } - return result - } + iconSource: (UM.Theme.getIcon(model.icon) != "") ? UM.Theme.getIcon(model.icon) : "file:///" + model.location + "/" + model.icon + checkable: true + checked: model.active + enabled: model.enabled && UM.Selection.hasSelection && UM.Controller.toolsEnabled + style: UM.Theme.styles.tool_button - checkable: true; - checked: model.active; - enabled: model.enabled && UM.Selection.hasSelection && UM.Controller.toolsEnabled; - - style: UM.Theme.styles.tool_button; - onCheckedChanged: - { - if(checked) - { + onCheckedChanged: { + if (checked) { base.activeY = y } } + //Workaround since using ToolButton"s onClicked would break the binding of the checked property, instead //just catch the click so we do not trigger that behaviour. MouseArea From 5932d5aacfa07ebbb1276e1d7656b6809836b346 Mon Sep 17 00:00:00 2001 From: Ruslan Popov Date: Sat, 23 Sep 2017 11:20:34 +0300 Subject: [PATCH 253/589] Update russian translation. --- resources/i18n/ru_RU/cura.po | 227 ++++++++++---------- resources/i18n/ru_RU/fdmprinter.def.json.po | 100 ++++----- 2 files changed, 165 insertions(+), 162 deletions(-) diff --git a/resources/i18n/ru_RU/cura.po b/resources/i18n/ru_RU/cura.po index dbfb08f22d..3d4c501924 100755 --- a/resources/i18n/ru_RU/cura.po +++ b/resources/i18n/ru_RU/cura.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: Cura 2.7\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-09 09:49+0300\n" +"PO-Revision-Date: 2017-09-23 10:40+0300\n" "Last-Translator: Ruslan Popov \n" "Language-Team: Ruslan Popov\n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0\n" +"X-Generator: Poedit 2.0.4\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 @@ -26,7 +26,7 @@ msgstr "Параметры принтера" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" msgid "X-Ray view" -msgstr "" +msgstr "Просмотр в рентгене" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -41,17 +41,17 @@ msgstr "Файл GCode" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "Печать через Doodle3D WiFi-Box" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 msgctxt "@properties:tooltip" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "Печать через Doodle3D WiFi-Box" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 msgctxt "@info:status" msgid "Connecting to Doodle3D Connect" -msgstr "" +msgstr "Соединение с Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 @@ -75,32 +75,32 @@ msgstr "Отмена" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 msgctxt "@info:status" msgid "Sending data to Doodle3D Connect" -msgstr "" +msgstr "Отправка данных через Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 msgctxt "@info:status" msgid "Unable to send data to Doodle3D Connect. Is another job still active?" -msgstr "" +msgstr "Невозможно отправить данные через Doodle3D Connect. Другое задание активно?" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 msgctxt "@info:status" msgid "Storing data on Doodle3D Connect" -msgstr "" +msgstr "Сохранение данных на Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 msgctxt "@info:status" msgid "File sent to Doodle3D Connect" -msgstr "" +msgstr "Файл отправлен через Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@action:button" msgid "Open Connect.." -msgstr "" +msgstr "Открыть соединение..." #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" -msgstr "" +msgstr "Открыть Doodle3D Connect web интерфейс" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -145,7 +145,7 @@ msgstr "Невозможно запустить новое задание, по #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 msgctxt "@info:title" msgid "Print Details" -msgstr "" +msgstr "Подробности печати" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" @@ -155,7 +155,7 @@ msgstr "Данный принтер не поддерживает печать #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:title" msgid "USB Printing" -msgstr "" +msgstr "USB печать" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" @@ -170,7 +170,7 @@ msgstr "Невозможно запустить новую задачу, так #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 msgctxt "@info:title" msgid "Warning" -msgstr "" +msgstr "Внимание" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" @@ -186,7 +186,7 @@ msgstr "Не могу найти прошивку, подходящую для #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 msgctxt "@info:title" msgid "Printer Firmware" -msgstr "" +msgstr "Прошивка принтера" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -203,25 +203,25 @@ msgstr "Сохранить на внешний носитель {0}" #, python-brace-format msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "" +msgstr "Сохранение на внешний носитель {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 msgctxt "@info:title" msgid "Saving" -msgstr "" +msgstr "Сохранение" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "" +msgstr "Не могу записать в {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format msgctxt "@info:status Don't translate the tag {device}!" msgid "Could not find a file name when trying to write to {device}." -msgstr "" +msgstr "Не могу найти имя файла при записи в {device}." #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 @@ -238,7 +238,7 @@ msgstr "Невозможно сохранить на внешний носите #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 msgctxt "@info:title" msgid "Error" -msgstr "" +msgstr "Ошибка" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 #, python-brace-format @@ -249,7 +249,7 @@ msgstr "Сохранено на внешний носитель {0} как {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 msgctxt "@info:title" msgid "File Saved" -msgstr "" +msgstr "Файл сохранён" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 msgctxt "@action:button" @@ -271,7 +271,7 @@ msgstr "Извлечено {0}. Вы можете теперь безопасн #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 msgctxt "@info:title" msgid "Safely Remove Hardware" -msgstr "" +msgstr "Безопасное извлечение устройства" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format @@ -306,7 +306,7 @@ msgstr "Запрошен доступ к принтеру. Пожалуйста, #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 msgctxt "@info:title" msgid "Connection status" -msgstr "" +msgstr "Состояние соединения" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 @@ -321,7 +321,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 msgctxt "@info:title" msgid "Connection Status" -msgstr "" +msgstr "Состояние соединения" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 @@ -419,7 +419,7 @@ msgstr "Невозможно запустить новую задачу на п #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 msgctxt "@info:title" msgid "Printer Status" -msgstr "" +msgstr "Состояние принтера" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 @@ -490,7 +490,7 @@ msgstr "Отправка данных на принтер" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 msgctxt "@info:title" msgid "Sending Data" -msgstr "" +msgstr "Отправка данных" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 @@ -549,73 +549,73 @@ msgstr "Подключиться через сеть" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "Данный принтер не настроен для управления группой подключенных принтеров Ultimaker 3." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." -msgstr "" +msgstr "Данный принтер управляет группой из {count} подключенных принтеров Ultimaker 3." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." -msgstr "" +msgstr "{printer_name} завершил печать '{job_name}'. Пожалуйста, освободите область печати." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." -msgstr "" +msgstr "{printer_name} назначен для печати '{job_name}'. Пожалуйста, измените конфигурацию принтера, чтобы она соответствовала заданию." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "" +msgstr "Отправка новых заданий (временно) заблокирована, идёт отправка предыдущего задания." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "Невозможно отправить новое задание: данный 3D принтер (ещё) не настроен на управление группой подключенных принтеров Ultimaker 3." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" -msgstr "" +msgstr "Отправляем {file_name} на группу {cluster_name}" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." -msgstr "" +msgstr "Отправка {file_name} на группу {cluster_name}." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" -msgstr "" +msgstr "Показать задания на печать" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." -msgstr "" +msgstr "Открыть интерфейс с заданиями печати в вашем браузере." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." -msgstr "" +msgstr "Невозможно отправить задание на группу {cluster_name}." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." -msgstr "" +msgstr "Рекомендуется регулярно обновлять прошивку принтера {machine_name}. Это может сделано когда {machine_name} подключен к сети или к USB." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" -msgstr "" +msgstr "Доступна новая прошивка %s" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 @@ -626,7 +626,7 @@ msgstr "Скачать" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 msgctxt "@info" msgid "Could not access update information." -msgstr "" +msgstr "Не могу получить информацию об обновлениях." #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" @@ -665,7 +665,7 @@ msgstr "Cura собирает анонимную статистику о нар #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" msgid "Collecting Data" -msgstr "" +msgstr "Сбор данных" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" @@ -686,7 +686,7 @@ msgstr "Файл G-code" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" msgid "Layer view" -msgstr "" +msgstr "Просмотр слоёв" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" @@ -696,7 +696,7 @@ msgstr "Cura не аккуратно отображает слои при исп #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 msgctxt "@info:title" msgid "Layer View" -msgstr "" +msgstr "Просмотр слоёв" #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -726,7 +726,7 @@ msgstr "GIF изображение" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." -msgstr "" +msgstr "Невозможно нарезать модель, используя текущий материал, так как он несовместим с выбранной машиной или конфигурацией." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 @@ -734,7 +734,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 msgctxt "@info:title" msgid "Unable to slice" -msgstr "" +msgstr "Невозможно нарезать" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format @@ -761,7 +761,7 @@ msgstr "Обработка слоёв" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 msgctxt "@info:title" msgid "Information" -msgstr "" +msgstr "Информация" #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" @@ -800,18 +800,18 @@ msgstr "Сопло" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 msgctxt "@menuitem" msgid "Browse plugins" -msgstr "" +msgstr "Просмотр плагинов" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" -msgstr "" +msgstr "Невозможно получить идентификатор плагин {0}" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 msgctxt "@info:tile" msgid "Warning" -msgstr "" +msgstr "Внимание" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" @@ -821,7 +821,7 @@ msgstr "Браузер плагинов" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" msgid "Solid view" -msgstr "" +msgstr "Просмотр модели" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -837,7 +837,7 @@ msgstr "Обработка G-code" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 msgctxt "@info:title" msgid "G-code Details" -msgstr "" +msgstr "Параметры G-code" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" @@ -919,7 +919,7 @@ msgstr "Поддержки" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Skirt" -msgstr "" +msgstr "Юбка" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" @@ -960,7 +960,7 @@ msgstr "Поиск места для новых объектов" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 msgctxt "@info:title" msgid "Finding Location" -msgstr "" +msgstr "Поиск места" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 @@ -971,7 +971,7 @@ msgstr "Невозможно разместить все объекты внут #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 msgctxt "@info:title" msgid "Can't Find Location" -msgstr "" +msgstr "Не могу найти место" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 @@ -984,7 +984,7 @@ msgstr "Файл уже существует" #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "" +msgstr "Файл {0} уже существует. Вы уверены, что желаете перезаписать его?" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" @@ -1005,7 +1005,7 @@ msgstr "Выбранный материал несовместим с выбра #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" -msgstr "" +msgstr "Несовместимый материал" #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." @@ -1026,24 +1026,24 @@ msgstr "Отмена изменения диаметра материала." #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "" +msgstr "Невозможно экспортировать профиль в {0}: {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "" +msgstr "Невозможно экспортировать профиль в {0}: Плагин записи уведомил об ошибке." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "" +msgstr "Экспортирование профиля в {0}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 msgctxt "@info:title" msgid "Export Details" -msgstr "" +msgstr "Экспорт подробностей" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 @@ -1052,7 +1052,7 @@ msgstr "" #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "" +msgstr "Невозможно импортировать профиль из {0}: {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 @@ -1091,7 +1091,7 @@ msgstr "Высота печатаемого объёма была уменьше #: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 msgctxt "@info:title" msgid "Build Volume" -msgstr "" +msgstr "Объём печати" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" @@ -1102,7 +1102,7 @@ msgstr "Размножение и размещение объектов" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:title" msgid "Placing Object" -msgstr "" +msgstr "Размещение объекта" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" @@ -1548,17 +1548,17 @@ msgstr "Активировать конфигурацию" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 msgctxt "@label" msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "Данный принтер не настроен для управления группой подключенных принтеров Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 msgctxt "@label" msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" -msgstr "" +msgstr "Данный принтер управляет группой из {count} подключенных принтеров Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" -msgstr "" +msgstr "Печать через сеть" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 msgctxt "@action:button" @@ -1568,98 +1568,98 @@ msgstr "Печать" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "%1 не настроен для управления группой подключенных принтеров Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 msgctxt "@label:status" msgid "Printing" -msgstr "" +msgstr "Печать" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 msgctxt "@label:status" msgid "Reserved" -msgstr "" +msgstr "Занят" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 msgctxt "@label:status" msgid "Finished" -msgstr "" +msgstr "Завершено" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 msgctxt "@label:status" msgid "Preparing" -msgstr "" +msgstr "Подготовка" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 msgctxt "@label:status" msgid "Available" -msgstr "" +msgstr "Доступен" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 msgctxt "@label" msgid "Completed on: " -msgstr "" +msgstr "Выполнено на:" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 msgctxt "@label" msgid "Clear build plate" -msgstr "" +msgstr "Очистите стол" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 msgctxt "@label" msgid "Preparing to print" -msgstr "" +msgstr "Подготовка к печати" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 msgctxt "@label" msgid "Not accepting print jobs" -msgstr "" +msgstr "Не принимает задания на печать" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." -msgstr "" +msgstr "Открывает страницу с заданиями на печать в вашем браузере." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 msgctxt "@action:button" msgid "View print jobs" -msgstr "" +msgstr "Просмотреть задания на печать" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 msgctxt "@label" msgid "PRINTER GROUP" -msgstr "" +msgstr "ГРУППА ПРИНТЕРОВ" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 msgctxt "@title" msgid "Print jobs" -msgstr "" +msgstr "Задания на печать" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 msgctxt "@label" msgid "Printing" -msgstr "" +msgstr "Печать" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 msgctxt "@label" msgid "Queued" -msgstr "" +msgstr "Запланировано" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 msgctxt "@label" msgid "Waiting for configuration change" -msgstr "" +msgstr "Ожидание изменения конфигурации" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 msgctxt "@label:title" msgid "Printers" -msgstr "" +msgstr "Принтеры" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 msgctxt "@action:button" msgid "View printers" -msgstr "" +msgstr "Просмотреть принтеры" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" @@ -2052,7 +2052,7 @@ msgstr "Установлено" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" -msgstr "" +msgstr "Лицензионное соглашение плагина" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" @@ -2061,16 +2061,19 @@ msgid "" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" msgstr "" +" плагин содержит лицензию.\n" +"Вам требуется принять лицензию для установки данного плагина.\n" +"Вы согласны с написанным ниже?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" msgid "Accept" -msgstr "" +msgstr "Принять" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 msgctxt "@action:button" msgid "Decline" -msgstr "" +msgstr "Отклонить" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -2911,12 +2914,12 @@ msgstr "Импортировать материал" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "" +msgstr "Не могу импортировать материал %1: %2" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "" +msgstr "Успешно импортированный материал %1" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2927,12 +2930,12 @@ msgstr "Экспортировать материал" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "" +msgstr "Не могу экспортировать материал %1: %2" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "" +msgstr "Материал успешно экспортирован в %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 @@ -3180,22 +3183,22 @@ msgstr "00ч 00мин" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 msgctxt "@tooltip" msgid "Time information" -msgstr "" +msgstr "Информация о времени" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 msgctxt "@description" msgid "Print time" -msgstr "" +msgstr "Время печати" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 msgctxt "@label" msgid "%1m / ~ %2g / ~ %4 %3" -msgstr "" +msgstr "%1м / ~ %2гр / ~ %4 %3" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 msgctxt "@label" msgid "%1m / ~ %2g" -msgstr "" +msgstr "%1м / ~ %2гр" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" @@ -3257,12 +3260,12 @@ msgstr "Принтер не подключен" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" msgid "Extruder" -msgstr "" +msgstr "Экструдер" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." -msgstr "" +msgstr "Целевая температура сопла. Сопло будет нагрето или остужено до указанной температуры. Если значение равно 0, то нагрев будет отключен." #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" @@ -3734,27 +3737,27 @@ msgstr "Подготовка" #: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" msgid "Monitor" -msgstr "" +msgstr "Монитор" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 msgctxt "@label" msgid "Layer Height" -msgstr "" +msgstr "Высота слоя" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 msgctxt "@label" msgid "Print Speed" -msgstr "" +msgstr "Скорость печати" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 msgctxt "@label" msgid "Slower" -msgstr "" +msgstr "Медленнее" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 msgctxt "@label" msgid "Faster" -msgstr "" +msgstr "Быстрее" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" @@ -3769,7 +3772,7 @@ msgstr "Постепенное заполнение будет постепен #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 msgctxt "@label" msgid "Enable gradual" -msgstr "" +msgstr "Постепенное" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" @@ -3847,7 +3850,7 @@ msgstr "Материал" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 msgctxt "@label" msgid "Check material compatibility" -msgstr "" +msgstr "Проверить совместимость материала" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" @@ -3907,12 +3910,12 @@ msgstr "Режим бога" #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "description" msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "" +msgstr "Принять G-code и отправить его через WiFi на Doodle3D WiFi-Box." #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "name" msgid "Doodle3D WiFi-Box" -msgstr "" +msgstr "Doodle3D WiFi-Box" #: ChangeLogPlugin/plugin.json msgctxt "description" @@ -3967,17 +3970,17 @@ msgstr "Соединение с сетью UM3" #: CuraPrintClusterUpload/plugin.json msgctxt "name" msgid "UM3 Network Connection (Cluster)" -msgstr "" +msgstr "Соединение с сетью UM3 (кластер)" #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." -msgstr "" +msgstr "Проверяет наличие обновлений ПО." #: FirmwareUpdateChecker/plugin.json msgctxt "name" msgid "Firmware Update Checker" -msgstr "" +msgstr "Проверка обновлений" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" @@ -4072,7 +4075,7 @@ msgstr "Обновление версии с 2.5 до 2.6" #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -msgstr "" +msgstr "Обновляет конфигурацию Cura 2.7 до Cura 3.0." #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "name" diff --git a/resources/i18n/ru_RU/fdmprinter.def.json.po b/resources/i18n/ru_RU/fdmprinter.def.json.po index c68235c988..520ff0f12c 100755 --- a/resources/i18n/ru_RU/fdmprinter.def.json.po +++ b/resources/i18n/ru_RU/fdmprinter.def.json.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: Cura 2.7\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-09 19:26+0300\n" +"PO-Revision-Date: 2017-09-23 11:19+0300\n" "Last-Translator: Ruslan Popov \n" "Language-Team: Ruslan Popov\n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0\n" +"X-Generator: Poedit 2.0.4\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: fdmprinter.def.json @@ -1124,7 +1124,7 @@ msgstr "Случайно" #: fdmprinter.def.json msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" -msgstr "" +msgstr "Острейший угол" #: fdmprinter.def.json msgctxt "z_seam_x label" @@ -1149,32 +1149,32 @@ msgstr "Y координата позиции вблизи которой сле #: fdmprinter.def.json msgctxt "z_seam_corner label" msgid "Seam Corner Preference" -msgstr "" +msgstr "Настройки угла шва" #: fdmprinter.def.json msgctxt "z_seam_corner description" msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "" +msgstr "Управляет влиянием углов на контуре модели на позицию шва. Нет означает отсутствие влияния. Спрятать шов означает по возможности перенести шов внутрь угла. Показать шов означает по возможности перенести шов наружу. Спрятать или показать означает выбор по ситуации." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" msgid "None" -msgstr "" +msgstr "Нет" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_inner" msgid "Hide Seam" -msgstr "" +msgstr "Спрятать шов" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_outer" msgid "Expose Seam" -msgstr "" +msgstr "Показать шов" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" -msgstr "" +msgstr "Спрятать или показать" #: fdmprinter.def.json msgctxt "z_seam_relative label" @@ -1254,7 +1254,7 @@ msgstr "Шаблон заполнения" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "Шаблон заполнения при печати. Заполнение линиями или зиг-загом меняет направление на соседних слоях, уменьшая стоимость материала. Сетчатый, треугольный, кубический, восьмигранный и концентрический шаблоны полностью печатаются на каждом слое. Кубическое, четверть кубическое и восьмигранное заполнение меняется на каждом слое для получения более равного распределения по каждому направлению." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1284,12 +1284,12 @@ msgstr "Динамический куб" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" msgid "Octet" -msgstr "" +msgstr "Восьмигранник" #: fdmprinter.def.json msgctxt "infill_pattern option quarter_cubic" msgid "Quarter Cubic" -msgstr "" +msgstr "Четверть куба" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1309,22 +1309,22 @@ msgstr "Зигзаг" #: fdmprinter.def.json msgctxt "infill_pattern option cross" msgid "Cross" -msgstr "" +msgstr "Крестовое" #: fdmprinter.def.json msgctxt "infill_pattern option cross_3d" msgid "Cross 3D" -msgstr "" +msgstr "Крестовое 3D" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" msgid "Connect Infill Lines" -msgstr "" +msgstr "Соединять линии заполнения" #: fdmprinter.def.json msgctxt "zig_zaggify_infill description" msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." -msgstr "" +msgstr "Соединять концы линий заполнения где они соприкасаются со внутренней стенкой, используя линии, которые продолжают форму внутренней стенки. Активация этого параметра поможет крепче связывать заполнение со стенками и уменьшить влияние на качество заполнения вертикальных поверхностей. Отключение этого параметра уменьшает объём используемого материала." #: fdmprinter.def.json msgctxt "infill_angles label" @@ -1449,32 +1449,32 @@ msgstr "Не генерировать области заполнения мен #: fdmprinter.def.json msgctxt "skin_preshrink label" msgid "Skin Removal Width" -msgstr "" +msgstr "Ширина удаляемой оболочки" #: fdmprinter.def.json msgctxt "skin_preshrink description" msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." -msgstr "" +msgstr "Наибольшая ширина областей оболочки, которые будут удалены. Каждая область оболочки, которая меньше указанного значения, будет удалена. Это может помочь с сокращением затрат времени и материала при печати верхних/нижних оболочек наклонных поверхностей модели." #: fdmprinter.def.json msgctxt "top_skin_preshrink label" msgid "Top Skin Removal Width" -msgstr "" +msgstr "Ширина удаляемой оболочки сверху" #: fdmprinter.def.json msgctxt "top_skin_preshrink description" msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." -msgstr "" +msgstr "Наибольшая ширина областей оболочки, которые будут удалены. Каждая область оболочки, которая меньше указанного значения, будет удалена. Это может помочь с сокращением затрат времени и материала при печати верхних оболочек наклонных поверхностей модели." #: fdmprinter.def.json msgctxt "bottom_skin_preshrink label" msgid "Bottom Skin Removal Width" -msgstr "" +msgstr "Ширина удаляемой оболочки снизу" #: fdmprinter.def.json msgctxt "bottom_skin_preshrink description" msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." -msgstr "" +msgstr "Наибольшая ширина областей оболочки, которые будут удалены. Каждая область оболочки, которая меньше указанного значения, будет удалена. Это может помочь с сокращением затрат времени и материала при печати нижних оболочек наклонных поверхностей модели." #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1484,27 +1484,27 @@ msgstr "Дистанция расширения оболочки" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." -msgstr "" +msgstr "Расстояние на которое оболочки внедряются в заполнение. Большие значения лучше связывают оболочку с шаблоном заполнения и стенками. Меньшие значения сохраняют используемый материал." #: fdmprinter.def.json msgctxt "top_skin_expand_distance label" msgid "Top Skin Expand Distance" -msgstr "" +msgstr "Дистанция расширения оболочки сверху" #: fdmprinter.def.json msgctxt "top_skin_expand_distance description" msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." -msgstr "" +msgstr "Расстояние на которое верхние оболочки входят в заполнение. Большие значения лучше связывают оболочку с шаблоном заполнения и стенками. Меньшие значения сохраняют используемый материал." #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance label" msgid "Bottom Skin Expand Distance" -msgstr "" +msgstr "Расстояние расширения оболочки снизу" #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance description" msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." -msgstr "" +msgstr "Расстояние на которое нижние оболочки входят в заполнение. Большие значения лучше связывают оболочку с шаблоном заполнения и стенками. Меньшие значения сохраняют используемый материал." #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -2824,7 +2824,7 @@ msgstr "Зигзаг" #: fdmprinter.def.json msgctxt "support_pattern option cross" msgid "Cross" -msgstr "" +msgstr "Крест" #: fdmprinter.def.json msgctxt "support_connect_zigzags label" @@ -2839,32 +2839,32 @@ msgstr "Соединяет зигзаги. Это увеличивает про #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" -msgstr "" +msgstr "Разбить поддержки на части" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." -msgstr "" +msgstr "Пропускать некоторые соединения в поддержках для облегчения их последующего удаления. Этот параметр влияет на зиг-заг шаблон заполнения." #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm label" msgid "Support Chunk Size" -msgstr "" +msgstr "Размер части поддержек" #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm description" msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." -msgstr "" +msgstr "Пропускать соединение между линиями поддержки каждые N миллиметров для облегчения последующего удаления поддержек." #: fdmprinter.def.json msgctxt "support_zag_skip_count label" msgid "Support Chunk Line Count" -msgstr "" +msgstr "Количество частей линий поддержки" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" msgid "Skip one in every N connection lines to make the support structure easier to break away." -msgstr "" +msgstr "Пропускать одну линию на каждые N соединительных линий, облегчая последующее удаление поддержек." #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3453,22 +3453,22 @@ msgstr "Печатать кайму только на внешней сторо #: fdmprinter.def.json msgctxt "z_offset_layer_0 label" msgid "Initial Layer Z Offset" -msgstr "" +msgstr "Смещение первого Z слоя" #: fdmprinter.def.json msgctxt "z_offset_layer_0 description" msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." -msgstr "" +msgstr "Экструдер смещается от стола на указанное значение при печати первого слоя. Значение может быть положительным (выше) или отрицательным (ниже). Некоторые типы материала связываются со столом лучше, когда экструдер чуть приподнят над столом." #: fdmprinter.def.json msgctxt "z_offset_taper_layers label" msgid "Z Offset Taper Layers" -msgstr "" +msgstr "Компенсация Z смещения" #: fdmprinter.def.json msgctxt "z_offset_taper_layers description" msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." -msgstr "" +msgstr "Если не ноль, то Z смещение уменьшается до 0 на указанном слое. Значение 0 указывает, что Z смещение остаётся постоянным на всех слоях печати." #: fdmprinter.def.json msgctxt "raft_margin label" @@ -3483,12 +3483,12 @@ msgstr "Если подложка включена, это дополнител #: fdmprinter.def.json msgctxt "raft_smoothing label" msgid "Raft Smoothing" -msgstr "" +msgstr "Сглаживание подложки" #: fdmprinter.def.json msgctxt "raft_smoothing description" msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." -msgstr "" +msgstr "Данный параметр управляет тем, сколько внутренних углов в контуре будет сглажено. Внутренние углы сглаживаются полукругами с радиусом равным указанному значению. Данный параметр также убирает отверстия в контуре подложки, которые меньше получающегося круга." #: fdmprinter.def.json msgctxt "raft_airgap label" @@ -4168,12 +4168,12 @@ msgstr "Сглаживает спиральные контуры для умен #: fdmprinter.def.json msgctxt "relative_extrusion label" msgid "Relative Extrusion" -msgstr "" +msgstr "Отностительная экструзия" #: fdmprinter.def.json msgctxt "relative_extrusion description" msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." -msgstr "" +msgstr "Использовать относительную, а не абсолютную экструзию. Использование относительной экструзии упрощает пост-обработку G-code. Однако, она не поддерживается всеми принтерами и может приводить к некоторой неточности при выдавливании материала. Независимо от этого параметра, режим экструзии будет всегда абсолютным перед выводом любого G-code скрипта." #: fdmprinter.def.json msgctxt "experimental label" @@ -4188,12 +4188,12 @@ msgstr "экспериментальное!" #: fdmprinter.def.json msgctxt "optimize_wall_printing_order label" msgid "Optimize Wall Printing Order" -msgstr "" +msgstr "Оптимазация порядка печати стенок" #: fdmprinter.def.json msgctxt "optimize_wall_printing_order description" msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "" +msgstr "Оптимизирует порядок, в котором печатаются стенки для уменьшения количества откатов и перемещений. Большинство моделей будут распечатываться быстрее, но не все. Сравнивайте печать с оптимизацией и без." #: fdmprinter.def.json msgctxt "draft_shield_enabled label" @@ -4318,22 +4318,22 @@ msgstr "Изменить направление, в котором печата #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" -msgstr "" +msgstr "Размер карманов креста 3D" #: fdmprinter.def.json msgctxt "cross_infill_pocket_size description" msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." -msgstr "" +msgstr "Размер карманов при печати шаблоном крест 3D по высоте, когда шаблон касается сам себя." #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly label" msgid "Alternate Cross 3D Pockets" -msgstr "" +msgstr "Смена карманов креста 3D" #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly description" msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." -msgstr "" +msgstr "Применяется только к карманам на половине шаблона креста 3D и меняет расположение карманов по высоте, когда шаблон касается сам себя." #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" @@ -4757,12 +4757,12 @@ msgstr "Проходить по верхней оболочке ещё раз, #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" msgid "Iron Only Highest Layer" -msgstr "" +msgstr "Самый высокий слой разглаживания" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer description" msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." -msgstr "" +msgstr "Выполняет разглаживание только на самом последнем слое модели. Экономит время, когда нижние слои не требуют сглаживания поверхности." #: fdmprinter.def.json msgctxt "ironing_pattern label" From 5e0052dcb6e7f7d5d0c66bf5ea51151b425ed8f0 Mon Sep 17 00:00:00 2001 From: Ruben D Date: Sun, 24 Sep 2017 13:56:32 +0200 Subject: [PATCH 254/589] Update version number for translation documents These are the files for version 3.0 after all. Contributes to issue CURA-4341. --- resources/i18n/de_DE/cura.po | 2 +- resources/i18n/de_DE/fdmextruder.def.json.po | 2 +- resources/i18n/de_DE/fdmprinter.def.json.po | 2 +- resources/i18n/es_ES/cura.po | 2 +- resources/i18n/es_ES/fdmextruder.def.json.po | 2 +- resources/i18n/es_ES/fdmprinter.def.json.po | 2 +- resources/i18n/fi_FI/cura.po | 2 +- resources/i18n/fi_FI/fdmextruder.def.json.po | 2 +- resources/i18n/fi_FI/fdmprinter.def.json.po | 2 +- resources/i18n/fr_FR/cura.po | 2 +- resources/i18n/fr_FR/fdmextruder.def.json.po | 2 +- resources/i18n/fr_FR/fdmprinter.def.json.po | 2 +- resources/i18n/it_IT/cura.po | 2 +- resources/i18n/it_IT/fdmextruder.def.json.po | 2 +- resources/i18n/it_IT/fdmprinter.def.json.po | 2 +- resources/i18n/ja_JP/cura.po | 2 +- resources/i18n/ja_JP/fdmextruder.def.json.po | 2 +- resources/i18n/ja_JP/fdmprinter.def.json.po | 2 +- resources/i18n/ko_KR/cura.po | 2 +- resources/i18n/ko_KR/fdmextruder.def.json.po | 2 +- resources/i18n/ko_KR/fdmprinter.def.json.po | 2 +- resources/i18n/nl_NL/cura.po | 2 +- resources/i18n/nl_NL/fdmextruder.def.json.po | 2 +- resources/i18n/nl_NL/fdmprinter.def.json.po | 2 +- resources/i18n/pl_PL/cura.po | 2 +- resources/i18n/pl_PL/fdmextruder.def.json.po | 2 +- resources/i18n/pl_PL/fdmprinter.def.json.po | 2 +- resources/i18n/pt_BR/cura.po | 2 +- resources/i18n/pt_BR/fdmextruder.def.json.po | 2 +- resources/i18n/pt_BR/fdmprinter.def.json.po | 2 +- resources/i18n/ru_RU/cura.po | 2 +- resources/i18n/ru_RU/fdmextruder.def.json.po | 2 +- resources/i18n/ru_RU/fdmprinter.def.json.po | 2 +- resources/i18n/tr_TR/cura.po | 2 +- resources/i18n/tr_TR/fdmextruder.def.json.po | 2 +- resources/i18n/tr_TR/fdmprinter.def.json.po | 2 +- resources/i18n/zh_CN/cura.po | 2 +- resources/i18n/zh_CN/fdmextruder.def.json.po | 2 +- resources/i18n/zh_CN/fdmprinter.def.json.po | 2 +- 39 files changed, 39 insertions(+), 39 deletions(-) diff --git a/resources/i18n/de_DE/cura.po b/resources/i18n/de_DE/cura.po index 9be716a954..e9ca7712aa 100644 --- a/resources/i18n/de_DE/cura.po +++ b/resources/i18n/de_DE/cura.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:30+0200\n" diff --git a/resources/i18n/de_DE/fdmextruder.def.json.po b/resources/i18n/de_DE/fdmextruder.def.json.po index 72980753d2..68e38e8ff6 100644 --- a/resources/i18n/de_DE/fdmextruder.def.json.po +++ b/resources/i18n/de_DE/fdmextruder.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:30+0200\n" diff --git a/resources/i18n/de_DE/fdmprinter.def.json.po b/resources/i18n/de_DE/fdmprinter.def.json.po index 9097323729..43f79528fd 100644 --- a/resources/i18n/de_DE/fdmprinter.def.json.po +++ b/resources/i18n/de_DE/fdmprinter.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:31+0200\n" diff --git a/resources/i18n/es_ES/cura.po b/resources/i18n/es_ES/cura.po index 504815d41b..1d82a4bb3b 100644 --- a/resources/i18n/es_ES/cura.po +++ b/resources/i18n/es_ES/cura.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:30+0200\n" diff --git a/resources/i18n/es_ES/fdmextruder.def.json.po b/resources/i18n/es_ES/fdmextruder.def.json.po index 13adfd182d..a435f60aae 100644 --- a/resources/i18n/es_ES/fdmextruder.def.json.po +++ b/resources/i18n/es_ES/fdmextruder.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:31+0200\n" diff --git a/resources/i18n/es_ES/fdmprinter.def.json.po b/resources/i18n/es_ES/fdmprinter.def.json.po index 65d0218dab..eed272eb61 100644 --- a/resources/i18n/es_ES/fdmprinter.def.json.po +++ b/resources/i18n/es_ES/fdmprinter.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:31+0200\n" diff --git a/resources/i18n/fi_FI/cura.po b/resources/i18n/fi_FI/cura.po index f4fdbf58be..06979a8d4f 100644 --- a/resources/i18n/fi_FI/cura.po +++ b/resources/i18n/fi_FI/cura.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:30+0200\n" diff --git a/resources/i18n/fi_FI/fdmextruder.def.json.po b/resources/i18n/fi_FI/fdmextruder.def.json.po index a8678ba379..ea50325417 100644 --- a/resources/i18n/fi_FI/fdmextruder.def.json.po +++ b/resources/i18n/fi_FI/fdmextruder.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:31+0200\n" diff --git a/resources/i18n/fi_FI/fdmprinter.def.json.po b/resources/i18n/fi_FI/fdmprinter.def.json.po index 000530a44f..c2277a7d66 100644 --- a/resources/i18n/fi_FI/fdmprinter.def.json.po +++ b/resources/i18n/fi_FI/fdmprinter.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:31+0200\n" diff --git a/resources/i18n/fr_FR/cura.po b/resources/i18n/fr_FR/cura.po index 38bb413f05..21dd2e9882 100644 --- a/resources/i18n/fr_FR/cura.po +++ b/resources/i18n/fr_FR/cura.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:30+0200\n" diff --git a/resources/i18n/fr_FR/fdmextruder.def.json.po b/resources/i18n/fr_FR/fdmextruder.def.json.po index 4fd4448e30..70279e97d9 100644 --- a/resources/i18n/fr_FR/fdmextruder.def.json.po +++ b/resources/i18n/fr_FR/fdmextruder.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:31+0200\n" diff --git a/resources/i18n/fr_FR/fdmprinter.def.json.po b/resources/i18n/fr_FR/fdmprinter.def.json.po index ffeb2e1b05..13df6ba204 100644 --- a/resources/i18n/fr_FR/fdmprinter.def.json.po +++ b/resources/i18n/fr_FR/fdmprinter.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:31+0200\n" diff --git a/resources/i18n/it_IT/cura.po b/resources/i18n/it_IT/cura.po index 9116394927..98c7db5fcc 100644 --- a/resources/i18n/it_IT/cura.po +++ b/resources/i18n/it_IT/cura.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:30+0200\n" diff --git a/resources/i18n/it_IT/fdmextruder.def.json.po b/resources/i18n/it_IT/fdmextruder.def.json.po index 56155c84bc..75d0d77472 100644 --- a/resources/i18n/it_IT/fdmextruder.def.json.po +++ b/resources/i18n/it_IT/fdmextruder.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:31+0200\n" diff --git a/resources/i18n/it_IT/fdmprinter.def.json.po b/resources/i18n/it_IT/fdmprinter.def.json.po index 1a31c23913..49577d5ead 100644 --- a/resources/i18n/it_IT/fdmprinter.def.json.po +++ b/resources/i18n/it_IT/fdmprinter.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:31+0200\n" diff --git a/resources/i18n/ja_JP/cura.po b/resources/i18n/ja_JP/cura.po index 4068425769..5880cb9255 100644 --- a/resources/i18n/ja_JP/cura.po +++ b/resources/i18n/ja_JP/cura.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-03-27 17:27+0200\n" diff --git a/resources/i18n/ja_JP/fdmextruder.def.json.po b/resources/i18n/ja_JP/fdmextruder.def.json.po index 9605e3b409..1ac7d5442f 100644 --- a/resources/i18n/ja_JP/fdmextruder.def.json.po +++ b/resources/i18n/ja_JP/fdmextruder.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-04 10:18+0900\n" diff --git a/resources/i18n/ja_JP/fdmprinter.def.json.po b/resources/i18n/ja_JP/fdmprinter.def.json.po index 655df9441e..cbe60b3248 100644 --- a/resources/i18n/ja_JP/fdmprinter.def.json.po +++ b/resources/i18n/ja_JP/fdmprinter.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-14 15:18+0900\n" diff --git a/resources/i18n/ko_KR/cura.po b/resources/i18n/ko_KR/cura.po index c26e00a401..b76295ebb3 100644 --- a/resources/i18n/ko_KR/cura.po +++ b/resources/i18n/ko_KR/cura.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-03-27 17:27+0200\n" diff --git a/resources/i18n/ko_KR/fdmextruder.def.json.po b/resources/i18n/ko_KR/fdmextruder.def.json.po index 1cfdaa11a8..4fcb7ffffb 100644 --- a/resources/i18n/ko_KR/fdmextruder.def.json.po +++ b/resources/i18n/ko_KR/fdmextruder.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-08 21:57+0900\n" diff --git a/resources/i18n/ko_KR/fdmprinter.def.json.po b/resources/i18n/ko_KR/fdmprinter.def.json.po index 506f76b66f..68e4c7db1d 100644 --- a/resources/i18n/ko_KR/fdmprinter.def.json.po +++ b/resources/i18n/ko_KR/fdmprinter.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-08 23:38+0900\n" diff --git a/resources/i18n/nl_NL/cura.po b/resources/i18n/nl_NL/cura.po index 5f65c5220f..0581d8209e 100644 --- a/resources/i18n/nl_NL/cura.po +++ b/resources/i18n/nl_NL/cura.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:30+0200\n" diff --git a/resources/i18n/nl_NL/fdmextruder.def.json.po b/resources/i18n/nl_NL/fdmextruder.def.json.po index ff8dd364d4..989f366539 100644 --- a/resources/i18n/nl_NL/fdmextruder.def.json.po +++ b/resources/i18n/nl_NL/fdmextruder.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:30+0200\n" diff --git a/resources/i18n/nl_NL/fdmprinter.def.json.po b/resources/i18n/nl_NL/fdmprinter.def.json.po index 1c566ae3c1..8814e03e1c 100644 --- a/resources/i18n/nl_NL/fdmprinter.def.json.po +++ b/resources/i18n/nl_NL/fdmprinter.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:31+0200\n" diff --git a/resources/i18n/pl_PL/cura.po b/resources/i18n/pl_PL/cura.po index 748e969bdf..e8f40af92d 100644 --- a/resources/i18n/pl_PL/cura.po +++ b/resources/i18n/pl_PL/cura.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-03 16:14+0200\n" diff --git a/resources/i18n/pl_PL/fdmextruder.def.json.po b/resources/i18n/pl_PL/fdmextruder.def.json.po index 9ffea3316f..7a75a558d6 100644 --- a/resources/i18n/pl_PL/fdmextruder.def.json.po +++ b/resources/i18n/pl_PL/fdmextruder.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-04 12:25+0200\n" diff --git a/resources/i18n/pl_PL/fdmprinter.def.json.po b/resources/i18n/pl_PL/fdmprinter.def.json.po index 4df9eec09e..5af6291ff0 100644 --- a/resources/i18n/pl_PL/fdmprinter.def.json.po +++ b/resources/i18n/pl_PL/fdmprinter.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-05 22:00+0200\n" diff --git a/resources/i18n/pt_BR/cura.po b/resources/i18n/pt_BR/cura.po index 97133430f2..641f113c8b 100644 --- a/resources/i18n/pt_BR/cura.po +++ b/resources/i18n/pt_BR/cura.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-15 07:20-0300\n" diff --git a/resources/i18n/pt_BR/fdmextruder.def.json.po b/resources/i18n/pt_BR/fdmextruder.def.json.po index e6a18bbe8a..64b4a3990e 100644 --- a/resources/i18n/pt_BR/fdmextruder.def.json.po +++ b/resources/i18n/pt_BR/fdmextruder.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-14 04:00-0300\n" diff --git a/resources/i18n/pt_BR/fdmprinter.def.json.po b/resources/i18n/pt_BR/fdmprinter.def.json.po index 0633fd6552..4512cd2b59 100644 --- a/resources/i18n/pt_BR/fdmprinter.def.json.po +++ b/resources/i18n/pt_BR/fdmprinter.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-15 08:00-0300\n" diff --git a/resources/i18n/ru_RU/cura.po b/resources/i18n/ru_RU/cura.po index 3d4c501924..156494efdc 100755 --- a/resources/i18n/ru_RU/cura.po +++ b/resources/i18n/ru_RU/cura.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-09-23 10:40+0300\n" diff --git a/resources/i18n/ru_RU/fdmextruder.def.json.po b/resources/i18n/ru_RU/fdmextruder.def.json.po index 93b56704e6..7c5abae3bc 100644 --- a/resources/i18n/ru_RU/fdmextruder.def.json.po +++ b/resources/i18n/ru_RU/fdmextruder.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-09 19:26+0300\n" diff --git a/resources/i18n/ru_RU/fdmprinter.def.json.po b/resources/i18n/ru_RU/fdmprinter.def.json.po index 520ff0f12c..d47ace8f7d 100755 --- a/resources/i18n/ru_RU/fdmprinter.def.json.po +++ b/resources/i18n/ru_RU/fdmprinter.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-09-23 11:19+0300\n" diff --git a/resources/i18n/tr_TR/cura.po b/resources/i18n/tr_TR/cura.po index 6d234bd372..6de9035df8 100644 --- a/resources/i18n/tr_TR/cura.po +++ b/resources/i18n/tr_TR/cura.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:30+0200\n" diff --git a/resources/i18n/tr_TR/fdmextruder.def.json.po b/resources/i18n/tr_TR/fdmextruder.def.json.po index afe8879bf7..c1ffae36d3 100644 --- a/resources/i18n/tr_TR/fdmextruder.def.json.po +++ b/resources/i18n/tr_TR/fdmextruder.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:30+0200\n" diff --git a/resources/i18n/tr_TR/fdmprinter.def.json.po b/resources/i18n/tr_TR/fdmprinter.def.json.po index 6342b4f822..c5ae253cfd 100644 --- a/resources/i18n/tr_TR/fdmprinter.def.json.po +++ b/resources/i18n/tr_TR/fdmprinter.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-11 14:31+0200\n" diff --git a/resources/i18n/zh_CN/cura.po b/resources/i18n/zh_CN/cura.po index e7e816f89f..60e0139877 100644 --- a/resources/i18n/zh_CN/cura.po +++ b/resources/i18n/zh_CN/cura.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-28 11:00+0200\n" diff --git a/resources/i18n/zh_CN/fdmextruder.def.json.po b/resources/i18n/zh_CN/fdmextruder.def.json.po index 8d89076087..49c7430422 100644 --- a/resources/i18n/zh_CN/fdmextruder.def.json.po +++ b/resources/i18n/zh_CN/fdmextruder.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-28 11:00+0200\n" diff --git a/resources/i18n/zh_CN/fdmprinter.def.json.po b/resources/i18n/zh_CN/fdmprinter.def.json.po index 78d7007a4e..afeff326f8 100644 --- a/resources/i18n/zh_CN/fdmprinter.def.json.po +++ b/resources/i18n/zh_CN/fdmprinter.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-08-28 11:00+0200\n" From c22928f5d1bdc2a53f7360eaf36d85e73dc44798 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Mon, 25 Sep 2017 08:43:57 +0200 Subject: [PATCH 255/589] Change behavior when there is no suitable item - CURA-4327 --- cura/Settings/ProfilesModel.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py index 9fcffc9f57..715f290352 100644 --- a/cura/Settings/ProfilesModel.py +++ b/cura/Settings/ProfilesModel.py @@ -106,7 +106,10 @@ class ProfilesModel(InstanceContainersModel): qualities = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, extruder_stacks) - all_qualities = QualityManager.getInstance().findAllQualitiesForMachineMaterial(global_container_stack.getBottom(), material) + all_qualities = [] + for extruder in extruder_stacks: + all_qualities.append(QualityManager.getInstance().findAllQualitiesForMachineMaterial(global_container_stack.getBottom(), extruder.material)) + all_qualities2 = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, []) container_registry = ContainerRegistry.getInstance() machine_manager = Application.getInstance().getMachineManager() @@ -138,9 +141,8 @@ class ProfilesModel(InstanceContainersModel): containers = [] for data_item in all_quality_items.values(): suitable_item = data_item["suitable_container"] - if suitable_item is None: - suitable_item = data_item["all_containers"][0] - containers.append(suitable_item) + if suitable_item is not None: + containers.append(suitable_item) # Once the suitable containers are collected, the rest of the containers are appended for data_item in all_quality_items.values(): From 7c1de0c0d2500391649797e10799bb6fbba83332 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 25 Sep 2017 11:28:08 +0200 Subject: [PATCH 256/589] Make Solid View a required plugin. There is no plugin with the id "MeshView" --- cura/CuraApplication.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index c4f3217a1a..1113478937 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -211,7 +211,7 @@ class CuraApplication(QtApplication): self.setRequiredPlugins([ "CuraEngineBackend", - "MeshView", + "SolidView", "LayerView", "STLReader", "SelectionTool", From 4ddfb818970a0c2b176071c48f6cbf1c048e4342 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Mon, 25 Sep 2017 12:31:23 +0200 Subject: [PATCH 257/589] Set raft air gap to 0.25mm for 0.25mm nozzles We haven't tested this (neither did we test 0.3mm what it was originally) but we estimate that this will work a bit better. At least it won't give a warning. --- resources/variants/ultimaker2_0.25.inst.cfg | 1 + resources/variants/ultimaker2_plus_0.25.inst.cfg | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/resources/variants/ultimaker2_0.25.inst.cfg b/resources/variants/ultimaker2_0.25.inst.cfg index b0e860cd57..1637f0ceaa 100644 --- a/resources/variants/ultimaker2_0.25.inst.cfg +++ b/resources/variants/ultimaker2_0.25.inst.cfg @@ -11,3 +11,4 @@ setting_version = 3 [values] machine_nozzle_size = 0.25 machine_nozzle_tip_outer_diameter = 0.8 +raft_airgap = 0.25 \ No newline at end of file diff --git a/resources/variants/ultimaker2_plus_0.25.inst.cfg b/resources/variants/ultimaker2_plus_0.25.inst.cfg index 9aea2e8700..4394090fa4 100644 --- a/resources/variants/ultimaker2_plus_0.25.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.25.inst.cfg @@ -9,10 +9,11 @@ type = variant setting_version = 3 [values] +coasting_min_volume = 0.17 +coasting_volume = 0.1 machine_nozzle_size = 0.25 machine_nozzle_tip_outer_diameter = 0.8 -coasting_volume = 0.1 -coasting_min_volume = 0.17 +raft_airgap = 0.25 +speed_topbottom = =round(speed_print / 1.5, 1) speed_wall = =round(speed_print / 1.2, 1) speed_wall_0 = =1 if speed_wall < 5 else (speed_wall - 5) -speed_topbottom = =round(speed_print / 1.5, 1) From d7ed8244ae002bcedef19d92701c3dfe30c0ecfd Mon Sep 17 00:00:00 2001 From: alekseisasin Date: Mon, 25 Sep 2017 14:32:02 +0200 Subject: [PATCH 258/589] In project loading dialog the CANCLE button did not work CURA-4345 --- plugins/3MFReader/WorkspaceDialog.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 75ee5c30f0..b77e687885 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -235,7 +235,7 @@ class WorkspaceDialog(QObject): self._result["definition_changes"] = None # If the machine needs to be re-created, the definition_changes should also be re-created. - if self._result["machine"] == "new" and self._result["definition_changes"] is None: + if "machine" in self._result and self._result["machine"] == "new" and self._result["definition_changes"] is None: self._result["definition_changes"] = "new" if "material" in self._result and not self._has_material_conflict: @@ -267,7 +267,7 @@ class WorkspaceDialog(QObject): @pyqtSlot() ## Used to notify the dialog so the lock can be released. def notifyClosed(self): - self._result = {} + self._result = {} # The result should be cleared before hide, because after it is released the main thread lock self._visible = False self._lock.release() @@ -283,9 +283,10 @@ class WorkspaceDialog(QObject): @pyqtSlot() def onCancelButtonClicked(self): + self._result = {} self._view.hide() self.hide() - self._result = {} + ## Block thread until the dialog is closed. def waitForClose(self): From 2ae1700a156eebbd6a930245fd5d0f81cf78ee75 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Mon, 25 Sep 2017 14:43:29 +0200 Subject: [PATCH 259/589] Solved the issue with the slider that was no showing in gray the unavailable profiles - CURA-4327 --- cura/QualityManager.py | 25 ---------------- cura/Settings/ProfilesModel.py | 53 +++++++++++++++------------------- 2 files changed, 23 insertions(+), 55 deletions(-) diff --git a/cura/QualityManager.py b/cura/QualityManager.py index 763599ac73..c0b5afb71e 100644 --- a/cura/QualityManager.py +++ b/cura/QualityManager.py @@ -64,19 +64,6 @@ class QualityManager: result = [quality_change for quality_change in result if quality_change.getName() == quality_changes_name] return result - ## Fetch the list of available quality types for this machine definition. - # - # \param machine_definition \type{DefinitionContainer} - # \param material_containers \type{List[InstanceContainer]} - # \return \type{List[str]} - def findAllQualityTypesForMachine(self, machine_definition: "DefinitionContainerInterface") -> List[str]: - # Determine the common set of quality types which can be - # applied to all of the materials for this machine. - quality_type_dict = self.__fetchQualityTypeDict(machine_definition) - common_quality_types = set(quality_type_dict.keys()) - - return list(common_quality_types) - ## Fetch the list of available quality types for this combination of machine definition and materials. # # \param machine_definition \type{DefinitionContainer} @@ -104,18 +91,6 @@ class QualityManager: return list(qualities) - ## Fetches a dict of quality types names to quality profiles for a combination of machine and material. - # - # \param machine_definition \type{DefinitionContainer} the machine definition. - # \param material \type{InstanceContainer} the material. - # \return \type{Dict[str, InstanceContainer]} the dict of suitable quality type names mapping to qualities. - def __fetchQualityTypeDict(self, machine_definition: "DefinitionContainerInterface") -> Dict[str, InstanceContainer]: - qualities = self.findAllQualitiesForMachineMaterial(machine_definition, None) - quality_type_dict = {} - for quality in qualities: - quality_type_dict[quality.getMetaDataEntry("quality_type")] = quality - return quality_type_dict - ## Fetches a dict of quality types names to quality profiles for a combination of machine and material. # # \param machine_definition \type{DefinitionContainer} the machine definition. diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py index 715f290352..c5de9b9136 100644 --- a/cura/Settings/ProfilesModel.py +++ b/cura/Settings/ProfilesModel.py @@ -54,36 +54,36 @@ class ProfilesModel(InstanceContainersModel): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack is None: return [] - # global_stack_definition = global_container_stack.getBottom() + global_stack_definition = global_container_stack.getBottom() # Get the list of extruders and place the selected extruder at the front of the list. extruder_manager = ExtruderManager.getInstance() active_extruder = extruder_manager.getActiveExtruderStack() extruder_stacks = extruder_manager.getActiveExtruderStacks() + materials = [global_container_stack.material] if active_extruder in extruder_stacks: extruder_stacks.remove(active_extruder) extruder_stacks = [active_extruder] + extruder_stacks + materials = [extruder.material for extruder in extruder_stacks] - # if ExtruderManager.getInstance().getActiveExtruderStacks(): - # # Multi-extruder machine detected. - # materials = [extruder.material for extruder in extruder_stacks] - # else: - # # Machine with one extruder. - # materials = [global_container_stack.material] - # - # # Fetch the list of usable qualities across all extruders. - # # The actual list of quality profiles come from the first extruder in the extruder list. - # result = QualityManager.getInstance().findAllQualitiesForMachineAndMaterials(global_stack_definition, - # materials) - # - # for quality in QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders( - # global_container_stack, extruder_stacks): - # if quality not in result: - # result.append(quality) - quality_list = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, - extruder_stacks) + # Fetch the list of usable qualities across all extruders. + # The actual list of quality profiles come from the first extruder in the extruder list. + result = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, extruder_stacks) - return quality_list + # The usable quality types are set + quality_type_set = set([x.getMetaDataEntry("quality_type") for x in result]) + + # Fetch all qualities available for this machine and the materials selected in extruders + all_qualities = QualityManager.getInstance().findAllQualitiesForMachineAndMaterials(global_stack_definition, materials) + + # If in the all qualities there is some of them that are not available due to incompatibility with materials + # we also add it so that they will appear in the slide quality bar. However in recomputeItems will be marked as + # not available so they will be shown in gray + for quality in all_qualities: + if quality.getMetaDataEntry("quality_type") not in quality_type_set: + result.append(quality) + + return result ## Re-computes the items in this model, and adds the layer height role. def _recomputeItems(self): @@ -96,21 +96,14 @@ class ProfilesModel(InstanceContainersModel): extruder_manager = ExtruderManager.getInstance() active_extruder = extruder_manager.getActiveExtruderStack() extruder_stacks = extruder_manager.getActiveExtruderStacks() - material = global_container_stack.material if active_extruder in extruder_stacks: extruder_stacks.remove(active_extruder) extruder_stacks = [active_extruder] + extruder_stacks - material = active_extruder.material - # Get a list of available qualities for this machine and material + # Get a list of usable/available qualities for this machine and material qualities = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, extruder_stacks) - all_qualities = [] - for extruder in extruder_stacks: - all_qualities.append(QualityManager.getInstance().findAllQualitiesForMachineMaterial(global_container_stack.getBottom(), extruder.material)) - all_qualities2 = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, []) - container_registry = ContainerRegistry.getInstance() machine_manager = Application.getInstance().getMachineManager() @@ -129,7 +122,7 @@ class ProfilesModel(InstanceContainersModel): tmp_all_quality_items[quality_type] = {"suitable_container": None, "all_containers": []} tmp_all_quality_items[quality_type]["all_containers"].append(item) - if tmp_all_quality_items[quality_type]["suitable_container"] is None and profile[0] in qualities: + if tmp_all_quality_items[quality_type]["suitable_container"] is None: tmp_all_quality_items[quality_type]["suitable_container"] = item # reverse the ordering (finest first, coarsest last) @@ -154,7 +147,7 @@ class ProfilesModel(InstanceContainersModel): for item in containers: profile = container_registry.findContainers(id=item["id"]) if not profile: - item["layer_height"] = "" # Can't update a profile that is unknown. + self._setItemLayerHeight(item, "", unit) item["available"] = False yield item continue From c33bd80818a72995755bb3c3eeb9b43cc15c26ce Mon Sep 17 00:00:00 2001 From: alekseisasin Date: Mon, 25 Sep 2017 15:38:47 +0200 Subject: [PATCH 260/589] Added NOT SUPPORTED profile for UM2++ and quality slider validation if value:-1 CURA-4182 --- resources/qml/SidebarSimple.qml | 11 ++++++++--- .../ultimaker2_plus/um2p_tpu_0.8_normal.inst.cfg | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 resources/quality/ultimaker2_plus/um2p_tpu_0.8_normal.inst.cfg diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index e53d07ae69..d93dd67550 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -138,8 +138,13 @@ Item function reset () { qualityModel.clear() - qualityModel.totalTicks = Cura.ProfilesModel.rowCount() - 1 // minus one, because slider starts from 0 qualityModel.availableTotalTicks = -1 + + // check, the ticks count cannot be less than zero + if(Cura.ProfilesModel.rowCount() != 0) + qualityModel.totalTicks = Cura.ProfilesModel.rowCount() - 1 // minus one, because slider starts from 0 + else + qualityModel.totalTicks = 0 } } @@ -240,8 +245,8 @@ Item enabled: qualityModel.availableTotalTicks > 0 updateValueWhileDragging : false - minimumValue: qualityModel.qualitySliderAvailableMin - maximumValue: qualityModel.qualitySliderAvailableMax + minimumValue: qualityModel.qualitySliderAvailableMin >= 0 ? qualityModel.qualitySliderAvailableMin : 0 + maximumValue: qualityModel.qualitySliderAvailableMax >= 0 ? qualityModel.qualitySliderAvailableMax : 0 stepSize: 1 value: qualityModel.activeQualityId diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.8_normal.inst.cfg new file mode 100644 index 0000000000..65f9ba383e --- /dev/null +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.8_normal.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 2 +name = Not Supported +definition = ultimaker2_plus + +[metadata] +weight = 0 +type = quality +quality_type = normal +material = generic_tpu_ultimaker2_plus_0.8_mm +supported = False +setting_version = 3 + +[values] + From c5fd0e6c8011db72b0c86fc08dcc564d53ba1f3a Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 25 Sep 2017 22:07:12 +0200 Subject: [PATCH 261/589] Use screenScaleFactor to consistently adapt sizes to display pixel ratio --- plugins/3MFReader/WorkspaceDialog.qml | 16 ++++---- plugins/ImageReader/ConfigUI.qml | 38 +++++++++---------- plugins/LayerView/LayerView.qml | 4 +- .../PerObjectSettingsPanel.qml | 4 +- plugins/PluginBrowser/PluginBrowser.qml | 8 ++-- .../UM3NetworkPrinting/DiscoverUM3Action.qml | 4 +- plugins/USBPrinting/FirmwareUpdateWindow.qml | 8 ++-- .../qml/AskOpenAsProjectOrModelsDialog.qml | 12 +++--- .../qml/DiscardOrKeepProfileChangesDialog.qml | 4 +- resources/qml/ExtruderButton.qml | 2 +- .../qml/OpenFilesIncludingProjectsDialog.qml | 14 +++---- resources/qml/Preferences/GeneralPage.qml | 8 ++-- resources/qml/Preferences/MachinesPage.qml | 8 ++-- resources/qml/Settings/SettingCheckBox.qml | 4 +- resources/qml/Settings/SettingComboBox.qml | 4 +- resources/qml/Settings/SettingExtruder.qml | 4 +- .../qml/Settings/SettingOptionalExtruder.qml | 4 +- resources/qml/SidebarSimple.qml | 14 +++---- resources/qml/Toolbar.qml | 2 +- resources/qml/WorkspaceSummaryDialog.qml | 10 +++-- resources/themes/cura-light/styles.qml | 18 ++++----- 21 files changed, 96 insertions(+), 94 deletions(-) diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 05941530ca..84a5933185 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -12,11 +12,13 @@ UM.Dialog { title: catalog.i18nc("@title:window", "Open Project") - width: 500 - height: 400 + minimumWidth: 500 * screenScaleFactor + minumumHeight: 400 * screenScaleFactor + width: minimumWidth + height: minumumHeight - property int comboboxHeight: 15 - property int spacerHeight: 10 + property int comboboxHeight: 15 * screenScaleFactor + property int spacerHeight: 10 * screenScaleFactor onClosing: manager.notifyClosed() onVisibleChanged: @@ -31,7 +33,7 @@ UM.Dialog Item { anchors.fill: parent - anchors.margins: 20 + anchors.margins: 20 * screenScaleFactor UM.I18nCatalog { @@ -59,7 +61,7 @@ UM.Dialog Column { anchors.fill: parent - spacing: 2 + spacing: 2 * screenScaleFactor Label { id: titleLabel @@ -373,7 +375,7 @@ UM.Dialog enabled: true anchors.bottom: parent.bottom anchors.right: ok_button.left - anchors.rightMargin:2 + anchors.rightMargin: 2 * screenScaleFactor } Button { diff --git a/plugins/ImageReader/ConfigUI.qml b/plugins/ImageReader/ConfigUI.qml index 65374702ab..bcaf47b1fe 100644 --- a/plugins/ImageReader/ConfigUI.qml +++ b/plugins/ImageReader/ConfigUI.qml @@ -10,11 +10,11 @@ import UM 1.1 as UM UM.Dialog { - width: 350 * Screen.devicePixelRatio; - minimumWidth: 350 * Screen.devicePixelRatio; + width: minimumWidth; + minimumWidth: 350 * screenScaleFactor; - height: 250 * Screen.devicePixelRatio; - minimumHeight: 250 * Screen.devicePixelRatio; + height: minimumHeight; + minimumHeight: 250 * screenScaleFactor; title: catalog.i18nc("@title:window", "Convert Image...") @@ -23,8 +23,8 @@ UM.Dialog UM.I18nCatalog{id: catalog; name:"cura"} anchors.fill: parent; Layout.fillWidth: true - columnSpacing: 16 - rowSpacing: 4 + columnSpacing: 16 * screenScaleFactor + rowSpacing: 4 * screenScaleFactor columns: 1 UM.TooltipArea { @@ -36,7 +36,7 @@ UM.Dialog Label { text: catalog.i18nc("@action:label","Height (mm)") - width: 150 + width: 150 * screenScaleFactor anchors.verticalCenter: parent.verticalCenter } @@ -44,7 +44,7 @@ UM.Dialog id: peak_height objectName: "Peak_Height" validator: DoubleValidator {notation: DoubleValidator.StandardNotation; bottom: -500; top: 500;} - width: 180 + width: 180 * screenScaleFactor onTextChanged: { manager.onPeakHeightChanged(text) } } } @@ -59,7 +59,7 @@ UM.Dialog Label { text: catalog.i18nc("@action:label","Base (mm)") - width: 150 + width: 150 * screenScaleFactor anchors.verticalCenter: parent.verticalCenter } @@ -67,7 +67,7 @@ UM.Dialog id: base_height objectName: "Base_Height" validator: DoubleValidator {notation: DoubleValidator.StandardNotation; bottom: 0; top: 500;} - width: 180 + width: 180 * screenScaleFactor onTextChanged: { manager.onBaseHeightChanged(text) } } } @@ -82,7 +82,7 @@ UM.Dialog Label { text: catalog.i18nc("@action:label","Width (mm)") - width: 150 + width: 150 * screenScaleFactor anchors.verticalCenter: parent.verticalCenter } @@ -91,7 +91,7 @@ UM.Dialog objectName: "Width" focus: true validator: DoubleValidator {notation: DoubleValidator.StandardNotation; bottom: 1; top: 500;} - width: 180 + width: 180 * screenScaleFactor onTextChanged: { manager.onWidthChanged(text) } } } @@ -106,7 +106,7 @@ UM.Dialog Label { text: catalog.i18nc("@action:label","Depth (mm)") - width: 150 + width: 150 * screenScaleFactor anchors.verticalCenter: parent.verticalCenter } TextField { @@ -114,7 +114,7 @@ UM.Dialog objectName: "Depth" focus: true validator: DoubleValidator {notation: DoubleValidator.StandardNotation; bottom: 1; top: 500;} - width: 180 + width: 180 * screenScaleFactor onTextChanged: { manager.onDepthChanged(text) } } } @@ -130,14 +130,14 @@ UM.Dialog //Empty label so 2 column layout works. Label { text: "" - width: 150 + width: 150 * screenScaleFactor anchors.verticalCenter: parent.verticalCenter } ComboBox { id: image_color_invert objectName: "Image_Color_Invert" model: [ catalog.i18nc("@item:inlistbox","Lighter is higher"), catalog.i18nc("@item:inlistbox","Darker is higher") ] - width: 180 + width: 180 * screenScaleFactor onCurrentIndexChanged: { manager.onImageColorInvertChanged(currentIndex) } } } @@ -152,13 +152,13 @@ UM.Dialog Label { text: catalog.i18nc("@action:label","Smoothing") - width: 150 + width: 150 * screenScaleFactor anchors.verticalCenter: parent.verticalCenter } Item { - width: 180 - height: 20 + width: 180 * screenScaleFactor + height: 20 * screenScaleFactor Layout.fillWidth: true Slider { diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 21032be6ea..da2b38f6d4 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -111,7 +111,7 @@ Item visible: !UM.LayerView.compatibilityMode style: UM.Theme.styles.combobox anchors.right: parent.right - anchors.rightMargin: 10 + anchors.rightMargin: 10 * screenScaleFactor onActivated: { @@ -602,7 +602,7 @@ Item anchors.leftMargin: UM.Theme.getSize("default_margin").width / 2; anchors.verticalCenter: parent.verticalCenter; - width: Math.max(UM.Theme.getSize("line").width * maxValue.length + 2, 20); + width: Math.max(UM.Theme.getSize("line").width * maxValue.length + 2 * screenScaleFactor, 20); style: TextFieldStyle { textColor: UM.Theme.getColor("setting_control_text"); diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index 28cd2759f6..89c082f19c 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -30,7 +30,7 @@ Item { { // This is to ensure that the panel is first increasing in size up to 200 and then shows a scrollbar. // It kinda looks ugly otherwise (big panel, no content on it) - property int maximumHeight: 200 * Screen.devicePixelRatio + property int maximumHeight: 200 * screenScaleFactor height: Math.min(contents.count * (UM.Theme.getSize("section").height + UM.Theme.getSize("default_lining").height), maximumHeight) ScrollView @@ -246,7 +246,7 @@ Item { id: settingPickDialog title: catalog.i18nc("@title:window", "Select Settings to Customize for this model") - width: Screen.devicePixelRatio * 360; + width: screenScaleFactor * 360; property string labelFilter: "" diff --git a/plugins/PluginBrowser/PluginBrowser.qml b/plugins/PluginBrowser/PluginBrowser.qml index f8a4001443..cbb60aed70 100644 --- a/plugins/PluginBrowser/PluginBrowser.qml +++ b/plugins/PluginBrowser/PluginBrowser.qml @@ -9,10 +9,10 @@ UM.Dialog id: base title: catalog.i18nc("@title:window", "Find & Update plugins") - width: 600 * Screen.devicePixelRatio - height: 450 * Screen.devicePixelRatio - minimumWidth: 350 * Screen.devicePixelRatio - minimumHeight: 350 * Screen.devicePixelRatio + width: 600 * screenScaleFactor + height: 450 * screenScaleFactor + minimumWidth: 350 * screenScaleFactor + minimumHeight: 350 * screenScaleFactor Item { anchors.fill: parent diff --git a/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml b/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml index 58f155533f..216423b5d1 100644 --- a/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml +++ b/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml @@ -298,8 +298,8 @@ Cura.MachineAction title: catalog.i18nc("@title:window", "Printer Address") - minimumWidth: 400 * Screen.devicePixelRatio - minimumHeight: 120 * Screen.devicePixelRatio + minimumWidth: 400 * screenScaleFactor + minimumHeight: 120 * screenScaleFactor width: minimumWidth height: minimumHeight diff --git a/plugins/USBPrinting/FirmwareUpdateWindow.qml b/plugins/USBPrinting/FirmwareUpdateWindow.qml index f55aa4c56e..0e23348d60 100644 --- a/plugins/USBPrinting/FirmwareUpdateWindow.qml +++ b/plugins/USBPrinting/FirmwareUpdateWindow.qml @@ -11,10 +11,10 @@ UM.Dialog { id: base; - width: 500 * Screen.devicePixelRatio; - minimumWidth: 500 * Screen.devicePixelRatio; - height: 100 * Screen.devicePixelRatio; - minimumHeight: 100 * Screen.devicePixelRatio; + width: minimumWidth; + minimumWidth: 500 * screenScaleFactor; + height: minimumHeight; + minimumHeight: 100 * screenScaleFactor; visible: true; modality: Qt.ApplicationModal; diff --git a/resources/qml/AskOpenAsProjectOrModelsDialog.qml b/resources/qml/AskOpenAsProjectOrModelsDialog.qml index df451a58cf..7fb1b939f7 100644 --- a/resources/qml/AskOpenAsProjectOrModelsDialog.qml +++ b/resources/qml/AskOpenAsProjectOrModelsDialog.qml @@ -18,8 +18,8 @@ UM.Dialog id: base title: catalog.i18nc("@title:window", "Open project file") - width: 450 - height: 150 + width: 450 * screenScaleFactor + height: 150 * screenScaleFactor maximumHeight: height maximumWidth: width @@ -61,10 +61,10 @@ UM.Dialog Column { anchors.fill: parent - anchors.leftMargin: 20 - anchors.rightMargin: 20 - anchors.bottomMargin: 20 - spacing: 10 + anchors.leftMargin: 20 * screenScaleFactor + anchors.rightMargin: 20 * screenScaleFactor + anchors.bottomMargin: 20 * screenScaleFactor + spacing: 10 * screenScaleFactor Label { diff --git a/resources/qml/DiscardOrKeepProfileChangesDialog.qml b/resources/qml/DiscardOrKeepProfileChangesDialog.qml index 74b313a6b5..24a22227c1 100644 --- a/resources/qml/DiscardOrKeepProfileChangesDialog.qml +++ b/resources/qml/DiscardOrKeepProfileChangesDialog.qml @@ -14,8 +14,8 @@ UM.Dialog id: base title: catalog.i18nc("@title:window", "Discard or Keep changes") - width: 800 - height: 400 + width: 800 * screenScaleFactor + height: 400 * screenScaleFactor property var changesModel: Cura.UserChangesModel{ id: userChangesModel} onVisibilityChanged: { diff --git a/resources/qml/ExtruderButton.qml b/resources/qml/ExtruderButton.qml index 039158280a..88de797daf 100644 --- a/resources/qml/ExtruderButton.qml +++ b/resources/qml/ExtruderButton.qml @@ -67,7 +67,7 @@ Button height: UM.Theme.getSize("extruder_button_material").height radius: width / 2 - border.width: 1 + border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("extruder_button_material_border") opacity: !base.enabled ? 0.2 : 1.0 diff --git a/resources/qml/OpenFilesIncludingProjectsDialog.qml b/resources/qml/OpenFilesIncludingProjectsDialog.qml index 3c7275a2a4..ade9d0e820 100644 --- a/resources/qml/OpenFilesIncludingProjectsDialog.qml +++ b/resources/qml/OpenFilesIncludingProjectsDialog.qml @@ -17,8 +17,8 @@ UM.Dialog id: base title: catalog.i18nc("@title:window", "Open file(s)") - width: 420 - height: 170 + width: 420 * screenScaleFactor + height: 170 * screenScaleFactor maximumHeight: height maximumWidth: width @@ -28,7 +28,7 @@ UM.Dialog modality: UM.Application.platform == "linux" ? Qt.NonModal : Qt.WindowModal; property var fileUrls: [] - property int spacerHeight: 10 + property int spacerHeight: 10 * screenScaleFactor function loadProjectFile(projectFile) { @@ -52,12 +52,12 @@ UM.Dialog Column { anchors.fill: parent - anchors.leftMargin: 20 - anchors.rightMargin: 20 - anchors.bottomMargin: 20 + anchors.leftMargin: 20 * screenScaleFactor + anchors.rightMargin: 20 * screenScaleFactor + anchors.bottomMargin: 20 * screenScaleFactor anchors.left: parent.left anchors.right: parent.right - spacing: 10 + spacing: 10 * screenScaleFactor Label { diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 452d5df794..6f9e84bfc3 100755 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -513,7 +513,7 @@ UM.PreferencesPage Column { - spacing: 4 + spacing: 4 * screenScaleFactor Label { @@ -523,7 +523,7 @@ UM.PreferencesPage ComboBox { id: choiceOnOpenProjectDropDownButton - width: 200 + width: 200 * screenScaleFactor model: ListModel { @@ -572,7 +572,7 @@ UM.PreferencesPage Column { - spacing: 4 + spacing: 4 * screenScaleFactor Label { @@ -583,7 +583,7 @@ UM.PreferencesPage ComboBox { id: choiceOnProfileOverrideDropDownButton - width: 200 + width: 200 * screenScaleFactor model: ListModel { diff --git a/resources/qml/Preferences/MachinesPage.qml b/resources/qml/Preferences/MachinesPage.qml index 4a62027f66..429400f170 100644 --- a/resources/qml/Preferences/MachinesPage.qml +++ b/resources/qml/Preferences/MachinesPage.qml @@ -91,7 +91,7 @@ UM.ManagementPage Item { - width: childrenRect.width + 2 + width: childrenRect.width + 2 * screenScaleFactor height: childrenRect.height Button { @@ -112,8 +112,6 @@ UM.ManagementPage { id: actionDialog property var content - minimumWidth: 350 - minimumHeight: 350 onContentChanged: { contents = content; @@ -257,8 +255,8 @@ UM.ManagementPage UM.RenameDialog { id: renameDialog; - width: 300 - height: 150 + width: 300 * screenScaleFactor + height: 150 * screenScaleFactor object: base.currentItem && base.currentItem.name ? base.currentItem.name : ""; property var machine_name_validator: Cura.MachineNameValidator { } validName: renameDialog.newName.match(renameDialog.machine_name_validator.machineNameRegex) != null; diff --git a/resources/qml/Settings/SettingCheckBox.qml b/resources/qml/Settings/SettingCheckBox.qml index 4ef7f59a77..9919c6aad9 100644 --- a/resources/qml/Settings/SettingCheckBox.qml +++ b/resources/qml/Settings/SettingCheckBox.qml @@ -119,8 +119,8 @@ SettingItem UM.RecolorImage { anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter - width: parent.width/2.5 - height: parent.height/2.5 + width: parent.width / 2.5 + height: parent.height / 2.5 sourceSize.width: width sourceSize.height: width color: !enabled ? UM.Theme.getColor("setting_control_disabled_text") : UM.Theme.getColor("setting_control_text"); diff --git a/resources/qml/Settings/SettingComboBox.qml b/resources/qml/Settings/SettingComboBox.qml index c29ac123d6..2ff0eba2df 100644 --- a/resources/qml/Settings/SettingComboBox.qml +++ b/resources/qml/Settings/SettingComboBox.qml @@ -86,8 +86,8 @@ SettingItem source: UM.Theme.getIcon("arrow_bottom") width: UM.Theme.getSize("standard_arrow").width height: UM.Theme.getSize("standard_arrow").height - sourceSize.width: width + 5 - sourceSize.height: width + 5 + sourceSize.width: width + 5 * screenScaleFactor + sourceSize.height: width + 5 * screenScaleFactor color: UM.Theme.getColor("setting_control_text"); diff --git a/resources/qml/Settings/SettingExtruder.qml b/resources/qml/Settings/SettingExtruder.qml index ac9f6a29eb..1c94ac938d 100644 --- a/resources/qml/Settings/SettingExtruder.qml +++ b/resources/qml/Settings/SettingExtruder.qml @@ -137,8 +137,8 @@ SettingItem source: UM.Theme.getIcon("arrow_bottom") width: UM.Theme.getSize("standard_arrow").width height: UM.Theme.getSize("standard_arrow").height - sourceSize.width: width + 5 - sourceSize.height: width + 5 + sourceSize.width: width + 5 * screenScaleFactor + sourceSize.height: width + 5 * screenScaleFactor color: UM.Theme.getColor("setting_control_text") } diff --git a/resources/qml/Settings/SettingOptionalExtruder.qml b/resources/qml/Settings/SettingOptionalExtruder.qml index 4e49f0440e..9d8ee72dd7 100644 --- a/resources/qml/Settings/SettingOptionalExtruder.qml +++ b/resources/qml/Settings/SettingOptionalExtruder.qml @@ -156,8 +156,8 @@ SettingItem source: UM.Theme.getIcon("arrow_bottom") width: UM.Theme.getSize("standard_arrow").width height: UM.Theme.getSize("standard_arrow").height - sourceSize.width: width + 5 - sourceSize.height: width + 5 + sourceSize.width: width + 5 * screenScaleFactor + sourceSize.height: width + 5 * screenScaleFactor color: UM.Theme.getColor("setting_control_text") } diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index e53d07ae69..1d85cffead 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -408,8 +408,8 @@ Item groove: Rectangle { id: groove - implicitWidth: 200 - implicitHeight: 2 + implicitWidth: 200 * screenScaleFactor + implicitHeight: 2 * screenScaleFactor color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") radius: 1 } @@ -419,8 +419,8 @@ Item id: handleButton anchors.centerIn: parent color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - implicitWidth: 10 - implicitHeight: 10 + implicitWidth: 10 * screenScaleFactor + implicitHeight: 10 * screenScaleFactor radius: 10 } } @@ -431,8 +431,8 @@ Item Rectangle { anchors.verticalCenter: parent.verticalCenter color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - width: 1 - height: 6 + width: 1 * screenScaleFactor + height: 6 * screenScaleFactor y: 0 x: styleData.handleWidth / 2 + index * ((repeater.width - styleData.handleWidth) / (repeater.count-1)) } @@ -484,7 +484,7 @@ Item UM.RecolorImage { anchors.fill: parent - anchors.margins: 2 + anchors.margins: 2 * screenScaleFactor sourceSize.width: width sourceSize.height: width source: UM.Theme.getIcon(model.icon) diff --git a/resources/qml/Toolbar.qml b/resources/qml/Toolbar.qml index dd57fcc78b..12a3c8ee9b 100644 --- a/resources/qml/Toolbar.qml +++ b/resources/qml/Toolbar.qml @@ -67,7 +67,7 @@ Item } } - Item { height: UM.Theme.getSize("default_margin").height; width: 1; visible: extruders.count > 0 } + Item { height: UM.Theme.getSize("default_margin").height; width: UM.Theme.getSize("default_lining"); visible: extruders.count > 0 } Repeater { diff --git a/resources/qml/WorkspaceSummaryDialog.qml b/resources/qml/WorkspaceSummaryDialog.qml index 5596d9c735..654bbaa3e8 100644 --- a/resources/qml/WorkspaceSummaryDialog.qml +++ b/resources/qml/WorkspaceSummaryDialog.qml @@ -13,10 +13,12 @@ UM.Dialog { title: catalog.i18nc("@title:window", "Save Project") - width: 500 - height: 400 + minimumWidth: 500 * screenScaleFactor + minimumHeight: 400 * screenScaleFactor + width: minimumWidth + height: minimumHeight - property int spacerHeight: 10 + property int spacerHeight: 10 * screenScaleFactor property bool dontShowAgain: true @@ -63,7 +65,7 @@ UM.Dialog Column { anchors.fill: parent - spacing: 2 + spacing: 2 * screenScaleFactor Label { id: titleLabel diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index be3e78990e..f2c387c6b7 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -309,7 +309,7 @@ QtObject { } Behavior on color { ColorAnimation { duration: 50; } } - border.width: (control.hasOwnProperty("needBorder") && control.needBorder) ? 2 : 0 + border.width: (control.hasOwnProperty("needBorder") && control.needBorder) ? 2 * screenScaleFactor : 0 border.color: Theme.getColor("tool_button_border") UM.RecolorImage { @@ -506,8 +506,8 @@ QtObject { source: control.iconSource; width: Theme.getSize("section_icon").width; height: Theme.getSize("section_icon").height; - sourceSize.width: width + 15 - sourceSize.height: width + 15 + sourceSize.width: width + 15 * screenScaleFactor + sourceSize.height: width + 15 * screenScaleFactor } } @@ -648,8 +648,8 @@ QtObject { source: Theme.getIcon("arrow_bottom") width: Theme.getSize("standard_arrow").width height: Theme.getSize("standard_arrow").height - sourceSize.width: width + 5 - sourceSize.height: width + 5 + sourceSize.width: width + 5 * screenScaleFactor + sourceSize.height: width + 5 * screenScaleFactor color: Theme.getColor("setting_control_text"); } @@ -707,8 +707,8 @@ QtObject { source: UM.Theme.getIcon("arrow_bottom") width: UM.Theme.getSize("standard_arrow").width height: UM.Theme.getSize("standard_arrow").height - sourceSize.width: width + 5 - sourceSize.height: width + 5 + sourceSize.width: width + 5 * screenScaleFactor + sourceSize.height: width + 5 * screenScaleFactor color: UM.Theme.getColor("setting_control_text") } @@ -734,8 +734,8 @@ QtObject { UM.RecolorImage { anchors.verticalCenter: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter - width: parent.width/2.5 - height: parent.height/2.5 + width: parent.width / 2.5 + height: parent.height / 2.5 sourceSize.width: width sourceSize.height: width color: Theme.getColor("checkbox_mark") From 6641415a38ff1c6a30f9db4afd22399cb7a3159f Mon Sep 17 00:00:00 2001 From: krisrok Date: Mon, 25 Sep 2017 23:43:45 +0200 Subject: [PATCH 262/589] refine abort sequence homing the head with "G28" does not work on my printer for some reason. "G28 X" and "G28 Y" however do. this fix should not break behaviour on other printers as "G28" is just a shortcut. --- plugins/USBPrinting/USBPrinterOutputDevice.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/USBPrinting/USBPrinterOutputDevice.py b/plugins/USBPrinting/USBPrinterOutputDevice.py index 4d3b8446a3..428caebd4b 100644 --- a/plugins/USBPrinting/USBPrinterOutputDevice.py +++ b/plugins/USBPrinting/USBPrinterOutputDevice.py @@ -119,7 +119,8 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._sendCommand("G0 Y%s F%s" % (z, speed)) def _homeHead(self): - self._sendCommand("G28") + self._sendCommand("G28 X") + self._sendCommand("G28 Y") def _homeBed(self): self._sendCommand("G28 Z") From a44c6e3a4f1a8765500f14562e0eadb36bad8518 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 26 Sep 2017 09:05:37 +0200 Subject: [PATCH 263/589] Fix spelling mistake Found by Anraf1000. Thanks. --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index ece8fd48a4..93fcb481fa 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4134,7 +4134,7 @@ "raft_smoothing": { "label": "Raft Smoothing", - "description": "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle.", + "description": "This setting controls how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle.", "unit": "mm", "type": "float", "default_value": 5, From 355aa36bb4b09377991ec915a48959e9758782af Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 26 Sep 2017 09:06:38 +0200 Subject: [PATCH 264/589] Ignore SolidWorksPlugin Please. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 03ae94a87f..616d325ffb 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ cura.desktop .settings #Externally located plug-ins. +plugins/CuraSolidWorksPlugin plugins/Doodle3D-cura-plugin plugins/GodMode plugins/PostProcessingPlugin From 583b776c6c372a17490cb2a57de727c7c7321609 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 26 Sep 2017 09:30:49 +0200 Subject: [PATCH 265/589] Fixed error spam on progress sliced layer run CURA-4349 --- .../ProcessSlicedLayersJob.py | 45 +++++++++---------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py index 1fbe50873e..302abc330a 100644 --- a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py +++ b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py @@ -47,7 +47,7 @@ class ProcessSlicedLayersJob(Job): super().__init__() self._layers = layers self._scene = Application.getInstance().getController().getScene() - self._progress = None + self._progress_message = Message(catalog.i18nc("@info:status", "Processing Layers"), 0, False, -1) self._abort_requested = False ## Aborts the processing of layers. @@ -62,12 +62,11 @@ class ProcessSlicedLayersJob(Job): def run(self): start_time = time() if Application.getInstance().getController().getActiveView().getPluginId() == "LayerView": - self._progress = Message(catalog.i18nc("@info:status", "Processing Layers"), 0, False, -1) - self._progress.show() + self._progress_message.show() Job.yieldThread() if self._abort_requested: - if self._progress: - self._progress.hide() + if self._progress_message: + self._progress_message.hide() return Application.getInstance().getController().activeViewChanged.connect(self._onActiveViewChanged) @@ -80,8 +79,8 @@ class ProcessSlicedLayersJob(Job): node.getParent().removeChild(node) break if self._abort_requested: - if self._progress: - self._progress.hide() + if self._progress_message: + self._progress_message.hide() return # Force garbage collection. @@ -159,11 +158,11 @@ class ProcessSlicedLayersJob(Job): # This needs some work in LayerData so we can add the new layers instead of recreating the entire mesh. if self._abort_requested: - if self._progress: - self._progress.hide() + if self._progress_message: + self._progress_message.hide() return - if self._progress: - self._progress.setProgress(progress) + if self._progress_message: + self._progress_message.setProgress(progress) # We are done processing all the layers we got from the engine, now create a mesh out of the data @@ -197,8 +196,8 @@ class ProcessSlicedLayersJob(Job): layer_mesh = layer_data.build(material_color_map, line_type_brightness) if self._abort_requested: - if self._progress: - self._progress.hide() + if self._progress_message: + self._progress_message.hide() return # Add LayerDataDecorator to scene node to indicate that the node has layer data @@ -216,15 +215,15 @@ class ProcessSlicedLayersJob(Job): if not settings.getProperty("machine_center_is_zero", "value"): new_node.setPosition(Vector(-settings.getProperty("machine_width", "value") / 2, 0.0, settings.getProperty("machine_depth", "value") / 2)) - if self._progress: - self._progress.setProgress(100) + if self._progress_message: + self._progress_message.setProgress(100) view = Application.getInstance().getController().getActiveView() if view.getPluginId() == "LayerView": view.resetLayerData() - if self._progress: - self._progress.hide() + if self._progress_message: + self._progress_message.hide() # Clear the unparsed layers. This saves us a bunch of memory if the Job does not get destroyed. self._layers = None @@ -234,10 +233,10 @@ class ProcessSlicedLayersJob(Job): def _onActiveViewChanged(self): if self.isRunning(): if Application.getInstance().getController().getActiveView().getPluginId() == "LayerView": - if not self._progress: - self._progress = Message(catalog.i18nc("@info:status", "Processing Layers"), 0, False, 0, catalog.i18nc("@info:title", "Information")) - if self._progress.getProgress() != 100: - self._progress.show() + if not self._progress_message: + self._progress_message = Message(catalog.i18nc("@info:status", "Processing Layers"), 0, False, 0, catalog.i18nc("@info:title", "Information")) + if self._progress_message.getProgress() != 100: + self._progress_message.show() else: - if self._progress: - self._progress.hide() + if self._progress_message: + self._progress_message.hide() From fc8cbedc8291033d3e60e17fedb72b71acabc6d3 Mon Sep 17 00:00:00 2001 From: Thomas Karl Pietrowski Date: Tue, 26 Sep 2017 09:39:18 +0200 Subject: [PATCH 266/589] Sorting imports and removing superfluous import .. Logger has been imported twice.. --- .../RemovableDriveOutputDevice/RemovableDrivePlugin.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/RemovableDriveOutputDevice/RemovableDrivePlugin.py b/plugins/RemovableDriveOutputDevice/RemovableDrivePlugin.py index 2fbd554849..01211b3d44 100644 --- a/plugins/RemovableDriveOutputDevice/RemovableDrivePlugin.py +++ b/plugins/RemovableDriveOutputDevice/RemovableDrivePlugin.py @@ -1,15 +1,19 @@ # Copyright (c) 2015 Ultimaker B.V. # Uranium is released under the terms of the AGPLv3 or higher. +# Python build-ins import threading import time +# Uranium/Messaging from UM.Message import Message -from UM.OutputDevice.OutputDevicePlugin import OutputDevicePlugin from UM.Logger import Logger +# Uranium/IO +from UM.OutputDevice.OutputDevicePlugin import OutputDevicePlugin from . import RemovableDriveOutputDevice -from UM.Logger import Logger + +# Uranium/l18n from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") From 2fbcfe65ea7e29a591e3e3b247cbd182864c6913 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 26 Sep 2017 09:49:40 +0200 Subject: [PATCH 267/589] Only write the information we need to workspaces This way we can be sure that no sensitive information enters the workspaces even if some future developer or a plug-in puts it there. Contributes to issue CURA-4371. --- plugins/3MFWriter/ThreeMFWorkspaceWriter.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py index 0a915d610e..aaa590cbaf 100644 --- a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py +++ b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py @@ -1,3 +1,6 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the AGPLv3 or higher. + from UM.Workspace.WorkspaceWriter import WorkspaceWriter from UM.Application import Application from UM.Preferences import Preferences @@ -42,9 +45,14 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): self._writeContainerToArchive(container, archive) # Write preferences to archive - preferences_file = zipfile.ZipInfo("Cura/preferences.cfg") + original_preferences = Preferences.getInstance() #Copy only the preferences that we use to the workspace. + temp_preferences = Preferences() + for preference in {"general/visible_settings", "cura/active_mode", "cura/categories_expanded"}: + temp_preferences.addPreference(preference, None) + temp_preferences.setValue(preference, original_preferences.getValue(preference)) preferences_string = StringIO() - Preferences.getInstance().writeToFile(preferences_string) + temp_preferences.writeToFile(preferences_string) + preferences_file = zipfile.ZipInfo("Cura/preferences.cfg") archive.writestr(preferences_file, preferences_string.getvalue()) # Save Cura version From 6bb045b860e76bb6559a5c42b12bf1f7864e1f12 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 26 Sep 2017 10:39:52 +0200 Subject: [PATCH 268/589] Move Break Support Into Chunks to experimental It seems to give heavy underextrusion. --- resources/definitions/fdmprinter.def.json | 80 +++++++++++------------ 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index ece8fd48a4..fba6678bff 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3391,46 +3391,6 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "support_skip_some_zags": { - "label": "Break Up Support In Chunks", - "description": "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern.", - "type": "bool", - "default_value": false, - "enabled": "support_enable and (support_pattern == 'zigzag')", - "limit_to_extruder": "support_infill_extruder_nr", - "settable_per_mesh": false, - "settable_per_extruder": true, - "children": { - "support_skip_zag_per_mm": { - "label": "Support Chunk Size", - "description": "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away.", - "type": "float", - "unit": "mm", - "default_value": 20, - "minimum_value": "0", - "minimum_value_warning": "support_line_distance", - "enabled": "support_enable and (support_pattern == 'zigzag') and support_skip_some_zags", - "limit_to_extruder": "support_infill_extruder_nr", - "settable_per_mesh": false, - "settable_per_extruder": true, - "children": { - "support_zag_skip_count": { - "label": "Support Chunk Line Count", - "description": "Skip one in every N connection lines to make the support structure easier to break away.", - "type": "int", - "default_value": 5, - "value": "round(support_skip_zag_per_mm / support_line_distance)", - "minimum_value": "1", - "minimum_value_warning": "3", - "enabled": "support_enable and (support_pattern == 'zigzag') and support_skip_some_zags", - "limit_to_extruder": "support_infill_extruder_nr", - "settable_per_mesh": false, - "settable_per_extruder": true - } - } - } - } - }, "support_infill_rate": { "label": "Support Density", @@ -5050,6 +5010,46 @@ "default_value": false, "settable_per_mesh": true }, + "support_skip_some_zags": { + "label": "Break Up Support In Chunks", + "description": "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern.", + "type": "bool", + "default_value": false, + "enabled": "support_enable and (support_pattern == 'zigzag')", + "limit_to_extruder": "support_infill_extruder_nr", + "settable_per_mesh": false, + "settable_per_extruder": true, + "children": { + "support_skip_zag_per_mm": { + "label": "Support Chunk Size", + "description": "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away.", + "type": "float", + "unit": "mm", + "default_value": 20, + "minimum_value": "0", + "minimum_value_warning": "support_line_distance", + "enabled": "support_enable and (support_pattern == 'zigzag') and support_skip_some_zags", + "limit_to_extruder": "support_infill_extruder_nr", + "settable_per_mesh": false, + "settable_per_extruder": true, + "children": { + "support_zag_skip_count": { + "label": "Support Chunk Line Count", + "description": "Skip one in every N connection lines to make the support structure easier to break away.", + "type": "int", + "default_value": 5, + "value": "round(support_skip_zag_per_mm / support_line_distance)", + "minimum_value": "1", + "minimum_value_warning": "3", + "enabled": "support_enable and (support_pattern == 'zigzag') and support_skip_some_zags", + "limit_to_extruder": "support_infill_extruder_nr", + "settable_per_mesh": false, + "settable_per_extruder": true + } + } + } + } + }, "draft_shield_enabled": { "label": "Enable Draft Shield", From 7394a0c6efed90807d41ab908cac93b620149393 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Tue, 26 Sep 2017 11:05:46 +0200 Subject: [PATCH 269/589] Fix typo --- plugins/3MFReader/WorkspaceDialog.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 84a5933185..2363f16b9d 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -13,7 +13,7 @@ UM.Dialog title: catalog.i18nc("@title:window", "Open Project") minimumWidth: 500 * screenScaleFactor - minumumHeight: 400 * screenScaleFactor + minimumHeight: 400 * screenScaleFactor width: minimumWidth height: minumumHeight From 826773ae428750065034057e6cd63a2933882617 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 26 Sep 2017 11:20:14 +0200 Subject: [PATCH 270/589] Added a lot more logging to debug the not-authenticated issue --- .../NetworkPrinterOutputDevice.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py index a0b181b7ce..8c7a07ef4b 100755 --- a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py @@ -205,16 +205,16 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): self._authentication_requested_message.setProgress(self._authentication_counter / self._max_authentication_counter * 100) if self._authentication_counter > self._max_authentication_counter: self._authentication_timer.stop() - Logger.log("i", "Authentication timer ended. Setting authentication to denied") + Logger.log("i", "Authentication timer ended. Setting authentication to denied for printer: %s" % self._key) self.setAuthenticationState(AuthState.AuthenticationDenied) def _onAuthenticationRequired(self, reply, authenticator): if self._authentication_id is not None and self._authentication_key is not None: - Logger.log("d", "Authentication was required. Setting up authenticator with ID %s and key %s", self._authentication_id, self._getSafeAuthKey()) + Logger.log("d", "Authentication was required for printer: %s. Setting up authenticator with ID %s and key %s", self._key, self._authentication_id, self._getSafeAuthKey()) authenticator.setUser(self._authentication_id) authenticator.setPassword(self._authentication_key) else: - Logger.log("d", "No authentication is available to use, but we did got a request for it.") + Logger.log("d", "No authentication is available to use for %s, but we did got a request for it.", self._key) def getProperties(self): return self._properties @@ -369,6 +369,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): if auth_state == self._authentication_state: return # Nothing to do here. + Logger.log("d", "Attempting to update auth state from %s to %s for printer %s" % (self._authentication_state, auth_state, self._key)) + if auth_state == AuthState.AuthenticationRequested: Logger.log("d", "Authentication state changed to authentication requested.") self.setAcceptsCommands(False) @@ -421,6 +423,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): @pyqtSlot() def requestAuthentication(self, message_id = None, action_id = "Retry"): if action_id == "Request" or action_id == "Retry": + Logger.log("d", "Requestion authentication for %s due to action %s" % (self._key, action_id)) self._authentication_failed_message.hide() self._not_authenticated_message.hide() self._authentication_state = AuthState.NotAuthenticated @@ -652,7 +655,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): return elif self._authentication_state != AuthState.Authenticated: self._not_authenticated_message.show() - Logger.log("d", "Attempting to perform an action without authentication. Auth state is %s", self._authentication_state) + Logger.log("d", "Attempting to perform an action without authentication for printer %s. Auth state is %s", self._key, self._authentication_state) return Application.getInstance().showPrintMonitor.emit(True) @@ -780,7 +783,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): if self._authentication_id is None and self._authentication_key is None: Logger.log("d", "No authentication found in metadata.") else: - Logger.log("d", "Loaded authentication id %s and key %s from the metadata entry", self._authentication_id, self._getSafeAuthKey()) + Logger.log("d", "Loaded authentication id %s and key %s from the metadata entry for printer %s", self._authentication_id, self._getSafeAuthKey(), self._key) self._update_timer.start() @@ -1084,7 +1087,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): if status_code == 401: if self._authentication_state != AuthState.AuthenticationRequested: # Only request a new authentication when we have not already done so. - Logger.log("i", "Not authenticated (Current auth state is %s). Attempting to request authentication", self._authentication_state ) + Logger.log("i", "Not authenticated (Current auth state is %s). Attempting to request authentication for printer %s", self._authentication_state, self._key ) self._requestAuthentication() elif status_code == 403: # If we already had an auth (eg; didn't request one), we only need a single 403 to see it as denied. @@ -1139,7 +1142,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): return global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: # Remove any old data. - Logger.log("d", "Removing old network authentication data as a new one was requested.") + Logger.log("d", "Removing old network authentication data for %s as a new one was requested.", self._key) global_container_stack.removeMetaDataEntry("network_authentication_key") global_container_stack.removeMetaDataEntry("network_authentication_id") Application.getInstance().saveStack(global_container_stack) # Force saving so we don't keep wrong auth data. From 565ed4933b5b7fca8f3a9546aa11010e9c5394dd Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Tue, 26 Sep 2017 11:56:14 +0200 Subject: [PATCH 271/589] Use pixels instead of points for text in splash-screen The current splashscreen implementation uses DPI-independent pixel sizes for everything, but point sizes take the DPI into account. This caused too large text and misalignment in the splash screen on Hi DPI screens on Windows. --- cura/CuraSplashScreen.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/cura/CuraSplashScreen.py b/cura/CuraSplashScreen.py index eedf1e3d53..f340c01623 100644 --- a/cura/CuraSplashScreen.py +++ b/cura/CuraSplashScreen.py @@ -10,7 +10,6 @@ from PyQt5.QtWidgets import QSplashScreen from UM.Resources import Resources from UM.Application import Application - class CuraSplashScreen(QSplashScreen): def __init__(self): super().__init__() @@ -61,7 +60,7 @@ class CuraSplashScreen(QSplashScreen): # draw version text font = QFont() # Using system-default font here - font.setPointSize(28) + font.setPixelSize(37) painter.setFont(font) painter.drawText(220, 66, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[0]) if len(version) > 1: @@ -81,7 +80,7 @@ class CuraSplashScreen(QSplashScreen): # draw message text if self._current_message: font = QFont() # Using system-default font here - font.setPointSize(10) + font.setPixelSize(13) pen = QPen() pen.setColor(QColor(255, 255, 255, 255)) painter.setPen(pen) @@ -107,5 +106,3 @@ class CuraSplashScreen(QSplashScreen): self._to_stop = True self._change_timer.stop() super().close() - - From 1479322fbe4d3f4945eaa52b75dafffd6b4ada31 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Tue, 26 Sep 2017 12:24:59 +0200 Subject: [PATCH 272/589] Add screenScaleFactor to About window --- resources/qml/AboutDialog.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/qml/AboutDialog.qml b/resources/qml/AboutDialog.qml index 7df5709654..3a3ceb63d5 100644 --- a/resources/qml/AboutDialog.qml +++ b/resources/qml/AboutDialog.qml @@ -14,8 +14,8 @@ UM.Dialog //: About dialog title title: catalog.i18nc("@title:window","About Cura") - minimumWidth: 500 - minimumHeight: 650 + minimumWidth: 500 * screenScaleFactor + minimumHeight: 650 * screenScaleFactor width: minimumWidth height: minimumHeight From 568535e3e25a04017ab95e4888ecdb4c1e16bdd9 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Tue, 26 Sep 2017 17:49:53 +0200 Subject: [PATCH 273/589] Adapting the code in case a multiextruder printer will use only one extruder - CURA-4359 --- cura/Settings/ExtruderManager.py | 5 +++-- cura/Settings/ProfilesModel.py | 15 ++++++++++++--- cura/Settings/QualityAndUserProfilesModel.py | 20 +++++++++++++------- cura/Settings/UserProfilesModel.py | 18 ++++++++++++------ 4 files changed, 40 insertions(+), 18 deletions(-) diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index 62d16f699a..b16a88f1a9 100755 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -506,7 +506,7 @@ class ExtruderManager(QObject): result.extend(self.getActiveExtruderStacks()) return result - ## Returns the list of active extruder stacks. + ## Returns the list of active extruder stacks, taking into account the machine extruder count. # # \return \type{List[ContainerStack]} a list of def getActiveExtruderStacks(self) -> List["ExtruderStack"]: @@ -516,7 +516,8 @@ class ExtruderManager(QObject): if global_stack and global_stack.getId() in self._extruder_trains: for extruder in sorted(self._extruder_trains[global_stack.getId()]): result.append(self._extruder_trains[global_stack.getId()][extruder]) - return result + + return result[:global_stack.getProperty("machine_extruder_count", "value")] def __globalContainerStackChanged(self) -> None: global_container_stack = Application.getInstance().getGlobalContainerStack() diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py index c5de9b9136..71426d40f4 100644 --- a/cura/Settings/ProfilesModel.py +++ b/cura/Settings/ProfilesModel.py @@ -92,13 +92,22 @@ class ProfilesModel(InstanceContainersModel): if global_container_stack is None: return + # Detecting if the machine has multiple extrusion + multiple_extrusion = global_container_stack.getProperty("machine_extruder_count", "value") > 1 # Get the list of extruders and place the selected extruder at the front of the list. extruder_manager = ExtruderManager.getInstance() active_extruder = extruder_manager.getActiveExtruderStack() extruder_stacks = extruder_manager.getActiveExtruderStacks() - if active_extruder in extruder_stacks: - extruder_stacks.remove(active_extruder) - extruder_stacks = [active_extruder] + extruder_stacks + if extruder_stacks: + if multiple_extrusion: + # Place the active extruder at the front of the list. + if active_extruder in extruder_stacks: + extruder_stacks.remove(active_extruder) + extruder_stacks = [active_extruder] + extruder_stacks + else: + # The active extruder is the first in the list and only the active extruder is use to compute the usable qualities + active_extruder = None + extruder_stacks = [] # Get a list of usable/available qualities for this machine and material qualities = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, diff --git a/cura/Settings/QualityAndUserProfilesModel.py b/cura/Settings/QualityAndUserProfilesModel.py index 1fa45a5902..d0d0f2cae2 100644 --- a/cura/Settings/QualityAndUserProfilesModel.py +++ b/cura/Settings/QualityAndUserProfilesModel.py @@ -26,15 +26,21 @@ class QualityAndUserProfilesModel(ProfilesModel): quality_changes_list = quality_manager.findAllQualityChangesForMachine(machine_definition) # Detecting if the machine has multiple extrusion - multiple_extrusion = False - # Get the list of extruders and place the selected extruder at the front of the list. + multiple_extrusion = global_container_stack.getProperty("machine_extruder_count", "value") > 1 + # Get the list of extruders extruder_manager = ExtruderManager.getInstance() active_extruder = extruder_manager.getActiveExtruderStack() extruder_stacks = extruder_manager.getActiveExtruderStacks() - if active_extruder in extruder_stacks: - multiple_extrusion = True - extruder_stacks.remove(active_extruder) - extruder_stacks = [active_extruder] + extruder_stacks + if extruder_stacks: + if multiple_extrusion: + # Place the active extruder at the front of the list. + if active_extruder in extruder_stacks: + extruder_stacks.remove(active_extruder) + extruder_stacks = [active_extruder] + extruder_stacks + else: + # The active extruder is the first in the list and only the active extruder is use to compute the usable qualities + active_extruder = None + extruder_stacks = [] # Fetch the list of useable qualities across all extruders. # The actual list of quality profiles come from the first extruder in the extruder list. @@ -49,6 +55,6 @@ class QualityAndUserProfilesModel(ProfilesModel): filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set and qc.getMetaDataEntry("extruder") == active_extruder.definition.getId()] else: # If not, the quality changes of the global stack are selected - filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set] + filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set and qc.getMetaDataEntry("extruder") is None] return quality_list + filtered_quality_changes diff --git a/cura/Settings/UserProfilesModel.py b/cura/Settings/UserProfilesModel.py index fdb44ce313..b9c9bef89f 100644 --- a/cura/Settings/UserProfilesModel.py +++ b/cura/Settings/UserProfilesModel.py @@ -26,15 +26,21 @@ class UserProfilesModel(ProfilesModel): quality_changes_list = quality_manager.findAllQualityChangesForMachine(machine_definition) # Detecting if the machine has multiple extrusion - multiple_extrusion = False + multiple_extrusion = global_container_stack.getProperty("machine_extruder_count", "value") > 1 # Get the list of extruders and place the selected extruder at the front of the list. extruder_manager = ExtruderManager.getInstance() active_extruder = extruder_manager.getActiveExtruderStack() extruder_stacks = extruder_manager.getActiveExtruderStacks() - if active_extruder in extruder_stacks: - multiple_extrusion = True - extruder_stacks.remove(active_extruder) - extruder_stacks = [active_extruder] + extruder_stacks + if extruder_stacks: + if multiple_extrusion: + # Place the active extruder at the front of the list. + if active_extruder in extruder_stacks: + extruder_stacks.remove(active_extruder) + extruder_stacks = [active_extruder] + extruder_stacks + else: + # The active extruder is the first in the list and only the active extruder is use to compute the usable qualities + active_extruder = None + extruder_stacks = [] # Fetch the list of useable qualities across all extruders. # The actual list of quality profiles come from the first extruder in the extruder list. @@ -49,6 +55,6 @@ class UserProfilesModel(ProfilesModel): filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set and qc.getMetaDataEntry("extruder") == active_extruder.definition.getId()] else: # If not, the quality changes of the global stack are selected - filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set] + filtered_quality_changes = [qc for qc in quality_changes_list if qc.getMetaDataEntry("quality_type") in quality_type_set and qc.getMetaDataEntry("extruder") is None] return filtered_quality_changes From 98e3f2bdb28068ab402ba0b8ecb02a2f357d51cf Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Tue, 26 Sep 2017 21:10:52 +0200 Subject: [PATCH 274/589] Add definitions for the Raise3D N2 series See https://ultimaker.com/en/community/51242-please-add-these-raise3d-printer-definitions for source and details. --- .../definitions/raise3D_N2_dual.def.json | 95 +++++++++++++++++++ .../definitions/raise3D_N2_plus_dual.def.json | 95 +++++++++++++++++++ .../raise3D_N2_plus_single.def.json | 87 +++++++++++++++++ .../definitions/raise3D_N2_single.def.json | 87 +++++++++++++++++ .../raise3D_N2_dual_extruder_0.def.json | 26 +++++ .../raise3D_N2_dual_extruder_1.def.json | 28 ++++++ .../raise3D_N2_plus_dual_extruder_0.def.json | 26 +++++ .../raise3D_N2_plus_dual_extruder_1.def.json | 28 ++++++ 8 files changed, 472 insertions(+) create mode 100644 resources/definitions/raise3D_N2_dual.def.json create mode 100644 resources/definitions/raise3D_N2_plus_dual.def.json create mode 100644 resources/definitions/raise3D_N2_plus_single.def.json create mode 100644 resources/definitions/raise3D_N2_single.def.json create mode 100644 resources/extruders/raise3D_N2_dual_extruder_0.def.json create mode 100644 resources/extruders/raise3D_N2_dual_extruder_1.def.json create mode 100644 resources/extruders/raise3D_N2_plus_dual_extruder_0.def.json create mode 100644 resources/extruders/raise3D_N2_plus_dual_extruder_1.def.json diff --git a/resources/definitions/raise3D_N2_dual.def.json b/resources/definitions/raise3D_N2_dual.def.json new file mode 100644 index 0000000000..d3d8f0e651 --- /dev/null +++ b/resources/definitions/raise3D_N2_dual.def.json @@ -0,0 +1,95 @@ +{ + "id": "raise3D_N2_dual", + "version": 2, + "name": "Raise3D N2 Dual", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Raise3D", + "manufacturer": "Raise3D", + "category": "Other", + "file_formats": "text/x-gcode", + "has_materials": true, + "machine_extruder_trains": + { + "0": "raise3D_N2_dual_extruder_0", + "1": "raise3D_N2_dual_extruder_1" + } + }, + + "overrides": { + "machine_name": { "default_value": "Raise3D N2 Dual" }, + "machine_width": { + "default_value": 305 + }, + "machine_height": { + "default_value": 305 + }, + "machine_depth": { + "default_value": 305 + }, + "machine_center_is_zero": { + "default_value": false + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_nozzle_heat_up_speed": { + "default_value": 6 + }, + "machine_nozzle_cool_down_speed": { + "default_value": 4 + }, + "machine_head_with_fans_polygon": + { + "default_value": [ + [ -75, 35 ], + [ -75, -18 ], + [ 18, 35 ], + [ 18, -18 ] + ] + }, + "machine_min_cool_heat_time_window": { + "default_value": 3600 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "material_diameter": { + "default_value": 1.75 + }, + "retraction_amount": { + "default_value": 1.0 + }, + "adhesion_type": { + "default_value": "skirt" + }, + "gantry_height": { + "default_value": 55 + }, + "machine_use_extruder_offset_to_offset_coords": { + "default_value": true + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": { + "default_value": "G90\nG21\n; home all axes\nG28\nG92 X0 Y0 Z0\n; move heatbed into position\nG1 X20.0 Y20.0 Z1.0 F1000\n; zero extruders\nG92 E0 E1\nT0; right tool\n; set extruder steps per mm\nM92 E140\nT1; left tool\n; set extruder steps per mm\nM92 E140\nT0; left tool\nG92 E0 E1\n; purge nozzle\nG1 E25 F250\nT1; left tool\nG92 E0 E1\n; purge nozzle\nG1 E25 F250\n; zero extruders\nG92 E0 E1\n; move heatbed down a little more\nG1 Z5.0 F20\n; wait 600ms\nG4 600\n; move to tack down the strands\nG1 X20.0 Y30.0 Z0 F9000\n; wait 600ms\nG4 600\n;move up a bit\nG1 Z5.0 F9000\n; wait 300ms\nG4 300\n;fast move to center\nG1 X152.5 Y152.5 F9000\nT0\n;Raise3D Job Start\nM117 Printing…\nM1001\n" + }, + "machine_end_gcode": { + "default_value": "M107\nM1002\nM104 S0 T1\nM104 S0 T0\nM140 S0\nM117 Print Complete.\nG28 X0 Y0\nG91\nG1 Z10\nG90\nM84" + }, + "machine_extruder_count": { + "default_value": 2 + }, + "prime_tower_position_x": { + "default_value": 195 + }, + "prime_tower_position_y": { + "default_value": 149 + } + } +} diff --git a/resources/definitions/raise3D_N2_plus_dual.def.json b/resources/definitions/raise3D_N2_plus_dual.def.json new file mode 100644 index 0000000000..f49af40355 --- /dev/null +++ b/resources/definitions/raise3D_N2_plus_dual.def.json @@ -0,0 +1,95 @@ +{ + "id": "raise3D_N2_plus_dual", + "version": 2, + "name": "Raise3D N2 Plus Dual", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Raise3D", + "manufacturer": "Raise3D", + "category": "Other", + "file_formats": "text/x-gcode", + "has_materials": true, + "machine_extruder_trains": + { + "0": "raise3D_N2_plus_dual_extruder_0", + "1": "raise3D_N2_plus_dual_extruder_1" + } + }, + + "overrides": { + "machine_name": { "default_value": "Raise3D N2 Plus Dual" }, + "machine_width": { + "default_value": 305 + }, + "machine_height": { + "default_value": 610 + }, + "machine_depth": { + "default_value": 305 + }, + "machine_center_is_zero": { + "default_value": false + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_nozzle_heat_up_speed": { + "default_value": 6 + }, + "machine_nozzle_cool_down_speed": { + "default_value": 4 + }, + "machine_head_with_fans_polygon": + { + "default_value": [ + [ -75, 35 ], + [ -75, -18 ], + [ 18, 35 ], + [ 18, -18 ] + ] + }, + "machine_min_cool_heat_time_window": { + "default_value": 3600 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "material_diameter": { + "default_value": 1.75 + }, + "retraction_amount": { + "default_value": 1.0 + }, + "adhesion_type": { + "default_value": "skirt" + }, + "gantry_height": { + "default_value": 55 + }, + "machine_use_extruder_offset_to_offset_coords": { + "default_value": true + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": { + "default_value": "G90\nG21\n; home all axes\nG28\nG92 X0 Y0 Z0\n; move heatbed into position\nG1 X20.0 Y20.0 Z1.0 F1000\n; zero extruders\nG92 E0 E1\nT0; right tool\n; set extruder steps per mm\nM92 E140\nT1; left tool\n; set extruder steps per mm\nM92 E140\nT0; left tool\nG92 E0 E1\n; purge nozzle\nG1 E25 F250\nT1; left tool\nG92 E0 E1\n; purge nozzle\nG1 E25 F250\n; zero extruders\nG92 E0 E1\n; move heatbed down a little more\nG1 Z5.0 F20\n; wait 600ms\nG4 600\n; move to tack down the strands\nG1 X20.0 Y30.0 Z0 F9000\n; wait 600ms\nG4 600\n;move up a bit\nG1 Z5.0 F9000\n; wait 300ms\nG4 300\n;fast move to center\nG1 X152.5 Y152.5 F9000\nT0\n;Raise3D Job Start\nM117 Printing…\nM1001\n" + }, + "machine_end_gcode": { + "default_value": "M107\nM1002\nM104 S0 T1\nM104 S0 T0\nM140 S0\nM117 Print Complete.\nG28 X0 Y0\nG91\nG1 Z10\nG90\nM84" + }, + "machine_extruder_count": { + "default_value": 2 + }, + "prime_tower_position_x": { + "default_value": 195 + }, + "prime_tower_position_y": { + "default_value": 149 + } + } +} diff --git a/resources/definitions/raise3D_N2_plus_single.def.json b/resources/definitions/raise3D_N2_plus_single.def.json new file mode 100644 index 0000000000..5f10666528 --- /dev/null +++ b/resources/definitions/raise3D_N2_plus_single.def.json @@ -0,0 +1,87 @@ +{ + "id": "raise3D_N2_plus_single", + "version": 2, + "name": "Raise3D N2 Plus Single", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Raise3D", + "manufacturer": "Raise3D", + "category": "Other", + "file_formats": "text/x-gcode", + "has_materials": true + }, + + "overrides": { + "machine_name": { "default_value": "Raise3D N2 Plus Single" }, + "machine_width": { + "default_value": 305 + }, + "machine_height": { + "default_value": 610 + }, + "machine_depth": { + "default_value": 305 + }, + "machine_center_is_zero": { + "default_value": false + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_nozzle_heat_up_speed": { + "default_value": 6 + }, + "machine_nozzle_cool_down_speed": { + "default_value": 4 + }, + "machine_head_with_fans_polygon": + { + "default_value": [ + [ -75, 35 ], + [ -75, -18 ], + [ 18, 35 ], + [ 18, -18 ] + ] + }, + "machine_min_cool_heat_time_window": { + "default_value": 3600 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "material_diameter": { + "default_value": 1.75 + }, + "retraction_amount": { + "default_value": 1.0 + }, + "adhesion_type": { + "default_value": "skirt" + }, + "gantry_height": { + "default_value": 55 + }, + "machine_use_extruder_offset_to_offset_coords": { + "default_value": true + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": { + "default_value": "G90\nG21\n; home all axes\nG28\nG92 X0 Y0 Z0\n; move heatbed into position\nG1 X20.0 Y20.0 Z1.0 F1000\n; zero extruders\nG92 E0 E1\nT0; right tool\n; set extruder steps per mm\nM92 E140\n; purge nozzle\nG1 E25 F250\n; zero extruders\nG92 E0 E1\n; move heatbed down a little more\nG1 Z5.0 F20\n; wait 600ms\nG4 600\n; move to tack down the strands\nG1 X20.0 Y30.0 Z0 F9000\n; wait 600ms\nG4 600\n;move up a bit\nG1 Z5.0 F9000\n; wait 300ms\nG4 300\n;fast move to center\nG1 X152.5 Y152.5 F9000\nT0\n;Raise3D Job Start\nM117 Printing…\nM1001\n" + }, + "machine_end_gcode": { + "default_value": "M107\nM1002\nM104 S0 T1\nM104 S0 T0\nM140 S0\nM117 Print Complete.\nG28 X0 Y0\nG91\nG1 Z10\nG90\nM84" + }, + "prime_tower_position_x": { + "default_value": 195 + }, + "prime_tower_position_y": { + "default_value": 149 + } + } +} diff --git a/resources/definitions/raise3D_N2_single.def.json b/resources/definitions/raise3D_N2_single.def.json new file mode 100644 index 0000000000..225794130c --- /dev/null +++ b/resources/definitions/raise3D_N2_single.def.json @@ -0,0 +1,87 @@ +{ + "id": "raise3D_N2_single", + "version": 2, + "name": "Raise3D N2 Single", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Raise3D", + "manufacturer": "Raise3D", + "category": "Other", + "file_formats": "text/x-gcode", + "has_materials": true + }, + + "overrides": { + "machine_name": { "default_value": "Raise3D N2 Single" }, + "machine_width": { + "default_value": 305 + }, + "machine_height": { + "default_value": 305 + }, + "machine_depth": { + "default_value": 305 + }, + "machine_center_is_zero": { + "default_value": false + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_nozzle_heat_up_speed": { + "default_value": 6 + }, + "machine_nozzle_cool_down_speed": { + "default_value": 4 + }, + "machine_head_with_fans_polygon": + { + "default_value": [ + [ -75, 35 ], + [ -75, -18 ], + [ 18, 35 ], + [ 18, -18 ] + ] + }, + "machine_min_cool_heat_time_window": { + "default_value": 3600 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "material_diameter": { + "default_value": 1.75 + }, + "retraction_amount": { + "default_value": 1.0 + }, + "adhesion_type": { + "default_value": "skirt" + }, + "gantry_height": { + "default_value": 55 + }, + "machine_use_extruder_offset_to_offset_coords": { + "default_value": true + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": { + "default_value": "G90\nG21\n; home all axes\nG28\nG92 X0 Y0 Z0\n; move heatbed into position\nG1 X20.0 Y20.0 Z1.0 F1000\n; zero extruders\nG92 E0 E1\nT0; right tool\n; set extruder steps per mm\nM92 E140\n; purge nozzle\nG1 E25 F250\n; zero extruders\nG92 E0 E1\n; move heatbed down a little more\nG1 Z5.0 F20\n; wait 600ms\nG4 600\n; move to tack down the strands\nG1 X20.0 Y30.0 Z0 F9000\n; wait 600ms\nG4 600\n;move up a bit\nG1 Z5.0 F9000\n; wait 300ms\nG4 300\n;fast move to center\nG1 X152.5 Y152.5 F9000\nT0\n;Raise3D Job Start\nM117 Printing…\nM1001\n" + }, + "machine_end_gcode": { + "default_value": "M107\nM1002\nM104 S0 T1\nM104 S0 T0\nM140 S0\nM117 Print Complete.\nG28 X0 Y0\nG91\nG1 Z10\nG90\nM84" + }, + "prime_tower_position_x": { + "default_value": 195 + }, + "prime_tower_position_y": { + "default_value": 149 + } + } +} diff --git a/resources/extruders/raise3D_N2_dual_extruder_0.def.json b/resources/extruders/raise3D_N2_dual_extruder_0.def.json new file mode 100644 index 0000000000..330d016c55 --- /dev/null +++ b/resources/extruders/raise3D_N2_dual_extruder_0.def.json @@ -0,0 +1,26 @@ +{ + "id": "raise3D_N2_dual_extruder_0", + "version": 2, + "name": "Left Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "raise3D_N2_dual", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0 }, + "machine_nozzle_offset_y": { "default_value": 0 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_start_pos_y": { "value": "prime_tower_position_y" }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_end_pos_y": { "value": "prime_tower_position_y" } + } +} diff --git a/resources/extruders/raise3D_N2_dual_extruder_1.def.json b/resources/extruders/raise3D_N2_dual_extruder_1.def.json new file mode 100644 index 0000000000..f79033e496 --- /dev/null +++ b/resources/extruders/raise3D_N2_dual_extruder_1.def.json @@ -0,0 +1,28 @@ +{ + "id": "raise3D_N2_dual_extruder_1", + "version": 2, + "name": "Right Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "raise3D_N2_dual", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 24.8 }, + "machine_nozzle_offset_y": { "default_value": 0.6 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_start_pos_y": { "value": "prime_tower_position_y" }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_end_pos_y": { "value": "prime_tower_position_y" } + } +} + + diff --git a/resources/extruders/raise3D_N2_plus_dual_extruder_0.def.json b/resources/extruders/raise3D_N2_plus_dual_extruder_0.def.json new file mode 100644 index 0000000000..f105dcbaf9 --- /dev/null +++ b/resources/extruders/raise3D_N2_plus_dual_extruder_0.def.json @@ -0,0 +1,26 @@ +{ + "id": "raise3D_N2_plus_dual_extruder_0", + "version": 2, + "name": "Left Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "raise3D_N2_plus_dual", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0 }, + "machine_nozzle_offset_y": { "default_value": 0 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_start_pos_y": { "value": "prime_tower_position_y" }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_end_pos_y": { "value": "prime_tower_position_y" } + } +} diff --git a/resources/extruders/raise3D_N2_plus_dual_extruder_1.def.json b/resources/extruders/raise3D_N2_plus_dual_extruder_1.def.json new file mode 100644 index 0000000000..b0fa1b51d0 --- /dev/null +++ b/resources/extruders/raise3D_N2_plus_dual_extruder_1.def.json @@ -0,0 +1,28 @@ +{ + "id": "raise3D_N2_plus_dual_extruder_1", + "version": 2, + "name": "Right Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "raise3D_N2_plus_dual", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 24.8 }, + "machine_nozzle_offset_y": { "default_value": 0.6 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_start_pos_y": { "value": "prime_tower_position_y" }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_end_pos_y": { "value": "prime_tower_position_y" } + } +} + + From cd11c6832d915cf0a8765a16d90b65a64fe86bf8 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 27 Sep 2017 09:37:38 +0200 Subject: [PATCH 275/589] Added user agent header to firmware update --- plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py index 93cf14bddf..319934b211 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py @@ -39,7 +39,9 @@ class FirmwareUpdateCheckerJob(Job): return try: - request = urllib.request.Request(self._url) + application_name = Application.getInstance().getApplicationName() + headers = {"User-Agent": "%s - %s" % (application_name, Application.getInstance().getVersion())} + request = urllib.request.Request(self._url, headers = headers) current_version_file = urllib.request.urlopen(request) reader = codecs.getreader("utf-8") From 823807144f6cd1902e6599eb7def87ce3ebda051 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 26 Sep 2017 09:05:37 +0200 Subject: [PATCH 276/589] Fix spelling mistake Found by Anraf1000. Thanks. --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index fba6678bff..06bc04b1fe 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -4094,7 +4094,7 @@ "raft_smoothing": { "label": "Raft Smoothing", - "description": "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle.", + "description": "This setting controls how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle.", "unit": "mm", "type": "float", "default_value": 5, From 85efd9249c3add300bb6a3cb4a2035b9282c08d6 Mon Sep 17 00:00:00 2001 From: Simon Edwards Date: Tue, 26 Sep 2017 16:25:10 +0200 Subject: [PATCH 277/589] Add in all of the changes for Cura Connect CURA-4376 --- .../UM3NetworkPrinting/ClusterControlItem.qml | 243 +++++++ .../UM3NetworkPrinting/ClusterMonitorItem.qml | 108 +++ .../UM3NetworkPrinting/DiscoverUM3Action.qml | 22 + .../NetworkClusterPrinterOutputDevice.py | 638 ++++++++++++++++++ .../NetworkPrinterOutputDevice.py | 13 +- .../NetworkPrinterOutputDevicePlugin.py | 140 ++-- .../UM3NetworkPrinting/OpenPanelButton.qml | 18 + .../PrintCoreConfiguration.qml | 33 + plugins/UM3NetworkPrinting/PrintWindow.qml | 103 +++ .../UM3NetworkPrinting/PrinterInfoBlock.qml | 345 ++++++++++ plugins/UM3NetworkPrinting/PrinterTile.qml | 54 ++ .../UM3NetworkPrinting/PrinterVideoStream.qml | 91 +++ plugins/UM3NetworkPrinting/camera-icon.svg | 3 + 13 files changed, 1769 insertions(+), 42 deletions(-) create mode 100644 plugins/UM3NetworkPrinting/ClusterControlItem.qml create mode 100644 plugins/UM3NetworkPrinting/ClusterMonitorItem.qml create mode 100644 plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py create mode 100644 plugins/UM3NetworkPrinting/OpenPanelButton.qml create mode 100644 plugins/UM3NetworkPrinting/PrintCoreConfiguration.qml create mode 100644 plugins/UM3NetworkPrinting/PrintWindow.qml create mode 100644 plugins/UM3NetworkPrinting/PrinterInfoBlock.qml create mode 100644 plugins/UM3NetworkPrinting/PrinterTile.qml create mode 100644 plugins/UM3NetworkPrinting/PrinterVideoStream.qml create mode 100644 plugins/UM3NetworkPrinting/camera-icon.svg diff --git a/plugins/UM3NetworkPrinting/ClusterControlItem.qml b/plugins/UM3NetworkPrinting/ClusterControlItem.qml new file mode 100644 index 0000000000..6558720943 --- /dev/null +++ b/plugins/UM3NetworkPrinting/ClusterControlItem.qml @@ -0,0 +1,243 @@ +import QtQuick 2.2 +import QtQuick.Controls 1.4 + +import UM 1.3 as UM +import Cura 1.0 as Cura + +Component +{ + Item + { + id: base + property var manager: Cura.MachineManager.printerOutputDevices[0] + anchors.fill: parent + property var lineColor: "#DCDCDC" // TODO: Should be linked to theme. + property var cornerRadius: 4 // TODO: Should be linked to theme. + + visible: manager != null + + UM.I18nCatalog + { + id: catalog + name: "cura" + } + + Label + { + id: activePrintersLabel + font: UM.Theme.getFont("large") + anchors.horizontalCenter: parent.horizontalCenter + text: Cura.MachineManager.printerOutputDevices[0].name + } + Label + { + id: printerGroupLabel + anchors.top: activePrintersLabel.bottom + text: catalog.i18nc("@label", "PRINTER GROUP") + anchors.horizontalCenter: parent.horizontalCenter + font: UM.Theme.getFont("very_small") + opacity: 0.65 + } + + Rectangle + { + id: printJobArea + border.width: UM.Theme.getSize("default_lining").width + border.color: lineColor + anchors.top: printerGroupLabel.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.right: parent.right + anchors.rightMargin:UM.Theme.getSize("default_margin").width + radius: cornerRadius + height: childrenRect.height + + Item + { + id: printJobTitleBar + width: parent.width + height: printJobTitleLabel.height + 2 * UM.Theme.getSize("default_margin").height + + Label + { + id: printJobTitleLabel + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.top: parent.top + anchors.topMargin: UM.Theme.getSize("default_margin").height + text: catalog.i18nc("@title", "Print jobs") + font: UM.Theme.getFont("default") + opacity: 0.75 + } + Rectangle + { + anchors.bottom: parent.bottom + height: UM.Theme.getSize("default_lining").width + color: lineColor + width: parent.width + } + } + + Column + { + id: printJobColumn + anchors.top: printJobTitleBar.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_margin").width + //TODO; It's probably nicer to do this with a dynamic data model instead of hardcoding this. + //But you know the drill; time constraints don't result in elegant code. + Item + { + width: parent.width + height: childrenRect.height + opacity: 0.65 + Label + { + text: catalog.i18nc("@label", "Printing") + font: UM.Theme.getFont("very_small") + + } + Label + { + text: manager.numJobsPrinting + font: UM.Theme.getFont("small") + anchors.right: parent.right + } + } + Item + { + width: parent.width + height: childrenRect.height + opacity: 0.65 + Label + { + text: catalog.i18nc("@label", "Queued") + font: UM.Theme.getFont("very_small") + } + Label + { + text: manager.numJobsQueued + font: UM.Theme.getFont("small") + anchors.right: parent.right + } + } + } + OpenPanelButton + { + anchors.top: printJobColumn.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: UM.Theme.getSize("default_margin").height + id: configButton + onClicked: base.manager.openPrintJobControlPanel() + text: catalog.i18nc("@action:button", "View print jobs") + } + + Item + { + // spacer + anchors.top: configButton.bottom + width: UM.Theme.getSize("default_margin").width + height: UM.Theme.getSize("default_margin").height + } + } + + + Rectangle + { + id: printersArea + border.width: UM.Theme.getSize("default_lining").width + border.color: lineColor + anchors.top: printJobArea.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.right: parent.right + anchors.rightMargin:UM.Theme.getSize("default_margin").width + radius: cornerRadius + height: childrenRect.height + + Item + { + id: printersTitleBar + width: parent.width + height: printJobTitleLabel.height + 2 * UM.Theme.getSize("default_margin").height + + Label + { + id: printersTitleLabel + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.top: parent.top + anchors.topMargin: UM.Theme.getSize("default_margin").height + text: catalog.i18nc("@label:title", "Printers") + font: UM.Theme.getFont("default") + opacity: 0.75 + } + Rectangle + { + anchors.bottom: parent.bottom + height: UM.Theme.getSize("default_lining").width + color: lineColor + width: parent.width + } + } + Column + { + id: printersColumn + anchors.top: printersTitleBar.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_margin").width + + Repeater + { + model: manager.connectedPrintersTypeCount + Item + { + width: parent.width + height: childrenRect.height + opacity: 0.65 + Label + { + text: modelData.machine_type + font: UM.Theme.getFont("very_small") + } + + Label + { + text: modelData.count + font: UM.Theme.getFont("small") + anchors.right: parent.right + } + } + } + } + OpenPanelButton + { + anchors.top: printersColumn.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.margins: UM.Theme.getSize("default_margin").height + id: printerConfigButton + onClicked: base.manager.openPrinterControlPanel() + + text: catalog.i18nc("@action:button", "View printers") + } + + Item + { + // spacer + anchors.top: printerConfigButton.bottom + width: UM.Theme.getSize("default_margin").width + height: UM.Theme.getSize("default_margin").height + } + } + } +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml b/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml new file mode 100644 index 0000000000..d39cdab81e --- /dev/null +++ b/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml @@ -0,0 +1,108 @@ +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 + +import UM 1.3 as UM +import Cura 1.0 as Cura + +Component +{ + Rectangle + { + width: maximumWidth + height: maximumHeight + color: "#FFFFFF" // TODO; Should not be hardcoded. + + property var emphasisColor: "#44c0ff" //TODO: should be linked to theme. + property var lineColor: "#DCDCDC" // TODO: Should be linked to theme. + property var cornerRadius: 4 // TODO: Should be linked to theme. + UM.I18nCatalog + { + id: catalog + name: "cura" + } + + Label + { + id: activePrintersLabel + font: UM.Theme.getFont("large") + + text: + { + if (OutputDevice.connectedPrinters.length == 0){ + return catalog.i18nc("@label: arg 1 is group name", "%1 is not set up to host a group of connected Ultimaker 3 printers").arg(Cura.MachineManager.printerOutputDevices[0].name) + } else { + return "" + } + } + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + anchors.topMargin: UM.Theme.getSize("default_margin").height + + visible: OutputDevice.connectedPrinters.length == 0 + } + + Item + { + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.top: parent.top + anchors.horizontalCenter: parent.horizontalCenter + + width: Math.min(800, maximumWidth) + height: children.height + visible: OutputDevice.connectedPrinters.length != 0 + + Label + { + id: addRemovePrintersLabel + anchors.right: parent.right + text: "Add / remove printers" + } + + MouseArea + { + anchors.fill: addRemovePrintersLabel + onClicked: Cura.MachineManager.printerOutputDevices[0].openPrinterControlPanel() + } + } + + + ScrollView + { + id: printerScrollView + anchors.margins: UM.Theme.getSize("default_margin").width + anchors.top: activePrintersLabel.bottom + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_lining").width // To ensure border can be drawn. + anchors.rightMargin: UM.Theme.getSize("default_lining").width + anchors.right: parent.right + + ListView + { + anchors.fill: parent + spacing: -UM.Theme.getSize("default_lining").height + + model: OutputDevice.connectedPrinters + + delegate: PrinterInfoBlock + { + printer: modelData + width: Math.min(800, maximumWidth) + height: 125 + + // Add a 1 pix margin, as the border is sometimes cut off otherwise. + anchors.horizontalCenter: parent.horizontalCenter + } + } + } + + PrinterVideoStream + { + visible: OutputDevice.selectedPrinterName != "" + anchors.fill:parent + } + } +} diff --git a/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml b/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml index 58f155533f..3f51ff9dda 100644 --- a/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml +++ b/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml @@ -272,6 +272,28 @@ Cura.MachineAction text: base.selectedPrinter ? base.selectedPrinter.ipAddress : "" } } + + Label + { + width: parent.width + wrapMode: Text.WordWrap + text:{ + // The property cluster size does not exist for older UM3 devices. + if(base.selectedPrinter.clusterSize == null || base.selectedPrinter.clusterSize == 1) + { + return ""; + } + else if (base.selectedPrinter.clusterSize === 0) + { + return catalog.i18nc("@label", "Cura Connect: This printer is not set up to host a group of connected Ultimaker 3 printers."); + } + else + { + return catalog.i18nc("@label", "Cura Connect: This printer is set up to host a group of %1 connected Ultimaker 3 printers".arg(base.selectedPrinter.clusterSize)); + } + } + + } Label { width: parent.width diff --git a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py new file mode 100644 index 0000000000..55f9d1247b --- /dev/null +++ b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py @@ -0,0 +1,638 @@ +import datetime +import getpass +import gzip +import json +import os +import os.path +import time + +from enum import Enum +from PyQt5.QtNetwork import QNetworkRequest, QHttpPart, QHttpMultiPart +from PyQt5.QtCore import QUrl, QByteArray, pyqtSlot, pyqtProperty, QCoreApplication, QTimer, pyqtSignal, QObject +from PyQt5.QtGui import QDesktopServices +from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkReply +from PyQt5.QtQml import QQmlComponent, QQmlContext +from UM.Application import Application +from UM.Logger import Logger +from UM.Message import Message +from UM.OutputDevice import OutputDeviceError +from UM.i18n import i18nCatalog + +from . import NetworkPrinterOutputDevice + + +i18n_catalog = i18nCatalog("cura") + + +class OutputStage(Enum): + ready = 0 + uploading = 2 + + +class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinterOutputDevice): + printJobsChanged = pyqtSignal() + printersChanged = pyqtSignal() + selectedPrinterChanged = pyqtSignal() + + def __init__(self, key, address, properties, api_prefix, plugin_path): + super().__init__(key, address, properties, api_prefix) + # Store the address of the master. + self._master_address = address + name_property = properties.get(b"name", b"") + if name_property: + name = name_property.decode("utf-8") + else: + name = key + + self._plugin_path = plugin_path + + self.setName(name) + description = i18n_catalog.i18nc("@action:button Preceded by 'Ready to'.", "Print over network") + self.setShortDescription(description) + self.setDescription(description) + + self._stage = OutputStage.ready + host_override = os.environ.get("CLUSTER_OVERRIDE_HOST", "") + if host_override: + Logger.log( + "w", + "Environment variable CLUSTER_OVERRIDE_HOST is set to [%s], cluster hosts are now set to this host", + host_override) + self._host = "http://" + host_override + else: + self._host = "http://" + address + + # is the same as in NetworkPrinterOutputDevicePlugin + self._cluster_api_version = "1" + self._cluster_api_prefix = "/cluster-api/v" + self._cluster_api_version + "/" + self._api_base_uri = self._host + self._cluster_api_prefix + + self._file_name = None + self._progress_message = None + self._request = None + self._reply = None + + # The main reason to keep the 'multipart' form data on the object + # is to prevent the Python GC from claiming it too early. + self._multipart = None + + self._print_view = None + self._request_job = [] + + self._monitor_view_qml_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "ClusterMonitorItem.qml") + self._control_view_qml_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "ClusterControlItem.qml") + + self._print_jobs = [] + self._print_job_by_printer_uuid = {} + self._print_job_by_uuid = {} # Print jobs by their own uuid + self._printers = [] + self._printers_dict = {} # by unique_name + + self._connected_printers_type_count = [] + self._automatic_printer = {"unique_name": "", "friendly_name": "Automatic"} # empty unique_name IS automatic selection + self._selected_printer = self._automatic_printer + + self._cluster_status_update_timer = QTimer() + self._cluster_status_update_timer.setInterval(5000) + self._cluster_status_update_timer.setSingleShot(False) + self._cluster_status_update_timer.timeout.connect(self._requestClusterStatus) + + self._can_pause = False + self._can_abort = False + self._can_pre_heat_bed = False + self._cluster_size = int(properties.get(b"cluster_size", 0)) + + self._cleanupRequest() + + #These are texts that are to be translated for future features. + temporary_translation = i18n_catalog.i18n("This printer is not set up to host a group of connected Ultimaker 3 printers.") + temporary_translation2 = i18n_catalog.i18nc("Count is number of printers.", "This printer is the host for a group of {count} connected Ultimaker 3 printers.").format(count = 3) + temporary_translation3 = i18n_catalog.i18n("{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate.") #When finished. + temporary_translation4 = i18n_catalog.i18n("{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing.") #When configuration changed. + + @pyqtProperty(QObject, notify=selectedPrinterChanged) + def controlItem(self): + # TODO: Probably not the nicest way to do this. This needs to be done better at some point in time. + if not self._control_component: + self._createControlViewFromQML() + name = self._selected_printer.get("friendly_name") + if name == self._automatic_printer.get("friendly_name") or name == "": + return self._control_item + # Let cura use the default. + return None + + @pyqtSlot(int, result = str) + def getTimeCompleted(self, time_remaining): + current_time = time.time() + datetime_completed = datetime.datetime.fromtimestamp(current_time + time_remaining) + return "{hour:02d}:{minute:02d}".format(hour = datetime_completed.hour, minute = datetime_completed.minute) + + @pyqtSlot(int, result = str) + def getDateCompleted(self, time_remaining): + current_time = time.time() + datetime_completed = datetime.datetime.fromtimestamp(current_time + time_remaining) + return (datetime_completed.strftime("%a %b ") + "{day}".format(day=datetime_completed.day)).upper() + + @pyqtProperty(int, constant = True) + def clusterSize(self): + return self._cluster_size + + @pyqtProperty(str, notify=selectedPrinterChanged) + def name(self): + # Show the name of the selected printer. + # This is not the nicest way to do this, but changes to the Cura UI are required otherwise. + name = self._selected_printer.get("friendly_name") + if name != self._automatic_printer.get("friendly_name"): + return name + # Return name of cluster master. + return self._properties.get(b"name", b"").decode("utf-8") + + def connect(self): + super().connect() + self._cluster_status_update_timer.start() + + def close(self): + super().close() + self._cluster_status_update_timer.stop() + + def _requestClusterStatus(self): + # TODO: Handle timeout. We probably want to know if the cluster is still reachable or not. + url = QUrl(self._api_base_uri + "print_jobs/") + print_jobs_request = QNetworkRequest(url) + self._addUserAgentHeader(print_jobs_request) + self._manager.get(print_jobs_request) + # See _finishedPrintJobsRequest() + + url = QUrl(self._api_base_uri + "printers/") + printers_request = QNetworkRequest(url) + self._addUserAgentHeader(printers_request) + self._manager.get(printers_request) + # See _finishedPrintersRequest() + + def _finishedPrintJobsRequest(self, reply): + try: + json_data = json.loads(bytes(reply.readAll()).decode("utf-8")) + except json.decoder.JSONDecodeError: + Logger.log("w", "Received an invalid print job state message: Not valid JSON.") + return + self.setPrintJobs(json_data) + + def _finishedPrintersRequest(self, reply): + try: + json_data = json.loads(bytes(reply.readAll()).decode("utf-8")) + except json.decoder.JSONDecodeError: + Logger.log("w", "Received an invalid print job state message: Not valid JSON.") + return + self.setPrinters(json_data) + + def materialHotendChangedMessage(self, callback): + pass # Do nothing. + + def _startCameraStream(self): + ## Request new image + url = QUrl("http://" + self._printers_dict[self._selected_printer["unique_name"]]["ip_address"] + ":8080/?action=stream") + self._image_request = QNetworkRequest(url) + self._addUserAgentHeader(self._image_request) + self._image_reply = self._manager.get(self._image_request) + self._image_reply.downloadProgress.connect(self._onStreamDownloadProgress) + + def spawnPrintView(self): + if self._print_view is None: + path = QUrl.fromLocalFile(os.path.join(self._plugin_path, "PrintWindow.qml")) + component = QQmlComponent(Application.getInstance()._engine, path) + + self._print_context = QQmlContext(Application.getInstance()._engine.rootContext()) + self._print_context.setContextProperty("OutputDevice", self) + self._print_view = component.create(self._print_context) + + if component.isError(): + Logger.log("e", " Errors creating component: \n%s", "\n".join( + [e.toString() for e in component.errors()])) + + if self._print_view is not None: + self._print_view.show() + + ## Store job info, show Print view for settings + def requestWrite(self, nodes, file_name=None, filter_by_machine=False, file_handler=None, **kwargs): + self._selected_printer = self._automatic_printer # reset to default option + self._request_job = [nodes, file_name, filter_by_machine, file_handler, kwargs] + + if self._stage != OutputStage.ready: + if self._error_message: + self._error_message.hide() + self._error_message = Message( + i18n_catalog.i18nc("@info:status", + "Sending new jobs (temporarily) blocked, still sending the previous print job.")) + self._error_message.show() + return + + if len(self._printers) > 1: + self.spawnPrintView() # Ask user how to print it. + elif len(self._printers) == 1: + # If there is only one printer, don't bother asking. + self.selectAutomaticPrinter() + self.sendPrintJob() + else: + # Cluster has no printers, warn the user of this. + if self._error_message: + self._error_message.hide() + self._error_message = Message( + i18n_catalog.i18nc("@info:status", + "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers.")) + self._error_message.show() + + ## Actually send the print job, called from the dialog + # :param: require_printer_name: name of printer, or "" + @pyqtSlot() + def sendPrintJob(self): + nodes, file_name, filter_by_machine, file_handler, kwargs = self._request_job + require_printer_name = self._selected_printer["unique_name"] + + self._send_gcode_start = time.time() + Logger.log("d", "Sending print job [%s] to host..." % file_name) + + if self._stage != OutputStage.ready: + Logger.log("d", "Unable to send print job as the state is %s", self._stage) + raise OutputDeviceError.DeviceBusyError() + self._stage = OutputStage.uploading + + self._file_name = "%s.gcode.gz" % file_name + self._showProgressMessage() + + self._request = self._buildSendPrintJobHttpRequest(require_printer_name) + self._reply = self._manager.post(self._request, self._multipart) + self._reply.uploadProgress.connect(self._onUploadProgress) + # See _finishedPostPrintJobRequest() + + def _buildSendPrintJobHttpRequest(self, require_printer_name): + api_url = QUrl(self._api_base_uri + "print_jobs/") + request = QNetworkRequest(api_url) + # Create multipart request and add the g-code. + self._multipart = QHttpMultiPart(QHttpMultiPart.FormDataType) + + # Add gcode + part = QHttpPart() + part.setHeader(QNetworkRequest.ContentDispositionHeader, + 'form-data; name="file"; filename="%s"' % self._file_name) + + gcode = getattr(Application.getInstance().getController().getScene(), "gcode_list") + compressed_gcode = self._compressGcode(gcode) + if compressed_gcode is None: + return # User aborted print, so stop trying. + + part.setBody(compressed_gcode) + self._multipart.append(part) + + # require_printer_name "" means automatic + if require_printer_name: + self._multipart.append(self.__createKeyValueHttpPart("require_printer_name", require_printer_name)) + user_name = self.__get_username() + if user_name is None: + user_name = "unknown" + self._multipart.append(self.__createKeyValueHttpPart("owner", user_name)) + + self._addUserAgentHeader(request) + return request + + def _compressGcode(self, gcode): + self._compressing_print = True + batched_line = "" + max_chars_per_line = int(1024 * 1024 / 4) # 1 / 4 MB + + byte_array_file_data = b"" + + def _compressDataAndNotifyQt(data_to_append): + compressed_data = gzip.compress(data_to_append.encode("utf-8")) + QCoreApplication.processEvents() # Ensure that the GUI does not freeze. + # Pretend that this is a response, as zipping might take a bit of time. + self._last_response_time = time.time() + return compressed_data + + if gcode is None: + Logger.log("e", "Unable to find sliced gcode, returning empty.") + return byte_array_file_data + + for line in gcode: + if not self._compressing_print: + self._progress_message.hide() + return # Stop trying to zip, abort was called. + batched_line += line + # if the gcode was read from a gcode file, self._gcode will be a list of all lines in that file. + # Compressing line by line in this case is extremely slow, so we need to batch them. + if len(batched_line) < max_chars_per_line: + continue + byte_array_file_data += _compressDataAndNotifyQt(batched_line) + batched_line = "" + + # Also compress the leftovers. + if batched_line: + byte_array_file_data += _compressDataAndNotifyQt(batched_line) + + return byte_array_file_data + + def __createKeyValueHttpPart(self, key, value): + metadata_part = QHttpPart() + metadata_part.setHeader(QNetworkRequest.ContentTypeHeader, 'text/plain') + metadata_part.setHeader(QNetworkRequest.ContentDispositionHeader, 'form-data; name="%s"' % (key)) + metadata_part.setBody(bytearray(value, "utf8")) + return metadata_part + + def __get_username(self): + try: + return getpass.getuser() + except: + Logger.log("d", "Could not get the system user name, returning 'unknown' instead.") + return None + + def _finishedPrintJobPostRequest(self, reply): + self._stage = OutputStage.ready + if self._progress_message: + self._progress_message.hide() + self._progress_message = None + self.writeFinished.emit(self) + + if reply.error(): + self._showRequestFailedMessage(reply) + self.writeError.emit(self) + else: + self._showRequestSucceededMessage() + self.writeSuccess.emit(self) + + self._cleanupRequest() + + def _showRequestFailedMessage(self, reply): + if reply is not None: + Logger.log("w", "Unable to send print job to group {cluster_name}: {error_string} ({error})".format( + cluster_name = self.getName(), + error_string = str(reply.errorString()), + error = str(reply.error()))) + error_message_template = i18n_catalog.i18nc("@info:status", "Unable to send print job to group {cluster_name}.") + message = Message(text=error_message_template.format( + cluster_name = self.getName())) + message.show() + + def _showRequestSucceededMessage(self): + confirmation_message_template = i18n_catalog.i18nc( + "@info:status", + "Sent {file_name} to group {cluster_name}." + ) + file_name = os.path.basename(self._file_name).split(".")[0] + message_text = confirmation_message_template.format(cluster_name = self.getName(), file_name = file_name) + message = Message(text=message_text) + button_text = i18n_catalog.i18nc("@action:button", "Show print jobs") + button_tooltip = i18n_catalog.i18nc("@info:tooltip", "Opens the print jobs interface in your browser.") + message.addAction("open_browser", button_text, "globe", button_tooltip) + message.actionTriggered.connect(self._onMessageActionTriggered) + message.show() + + def setPrintJobs(self, print_jobs): + #TODO: hack, last seen messes up the check, so drop it. + for job in print_jobs: + del job["last_seen"] + # Strip any extensions + job["name"] = self._removeGcodeExtension(job["name"]) + + if self._print_jobs != print_jobs: + old_print_jobs = self._print_jobs + self._print_jobs = print_jobs + + self._notifyFinishedPrintJobs(old_print_jobs, print_jobs) + + # Yes, this is a hacky way of doing it, but it's quick and the API doesn't give the print job per printer + # for some reason. ugh. + self._print_job_by_printer_uuid = {} + self._print_job_by_uuid = {} + for print_job in print_jobs: + if "printer_uuid" in print_job and print_job["printer_uuid"] is not None: + self._print_job_by_printer_uuid[print_job["printer_uuid"]] = print_job + self._print_job_by_uuid[print_job["uuid"]] = print_job + self.printJobsChanged.emit() + + def _removeGcodeExtension(self, name): + parts = name.split(".") + if parts[-1].upper() == "GZ": + parts = parts[:-1] + if parts[-1].upper() == "GCODE": + parts = parts[:-1] + return ".".join(parts) + + def _notifyFinishedPrintJobs(self, old_print_jobs, new_print_jobs): + """Notify the user when any of their print jobs have just completed. + + Arguments: + + old_print_jobs -- the previous list of print job status information as returned by the cluster REST API. + new_print_jobs -- the current list of print job status information as returned by the cluster REST API. + """ + if old_print_jobs is None: + return + + username = self.__get_username() + if username is None: + return + + our_old_print_jobs = self.__filterOurPrintJobs(old_print_jobs) + our_old_not_finished_print_jobs = [pj for pj in our_old_print_jobs if pj["status"] != "wait_cleanup"] + + our_new_print_jobs = self.__filterOurPrintJobs(new_print_jobs) + our_new_finished_print_jobs = [pj for pj in our_new_print_jobs if pj["status"] == "wait_cleanup"] + + old_not_finished_print_job_uuids = set([pj["uuid"] for pj in our_old_not_finished_print_jobs]) + + for print_job in our_new_finished_print_jobs: + if print_job["uuid"] in old_not_finished_print_job_uuids: + + printer_name = self.__getPrinterNameFromUuid(print_job["printer_uuid"]) + if printer_name is None: + printer_name = i18n_catalog.i18nc("@info:status", "Unknown printer") + + message_text = (i18n_catalog.i18nc("@info:status", + "Printer '{printer_name}' has finished printing '{job_name}'.") + .format(printer_name=printer_name, job_name=print_job["name"])) + message = Message(text=message_text, title=i18n_catalog.i18nc("@info:status", "Print finished")) + Application.getInstance().showMessage(message) + Application.getInstance().showToastMessage( + i18n_catalog.i18nc("@info:status", "Print finished"), + message_text) + + def __filterOurPrintJobs(self, print_jobs): + username = self.__get_username() + return [print_job for print_job in print_jobs if print_job["owner"] == username] + + def __getPrinterNameFromUuid(self, printer_uuid): + for printer in self._printers: + if printer["uuid"] == printer_uuid: + return printer["friendly_name"] + return None + + def setPrinters(self, printers): + if self._printers != printers: + self._connected_printers_type_count = [] + printers_count = {} + self._printers = printers + self._printers_dict = dict((p["unique_name"], p) for p in printers) # for easy lookup by unique_name + + for printer in printers: + variant = printer["machine_variant"] + if variant in printers_count: + printers_count[variant] += 1 + else: + printers_count[variant] = 1 + for type in printers_count: + self._connected_printers_type_count.append({"machine_type": type, "count": printers_count[type]}) + self.printersChanged.emit() + + @pyqtProperty("QVariantList", notify=printersChanged) + def connectedPrintersTypeCount(self): + return self._connected_printers_type_count + + @pyqtProperty("QVariantList", notify=printersChanged) + def connectedPrinters(self): + return self._printers + + @pyqtProperty(int, notify=printJobsChanged) + def numJobsPrinting(self): + num_jobs_printing = 0 + for job in self._print_jobs: + if job["status"] == "printing": + num_jobs_printing += 1 + return num_jobs_printing + + @pyqtProperty(int, notify=printJobsChanged) + def numJobsQueued(self): + num_jobs_queued = 0 + for job in self._print_jobs: + if job["status"] == "queued": + num_jobs_queued += 1 + return num_jobs_queued + + @pyqtProperty("QVariantMap", notify=printJobsChanged) + def printJobsByUUID(self): + return self._print_job_by_uuid + + @pyqtProperty("QVariantMap", notify=printJobsChanged) + def printJobsByPrinterUUID(self): + return self._print_job_by_printer_uuid + + @pyqtProperty("QVariantList", notify=printJobsChanged) + def printJobs(self): + return self._print_jobs + + @pyqtProperty("QVariantList", notify=printersChanged) + def printers(self): + return [self._automatic_printer, ] + self._printers + + @pyqtSlot(str, str) + def selectPrinter(self, unique_name, friendly_name): + self.stopCamera() + self._selected_printer = {"unique_name": unique_name, "friendly_name": friendly_name} + Logger.log("d", "Selected printer: %s %s", friendly_name, unique_name) + # TODO: Probably not the nicest way to do this. This needs to be done better at some point in time. + if unique_name == "": + self._address = self._master_address + else: + self._address = self._printers_dict[self._selected_printer["unique_name"]]["ip_address"] + + self.selectedPrinterChanged.emit() + + def _updateJobState(self, job_state): + name = self._selected_printer.get("friendly_name") + if name == "" or name == "Automatic": + # TODO: This is now a bit hacked; If no printer is selected, don't show job state. + if self._job_state != "": + self._job_state = "" + self.jobStateChanged.emit() + else: + if self._job_state != job_state: + self._job_state = job_state + self.jobStateChanged.emit() + + @pyqtSlot() + def selectAutomaticPrinter(self): + self.stopCamera() + self._selected_printer = self._automatic_printer + self.selectedPrinterChanged.emit() + + @pyqtProperty("QVariant", notify=selectedPrinterChanged) + def selectedPrinterName(self): + return self._selected_printer.get("unique_name", "") + + def getPrintJobsUrl(self): + return self._host + "/print_jobs" + + def getPrintersUrl(self): + return self._host + "/printers" + + def _showProgressMessage(self): + progress_message_template = i18n_catalog.i18nc("@info:progress", + "Sending {file_name} to group {cluster_name}") + file_name = os.path.basename(self._file_name).split(".")[0] + self._progress_message = Message(progress_message_template.format(file_name = file_name, cluster_name = self.getName()), 0, False, -1) + self._progress_message.addAction("Abort", i18n_catalog.i18nc("@action:button", "Cancel"), None, "") + self._progress_message.actionTriggered.connect(self._onMessageActionTriggered) + self._progress_message.show() + + def _addUserAgentHeader(self, request): + request.setRawHeader(b"User-agent", b"CuraPrintClusterOutputDevice Plugin") + + def _cleanupRequest(self): + self._reply = None + self._request = None + self._multipart = None + self._stage = OutputStage.ready + self._file_name = None + + def _onFinished(self, reply): + super()._onFinished(reply) + reply_url = reply.url().toString() + status_code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) + if status_code == 500: + Logger.log("w", "Request to {url} returned a 500.".format(url = reply_url)) + return + if reply.error() == QNetworkReply.ContentOperationNotPermittedError: + # It was probably "/api/v1/materials" for legacy UM3 + return + if reply.error() == QNetworkReply.ContentNotFoundError: + # It was probably "/api/v1/print_job" for legacy UM3 + return + + if reply.operation() == QNetworkAccessManager.PostOperation: + if self._cluster_api_prefix + "print_jobs" in reply_url: + self._finishedPrintJobPostRequest(reply) + return + + # We need to do this check *after* we process the post operation! + # If the sending of g-code is cancelled by the user it will result in an error, but we do need to handle this. + if reply.error() != QNetworkReply.NoError: + Logger.log("e", "After requesting [%s] we got a network error [%s]. Not processing anything...", reply_url, reply.error()) + return + + elif reply.operation() == QNetworkAccessManager.GetOperation: + if self._cluster_api_prefix + "print_jobs" in reply_url: + self._finishedPrintJobsRequest(reply) + elif self._cluster_api_prefix + "printers" in reply_url: + self._finishedPrintersRequest(reply) + + @pyqtSlot() + def openPrintJobControlPanel(self): + Logger.log("d", "Opening print job control panel...") + QDesktopServices.openUrl(QUrl(self.getPrintJobsUrl())) + + @pyqtSlot() + def openPrinterControlPanel(self): + Logger.log("d", "Opening printer control panel...") + QDesktopServices.openUrl(QUrl(self.getPrintersUrl())) + + def _onMessageActionTriggered(self, message, action): + if action == "open_browser": + QDesktopServices.openUrl(QUrl(self.getPrintJobsUrl())) + + if action == "Abort": + Logger.log("d", "User aborted sending print to remote.") + self._progress_message.hide() + self._compressing_print = False + self._stage = OutputStage.ready + if self._reply: + self._reply.abort() + self._reply = None + Application.getInstance().showPrintMonitor.emit(False) diff --git a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py index 8c7a07ef4b..6c81ff6d82 100755 --- a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py @@ -17,7 +17,7 @@ import cura.Settings.ExtruderManager from PyQt5.QtNetwork import QHttpMultiPart, QHttpPart, QNetworkRequest, QNetworkAccessManager, QNetworkReply from PyQt5.QtCore import QUrl, QTimer, pyqtSignal, pyqtProperty, pyqtSlot, QCoreApplication -from PyQt5.QtGui import QImage +from PyQt5.QtGui import QImage, QColor from PyQt5.QtWidgets import QMessageBox import json @@ -102,7 +102,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): self._target_bed_temperature = 0 self._processing_preheat_requests = True - self.setPriority(2) # Make sure the output device gets selected above local file output + self.setPriority(3) # Make sure the output device gets selected above local file output self.setName(key) self.setShortDescription(i18n_catalog.i18nc("@action:button Preceded by 'Ready to'.", "Print over network")) self.setDescription(i18n_catalog.i18nc("@properties:tooltip", "Print over network")) @@ -340,6 +340,10 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): pass # It can happen that the wrapped c++ object is already deleted. self._image_reply = None self._image_request = None + if self._use_stream: + # Reset image (To prevent old images from being displayed) + self._camera_image.fill(QColor(0, 0, 0)) + self.newImage.emit() def _startCamera(self): if self._use_stream: @@ -1007,7 +1011,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): reply_url = reply.url().toString() if reply.operation() == QNetworkAccessManager.GetOperation: - if "printer" in reply_url: # Status update from printer. + # "printer" is also in "printers", therefore _api_prefix is added. + if self._api_prefix + "printer" in reply_url: # Status update from printer. if status_code == 200: if self._connection_state == ConnectionState.connecting: self.setConnectionState(ConnectionState.connected) @@ -1025,7 +1030,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): else: Logger.log("w", "We got an unexpected status (%s) while requesting printer state", status_code) pass # TODO: Handle errors - elif "print_job" in reply_url: # Status update from print_job: + elif self._api_prefix + "print_job" in reply_url: # Status update from print_job: if status_code == 200: try: json_data = json.loads(bytes(reply.readAll()).decode("utf-8")) diff --git a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevicePlugin.py b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevicePlugin.py index 5f2ed1badc..39e5faf938 100644 --- a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevicePlugin.py +++ b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevicePlugin.py @@ -1,26 +1,31 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. -from UM.OutputDevice.OutputDevicePlugin import OutputDevicePlugin -from . import NetworkPrinterOutputDevice - -from zeroconf import Zeroconf, ServiceBrowser, ServiceStateChange, ServiceInfo # type: ignore -from UM.Logger import Logger -from UM.Signal import Signal, signalemitter -from UM.Application import Application -from UM.Preferences import Preferences - -from PyQt5.QtNetwork import QNetworkRequest, QNetworkAccessManager, QNetworkReply -from PyQt5.QtCore import QUrl - +import os import time import json +from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal, pyqtSlot +from PyQt5.QtCore import QUrl +from PyQt5.QtGui import QDesktopServices +from PyQt5.QtNetwork import QNetworkRequest, QNetworkAccessManager, QNetworkReply +from PyQt5.QtQml import QQmlComponent, QQmlContext +from UM.Application import Application +from UM.Logger import Logger +from UM.OutputDevice.OutputDevicePlugin import OutputDevicePlugin +from UM.PluginRegistry import PluginRegistry +from UM.Preferences import Preferences +from UM.Signal import Signal, signalemitter +from zeroconf import Zeroconf, ServiceBrowser, ServiceStateChange, ServiceInfo # type: ignore + +from . import NetworkPrinterOutputDevice, NetworkClusterPrinterOutputDevice + + ## This plugin handles the connection detection & creation of output device objects for the UM3 printer. # Zero-Conf is used to detect printers, which are saved in a dict. # If we discover a printer that has the same key as the active machine instance a connection is made. @signalemitter -class NetworkPrinterOutputDevicePlugin(OutputDevicePlugin): +class NetworkPrinterOutputDevicePlugin(QObject, OutputDevicePlugin): def __init__(self): super().__init__() self._zero_conf = None @@ -29,6 +34,8 @@ class NetworkPrinterOutputDevicePlugin(OutputDevicePlugin): self._api_version = "1" self._api_prefix = "/api/v" + self._api_version + "/" + self._cluster_api_version = "1" + self._cluster_api_prefix = "/cluster-api/v" + self._cluster_api_version + "/" self._network_manager = QNetworkAccessManager() self._network_manager.finished.connect(self._onNetworkRequestFinished) @@ -47,6 +54,8 @@ class NetworkPrinterOutputDevicePlugin(OutputDevicePlugin): self._preferences.addPreference("um3networkprinting/manual_instances", "") # A comma-separated list of ip adresses or hostnames self._manual_instances = self._preferences.getValue("um3networkprinting/manual_instances").split(",") + self._network_requests_buffer = {} # store api responses until data is complete + addPrinterSignal = Signal() removePrinterSignal = Signal() printerListChanged = Signal() @@ -91,6 +100,7 @@ class NetworkPrinterOutputDevicePlugin(OutputDevicePlugin): self.addPrinter(instance_name, address, properties) self.checkManualPrinter(address) + self.checkClusterPrinter(address) def removeManualPrinter(self, key, address = None): if key in self._printers: @@ -105,18 +115,26 @@ class NetworkPrinterOutputDevicePlugin(OutputDevicePlugin): def checkManualPrinter(self, address): # Check if a printer exists at this address # If a printer responds, it will replace the preliminary printer created above - url = QUrl("http://" + address + self._api_prefix + "system") + # origin=manual is for tracking back the origin of the call + url = QUrl("http://" + address + self._api_prefix + "system?origin=manual_name") name_request = QNetworkRequest(url) self._network_manager.get(name_request) + def checkClusterPrinter(self, address): + cluster_url = QUrl("http://" + address + self._cluster_api_prefix + "printers/?origin=check_cluster") + cluster_request = QNetworkRequest(cluster_url) + self._network_manager.get(cluster_request) + ## Handler for all requests that have finished. def _onNetworkRequestFinished(self, reply): reply_url = reply.url().toString() status_code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) if reply.operation() == QNetworkAccessManager.GetOperation: - if "system" in reply_url: # Name returned from printer. + address = reply.url().host() + if "origin=manual_name" in reply_url: # Name returned from printer. if status_code == 200: + try: system_info = json.loads(bytes(reply.readAll()).decode("utf-8")) except json.JSONDecodeError: @@ -125,28 +143,51 @@ class NetworkPrinterOutputDevicePlugin(OutputDevicePlugin): except UnicodeDecodeError: Logger.log("e", "Printer returned incorrect UTF-8.") return - address = reply.url().host() - instance_name = "manual:%s" % address - machine = "unknown" - if "variant" in system_info: - variant = system_info["variant"] - if variant == "Ultimaker 3": - machine = "9066" - elif variant == "Ultimaker 3 Extended": - machine = "9511" - properties = { - b"name": system_info["name"].encode("utf-8"), - b"address": address.encode("utf-8"), - b"firmware_version": system_info["firmware"].encode("utf-8"), - b"manual": b"true", - b"machine": machine.encode("utf-8") - } - if instance_name in self._printers: - # Only replace the printer if it is still in the list of (manual) printers - self.removePrinter(instance_name) - self.addPrinter(instance_name, address, properties) + if address not in self._network_requests_buffer: + self._network_requests_buffer[address] = {} + self._network_requests_buffer[address]["system"] = system_info + elif "origin=check_cluster" in reply_url: + if address not in self._network_requests_buffer: + self._network_requests_buffer[address] = {} + if status_code == 200: + # We know it's a cluster printer + Logger.log("d", "Cluster printer detected: [%s]", reply.url()) + self._network_requests_buffer[address]["cluster"] = True + else: + Logger.log("d", "This url is not from a cluster printer: [%s]", reply.url()) + self._network_requests_buffer[address]["cluster"] = False + + # Both the system call and cluster call are finished + if (address in self._network_requests_buffer and + "system" in self._network_requests_buffer[address] and + "cluster" in self._network_requests_buffer[address]): + + instance_name = "manual:%s" % address + system_info = self._network_requests_buffer[address]["system"] + is_cluster = self._network_requests_buffer[address]["cluster"] + machine = "unknown" + if "variant" in system_info: + variant = system_info["variant"] + if variant == "Ultimaker 3": + machine = "9066" + elif variant == "Ultimaker 3 Extended": + machine = "9511" + + properties = { + b"name": system_info["name"].encode("utf-8"), + b"address": address.encode("utf-8"), + b"firmware_version": system_info["firmware"].encode("utf-8"), + b"manual": b"true", + b"machine": machine.encode("utf-8") + } + if instance_name in self._printers: + # Only replace the printer if it is still in the list of (manual) printers + self.removePrinter(instance_name) + self.addPrinter(instance_name, address, properties, force_cluster=is_cluster) + + del self._network_requests_buffer[address] ## Stop looking for devices on network. def stop(self): @@ -175,8 +216,13 @@ class NetworkPrinterOutputDevicePlugin(OutputDevicePlugin): self._printers[key].connectionStateChanged.disconnect(self._onPrinterConnectionStateChanged) ## Because the model needs to be created in the same thread as the QMLEngine, we use a signal. - def addPrinter(self, name, address, properties): - printer = NetworkPrinterOutputDevice.NetworkPrinterOutputDevice(name, address, properties, self._api_prefix) + def addPrinter(self, name, address, properties, force_cluster=False): + cluster_size = int(properties.get(b"cluster_size", -1)) + if force_cluster or cluster_size >= 0: + printer = NetworkClusterPrinterOutputDevice.NetworkClusterPrinterOutputDevice( + name, address, properties, self._api_prefix, self._plugin_path) + else: + printer = NetworkPrinterOutputDevice.NetworkPrinterOutputDevice(name, address, properties, self._api_prefix) self._printers[printer.getKey()] = printer global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack and printer.getKey() == global_container_stack.getMetaDataEntry("um_network_key"): @@ -237,4 +283,22 @@ class NetworkPrinterOutputDevicePlugin(OutputDevicePlugin): elif state_change == ServiceStateChange.Removed: Logger.log("d", "Bonjour service removed: %s" % name) - self.removePrinterSignal.emit(str(name)) \ No newline at end of file + self.removePrinterSignal.emit(str(name)) + + ## For cluster below + def _get_plugin_directory_name(self): + current_file_absolute_path = os.path.realpath(__file__) + directory_path = os.path.dirname(current_file_absolute_path) + _, directory_name = os.path.split(directory_path) + return directory_name + + @property + def _plugin_path(self): + return PluginRegistry.getInstance().getPluginPath(self._get_plugin_directory_name()) + + @pyqtSlot() + def openControlPanel(self): + Logger.log("d", "Opening print jobs web UI...") + selected_device = self.getOutputDeviceManager().getActiveDevice() + if isinstance(selected_device, NetworkClusterPrinterOutputDevice.NetworkClusterPrinterOutputDevice): + QDesktopServices.openUrl(QUrl(selected_device.getPrintJobsUrl())) diff --git a/plugins/UM3NetworkPrinting/OpenPanelButton.qml b/plugins/UM3NetworkPrinting/OpenPanelButton.qml new file mode 100644 index 0000000000..3915c1f9eb --- /dev/null +++ b/plugins/UM3NetworkPrinting/OpenPanelButton.qml @@ -0,0 +1,18 @@ +import QtQuick 2.2 +import QtQuick.Controls 1.1 +import QtQuick.Controls.Styles 1.1 + +import UM 1.1 as UM + +Button { + objectName: "openPanelSaveAreaButton" + id: openPanelSaveAreaButton + + UM.I18nCatalog { id: catalog; name: "cura"; } + + height: UM.Theme.getSize("save_button_save_to_button").height + tooltip: catalog.i18nc("@info:tooltip", "Opens the print jobs page with your default web browser.") + text: catalog.i18nc("@action:button", "View print jobs") + + style: UM.Theme.styles.sidebar_action_button +} diff --git a/plugins/UM3NetworkPrinting/PrintCoreConfiguration.qml b/plugins/UM3NetworkPrinting/PrintCoreConfiguration.qml new file mode 100644 index 0000000000..624c02f735 --- /dev/null +++ b/plugins/UM3NetworkPrinting/PrintCoreConfiguration.qml @@ -0,0 +1,33 @@ +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 + +import UM 1.2 as UM + + +Item +{ + id: extruderInfo + property var printCoreConfiguration + + width: parent.width / 2 + height: childrenRect.height + Label + { + id: materialLabel + text: printCoreConfiguration.material.material + " (" + printCoreConfiguration.material.color + ")" + elide: Text.ElideRight + width: parent.width + font: UM.Theme.getFont("very_small") + } + Label + { + id: printCoreLabel + text: printCoreConfiguration.print_core_id + anchors.top: materialLabel.bottom + elide: Text.ElideRight + width: parent.width + font: UM.Theme.getFont("very_small") + opacity: 0.5 + } +} diff --git a/plugins/UM3NetworkPrinting/PrintWindow.qml b/plugins/UM3NetworkPrinting/PrintWindow.qml new file mode 100644 index 0000000000..28e8a72160 --- /dev/null +++ b/plugins/UM3NetworkPrinting/PrintWindow.qml @@ -0,0 +1,103 @@ +// Copyright (c) 2015 Ultimaker B.V. +// Cura is released under the terms of the AGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Window 2.2 +import QtQuick.Controls 1.2 + +import UM 1.1 as UM + +UM.Dialog +{ + id: base; + + minimumWidth: 500 + minimumHeight: 140 + maximumWidth: minimumWidth + maximumHeight: minimumHeight + width: minimumWidth + height: minimumHeight + + visible: true + modality: Qt.ApplicationModal + + title: catalog.i18nc("@title:window","Print over network") + + Column + { + id: printerSelection + anchors.fill: parent + anchors.top: parent.top + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.rightMargin: UM.Theme.getSize("default_margin").width + height: 50 + + Label + { + id: manualPrinterSelectionLabel + anchors + { + left: parent.left + topMargin: UM.Theme.getSize("default_margin").height + right: parent.right + } + text: "Printer selection" + wrapMode: Text.Wrap + height: 20 + } + + ComboBox + { + id: printerSelectionCombobox + model: OutputDevice.printers + textRole: "friendly_name" + + width: parent.width + height: 40 + Behavior on height { NumberAnimation { duration: 100 } } + + onActivated: + { + var printerData = OutputDevice.printers[index]; + OutputDevice.selectPrinter(printerData.unique_name, printerData.friendly_name); + } + } + + SystemPalette + { + id: palette + } + + UM.I18nCatalog { id: catalog; name: "cura"; } + } + + leftButtons: [ + Button + { + text: catalog.i18nc("@action:button","Cancel") + enabled: true + onClicked: { + base.visible = false; + // reset to defaults + OutputDevice.selectAutomaticPrinter() + printerSelectionCombobox.currentIndex = 0 + } + } + ] + + rightButtons: [ + Button + { + text: catalog.i18nc("@action:button","Print") + enabled: true + onClicked: { + base.visible = false; + OutputDevice.sendPrintJob(); + // reset to defaults + OutputDevice.selectAutomaticPrinter() + printerSelectionCombobox.currentIndex = 0 + } + } + ] +} diff --git a/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml new file mode 100644 index 0000000000..bab7db41d4 --- /dev/null +++ b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml @@ -0,0 +1,345 @@ +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 + +import UM 1.3 as UM + + +Rectangle +{ + function strPadLeft(string, pad, length) + { + return (new Array(length + 1).join(pad) + string).slice(-length); + } + + function getPrettyTime(time) + { + var hours = Math.floor(time / 3600) + time -= hours * 3600 + var minutes = Math.floor(time / 60); + time -= minutes * 60 + var seconds = Math.floor(time); + + var finalTime = strPadLeft(hours, "0", 2) + ':' + strPadLeft(minutes,'0',2)+ ':' + strPadLeft(seconds,'0',2); + return finalTime; + } + + function formatPrintJobPercent(printJob) + { + if (printJob == null) + { + return ""; + } + if (printJob.time_total === 0) + { + return ""; + } + return Math.min(100, Math.round(printJob.time_elapsed / printJob.time_total * 100)) + "%"; + } + + + id: printerDelegate + property var printer + + border.width: UM.Theme.getSize("default_lining").width + border.color: mouse.containsMouse ? UM.Theme.getColor("setting_control_border_highlight") : lineColor + z: mouse.containsMouse ? 1 : 0 // Push this item up a bit on mouse over to ensure that the highlighted bottom border is visible. + + property var printJob: + { + if (printer.reserved_by != null) + { + // Look in another list. + return OutputDevice.printJobsByUUID[printer.reserved_by] + } + return OutputDevice.printJobsByPrinterUUID[printer.uuid] + } + + MouseArea + { + id: mouse + anchors.fill:parent + onClicked: OutputDevice.selectPrinter(printer.unique_name, printer.friendly_name) + hoverEnabled: true; + + // Only clickable if no printer is selected + enabled: OutputDevice.selectedPrinterName == "" + } + + Row + { + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + anchors.bottom: parent.bottom + anchors.margins: UM.Theme.getSize("default_margin").width + + Rectangle + { + width: parent.width / 3 + height: parent.height + + Label // Print job name + { + id: jobNameLabel + anchors.top: parent.top + anchors.left: parent.left + text: printJob != null ? printJob.name : "" + font: UM.Theme.getFont("default_bold") + } + + Label + { + id: jobOwnerLabel + anchors.top: jobNameLabel.bottom + text: printJob != null ? printJob.owner : "" + opacity: 0.50 + } + + Label + { + id: totalTimeLabel + anchors.bottom: parent.bottom + text: printJob != null ? getPrettyTime(printJob.time_total) : "" + opacity: 0.65 + font: UM.Theme.getFont("default") + } + } + + Rectangle + { + width: parent.width / 3 * 2 + height: parent.height + + Label // Friendly machine name + { + id: printerNameLabel + anchors.top: parent.top + anchors.left: parent.left + width: parent.width / 2 - UM.Theme.getSize("default_margin").width - showCameraIcon.width + text: printer.friendly_name + font: UM.Theme.getFont("default_bold") + elide: Text.ElideRight + } + + Label // Machine variant + { + id: printerTypeLabel + anchors.top: printerNameLabel.bottom + width: parent.width / 2 - UM.Theme.getSize("default_margin").width + text: printer.machine_variant + anchors.left: parent.left + elide: Text.ElideRight + font: UM.Theme.getFont("very_small") + opacity: 0.50 + } + + Rectangle // Camera icon + { + id: showCameraIcon + width: 40 + height: width + radius: width + anchors.right: printProgressArea.left + anchors.rightMargin: UM.Theme.getSize("default_margin").width + color: emphasisColor + UM.RecolorImage + { + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + source: "camera-icon.svg" + width: sourceSize.width + height: sourceSize.height * width / sourceSize.width + color: "white" + } + } + + Row // PrintCode config + { + id: extruderInfo + anchors.bottom: parent.bottom + + width: parent.width / 2 - UM.Theme.getSize("default_margin").width + height: childrenRect.height + spacing: 10 + + PrintCoreConfiguration + { + id: leftExtruderInfo + width: (parent.width-1) / 2 + printCoreConfiguration: printer.configuration[0] + } + + Rectangle + { + id: extruderSeperator + width: 1 + height: parent.height + color: lineColor + } + + PrintCoreConfiguration + { + id: rightExtruderInfo + width: (parent.width-1) / 2 + printCoreConfiguration: printer.configuration[1] + } + } + + Rectangle // Print progress + { + id: printProgressArea + anchors.right: parent.right + anchors.top: parent.top + height: showExtended ? parent.height: printProgressTitleBar.height + width: parent.width / 2 - UM.Theme.getSize("default_margin").width + border.width: UM.Theme.getSize("default_lining").width + border.color: lineColor + radius: cornerRadius + property var showExtended: { + if(printJob!= null) + { + var extendStates = ["sent_to_printer", "wait_for_configuration", "printing", "pre_print", "post_print", "wait_cleanup"]; + return extendStates.indexOf(printJob.status) !== -1; + } + return false + } + visible: + { + return true + } + + Item // Status and Percent + { + id: printProgressTitleBar + width: parent.width + //border.width: UM.Theme.getSize("default_lining").width + //border.color: lineColor + height: 40 + anchors.left: parent.left + + Label + { + id: statusText + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.verticalCenter: parent.verticalCenter + anchors.right: progressText.left + anchors.rightMargin: UM.Theme.getSize("default_margin").width + text: { + if(printJob != null) + { + if(printJob.status == "printing" || printJob.status == "post_print") + { + return catalog.i18nc("@label:status", "Printing") + } + else if(printJob.status == "wait_for_configuration") + { + return catalog.i18nc("@label:status", "Reserved") + } + else if(printJob.status == "wait_cleanup") + { + return catalog.i18nc("@label:status", "Finished") + } + else if (printJob.status == "pre_print" || printJob.status == "sent_to_printer") + { + return catalog.i18nc("@label:status", "Preparing") + } + else + { + return "" + } + } + return catalog.i18nc("@label:status", "Available") + } + + elide: Text.ElideRight + + font: UM.Theme.getFont("small") + } + Label + { + id: progressText + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_margin").width + + anchors.top: statusText.top + + text: formatPrintJobPercent(printJob) + visible: printJob != null && (["printing", "post_print", "pre_print", "sent_to_printer"].indexOf(printJob.status) !== -1) + opacity: 0.65 + font: UM.Theme.getFont("very_small") + } + Rectangle + { + //TODO: This will become a progress bar in the future + width: parent.width + height: UM.Theme.getSize("default_lining").height + anchors.bottom: parent.bottom + anchors.left: parent.left + visible: printProgressArea.showExtended + color: lineColor + } + } + + Column + { + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + + anchors.top: printProgressTitleBar.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + + width: parent.width - 2 * UM.Theme.getSize("default_margin").width + + visible: printJob != null && (["wait_cleanup", "printing", "pre_print", "wait_for_configuration"].indexOf(printJob.status) !== -1) + + Label // Status detail + { + text: + { + if(printJob != null) + { + if(printJob.status == "printing" ) + { + return catalog.i18nc("@label", "Finishes at: ") + OutputDevice.getTimeCompleted(printJob.time_total - printJob.time_elapsed) + } + if(printJob.status == "wait_cleanup") + { + return catalog.i18nc("@label", "Clear build plate") + } + if(printJob.status == "sent_to_printer" || printJob.status == "pre_print") + { + return catalog.i18nc("@label", "Preparing to print") + } + if(printJob.status == "wait_for_configuration") + { + return catalog.i18nc("@label", "Not accepting print jobs") + } + } + return "" + } + elide: Text.ElideRight + font: UM.Theme.getFont("default") + } + + Label // Status 2nd row + { + text: { + if(printJob != null) { + if(printJob.status == "printing" ) + { + return OutputDevice.getDateCompleted(printJob.time_total - printJob.time_elapsed) + } + } + return ""; + } + + elide: Text.ElideRight + font: UM.Theme.getFont("default") + } + } + } + } + } +} diff --git a/plugins/UM3NetworkPrinting/PrinterTile.qml b/plugins/UM3NetworkPrinting/PrinterTile.qml new file mode 100644 index 0000000000..f240f3034f --- /dev/null +++ b/plugins/UM3NetworkPrinting/PrinterTile.qml @@ -0,0 +1,54 @@ +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 + +import UM 1.3 as UM +import Cura 1.0 as Cura + +Rectangle +{ + id: base + width: 250 + height: 250 + signal clicked() + MouseArea + { + anchors.fill:parent + onClicked: base.clicked() + } + Rectangle + { + // TODO: Actually add UM icon / picture + width: 100 + height: 100 + border.width: UM.Theme.getSize("default_lining").width + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.top + anchors.topMargin: UM.Theme.getSize("default_margin").height + } + Label + { + id: nameLabel + anchors.bottom: ipLabel.top + anchors.bottomMargin: UM.Theme.getSize("default_margin").height + anchors.left: parent.left + anchors.right: parent.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.rightMargin: UM.Theme.getSize("default_margin").width + text: modelData.friendly_name.toString() + font: UM.Theme.getFont("large") + elide: Text.ElideMiddle; + height: UM.Theme.getSize("section").height; + } + Label + { + id: ipLabel + text: modelData.ip_address.toString() + anchors.bottom: parent.bottom + anchors.bottomMargin: UM.Theme.getSize("default_margin").height + font: UM.Theme.getFont("default") + height:10 + anchors.horizontalCenter: parent.horizontalCenter + } +} + diff --git a/plugins/UM3NetworkPrinting/PrinterVideoStream.qml b/plugins/UM3NetworkPrinting/PrinterVideoStream.qml new file mode 100644 index 0000000000..4f138ee8d1 --- /dev/null +++ b/plugins/UM3NetworkPrinting/PrinterVideoStream.qml @@ -0,0 +1,91 @@ +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 + +import UM 1.3 as UM + + +Item +{ + Rectangle + { + anchors.fill:parent + color: UM.Theme.getColor("viewport_overlay") + opacity: 0.5 + } + + MouseArea + { + anchors.fill: parent + onClicked: OutputDevice.selectAutomaticPrinter() + z: 0 + } + + Button + { + id: backButton + anchors.bottom: cameraImage.top + anchors.bottomMargin: UM.Theme.getSize("default_margin").width + anchors.right: cameraImage.right + + // TODO: Harcoded sizes + width: 20 + height: 20 + + onClicked: OutputDevice.selectAutomaticPrinter() + + style: ButtonStyle + { + label: Item + { + UM.RecolorImage + { + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + width: control.width + height: control.height + sourceSize.width: width + sourceSize.height: width + source: UM.Theme.getIcon("cross1") + } + } + background: Item {} + } + } + + Image + { + id: cameraImage + width: Math.min(sourceSize.width === 0 ? 800 : sourceSize.width, maximumWidth) + height: (sourceSize.height === 0 ? 600 : sourceSize.height) * width / sourceSize.width + anchors.horizontalCenter: parent.horizontalCenter + anchors.verticalCenter: parent.verticalCenter + z: 1 + onVisibleChanged: + { + if(visible) + { + OutputDevice.startCamera() + } else + { + OutputDevice.stopCamera() + } + } + source: + { + if(OutputDevice.cameraImage) + { + return OutputDevice.cameraImage; + } + return ""; + } + } + + MouseArea + { + anchors.fill: cameraImage + onClicked: { /* no-op */ } + z: 1 + } + +} diff --git a/plugins/UM3NetworkPrinting/camera-icon.svg b/plugins/UM3NetworkPrinting/camera-icon.svg new file mode 100644 index 0000000000..2aafc4b6f4 --- /dev/null +++ b/plugins/UM3NetworkPrinting/camera-icon.svg @@ -0,0 +1,3 @@ + + + From a2e0f4d64fcab35e0eeada795a20b725480013eb Mon Sep 17 00:00:00 2001 From: alekseisasin Date: Wed, 27 Sep 2017 11:27:29 +0200 Subject: [PATCH 278/589] For discard changed window retrieve data from setting "value" property instead of "resolve" CURA-4358 --- cura/Settings/GlobalStack.py | 5 +++-- cura/Settings/UserChangesModel.py | 8 +++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/cura/Settings/GlobalStack.py b/cura/Settings/GlobalStack.py index bee82e2272..cfab45bfed 100755 --- a/cura/Settings/GlobalStack.py +++ b/cura/Settings/GlobalStack.py @@ -89,10 +89,11 @@ class GlobalStack(CuraContainerStack): # # \param key The setting key to get the property of. # \param property_name The property to get the value of. + # \param skip_container The container ID to skip. # # \return The value of the property for the specified setting, or None if not found. @override(ContainerStack) - def getProperty(self, key: str, property_name: str, context: Optional[PropertyEvaluationContext] = None) -> Any: + def getProperty(self, key: str, property_name: str, context: Optional[PropertyEvaluationContext] = None, skip_container: str = None) -> Any: if not self.definition.findDefinitions(key = key): return None @@ -121,7 +122,7 @@ class GlobalStack(CuraContainerStack): else: Logger.log("e", "Setting {setting} has limit_to_extruder but is not settable per extruder!", setting = key) - result = super().getProperty(key, property_name, context) + result = super().getProperty(key, property_name, context, skip_container) context.popContainer() return result diff --git a/cura/Settings/UserChangesModel.py b/cura/Settings/UserChangesModel.py index 8b61186650..fbbd721f9f 100644 --- a/cura/Settings/UserChangesModel.py +++ b/cura/Settings/UserChangesModel.py @@ -90,9 +90,11 @@ class UserChangesModel(ListModel): for container in containers: if stack == global_stack: - resolve = global_stack.getProperty(setting_key, "resolve") - if resolve is not None: - original_value = resolve + + #Find default value without checking user changed settings. + default_value = global_stack.getProperty(setting_key, "value", skip_container = user_changes.getId()) + if default_value is not None: + original_value = default_value break original_value = container.getProperty(setting_key, "value") From 72bf0731019c8625a06a4d067b1adad3f9430c0b Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 27 Sep 2017 11:43:14 +0200 Subject: [PATCH 279/589] Fix LayerView layer box width --- plugins/LayerView/LayerView.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index da2b38f6d4..ecee766b2e 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -353,7 +353,7 @@ Item property real minimumRangeHandleSize: UM.Theme.getSize("slider_handle").width / 2 property real trackThickness: UM.Theme.getSize("slider_groove").width property real trackRadius: trackThickness / 2 - property real trackBorderWidth: UM.Theme.getSize("default_lining").width / 2 + property real trackBorderWidth: UM.Theme.getSize("default_lining").width property color upperHandleColor: UM.Theme.getColor("slider_handle") property color lowerHandleColor: UM.Theme.getColor("slider_handle") property color rangeHandleColor: UM.Theme.getColor("slider_groove_fill") @@ -602,7 +602,7 @@ Item anchors.leftMargin: UM.Theme.getSize("default_margin").width / 2; anchors.verticalCenter: parent.verticalCenter; - width: Math.max(UM.Theme.getSize("line").width * maxValue.length + 2 * screenScaleFactor, 20); + width: Math.max(UM.Theme.getSize("line").width * maxValue.length + 2 * screenScaleFactor, 20 * screenScaleFactor); style: TextFieldStyle { textColor: UM.Theme.getColor("setting_control_text"); From 3d08ec6bac97832ac6d991b6b955426a99f023e6 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 27 Sep 2017 11:43:57 +0200 Subject: [PATCH 280/589] Fix Simple mode sliders for Hi DPI --- resources/qml/SidebarSimple.qml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 1d85cffead..5f18ebceae 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -208,7 +208,7 @@ Item { id: groovechildrect width: base.width * 0.55 - height: 2 + height: 2 * screenScaleFactor color: UM.Theme.getColor("quality_slider_unavailable") anchors.verticalCenter: qualitySlider.verticalCenter x: 0 @@ -224,8 +224,8 @@ Item { anchors.verticalCenter: parent.verticalCenter color: Cura.ProfilesModel.getItem(index).available ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - width: 1 - height: 6 + width: 1 * screenScaleFactor + height: 6 * screenScaleFactor y: 0 x: qualityModel.qualitySliderStepWidth * index } @@ -255,18 +255,18 @@ Item { //Draw Available line groove: Rectangle { - implicitHeight: 2 + implicitHeight: 2 * screenScaleFactor color: UM.Theme.getColor("quality_slider_available") - radius: 1 + radius: 1 * screenScaleFactor } handle: Item { Rectangle { id: qualityhandleButton anchors.centerIn: parent color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - implicitWidth: 10 - implicitHeight: 10 - radius: 10 + implicitWidth: 10 * screenScaleFactor + implicitHeight: 10 * screenScaleFactor + radius: 10 * screenScaleFactor } } } @@ -367,7 +367,7 @@ Item //anchors.top: parent.top anchors.left: infillSlider.left - anchors.leftMargin: (infillSlider.value / infillSlider.stepSize) * (infillSlider.width / (infillSlider.maximumValue / infillSlider.stepSize)) - 10 + anchors.leftMargin: (infillSlider.value / infillSlider.stepSize) * (infillSlider.width / (infillSlider.maximumValue / infillSlider.stepSize)) - 10 * screenScaleFactor anchors.right: parent.right text: infillSlider.value + "%" @@ -421,7 +421,7 @@ Item color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") implicitWidth: 10 * screenScaleFactor implicitHeight: 10 * screenScaleFactor - radius: 10 + radius: 10 * screenScaleFactor } } From 0308d3d9d0e76407425c86cebb7c20dfdd406a6c Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 27 Sep 2017 11:46:42 +0200 Subject: [PATCH 281/589] Fix margin between tools and extruders --- resources/qml/Toolbar.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/Toolbar.qml b/resources/qml/Toolbar.qml index 12a3c8ee9b..2ab24f2023 100644 --- a/resources/qml/Toolbar.qml +++ b/resources/qml/Toolbar.qml @@ -67,7 +67,7 @@ Item } } - Item { height: UM.Theme.getSize("default_margin").height; width: UM.Theme.getSize("default_lining"); visible: extruders.count > 0 } + Item { height: UM.Theme.getSize("default_margin").height; width: UM.Theme.getSize("default_lining").width; visible: extruders.count > 0 } Repeater { From aed5e631dce49fdad71afc80775dc8533a28d6d4 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Wed, 27 Sep 2017 13:13:55 +0200 Subject: [PATCH 282/589] CURA-4352 fix passing int values as float when changing slider value --- resources/qml/SidebarSimple.qml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index d93dd67550..b94c1ced4e 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -354,8 +354,6 @@ Item } } - - Item { id: infillCellRight @@ -405,7 +403,7 @@ Item value: parseInt(infillDensity.properties.value) onValueChanged: { - infillDensity.setPropertyValue("value", infillSlider.value) + infillDensity.setPropertyValue("value", String(parseInt(infillSlider.value))) } style: SliderStyle @@ -829,7 +827,6 @@ Item UM.SettingPropertyProvider { id: infillExtruderNumber - containerStackId: Cura.MachineManager.activeStackId key: "infill_extruder_nr" watchedProperties: [ "value" ] From f8e8dcacdf931b12bdddd1093edb2e1d1245f60c Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Wed, 27 Sep 2017 13:55:57 +0200 Subject: [PATCH 283/589] CURA-4381 use modulus to set infill slider step size and tick show --- resources/qml/SidebarSimple.qml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index b94c1ced4e..6d67b927bd 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -393,7 +393,7 @@ Item minimumValue: 0 maximumValue: 100 - stepSize: 10 + stepSize: (parseInt(infillDensity.properties.value) % 10 == 0) ? 10 : 1 tickmarksEnabled: true // disable slider when gradual support is enabled @@ -403,12 +403,12 @@ Item value: parseInt(infillDensity.properties.value) onValueChanged: { + // Explicitly cast to string to make sure the value passed to Python is an integer. infillDensity.setPropertyValue("value", String(parseInt(infillSlider.value))) } style: SliderStyle { - groove: Rectangle { id: groove implicitWidth: 200 @@ -431,6 +431,18 @@ Item tickmarks: Repeater { id: repeater model: control.maximumValue / control.stepSize + 1 + + // check if a tick should be shown based on it's index and wether the infill density is a multiple of 10 (slider step size) + function shouldShowTick (index) { + if ((parseInt(infillDensity.properties.value) % 10 == 0)) { + return true + } else if (index % 10 == 0) { + return true + } else { + return false + } + } + Rectangle { anchors.verticalCenter: parent.verticalCenter color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") @@ -438,6 +450,7 @@ Item height: 6 y: 0 x: styleData.handleWidth / 2 + index * ((repeater.width - styleData.handleWidth) / (repeater.count-1)) + visible: shouldShowTick(index) } } } From f5310ad2ff7d3cf1bf05c4ad49c864ed3b2d5b35 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Wed, 27 Sep 2017 14:16:56 +0200 Subject: [PATCH 284/589] Revert "For discard changed window retrieve data from setting "value" property instead of "resolve"" This reverts commit a2e0f4d64fcab35e0eeada795a20b725480013eb. --- cura/Settings/GlobalStack.py | 5 ++--- cura/Settings/UserChangesModel.py | 8 +++----- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/cura/Settings/GlobalStack.py b/cura/Settings/GlobalStack.py index cfab45bfed..bee82e2272 100755 --- a/cura/Settings/GlobalStack.py +++ b/cura/Settings/GlobalStack.py @@ -89,11 +89,10 @@ class GlobalStack(CuraContainerStack): # # \param key The setting key to get the property of. # \param property_name The property to get the value of. - # \param skip_container The container ID to skip. # # \return The value of the property for the specified setting, or None if not found. @override(ContainerStack) - def getProperty(self, key: str, property_name: str, context: Optional[PropertyEvaluationContext] = None, skip_container: str = None) -> Any: + def getProperty(self, key: str, property_name: str, context: Optional[PropertyEvaluationContext] = None) -> Any: if not self.definition.findDefinitions(key = key): return None @@ -122,7 +121,7 @@ class GlobalStack(CuraContainerStack): else: Logger.log("e", "Setting {setting} has limit_to_extruder but is not settable per extruder!", setting = key) - result = super().getProperty(key, property_name, context, skip_container) + result = super().getProperty(key, property_name, context) context.popContainer() return result diff --git a/cura/Settings/UserChangesModel.py b/cura/Settings/UserChangesModel.py index fbbd721f9f..8b61186650 100644 --- a/cura/Settings/UserChangesModel.py +++ b/cura/Settings/UserChangesModel.py @@ -90,11 +90,9 @@ class UserChangesModel(ListModel): for container in containers: if stack == global_stack: - - #Find default value without checking user changed settings. - default_value = global_stack.getProperty(setting_key, "value", skip_container = user_changes.getId()) - if default_value is not None: - original_value = default_value + resolve = global_stack.getProperty(setting_key, "resolve") + if resolve is not None: + original_value = resolve break original_value = container.getProperty(setting_key, "value") From d8c1546be379bc6f5810065c1e3ce27a58fcf85f Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 27 Sep 2017 14:20:20 +0200 Subject: [PATCH 285/589] Revert making the camera image black while it doesn't react This was giving segfaults sometimes on my computer. I suspect it's because the camera image could have been written to by both this Python code and by the camera itself, giving it a sort of data race or maybe that the image was discarded by the camera while it's being written to by Python. In any case, this should make it more stable. Contributes to issue CURA-4376. --- plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py index 6c81ff6d82..44ac965eae 100755 --- a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py @@ -340,10 +340,6 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): pass # It can happen that the wrapped c++ object is already deleted. self._image_reply = None self._image_request = None - if self._use_stream: - # Reset image (To prevent old images from being displayed) - self._camera_image.fill(QColor(0, 0, 0)) - self.newImage.emit() def _startCamera(self): if self._use_stream: From aa93c67a94bf74ff82256f57c8c09b15f236514e Mon Sep 17 00:00:00 2001 From: Mark Date: Wed, 27 Sep 2017 14:27:04 +0200 Subject: [PATCH 286/589] Re-add the margin between infill and support checkbox CURA-4380 --- resources/qml/SidebarSimple.qml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index c2664c37a3..3a104e81a1 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -598,7 +598,7 @@ Item visible: enableSupportCheckBox.visible anchors.top: infillCellRight.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 1.5 anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width anchors.verticalCenter: enableSupportCheckBox.verticalCenter @@ -613,8 +613,7 @@ Item id: enableSupportCheckBox property alias _hovered: enableSupportMouseArea.containsMouse - anchors.top: infillCellRight.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + anchors.top: enableSupportLabel.top anchors.left: infillCellRight.left style: UM.Theme.styles.checkbox; From 500989e36ddcf8912a462014804af53b24bb4033 Mon Sep 17 00:00:00 2001 From: Mark Date: Wed, 27 Sep 2017 14:27:04 +0200 Subject: [PATCH 287/589] Re-add the margin between infill and support checkbox CURA-4380 --- resources/qml/SidebarSimple.qml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index c2664c37a3..3a104e81a1 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -598,7 +598,7 @@ Item visible: enableSupportCheckBox.visible anchors.top: infillCellRight.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height * 1.5 anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width anchors.verticalCenter: enableSupportCheckBox.verticalCenter @@ -613,8 +613,7 @@ Item id: enableSupportCheckBox property alias _hovered: enableSupportMouseArea.containsMouse - anchors.top: infillCellRight.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + anchors.top: enableSupportLabel.top anchors.left: infillCellRight.left style: UM.Theme.styles.checkbox; From a337fd4e9c90164456cbd0e366af4f8d055a0a8e Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Wed, 27 Sep 2017 14:32:05 +0200 Subject: [PATCH 288/589] CURA-4380 quality slider text disabled color when slider cannot be used --- resources/qml/SidebarSimple.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index c2664c37a3..c690494d46 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -309,7 +309,7 @@ Item text: catalog.i18nc("@label", "Slower") font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") + color: (qualityModel.availableTotalTicks > 0) ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") horizontalAlignment: Text.AlignLeft } @@ -320,7 +320,7 @@ Item text: catalog.i18nc("@label", "Faster") font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") + color: (qualityModel.availableTotalTicks > 0) ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") horizontalAlignment: Text.AlignRight } } From a8ce7185cc027b7ab9b5048c74554273717d1f96 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Wed, 27 Sep 2017 14:35:13 +0200 Subject: [PATCH 289/589] CURA-4380 gradual infill checkbox closer to slider to indicate category --- resources/qml/SidebarSimple.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index c690494d46..221efa5904 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -505,7 +505,7 @@ Item property alias _hovered: enableGradualInfillMouseArea.containsMouse anchors.top: infillSlider.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height + anchors.topMargin: UM.Theme.getSize("sidebar_margin").height / 2 // closer to slider since it belongs to the same category anchors.left: infillCellRight.left style: UM.Theme.styles.checkbox From c1cfb76f8a0ff65ad1bb8cac1444aeb40f6151d4 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Wed, 27 Sep 2017 14:51:20 +0200 Subject: [PATCH 290/589] CURA-4380 code improvements for build plate adhesion label --- resources/qml/SidebarSimple.qml | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 221efa5904..7a4cfbf68f 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -726,15 +726,19 @@ Item { id: adhesionHelperLabel visible: adhesionCheckBox.visible - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width - anchors.right: infillCellLeft.right - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width - anchors.verticalCenter: adhesionCheckBox.verticalCenter - text: catalog.i18nc("@label", "Build Plate Adhesion"); - font: UM.Theme.getFont("default"); - color: UM.Theme.getColor("text"); + + text: catalog.i18nc("@label", "Build Plate Adhesion") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") elide: Text.ElideRight + + anchors { + left: parent.left + leftMargin: UM.Theme.getSize("sidebar_margin").width + right: infillCellLeft.right + rightMargin: UM.Theme.getSize("sidebar_margin").width + verticalCenter: adhesionCheckBox.verticalCenter + } } CheckBox From 3be8f45636b973370e44191badf4be52adb07268 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 27 Sep 2017 15:18:53 +0200 Subject: [PATCH 291/589] Move the quality indicator to the center when there is only one quality available Fixes #2485 CURA-4383 --- resources/qml/SidebarSimple.qml | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 3a104e81a1..e222de8aa5 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -186,7 +186,10 @@ Item x: { // Make sure the text aligns correctly with each tick - if (index == 0) { + if (qualityModel.totalTicks == 0) { + // If there is only one tick, align it centrally + return ((base.width * 0.55) - width) / 2 + } else if (index == 0) { return (base.width * 0.55 / qualityModel.totalTicks) * index } else if (index == qualityModel.totalTicks) { return (base.width * 0.55 / qualityModel.totalTicks) * index - width @@ -223,7 +226,7 @@ Item Repeater { id: qualityRepeater - model: qualityModel + model: qualityModel.availableTotalTicks > 0 ? qualityModel : 0 Rectangle { @@ -236,13 +239,22 @@ Item } } + Rectangle { + id: disabledHandleButton + visible: !qualitySlider.visible + anchors.centerIn: parent + color: UM.Theme.getColor("quality_slider_unavailable") + implicitWidth: 10 * screenScaleFactor + implicitHeight: implicitWidth + radius: width / 2 + } Slider { id: qualitySlider height: UM.Theme.getSize("sidebar_margin").height anchors.bottom: speedSlider.bottom - enabled: qualityModel.availableTotalTicks > 0 + visible: qualityModel.availableTotalTicks > 0 updateValueWhileDragging : false minimumValue: qualityModel.qualitySliderAvailableMin >= 0 ? qualityModel.qualitySliderAvailableMin : 0 @@ -262,16 +274,16 @@ Item groove: Rectangle { implicitHeight: 2 * screenScaleFactor color: UM.Theme.getColor("quality_slider_available") - radius: 1 * screenScaleFactor + radius: height / 2 } handle: Item { Rectangle { id: qualityhandleButton anchors.centerIn: parent - color: control.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") + color: UM.Theme.getColor("quality_slider_available") implicitWidth: 10 * screenScaleFactor - implicitHeight: 10 * screenScaleFactor - radius: 10 * screenScaleFactor + implicitHeight: implicitWidth + radius: implicitWidth / 2 } } } From 4b3e83f876c29ec286f974e6b0fdf1c5dccf4ca9 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Wed, 27 Sep 2017 15:55:34 +0200 Subject: [PATCH 292/589] Not allowing to modify the number of extruders in multiextruder printers, except Custom FDM printers - CURA-4359 --- plugins/MachineSettingsAction/MachineSettingsAction.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.py b/plugins/MachineSettingsAction/MachineSettingsAction.py index 832e247d19..3672066678 100755 --- a/plugins/MachineSettingsAction/MachineSettingsAction.py +++ b/plugins/MachineSettingsAction/MachineSettingsAction.py @@ -112,7 +112,13 @@ class MachineSettingsAction(MachineAction): if not self._global_container_stack: return 0 - return len(self._global_container_stack.getMetaDataEntry("machine_extruder_trains")) + # If there is a printer that originally is multi-extruder, it's not allowed to change the number of extruders + # It's just allowed in case of Custom FDM printers + definition_container = self._global_container_stack.getBottom() + if definition_container.getId() == "custom": + return len(self._global_container_stack.getMetaDataEntry("machine_extruder_trains")) + return 0 + @pyqtSlot(int) def setMachineExtruderCount(self, extruder_count): From 3ddb45160d47d5c458619c6f5113f0e40b13fa05 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Wed, 27 Sep 2017 16:59:03 +0200 Subject: [PATCH 293/589] Update infill slider icon border color to not look like a checkbox, fixes #2487 --- resources/qml/SidebarSimple.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 8baba3f282..0509697530 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -485,7 +485,7 @@ Item visible: infillIconList.activeIndex == index border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("quality_slider_available") + border.color: UM.Theme.getColor("quality_slider_unavailable") UM.RecolorImage { anchors.fill: parent From 87c7373cb0edd54042223299e6390d7dec233d4b Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 27 Sep 2017 17:14:41 +0200 Subject: [PATCH 294/589] Fix visibility when there are ticks but no available ticks --- resources/qml/SidebarSimple.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index e222de8aa5..93cd7005db 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -254,7 +254,8 @@ Item id: qualitySlider height: UM.Theme.getSize("sidebar_margin").height anchors.bottom: speedSlider.bottom - visible: qualityModel.availableTotalTicks > 0 + enabled: qualityModel.availableTotalTicks > 0 + visible: qualityModel.totalTicks > 0 updateValueWhileDragging : false minimumValue: qualityModel.qualitySliderAvailableMin >= 0 ? qualityModel.qualitySliderAvailableMin : 0 From 47ad68bda73c7002b51c14a0f1e5b3c741319c7a Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 27 Sep 2017 17:20:55 +0200 Subject: [PATCH 295/589] Show ticks when they are not available --- resources/qml/SidebarSimple.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 93cd7005db..72041a7daf 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -226,7 +226,7 @@ Item Repeater { id: qualityRepeater - model: qualityModel.availableTotalTicks > 0 ? qualityModel : 0 + model: qualityModel.totalTicks > 0 ? qualityModel : 0 Rectangle { From f8722a2d4b9dfe3330091ac381a1e131fd2c0c16 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Wed, 27 Sep 2017 17:21:43 +0200 Subject: [PATCH 296/589] Fixed code style in the function - CURA-4352 --- resources/qml/SidebarSimple.qml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index ef2f7c484c..ef1512e6af 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -434,13 +434,10 @@ Item // check if a tick should be shown based on it's index and wether the infill density is a multiple of 10 (slider step size) function shouldShowTick (index) { - if ((parseInt(infillDensity.properties.value) % 10 == 0)) { + if ((parseInt(infillDensity.properties.value) % 10 == 0) || (index % 10 == 0)) { return true - } else if (index % 10 == 0) { - return true - } else { - return false } + return false } Rectangle { From 609187a4ce8a354d3c1f96e9745c53aeba9168e0 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 27 Sep 2017 17:26:29 +0200 Subject: [PATCH 297/589] Update translations from Bothof These are the new translations we got from Bothof for German, Spanish, Finnish, French, Italian, Dutch, Turkish and Simplified Chinese. Contributes to issue CURA-4341. --- resources/i18n/de_DE/cura.po | 270 +++++++++---------- resources/i18n/de_DE/fdmprinter.def.json.po | 116 ++++----- resources/i18n/es_ES/cura.po | 272 +++++++++----------- resources/i18n/es_ES/fdmprinter.def.json.po | 118 ++++----- resources/i18n/fi_FI/cura.po | 270 +++++++++---------- resources/i18n/fi_FI/fdmprinter.def.json.po | 116 ++++----- resources/i18n/fr_FR/cura.po | 272 +++++++++----------- resources/i18n/fr_FR/fdmprinter.def.json.po | 118 ++++----- resources/i18n/it_IT/cura.po | 270 +++++++++---------- resources/i18n/it_IT/fdmprinter.def.json.po | 116 ++++----- resources/i18n/nl_NL/cura.po | 270 +++++++++---------- resources/i18n/nl_NL/fdmprinter.def.json.po | 110 ++++---- resources/i18n/tr_TR/cura.po | 270 +++++++++---------- resources/i18n/tr_TR/fdmprinter.def.json.po | 116 ++++----- resources/i18n/zh_CN/cura.po | 267 +++++++++---------- resources/i18n/zh_CN/fdmprinter.def.json.po | 116 ++++----- 16 files changed, 1418 insertions(+), 1669 deletions(-) diff --git a/resources/i18n/de_DE/cura.po b/resources/i18n/de_DE/cura.po index e9ca7712aa..72e04b2b61 100644 --- a/resources/i18n/de_DE/cura.po +++ b/resources/i18n/de_DE/cura.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-11 14:30+0200\n" +"PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: German\n" "Language: de_DE\n" @@ -24,7 +24,7 @@ msgstr "Geräteeinstellungen" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" msgid "X-Ray view" -msgstr "" +msgstr "Röntgen-Ansicht" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -39,17 +39,17 @@ msgstr "G-Code-Datei" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "Mit Doodle3D WLAN-Box drucken" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 msgctxt "@properties:tooltip" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "Mit Doodle3D WLAN-Box drucken" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 msgctxt "@info:status" msgid "Connecting to Doodle3D Connect" -msgstr "" +msgstr "Zu Doodle3D Connect verbinden" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 @@ -73,32 +73,32 @@ msgstr "Abbrechen" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 msgctxt "@info:status" msgid "Sending data to Doodle3D Connect" -msgstr "" +msgstr "Daten werden zu Doodle3D Connect gesendet" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 msgctxt "@info:status" msgid "Unable to send data to Doodle3D Connect. Is another job still active?" -msgstr "" +msgstr "Daten können nicht zu Doodle3D Connect gesendet werden. Ist noch ein weiterer Auftrag in Bearbeitung?" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 msgctxt "@info:status" msgid "Storing data on Doodle3D Connect" -msgstr "" +msgstr "Daten werden auf Doodle3D Connect gespeichert" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 msgctxt "@info:status" msgid "File sent to Doodle3D Connect" -msgstr "" +msgstr "Datei wurde zu Doodle3D Connect gesendet" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@action:button" msgid "Open Connect.." -msgstr "" +msgstr "Connect wird geöffnet ..." #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" -msgstr "" +msgstr "Doodle3D Connect Web-Schnittstelle öffnen" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -143,7 +143,7 @@ msgstr "Es kann kein neuer Auftrag gestartet werden, da der Drucker beschäftigt #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 msgctxt "@info:title" msgid "Print Details" -msgstr "" +msgstr "Druckdetails" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" @@ -153,7 +153,7 @@ msgstr "Der Drucker unterstützt keinen USB-Druck, da er die UltiGCode-Variante #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:title" msgid "USB Printing" -msgstr "" +msgstr "USB-Drucken" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" @@ -168,7 +168,7 @@ msgstr "Es kann kein neuer Auftrag gestartet werden, da der Drucker keinen Druck #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 msgctxt "@info:title" msgid "Warning" -msgstr "" +msgstr "Warnhinweis" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" @@ -184,7 +184,7 @@ msgstr "Die für den Drucker unter %s erforderliche Firmware wurde nicht gefunde #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 msgctxt "@info:title" msgid "Printer Firmware" -msgstr "" +msgstr "Drucker-Firmware" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -201,25 +201,25 @@ msgstr "Auf Wechseldatenträger speichern {0}" #, python-brace-format msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "" +msgstr "Wird auf Wechseldatenträger gespeichert {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 msgctxt "@info:title" msgid "Saving" -msgstr "" +msgstr "Wird gespeichert" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "" +msgstr "Konnte nicht als {0} gespeichert werden: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format msgctxt "@info:status Don't translate the tag {device}!" msgid "Could not find a file name when trying to write to {device}." -msgstr "" +msgstr "Bei dem Versuch, auf {device} zu schreiben, wurde ein Dateiname nicht gefunden." #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 @@ -236,7 +236,7 @@ msgstr "Konnte nicht auf dem Wechseldatenträger gespeichert werden {0}: {1}" #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 msgctxt "@info:title" msgid "Error" -msgstr "" +msgstr "Fehler" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 #, python-brace-format @@ -247,7 +247,7 @@ msgstr "Auf Wechseldatenträger {0} gespeichert als {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 msgctxt "@info:title" msgid "File Saved" -msgstr "" +msgstr "Datei wurde gespeichert" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 msgctxt "@action:button" @@ -269,7 +269,7 @@ msgstr "Ausgeworfen {0}. Sie können den Datenträger jetzt sicher entfernen." #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 msgctxt "@info:title" msgid "Safely Remove Hardware" -msgstr "" +msgstr "Hardware sicher entfernen" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format @@ -304,7 +304,7 @@ msgstr "Zugriff auf Drucker erforderlich. Bestätigen Sie den Zugriff auf den Dr #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 msgctxt "@info:title" msgid "Connection status" -msgstr "" +msgstr "Verbindungsstatus" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 @@ -319,7 +319,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 msgctxt "@info:title" msgid "Connection Status" -msgstr "" +msgstr "Verbindungsstatus" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 @@ -417,7 +417,7 @@ msgstr "Es kann kein neuer Druckauftrag gestartet werden, da der Drucker beschä #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 msgctxt "@info:title" msgid "Printer Status" -msgstr "" +msgstr "Druckerstatus" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 @@ -488,7 +488,7 @@ msgstr "Daten werden zum Drucker gesendet" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 msgctxt "@info:title" msgid "Sending Data" -msgstr "" +msgstr "Daten werden gesendet" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 @@ -547,73 +547,73 @@ msgstr "Anschluss über Netzwerk" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "Dieser Drucker ist nicht für das Hosten einer Gruppe verbundener Ultimaker 3-Drucker eingerichtet." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." -msgstr "" +msgstr "Dieser Drucker ist der Host für eine Gruppe von {count} verbundenen Ultimaker 3-Druckern." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." -msgstr "" +msgstr "{printer_name} hat den Druck von '{job_name}‘ beendet. Bitte holen Sie den Druck ab und bestätigen Sie das Räumen des Druckbetts." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." -msgstr "" +msgstr "{printer_name} ist für das Drucken von '{job_name}‘ reserviert. Bitte ändern Sie die Druckerkonfiguration passend für den Auftrag, um mit dem Drucken zu beginnen." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "" +msgstr "Das Senden neuer Aufträge ist (vorübergehend) blockiert; der vorherige Druckauftrag wird noch gesendet." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "Es kann kein neuer Druckauftrag gesendet werden: Dieser 3D-Drucker ist (noch) nicht für das Hosten einer Gruppe verbundener Ultimaker 3-Drucker eingerichtet." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" -msgstr "" +msgstr "{file_name} wird an Gruppe {cluster_name} gesendet" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." -msgstr "" +msgstr "{file_name} wurde an Gruppe {cluster_name} gesendet." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" -msgstr "" +msgstr "Druckaufträge anzeigen" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." -msgstr "" +msgstr "Öffnet die Schaltfläche für Druckaufträge in Ihrem Browser." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." -msgstr "" +msgstr "Es können keine Druckaufträge an die Gruppe {cluster_name} gesendet werden." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." -msgstr "" +msgstr "Um sicherzustellen, dass Ihr {machine_name} mit den neuesten Funktionen ausgestattet ist, wird empfohlen, die Firmware regelmäßig zu aktualisieren Dies kann auf dem {machine_name} (bei Anschluss an ein Netzwerk) oder über USB erfolgen." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" -msgstr "" +msgstr "Neue Firmware für %s verfügbar" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 @@ -624,7 +624,7 @@ msgstr "Download" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 msgctxt "@info" msgid "Could not access update information." -msgstr "" +msgstr "Zugriff auf Update-Informationen nicht möglich." #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" @@ -663,7 +663,7 @@ msgstr "Cura erfasst anonymisierte Slice-Informationen. Sie können dies in den #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" msgid "Collecting Data" -msgstr "" +msgstr "Daten werden erfasst" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" @@ -684,7 +684,7 @@ msgstr "G-Code-Datei" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" msgid "Layer view" -msgstr "" +msgstr "Schichtenansicht" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" @@ -694,7 +694,7 @@ msgstr "Cura zeigt die Schichten nicht akkurat an, wenn Wire Printing aktiviert #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 msgctxt "@info:title" msgid "Layer View" -msgstr "" +msgstr "Schichtenansicht" #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -724,7 +724,7 @@ msgstr "GIF-Bilddatei" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." -msgstr "" +msgstr "Slicing mit dem aktuellen Material nicht möglich, da es mit der gewählten Maschine oder Konfiguration nicht kompatibel ist." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 @@ -732,7 +732,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 msgctxt "@info:title" msgid "Unable to slice" -msgstr "" +msgstr "Slicing nicht möglich" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format @@ -759,7 +759,7 @@ msgstr "Schichten werden verarbeitet" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 msgctxt "@info:title" msgid "Information" -msgstr "" +msgstr "Informationen" #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" @@ -798,18 +798,18 @@ msgstr "Düse" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 msgctxt "@menuitem" msgid "Browse plugins" -msgstr "" +msgstr "Plugins durchsuchen" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" -msgstr "" +msgstr "Plugin-ID von {0} wurde nicht erhalten" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 msgctxt "@info:tile" msgid "Warning" -msgstr "" +msgstr "Warnhinweis" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" @@ -819,7 +819,7 @@ msgstr "Plugin-Browser" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" msgid "Solid view" -msgstr "" +msgstr "Solide Ansicht" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -835,7 +835,7 @@ msgstr "G-Code parsen" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 msgctxt "@info:title" msgid "G-code Details" -msgstr "" +msgstr "G-Code-Details" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" @@ -917,7 +917,7 @@ msgstr "Stützstruktur" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Skirt" -msgstr "" +msgstr "Skirt" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" @@ -958,7 +958,7 @@ msgstr "Neue Position für Objekte finden" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 msgctxt "@info:title" msgid "Finding Location" -msgstr "" +msgstr "Position finden" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 @@ -969,7 +969,7 @@ msgstr "Innerhalb der Druckabmessung für alle Objekte konnte keine Position gef #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 msgctxt "@info:title" msgid "Can't Find Location" -msgstr "" +msgstr "Kann Position nicht finden" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 @@ -982,7 +982,7 @@ msgstr "Datei bereits vorhanden" #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "" +msgstr "Die Datei {0} ist bereits vorhanden. Soll die Datei wirklich überschrieben werden?" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" @@ -1003,7 +1003,7 @@ msgstr "Das gewählte Material ist mit der gewählten Maschine oder Konfiguratio #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" -msgstr "" +msgstr "Material nicht kompatibel" #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." @@ -1024,24 +1024,24 @@ msgstr "Änderung des Materialdurchmessers rückgängig machen" #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "" +msgstr "Export des Profils nach {0} fehlgeschlagen: {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "" +msgstr "Export des Profils nach {0} fehlgeschlagen: Fehlermeldung von Writer-Plugin" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "" +msgstr "Profil wurde nach {0} exportiert" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 msgctxt "@info:title" msgid "Export Details" -msgstr "" +msgstr "Exportdetails" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 @@ -1050,7 +1050,7 @@ msgstr "" #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "" +msgstr "Import des Profils aus Datei {0} fehlgeschlagen: {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 @@ -1089,7 +1089,7 @@ msgstr "Die Höhe der Druckabmessung wurde aufgrund des Wertes der Einstellung #: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 msgctxt "@info:title" msgid "Build Volume" -msgstr "" +msgstr "Produktabmessungen" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" @@ -1100,7 +1100,7 @@ msgstr "Objekte vervielfältigen und platzieren" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:title" msgid "Placing Object" -msgstr "" +msgstr "Objekt-Platzierung" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" @@ -1113,10 +1113,7 @@ msgid "" "

A fatal exception has occurred that we could not recover from!

\n" "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" " " -msgstr "" -"

Ein schwerer Ausnahmezustand ist aufgetreten, den wir nicht beseitigen konnten!

\n" -"

Bitte senden Sie einen Fehlerbericht an folgende URL http://github.com/Ultimaker/Cura/issues

\n" -" " +msgstr "

Ein schwerer Ausnahmezustand ist aufgetreten, den wir nicht beseitigen konnten!

\n

Bitte senden Sie einen Fehlerbericht an folgende URL http://github.com/Ultimaker/Cura/issues

\n " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 msgctxt "@action:button" @@ -1418,10 +1415,7 @@ msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "" -"Um über das Netzwerk direkt auf Ihrem Drucker zu drucken, stellen Sie bitte sicher, dass der Drucker mit dem Netzwerkkabel verbunden ist oder verbinden Sie Ihren Drucker mit Ihrem WLAN-Netzwerk. Wenn Sie Cura nicht mit Ihrem Drucker verbinden, können Sie dennoch ein USB-Laufwerk für die Übertragung von G-Code-Dateien auf Ihren Drucker verwenden.\n" -"\n" -"Wählen Sie Ihren Drucker aus der folgenden Liste:" +msgstr "Um über das Netzwerk direkt auf Ihrem Drucker zu drucken, stellen Sie bitte sicher, dass der Drucker mit dem Netzwerkkabel verbunden ist oder verbinden Sie Ihren Drucker mit Ihrem WLAN-Netzwerk. Wenn Sie Cura nicht mit Ihrem Drucker verbinden, können Sie dennoch ein USB-Laufwerk für die Übertragung von G-Code-Dateien auf Ihren Drucker verwenden.\n\nWählen Sie Ihren Drucker aus der folgenden Liste:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 @@ -1547,17 +1541,17 @@ msgstr "Konfiguration aktivieren" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 msgctxt "@label" msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "Dieser Drucker ist nicht für das Hosten einer Gruppe verbundener Ultimaker 3-Drucker eingerichtet" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 msgctxt "@label" msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" -msgstr "" +msgstr "Dieser Drucker ist der Host für eine Gruppe von %1 verbundenen Ultimaker 3-Druckern" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" -msgstr "" +msgstr "Drucken über Netzwerk" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 msgctxt "@action:button" @@ -1567,98 +1561,98 @@ msgstr "Drucken" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "%1 ist nicht für das Hosten einer Gruppe verbundener Ultimaker 3-Drucker eingerichtet" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 msgctxt "@label:status" msgid "Printing" -msgstr "" +msgstr "Drucken" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 msgctxt "@label:status" msgid "Reserved" -msgstr "" +msgstr "Reserviert" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 msgctxt "@label:status" msgid "Finished" -msgstr "" +msgstr "Beendet" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 msgctxt "@label:status" msgid "Preparing" -msgstr "" +msgstr "Vorbereitung" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 msgctxt "@label:status" msgid "Available" -msgstr "" +msgstr "Verfügbar" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 msgctxt "@label" msgid "Completed on: " -msgstr "" +msgstr "Fertiggestellt am: " #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 msgctxt "@label" msgid "Clear build plate" -msgstr "" +msgstr "Druckplatte räumen" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 msgctxt "@label" msgid "Preparing to print" -msgstr "" +msgstr "Vorbereitung für den Druck" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 msgctxt "@label" msgid "Not accepting print jobs" -msgstr "" +msgstr "Akzeptiert keine Druckaufträge" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." -msgstr "" +msgstr "Öffnet die Seite für Druckaufträge mit Ihrem Standard-Webbrowser." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 msgctxt "@action:button" msgid "View print jobs" -msgstr "" +msgstr "Druckaufträge anzeigen" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 msgctxt "@label" msgid "PRINTER GROUP" -msgstr "" +msgstr "DRUCKERGRUPPE" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 msgctxt "@title" msgid "Print jobs" -msgstr "" +msgstr "Druckaufträge" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 msgctxt "@label" msgid "Printing" -msgstr "" +msgstr "Drucken" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 msgctxt "@label" msgid "Queued" -msgstr "" +msgstr "In Warteschlange" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 msgctxt "@label" msgid "Waiting for configuration change" -msgstr "" +msgstr "Warten auf eine Konfigurationsänderung" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 msgctxt "@label:title" msgid "Printers" -msgstr "" +msgstr "Drucker" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 msgctxt "@action:button" msgid "View printers" -msgstr "" +msgstr "Drucker anzeigen" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" @@ -2049,7 +2043,7 @@ msgstr "Installiert" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" -msgstr "" +msgstr "Plugin für Lizenzvereinbarung" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" @@ -2057,17 +2051,17 @@ msgid "" " plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "" +msgstr " Das Plugin enthält eine Lizenz.\nSie müssen diese Lizenz akzeptieren, um das Plugin zu installieren.\nStimmen Sie den nachfolgenden Bedingungen zu?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" msgid "Accept" -msgstr "" +msgstr "Akzeptieren" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 msgctxt "@action:button" msgid "Decline" -msgstr "" +msgstr "Ablehnen" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -2322,9 +2316,7 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "" -"Sie haben einige Profileinstellungen angepasst.\n" -"Möchten Sie diese Einstellungen übernehmen oder verwerfen?" +msgstr "Sie haben einige Profileinstellungen angepasst.\nMöchten Sie diese Einstellungen übernehmen oder verwerfen?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -2908,12 +2900,12 @@ msgstr "Material importieren" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "" +msgstr "Material konnte nicht importiert werden %1: %2" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "" +msgstr "Material wurde erfolgreich importiert %1" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2924,12 +2916,12 @@ msgstr "Material exportieren" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "" +msgstr "Exportieren des Materials nach %1: %2 schlug fehl" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "" +msgstr "Material erfolgreich nach %1 exportiert" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 @@ -2962,9 +2954,7 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "" -"Cura wurde von Ultimaker B.V. in Zusammenarbeit mit der Community entwickelt.\n" -"Cura verwendet mit Stolz die folgenden Open Source-Projekte:" +msgstr "Cura wurde von Ultimaker B.V. in Zusammenarbeit mit der Community entwickelt.\nCura verwendet mit Stolz die folgenden Open Source-Projekte:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -3067,10 +3057,7 @@ msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "" -"Einige Einstellungs-/Überschreibungswerte unterscheiden sich von den im Profil gespeicherten Werten.\n" -"\n" -"Klicken Sie, um den Profilmanager zu öffnen." +msgstr "Einige Einstellungs-/Überschreibungswerte unterscheiden sich von den im Profil gespeicherten Werten.\n\nKlicken Sie, um den Profilmanager zu öffnen." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" @@ -3108,10 +3095,7 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "" -"Einige ausgeblendete Einstellungen verwenden Werte, die von ihren normalen, berechneten Werten abweichen.\n" -"\n" -"Klicken Sie, um diese Einstellungen sichtbar zu machen." +msgstr "Einige ausgeblendete Einstellungen verwenden Werte, die von ihren normalen, berechneten Werten abweichen.\n\nKlicken Sie, um diese Einstellungen sichtbar zu machen." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 msgctxt "@label Header for list of settings." @@ -3139,10 +3123,7 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "" -"Diese Einstellung hat einen vom Profil abweichenden Wert.\n" -"\n" -"Klicken Sie, um den Wert des Profils wiederherzustellen." +msgstr "Diese Einstellung hat einen vom Profil abweichenden Wert.\n\nKlicken Sie, um den Wert des Profils wiederherzustellen." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 msgctxt "@label" @@ -3150,10 +3131,7 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "" -"Diese Einstellung wird normalerweise berechnet; aktuell ist jedoch ein Absolutwert eingestellt.\n" -"\n" -"Klicken Sie, um den berechneten Wert wiederherzustellen." +msgstr "Diese Einstellung wird normalerweise berechnet; aktuell ist jedoch ein Absolutwert eingestellt.\n\nKlicken Sie, um den berechneten Wert wiederherzustellen." #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" @@ -3165,9 +3143,7 @@ msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "" -"Druckeinrichtung deaktiviert\n" -"G-Code-Dateien können nicht geändert werden" +msgstr "Druckeinrichtung deaktiviert\nG-Code-Dateien können nicht geändert werden" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 msgctxt "@label" @@ -3177,22 +3153,22 @@ msgstr "00 Stunden 00 Minuten" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 msgctxt "@tooltip" msgid "Time information" -msgstr "" +msgstr "Zeitangaben" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 msgctxt "@description" msgid "Print time" -msgstr "" +msgstr "Druckzeit" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 msgctxt "@label" msgid "%1m / ~ %2g / ~ %4 %3" -msgstr "" +msgstr "%1m / ~ %2g / ~ %4 %3" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 msgctxt "@label" msgid "%1m / ~ %2g" -msgstr "" +msgstr "%1m / ~ %2g" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" @@ -3252,12 +3228,12 @@ msgstr "Es ist kein Drucker verbunden" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" msgid "Extruder" -msgstr "" +msgstr "Extruder" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." -msgstr "" +msgstr "Die Zieltemperatur des Hotend. Das Hotend wird auf diese Temperatur aufgeheizt oder abgekühlt. Wenn der Wert 0 beträgt, wird die Hotend-Heizung ausgeschaltet." #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" @@ -3726,27 +3702,27 @@ msgstr "Vorbereiten" #: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" msgid "Monitor" -msgstr "" +msgstr "Überwachen" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 msgctxt "@label" msgid "Layer Height" -msgstr "" +msgstr "Schichtdicke" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 msgctxt "@label" msgid "Print Speed" -msgstr "" +msgstr "Druckgeschwindigkeit" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 msgctxt "@label" msgid "Slower" -msgstr "" +msgstr "Langsamer" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 msgctxt "@label" msgid "Faster" -msgstr "" +msgstr "Schneller" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" @@ -3761,7 +3737,7 @@ msgstr "Die graduelle Füllung steigert die Menge der Füllung nach oben hin sch #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 msgctxt "@label" msgid "Enable gradual" -msgstr "" +msgstr "Graduell aktivieren" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" @@ -3838,7 +3814,7 @@ msgstr "Material" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 msgctxt "@label" msgid "Check material compatibility" -msgstr "" +msgstr "\n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -24,7 +24,7 @@ msgstr "Ajustes de la máquina" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" msgid "X-Ray view" -msgstr "" +msgstr "Vista de rayos X" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -39,17 +39,17 @@ msgstr "Archivo GCode" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "Imprimir con un enrutador Doodle3D" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 msgctxt "@properties:tooltip" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "Imprimir con un enrutador Doodle3D" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 msgctxt "@info:status" msgid "Connecting to Doodle3D Connect" -msgstr "" +msgstr "Conectar con Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 @@ -73,32 +73,32 @@ msgstr "Cancelar" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 msgctxt "@info:status" msgid "Sending data to Doodle3D Connect" -msgstr "" +msgstr "Enviando datos a Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 msgctxt "@info:status" msgid "Unable to send data to Doodle3D Connect. Is another job still active?" -msgstr "" +msgstr "No se pueden enviar datos a Doodle3D Connect. ¿Hay otro trabajo que todavía esté activo?" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 msgctxt "@info:status" msgid "Storing data on Doodle3D Connect" -msgstr "" +msgstr "Guardando datos en Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 msgctxt "@info:status" msgid "File sent to Doodle3D Connect" -msgstr "" +msgstr "Archivo enviado a Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@action:button" msgid "Open Connect.." -msgstr "" +msgstr "Abrir Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" -msgstr "" +msgstr "Abrir la interfaz web de Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -143,7 +143,7 @@ msgstr "No se puede iniciar un trabajo nuevo porque la impresora está ocupada o #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 msgctxt "@info:title" msgid "Print Details" -msgstr "" +msgstr "Datos de impresión" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" @@ -153,7 +153,7 @@ msgstr "Esta impresora no es compatible con la impresión USB porque utiliza el #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:title" msgid "USB Printing" -msgstr "" +msgstr "Impresión USB" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" @@ -168,7 +168,7 @@ msgstr "No se puede iniciar un trabajo nuevo porque la impresora no es compatibl #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 msgctxt "@info:title" msgid "Warning" -msgstr "" +msgstr "Advertencia" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" @@ -184,7 +184,7 @@ msgstr "No se pudo encontrar el firmware necesario para la impresora en %s." #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 msgctxt "@info:title" msgid "Printer Firmware" -msgstr "" +msgstr "Firmware de la impresora" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -201,25 +201,25 @@ msgstr "Guardar en unidad extraíble {0}" #, python-brace-format msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "" +msgstr "Guardando en unidad extraíble {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 msgctxt "@info:title" msgid "Saving" -msgstr "" +msgstr "Guardando" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "" +msgstr "No se pudo guardar en {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format msgctxt "@info:status Don't translate the tag {device}!" msgid "Could not find a file name when trying to write to {device}." -msgstr "" +msgstr "No se pudo encontrar un nombre de archivo al tratar de escribir en {device}." #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 @@ -236,7 +236,7 @@ msgstr "No se pudo guardar en unidad extraíble {0}: {1}" #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 msgctxt "@info:title" msgid "Error" -msgstr "" +msgstr "Error" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 #, python-brace-format @@ -247,7 +247,7 @@ msgstr "Guardado en unidad extraíble {0} como {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 msgctxt "@info:title" msgid "File Saved" -msgstr "" +msgstr "Archivo guardado" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 msgctxt "@action:button" @@ -269,7 +269,7 @@ msgstr "Expulsado {0}. Ahora puede retirar de forma segura la unidad." #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 msgctxt "@info:title" msgid "Safely Remove Hardware" -msgstr "" +msgstr "Retirar de forma segura el hardware" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format @@ -304,7 +304,7 @@ msgstr "Acceso a la impresora solicitado. Apruebe la solicitud en la impresora." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 msgctxt "@info:title" msgid "Connection status" -msgstr "" +msgstr "Estado de la conexión" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 @@ -319,7 +319,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 msgctxt "@info:title" msgid "Connection Status" -msgstr "" +msgstr "Estado de la conexión" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 @@ -417,7 +417,7 @@ msgstr "No se puede iniciar un trabajo nuevo de impresión, la impresora está o #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 msgctxt "@info:title" msgid "Printer Status" -msgstr "" +msgstr "Estado de la impresora" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 @@ -488,7 +488,7 @@ msgstr "Enviando datos a la impresora" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 msgctxt "@info:title" msgid "Sending Data" -msgstr "" +msgstr "Enviando datos" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 @@ -547,73 +547,73 @@ msgstr "Conectar a través de la red" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "La impresora no está configurada para alojar un grupo de impresoras conectadas de Ultimaker 3." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." -msgstr "" +msgstr "La impresora aloja un grupo de {count} impresoras conectadas de Ultimaker 3." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." -msgstr "" +msgstr "{printer_name} ha terminado de imprimir «{job_name}». Recoja el impreso y confirme que ha borrado la placa de impresión." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." -msgstr "" +msgstr "{printer_name} está reservada para imprimir «{job_name}». Modifique la configuración de la impresora de modo que se adapte al trabajo para comenzar la impresión." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "" +msgstr "Envío de nuevos trabajos (temporalmente) bloqueado; se sigue enviando el trabajo de impresión previo." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "No se pudo enviar el nuevo trabajo de impresión: esta impresora 3D (todavía) no está configurada para alojar un grupo de impresoras de Ultimaker 3 conectadas." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" -msgstr "" +msgstr "Enviando {file_name} al grupo {cluster_name}" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." -msgstr "" +msgstr "Enviar {file_name} al grupo {cluster_name}." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" -msgstr "" +msgstr "Mostrar trabajos de impresión" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." -msgstr "" +msgstr "Abre la interfaz de trabajos de impresión en el navegador." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." -msgstr "" +msgstr "No se puede enviar el trabajo de impresión al grupo {cluster_name}." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." -msgstr "" +msgstr "Para garantizar que su {machine_name} disponga de las prestaciones más recientes, se recomienda actualizar el firmware con regularidad. Esto se puede hacer en la {machine_name} (cuando esté conectada a la red) o vía USB." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" -msgstr "" +msgstr "Nuevo firmware de %s disponible" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 @@ -624,7 +624,7 @@ msgstr "Descargar" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 msgctxt "@info" msgid "Could not access update information." -msgstr "" +msgstr "No se pudo acceder a la información actualizada." #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" @@ -663,7 +663,7 @@ msgstr "Cura recopila de forma anónima información de la segmentación. Puede #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" msgid "Collecting Data" -msgstr "" +msgstr "Recopilando datos" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" @@ -684,7 +684,7 @@ msgstr "Archivo GCode" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" msgid "Layer view" -msgstr "" +msgstr "Vista de capas" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" @@ -694,7 +694,7 @@ msgstr "Cura no muestra correctamente las capas si la impresión de alambre est #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 msgctxt "@info:title" msgid "Layer View" -msgstr "" +msgstr "Vista de capas" #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -724,7 +724,7 @@ msgstr "Imagen GIF" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." -msgstr "" +msgstr "No se puede segmentar con el material actual, ya que es incompatible con el dispositivo o la configuración seleccionados." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 @@ -732,7 +732,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 msgctxt "@info:title" msgid "Unable to slice" -msgstr "" +msgstr "No se puede segmentar" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format @@ -759,7 +759,7 @@ msgstr "Procesando capas" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 msgctxt "@info:title" msgid "Information" -msgstr "" +msgstr "Información" #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" @@ -798,18 +798,18 @@ msgstr "Tobera" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 msgctxt "@menuitem" msgid "Browse plugins" -msgstr "" +msgstr "Examinar complementos" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" -msgstr "" +msgstr "No se pudo obtener la ID del complemento de {0}" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 msgctxt "@info:tile" msgid "Warning" -msgstr "" +msgstr "Advertencia" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" @@ -819,7 +819,7 @@ msgstr "Explorador de complementos" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" msgid "Solid view" -msgstr "" +msgstr "Vista de sólidos" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -835,7 +835,7 @@ msgstr "Analizar GCode" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 msgctxt "@info:title" msgid "G-code Details" -msgstr "" +msgstr "Datos de GCode" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" @@ -917,7 +917,7 @@ msgstr "Soporte" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Skirt" -msgstr "" +msgstr "Falda" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" @@ -958,7 +958,7 @@ msgstr "Buscando nueva ubicación para los objetos" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 msgctxt "@info:title" msgid "Finding Location" -msgstr "" +msgstr "Buscando ubicación" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 @@ -969,7 +969,7 @@ msgstr "No se puede encontrar una ubicación dentro del volumen de impresión pa #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 msgctxt "@info:title" msgid "Can't Find Location" -msgstr "" +msgstr "No se puede encontrar la ubicación" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 @@ -982,7 +982,7 @@ msgstr "El archivo ya existe" #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "" +msgstr "El archivo {0} ya existe. ¿Está seguro de que desea sobrescribirlo?" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" @@ -1003,7 +1003,7 @@ msgstr "El material seleccionado no es compatible con la máquina o la configura #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" -msgstr "" +msgstr "Material incompatible" #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." @@ -1024,24 +1024,24 @@ msgstr "Deshacer cambio del diámetro del material." #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "" +msgstr "Error al exportar el perfil a {0}: {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "" +msgstr "Error al exportar el perfil a {0}: Error en el complemento de escritura." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "" +msgstr "Perfil exportado a {0}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 msgctxt "@info:title" msgid "Export Details" -msgstr "" +msgstr "Datos de exportación" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 @@ -1050,7 +1050,7 @@ msgstr "" #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "" +msgstr "Error al importar el perfil de {0}: {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 @@ -1089,7 +1089,7 @@ msgstr "La altura del volumen de impresión se ha reducido debido al valor del a #: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 msgctxt "@info:title" msgid "Build Volume" -msgstr "" +msgstr "Volumen de impresión" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" @@ -1100,7 +1100,7 @@ msgstr "Multiplicar y colocar objetos" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:title" msgid "Placing Object" -msgstr "" +msgstr "Colocando objeto" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" @@ -1113,10 +1113,7 @@ msgid "" "

A fatal exception has occurred that we could not recover from!

\n" "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" " " -msgstr "" -"

Se ha producido una excepción fatal de la que no podemos recuperarnos.

\n" -"

Use la siguiente información para enviar un informe de error a http://github.com/Ultimaker/Cura/issues

\n" -" " +msgstr "

Se ha producido una excepción fatal de la que no podemos recuperarnos.

\n

Use la siguiente información para enviar un informe de error a http://github.com/Ultimaker/Cura/issues

\n " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 msgctxt "@action:button" @@ -1418,10 +1415,7 @@ msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "" -"Para imprimir directamente en la impresora a través de la red, asegúrese de que esta está conectada a la red utilizando un cable de red o conéctela a la red wifi. Si no conecta Cura con la impresora, también puede utilizar una unidad USB para transferir archivos GCode a la impresora.\n" -"\n" -"Seleccione la impresora de la siguiente lista:" +msgstr "Para imprimir directamente en la impresora a través de la red, asegúrese de que esta está conectada a la red utilizando un cable de red o conéctela a la red wifi. Si no conecta Cura con la impresora, también puede utilizar una unidad USB para transferir archivos GCode a la impresora.\n\nSeleccione la impresora de la siguiente lista:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 @@ -1547,17 +1541,17 @@ msgstr "Activar configuración" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 msgctxt "@label" msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "La impresora no está configurada para alojar un grupo de impresoras conectadas de Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 msgctxt "@label" msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" -msgstr "" +msgstr "La impresora aloja un grupo de %1 impresoras conectadas de Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" -msgstr "" +msgstr "Imprimir a través de la red" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 msgctxt "@action:button" @@ -1567,98 +1561,98 @@ msgstr "Imprimir" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "%1 no está configurada para alojar un grupo de impresoras conectadas de Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 msgctxt "@label:status" msgid "Printing" -msgstr "" +msgstr "Imprimiendo" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 msgctxt "@label:status" msgid "Reserved" -msgstr "" +msgstr "Reservado" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 msgctxt "@label:status" msgid "Finished" -msgstr "" +msgstr "Terminado" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 msgctxt "@label:status" msgid "Preparing" -msgstr "" +msgstr "Preparando" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 msgctxt "@label:status" msgid "Available" -msgstr "" +msgstr "Disponible" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 msgctxt "@label" msgid "Completed on: " -msgstr "" +msgstr "Completado el: " #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 msgctxt "@label" msgid "Clear build plate" -msgstr "" +msgstr "Borrar placa de impresión" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 msgctxt "@label" msgid "Preparing to print" -msgstr "" +msgstr "Preparando para impresión" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 msgctxt "@label" msgid "Not accepting print jobs" -msgstr "" +msgstr "No se aceptan trabajos de impresión" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." -msgstr "" +msgstr "Abre la página de trabajos de impresión en su navegador web por defecto." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 msgctxt "@action:button" msgid "View print jobs" -msgstr "" +msgstr "Ver trabajos de impresión" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 msgctxt "@label" msgid "PRINTER GROUP" -msgstr "" +msgstr "GRUPO DE IMPRESORAS" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 msgctxt "@title" msgid "Print jobs" -msgstr "" +msgstr "Trabajos de impresión" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 msgctxt "@label" msgid "Printing" -msgstr "" +msgstr "Imprimiendo" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 msgctxt "@label" msgid "Queued" -msgstr "" +msgstr "En cola" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 msgctxt "@label" msgid "Waiting for configuration change" -msgstr "" +msgstr "Esperando a que se cambie la configuración" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 msgctxt "@label:title" msgid "Printers" -msgstr "" +msgstr "Impresoras" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 msgctxt "@action:button" msgid "View printers" -msgstr "" +msgstr "Ver impresoras" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" @@ -2049,7 +2043,7 @@ msgstr "Instalado" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" -msgstr "" +msgstr "Acuerdo de licencia de complemento" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" @@ -2057,17 +2051,17 @@ msgid "" " plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "" +msgstr " El complemento incluye una licencia.\nDebe aceptar dicha licencia para instalar el complemento.\n¿Acepta las siguientes condiciones?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" msgid "Accept" -msgstr "" +msgstr "Aceptar" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 msgctxt "@action:button" msgid "Decline" -msgstr "" +msgstr "Rechazar" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -2322,9 +2316,7 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "" -"Ha personalizado parte de los ajustes del perfil.\n" -"¿Desea descartar los cambios o guardarlos?" +msgstr "Ha personalizado parte de los ajustes del perfil.\n¿Desea descartar los cambios o guardarlos?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -2908,12 +2900,12 @@ msgstr "Importar material" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "" +msgstr "No se pudo importar el material en %1: %2." #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "" +msgstr "El material se ha importado correctamente en %1." #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2924,12 +2916,12 @@ msgstr "Exportar material" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "" +msgstr "Se ha producido un error al exportar el material a %1: %2." #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "" +msgstr "El material se ha exportado correctamente a %1." #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 @@ -2962,9 +2954,7 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "" -"Ultimaker B.V. ha desarrollado Cura en cooperación con la comunidad.\n" -"Cura se enorgullece de utilizar los siguientes proyectos de código abierto:" +msgstr "Ultimaker B.V. ha desarrollado Cura en cooperación con la comunidad.\nCura se enorgullece de utilizar los siguientes proyectos de código abierto:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -3067,10 +3057,7 @@ msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "" -"Algunos valores de los ajustes o sobrescrituras son distintos a los valores almacenados en el perfil.\n" -"\n" -"Haga clic para abrir el administrador de perfiles." +msgstr "Algunos valores de los ajustes o sobrescrituras son distintos a los valores almacenados en el perfil.\n\nHaga clic para abrir el administrador de perfiles." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" @@ -3108,10 +3095,7 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "" -"Algunos ajustes ocultos utilizan valores diferentes de los valores normales calculados.\n" -"\n" -"Haga clic para mostrar estos ajustes." +msgstr "Algunos ajustes ocultos utilizan valores diferentes de los valores normales calculados.\n\nHaga clic para mostrar estos ajustes." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 msgctxt "@label Header for list of settings." @@ -3139,10 +3123,7 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "" -"Este ajuste tiene un valor distinto del perfil.\n" -"\n" -"Haga clic para restaurar el valor del perfil." +msgstr "Este ajuste tiene un valor distinto del perfil.\n\nHaga clic para restaurar el valor del perfil." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 msgctxt "@label" @@ -3150,10 +3131,7 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "" -"Este ajuste se calcula normalmente pero actualmente tiene un valor absoluto establecido.\n" -"\n" -"Haga clic para restaurar el valor calculado." +msgstr "Este ajuste se calcula normalmente pero actualmente tiene un valor absoluto establecido.\n\nHaga clic para restaurar el valor calculado." #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" @@ -3165,9 +3143,7 @@ msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "" -"Ajustes de impresión deshabilitados\n" -"No se pueden modificar los archivos GCode" +msgstr "Ajustes de impresión deshabilitados\nNo se pueden modificar los archivos GCode" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 msgctxt "@label" @@ -3177,22 +3153,22 @@ msgstr "00h 00min" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 msgctxt "@tooltip" msgid "Time information" -msgstr "" +msgstr "Información sobre el tiempo" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 msgctxt "@description" msgid "Print time" -msgstr "" +msgstr "Tiempo de impresión" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 msgctxt "@label" msgid "%1m / ~ %2g / ~ %4 %3" -msgstr "" +msgstr "%1m/~ %2g/~ %4 %3" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 msgctxt "@label" msgid "%1m / ~ %2g" -msgstr "" +msgstr "%1m/~ %2g" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" @@ -3252,12 +3228,12 @@ msgstr "No hay ninguna impresora conectada" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" msgid "Extruder" -msgstr "" +msgstr "Extrusor" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." -msgstr "" +msgstr "Temperatura objetivo del extremo caliente. El extremo caliente se calentará o enfriará en función de esta temperatura. Si el valor es 0, el calentamiento del extremo caliente se desactivará." #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" @@ -3726,27 +3702,27 @@ msgstr "Preparar" #: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" msgid "Monitor" -msgstr "" +msgstr "Supervisar" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 msgctxt "@label" msgid "Layer Height" -msgstr "" +msgstr "Altura de capa" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 msgctxt "@label" msgid "Print Speed" -msgstr "" +msgstr "Velocidad de impresión" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 msgctxt "@label" msgid "Slower" -msgstr "" +msgstr "Más lento" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 msgctxt "@label" msgid "Faster" -msgstr "" +msgstr "Más rápido" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" @@ -3761,7 +3737,7 @@ msgstr "Un relleno gradual aumentará gradualmente la cantidad de relleno hacia #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 msgctxt "@label" msgid "Enable gradual" -msgstr "" +msgstr "Habilitar gradual" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" @@ -3838,7 +3814,7 @@ msgstr "Material" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 msgctxt "@label" msgid "Check material compatibility" -msgstr "" +msgstr "Comprobar la compatibilidad de los materiales" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" @@ -3898,12 +3874,12 @@ msgstr "God Mode" #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "description" msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "" +msgstr "Acepta códigos GCode y los envía a un enrutador Doodle3D por medio de wifi." #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "name" msgid "Doodle3D WiFi-Box" -msgstr "" +msgstr "Enrutador Doodle3D" #: ChangeLogPlugin/plugin.json msgctxt "description" @@ -3958,17 +3934,17 @@ msgstr "Conexión de red UM3" #: CuraPrintClusterUpload/plugin.json msgctxt "name" msgid "UM3 Network Connection (Cluster)" -msgstr "" +msgstr "Conexión de red UM3 (grupo)" #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." -msgstr "" +msgstr "Busca actualizaciones de firmware." #: FirmwareUpdateChecker/plugin.json msgctxt "name" msgid "Firmware Update Checker" -msgstr "" +msgstr "Buscador de actualizaciones de firmware" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" @@ -4063,12 +4039,12 @@ msgstr "Actualización de la versión 2.5 a la 2.6" #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -msgstr "" +msgstr "Actualiza la configuración de Cura 2.7 a Cura 3.0." #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" -msgstr "" +msgstr "Actualización de la versión 2.7 a la 3.0" #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" @@ -4973,4 +4949,4 @@ msgstr "Lector de perfiles de Cura" #~ msgctxt "@label:" #~ msgid "Print Again" -#~ msgstr "Volver a imprimir" +#~ msgstr "Volver a imprimir" \ No newline at end of file diff --git a/resources/i18n/es_ES/fdmprinter.def.json.po b/resources/i18n/es_ES/fdmprinter.def.json.po index eed272eb61..dcf8c318c7 100644 --- a/resources/i18n/es_ES/fdmprinter.def.json.po +++ b/resources/i18n/es_ES/fdmprinter.def.json.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" +"Project-Id-Version: Cura 2.7\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-11 14:31+0200\n" +"PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -56,9 +56,7 @@ msgctxt "machine_start_gcode description" msgid "" "Gcode commands to be executed at the very start - separated by \n" "." -msgstr "" -"Los comandos de Gcode que se ejecutarán justo al inicio, separados por \n" -"." +msgstr "Los comandos de Gcode que se ejecutarán justo al inicio, separados por \n." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -70,9 +68,7 @@ msgctxt "machine_end_gcode description" msgid "" "Gcode commands to be executed at the very end - separated by \n" "." -msgstr "" -"Los comandos de Gcode que se ejecutarán justo al final, separados por \n" -"." +msgstr "Los comandos de Gcode que se ejecutarán justo al final, separados por \n." #: fdmprinter.def.json msgctxt "material_guid label" @@ -1122,7 +1118,7 @@ msgstr "Aleatoria" #: fdmprinter.def.json msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" -msgstr "" +msgstr "Esquina más pronunciada" #: fdmprinter.def.json msgctxt "z_seam_x label" @@ -1147,32 +1143,32 @@ msgstr "Coordenada Y de la posición cerca de donde se comienza a imprimir cada #: fdmprinter.def.json msgctxt "z_seam_corner label" msgid "Seam Corner Preference" -msgstr "" +msgstr "Preferencia de esquina de costura" #: fdmprinter.def.json msgctxt "z_seam_corner description" msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "" +msgstr "Controlar si las esquinas del contorno del modelo influyen en la posición de la costura. «Ninguno» significa que las esquinas no influyen en la posición de la costura. «Ocultar costura» significa que es probable que la costura se realice en una esquina interior. «Mostrar costura» significa que es probable que la costura sea en una esquina exterior. «Ocultar o mostrar costura» significa que es probable que la costura se realice en una esquina interior o exterior." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" msgid "None" -msgstr "" +msgstr "Ninguno" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_inner" msgid "Hide Seam" -msgstr "" +msgstr "Ocultar costura" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_outer" msgid "Expose Seam" -msgstr "" +msgstr "Mostrar costura" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" -msgstr "" +msgstr "Ocultar o mostrar costura" #: fdmprinter.def.json msgctxt "z_seam_relative label" @@ -1252,7 +1248,7 @@ msgstr "Patrón de relleno" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "Patrón del material de relleno de la impresión. El relleno de línea y zigzag cambia de dirección en capas alternas, con lo que se reduce el coste del material. Los patrones de rejilla, triángulo, cúbico, de octeto, cúbico bitruncado y concéntrico se imprimen en todas las capas por completo. El relleno cúbico, cúbico bitruncado y de octeto cambian en cada capa para proporcionar una distribución de fuerza equitativa en cada dirección." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1282,12 +1278,12 @@ msgstr "Subdivisión cúbica" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" msgid "Octet" -msgstr "" +msgstr "Octeto" #: fdmprinter.def.json msgctxt "infill_pattern option quarter_cubic" msgid "Quarter Cubic" -msgstr "" +msgstr "Cúbico bitruncado" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1307,22 +1303,22 @@ msgstr "Zigzag" #: fdmprinter.def.json msgctxt "infill_pattern option cross" msgid "Cross" -msgstr "" +msgstr "Cruz" #: fdmprinter.def.json msgctxt "infill_pattern option cross_3d" msgid "Cross 3D" -msgstr "" +msgstr "Cruz 3D" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" msgid "Connect Infill Lines" -msgstr "" +msgstr "Conectar líneas de relleno" #: fdmprinter.def.json msgctxt "zig_zaggify_infill description" msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." -msgstr "" +msgstr "Conectar los extremos donde los patrones de relleno se juntan con la pared interior usando una línea que siga la forma de esta. Habilitar este ajuste puede lograr que el relleno se adhiera mejor a las paredes y reduce el efecto del relleno sobre la calidad de las superficies verticales. Deshabilitar este ajuste reduce la cantidad de material utilizado." #: fdmprinter.def.json msgctxt "infill_angles label" @@ -1447,32 +1443,32 @@ msgstr "No genere áreas con un relleno inferior a este (utilice forro)." #: fdmprinter.def.json msgctxt "skin_preshrink label" msgid "Skin Removal Width" -msgstr "" +msgstr "Anchura de retirada del forro" #: fdmprinter.def.json msgctxt "skin_preshrink description" msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." -msgstr "" +msgstr "Anchura máxima de las áreas de forro que se deben retirar. Todas las áreas de forro inferiores a este valor desaparecerán. Esto puede contribuir a limitar el tiempo y el material empleados en imprimir el forro superior/inferior en las superficies inclinadas del modelo." #: fdmprinter.def.json msgctxt "top_skin_preshrink label" msgid "Top Skin Removal Width" -msgstr "" +msgstr "Anchura de retirada del forro superior" #: fdmprinter.def.json msgctxt "top_skin_preshrink description" msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." -msgstr "" +msgstr "Anchura máxima de las áreas superiores de forro que se deben retirar. Todas las áreas de forro inferiores a este valor desaparecerán. Esto puede contribuir a limitar el tiempo y el material empleados en imprimir el forro superior en las superficies inclinadas del modelo." #: fdmprinter.def.json msgctxt "bottom_skin_preshrink label" msgid "Bottom Skin Removal Width" -msgstr "" +msgstr "Anchura de retirada del forro inferior" #: fdmprinter.def.json msgctxt "bottom_skin_preshrink description" msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." -msgstr "" +msgstr "Anchura máxima de las áreas inferiores de forro que se deben retirar. Todas las áreas de forro inferiores a este valor desaparecerán. Esto puede contribuir a limitar el tiempo y el material empleados en imprimir el forro inferior en las superficies inclinadas del modelo." #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1482,27 +1478,27 @@ msgstr "Distancia de expansión del forro" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." -msgstr "" +msgstr "La distancia a la que los forros se expanden en el relleno. Los valores superiores hacen que el forro se adhiera mejor al patrón de relleno y que las paredes de las capas vecinas se adhieran mejor al forro. Los valores inferiores ahorran material." #: fdmprinter.def.json msgctxt "top_skin_expand_distance label" msgid "Top Skin Expand Distance" -msgstr "" +msgstr "Distancia de expansión del forro superior" #: fdmprinter.def.json msgctxt "top_skin_expand_distance description" msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." -msgstr "" +msgstr "La distancia a la que los forros superiores se expanden en el relleno. Los valores superiores hacen que el forro se adhiera mejor al patrón de relleno y que las paredes de la capa superior se adhieran mejor al forro. Los valores inferiores ahorran material." #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance label" msgid "Bottom Skin Expand Distance" -msgstr "" +msgstr "Distancia de expansión del forro inferior" #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance description" msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." -msgstr "" +msgstr "La distancia a la que los forros inferiores se expanden en el relleno. Los valores superiores hacen que el forro se adhiera mejor al patrón de relleno y que el forro se adhiera mejor a las paredes de la capa inferior. Los valores inferiores ahorran material." #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -2822,7 +2818,7 @@ msgstr "Zigzag" #: fdmprinter.def.json msgctxt "support_pattern option cross" msgid "Cross" -msgstr "" +msgstr "Cruz" #: fdmprinter.def.json msgctxt "support_connect_zigzags label" @@ -2837,32 +2833,32 @@ msgstr "Conectar los zigzags. Esto aumentará la resistencia de la estructura de #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" -msgstr "" +msgstr "Descomponer el soporte en pedazos" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." -msgstr "" +msgstr "Omitir algunas conexiones de línea de soporte para que la estructura de soporte sea más fácil de descomponer. Este ajuste es aplicable al patrón de relleno del soporte en zigzag." #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm label" msgid "Support Chunk Size" -msgstr "" +msgstr "Tamaño de los pedazos de soporte" #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm description" msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." -msgstr "" +msgstr "Omitir una conexión entre líneas de soporte una vez cada N milímetros a fin de lograr que la estructura de soporte resulte más fácil de descomponer." #: fdmprinter.def.json msgctxt "support_zag_skip_count label" msgid "Support Chunk Line Count" -msgstr "" +msgstr "Recuento de líneas de pedazos del soporte" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" msgid "Skip one in every N connection lines to make the support structure easier to break away." -msgstr "" +msgstr "Omitir una de cada N líneas de conexión para que la estructura de soporte se descomponga fácilmente." #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3404,9 +3400,7 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance, multiple skirt lines will extend outwards from this distance." -msgstr "" -"La distancia horizontal entre la falda y la primera capa de la impresión.\n" -"Esta es la distancia mínima; múltiples líneas de falda se extenderán hacia el exterior a partir de esta distancia." +msgstr "La distancia horizontal entre la falda y la primera capa de la impresión.\nEsta es la distancia mínima; múltiples líneas de falda se extenderán hacia el exterior a partir de esta distancia." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3451,22 +3445,22 @@ msgstr "Imprimir solo el borde en el exterior del modelo. Esto reduce el número #: fdmprinter.def.json msgctxt "z_offset_layer_0 label" msgid "Initial Layer Z Offset" -msgstr "" +msgstr "Desplazamiento Z de la capa inicial" #: fdmprinter.def.json msgctxt "z_offset_layer_0 description" msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." -msgstr "" +msgstr "El extrusor se desplaza de la altura normal de la primera capa con este valor, el cual puede ser positivo (elevado) o negativo (bajo). Algunas clases de filamentos se adhieren mejor a la placa de impresión si se levanta ligeramente el extrusor." #: fdmprinter.def.json msgctxt "z_offset_taper_layers label" msgid "Z Offset Taper Layers" -msgstr "" +msgstr "Desplazamiento Z de capas en disminución" #: fdmprinter.def.json msgctxt "z_offset_taper_layers description" msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." -msgstr "" +msgstr "Si no es cero, el desplazamiento Z se reduce a cero en las capas. Un valor de cero implica que el desplazamiento Z se mantiene constante en todas las capas de impresión." #: fdmprinter.def.json msgctxt "raft_margin label" @@ -3481,12 +3475,12 @@ msgstr "Si la balsa está habilitada, esta es el área adicional de la balsa alr #: fdmprinter.def.json msgctxt "raft_smoothing label" msgid "Raft Smoothing" -msgstr "" +msgstr "Suavizado de la balsa" #: fdmprinter.def.json msgctxt "raft_smoothing description" msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." -msgstr "" +msgstr "Este ajuste controla la medida en que se redondean las esquinas interiores en el contorno de la balsa. Las esquinas hacia el interior se redondean en semicírculo con un radio equivalente al valor aquí indicado. Este ajuste también elimina los orificios del contorno de la balsa que sean más pequeños que dicho círculo." #: fdmprinter.def.json msgctxt "raft_airgap label" @@ -4166,12 +4160,12 @@ msgstr "Suavice los contornos espiralizados para reducir la visibilidad de la co #: fdmprinter.def.json msgctxt "relative_extrusion label" msgid "Relative Extrusion" -msgstr "" +msgstr "Extrusión relativa" #: fdmprinter.def.json msgctxt "relative_extrusion description" msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." -msgstr "" +msgstr "Utilizar la extrusión relativa en lugar de la extrusión absoluta. El uso de pasos de extrusión relativos permite un procesamiento posterior más sencillo del GCode. Sin embargo, no es compatible con todas las impresoras y puede causar ligeras desviaciones en la cantidad de material depositado si se compara con los pasos de extrusión absolutos. Con independencia de este ajuste, el modo de extrusión se ajustará siempre en absoluto antes de la salida de cualquier secuencia GCode." #: fdmprinter.def.json msgctxt "experimental label" @@ -4186,12 +4180,12 @@ msgstr "Experimental" #: fdmprinter.def.json msgctxt "optimize_wall_printing_order label" msgid "Optimize Wall Printing Order" -msgstr "" +msgstr "Optimizar el orden de impresión de paredes" #: fdmprinter.def.json msgctxt "optimize_wall_printing_order description" msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "" +msgstr "Optimizar el orden en el que se imprimen las paredes a fin de reducir el número de retracciones y la distancia recorrida. La mayoría de los componentes se beneficiarán si este ajuste está habilitado pero, en algunos casos, se puede tardar más, por lo que deben compararse las previsiones de tiempo de impresión con y sin optimización." #: fdmprinter.def.json msgctxt "draft_shield_enabled label" @@ -4316,22 +4310,22 @@ msgstr "Alterna la dirección en la que se imprimen las capas superiores/inferio #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" -msgstr "" +msgstr "Tamaño de las bolsas 3D en cruces" #: fdmprinter.def.json msgctxt "cross_infill_pocket_size description" msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." -msgstr "" +msgstr "Tamaño de las bolsas en cruces del patrón de cruz 3D en las alturas en las que el patrón coincide consigo mismo." #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly label" msgid "Alternate Cross 3D Pockets" -msgstr "" +msgstr "Bolsas 3D en cruz alternantes" #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly description" msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." -msgstr "" +msgstr "Solo se aplica a mitad de los cruces en patrones de cruz 3D y alterna la ubicación de las bolsas entre las alturas a las que el patrón coincide consigo mismo." #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" @@ -4633,9 +4627,7 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "" -"Distancia de un movimiento ascendente que se extrude a media velocidad.\n" -"Esto puede causar una mejor adherencia a las capas anteriores, aunque no calienta demasiado el material en esas capas. Solo se aplica a la impresión de alambre." +msgstr "Distancia de un movimiento ascendente que se extrude a media velocidad.\nEsto puede causar una mejor adherencia a las capas anteriores, aunque no calienta demasiado el material en esas capas. Solo se aplica a la impresión de alambre." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -4755,12 +4747,12 @@ msgstr "Pasar por la superficie superior una vez más, pero sin extruir material #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" msgid "Iron Only Highest Layer" -msgstr "" +msgstr "Planchar solo la capa superior" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer description" msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." -msgstr "" +msgstr "Planchar únicamente la última capa de la malla. De este modo se ahorra tiempo si las capas inferiores no requieren un acabado superficial suave." #: fdmprinter.def.json msgctxt "ironing_pattern label" @@ -5124,4 +5116,4 @@ msgstr "Matriz de transformación que se aplicará al modelo cuando se cargue de #~ msgctxt "multiple_mesh_overlap label" #~ msgid "Dual Extrusion Overlap" -#~ msgstr "Superposición de extrusión doble" +#~ msgstr "Superposición de extrusión doble" \ No newline at end of file diff --git a/resources/i18n/fi_FI/cura.po b/resources/i18n/fi_FI/cura.po index 06979a8d4f..74788a4c3f 100644 --- a/resources/i18n/fi_FI/cura.po +++ b/resources/i18n/fi_FI/cura.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-11 14:30+0200\n" +"PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: Finnish\n" "Language: fi_FI\n" @@ -24,7 +24,7 @@ msgstr "Laitteen asetukset" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" msgid "X-Ray view" -msgstr "" +msgstr "Kerrosnäkymä" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -39,17 +39,17 @@ msgstr "GCode-tiedosto" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "Tulostus Doodle3D WiFi-Boxin avulla" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 msgctxt "@properties:tooltip" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "Tulostus Doodle3D WiFi-Boxin avulla" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 msgctxt "@info:status" msgid "Connecting to Doodle3D Connect" -msgstr "" +msgstr "Yhteyden muodostaminen Doodle3D Connectiin" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 @@ -73,32 +73,32 @@ msgstr "Peruuta" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 msgctxt "@info:status" msgid "Sending data to Doodle3D Connect" -msgstr "" +msgstr "Lähetetään tietoja Doodle3D Connectiin" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 msgctxt "@info:status" msgid "Unable to send data to Doodle3D Connect. Is another job still active?" -msgstr "" +msgstr "Tietojen lähetys Doodle3D Connectiin ei onnistu. Onko toinen työ yhä aktiivinen?" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 msgctxt "@info:status" msgid "Storing data on Doodle3D Connect" -msgstr "" +msgstr "Tietoja tallennetaan Doodle3D Connectiin" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 msgctxt "@info:status" msgid "File sent to Doodle3D Connect" -msgstr "" +msgstr "Tiedosto lähetetty Doodle3D Connectiin" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@action:button" msgid "Open Connect.." -msgstr "" +msgstr "Avaa Connect..." #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" -msgstr "" +msgstr "Avaa Doodle3D Connect -verkkoliittymä" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -143,7 +143,7 @@ msgstr "Uuden työn aloittaminen ei onnistu, koska tulostin on varattu tai sitä #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 msgctxt "@info:title" msgid "Print Details" -msgstr "" +msgstr "Tulostustiedot" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" @@ -153,7 +153,7 @@ msgstr "Tämä tulostin ei tue USB-tulostusta, koska se käyttää UltiGCode-tyy #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:title" msgid "USB Printing" -msgstr "" +msgstr "USB-tulostus" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" @@ -168,7 +168,7 @@ msgstr "Uuden työn aloittaminen ei onnistu, koska tulostin ei tue USB-tulostust #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 msgctxt "@info:title" msgid "Warning" -msgstr "" +msgstr "Varoitus" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" @@ -184,7 +184,7 @@ msgstr "Tulostimelle ei löydetty laiteohjelmistoa (%s)." #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 msgctxt "@info:title" msgid "Printer Firmware" -msgstr "" +msgstr "Tulostimen laiteohjelmisto" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -201,25 +201,25 @@ msgstr "Tallenna siirrettävälle asemalle {0}" #, python-brace-format msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "" +msgstr "Tallennetaan siirrettävälle asemalle {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 msgctxt "@info:title" msgid "Saving" -msgstr "" +msgstr "Tallennetaan" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "" +msgstr "Ei voitu tallentaa tiedostoon {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format msgctxt "@info:status Don't translate the tag {device}!" msgid "Could not find a file name when trying to write to {device}." -msgstr "" +msgstr "Ei löydetty tiedostonimeä yritettäessä kirjoittaa laitteeseen {device}." #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 @@ -236,7 +236,7 @@ msgstr "Ei voitu tallentaa siirrettävälle asemalle {0}: {1}" #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 msgctxt "@info:title" msgid "Error" -msgstr "" +msgstr "Virhe" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 #, python-brace-format @@ -247,7 +247,7 @@ msgstr "Tallennettu siirrettävälle asemalle {0} nimellä {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 msgctxt "@info:title" msgid "File Saved" -msgstr "" +msgstr "Tiedosto tallennettu" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 msgctxt "@action:button" @@ -269,7 +269,7 @@ msgstr "Poistettu {0}. Voit nyt poistaa aseman turvallisesti." #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 msgctxt "@info:title" msgid "Safely Remove Hardware" -msgstr "" +msgstr "Poista laite turvallisesti" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format @@ -304,7 +304,7 @@ msgstr "Tulostimen käyttöoikeutta pyydetty. Hyväksy tulostimen pyyntö" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 msgctxt "@info:title" msgid "Connection status" -msgstr "" +msgstr "Yhteyden tila" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 @@ -319,7 +319,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 msgctxt "@info:title" msgid "Connection Status" -msgstr "" +msgstr "Yhteyden tila" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 @@ -417,7 +417,7 @@ msgstr "Uuden tulostustyön aloittaminen ei onnistu, koska tulostin on varattu. #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 msgctxt "@info:title" msgid "Printer Status" -msgstr "" +msgstr "Tulostimen tila" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 @@ -488,7 +488,7 @@ msgstr "Lähetetään tietoja tulostimeen" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 msgctxt "@info:title" msgid "Sending Data" -msgstr "" +msgstr "Lähetetään tietoja" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 @@ -547,73 +547,73 @@ msgstr "Yhdistä verkon kautta" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "Tätä tulostinta ei ole määritetty yhdistetyn Ultimaker 3 -tulostinryhmän isännäksi." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." -msgstr "" +msgstr "Tämä tulostin on {count} tulostimen yhdistetyn Ultimaker 3 -ryhmän isäntä." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." -msgstr "" +msgstr "{printer_name} on tulostanut työn {job_name}. Nouda työ ja vahvista alustan tyhjennys." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." -msgstr "" +msgstr "{printer_name} on varattu työn {job_name} tulostamiseen. Muuta tulostimen määritys vastaamaan työtä, jotta tulostus alkaa." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "" +msgstr "Uusien töiden lähettäminen (tilapäisesti) estetty, edellistä tulostustyötä lähetetään vielä." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "Uuden tulostustyön lähetys ei onnistu: tätä 3D-tulostinta ei ole (vielä) määritetty yhdistetyn Ultimaker 3 -tulostinryhmän isännäksi." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" -msgstr "" +msgstr "Lähetetään tiedostoa {file_name} ryhmään {cluster_name}" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." -msgstr "" +msgstr "Lähetettiin {file_name} ryhmään {cluster_name}." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" -msgstr "" +msgstr "Näytä tulostustyöt" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." -msgstr "" +msgstr "Avaa tulostustöiden käyttöliittymän selaimessa." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." -msgstr "" +msgstr "Tulostustyön lähetys ryhmään {cluster_name} ei onnistu." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." -msgstr "" +msgstr "On suositeltavaa päivittää laiteohjelmisto säännöllisesti, jotta voidaan varmistaa, että laitteessa {machine_name} on viimeisimmät ominaisuudet. Tämä voidaan tehdä laitteessa {machine_name} (verkkoon yhdistettynä) tai USB:n kautta." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" -msgstr "" +msgstr "Uusi tulostimen %s laiteohjelmisto saatavilla" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 @@ -624,7 +624,7 @@ msgstr "Lataa" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 msgctxt "@info" msgid "Could not access update information." -msgstr "" +msgstr "Päivitystietoja ei löytynyt." #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" @@ -663,7 +663,7 @@ msgstr "Cura kerää anonyymejä viipalointiin liittyviä tilastotietoja. Tämä #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" msgid "Collecting Data" -msgstr "" +msgstr "Kerätään tietoja" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" @@ -684,7 +684,7 @@ msgstr "GCode-tiedosto" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" msgid "Layer view" -msgstr "" +msgstr "Kerrosnäkymä" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" @@ -694,7 +694,7 @@ msgstr "Cura ei näytä kerroksia täsmällisesti, kun rautalankatulostus on kä #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 msgctxt "@info:title" msgid "Layer View" -msgstr "" +msgstr "Kerrosnäkymä" #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -724,7 +724,7 @@ msgstr "GIF-kuva" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." -msgstr "" +msgstr "Viipalointi ei onnistu nykyisellä materiaalilla, sillä se ei sovellu käytettäväksi valitun laitteen tai kokoonpanon kanssa." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 @@ -732,7 +732,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 msgctxt "@info:title" msgid "Unable to slice" -msgstr "" +msgstr "Viipalointi ei onnistu" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format @@ -759,7 +759,7 @@ msgstr "Käsitellään kerroksia" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 msgctxt "@info:title" msgid "Information" -msgstr "" +msgstr "Tiedot" #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" @@ -798,18 +798,18 @@ msgstr "Suutin" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 msgctxt "@menuitem" msgid "Browse plugins" -msgstr "" +msgstr "Selaa lisäosia" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" -msgstr "" +msgstr "Lisäosan tunnuksen hankkiminen epäonnistui tiedostosta {0}" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 msgctxt "@info:tile" msgid "Warning" -msgstr "" +msgstr "Varoitus" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" @@ -819,7 +819,7 @@ msgstr "Lisäosien selain" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" msgid "Solid view" -msgstr "" +msgstr "Kiinteä näkymä" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -835,7 +835,7 @@ msgstr "G-coden jäsennys" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 msgctxt "@info:title" msgid "G-code Details" -msgstr "" +msgstr "G-coden tiedot" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" @@ -917,7 +917,7 @@ msgstr "Tuki" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Skirt" -msgstr "" +msgstr "Helma" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" @@ -958,7 +958,7 @@ msgstr "Uusien paikkojen etsiminen kappaleille" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 msgctxt "@info:title" msgid "Finding Location" -msgstr "" +msgstr "Etsitään paikkaa" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 @@ -969,7 +969,7 @@ msgstr "Kaikille kappaleille ei löydy paikkaa tulostustilavuudessa." #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 msgctxt "@info:title" msgid "Can't Find Location" -msgstr "" +msgstr "Paikkaa ei löydy" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 @@ -982,7 +982,7 @@ msgstr "Tiedosto on jo olemassa" #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "" +msgstr "Tiedosto {0} on jo olemassa. Haluatko varmasti kirjoittaa sen päälle?" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" @@ -1003,7 +1003,7 @@ msgstr "Valittu materiaali ei sovellu käytettäväksi valitun laitteen tai koko #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" -msgstr "" +msgstr "Yhteensopimaton materiaali" #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." @@ -1024,24 +1024,24 @@ msgstr "Kumoa materiaalin halkaisijan muutokset." #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "" +msgstr "Profiilin vienti epäonnistui tiedostoon {0}: {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "" +msgstr "Profiilin vienti epäonnistui tiedostoon {0}: Kirjoitin-lisäosa ilmoitti virheestä." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "" +msgstr "Profiili viety tiedostoon {0}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 msgctxt "@info:title" msgid "Export Details" -msgstr "" +msgstr "Viennin tiedot" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 @@ -1050,7 +1050,7 @@ msgstr "" #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "" +msgstr "Profiilin tuonti epäonnistui tiedostosta {0}: {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 @@ -1089,7 +1089,7 @@ msgstr "Tulostustilavuuden korkeutta on vähennetty tulostusjärjestysasetuksen #: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 msgctxt "@info:title" msgid "Build Volume" -msgstr "" +msgstr "Tulostustilavuus" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" @@ -1100,7 +1100,7 @@ msgstr "Kappaleiden kertominen ja sijoittelu" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:title" msgid "Placing Object" -msgstr "" +msgstr "Sijoitetaan kappaletta" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" @@ -1113,10 +1113,7 @@ msgid "" "

A fatal exception has occurred that we could not recover from!

\n" "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" " " -msgstr "" -"

Tapahtui vakava poikkeus, josta palautuminen ei onnistunut!

\n" -"

Tee virheraportti alla olevien tietojen perusteella osoitteessa http://github.com/Ultimaker/Cura/issues

\n" -" " +msgstr "

Tapahtui vakava poikkeus, josta palautuminen ei onnistunut!

\n

Tee virheraportti alla olevien tietojen perusteella osoitteessa http://github.com/Ultimaker/Cura/issues

\n " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 msgctxt "@action:button" @@ -1418,10 +1415,7 @@ msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "" -"Tulosta suoraan tulostimeen verkon kautta yhdistämällä tulostin verkkoon verkkokaapelilla tai yhdistämällä tulostin Wi-Fi-verkkoon. Jos Curaa ei yhdistetä tulostimeen, GCode-tiedostot voidaan silti siirtää tulostimeen USB-aseman avulla.\n" -"\n" -"Valitse tulostin alla olevasta luettelosta:" +msgstr "Tulosta suoraan tulostimeen verkon kautta yhdistämällä tulostin verkkoon verkkokaapelilla tai yhdistämällä tulostin Wi-Fi-verkkoon. Jos Curaa ei yhdistetä tulostimeen, GCode-tiedostot voidaan silti siirtää tulostimeen USB-aseman avulla.\n\nValitse tulostin alla olevasta luettelosta:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 @@ -1547,17 +1541,17 @@ msgstr "Aktivoi määritys" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 msgctxt "@label" msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "Tätä tulostinta ei ole määritetty yhdistetyn Ultimaker 3 -tulostinryhmän isännäksi" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 msgctxt "@label" msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" -msgstr "" +msgstr "Tämä tulostin on %1 tulostimen yhdistetyn Ultimaker 3 -ryhmän isäntä" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" -msgstr "" +msgstr "Tulosta verkon kautta" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 msgctxt "@action:button" @@ -1567,98 +1561,98 @@ msgstr "Tulosta" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "%1 ei ole määritetty yhdistetyn Ultimaker 3 -tulostinryhmän isännäksi" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 msgctxt "@label:status" msgid "Printing" -msgstr "" +msgstr "Tulostetaan" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 msgctxt "@label:status" msgid "Reserved" -msgstr "" +msgstr "Varattu" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 msgctxt "@label:status" msgid "Finished" -msgstr "" +msgstr "Valmis" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 msgctxt "@label:status" msgid "Preparing" -msgstr "" +msgstr "Valmistellaan" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 msgctxt "@label:status" msgid "Available" -msgstr "" +msgstr "Saatavilla" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 msgctxt "@label" msgid "Completed on: " -msgstr "" +msgstr "Valmistunut: " #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 msgctxt "@label" msgid "Clear build plate" -msgstr "" +msgstr "Tyhjennä alusta" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 msgctxt "@label" msgid "Preparing to print" -msgstr "" +msgstr "Valmistellaan tulostusta" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 msgctxt "@label" msgid "Not accepting print jobs" -msgstr "" +msgstr "Ei hyväksy tulostustöitä" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." -msgstr "" +msgstr "Avaa tulostöiden sivun oletusselaimessa." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 msgctxt "@action:button" msgid "View print jobs" -msgstr "" +msgstr "Näytä tulostustyöt" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 msgctxt "@label" msgid "PRINTER GROUP" -msgstr "" +msgstr "TULOSTINRYHMÄ" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 msgctxt "@title" msgid "Print jobs" -msgstr "" +msgstr "Tulostustyöt" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 msgctxt "@label" msgid "Printing" -msgstr "" +msgstr "Tulostetaan" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 msgctxt "@label" msgid "Queued" -msgstr "" +msgstr "Jonossa" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 msgctxt "@label" msgid "Waiting for configuration change" -msgstr "" +msgstr "Odotetaan määrityksen muutosta" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 msgctxt "@label:title" msgid "Printers" -msgstr "" +msgstr "Tulostimet" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 msgctxt "@action:button" msgid "View printers" -msgstr "" +msgstr "Näytä tulostimet" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" @@ -2049,7 +2043,7 @@ msgstr "Asennettu" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" -msgstr "" +msgstr "Lisäosan lisenssisopimus" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" @@ -2057,17 +2051,17 @@ msgid "" " plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "" +msgstr " lisäosa sisältää lisenssin.\nLisenssi on hyväksyttävä lisäosan asentamista varten.\nHyväksytkö alla olevat ehdot?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" msgid "Accept" -msgstr "" +msgstr "Hyväksy" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 msgctxt "@action:button" msgid "Decline" -msgstr "" +msgstr "Hylkää" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -2322,9 +2316,7 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "" -"Olet mukauttanut profiilin asetuksia.\n" -"Haluatko säilyttää vai hylätä nämä asetukset?" +msgstr "Olet mukauttanut profiilin asetuksia.\nHaluatko säilyttää vai hylätä nämä asetukset?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -2908,12 +2900,12 @@ msgstr "Tuo materiaali" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "" +msgstr "Materiaalin tuominen epäonnistui: %1: %2" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "" +msgstr "Materiaalin tuominen onnistui: %1" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2924,12 +2916,12 @@ msgstr "Vie materiaali" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "" +msgstr "Materiaalin vieminen epäonnistui kohteeseen %1: %2" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "" +msgstr "Materiaalin vieminen onnistui kohteeseen %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 @@ -2962,9 +2954,7 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "" -"Cura-ohjelman on kehittänyt Ultimaker B.V. yhteistyössä käyttäjäyhteisön kanssa.\n" -"Cura hyödyntää seuraavia avoimeen lähdekoodiin perustuvia projekteja:" +msgstr "Cura-ohjelman on kehittänyt Ultimaker B.V. yhteistyössä käyttäjäyhteisön kanssa.\nCura hyödyntää seuraavia avoimeen lähdekoodiin perustuvia projekteja:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -3067,10 +3057,7 @@ msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "" -"Jotkut asetusten ja ohitusten arvot eroavat profiiliin tallennetuista arvoista.\n" -"\n" -"Avaa profiilin hallinta napsauttamalla." +msgstr "Jotkut asetusten ja ohitusten arvot eroavat profiiliin tallennetuista arvoista.\n\nAvaa profiilin hallinta napsauttamalla." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" @@ -3108,10 +3095,7 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "" -"Jotkin piilotetut asetukset käyttävät arvoja, jotka eroavat normaaleista lasketuista arvoista.\n" -"\n" -"Tee asetuksista näkyviä napsauttamalla." +msgstr "Jotkin piilotetut asetukset käyttävät arvoja, jotka eroavat normaaleista lasketuista arvoista.\n\nTee asetuksista näkyviä napsauttamalla." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 msgctxt "@label Header for list of settings." @@ -3139,10 +3123,7 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "" -"Tämän asetuksen arvo eroaa profiilin arvosta.\n" -"\n" -"Palauta profiilin arvo napsauttamalla." +msgstr "Tämän asetuksen arvo eroaa profiilin arvosta.\n\nPalauta profiilin arvo napsauttamalla." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 msgctxt "@label" @@ -3150,10 +3131,7 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "" -"Tämä asetus on normaalisti laskettu, mutta sillä on tällä hetkellä absoluuttinen arvo.\n" -"\n" -"Palauta laskettu arvo napsauttamalla." +msgstr "Tämä asetus on normaalisti laskettu, mutta sillä on tällä hetkellä absoluuttinen arvo.\n\nPalauta laskettu arvo napsauttamalla." #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" @@ -3165,9 +3143,7 @@ msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "" -"Tulostuksen asennus ei käytössä\n" -"G-code-tiedostoja ei voida muokata" +msgstr "Tulostuksen asennus ei käytössä\nG-code-tiedostoja ei voida muokata" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 msgctxt "@label" @@ -3177,22 +3153,22 @@ msgstr "00 h 00 min" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 msgctxt "@tooltip" msgid "Time information" -msgstr "" +msgstr "Aikatiedot" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 msgctxt "@description" msgid "Print time" -msgstr "" +msgstr "Tulostusaika" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 msgctxt "@label" msgid "%1m / ~ %2g / ~ %4 %3" -msgstr "" +msgstr "%1 m / ~ %2 g / ~ %4 %3" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 msgctxt "@label" msgid "%1m / ~ %2g" -msgstr "" +msgstr "%1 m / ~ %2 g" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" @@ -3252,12 +3228,12 @@ msgstr "Ei tulostinta yhdistettynä" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" msgid "Extruder" -msgstr "" +msgstr "Suulake" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." -msgstr "" +msgstr "Kuuman pään kohdelämpötila. Kuuma pää lämpenee tai viilenee kohti tätä lämpötilaa. Jos asetus on 0, kuuman pään lämmitys sammutetaan." #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" @@ -3726,27 +3702,27 @@ msgstr "Valmistele" #: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" msgid "Monitor" -msgstr "" +msgstr "Valvo" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 msgctxt "@label" msgid "Layer Height" -msgstr "" +msgstr "Kerroksen korkeus" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 msgctxt "@label" msgid "Print Speed" -msgstr "" +msgstr "Tulostusnopeus" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 msgctxt "@label" msgid "Slower" -msgstr "" +msgstr "Hitaammin" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 msgctxt "@label" msgid "Faster" -msgstr "" +msgstr "Nopeammin" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" @@ -3761,7 +3737,7 @@ msgstr "Asteittainen täyttö lisää täytön tiheyttä vähitellen yläosaa ko #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 msgctxt "@label" msgid "Enable gradual" -msgstr "" +msgstr "Ota asteittainen käyttöön" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" @@ -3838,7 +3814,7 @@ msgstr "Materiaali" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 msgctxt "@label" msgid "Check material compatibility" -msgstr "" +msgstr "Tarkista materiaalin yhteensopivuus" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" @@ -3898,12 +3874,12 @@ msgstr "Jumala-tila" #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "description" msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "" +msgstr "Hyväksyy GCode-määrittelyt ja lähettää ne Wi-Fi-yhteyden kautta Doodle3D WiFi-Boxiin." #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "name" msgid "Doodle3D WiFi-Box" -msgstr "" +msgstr "Doodle3D WiFi-Box" #: ChangeLogPlugin/plugin.json msgctxt "description" @@ -3958,17 +3934,17 @@ msgstr "UM3-verkkoyhteys" #: CuraPrintClusterUpload/plugin.json msgctxt "name" msgid "UM3 Network Connection (Cluster)" -msgstr "" +msgstr "UM3-verkkoyhteys (klusteri)" #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." -msgstr "" +msgstr "Tarkistaa laiteohjelmistopäivitykset." #: FirmwareUpdateChecker/plugin.json msgctxt "name" msgid "Firmware Update Checker" -msgstr "" +msgstr "Laiteohjelmiston päivitysten tarkistus" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" @@ -4063,12 +4039,12 @@ msgstr "Päivitys versiosta 2.5 versioon 2.6" #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -msgstr "" +msgstr "Päivittää kokoonpanon versiosta Cura 2.7 versioon Cura 3.0." #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" -msgstr "" +msgstr "Päivitys versiosta 2.7 versioon 3.0" #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" @@ -4973,4 +4949,4 @@ msgstr "Cura-profiilin lukija" #~ msgctxt "@label:" #~ msgid "Print Again" -#~ msgstr "Tulosta uudelleen" +#~ msgstr "Tulosta uudelleen" \ No newline at end of file diff --git a/resources/i18n/fi_FI/fdmprinter.def.json.po b/resources/i18n/fi_FI/fdmprinter.def.json.po index c2277a7d66..fb73e2e39d 100644 --- a/resources/i18n/fi_FI/fdmprinter.def.json.po +++ b/resources/i18n/fi_FI/fdmprinter.def.json.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-11 14:31+0200\n" +"PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: Finnish\n" "Language: fi_FI\n" @@ -56,9 +56,7 @@ msgctxt "machine_start_gcode description" msgid "" "Gcode commands to be executed at the very start - separated by \n" "." -msgstr "" -"GCode-komennot, jotka suoritetaan aivan alussa – eroteltuina merkillä \n" -"." +msgstr "GCode-komennot, jotka suoritetaan aivan alussa – eroteltuina merkillä \n." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -70,9 +68,7 @@ msgctxt "machine_end_gcode description" msgid "" "Gcode commands to be executed at the very end - separated by \n" "." -msgstr "" -"GCode-komennot, jotka suoritetaan aivan lopussa – eroteltuina merkillä \n" -"." +msgstr "GCode-komennot, jotka suoritetaan aivan lopussa – eroteltuina merkillä \n." #: fdmprinter.def.json msgctxt "material_guid label" @@ -1122,7 +1118,7 @@ msgstr "Satunnainen" #: fdmprinter.def.json msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" -msgstr "" +msgstr "Terävin kulma" #: fdmprinter.def.json msgctxt "z_seam_x label" @@ -1147,32 +1143,32 @@ msgstr "Y-koordinaatti kohdalle, jonka läheltä aloitetaan kunkin kerroksen osu #: fdmprinter.def.json msgctxt "z_seam_corner label" msgid "Seam Corner Preference" -msgstr "" +msgstr "Saumakulmien asetus" #: fdmprinter.def.json msgctxt "z_seam_corner description" msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "" +msgstr "Määritä, vaikuttavatko mallin ulkolinjan kulmat sauman sijaintiin. Ei mitään tarkoittaa, että kulmilla ei ole vaikutusta sauman sijaintiin. Piilota sauma -valinnalla sauman sijainti sisäkulmassa on todennäköisempää. Paljasta sauma -valinnalla sauman sijainti ulkokulmassa on todennäköisempää. Piilota tai paljasta sauma -valinnalla sauman sijainti sisä- tai ulkokulmassa on todennäköisempää." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" msgid "None" -msgstr "" +msgstr "Ei mitään" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_inner" msgid "Hide Seam" -msgstr "" +msgstr "Piilota sauma" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_outer" msgid "Expose Seam" -msgstr "" +msgstr "Paljasta sauma" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" -msgstr "" +msgstr "Piilota tai paljasta sauma" #: fdmprinter.def.json msgctxt "z_seam_relative label" @@ -1252,7 +1248,7 @@ msgstr "Täyttökuvio" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "Tulostettava täyttömateriaalin kuvio. Linja- ja siksak-täytöt vaihtavat suuntaa kerrosten välillä, mikä vähentää materiaalikustannuksia. Ristikko-, kolmio-, kuutio-, oktetti-, neljänneskuutio- ja samankeskinen-kuviot tulostetaan kokonaisuudessaan kuhunkin kerrokseen. Kuutio-, neljänneskuutio- ja oktettitäytöt muuttuvat kerroksittain, jotta vahvuus jakautuu tasaisemmin kussakin suunnassa." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1282,12 +1278,12 @@ msgstr "Kuution alajako" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" msgid "Octet" -msgstr "" +msgstr "Oktetti" #: fdmprinter.def.json msgctxt "infill_pattern option quarter_cubic" msgid "Quarter Cubic" -msgstr "" +msgstr "Neljänneskuutio" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1307,22 +1303,22 @@ msgstr "Siksak" #: fdmprinter.def.json msgctxt "infill_pattern option cross" msgid "Cross" -msgstr "" +msgstr "Risti" #: fdmprinter.def.json msgctxt "infill_pattern option cross_3d" msgid "Cross 3D" -msgstr "" +msgstr "Risti 3D" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" msgid "Connect Infill Lines" -msgstr "" +msgstr "Yhdistä täyttölinjat" #: fdmprinter.def.json msgctxt "zig_zaggify_infill description" msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." -msgstr "" +msgstr "Yhdistä päät, joissa täyttökuvio kohtaa sisäseinämän käyttämällä linjoja, jotka seuraavat sisäseinämän muotoa. Tämän asetuksen ottaminen käyttöön voi saada täytön tarttumaan seinämiin paremmin ja vähentää täytön vaikutusta pystypintojen laatuun. Tämän asetuksen poistaminen käytöstä vähentää käytettävän materiaalin määrää." #: fdmprinter.def.json msgctxt "infill_angles label" @@ -1447,32 +1443,32 @@ msgstr "Älä muodosta tätä pienempiä täyttöalueita (käytä sen sijaan pin #: fdmprinter.def.json msgctxt "skin_preshrink label" msgid "Skin Removal Width" -msgstr "" +msgstr "Pintakalvon poistoleveys" #: fdmprinter.def.json msgctxt "skin_preshrink description" msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." -msgstr "" +msgstr "Suurin poistettavien pintakalvoalueiden leveys. Kaikki tätä arvoa pienemmät pintakalvoalueet poistuvat. Tästä voi olla apua mallin kaltevien pintojen ylä-/alapintakalvon tulostukseen käytettävän ajan ja materiaalin rajoittamisessa." #: fdmprinter.def.json msgctxt "top_skin_preshrink label" msgid "Top Skin Removal Width" -msgstr "" +msgstr "Yläpintakalvon poistoleveys" #: fdmprinter.def.json msgctxt "top_skin_preshrink description" msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." -msgstr "" +msgstr "Suurin poistettavien yläpintakalvoalueiden leveys. Kaikki tätä arvoa pienemmät pintakalvoalueet poistuvat. Tästä voi olla apua mallin kaltevien pintojen yläpintakalvon tulostukseen käytettävän ajan ja materiaalin rajoittamisessa." #: fdmprinter.def.json msgctxt "bottom_skin_preshrink label" msgid "Bottom Skin Removal Width" -msgstr "" +msgstr "Alapintakalvon poistoleveys" #: fdmprinter.def.json msgctxt "bottom_skin_preshrink description" msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." -msgstr "" +msgstr "Suurin poistettavien alapintakalvoalueiden leveys. Kaikki tätä arvoa pienemmät pintakalvoalueet poistuvat. Tästä voi olla apua mallin kaltevien pintojen alapintakalvon tulostukseen käytettävän ajan ja materiaalin rajoittamisessa." #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1482,27 +1478,27 @@ msgstr "Pintakalvon laajennuksen etäisyys" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." -msgstr "" +msgstr "Etäisyys, jonka verran pintakalvot laajentuvat täyttöön. Suuremmat arvot saavat pintakalvon kiinnittymään paremmin täyttökuvioon ja viereisten kerrosten seinämät tarttumaan paremmin pintakalvoon. Pienemmät arvot vähentävät käytettävän materiaalin määrää." #: fdmprinter.def.json msgctxt "top_skin_expand_distance label" msgid "Top Skin Expand Distance" -msgstr "" +msgstr "Yläpintakalvon laajennuksen etäisyys" #: fdmprinter.def.json msgctxt "top_skin_expand_distance description" msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." -msgstr "" +msgstr "Etäisyys, jonka verran yläpintakalvot laajentuvat täyttöön. Suuremmat arvot saavat pintakalvon kiinnittymään paremmin täyttökuvioon ja yllä olevan kerroksen seinämät tarttumaan paremmin pintakalvoon. Pienemmät arvot vähentävät käytettävän materiaalin määrää." #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance label" msgid "Bottom Skin Expand Distance" -msgstr "" +msgstr "Alapintakalvon laajennuksen etäisyys" #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance description" msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." -msgstr "" +msgstr "Etäisyys, jonka verran alapintakalvot laajentuvat täyttöön. Suuremmat arvot saavat pintakalvon kiinnittymään paremmin täyttökuvioon ja tarttumaan paremmin alla olevan kerroksen seinämiin. Pienemmät arvot vähentävät käytettävän materiaalin määrää." #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -2822,7 +2818,7 @@ msgstr "Siksak" #: fdmprinter.def.json msgctxt "support_pattern option cross" msgid "Cross" -msgstr "" +msgstr "Risti" #: fdmprinter.def.json msgctxt "support_connect_zigzags label" @@ -2837,32 +2833,32 @@ msgstr "Yhdistä siksakit. Tämä lisää siksak-tukirakenteen lujuutta." #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" -msgstr "" +msgstr "Riko tuki lohkoihin" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." -msgstr "" +msgstr "Ohita jotkin tukilinjojen yhdistämiset, jotta tukirakenne on helpompi rikkoa. Tämä asetus soveltuu siksak-tukitäyttökuvioon." #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm label" msgid "Support Chunk Size" -msgstr "" +msgstr "Tukilohkon koko" #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm description" msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." -msgstr "" +msgstr "Jätä tukilinjojen välinen yhdistäminen pois joka N. millimetri, jotta tukirakenne on helpompi rikkoa." #: fdmprinter.def.json msgctxt "support_zag_skip_count label" msgid "Support Chunk Line Count" -msgstr "" +msgstr "Tukilohkolinjaluku" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" msgid "Skip one in every N connection lines to make the support structure easier to break away." -msgstr "" +msgstr "Ohita joka N. yhdistämislinja, jotta tukirakenne on helpompi rikkoa." #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3404,9 +3400,7 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance, multiple skirt lines will extend outwards from this distance." -msgstr "" -"Vaakasuora etäisyys helman ja tulosteen ensimmäisen kerroksen välillä.\n" -"Tämä on minimietäisyys; useampia helmalinjoja käytettäessä ne ulottuvat tämän etäisyyden ulkopuolelle." +msgstr "Vaakasuora etäisyys helman ja tulosteen ensimmäisen kerroksen välillä.\nTämä on minimietäisyys; useampia helmalinjoja käytettäessä ne ulottuvat tämän etäisyyden ulkopuolelle." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3451,22 +3445,22 @@ msgstr "Tulostaa reunuksen vain mallin ulkopuolelle. Tämä vähentää myöhemm #: fdmprinter.def.json msgctxt "z_offset_layer_0 label" msgid "Initial Layer Z Offset" -msgstr "" +msgstr "Alkukerroksen Z-siirtymä" #: fdmprinter.def.json msgctxt "z_offset_layer_0 description" msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." -msgstr "" +msgstr "Suulaketta siirretään ensimmäisen kerroksen normaalista korkeudesta tällä määrällä. Se voi olla positiivinen (nostettu) tai negatiivinen (laskettu). Jotkin tulostuslankatyypit tarttuvat alustaan paremmin, jos suulaketta nostetaan hieman." #: fdmprinter.def.json msgctxt "z_offset_taper_layers label" msgid "Z Offset Taper Layers" -msgstr "" +msgstr "Z-siirtymän kapenevat kerrokset" #: fdmprinter.def.json msgctxt "z_offset_taper_layers description" msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." -msgstr "" +msgstr "Kun tämä ei ole nolla, Z-siirtymä pienenee nollaan niin monen kerroksen matkalla. Kun arvo on 0, Z-siirtymä pysyy vakiona kaikille tulostuksen kerroksille." #: fdmprinter.def.json msgctxt "raft_margin label" @@ -3481,12 +3475,12 @@ msgstr "Jos pohjaristikko on otettu käyttöön, tämä on ylimääräinen risti #: fdmprinter.def.json msgctxt "raft_smoothing label" msgid "Raft Smoothing" -msgstr "" +msgstr "Pohjaristikon tasoitus" #: fdmprinter.def.json msgctxt "raft_smoothing description" msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." -msgstr "" +msgstr "Tällä asetuksella säädetään, kuinka paljon pohjaristikon ulkolinjan sisäkulmia pyöristetään. Sisäpuoliset kulmat pyöristetään puoliympyräksi, jonka säde on yhtä suuri kuin tässä annettu arvo. Asetuksella myös poistetaan pohjaristikon ulkolinjan reiät, jotka ovat pienempiä kuin tällainen ympyrä." #: fdmprinter.def.json msgctxt "raft_airgap label" @@ -4166,12 +4160,12 @@ msgstr "Vähennä Z-sauman näkyvyyttä tasoittamalla kierukoidut ääriviivat ( #: fdmprinter.def.json msgctxt "relative_extrusion label" msgid "Relative Extrusion" -msgstr "" +msgstr "Suhteellinen pursotus" #: fdmprinter.def.json msgctxt "relative_extrusion description" msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." -msgstr "" +msgstr "Käytä suhteellista pursotusta absoluuttisen pursotuksen sijaan. Suhteellisten E-askelten käyttö helpottaa Gcoden jälkikäsittelyä. Kaikki tulostimet eivät kuitenkaan tue sitä, ja se saattaa aiheuttaa hyvin vähäisiä poikkeamia materiaalin määrässä absoluuttisiin E-askeliin verrattuna. Tästä asetuksesta riippumatta pursotustila on aina absoluuttinen, ennen kuin mitään Gcode-komentosarjaa tuotetaan." #: fdmprinter.def.json msgctxt "experimental label" @@ -4186,12 +4180,12 @@ msgstr "kokeellinen!" #: fdmprinter.def.json msgctxt "optimize_wall_printing_order label" msgid "Optimize Wall Printing Order" -msgstr "" +msgstr "Optimoi seinämien tulostusjärjestys" #: fdmprinter.def.json msgctxt "optimize_wall_printing_order description" msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "" +msgstr "Optimoi seinämien tulostusjärjestys takaisinvetojen ja kuljetun etäisyyden vähentämiseksi. Useimmat osat hyötyvät tämän asetuksen käytöstä, mutta joissakin saattaa kestää kauemmin, joten vertaa tulostusajan arvioita optimointia käytettäessä ja ilman sitä." #: fdmprinter.def.json msgctxt "draft_shield_enabled label" @@ -4316,22 +4310,22 @@ msgstr "Muuttaa ylä-/alakerrosten tulostussuuntaa. Normaalisti ne tulostetaan v #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" -msgstr "" +msgstr "Risti 3D:n taskujen koko" #: fdmprinter.def.json msgctxt "cross_infill_pocket_size description" msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." -msgstr "" +msgstr "Taskujen koko nelisuuntaisissa risteyksissä risti 3D -kuviossa korkeuksissa, joissa kuvio koskettaa itseään." #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly label" msgid "Alternate Cross 3D Pockets" -msgstr "" +msgstr "Vuoroittaiset risti 3D -taskut" #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly description" msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." -msgstr "" +msgstr "Käytä taskuja vain puolessa nelisuuntaisista risteyksistä risti 3D -kuviossa ja vuorottele taskujen sijainnit sellaisten korkeuksien välillä, joissa kuvio koskettaa itseään." #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" @@ -4633,9 +4627,7 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "" -"Puolella nopeudella pursotetun nousuliikkeen etäisyys.\n" -"Se voi parantaa tarttuvuutta edellisiin kerroksiin kuumentamatta materiaalia liikaa kyseisissä kerroksissa. Koskee vain rautalankamallin tulostusta." +msgstr "Puolella nopeudella pursotetun nousuliikkeen etäisyys.\nSe voi parantaa tarttuvuutta edellisiin kerroksiin kuumentamatta materiaalia liikaa kyseisissä kerroksissa. Koskee vain rautalankamallin tulostusta." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -4755,12 +4747,12 @@ msgstr "Yläpinnan läpikäynti yhden ylimääräisen kerran ilman materiaalin p #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" msgid "Iron Only Highest Layer" -msgstr "" +msgstr "Silitä vain korkein kerros" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer description" msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." -msgstr "" +msgstr "Suorita silitys vain verkon viimeisessä kerroksessa. Tämä säästää aikaa, jos alemmat kerrokset eivät edellytä sileää pintaviimeistelyä." #: fdmprinter.def.json msgctxt "ironing_pattern label" @@ -5124,4 +5116,4 @@ msgstr "Mallissa käytettävä muunnosmatriisi, kun malli ladataan tiedostosta." #~ msgctxt "multiple_mesh_overlap label" #~ msgid "Dual Extrusion Overlap" -#~ msgstr "Kaksoispursotuksen limitys" +#~ msgstr "Kaksoispursotuksen limitys" \ No newline at end of file diff --git a/resources/i18n/fr_FR/cura.po b/resources/i18n/fr_FR/cura.po index 21dd2e9882..ffdff5e74f 100644 --- a/resources/i18n/fr_FR/cura.po +++ b/resources/i18n/fr_FR/cura.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" +"Project-Id-Version: Cura 2.7\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-11 14:30+0200\n" +"PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -24,7 +24,7 @@ msgstr "Paramètres de la machine" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" msgid "X-Ray view" -msgstr "" +msgstr "Visualisation par rayons X" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -39,17 +39,17 @@ msgstr "Fichier GCode" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "Imprimer avec Doodle3D WiFi-Box" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 msgctxt "@properties:tooltip" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "Imprimer avec Doodle3D WiFi-Box" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 msgctxt "@info:status" msgid "Connecting to Doodle3D Connect" -msgstr "" +msgstr "Connexion avec Doodle3D Connecter..." #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 @@ -73,32 +73,32 @@ msgstr "Annuler" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 msgctxt "@info:status" msgid "Sending data to Doodle3D Connect" -msgstr "" +msgstr "Envoi de données vers Doodle3D Connecter..." #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 msgctxt "@info:status" msgid "Unable to send data to Doodle3D Connect. Is another job still active?" -msgstr "" +msgstr "Impossible d'envoyer les données à Doodle3D Connect. Une autre tâche est-elle toujours active ?" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 msgctxt "@info:status" msgid "Storing data on Doodle3D Connect" -msgstr "" +msgstr "Enregistrement de données dans Doodle3D Connecter..." #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 msgctxt "@info:status" msgid "File sent to Doodle3D Connect" -msgstr "" +msgstr "Fichier envoyé vers Doodle3D Connecter" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@action:button" msgid "Open Connect.." -msgstr "" +msgstr "Ouvrir Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" -msgstr "" +msgstr "Ouvrir l'interface web Doodle3D Connecter" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -143,7 +143,7 @@ msgstr "Impossible de démarrer une nouvelle tâche car l'imprimante est occupé #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 msgctxt "@info:title" msgid "Print Details" -msgstr "" +msgstr "Imprimer les détails" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" @@ -153,7 +153,7 @@ msgstr "L'imprimante ne prend pas en charge l'impression par USB car elle utilis #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:title" msgid "USB Printing" -msgstr "" +msgstr "Impression par USB" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" @@ -168,7 +168,7 @@ msgstr "Impossible de démarrer une nouvelle tâche car l'imprimante ne prend pa #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 msgctxt "@info:title" msgid "Warning" -msgstr "" +msgstr "Avertissement" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" @@ -184,7 +184,7 @@ msgstr "Impossible de trouver le firmware requis pour l'imprimante sur %s." #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 msgctxt "@info:title" msgid "Printer Firmware" -msgstr "" +msgstr "Firmware de l'imprimante" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -201,25 +201,25 @@ msgstr "Enregistrer sur un lecteur amovible {0}" #, python-brace-format msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "" +msgstr "Enregistrement sur le lecteur amovible {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 msgctxt "@info:title" msgid "Saving" -msgstr "" +msgstr "Enregistrement..." #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "" +msgstr "Impossible d'enregistrer {0} : {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format msgctxt "@info:status Don't translate the tag {device}!" msgid "Could not find a file name when trying to write to {device}." -msgstr "" +msgstr "Impossible de trouver un nom de fichier lors d'une tentative d'écriture sur {device}." #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 @@ -236,7 +236,7 @@ msgstr "Impossible d'enregistrer sur le lecteur {0}: {1}" #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 msgctxt "@info:title" msgid "Error" -msgstr "" +msgstr "Erreur" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 #, python-brace-format @@ -247,7 +247,7 @@ msgstr "Enregistré sur le lecteur amovible {0} sous {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 msgctxt "@info:title" msgid "File Saved" -msgstr "" +msgstr "Fichier enregistré" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 msgctxt "@action:button" @@ -269,7 +269,7 @@ msgstr "Lecteur {0} éjecté. Vous pouvez maintenant le retirer en tout sécurit #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 msgctxt "@info:title" msgid "Safely Remove Hardware" -msgstr "" +msgstr "Retirez le lecteur en toute sécurité" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format @@ -304,7 +304,7 @@ msgstr "Accès à l'imprimante demandé. Veuillez approuver la demande sur l'imp #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 msgctxt "@info:title" msgid "Connection status" -msgstr "" +msgstr "Statut de la connexion" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 @@ -319,7 +319,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 msgctxt "@info:title" msgid "Connection Status" -msgstr "" +msgstr "Statut de la connexion" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 @@ -417,7 +417,7 @@ msgstr "Impossible de démarrer une nouvelle tâche d'impression car l'imprimant #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 msgctxt "@info:title" msgid "Printer Status" -msgstr "" +msgstr "Statut de l'imprimante" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 @@ -488,7 +488,7 @@ msgstr "Envoi des données à l'imprimante" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 msgctxt "@info:title" msgid "Sending Data" -msgstr "" +msgstr "Envoi des données..." #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 @@ -547,73 +547,73 @@ msgstr "Connecter via le réseau" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "L'imprimante n'est pas configurée pour héberger un groupe d'imprimantes connectées Ultimaker 3." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." -msgstr "" +msgstr "L'imprimante n'est pas configurée pour héberger un groupe de {count} imprimantes connectées Ultimaker 3." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." -msgstr "" +msgstr "{printer_name} a terminé d'imprimer '{job_name}'. Veuillez enlever l'impression et confirmer avoir débarrassé le plateau." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." -msgstr "" +msgstr "{printer_name} est réservé pour imprimer '{job_name}'. Veuillez modifier la configuration de l'imprimante pour qu'elle corresponde à la tâche et commence l'impression." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "" +msgstr "Envoi de nouvelles tâches (temporairement) bloqué, envoi de la tâche d'impression précédente en cours." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "Impossible d'envoyer une nouvelle tâche d'impression : cette imprimante 3D n'est pas (encore) configurée pour héberger un groupe d'imprimantes connectées Ultimaker 3." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" -msgstr "" +msgstr "Envoi de {file_name} vers le groupe {cluster_name}..." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." -msgstr "" +msgstr "{file_name} envoyé vers le groupe {cluster_name}." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" -msgstr "" +msgstr "Afficher les tâches d'impression" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." -msgstr "" +msgstr "Ouvre l'interface d'impression des tâches dans votre navigateur." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." -msgstr "" +msgstr "Impossible d'envoyer la tâche d'impression vers le groupe {cluster_name}." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." -msgstr "" +msgstr "Pour s'assurer que votre {machine_name} est pourvue des dernières fonctionnalités, il est recommandé de mettre régulièrement à jour le firmware. Cela peut se faire sur la {machine_name} (lorsque connectée au réseau) ou via USB." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" -msgstr "" +msgstr "Nouveau firmware %s disponible" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 @@ -624,7 +624,7 @@ msgstr "Télécharger" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 msgctxt "@info" msgid "Could not access update information." -msgstr "" +msgstr "Impossible d'accéder aux informations de mise à jour." #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" @@ -663,7 +663,7 @@ msgstr "Cura collecte des statistiques anonymes sur le découpage. Vous pouvez d #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" msgid "Collecting Data" -msgstr "" +msgstr "Collecte des données..." #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" @@ -684,7 +684,7 @@ msgstr "Fichier GCode" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" msgid "Layer view" -msgstr "" +msgstr "Vue en couches" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" @@ -694,7 +694,7 @@ msgstr "Cura n'affiche pas les couches avec précision lorsque l'impression fila #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 msgctxt "@info:title" msgid "Layer View" -msgstr "" +msgstr "Vue en couches" #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -724,7 +724,7 @@ msgstr "Image GIF" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." -msgstr "" +msgstr "Impossible de découper le matériau actuel, car celui-ci est incompatible avec la machine ou la configuration sélectionnée." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 @@ -732,7 +732,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 msgctxt "@info:title" msgid "Unable to slice" -msgstr "" +msgstr "Impossible de découper" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format @@ -759,7 +759,7 @@ msgstr "Traitement des couches" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 msgctxt "@info:title" msgid "Information" -msgstr "" +msgstr "Informations" #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" @@ -798,18 +798,18 @@ msgstr "Buse" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 msgctxt "@menuitem" msgid "Browse plugins" -msgstr "" +msgstr "Parcourir les plug-ins" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" -msgstr "" +msgstr "Échec de l'obtention de l'identifiant du plug-in au départ de {0}" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 msgctxt "@info:tile" msgid "Warning" -msgstr "" +msgstr "Avertissement" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" @@ -819,7 +819,7 @@ msgstr "Navigateur de plug-ins" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" msgid "Solid view" -msgstr "" +msgstr "Vue solide" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -835,7 +835,7 @@ msgstr "Analyse du G-Code" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 msgctxt "@info:title" msgid "G-code Details" -msgstr "" +msgstr "Détails G-Code" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" @@ -917,7 +917,7 @@ msgstr "Support" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Skirt" -msgstr "" +msgstr "Jupe" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" @@ -958,7 +958,7 @@ msgstr "Recherche d'un nouvel emplacement pour les objets" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 msgctxt "@info:title" msgid "Finding Location" -msgstr "" +msgstr "Recherche d'emplacement..." #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 @@ -969,7 +969,7 @@ msgstr "Impossible de trouver un emplacement dans le volume d'impression pour to #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 msgctxt "@info:title" msgid "Can't Find Location" -msgstr "" +msgstr "Impossible de trouver un emplacement" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 @@ -982,7 +982,7 @@ msgstr "Le fichier existe déjà" #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "" +msgstr "Le fichier {0} existe déjà. Êtes-vous sûr de vouloir le remplacer ?" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" @@ -1003,7 +1003,7 @@ msgstr "Le matériau sélectionné est incompatible avec la machine ou la config #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" -msgstr "" +msgstr "Matériau incompatible" #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." @@ -1024,24 +1024,24 @@ msgstr "Annuler la modification du diamètre du matériau." #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "" +msgstr "Échec de l'exportation du profil vers {0} : {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "" +msgstr "Échec de l'exportation du profil vers {0} : le plug-in du générateur a rapporté une erreur." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "" +msgstr "Profil exporté vers {0}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 msgctxt "@info:title" msgid "Export Details" -msgstr "" +msgstr "Exporter les détails" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 @@ -1050,7 +1050,7 @@ msgstr "" #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "" +msgstr "Échec de l'importation du profil depuis le fichier {0} : {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 @@ -1089,7 +1089,7 @@ msgstr "La hauteur du volume d'impression a été réduite en raison de la valeu #: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 msgctxt "@info:title" msgid "Build Volume" -msgstr "" +msgstr "Volume d'impression" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" @@ -1100,7 +1100,7 @@ msgstr "Multiplication et placement d'objets" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:title" msgid "Placing Object" -msgstr "" +msgstr "Placement de l'objet..." #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" @@ -1113,10 +1113,7 @@ msgid "" "

A fatal exception has occurred that we could not recover from!

\n" "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" " " -msgstr "" -"

Une erreur fatale que nous ne pouvons résoudre s'est produite !

\n" -"

Veuillez utiliser les informations ci-dessous pour envoyer un rapport d'erreur à http://github.com/Ultimaker/Cura/issues

\n" -" " +msgstr "

Une erreur fatale que nous ne pouvons résoudre s'est produite !

\n

Veuillez utiliser les informations ci-dessous pour envoyer un rapport d'erreur à http://github.com/Ultimaker/Cura/issues

\n " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 msgctxt "@action:button" @@ -1418,10 +1415,7 @@ msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "" -"Pour imprimer directement sur votre imprimante sur le réseau, assurez-vous que votre imprimante est connectée au réseau via un câble réseau ou en connectant votre imprimante à votre réseau Wi-Fi. Si vous ne connectez pas Cura avec votre imprimante, vous pouvez utiliser une clé USB pour transférer les fichiers g-code sur votre imprimante.\n" -"\n" -"Sélectionnez votre imprimante dans la liste ci-dessous :" +msgstr "Pour imprimer directement sur votre imprimante sur le réseau, assurez-vous que votre imprimante est connectée au réseau via un câble réseau ou en connectant votre imprimante à votre réseau Wi-Fi. Si vous ne connectez pas Cura avec votre imprimante, vous pouvez utiliser une clé USB pour transférer les fichiers g-code sur votre imprimante.\n\nSélectionnez votre imprimante dans la liste ci-dessous :" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 @@ -1547,17 +1541,17 @@ msgstr "Activer la configuration" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 msgctxt "@label" msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "Cette imprimante n'est pas configurée pour héberger un groupe d'imprimantes connectées Ultimaker 3." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 msgctxt "@label" msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" -msgstr "" +msgstr "L'imprimante n'est pas configurée pour héberger un groupe de %1 imprimantes connectées Ultimaker 3." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" -msgstr "" +msgstr "Imprimer sur le réseau" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 msgctxt "@action:button" @@ -1567,98 +1561,98 @@ msgstr "Imprimer" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "%1 n'est pas configurée pour héberger un groupe d'imprimantes connectées Ultimaker 3." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 msgctxt "@label:status" msgid "Printing" -msgstr "" +msgstr "Impression..." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 msgctxt "@label:status" msgid "Reserved" -msgstr "" +msgstr "Réservée" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 msgctxt "@label:status" msgid "Finished" -msgstr "" +msgstr "Terminé" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 msgctxt "@label:status" msgid "Preparing" -msgstr "" +msgstr "Préparation..." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 msgctxt "@label:status" msgid "Available" -msgstr "" +msgstr "Disponible" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 msgctxt "@label" msgid "Completed on: " -msgstr "" +msgstr "Finalisé sur : " #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 msgctxt "@label" msgid "Clear build plate" -msgstr "" +msgstr "Enlever les objets du plateau" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 msgctxt "@label" msgid "Preparing to print" -msgstr "" +msgstr "Préparation de l'impression..." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 msgctxt "@label" msgid "Not accepting print jobs" -msgstr "" +msgstr "Non acceptation des tâches d'impression" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." -msgstr "" +msgstr "Ouvre la page des tâches d'impression avec votre navigateur web." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 msgctxt "@action:button" msgid "View print jobs" -msgstr "" +msgstr "Afficher les tâches d'impression" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 msgctxt "@label" msgid "PRINTER GROUP" -msgstr "" +msgstr "GROUPE D'IMPRIMANTES" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 msgctxt "@title" msgid "Print jobs" -msgstr "" +msgstr "Imprimer les tâches" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 msgctxt "@label" msgid "Printing" -msgstr "" +msgstr "Impression..." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 msgctxt "@label" msgid "Queued" -msgstr "" +msgstr "Mis en file d'attente" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 msgctxt "@label" msgid "Waiting for configuration change" -msgstr "" +msgstr "En attente de modification de configuration" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 msgctxt "@label:title" msgid "Printers" -msgstr "" +msgstr "Imprimantes" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 msgctxt "@action:button" msgid "View printers" -msgstr "" +msgstr "Afficher les imprimantes" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" @@ -2049,7 +2043,7 @@ msgstr "Installé" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" -msgstr "" +msgstr "Plug-in d'accord de licence" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" @@ -2057,17 +2051,17 @@ msgid "" " plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "" +msgstr " le plug-in contient une licence.\nVous devez approuver cette licence pour installer ce plug-in.\nAcceptez-vous les clauses ci-dessous ?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" msgid "Accept" -msgstr "" +msgstr "Accepter" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 msgctxt "@action:button" msgid "Decline" -msgstr "" +msgstr "Refuser" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -2322,9 +2316,7 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "" -"Vous avez personnalisé certains paramètres du profil.\n" -"Souhaitez-vous conserver ces changements, ou les annuler ?" +msgstr "Vous avez personnalisé certains paramètres du profil.\nSouhaitez-vous conserver ces changements, ou les annuler ?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -2908,12 +2900,12 @@ msgstr "Importer un matériau" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "" +msgstr "Impossible d'importer le matériau %1 : %2" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "" +msgstr "Matériau %1 importé avec succès" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2924,12 +2916,12 @@ msgstr "Exporter un matériau" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "" +msgstr "Échec de l'exportation de matériau vers %1 : %2" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "" +msgstr "Matériau exporté avec succès vers %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 @@ -2962,9 +2954,7 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "" -"Cura a été développé par Ultimaker B.V. en coopération avec la communauté Ultimaker.\n" -"Cura est fier d'utiliser les projets open source suivants :" +msgstr "Cura a été développé par Ultimaker B.V. en coopération avec la communauté Ultimaker.\nCura est fier d'utiliser les projets open source suivants :" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -3067,10 +3057,7 @@ msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "" -"Certaines valeurs de paramètre / forçage sont différentes des valeurs enregistrées dans le profil. \n" -"\n" -"Cliquez pour ouvrir le gestionnaire de profils." +msgstr "Certaines valeurs de paramètre / forçage sont différentes des valeurs enregistrées dans le profil. \n\nCliquez pour ouvrir le gestionnaire de profils." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" @@ -3108,10 +3095,7 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "" -"Certains paramètres masqués utilisent des valeurs différentes de leur valeur normalement calculée.\n" -"\n" -"Cliquez pour rendre ces paramètres visibles." +msgstr "Certains paramètres masqués utilisent des valeurs différentes de leur valeur normalement calculée.\n\nCliquez pour rendre ces paramètres visibles." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 msgctxt "@label Header for list of settings." @@ -3139,10 +3123,7 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "" -"Ce paramètre possède une valeur qui est différente du profil.\n" -"\n" -"Cliquez pour restaurer la valeur du profil." +msgstr "Ce paramètre possède une valeur qui est différente du profil.\n\nCliquez pour restaurer la valeur du profil." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 msgctxt "@label" @@ -3150,10 +3131,7 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "" -"Ce paramètre est normalement calculé mais il possède actuellement une valeur absolue définie.\n" -"\n" -"Cliquez pour restaurer la valeur calculée." +msgstr "Ce paramètre est normalement calculé mais il possède actuellement une valeur absolue définie.\n\nCliquez pour restaurer la valeur calculée." #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" @@ -3165,9 +3143,7 @@ msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "" -"Configuration de l'impression désactivée\n" -"Les fichiers G-Code ne peuvent pas être modifiés" +msgstr "Configuration de l'impression désactivée\nLes fichiers G-Code ne peuvent pas être modifiés" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 msgctxt "@label" @@ -3177,22 +3153,22 @@ msgstr "00 h 00 min" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 msgctxt "@tooltip" msgid "Time information" -msgstr "" +msgstr "Information horaire" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 msgctxt "@description" msgid "Print time" -msgstr "" +msgstr "Imprimer l'heure" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 msgctxt "@label" msgid "%1m / ~ %2g / ~ %4 %3" -msgstr "" +msgstr "%1m / ~ %2g / ~ %4 %3" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 msgctxt "@label" msgid "%1m / ~ %2g" -msgstr "" +msgstr "%1m / ~ %2g" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" @@ -3252,12 +3228,12 @@ msgstr "Aucune imprimante n'est connectée" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" msgid "Extruder" -msgstr "" +msgstr "Extrudeuse" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." -msgstr "" +msgstr "Température cible de l'extrémité chauffante. L'extrémité chauffante sera chauffée ou refroidie pour tendre vers cette température. Si la valeur est 0, le chauffage de l'extrémité chauffante sera coupé." #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" @@ -3726,27 +3702,27 @@ msgstr "Préparer" #: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" msgid "Monitor" -msgstr "" +msgstr "Surveiller" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 msgctxt "@label" msgid "Layer Height" -msgstr "" +msgstr "Hauteur de la couche" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 msgctxt "@label" msgid "Print Speed" -msgstr "" +msgstr "Vitesse d’impression" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 msgctxt "@label" msgid "Slower" -msgstr "" +msgstr "Ralentir" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 msgctxt "@label" msgid "Faster" -msgstr "" +msgstr "Accélérer" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" @@ -3761,7 +3737,7 @@ msgstr "Un remplissage graduel augmentera la quantité de remplissage vers le ha #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 msgctxt "@label" msgid "Enable gradual" -msgstr "" +msgstr "Permettre le remplissage graduel" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" @@ -3838,7 +3814,7 @@ msgstr "Matériau" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 msgctxt "@label" msgid "Check material compatibility" -msgstr "" +msgstr "Vérifier la compatibilité du matériau" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" @@ -3898,12 +3874,12 @@ msgstr "Mode God" #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "description" msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "" +msgstr "Accepte les G-Code et les envoie par Wi-Fi à une box WiFi Doodle3D." #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "name" msgid "Doodle3D WiFi-Box" -msgstr "" +msgstr "Box WiFi Doodle3D" #: ChangeLogPlugin/plugin.json msgctxt "description" @@ -3958,17 +3934,17 @@ msgstr "Connexion au réseau UM3" #: CuraPrintClusterUpload/plugin.json msgctxt "name" msgid "UM3 Network Connection (Cluster)" -msgstr "" +msgstr "Connexion au réseau UM3 (cluster)" #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." -msgstr "" +msgstr "Vérifie les mises à jour du firmware." #: FirmwareUpdateChecker/plugin.json msgctxt "name" msgid "Firmware Update Checker" -msgstr "" +msgstr "Vérificateur des mises à jour du firmware" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" @@ -4063,12 +4039,12 @@ msgstr "Mise à niveau de 2.5 vers 2.6" #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -msgstr "" +msgstr "Met à niveau les configurations, de Cura 2.7 vers Cura 3.0." #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" -msgstr "" +msgstr "Mise à niveau de version, de 2.7 vers 3.0" #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" @@ -4972,4 +4948,4 @@ msgstr "Lecteur de profil Cura" #~ msgctxt "@label:" #~ msgid "Print Again" -#~ msgstr "Imprimer à nouveau" +#~ msgstr "Imprimer à nouveau" \ No newline at end of file diff --git a/resources/i18n/fr_FR/fdmprinter.def.json.po b/resources/i18n/fr_FR/fdmprinter.def.json.po index 13df6ba204..ebad6779de 100644 --- a/resources/i18n/fr_FR/fdmprinter.def.json.po +++ b/resources/i18n/fr_FR/fdmprinter.def.json.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" +"Project-Id-Version: Cura 2.7\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-11 14:31+0200\n" +"PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -56,9 +56,7 @@ msgctxt "machine_start_gcode description" msgid "" "Gcode commands to be executed at the very start - separated by \n" "." -msgstr "" -"Commandes Gcode à exécuter au tout début, séparées par \n" -"." +msgstr "Commandes Gcode à exécuter au tout début, séparées par \n." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -70,9 +68,7 @@ msgctxt "machine_end_gcode description" msgid "" "Gcode commands to be executed at the very end - separated by \n" "." -msgstr "" -"Commandes Gcode à exécuter à la toute fin, séparées par \n" -"." +msgstr "Commandes Gcode à exécuter à la toute fin, séparées par \n." #: fdmprinter.def.json msgctxt "material_guid label" @@ -1122,7 +1118,7 @@ msgstr "Aléatoire" #: fdmprinter.def.json msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" -msgstr "" +msgstr "Angle le plus aigu" #: fdmprinter.def.json msgctxt "z_seam_x label" @@ -1147,32 +1143,32 @@ msgstr "Coordonnée Y de la position près de laquelle démarrer l'impression de #: fdmprinter.def.json msgctxt "z_seam_corner label" msgid "Seam Corner Preference" -msgstr "" +msgstr "Préférence de jointure d'angle" #: fdmprinter.def.json msgctxt "z_seam_corner description" msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "" +msgstr "Vérifie si les angles du contour du modèle influencent l'emplacement de la jointure. « Aucune » signifie que les angles n'ont aucune influence sur l'emplacement de la jointure. « Masquer jointure » génère généralement le positionnement de la jointure sur un angle intérieur. « Exposer jointure » génère généralement le positionnement de la jointure sur un angle extérieur. « Masquer ou exposer jointure » génère généralement le positionnement de la jointure sur un angle intérieur ou extérieur." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" msgid "None" -msgstr "" +msgstr "Aucun" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_inner" msgid "Hide Seam" -msgstr "" +msgstr "Masquer jointure" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_outer" msgid "Expose Seam" -msgstr "" +msgstr "Exposer jointure" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" -msgstr "" +msgstr "Masquer ou exposer jointure" #: fdmprinter.def.json msgctxt "z_seam_relative label" @@ -1252,7 +1248,7 @@ msgstr "Motif de remplissage" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "Le motif du matériau de remplissage de l'impression. La ligne et le remplissage en zigzag changent de sens à chaque alternance de couche, réduisant ainsi les coûts matériels. Les motifs en grille, en triangle, octaédriques, quart cubiques et concentriques sont entièrement imprimés sur chaque couche. Le remplissage cubique, quart cubique et octaédrique change à chaque couche afin d'offrir une répartition plus égale de la solidité dans chaque direction." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1282,12 +1278,12 @@ msgstr "Subdivision cubique" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" msgid "Octet" -msgstr "" +msgstr "Octaédrique" #: fdmprinter.def.json msgctxt "infill_pattern option quarter_cubic" msgid "Quarter Cubic" -msgstr "" +msgstr "Quart cubique" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1307,22 +1303,22 @@ msgstr "Zig Zag" #: fdmprinter.def.json msgctxt "infill_pattern option cross" msgid "Cross" -msgstr "" +msgstr "Entrecroisé" #: fdmprinter.def.json msgctxt "infill_pattern option cross_3d" msgid "Cross 3D" -msgstr "" +msgstr "Entrecroisé 3D" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" msgid "Connect Infill Lines" -msgstr "" +msgstr "Relier les lignes de remplissage" #: fdmprinter.def.json msgctxt "zig_zaggify_infill description" msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." -msgstr "" +msgstr "Relie les extrémités où le motif de remplissage touche la paroi interne, à l'aide de lignes épousant la forme de la paroi interne. Activer ce paramètre peut faire mieux coller le remplissage aux parois, et réduit les effets du remplissage sur la qualité des surfaces verticales. Désactiver ce paramètre diminue la quantité de matière utilisée." #: fdmprinter.def.json msgctxt "infill_angles label" @@ -1447,32 +1443,32 @@ msgstr "Ne pas générer de zones de remplissage plus petites que cela (utiliser #: fdmprinter.def.json msgctxt "skin_preshrink label" msgid "Skin Removal Width" -msgstr "" +msgstr "Largeur de retrait de la couche extérieure" #: fdmprinter.def.json msgctxt "skin_preshrink description" msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." -msgstr "" +msgstr "La plus grande largeur des zones de la couche extérieure à faire disparaître. Toute zone de la couche extérieure plus étroite que cette valeur disparaîtra. Ceci peut aider à limiter le temps et la quantité de matière utilisés pour imprimer la couche extérieure supérieure/inférieure sur les surfaces obliques du modèle." #: fdmprinter.def.json msgctxt "top_skin_preshrink label" msgid "Top Skin Removal Width" -msgstr "" +msgstr "Largeur de retrait de la couche extérieure supérieure" #: fdmprinter.def.json msgctxt "top_skin_preshrink description" msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." -msgstr "" +msgstr "La plus grande largeur des zones de la couche extérieure supérieure à faire disparaître. Toute zone de la couche extérieure plus étroite que cette valeur disparaîtra. Ceci peut aider à limiter le temps et la quantité de matière utilisés pour imprimer la couche extérieure supérieure sur les surfaces obliques du modèle." #: fdmprinter.def.json msgctxt "bottom_skin_preshrink label" msgid "Bottom Skin Removal Width" -msgstr "" +msgstr "Largeur de retrait de la couche extérieure inférieure" #: fdmprinter.def.json msgctxt "bottom_skin_preshrink description" msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." -msgstr "" +msgstr "La plus grande largeur des zones de la couche extérieure inférieure à faire disparaître. Toute zone de la couche extérieure plus étroite que cette valeur disparaîtra. Ceci peut aider à limiter le temps et la quantité de matière utilisés pour imprimer la couche extérieure inférieure sur les surfaces obliques du modèle." #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1482,27 +1478,27 @@ msgstr "Distance d'expansion de la couche extérieure" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." -msgstr "" +msgstr "La distance à laquelle les couches extérieures s'étendent à l'intérieur du remplissage. Des valeurs élevées lient mieux la couche extérieure au motif de remplissage et font mieux adhérer à cette couche les parois des couches voisines. Des valeurs faibles économisent la quantité de matériau utilisé." #: fdmprinter.def.json msgctxt "top_skin_expand_distance label" msgid "Top Skin Expand Distance" -msgstr "" +msgstr "Distance d'expansion de la couche extérieure supérieure" #: fdmprinter.def.json msgctxt "top_skin_expand_distance description" msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." -msgstr "" +msgstr "La distance à laquelle les couches extérieures supérieures s'étendent à l'intérieur du remplissage. Des valeurs élevées lient mieux la couche extérieure au motif de remplissage et font mieux adhérer à cette couche les parois de la couche supérieure. Des valeurs faibles économisent la quantité de matériau utilisé." #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance label" msgid "Bottom Skin Expand Distance" -msgstr "" +msgstr "Distance d'expansion de la couche extérieure inférieure" #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance description" msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." -msgstr "" +msgstr "La distance à laquelle les couches extérieures inférieures s'étendent à l'intérieur du remplissage. Des valeurs élevées lient mieux la couche extérieure au motif de remplissage et font mieux adhérer à cette couche les parois de la couche inférieure. Des valeurs faibles économisent la quantité de matériau utilisé." #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -2822,7 +2818,7 @@ msgstr "Zig Zag" #: fdmprinter.def.json msgctxt "support_pattern option cross" msgid "Cross" -msgstr "" +msgstr "Entrecroisé" #: fdmprinter.def.json msgctxt "support_connect_zigzags label" @@ -2837,32 +2833,32 @@ msgstr "Relie les zigzags. Cela augmente la solidité des supports en zigzag." #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" -msgstr "" +msgstr "Démantèlement du support en morceaux" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." -msgstr "" +msgstr "Ignorer certaines connexions de ligne du support pour rendre la structure de support plus facile à casser. Ce paramètre s'applique au motif de remplissage du support en zigzag." #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm label" msgid "Support Chunk Size" -msgstr "" +msgstr "Taille de morceaux du support" #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm description" msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." -msgstr "" +msgstr "Ignorer une connexion entre lignes du support tous les N millimètres, pour rendre la structure de support plus facile à casser." #: fdmprinter.def.json msgctxt "support_zag_skip_count label" msgid "Support Chunk Line Count" -msgstr "" +msgstr "Comptage des lignes de morceaux du support" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" msgid "Skip one in every N connection lines to make the support structure easier to break away." -msgstr "" +msgstr "Ignorer une ligne de connexion sur N pour rendre la structure de support plus facile à casser." #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3404,9 +3400,7 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance, multiple skirt lines will extend outwards from this distance." -msgstr "" -"La distance horizontale entre la jupe et la première couche de l’impression.\n" -"Il s’agit de la distance minimale séparant la jupe de l’objet. Si la jupe a d’autres lignes, celles-ci s’étendront vers l’extérieur." +msgstr "La distance horizontale entre la jupe et la première couche de l’impression.\nIl s’agit de la distance minimale séparant la jupe de l’objet. Si la jupe a d’autres lignes, celles-ci s’étendront vers l’extérieur." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3451,22 +3445,22 @@ msgstr "Imprimer uniquement la bordure sur l'extérieur du modèle. Cela réduit #: fdmprinter.def.json msgctxt "z_offset_layer_0 label" msgid "Initial Layer Z Offset" -msgstr "" +msgstr "Décalage en Z de la couche initiale" #: fdmprinter.def.json msgctxt "z_offset_layer_0 description" msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." -msgstr "" +msgstr "L'extrudeuse est décalée de cette valeur à partir de la hauteur normale de la première couche. Elle peut être positive (relevée) ou négative (abaissée). Certains types de filament adhèrent mieux au plateau si l'extrudeuse est légèrement relevée." #: fdmprinter.def.json msgctxt "z_offset_taper_layers label" msgid "Z Offset Taper Layers" -msgstr "" +msgstr "Couches biseautées de décalage en Z" #: fdmprinter.def.json msgctxt "z_offset_taper_layers description" msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." -msgstr "" +msgstr "Si non nul, le décalage en Z est ramené à 0 sur un grand nombre de couches. Une valeur égale à 0 signifie que le décalage en Z reste constant pour toutes les couches de l'impression." #: fdmprinter.def.json msgctxt "raft_margin label" @@ -3481,12 +3475,12 @@ msgstr "Si vous avez appliqué un radeau, alors il s’agit de l’espace de rad #: fdmprinter.def.json msgctxt "raft_smoothing label" msgid "Raft Smoothing" -msgstr "" +msgstr "Lissage de radeau" #: fdmprinter.def.json msgctxt "raft_smoothing description" msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." -msgstr "" +msgstr "Ce paramètre définit combien d'angles intérieurs sont arrondis dans le contour de radeau. Les angles internes sont arrondis en un demi-cercle avec un rayon égal à la valeur indiquée ici. Ce paramètre élimine également les cavités dans le contour de radeau qui sont d'une taille inférieure à ce cercle." #: fdmprinter.def.json msgctxt "raft_airgap label" @@ -4166,12 +4160,12 @@ msgstr "Lisser les contours spiralisés pour réduire la visibilité de la joint #: fdmprinter.def.json msgctxt "relative_extrusion label" msgid "Relative Extrusion" -msgstr "" +msgstr "Extrusion relative" #: fdmprinter.def.json msgctxt "relative_extrusion description" msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." -msgstr "" +msgstr "Utiliser l'extrusion relative au lieu de l'extrusion absolue. L'utilisation de pas E relatifs facilite le post-traitement du G-code. Toutefois, elle n'est pas supportée par toutes les imprimantes et peut occasionner de très légers écarts dans la quantité de matériau déposé, en comparaison avec des pas E absolus. Indépendamment de ce paramètre, le mode d'extrusion sera défini par défaut comme absolu avant qu'un quelconque script de G-code soit produit." #: fdmprinter.def.json msgctxt "experimental label" @@ -4186,12 +4180,12 @@ msgstr "expérimental !" #: fdmprinter.def.json msgctxt "optimize_wall_printing_order label" msgid "Optimize Wall Printing Order" -msgstr "" +msgstr "Optimiser l'ordre d'impression des parois" #: fdmprinter.def.json msgctxt "optimize_wall_printing_order description" msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "" +msgstr "Optimiser l'ordre dans lequel des parois sont imprimées de manière à réduire le nombre de retraits et les distances parcourues. La plupart des pièces bénéficieront de cette possibilité, mais certaines peuvent en fait prendre plus de temps à l'impression ; veuillez dès lors comparer les estimations de durée d'impression avec et sans optimisation." #: fdmprinter.def.json msgctxt "draft_shield_enabled label" @@ -4316,22 +4310,22 @@ msgstr "Alterne le sens d'impression des couches du dessus/dessous. Elles sont g #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" -msgstr "" +msgstr "Taille de poches entrecroisées 3D" #: fdmprinter.def.json msgctxt "cross_infill_pocket_size description" msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." -msgstr "" +msgstr "La taille de poches aux croisements à quatre branches dans le motif entrecroisé 3D, à des hauteurs où le motif se touche lui-même." #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly label" msgid "Alternate Cross 3D Pockets" -msgstr "" +msgstr "Poches entrecroisées 3D alternatives" #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly description" msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." -msgstr "" +msgstr "Ne réalise des poches que sur la moitié des croisements à quatre branches dans le motif entrecroisé 3D et alterne l'emplacement des poches entre les hauteurs où le motif se touche lui-même." #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" @@ -4633,9 +4627,7 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "" -"Distance d’un déplacement ascendant qui est extrudé à mi-vitesse.\n" -"Cela peut permettre une meilleure adhérence aux couches précédentes sans surchauffer le matériau dans ces couches. Uniquement applicable à l'impression filaire." +msgstr "Distance d’un déplacement ascendant qui est extrudé à mi-vitesse.\nCela peut permettre une meilleure adhérence aux couches précédentes sans surchauffer le matériau dans ces couches. Uniquement applicable à l'impression filaire." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -4755,12 +4747,12 @@ msgstr "Aller au-dessus de la surface supérieure une fois supplémentaire, mais #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" msgid "Iron Only Highest Layer" -msgstr "" +msgstr "N'étirer que la couche supérieure" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer description" msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." -msgstr "" +msgstr "N'exécute un étirage que sur l'ultime couche du maillage. Ceci économise du temps si les couches inférieures ne nécessitent pas de fini lisse de surface." #: fdmprinter.def.json msgctxt "ironing_pattern label" @@ -5124,4 +5116,4 @@ msgstr "Matrice de transformation à appliquer au modèle lors de son chargement #~ msgctxt "multiple_mesh_overlap label" #~ msgid "Dual Extrusion Overlap" -#~ msgstr "Chevauchement de double extrusion" +#~ msgstr "Chevauchement de double extrusion" \ No newline at end of file diff --git a/resources/i18n/it_IT/cura.po b/resources/i18n/it_IT/cura.po index 98c7db5fcc..aca74f4611 100644 --- a/resources/i18n/it_IT/cura.po +++ b/resources/i18n/it_IT/cura.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-11 14:30+0200\n" +"PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -24,7 +24,7 @@ msgstr "Impostazioni macchina" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" msgid "X-Ray view" -msgstr "" +msgstr "Vista ai raggi X" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -39,17 +39,17 @@ msgstr "File GCode" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "Stampa con Doodle3D WiFi-Box" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 msgctxt "@properties:tooltip" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "Stampa con Doodle3D WiFi-Box" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 msgctxt "@info:status" msgid "Connecting to Doodle3D Connect" -msgstr "" +msgstr "Collegamento a Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 @@ -73,32 +73,32 @@ msgstr "Annulla" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 msgctxt "@info:status" msgid "Sending data to Doodle3D Connect" -msgstr "" +msgstr "Invio dati a Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 msgctxt "@info:status" msgid "Unable to send data to Doodle3D Connect. Is another job still active?" -msgstr "" +msgstr "Impossibile inviare dati a Doodle3D Connect. C'è un altro processo in corso?" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 msgctxt "@info:status" msgid "Storing data on Doodle3D Connect" -msgstr "" +msgstr "Memorizzazione dati su Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 msgctxt "@info:status" msgid "File sent to Doodle3D Connect" -msgstr "" +msgstr "File inviato a Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@action:button" msgid "Open Connect.." -msgstr "" +msgstr "Apri Connect.." #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" -msgstr "" +msgstr "Apri interfaccia web Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -143,7 +143,7 @@ msgstr "Impossibile avviare un nuovo processo di stampa perché la stampante è #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 msgctxt "@info:title" msgid "Print Details" -msgstr "" +msgstr "Dettagli stampa" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" @@ -153,7 +153,7 @@ msgstr "Questa stampante non supporta la stampa tramite USB in quanto utilizza l #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:title" msgid "USB Printing" -msgstr "" +msgstr "Stampa USB" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" @@ -168,7 +168,7 @@ msgstr "Impossibile avviare un nuovo processo di stampa perché la stampante non #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 msgctxt "@info:title" msgid "Warning" -msgstr "" +msgstr "Avvertenza" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" @@ -184,7 +184,7 @@ msgstr "Impossibile trovare il firmware richiesto per la stampante a %s." #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 msgctxt "@info:title" msgid "Printer Firmware" -msgstr "" +msgstr "Firmware stampante" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -201,25 +201,25 @@ msgstr "Salva su unità rimovibile {0}" #, python-brace-format msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "" +msgstr "Salvataggio su unità rimovibile {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 msgctxt "@info:title" msgid "Saving" -msgstr "" +msgstr "Salvataggio in corso" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "" +msgstr "Impossibile salvare {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format msgctxt "@info:status Don't translate the tag {device}!" msgid "Could not find a file name when trying to write to {device}." -msgstr "" +msgstr "Impossibile trovare un nome file durante il tentativo di scrittura su {device}." #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 @@ -236,7 +236,7 @@ msgstr "Impossibile salvare su unità rimovibile {0}: {1}" #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 msgctxt "@info:title" msgid "Error" -msgstr "" +msgstr "Errore" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 #, python-brace-format @@ -247,7 +247,7 @@ msgstr "Salvato su unità rimovibile {0} come {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 msgctxt "@info:title" msgid "File Saved" -msgstr "" +msgstr "File salvato" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 msgctxt "@action:button" @@ -269,7 +269,7 @@ msgstr "Espulso {0}. È ora possibile rimuovere in modo sicuro l'unità." #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 msgctxt "@info:title" msgid "Safely Remove Hardware" -msgstr "" +msgstr "Rimozione sicura dell'hardware" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format @@ -304,7 +304,7 @@ msgstr "Richiesto accesso alla stampante. Approvare la richiesta sulla stampante #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 msgctxt "@info:title" msgid "Connection status" -msgstr "" +msgstr "Stato di connessione" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 @@ -319,7 +319,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 msgctxt "@info:title" msgid "Connection Status" -msgstr "" +msgstr "Stato di connessione" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 @@ -417,7 +417,7 @@ msgstr "Impossibile avviare un nuovo processo di stampa perché la stampante è #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 msgctxt "@info:title" msgid "Printer Status" -msgstr "" +msgstr "Stato stampante" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 @@ -488,7 +488,7 @@ msgstr "Invio dati alla stampante in corso" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 msgctxt "@info:title" msgid "Sending Data" -msgstr "" +msgstr "Invio dati" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 @@ -547,73 +547,73 @@ msgstr "Collega tramite rete" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "Questa stampante non è configurata per supportare la connessione di un gruppo di stampanti Ultimaker 3." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." -msgstr "" +msgstr "Questa stampante fa da host per un gruppo di {count} stampanti Ultimaker 3 connesse." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." -msgstr "" +msgstr "{printer_name} ha terminato la stampa '{job_name}'. Raccogliere la stampa e confermare la liberazione del piano di stampa." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." -msgstr "" +msgstr "{printer_name} è riservata per la stampa di '{job_name}'. Modificare la configurazione della stampante in modo che corrisponda al lavoro da eseguire per avviare il processo di stampa." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "" +msgstr "Invio nuovi processi (temporaneamente) bloccato, invio in corso precedente processo di stampa." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "Impossibile inviare nuovo processo di stampa: questa stampante 3D non è (ancora) configurata per supportare la connessione di un gruppo di stampanti Ultimaker 3." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" -msgstr "" +msgstr "Invio {file_name} a gruppo {cluster_name}" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." -msgstr "" +msgstr "Inviato {file_name} a gruppo {cluster_name}." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" -msgstr "" +msgstr "Mostra processi di stampa" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." -msgstr "" +msgstr "Apre l'interfaccia processi di stampa sul browser." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." -msgstr "" +msgstr "Impossibile inviare processo di stampa a gruppo {cluster_name}." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." -msgstr "" +msgstr "Per verificare che la vostra {machine_name} sia dotata delle funzionalità più recenti, si consiglia di aggiornare periodicamente il firmware. Questo può essere fatto sulla {machine_name} (quando connessa alla rete) o via USB." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" -msgstr "" +msgstr "Nuovo firmware %s disponibile" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 @@ -624,7 +624,7 @@ msgstr "Download" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 msgctxt "@info" msgid "Could not access update information." -msgstr "" +msgstr "Non è possibile accedere alle informazioni di aggiornamento." #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" @@ -663,7 +663,7 @@ msgstr "Cura acquisisce dati statistici elaborati in forma anonima. L'acquisizio #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" msgid "Collecting Data" -msgstr "" +msgstr "Acquisizione dati" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" @@ -684,7 +684,7 @@ msgstr "File G-Code" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" msgid "Layer view" -msgstr "" +msgstr "Visualizzazione strato" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" @@ -694,7 +694,7 @@ msgstr "Cura non visualizza in modo accurato gli strati se la funzione Wire Prin #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 msgctxt "@info:title" msgid "Layer View" -msgstr "" +msgstr "Visualizzazione strato" #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -724,7 +724,7 @@ msgstr "Immagine GIF" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." -msgstr "" +msgstr "Impossibile eseguire il sezionamento con il materiale corrente in quanto incompatibile con la macchina o la configurazione selezionata." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 @@ -732,7 +732,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 msgctxt "@info:title" msgid "Unable to slice" -msgstr "" +msgstr "Sezionamento impossibile" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format @@ -759,7 +759,7 @@ msgstr "Elaborazione dei livelli" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 msgctxt "@info:title" msgid "Information" -msgstr "" +msgstr "Informazioni" #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" @@ -798,18 +798,18 @@ msgstr "Ugello" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 msgctxt "@menuitem" msgid "Browse plugins" -msgstr "" +msgstr "Sfoglia plugin" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" -msgstr "" +msgstr "Impossibile ottenere ID plugin da {0}" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 msgctxt "@info:tile" msgid "Warning" -msgstr "" +msgstr "Avvertenza" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" @@ -819,7 +819,7 @@ msgstr "Browser plugin" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" msgid "Solid view" -msgstr "" +msgstr "Visualizzazione compatta" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -835,7 +835,7 @@ msgstr "Parsing codice G" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 msgctxt "@info:title" msgid "G-code Details" -msgstr "" +msgstr "Dettagli codice G" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" @@ -917,7 +917,7 @@ msgstr "Supporto" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Skirt" -msgstr "" +msgstr "Skirt" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" @@ -958,7 +958,7 @@ msgstr "Ricerca nuova posizione per gli oggetti" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 msgctxt "@info:title" msgid "Finding Location" -msgstr "" +msgstr "Ricerca posizione" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 @@ -969,7 +969,7 @@ msgstr "Impossibile individuare una posizione nel volume di stampa per tutti gli #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 msgctxt "@info:title" msgid "Can't Find Location" -msgstr "" +msgstr "Impossibile individuare posizione" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 @@ -982,7 +982,7 @@ msgstr "Il file esiste già" #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "" +msgstr "Il file {0} esiste già. Sei sicuro di volerlo sovrascrivere?" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" @@ -1003,7 +1003,7 @@ msgstr "Il materiale selezionato è incompatibile con la macchina o la configura #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" -msgstr "" +msgstr "Materiale incompatibile" #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." @@ -1024,24 +1024,24 @@ msgstr "Annulla modifica del diametro del materiale." #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "" +msgstr "Impossibile esportare il profilo su {0}: {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "" +msgstr "Impossibile esportare il profilo su {0}: Rilevata anomalia durante scrittura plugin." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "" +msgstr "Profilo esportato su {0}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 msgctxt "@info:title" msgid "Export Details" -msgstr "" +msgstr "Dettagli esportazione" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 @@ -1050,7 +1050,7 @@ msgstr "" #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "" +msgstr "Impossibile importare il profilo da {0}: {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 @@ -1089,7 +1089,7 @@ msgstr "L’altezza del volume di stampa è stata ridotta a causa del valore del #: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 msgctxt "@info:title" msgid "Build Volume" -msgstr "" +msgstr "Volume di stampa" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" @@ -1100,7 +1100,7 @@ msgstr "Moltiplicazione e collocazione degli oggetti" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:title" msgid "Placing Object" -msgstr "" +msgstr "Sistemazione oggetto" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" @@ -1113,10 +1113,7 @@ msgid "" "

A fatal exception has occurred that we could not recover from!

\n" "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" " " -msgstr "" -"

Si è verificata un'eccezione fatale che non stato possibile superare!

\n" -"

Utilizzare le informazioni sotto riportate per inviare un rapporto sull'errore a http://github.com/Ultimaker/Cura/issues

\n" -" " +msgstr "

Si è verificata un'eccezione fatale che non stato possibile superare!

\n

Utilizzare le informazioni sotto riportate per inviare un rapporto sull'errore a http://github.com/Ultimaker/Cura/issues

\n " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 msgctxt "@action:button" @@ -1418,10 +1415,7 @@ msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "" -"Per stampare direttamente sulla stampante in rete, verificare che la stampante desiderata sia collegata alla rete mediante un cavo di rete o mediante collegamento alla rete WIFI. Se si collega Cura alla stampante, è comunque possibile utilizzare una chiavetta USB per trasferire i file codice G alla stampante.\n" -"\n" -"Selezionare la stampante dall’elenco seguente:" +msgstr "Per stampare direttamente sulla stampante in rete, verificare che la stampante desiderata sia collegata alla rete mediante un cavo di rete o mediante collegamento alla rete WIFI. Se si collega Cura alla stampante, è comunque possibile utilizzare una chiavetta USB per trasferire i file codice G alla stampante.\n\nSelezionare la stampante dall’elenco seguente:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 @@ -1547,17 +1541,17 @@ msgstr "Attiva la configurazione" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 msgctxt "@label" msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "Questa stampante non è configurata per supportare la connessione di un gruppo di stampanti Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 msgctxt "@label" msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" -msgstr "" +msgstr "Questa stampante fa da host per un gruppo di %1 stampanti Ultimaker 3 connesse" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" -msgstr "" +msgstr "Stampa sulla rete" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 msgctxt "@action:button" @@ -1567,98 +1561,98 @@ msgstr "Stampa" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "%1 non è configurata per supportare la connessione di un gruppo di stampanti Ultimaker 3" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 msgctxt "@label:status" msgid "Printing" -msgstr "" +msgstr "Stampa in corso" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 msgctxt "@label:status" msgid "Reserved" -msgstr "" +msgstr "Riservato" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 msgctxt "@label:status" msgid "Finished" -msgstr "" +msgstr "Terminato" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 msgctxt "@label:status" msgid "Preparing" -msgstr "" +msgstr "Preparazione in corso" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 msgctxt "@label:status" msgid "Available" -msgstr "" +msgstr "Disponibile" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 msgctxt "@label" msgid "Completed on: " -msgstr "" +msgstr "Completato su: " #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 msgctxt "@label" msgid "Clear build plate" -msgstr "" +msgstr "Cancellare piano di stampa" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 msgctxt "@label" msgid "Preparing to print" -msgstr "" +msgstr "Preparazione della stampa" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 msgctxt "@label" msgid "Not accepting print jobs" -msgstr "" +msgstr "Mancata accettazione processi di stampa" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." -msgstr "" +msgstr "Apre la pagina processi di stampa con il browser web predefinito." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 msgctxt "@action:button" msgid "View print jobs" -msgstr "" +msgstr "Visualizza processi di stampa" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 msgctxt "@label" msgid "PRINTER GROUP" -msgstr "" +msgstr "GRUPPO STAMPANTI" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 msgctxt "@title" msgid "Print jobs" -msgstr "" +msgstr "Processi di stampa" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 msgctxt "@label" msgid "Printing" -msgstr "" +msgstr "Stampa in corso" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 msgctxt "@label" msgid "Queued" -msgstr "" +msgstr "Coda di stampa" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 msgctxt "@label" msgid "Waiting for configuration change" -msgstr "" +msgstr "In attesa di modifica configurazione" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 msgctxt "@label:title" msgid "Printers" -msgstr "" +msgstr "Stampanti" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 msgctxt "@action:button" msgid "View printers" -msgstr "" +msgstr "Visualizza stampanti" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" @@ -2049,7 +2043,7 @@ msgstr "Installa" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" -msgstr "" +msgstr "Accordo di licenza plugin" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" @@ -2057,17 +2051,17 @@ msgid "" " plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "" +msgstr " I plugin contengono una licenza.\nÈ necessario accettare questa licenza per poter installare il plugin.\nAccetti i termini sotto riportati?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" msgid "Accept" -msgstr "" +msgstr "Accetto" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 msgctxt "@action:button" msgid "Decline" -msgstr "" +msgstr "Non accetto" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -2322,9 +2316,7 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "" -"Sono state personalizzate alcune impostazioni del profilo.\n" -"Mantenere o eliminare tali impostazioni?" +msgstr "Sono state personalizzate alcune impostazioni del profilo.\nMantenere o eliminare tali impostazioni?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -2908,12 +2900,12 @@ msgstr "Importa materiale" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "" +msgstr "Impossibile importare materiale {1}: %2" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "" +msgstr "Materiale importato correttamente %1" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2924,12 +2916,12 @@ msgstr "Esporta materiale" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "" +msgstr "Impossibile esportare il materiale su %1: %2" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "" +msgstr "Materiale esportato correttamente su %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 @@ -2962,9 +2954,7 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "" -"Cura è stato sviluppato da Ultimaker B.V. in cooperazione con la comunità.\n" -"Cura è orgogliosa di utilizzare i seguenti progetti open source:" +msgstr "Cura è stato sviluppato da Ultimaker B.V. in cooperazione con la comunità.\nCura è orgogliosa di utilizzare i seguenti progetti open source:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -3067,10 +3057,7 @@ msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "" -"Alcuni valori di impostazione/esclusione sono diversi dai valori memorizzati nel profilo.\n" -"\n" -"Fare clic per aprire la gestione profili." +msgstr "Alcuni valori di impostazione/esclusione sono diversi dai valori memorizzati nel profilo.\n\nFare clic per aprire la gestione profili." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" @@ -3108,10 +3095,7 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "" -"Alcune impostazioni nascoste utilizzano valori diversi dal proprio valore normale calcolato.\n" -"\n" -"Fare clic per rendere visibili queste impostazioni." +msgstr "Alcune impostazioni nascoste utilizzano valori diversi dal proprio valore normale calcolato.\n\nFare clic per rendere visibili queste impostazioni." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 msgctxt "@label Header for list of settings." @@ -3139,10 +3123,7 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "" -"Questa impostazione ha un valore diverso dal profilo.\n" -"\n" -"Fare clic per ripristinare il valore del profilo." +msgstr "Questa impostazione ha un valore diverso dal profilo.\n\nFare clic per ripristinare il valore del profilo." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 msgctxt "@label" @@ -3150,10 +3131,7 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "" -"Questa impostazione normalmente viene calcolata, ma attualmente ha impostato un valore assoluto.\n" -"\n" -"Fare clic per ripristinare il valore calcolato." +msgstr "Questa impostazione normalmente viene calcolata, ma attualmente ha impostato un valore assoluto.\n\nFare clic per ripristinare il valore calcolato." #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" @@ -3165,9 +3143,7 @@ msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "" -"Impostazione di stampa disabilitata\n" -"I file codice G non possono essere modificati" +msgstr "Impostazione di stampa disabilitata\nI file codice G non possono essere modificati" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 msgctxt "@label" @@ -3177,22 +3153,22 @@ msgstr "00h 00min" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 msgctxt "@tooltip" msgid "Time information" -msgstr "" +msgstr "Informazioni su tempo" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 msgctxt "@description" msgid "Print time" -msgstr "" +msgstr "Tempo di stampa" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 msgctxt "@label" msgid "%1m / ~ %2g / ~ %4 %3" -msgstr "" +msgstr "%1m / ~ %2g / ~ %4 %3" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 msgctxt "@label" msgid "%1m / ~ %2g" -msgstr "" +msgstr "%1m / ~ %2g" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" @@ -3252,12 +3228,12 @@ msgstr "Nessuna stampante collegata" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" msgid "Extruder" -msgstr "" +msgstr "Estrusore" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." -msgstr "" +msgstr "Temperatura target dell'estremità riscaldata. L'estremità riscaldata si riscalderà o raffredderà sino a questo valore di temperatura. Se questo è 0, l'estremità riscaldata verrà spenta." #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" @@ -3726,27 +3702,27 @@ msgstr "Prepara" #: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" msgid "Monitor" -msgstr "" +msgstr "Controlla" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 msgctxt "@label" msgid "Layer Height" -msgstr "" +msgstr "Altezza dello strato" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 msgctxt "@label" msgid "Print Speed" -msgstr "" +msgstr "Velocità di stampa" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 msgctxt "@label" msgid "Slower" -msgstr "" +msgstr "Più lenta" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 msgctxt "@label" msgid "Faster" -msgstr "" +msgstr "Più veloce" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" @@ -3761,7 +3737,7 @@ msgstr "Un riempimento graduale aumenterà gradualmente la quantità di riempime #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 msgctxt "@label" msgid "Enable gradual" -msgstr "" +msgstr "Consenti variazione graduale" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" @@ -3838,7 +3814,7 @@ msgstr "Materiale" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 msgctxt "@label" msgid "Check material compatibility" -msgstr "" +msgstr "Controllo compatibilità materiale" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" @@ -3898,12 +3874,12 @@ msgstr "Modalità God" #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "description" msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "" +msgstr "Accetta i G-Code e li invia tramite WiFi a un Doodle3D WiFi-Box." #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "name" msgid "Doodle3D WiFi-Box" -msgstr "" +msgstr "Doodle3D WiFi-Box" #: ChangeLogPlugin/plugin.json msgctxt "description" @@ -3958,17 +3934,17 @@ msgstr "Connessione di rete UM3" #: CuraPrintClusterUpload/plugin.json msgctxt "name" msgid "UM3 Network Connection (Cluster)" -msgstr "" +msgstr "Connessione di rete UM3 (Cluster)" #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." -msgstr "" +msgstr "Controlla disponibilità di aggiornamenti firmware." #: FirmwareUpdateChecker/plugin.json msgctxt "name" msgid "Firmware Update Checker" -msgstr "" +msgstr "Controllo aggiornamento firmware" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" @@ -4063,12 +4039,12 @@ msgstr "Aggiornamento della versione da 2.5 a 2.6" #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -msgstr "" +msgstr "Aggiorna le configurazioni da Cura 2.7 a Cura 3.0." #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" -msgstr "" +msgstr "Aggiornamento della versione da 2.7 a 3.0" #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" @@ -4972,4 +4948,4 @@ msgstr "Lettore profilo Cura" #~ msgctxt "@label:" #~ msgid "Print Again" -#~ msgstr "Ripeti stampa" +#~ msgstr "Ripeti stampa" \ No newline at end of file diff --git a/resources/i18n/it_IT/fdmprinter.def.json.po b/resources/i18n/it_IT/fdmprinter.def.json.po index 49577d5ead..d618ecfeac 100644 --- a/resources/i18n/it_IT/fdmprinter.def.json.po +++ b/resources/i18n/it_IT/fdmprinter.def.json.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-11 14:31+0200\n" +"PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -56,9 +56,7 @@ msgctxt "machine_start_gcode description" msgid "" "Gcode commands to be executed at the very start - separated by \n" "." -msgstr "" -"I comandi codice G da eseguire all’avvio, separati da \n" -"." +msgstr "I comandi codice G da eseguire all’avvio, separati da \n." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -70,9 +68,7 @@ msgctxt "machine_end_gcode description" msgid "" "Gcode commands to be executed at the very end - separated by \n" "." -msgstr "" -"I comandi codice G da eseguire alla fine, separati da \n" -"." +msgstr "I comandi codice G da eseguire alla fine, separati da \n." #: fdmprinter.def.json msgctxt "material_guid label" @@ -1122,7 +1118,7 @@ msgstr "Casuale" #: fdmprinter.def.json msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" -msgstr "" +msgstr "Angolo più acuto" #: fdmprinter.def.json msgctxt "z_seam_x label" @@ -1147,32 +1143,32 @@ msgstr "La coordinata Y della posizione in prossimità della quale si innesca al #: fdmprinter.def.json msgctxt "z_seam_corner label" msgid "Seam Corner Preference" -msgstr "" +msgstr "Preferenze angolo giunzione" #: fdmprinter.def.json msgctxt "z_seam_corner description" msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "" +msgstr "Controlla se gli angoli sul profilo del modello influenzano la posizione della giunzione. Nessuno significa che gli angoli non hanno alcuna influenza sulla posizione della giunzione. Nascondi giunzione favorisce la presenza della giunzione su un angolo interno. Esponi giunzione favorisce la presenza della giunzione su un angolo esterno. Nascondi o esponi giunzione favorisce la presenza della giunzione su un angolo interno o esterno." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" msgid "None" -msgstr "" +msgstr "Nessuno" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_inner" msgid "Hide Seam" -msgstr "" +msgstr "Nascondi giunzione" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_outer" msgid "Expose Seam" -msgstr "" +msgstr "Esponi giunzione" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" -msgstr "" +msgstr "Nascondi o esponi giunzione" #: fdmprinter.def.json msgctxt "z_seam_relative label" @@ -1252,7 +1248,7 @@ msgstr "Configurazione di riempimento" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "Configurazione del materiale di riempimento della stampa. Il riempimento a linea e zig zag su strati alternati riduce il costo del materiale. Le configurazioni a griglia, triangolo, a cubo, ottagonale, a quarto di cubo e concentrica comportano la stampa completa in ogni strato. Il riempimento a cubi, a quarto di cubo e a ottagonale cambia a ogni strato per consentire una distribuzione più uniforme della resistenza in ogni direzione." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1282,12 +1278,12 @@ msgstr "Suddivisione in cubi" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" msgid "Octet" -msgstr "" +msgstr "Ottagonale" #: fdmprinter.def.json msgctxt "infill_pattern option quarter_cubic" msgid "Quarter Cubic" -msgstr "" +msgstr "Quarto di cubo" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1307,22 +1303,22 @@ msgstr "Zig Zag" #: fdmprinter.def.json msgctxt "infill_pattern option cross" msgid "Cross" -msgstr "" +msgstr "Incrociata" #: fdmprinter.def.json msgctxt "infill_pattern option cross_3d" msgid "Cross 3D" -msgstr "" +msgstr "Incrociata 3D" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" msgid "Connect Infill Lines" -msgstr "" +msgstr "Collegamento delle linee di riempimento" #: fdmprinter.def.json msgctxt "zig_zaggify_infill description" msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." -msgstr "" +msgstr "Collega le estremità in cui la configurazione del riempimento incontra la parete interna utilizzando linee che seguono il profilo della parete interna stessa. Consentendo tale configurazione è possibile fare in modo che il riempimento aderisca meglio alle pareti riducendo gli effetti dello stesso sulla qualità delle superfici verticali. Disabilitando questa configurazione si riduce la quantità di materiale utilizzato." #: fdmprinter.def.json msgctxt "infill_angles label" @@ -1447,32 +1443,32 @@ msgstr "Non generare aree di riempimento inferiori a questa (piuttosto usare il #: fdmprinter.def.json msgctxt "skin_preshrink label" msgid "Skin Removal Width" -msgstr "" +msgstr "Larghezza rimozione rivestimento" #: fdmprinter.def.json msgctxt "skin_preshrink description" msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." -msgstr "" +msgstr "Larghezza massima delle aree di rivestimento che è possibile rimuovere. Ogni area di rivestimento più piccola di questo valore verrà eliminata. Questo può aiutare a limitare il tempo e il materiale necessari per la stampa del rivestimento superiore/inferiore sulle superfici inclinate del modello." #: fdmprinter.def.json msgctxt "top_skin_preshrink label" msgid "Top Skin Removal Width" -msgstr "" +msgstr "Larghezza rimozione rivestimento superiore" #: fdmprinter.def.json msgctxt "top_skin_preshrink description" msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." -msgstr "" +msgstr "Larghezza massima delle aree di rivestimento superiore che è possibile rimuovere. Ogni area di rivestimento più piccola di questo valore verrà eliminata. Questo può aiutare a limitare il tempo e il materiale necessari per la stampa del rivestimento superiore sulle superfici inclinate del modello." #: fdmprinter.def.json msgctxt "bottom_skin_preshrink label" msgid "Bottom Skin Removal Width" -msgstr "" +msgstr "Larghezza rimozione rivestimento inferiore" #: fdmprinter.def.json msgctxt "bottom_skin_preshrink description" msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." -msgstr "" +msgstr "Larghezza massima delle aree di rivestimento inferiore che è possibile rimuovere. Ogni area di rivestimento più piccola di questo valore verrà eliminata. Questo può aiutare a limitare il tempo e il materiale necessari per la stampa del rivestimento inferiore sulle superfici inclinate del modello." #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1482,27 +1478,27 @@ msgstr "Distanza prolunga rivestimento esterno" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." -msgstr "" +msgstr "Distanza per cui i rivestimenti si estendono nel riempimento. Valori maggiori migliorano l'aderenza del rivestimento al riempimento e consentono una migliore aderenza al rivestimento delle pareti degli strati adiacenti. Valori minori consentono di risparmiare sul materiale utilizzato." #: fdmprinter.def.json msgctxt "top_skin_expand_distance label" msgid "Top Skin Expand Distance" -msgstr "" +msgstr "Distanza prolunga rivestimento superiore" #: fdmprinter.def.json msgctxt "top_skin_expand_distance description" msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." -msgstr "" +msgstr "Distanza per cui i rivestimenti superiori si estendono nel riempimento. Valori maggiori migliorano l'aderenza del rivestimento al riempimento e consentono una migliore aderenza al rivestimento delle pareti dello strato superiore. Valori minori consentono di risparmiare sul materiale utilizzato." #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance label" msgid "Bottom Skin Expand Distance" -msgstr "" +msgstr "Distanza prolunga rivestimento inferiore" #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance description" msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." -msgstr "" +msgstr "Distanza per cui i rivestimenti inferiori si estendono nel riempimento. Valori maggiori migliorano l'aderenza del rivestimento al riempimento e consentono una migliore aderenza al rivestimento delle pareti dello strato inferiore. Valori minori consentono di risparmiare sul materiale utilizzato." #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -2822,7 +2818,7 @@ msgstr "Zig Zag" #: fdmprinter.def.json msgctxt "support_pattern option cross" msgid "Cross" -msgstr "" +msgstr "Incrociata" #: fdmprinter.def.json msgctxt "support_connect_zigzags label" @@ -2837,32 +2833,32 @@ msgstr "Collega i ZigZag. Questo aumenta la forza della struttura di supporto a #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" -msgstr "" +msgstr "Rottura del supporto in pezzi di grandi dimensioni" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." -msgstr "" +msgstr "Salto di alcuni collegamenti per rendere la struttura del supporto più facile da rompere. Questa impostazione è applicabile alla configurazione a zig-zag del riempimento del supporto." #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm label" msgid "Support Chunk Size" -msgstr "" +msgstr "Dimensioni frammento supporto" #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm description" msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." -msgstr "" +msgstr "Lasciare un collegamento tra le linee del supporto ogni N millimetri per facilitare la rottura del supporto stesso." #: fdmprinter.def.json msgctxt "support_zag_skip_count label" msgid "Support Chunk Line Count" -msgstr "" +msgstr "Conteggio linee di rottura supporto" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" msgid "Skip one in every N connection lines to make the support structure easier to break away." -msgstr "" +msgstr "Salto di una ogni N linee di collegamento per rendere la struttura del supporto più facile da rompere." #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3404,9 +3400,7 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance, multiple skirt lines will extend outwards from this distance." -msgstr "" -"Indica la distanza orizzontale tra lo skirt ed il primo strato della stampa.\n" -"Questa è la distanza minima, più linee di skirt aumenteranno tale distanza." +msgstr "Indica la distanza orizzontale tra lo skirt ed il primo strato della stampa.\nQuesta è la distanza minima, più linee di skirt aumenteranno tale distanza." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3451,22 +3445,22 @@ msgstr "Stampa il brim solo sull’esterno del modello. Questo riduce la quantit #: fdmprinter.def.json msgctxt "z_offset_layer_0 label" msgid "Initial Layer Z Offset" -msgstr "" +msgstr "Scostamento Z strato iniziale" #: fdmprinter.def.json msgctxt "z_offset_layer_0 description" msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." -msgstr "" +msgstr "L'estrusore viene posizionato ad una distanza dall'altezza normale del primo strato pari al valore indicato. Questo scostamento può essere positivo (più in alto) o negativo (più in basso). Alcuni tipi di filamento aderiscono meglio al piano di stampa se l'estrusore viene leggermente sollevato." #: fdmprinter.def.json msgctxt "z_offset_taper_layers label" msgid "Z Offset Taper Layers" -msgstr "" +msgstr "Scostamento Z strati di rastremazione" #: fdmprinter.def.json msgctxt "z_offset_taper_layers description" msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." -msgstr "" +msgstr "Se diverso da zero, lo scostamento Z viene ridotto a 0 entro il numero di strati indicato. Un valore di 0 indica che lo scostamento Z rimane costante per tutti gli strati di stampa." #: fdmprinter.def.json msgctxt "raft_margin label" @@ -3481,12 +3475,12 @@ msgstr "Se è abilitata la funzione raft, questo valore indica di quanto il raft #: fdmprinter.def.json msgctxt "raft_smoothing label" msgid "Raft Smoothing" -msgstr "" +msgstr "Smoothing raft" #: fdmprinter.def.json msgctxt "raft_smoothing description" msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." -msgstr "" +msgstr "Questa impostazione controlla l'entità dell'arrotondamento degli angoli interni sul profilo raft. Gli angoli interni vengono arrotondati a semicerchio con un raggio pari al valore indicato. Questa impostazione elimina inoltre i fori sul profilo raft più piccoli di tale cerchio." #: fdmprinter.def.json msgctxt "raft_airgap label" @@ -4166,12 +4160,12 @@ msgstr "Leviga i profili con movimento spiraliforme per ridurre la visibilità d #: fdmprinter.def.json msgctxt "relative_extrusion label" msgid "Relative Extrusion" -msgstr "" +msgstr "Estrusione relativa" #: fdmprinter.def.json msgctxt "relative_extrusion description" msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." -msgstr "" +msgstr "Utilizza l'estrusione relativa invece di quella assoluta. L'utilizzo di fasi E relative facilita la post-elaborazione del codice G. Tuttavia, questa impostazione non è supportata da tutte le stampanti e può causare deviazioni molto piccole nella quantità di materiale depositato rispetto alle fasi E assolute. Indipendentemente da questa impostazione, la modalità estrusione sarà sempre impostata su assoluta prima che venga generato uno script in codice G." #: fdmprinter.def.json msgctxt "experimental label" @@ -4186,12 +4180,12 @@ msgstr "sperimentale!" #: fdmprinter.def.json msgctxt "optimize_wall_printing_order label" msgid "Optimize Wall Printing Order" -msgstr "" +msgstr "Ottimizzazione sequenza di stampa pareti" #: fdmprinter.def.json msgctxt "optimize_wall_printing_order description" msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "" +msgstr "Ottimizza l'ordine in cui vengono stampate le pareti in modo da ridurre le retrazioni e la distanza percorsa. L'abilitazione di questa funzione porta vantaggi per la maggior parte dei pezzi, ma alcuni potrebbero richiedere un maggior tempo di esecuzione, per cui si consiglia di confrontare i tempi di stampa stimati con e senza ottimizzazione." #: fdmprinter.def.json msgctxt "draft_shield_enabled label" @@ -4316,22 +4310,22 @@ msgstr "Alterna la direzione di stampa degli strati superiori/inferiori. Normalm #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" -msgstr "" +msgstr "Dimensioni cavità 3D incrociata" #: fdmprinter.def.json msgctxt "cross_infill_pocket_size description" msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." -msgstr "" +msgstr "Dimensioni delle cavità negli incroci a quattro vie nella configurazione 3D incrociata alle altezze a cui la configurazione tocca se stessa." #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly label" msgid "Alternate Cross 3D Pockets" -msgstr "" +msgstr "Cavità 3D incrociate alternate" #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly description" msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." -msgstr "" +msgstr "Si applica solo a cavità a metà degli incroci a quattro vie nella configurazione 3D incrociata e alterna la posizione delle cavità tra le altezze in cui la configurazione tocca se stessa." #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" @@ -4633,9 +4627,7 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "" -"Indica la distanza di uno spostamento verso l'alto con estrusione a velocità dimezzata.\n" -"Ciò può garantire una migliore adesione agli strati precedenti, senza eccessivo riscaldamento del materiale su questi strati. Applicabile solo alla funzione Wire Printing." +msgstr "Indica la distanza di uno spostamento verso l'alto con estrusione a velocità dimezzata.\nCiò può garantire una migliore adesione agli strati precedenti, senza eccessivo riscaldamento del materiale su questi strati. Applicabile solo alla funzione Wire Printing." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -4755,12 +4747,12 @@ msgstr "Ulteriore passaggio sopra la superficie superiore, senza estrusione di m #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" msgid "Iron Only Highest Layer" -msgstr "" +msgstr "Stiramento del solo strato più elevato" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer description" msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." -msgstr "" +msgstr "Effettua lo stiramento solo dell'ultimissimo strato della maglia. È possibile quindi risparmiare tempo se gli strati inferiori non richiedono una finitura con superficie liscia." #: fdmprinter.def.json msgctxt "ironing_pattern label" @@ -5124,4 +5116,4 @@ msgstr "Matrice di rotazione da applicare al modello quando caricato dal file." #~ msgctxt "multiple_mesh_overlap label" #~ msgid "Dual Extrusion Overlap" -#~ msgstr "Sovrapposizione doppia estrusione" +#~ msgstr "Sovrapposizione doppia estrusione" \ No newline at end of file diff --git a/resources/i18n/nl_NL/cura.po b/resources/i18n/nl_NL/cura.po index 0581d8209e..48da7e783e 100644 --- a/resources/i18n/nl_NL/cura.po +++ b/resources/i18n/nl_NL/cura.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-11 14:30+0200\n" +"PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -24,7 +24,7 @@ msgstr "Machine-instellingen" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" msgid "X-Ray view" -msgstr "" +msgstr "Röntgenweergave" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -39,17 +39,17 @@ msgstr "G-code-bestand" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "Printen via Doodle3D WiFi-Box" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 msgctxt "@properties:tooltip" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "Printen via Doodle3D WiFi-Box" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 msgctxt "@info:status" msgid "Connecting to Doodle3D Connect" -msgstr "" +msgstr "Verbinding maken met Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 @@ -73,32 +73,32 @@ msgstr "Annuleren" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 msgctxt "@info:status" msgid "Sending data to Doodle3D Connect" -msgstr "" +msgstr "De gegevens worden naar Doodle3D Connect verzonden" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 msgctxt "@info:status" msgid "Unable to send data to Doodle3D Connect. Is another job still active?" -msgstr "" +msgstr "Kan geen gegevens naar Doodle3D Connect verzenden. Is er nog een andere taak actief?" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 msgctxt "@info:status" msgid "Storing data on Doodle3D Connect" -msgstr "" +msgstr "Gegevens op Doodle3D Connect opslaan" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 msgctxt "@info:status" msgid "File sent to Doodle3D Connect" -msgstr "" +msgstr "Het bestand is naar Doodle3D Connect verzonden" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@action:button" msgid "Open Connect.." -msgstr "" +msgstr "Connect openen" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" -msgstr "" +msgstr "De Doodle3D Connect-webinterface openen" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -143,7 +143,7 @@ msgstr "Er kan geen nieuwe taak worden gestart omdat de printer bezig is of niet #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 msgctxt "@info:title" msgid "Print Details" -msgstr "" +msgstr "Printgegevens" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" @@ -153,7 +153,7 @@ msgstr "De printer biedt geen ondersteuning voor USB-printen omdat deze de codev #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:title" msgid "USB Printing" -msgstr "" +msgstr "USB-printen" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" @@ -168,7 +168,7 @@ msgstr "Er kan geen nieuwe taak worden gestart omdat de printer geen ondersteuni #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 msgctxt "@info:title" msgid "Warning" -msgstr "" +msgstr "Waarschuwing" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" @@ -184,7 +184,7 @@ msgstr "De voor de printer benodigde software is niet op %s te vinden." #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 msgctxt "@info:title" msgid "Printer Firmware" -msgstr "" +msgstr "Firmware van uw printer" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -201,25 +201,25 @@ msgstr "Opslaan op Verwisselbaar Station {0}" #, python-brace-format msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "" +msgstr "Opslaan op Verwisselbaar Station {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 msgctxt "@info:title" msgid "Saving" -msgstr "" +msgstr "Opslaan" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "" +msgstr "Kan niet opslaan als {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format msgctxt "@info:status Don't translate the tag {device}!" msgid "Could not find a file name when trying to write to {device}." -msgstr "" +msgstr "Kan geen bestandsnaam vinden tijdens het schrijven naar {device}." #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 @@ -236,7 +236,7 @@ msgstr "Kan niet opslaan op verwisselbaar station {0}: {1}" #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 msgctxt "@info:title" msgid "Error" -msgstr "" +msgstr "Fout" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 #, python-brace-format @@ -247,7 +247,7 @@ msgstr "Opgeslagen op Verwisselbaar Station {0} als {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 msgctxt "@info:title" msgid "File Saved" -msgstr "" +msgstr "Bestand opgeslagen" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 msgctxt "@action:button" @@ -269,7 +269,7 @@ msgstr "{0} is uitgeworpen. U kunt het station nu veilig verwijderen." #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 msgctxt "@info:title" msgid "Safely Remove Hardware" -msgstr "" +msgstr "Hardware veilig verwijderen" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format @@ -304,7 +304,7 @@ msgstr "Er is een toegangsaanvraag voor de printer verstuurd. Keur de aanvraag g #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 msgctxt "@info:title" msgid "Connection status" -msgstr "" +msgstr "Verbindingsstatus" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 @@ -319,7 +319,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 msgctxt "@info:title" msgid "Connection Status" -msgstr "" +msgstr "Verbindingsstatus" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 @@ -417,7 +417,7 @@ msgstr "Er kan geen nieuwe taak worden gestart omdat de printer bezig is. De hui #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 msgctxt "@info:title" msgid "Printer Status" -msgstr "" +msgstr "Printerstatus" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 @@ -488,7 +488,7 @@ msgstr "De gegevens worden naar de printer verzonden" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 msgctxt "@info:title" msgid "Sending Data" -msgstr "" +msgstr "De gegevens worden verzonden" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 @@ -547,73 +547,73 @@ msgstr "Verbinding Maken via Netwerk" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "Deze printer is niet ingesteld voor het hosten van een groep aangesloten Ultimaker 3-printers." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." -msgstr "" +msgstr "Deze printer is de host voor een groep van {count} aangesloten Ultimaker 3-printers." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." -msgstr "" +msgstr "{printer_name} heeft '{job_name}' voltooid. Haal de print op en bevestig dat het platform is leeggemaakt." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." -msgstr "" +msgstr "{printer_name} is gereserveerd voor het printen van '{job_name}'. Wijzig de instellingen van de printer zodanig dat ze aansluiten bij de taak, zodat u kunt beginnen met printen." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "" +msgstr "Het verzenden van nieuwe taken is (tijdelijk) geblokkeerd. Nog bezig met het verzenden van de vorige printtaak." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "Kan geen nieuwe printtaak verzenden: deze 3D-printer is (nog) niet ingesteld voor het hosten van een groep aangesloten Ultimaker 3-printers." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" -msgstr "" +msgstr "Bezig met verzenden van {file_name} naar groep {cluster_name}" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." -msgstr "" +msgstr "{file_name} is verzonden naar groep {cluster_name}." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" -msgstr "" +msgstr "Printtaken weergeven" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." -msgstr "" +msgstr "Opent de printtaken-interface in uw browser." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." -msgstr "" +msgstr "Kan de printtaak niet naar groep {cluster_name} verzenden." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." -msgstr "" +msgstr "Om ervoor te zorgen dat uw {machine_name} van de nieuwste functies is voorzien, wordt aanbevolen om de firmware regelmatig bij te werken. U kunt dit doen op de {machine_name} (wanneer deze is verbonden met het netwerk) of via USB." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" -msgstr "" +msgstr "Nieuwe firmware voor %s beschikbaar" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 @@ -624,7 +624,7 @@ msgstr "Downloaden" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 msgctxt "@info" msgid "Could not access update information." -msgstr "" +msgstr "Geen toegang tot update-informatie." #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" @@ -663,7 +663,7 @@ msgstr "Cura verzamelt geanonimiseerde slicing-statistieken. Dit kan bij de voor #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" msgid "Collecting Data" -msgstr "" +msgstr "Gegevens verzamelen" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" @@ -684,7 +684,7 @@ msgstr "G-code-bestand" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" msgid "Layer view" -msgstr "" +msgstr "Laagweergave" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" @@ -694,7 +694,7 @@ msgstr "Als draadprinten is ingeschakeld, geeft Cura lagen niet nauwkeurig weer" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 msgctxt "@info:title" msgid "Layer View" -msgstr "" +msgstr "Laagweergave" #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -724,7 +724,7 @@ msgstr "GIF-afbeelding" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." -msgstr "" +msgstr "Met het huidige materiaal is slicen niet mogelijk, omdat het materiaal niet compatibel is met de geselecteerde machine of configuratie." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 @@ -732,7 +732,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 msgctxt "@info:title" msgid "Unable to slice" -msgstr "" +msgstr "Kan niet slicen" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format @@ -759,7 +759,7 @@ msgstr "Lagen verwerken" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 msgctxt "@info:title" msgid "Information" -msgstr "" +msgstr "Informatie" #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" @@ -798,18 +798,18 @@ msgstr "Nozzle" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 msgctxt "@menuitem" msgid "Browse plugins" -msgstr "" +msgstr "Door invoegtoepassingen bladeren" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" -msgstr "" +msgstr "Kan de invoegtoepassing-ID van {0} niet vinden" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 msgctxt "@info:tile" msgid "Warning" -msgstr "" +msgstr "Waarschuwing" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" @@ -819,7 +819,7 @@ msgstr "Invoegtoepassingbrowser" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" msgid "Solid view" -msgstr "" +msgstr "Solide weergave" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -835,7 +835,7 @@ msgstr "G-code parseren" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 msgctxt "@info:title" msgid "G-code Details" -msgstr "" +msgstr "Details van de G-code" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" @@ -917,7 +917,7 @@ msgstr "Supportstructuur" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Skirt" -msgstr "" +msgstr "Skirt" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" @@ -958,7 +958,7 @@ msgstr "Nieuwe locatie vinden voor objecten" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 msgctxt "@info:title" msgid "Finding Location" -msgstr "" +msgstr "Locatie vinden" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 @@ -969,7 +969,7 @@ msgstr "Kan binnen het werkvolume niet voor alle objecten een locatie vinden" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 msgctxt "@info:title" msgid "Can't Find Location" -msgstr "" +msgstr "Kan locatie niet vinden" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 @@ -982,7 +982,7 @@ msgstr "Het Bestand Bestaat Al" #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "" +msgstr "Het bestand {0} bestaat al. Weet u zeker dat u dit bestand wilt overschrijven?" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" @@ -1003,7 +1003,7 @@ msgstr "Het geselecteerde materiaal is niet compatibel met de geselecteerde mach #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" -msgstr "" +msgstr "Niet-compatibel materiaal" #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." @@ -1024,24 +1024,24 @@ msgstr "Maak wijzigen van de materiaaldiameter ongedaan." #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "" +msgstr "Kan het profiel niet exporteren als {0}: {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "" +msgstr "Kan het profiel niet exporteren als {0}: Invoegtoepassing voor de schrijver heeft een fout gerapporteerd." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "" +msgstr "Het profiel is geëxporteerd als {0}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 msgctxt "@info:title" msgid "Export Details" -msgstr "" +msgstr "Exportgegevens" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 @@ -1050,7 +1050,7 @@ msgstr "" #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "" +msgstr "Kan het profiel niet importeren uit {0}: {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 @@ -1089,7 +1089,7 @@ msgstr "De hoogte van het bouwvolume is verminderd wegens de waarde van de inste #: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 msgctxt "@info:title" msgid "Build Volume" -msgstr "" +msgstr "Werkvolume" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" @@ -1100,7 +1100,7 @@ msgstr "Objecten verveelvoudigen en plaatsen" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:title" msgid "Placing Object" -msgstr "" +msgstr "Object plaatsen" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" @@ -1113,10 +1113,7 @@ msgid "" "

A fatal exception has occurred that we could not recover from!

\n" "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" " " -msgstr "" -"

Er is een fatale fout opgetreden die niet kan worden hersteld!

\n" -"

Gebruik de onderstaande informatie om een bugrapport te plaatsen op http://github.com/Ultimaker/Cura/issues

\n" -" " +msgstr "

Er is een fatale fout opgetreden die niet kan worden hersteld!

\n

Gebruik de onderstaande informatie om een bugrapport te plaatsen op http://github.com/Ultimaker/Cura/issues

\n " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 msgctxt "@action:button" @@ -1418,10 +1415,7 @@ msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "" -"Als u rechtstreeks via het netwerk wilt printen naar de printer, moet u ervoor zorgen dat de printer met een netwerkkabel is verbonden met het netwerk of moet u verbinding maken met de printer via het wifi-netwerk. Als u geen verbinding maakt tussen Cura en de printer, kunt u een USB-station gebruiken om g-code-bestanden naar de printer over te zetten.\n" -"\n" -"Selecteer uw printer in de onderstaande lijst:" +msgstr "Als u rechtstreeks via het netwerk wilt printen naar de printer, moet u ervoor zorgen dat de printer met een netwerkkabel is verbonden met het netwerk of moet u verbinding maken met de printer via het wifi-netwerk. Als u geen verbinding maakt tussen Cura en de printer, kunt u een USB-station gebruiken om g-code-bestanden naar de printer over te zetten.\n\nSelecteer uw printer in de onderstaande lijst:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 @@ -1547,17 +1541,17 @@ msgstr "Configuratie Activeren" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 msgctxt "@label" msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "Deze printer is niet ingesteld voor het hosten van een groep aangesloten Ultimaker 3-printers" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 msgctxt "@label" msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" -msgstr "" +msgstr "Deze printer is de host voor een groep van %1 aangesloten Ultimaker 3-printers" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" -msgstr "" +msgstr "Printen via netwerk" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 msgctxt "@action:button" @@ -1567,98 +1561,98 @@ msgstr "Printen" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "%1 is niet ingesteld voor het hosten van een groep aangesloten Ultimaker 3-printers" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 msgctxt "@label:status" msgid "Printing" -msgstr "" +msgstr "Printen" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 msgctxt "@label:status" msgid "Reserved" -msgstr "" +msgstr "Gereserveerd" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 msgctxt "@label:status" msgid "Finished" -msgstr "" +msgstr "Gereed" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 msgctxt "@label:status" msgid "Preparing" -msgstr "" +msgstr "Voorbereiden" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 msgctxt "@label:status" msgid "Available" -msgstr "" +msgstr "Beschikbaar" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 msgctxt "@label" msgid "Completed on: " -msgstr "" +msgstr "Voltooid op: " #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 msgctxt "@label" msgid "Clear build plate" -msgstr "" +msgstr "Platform leegmaken" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 msgctxt "@label" msgid "Preparing to print" -msgstr "" +msgstr "Voorbereiden om te printen" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 msgctxt "@label" msgid "Not accepting print jobs" -msgstr "" +msgstr "Accepteert geen printtaken" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." -msgstr "" +msgstr "Opent de pagina met printtaken in uw standaard webbrowser." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 msgctxt "@action:button" msgid "View print jobs" -msgstr "" +msgstr "Printtaken weergeven" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 msgctxt "@label" msgid "PRINTER GROUP" -msgstr "" +msgstr "PRINTERGROEP" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 msgctxt "@title" msgid "Print jobs" -msgstr "" +msgstr "Printtaken" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 msgctxt "@label" msgid "Printing" -msgstr "" +msgstr "Printen" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 msgctxt "@label" msgid "Queued" -msgstr "" +msgstr "In wachtrij" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 msgctxt "@label" msgid "Waiting for configuration change" -msgstr "" +msgstr "Wacht op wijziging van configuratie" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 msgctxt "@label:title" msgid "Printers" -msgstr "" +msgstr "Printers" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 msgctxt "@action:button" msgid "View printers" -msgstr "" +msgstr "Printers weergeven" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" @@ -2049,7 +2043,7 @@ msgstr "Geïnstalleerd" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" -msgstr "" +msgstr "Licentieovereenkomst invoegtoepassing" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" @@ -2057,17 +2051,17 @@ msgid "" " plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "" +msgstr " invoegtoepassing bevat een licentie.\nU moet akkoord gaan met deze licentie om deze invoegtoepassing te mogen installeren.\nGaat u akkoord met onderstaande voorwaarden?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" msgid "Accept" -msgstr "" +msgstr "Ja, ik ga akkoord" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 msgctxt "@action:button" msgid "Decline" -msgstr "" +msgstr "Nee, ik ga niet akkoord" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -2322,9 +2316,7 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "" -"U hebt enkele profielinstellingen aangepast.\n" -"Wilt u deze instellingen behouden of verwijderen?" +msgstr "U hebt enkele profielinstellingen aangepast.\nWilt u deze instellingen behouden of verwijderen?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -2908,12 +2900,12 @@ msgstr "Materiaal Importeren" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "" +msgstr "Kon materiaal %1 niet importeren: %2" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "" +msgstr "Materiaal %1 is geïmporteerd" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2924,12 +2916,12 @@ msgstr "Materiaal Exporteren" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "" +msgstr "Exporteren van materiaal naar %1 is mislukt: %2" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "" +msgstr "Materiaal is geëxporteerd naar %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 @@ -2962,9 +2954,7 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "" -"Cura is ontwikkeld door Ultimaker B.V. in samenwerking met de community.\n" -"Cura is er trots op gebruik te maken van de volgende opensourceprojecten:" +msgstr "Cura is ontwikkeld door Ultimaker B.V. in samenwerking met de community.\nCura is er trots op gebruik te maken van de volgende opensourceprojecten:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -3067,10 +3057,7 @@ msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "" -"Sommige waarden voor instellingen/overschrijvingen zijn anders dan de waarden die in het profiel zijn opgeslagen.\n" -"\n" -"Klik om het profielbeheer te openen." +msgstr "Sommige waarden voor instellingen/overschrijvingen zijn anders dan de waarden die in het profiel zijn opgeslagen.\n\nKlik om het profielbeheer te openen." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" @@ -3108,10 +3095,7 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "" -"Een aantal verborgen instellingen gebruiken andere waarden dan hun normale berekende waarde.\n" -"\n" -"Klik om deze instellingen zichtbaar te maken." +msgstr "Een aantal verborgen instellingen gebruiken andere waarden dan hun normale berekende waarde.\n\nKlik om deze instellingen zichtbaar te maken." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 msgctxt "@label Header for list of settings." @@ -3139,10 +3123,7 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "" -"Deze instelling heeft een andere waarde dan in het profiel.\n" -"\n" -"Klik om de waarde van het profiel te herstellen." +msgstr "Deze instelling heeft een andere waarde dan in het profiel.\n\nKlik om de waarde van het profiel te herstellen." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 msgctxt "@label" @@ -3150,10 +3131,7 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "" -"Deze instelling wordt normaliter berekend, maar is nu ingesteld op een absolute waarde.\n" -"\n" -"Klik om de berekende waarde te herstellen." +msgstr "Deze instelling wordt normaliter berekend, maar is nu ingesteld op een absolute waarde.\n\nKlik om de berekende waarde te herstellen." #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" @@ -3165,9 +3143,7 @@ msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "" -"Instelling voor printen uitgeschakeld\n" -"G-code-bestanden kunnen niet worden aangepast" +msgstr "Instelling voor printen uitgeschakeld\nG-code-bestanden kunnen niet worden aangepast" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 msgctxt "@label" @@ -3177,22 +3153,22 @@ msgstr "00u 00min" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 msgctxt "@tooltip" msgid "Time information" -msgstr "" +msgstr "Tijdsinformatie" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 msgctxt "@description" msgid "Print time" -msgstr "" +msgstr "Printtijd" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 msgctxt "@label" msgid "%1m / ~ %2g / ~ %4 %3" -msgstr "" +msgstr "%1m / ~ %2g / ~ %4 %3" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 msgctxt "@label" msgid "%1m / ~ %2g" -msgstr "" +msgstr "%1m / ~ %2g" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" @@ -3252,12 +3228,12 @@ msgstr "Er is geen printer aangesloten" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" msgid "Extruder" -msgstr "" +msgstr "Extruder" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." -msgstr "" +msgstr "De doeltemperatuur van de hot-end. De hot-end wordt verwarmd of afgekoeld totdat deze temperatuur bereikt is. Als deze waarde ingesteld is op 0, wordt de verwarming van de hot-end uitgeschakeld." #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" @@ -3726,27 +3702,27 @@ msgstr "Voorbereiden" #: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" msgid "Monitor" -msgstr "" +msgstr "Controleren" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 msgctxt "@label" msgid "Layer Height" -msgstr "" +msgstr "Laaghoogte" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 msgctxt "@label" msgid "Print Speed" -msgstr "" +msgstr "Printsnelheid" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 msgctxt "@label" msgid "Slower" -msgstr "" +msgstr "Langzamer" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 msgctxt "@label" msgid "Faster" -msgstr "" +msgstr "Sneller" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" @@ -3761,7 +3737,7 @@ msgstr "Met geleidelijke vulling neemt de hoeveelheid vulling naar boven toe." #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 msgctxt "@label" msgid "Enable gradual" -msgstr "" +msgstr "Geleidelijke vulling inschakelen" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" @@ -3838,7 +3814,7 @@ msgstr "Materiaal" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 msgctxt "@label" msgid "Check material compatibility" -msgstr "" +msgstr "Materiaalcompatibiliteit controleren" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" @@ -3898,12 +3874,12 @@ msgstr "Godmodus" #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "description" msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "" +msgstr "Accepteert G-code en verzendt deze code via wifi naar een Doodle3D WiFi-Box." #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "name" msgid "Doodle3D WiFi-Box" -msgstr "" +msgstr "Doodle3D WiFi-Box" #: ChangeLogPlugin/plugin.json msgctxt "description" @@ -3958,17 +3934,17 @@ msgstr "UM3-netwerkverbinding" #: CuraPrintClusterUpload/plugin.json msgctxt "name" msgid "UM3 Network Connection (Cluster)" -msgstr "" +msgstr "UM3-netwerkverbinding (Cluster)" #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." -msgstr "" +msgstr "Controleert op firmware-updates." #: FirmwareUpdateChecker/plugin.json msgctxt "name" msgid "Firmware Update Checker" -msgstr "" +msgstr "Firmware-updatecontrole" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" @@ -4063,12 +4039,12 @@ msgstr "Versie-upgrade van 2.5 naar 2.6." #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -msgstr "" +msgstr "Hiermee worden configuraties bijgewerkt van Cura 2.7 naar Cura 3.0." #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" -msgstr "" +msgstr "Versie-upgrade van 2.7 naar 3.0" #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" @@ -4992,4 +4968,4 @@ msgstr "Cura-profiellezer" #~ msgctxt "@label:" #~ msgid "Print Again" -#~ msgstr "Opnieuw Printen" +#~ msgstr "Opnieuw Printen" \ No newline at end of file diff --git a/resources/i18n/nl_NL/fdmprinter.def.json.po b/resources/i18n/nl_NL/fdmprinter.def.json.po index 8814e03e1c..03c3cc8d38 100644 --- a/resources/i18n/nl_NL/fdmprinter.def.json.po +++ b/resources/i18n/nl_NL/fdmprinter.def.json.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" +"Project-Id-Version: Cura 2.7\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-11 14:31+0200\n" +"PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -1118,7 +1118,7 @@ msgstr "Willekeurig" #: fdmprinter.def.json msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" -msgstr "" +msgstr "Scherpste hoek" #: fdmprinter.def.json msgctxt "z_seam_x label" @@ -1143,32 +1143,32 @@ msgstr "De Y-coördinaat van de positie nabij waar met het printen van elk deel #: fdmprinter.def.json msgctxt "z_seam_corner label" msgid "Seam Corner Preference" -msgstr "" +msgstr "Voorkeur van naad en hoek" #: fdmprinter.def.json msgctxt "z_seam_corner description" msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "" +msgstr "Instellen of hoeken in het model invloed hebben op de positie van de naad. Geen wil zeggen dat hoeken geen invloed hebben op de positie van de naad. Met Naad verbergen is de kans groter dat de naad op een binnenhoek komt. Met Naad zichtbaar maken is de kans groter dat de naad op een buitenhoek komt. Met Naad verbergen of Naad zichtbaar maken is de kans groter dat de naad op een binnen- of buitenhoek komt." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" msgid "None" -msgstr "" +msgstr "Geen" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_inner" msgid "Hide Seam" -msgstr "" +msgstr "Naad verbergen" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_outer" msgid "Expose Seam" -msgstr "" +msgstr "Naad zichtbaar maken" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" -msgstr "" +msgstr "Naad verbergen of zichtbaar maken" #: fdmprinter.def.json msgctxt "z_seam_relative label" @@ -1248,7 +1248,7 @@ msgstr "Vulpatroon" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "Het patroon van het vulmateriaal van de print. De lijn- en zigzagvulling veranderen per vullaag van richting, waardoor wordt bespaard op materiaalkosten. De raster-, driehoeks-, kubische, achtvlaks-, afgeknotte kubus- en concentrische patronen worden elke laag volledig geprint. Kubische, afgeknotte kubus- en achtvlaksvullingen veranderen elke laag voor een meer gelijke krachtsverdeling in elke richting." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1278,12 +1278,12 @@ msgstr "Kubische onderverdeling" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" msgid "Octet" -msgstr "" +msgstr "Achtvlak" #: fdmprinter.def.json msgctxt "infill_pattern option quarter_cubic" msgid "Quarter Cubic" -msgstr "" +msgstr "Afgeknotte kubus" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1303,22 +1303,22 @@ msgstr "Zigzag" #: fdmprinter.def.json msgctxt "infill_pattern option cross" msgid "Cross" -msgstr "" +msgstr "Kruis" #: fdmprinter.def.json msgctxt "infill_pattern option cross_3d" msgid "Cross 3D" -msgstr "" +msgstr "Kruis 3D" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" msgid "Connect Infill Lines" -msgstr "" +msgstr "Vullijnen verbinden" #: fdmprinter.def.json msgctxt "zig_zaggify_infill description" msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." -msgstr "" +msgstr "Verbindt de uiteinden waar het vulpatroon bij de binnenwand komt met een lijn die de vorm van de binnenwand volgt. Als u deze instelling inschakelt, kan de vulling beter hechten aan de wanden en wordt de invloed van de vulling op de kwaliteit van de verticale oppervlakken kleiner. Als u deze instelling uitschakelt, wordt er minder materiaal gebruikt." #: fdmprinter.def.json msgctxt "infill_angles label" @@ -1443,32 +1443,32 @@ msgstr "Genereer geen gebieden met vulling die kleiner zijn dan deze waarde (geb #: fdmprinter.def.json msgctxt "skin_preshrink label" msgid "Skin Removal Width" -msgstr "" +msgstr "Verwijderingsbreedte skin" #: fdmprinter.def.json msgctxt "skin_preshrink description" msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." -msgstr "" +msgstr "De grootste breedte van skingebieden die verwijderd moeten worden. Elk skingebied dat smaller is dan deze waarde zal verdwijnen. Hiermee kan op tijd en materiaal worden bespaard bij het printen van de bovenste/onderste skinlaag op schuine vlakken in het model." #: fdmprinter.def.json msgctxt "top_skin_preshrink label" msgid "Top Skin Removal Width" -msgstr "" +msgstr "Verwijderingsbreedte bovenste skinlaag" #: fdmprinter.def.json msgctxt "top_skin_preshrink description" msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." -msgstr "" +msgstr "De grootste breedte van delen van bovenste skingebieden die verwijderd moeten worden. Elk skingebied dat smaller is dan deze waarde, zal verdwijnen. Hiermee kan op tijd en materiaal worden bespaard bij het printen van de bovenste/onderste skinlaag op schuine vlakken in het model." #: fdmprinter.def.json msgctxt "bottom_skin_preshrink label" msgid "Bottom Skin Removal Width" -msgstr "" +msgstr "Verwijderingsbreedte onderste skinlaag" #: fdmprinter.def.json msgctxt "bottom_skin_preshrink description" msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." -msgstr "" +msgstr "De grootste breedte van delen van de onderste skingebieden die verwijderd moeten worden. Elk skingebied dat smaller is dan deze waarde, zal verdwijnen. Hiermee kan op tijd en materiaal worden bespaard bij het printen van de onderste skinlaag op schuine vlakken in het model." #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1478,27 +1478,27 @@ msgstr "Uitbreidingsafstand van skin" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." -msgstr "" +msgstr "De afstand waarmee de skin wordt uitgebreid in de vulling. Bij hogere waarden hecht de skin beter aan het vulpatroon en hechten de wanden van aangrenzende lagen beter aan de skin. Bij lagere waarden wordt er minder materiaal gebruikt." #: fdmprinter.def.json msgctxt "top_skin_expand_distance label" msgid "Top Skin Expand Distance" -msgstr "" +msgstr "Uitbreidingsafstand van bovenste skinlaag" #: fdmprinter.def.json msgctxt "top_skin_expand_distance description" msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." -msgstr "" +msgstr "De afstand waarmee de bovenste skinlagen worden uitgebreid in de vulling. Bij hogere waarden hecht de skin beter aan het vulpatroon en hechten de wanden op de bovenliggende laag beter aan de skin. Bij lagere waarden wordt er minder materiaal gebruikt." #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance label" msgid "Bottom Skin Expand Distance" -msgstr "" +msgstr "Uitbreidingsafstand van onderste skinlaag" #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance description" msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." -msgstr "" +msgstr "De afstand waarmee de onderste skinlagen worden uitgebreid in de vulling. Bij hogere waarden hecht de skin beter aan het vulpatroon en de wanden van de onderliggende laag. Bij lagere waarden wordt er minder materiaal gebruikt." #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -2818,7 +2818,7 @@ msgstr "Zigzag" #: fdmprinter.def.json msgctxt "support_pattern option cross" msgid "Cross" -msgstr "" +msgstr "Kruis" #: fdmprinter.def.json msgctxt "support_connect_zigzags label" @@ -2833,32 +2833,32 @@ msgstr "Verbind de zigzaglijnen. Hiermee versterkt u de zigzag-supportstructuur. #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" -msgstr "" +msgstr "Supportstructuur in stukken breken" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." -msgstr "" +msgstr "Sla enkele verbindingen tussen lijnen van de supportstructuur over zodat deze gemakkelijker kan worden weggebroken. Deze instelling is van toepassing op het zigzag-vulpatroon van de supportstructuur." #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm label" msgid "Support Chunk Size" -msgstr "" +msgstr "Grootte supportstuk" #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm description" msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." -msgstr "" +msgstr "Sla elke N millimeter een verbinding tussen de lijnen van de supportstructuur over, zodat deze gemakkelijker kan worden weggebroken." #: fdmprinter.def.json msgctxt "support_zag_skip_count label" msgid "Support Chunk Line Count" -msgstr "" +msgstr "Aantal lijnen supportstuk" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" msgid "Skip one in every N connection lines to make the support structure easier to break away." -msgstr "" +msgstr "Sla elke N verbindingslijnen één lijn over zodat de supportstructuur gemakkelijker kan worden weggebroken." #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3400,9 +3400,7 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance, multiple skirt lines will extend outwards from this distance." -msgstr "" -"De horizontale afstand tussen de skirt en de eerste laag van de print.\n" -"Dit is de minimumafstand; als u meerdere skirtlijnen print, worden deze vanaf deze afstand naar buiten geprint." +msgstr "De horizontale afstand tussen de skirt en de eerste laag van de print.\nDit is de minimumafstand; als u meerdere skirtlijnen print, worden deze vanaf deze afstand naar buiten geprint." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3447,22 +3445,22 @@ msgstr "Print de brim alleen aan de buitenkant van het model. Hiermee verkleint #: fdmprinter.def.json msgctxt "z_offset_layer_0 label" msgid "Initial Layer Z Offset" -msgstr "" +msgstr "Z-offset Eerste Laag" #: fdmprinter.def.json msgctxt "z_offset_layer_0 description" msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." -msgstr "" +msgstr "De extruder wordt in deze mate gecorrigeerd ten opzichte van de normale hoogte van de eerste laag. Dit kan plus (verhoogd) of min (verlaagd) zijn. Sommige soorten filament hechten beter op het platform als de extruder iets hoger staat." #: fdmprinter.def.json msgctxt "z_offset_taper_layers label" msgid "Z Offset Taper Layers" -msgstr "" +msgstr "Z-offset Taps Toelopende Lagen" #: fdmprinter.def.json msgctxt "z_offset_taper_layers description" msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." -msgstr "" +msgstr "Wanneer de waarde niet is ingesteld op 0, dan wordt de Z-offset over zoveel lagen verkleind tot 0. Wanneer de waarde op 0 is ingesteld, blijft de Z-offset voor alle lagen in de print gelijk." #: fdmprinter.def.json msgctxt "raft_margin label" @@ -3477,12 +3475,12 @@ msgstr "Als de raft is ingeschakeld, is dit het extra raftgebied rond het model #: fdmprinter.def.json msgctxt "raft_smoothing label" msgid "Raft Smoothing" -msgstr "" +msgstr "Raft effenen" #: fdmprinter.def.json msgctxt "raft_smoothing description" msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." -msgstr "" +msgstr "Deze instelling bepaalt hoeveel binnenhoeken in de raftcontour worden afgerond. Naar binnen gebogen hoeken worden tot een halve cirkel afgerond met een straal die gelijk is aan de hier opgegeven waarde. Met deze instellingen worden ook gaten in de raftcontour verwijderd die kleiner zijn dan een dergelijke cirkel." #: fdmprinter.def.json msgctxt "raft_airgap label" @@ -4162,12 +4160,12 @@ msgstr "Maak de gespiraliseerde contouren vlak om de zichtbaarheid van de Z-naad #: fdmprinter.def.json msgctxt "relative_extrusion label" msgid "Relative Extrusion" -msgstr "" +msgstr "Relatieve extrusie" #: fdmprinter.def.json msgctxt "relative_extrusion description" msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." -msgstr "" +msgstr "Gebruik relatieve extrusie in plaats van absolute extrusie. Bij het gebruik van relatieve E-steps wordt het nabewerken van G-code gemakkelijker. Deze optie wordt echter niet door alle printers ondersteund en kan lichte afwijkingen vertonen in de hoeveelheid afgezet materiaal ten opzichte van absolute E-steps. Ongeacht deze instelling wordt de extrusiemodus altijd ingesteld op absoluut voordat er een G-code-script wordt uitgevoerd.." #: fdmprinter.def.json msgctxt "experimental label" @@ -4182,12 +4180,12 @@ msgstr "experimenteel!" #: fdmprinter.def.json msgctxt "optimize_wall_printing_order label" msgid "Optimize Wall Printing Order" -msgstr "" +msgstr "Printvolgorde van wanden optimaliseren" #: fdmprinter.def.json msgctxt "optimize_wall_printing_order description" msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "" +msgstr "Optimaliseer de volgorde waarin wanden worden geprint om het aantal intrekbewegingen en de afgelegde afstand te verkleinen. Deze instelling is gunstig voor de meeste onderdelen. Bij sommige onderdelen duurt het printen echter langer. Controleer daarom de verwachte printtijd met en zonder optimalisatie." #: fdmprinter.def.json msgctxt "draft_shield_enabled label" @@ -4312,22 +4310,22 @@ msgstr "Wissel de richting af waarin de boven-/onderlagen worden geprint. Normaa #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" -msgstr "" +msgstr "Luchtbelgrootte bij Kruis 3D" #: fdmprinter.def.json msgctxt "cross_infill_pocket_size description" msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." -msgstr "" +msgstr "De grootte van luchtbellen op kruispunten in het kruis 3D-patroon op punten waar het patroon zichzelf raakt." #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly label" msgid "Alternate Cross 3D Pockets" -msgstr "" +msgstr "Afwisselend luchtbellen in kruis 3D" #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly description" msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." -msgstr "" +msgstr "Laat alleen luchtbellen achter in de helft van de kruispunten in het kruis 3D-patroon en wisselt de plaats van de luchtbellen op punten waar het patroon zichzelf raakt." #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" @@ -4629,9 +4627,7 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "" -"De afstand van een opwaartse beweging waarbij de doorvoersnelheid wordt gehalveerd.\n" -"Hierdoor ontstaat een betere hechting aan voorgaande lagen, zonder dat het materiaal in die lagen te zeer wordt verwarmd. Alleen van toepassing op Draadprinten." +msgstr "De afstand van een opwaartse beweging waarbij de doorvoersnelheid wordt gehalveerd.\nHierdoor ontstaat een betere hechting aan voorgaande lagen, zonder dat het materiaal in die lagen te zeer wordt verwarmd. Alleen van toepassing op Draadprinten." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -4751,12 +4747,12 @@ msgstr "Ga nog een extra keer over de bovenlaag, echter zonder materiaal door te #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" msgid "Iron Only Highest Layer" -msgstr "" +msgstr "Alleen hoogste laag strijken" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer description" msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." -msgstr "" +msgstr "Strijk alleen de allerlaatste laag van het raster. Dit bespaart tijd als de daaronder gelegen lagen geen glad oppervlak vereisen." #: fdmprinter.def.json msgctxt "ironing_pattern label" @@ -5120,4 +5116,4 @@ msgstr "Omzettingsmatrix die moet worden toegepast op het model wanneer dit word #~ msgctxt "multiple_mesh_overlap label" #~ msgid "Dual Extrusion Overlap" -#~ msgstr "Overlap Dubbele Doorvoer" +#~ msgstr "Overlap Dubbele Doorvoer" \ No newline at end of file diff --git a/resources/i18n/tr_TR/cura.po b/resources/i18n/tr_TR/cura.po index 6de9035df8..6d3b884525 100644 --- a/resources/i18n/tr_TR/cura.po +++ b/resources/i18n/tr_TR/cura.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-11 14:30+0200\n" +"PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -24,7 +24,7 @@ msgstr "Makine Ayarları" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" msgid "X-Ray view" -msgstr "" +msgstr "Röntgen Görüntüsü" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -39,17 +39,17 @@ msgstr "GCode Dosyası" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "Doodle3D WiFi-Box ile yazdır" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 msgctxt "@properties:tooltip" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "Doodle3D WiFi-Box ile yazdır" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 msgctxt "@info:status" msgid "Connecting to Doodle3D Connect" -msgstr "" +msgstr "Doodle3D Connect’e bağlanıyor" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 @@ -73,32 +73,32 @@ msgstr "İptal et" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 msgctxt "@info:status" msgid "Sending data to Doodle3D Connect" -msgstr "" +msgstr "Doodle3D Connect’e veri gönderiliyor" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 msgctxt "@info:status" msgid "Unable to send data to Doodle3D Connect. Is another job still active?" -msgstr "" +msgstr "Doodle3D Connect’e veri gönderilemiyor. Hala etkin olan başka bir iş var mı?" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 msgctxt "@info:status" msgid "Storing data on Doodle3D Connect" -msgstr "" +msgstr "Doodle3D Connect üzerinde veri depolanıyor" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 msgctxt "@info:status" msgid "File sent to Doodle3D Connect" -msgstr "" +msgstr "Doodle3D Connect’e dosya gönderildi" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@action:button" msgid "Open Connect.." -msgstr "" +msgstr "Connect’i aç.." #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" -msgstr "" +msgstr "Doodle3D Connect web arayüzünü aç" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -143,7 +143,7 @@ msgstr "Yazıcı meşgul veya bağlı olmadığı için yeni bir işlem başlat #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 msgctxt "@info:title" msgid "Print Details" -msgstr "" +msgstr "Yazdırma Ayrıntıları" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" @@ -153,7 +153,7 @@ msgstr "Yazıcı, UltiGCode türü kullandığı için USB yazdırmayı destekle #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:title" msgid "USB Printing" -msgstr "" +msgstr "USB Yazdırma" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" @@ -168,7 +168,7 @@ msgstr "Yazıcı USB ile yazdırmayı desteklemediği için yeni bir işlem baş #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 msgctxt "@info:title" msgid "Warning" -msgstr "" +msgstr "Uyarı" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" @@ -184,7 +184,7 @@ msgstr "%s’te yazıcı için gerekli aygıt yazılım bulunamadı." #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 msgctxt "@info:title" msgid "Printer Firmware" -msgstr "" +msgstr "Yazıcı Bellenimi" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -201,25 +201,25 @@ msgstr "Çıkarılabilir Sürücüye Kaydediliyor {0}" #, python-brace-format msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "" +msgstr "Çıkarılabilir Sürücü {0} Üzerine Kaydediliyor " #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 msgctxt "@info:title" msgid "Saving" -msgstr "" +msgstr "Kaydediliyor" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "" +msgstr "{0} dosyasına kaydedilemedi: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format msgctxt "@info:status Don't translate the tag {device}!" msgid "Could not find a file name when trying to write to {device}." -msgstr "" +msgstr "{device} üzerine yazmaya çalışırken dosya adı bulunamadı." #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 @@ -236,7 +236,7 @@ msgstr "Çıkarılabilir aygıta {0} kaydedilemedi: {1}" #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 msgctxt "@info:title" msgid "Error" -msgstr "" +msgstr "Hata" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 #, python-brace-format @@ -247,7 +247,7 @@ msgstr "Çıkarılabilir Sürücüye {0}, {1} olarak kaydedildi" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 msgctxt "@info:title" msgid "File Saved" -msgstr "" +msgstr "Dosya Kaydedildi" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 msgctxt "@action:button" @@ -269,7 +269,7 @@ msgstr "Çıkarıldı {0}. Şimdi sürücüyü güvenle kaldırabilirsiniz." #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 msgctxt "@info:title" msgid "Safely Remove Hardware" -msgstr "" +msgstr "Donanımı Güvenli Bir Şekilde Kaldırın" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format @@ -304,7 +304,7 @@ msgstr "İstenen yazıcıya erişim. Lütfen yazıcı isteğini onaylayın" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 msgctxt "@info:title" msgid "Connection status" -msgstr "" +msgstr "Bağlantı durumu" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 @@ -319,7 +319,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 msgctxt "@info:title" msgid "Connection Status" -msgstr "" +msgstr "Bağlantı Durumu" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 @@ -417,7 +417,7 @@ msgstr "Yazıcı meşgul, yeni bir yazdırma başlatılamıyor. Geçerli yazıc #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 msgctxt "@info:title" msgid "Printer Status" -msgstr "" +msgstr "Yazıcı Durumu" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 @@ -488,7 +488,7 @@ msgstr "Veriler yazıcıya gönderiliyor" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 msgctxt "@info:title" msgid "Sending Data" -msgstr "" +msgstr "Veri gönderiliyor" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 @@ -547,73 +547,73 @@ msgstr "Ağ ile Bağlan" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "Bu yazıcı, bağlı Ultimaker 3 yazıcı grubunu barındırmak için ayarlı değildir." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." -msgstr "" +msgstr "Bu yazıcı, bağlı {count} Ultimaker 3 yazıcı grubunun ana makinesidir." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." -msgstr "" +msgstr "{printer_name}, '{job_name}' yazdırmayı tamamladı. Lütfen çıktıyı alın ve yapı levhasının temizlenmesini onaylayın." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." -msgstr "" +msgstr "{printer_name}, '{job_name}' yazdırmak için ayrılmıştır. Yazıcının yazdırmayı başlatması için lütfen yazıcı yapılandırmasını işe uygun olacak şekilde değiştirin." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "" +msgstr "Yeni işlerin gönderilmesi (geçici olarak) engellenmiştir, hala bir önceki yazdırma işi gönderiliyor." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "Yeni yazdırma işi gönderilemiyor: bu 3D yazıcı, bağlı Ultimaker 3 yazıcı grubunu barındırmak için (henüz) ayarlı değildir." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" -msgstr "" +msgstr "{file_name}, {cluster_name} grubuna gönderiliyor" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." -msgstr "" +msgstr "{file_name}, {cluster_name} grubuna gönderildi." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" -msgstr "" +msgstr "Yazdırma işlerini göster" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." -msgstr "" +msgstr "Yazdırma işleri arayüzünü tarayıcınızda açar." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." -msgstr "" +msgstr "Yazdırma işi, {cluster_name} grubuna gönderilemiyor." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." -msgstr "" +msgstr "Makinenizin {machine_name} en son özellikler ile donanımlı olmasını sağlamak için bellenimi düzenli olarak güncellenmeniz önerilir. Bu, (ağa bağlı olduğunuzda) {machine_name} üzerinde veya USB ile gerçekleştirilebilir." #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" -msgstr "" +msgstr "Yeni %s bellenimi mevcut" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 @@ -624,7 +624,7 @@ msgstr "İndir" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 msgctxt "@info" msgid "Could not access update information." -msgstr "" +msgstr "Güncelleme bilgilerine erişilemedi." #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" @@ -663,7 +663,7 @@ msgstr "Cura anonim dilimleme istatistiklerini toplar. Bu özelliği tercihlerde #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" msgid "Collecting Data" -msgstr "" +msgstr "Veri Toplanıyor" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" @@ -684,7 +684,7 @@ msgstr "G-code dosyası" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" msgid "Layer view" -msgstr "" +msgstr "Katman görünümü" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" @@ -694,7 +694,7 @@ msgstr "Tel Yazma etkinleştirildiğinde, Cura katmanları doğru olarak görün #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 msgctxt "@info:title" msgid "Layer View" -msgstr "" +msgstr "Katman Görünümü" #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -724,7 +724,7 @@ msgstr "GIF Resmi" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." -msgstr "" +msgstr "Mevcut malzeme, seçilen makine veya yapılandırma ile uyumlu olmadığından mevcut malzeme ile dilimlenemedi." #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 @@ -732,7 +732,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 msgctxt "@info:title" msgid "Unable to slice" -msgstr "" +msgstr "Dilimlenemedi" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format @@ -759,7 +759,7 @@ msgstr "Katmanlar İşleniyor" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 msgctxt "@info:title" msgid "Information" -msgstr "" +msgstr "Bilgi" #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" @@ -798,18 +798,18 @@ msgstr "Nozül" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 msgctxt "@menuitem" msgid "Browse plugins" -msgstr "" +msgstr "Eklentilere göz at" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" -msgstr "" +msgstr "Eklenti kimliği, {0} dosyasından alınamadı" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 msgctxt "@info:tile" msgid "Warning" -msgstr "" +msgstr "Uyarı" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" @@ -819,7 +819,7 @@ msgstr "Eklenti tarayıcısı" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" msgid "Solid view" -msgstr "" +msgstr "Gerçek görünüm" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -835,7 +835,7 @@ msgstr "G-code ayrıştırma" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 msgctxt "@info:title" msgid "G-code Details" -msgstr "" +msgstr "G-code Ayrıntıları" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" @@ -917,7 +917,7 @@ msgstr "Destek" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Skirt" -msgstr "" +msgstr "Etek" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" @@ -958,7 +958,7 @@ msgstr "Nesneler için yeni konum bulunuyor" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 msgctxt "@info:title" msgid "Finding Location" -msgstr "" +msgstr "Konumu Buluyor" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 @@ -969,7 +969,7 @@ msgstr "Yapılan hacim içinde tüm nesneler için konum bulunamadı" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 msgctxt "@info:title" msgid "Can't Find Location" -msgstr "" +msgstr "Konum Bulunamıyor" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 @@ -982,7 +982,7 @@ msgstr "Dosya Zaten Mevcut" #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "" +msgstr "Dosya {0} zaten mevcut. Üstüne yazmak istediğinizden emin misiniz?" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" @@ -1003,7 +1003,7 @@ msgstr "Seçilen malzeme, seçilen makine veya yapılandırma ile uyumlu değil. #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" -msgstr "" +msgstr "Uyumsuz Malzeme" #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:status Has a cancel button next to it." @@ -1024,24 +1024,24 @@ msgstr "Malzeme çapını değiştirme işlemini geri al." #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "" +msgstr "Profilin {0} dosyasına aktarımı başarısız oldu: {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "" +msgstr "Profilin {0} dosyasına aktarımı başarısız oldu: Yazıcı eklentisinde rapor edilen hata." #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "" +msgstr "Profil {0} dosyasına aktarıldı" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 msgctxt "@info:title" msgid "Export Details" -msgstr "" +msgstr "Dışa Aktarım Ayrıntıları" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 @@ -1050,7 +1050,7 @@ msgstr "" #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "" +msgstr "{0} dosyasından profil içe aktarımı başarısız oldu: {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 @@ -1089,7 +1089,7 @@ msgstr "Portalın yazdırılan modeller ile çarpışmasını önlemek için yap #: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 msgctxt "@info:title" msgid "Build Volume" -msgstr "" +msgstr "Yapı Disk Bölümü" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" @@ -1100,7 +1100,7 @@ msgstr "Nesneler çoğaltılıyor ve yerleştiriliyor" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:title" msgid "Placing Object" -msgstr "" +msgstr "Nesne Yerleştiriliyor" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" @@ -1113,10 +1113,7 @@ msgid "" "

A fatal exception has occurred that we could not recover from!

\n" "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" " " -msgstr "" -"

Kurtulunamayan ciddi bir olağanüstü durum oluştu!

\n" -"

Yazılım hatası raporunu http://github.com/Ultimaker/Cura/issues adresine gönderirken aşağıdaki bilgileri kullanınız

\n" -" " +msgstr "

Kurtulunamayan ciddi bir olağanüstü durum oluştu!

\n

Yazılım hatası raporunu http://github.com/Ultimaker/Cura/issues adresine gönderirken aşağıdaki bilgileri kullanınız

\n " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 msgctxt "@action:button" @@ -1418,10 +1415,7 @@ msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "" -"Yazıcınıza ağ üzerinden doğrudan bağlamak için, lütfen yazıcınızın ağ kablosu kullanan bir ağa bağlı olduğundan emin olun veya yazıcınızı WiFi ağına bağlayın. Cura'ya yazıcınız ile bağlanamıyorsanız g-code dosyalarını yazıcınıza aktarmak için USB sürücüsü kullanabilirsiniz.\n" -"\n" -"Aşağıdaki listeden yazıcınızı seçin:" +msgstr "Yazıcınıza ağ üzerinden doğrudan bağlamak için, lütfen yazıcınızın ağ kablosu kullanan bir ağa bağlı olduğundan emin olun veya yazıcınızı WiFi ağına bağlayın. Cura'ya yazıcınız ile bağlanamıyorsanız g-code dosyalarını yazıcınıza aktarmak için USB sürücüsü kullanabilirsiniz.\n\nAşağıdaki listeden yazıcınızı seçin:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 @@ -1547,17 +1541,17 @@ msgstr "Yapılandırmayı Etkinleştir" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 msgctxt "@label" msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "Bu yazıcı, bağlı Ultimaker 3 yazıcı grubunu barındırmak için ayarlı değildir" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 msgctxt "@label" msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" -msgstr "" +msgstr "Bu yazıcı, %1 bağlı Ultimaker 3 yazıcı grubunun ana makinesidir" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" -msgstr "" +msgstr "Ağ üzerinden yazdır" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 msgctxt "@action:button" @@ -1567,98 +1561,98 @@ msgstr "Yazdır" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "%1, bağlı Ultimaker 3 yazıcı grubunu barındırmak için ayarlı değildir" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 msgctxt "@label:status" msgid "Printing" -msgstr "" +msgstr "Yazdırma" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 msgctxt "@label:status" msgid "Reserved" -msgstr "" +msgstr "Rezerve edildi" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 msgctxt "@label:status" msgid "Finished" -msgstr "" +msgstr "Tamamlandı" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 msgctxt "@label:status" msgid "Preparing" -msgstr "" +msgstr "Hazırlanıyor" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 msgctxt "@label:status" msgid "Available" -msgstr "" +msgstr "Mevcut" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 msgctxt "@label" msgid "Completed on: " -msgstr "" +msgstr "Tamamlandığı tarih: " #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 msgctxt "@label" msgid "Clear build plate" -msgstr "" +msgstr "Yapı levhasını temizle" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 msgctxt "@label" msgid "Preparing to print" -msgstr "" +msgstr "Yazdırmaya hazırlanıyor" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 msgctxt "@label" msgid "Not accepting print jobs" -msgstr "" +msgstr "Yazdırma işleri kabul edilmiyor" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." -msgstr "" +msgstr "Yazdırma işlerini varsayılan web tarayıcınızda açar." #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 msgctxt "@action:button" msgid "View print jobs" -msgstr "" +msgstr "Yazdırma işlerini görüntüle" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 msgctxt "@label" msgid "PRINTER GROUP" -msgstr "" +msgstr "YAZICI GRUBU" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 msgctxt "@title" msgid "Print jobs" -msgstr "" +msgstr "Yazdırma görevleri" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 msgctxt "@label" msgid "Printing" -msgstr "" +msgstr "Yazdırma" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 msgctxt "@label" msgid "Queued" -msgstr "" +msgstr "Kuyrukta" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 msgctxt "@label" msgid "Waiting for configuration change" -msgstr "" +msgstr "Yapılandırma değişikliğini bekliyor" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 msgctxt "@label:title" msgid "Printers" -msgstr "" +msgstr "Yazıcılar" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 msgctxt "@action:button" msgid "View printers" -msgstr "" +msgstr "Yazıcıları görüntüle" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" @@ -2049,7 +2043,7 @@ msgstr "Yüklü" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" -msgstr "" +msgstr "Eklenti Lisans Anlaşması" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" @@ -2057,17 +2051,17 @@ msgid "" " plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "" +msgstr " eklenti lisans içerir.\nBu eklentiyi kurmak için bu lisans kabul etmeniz gerekir.\nAşağıdaki koşulları kabul ediyor musunuz?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" msgid "Accept" -msgstr "" +msgstr "Kabul et" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 msgctxt "@action:button" msgid "Decline" -msgstr "" +msgstr "Reddet" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -2322,9 +2316,7 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "" -"Bazı profil ayarlarını özelleştirdiniz.\n" -"Bu ayarları kaydetmek veya iptal etmek ister misiniz?" +msgstr "Bazı profil ayarlarını özelleştirdiniz.\nBu ayarları kaydetmek veya iptal etmek ister misiniz?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -2908,12 +2900,12 @@ msgstr "Malzemeyi İçe Aktar" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "" +msgstr "Malzeme %1 dosyasına içe aktarılamadı: %2" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "" +msgstr "Malzeme %1 dosyasına başarıyla içe aktarıldı" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2924,12 +2916,12 @@ msgstr "Malzemeyi Dışa Aktar" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "" +msgstr "Malzemenin %1 dosyasına dışa aktarımı başarısız oldu: %2" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "" +msgstr "Malzeme %1 dosyasına başarıyla dışa aktarıldı" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 @@ -2962,9 +2954,7 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "" -"Cura, topluluk iş birliği ile Ultimaker B.V. tarafından geliştirilmiştir.\n" -"Cura aşağıdaki açık kaynak projelerini gururla kullanmaktadır:" +msgstr "Cura, topluluk iş birliği ile Ultimaker B.V. tarafından geliştirilmiştir.\nCura aşağıdaki açık kaynak projelerini gururla kullanmaktadır:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -3067,10 +3057,7 @@ msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "" -"Bazı ayar/geçersiz kılma değerleri profilinizde saklanan değerlerden farklıdır.\n" -"\n" -"Profil yöneticisini açmak için tıklayın." +msgstr "Bazı ayar/geçersiz kılma değerleri profilinizde saklanan değerlerden farklıdır.\n\nProfil yöneticisini açmak için tıklayın." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" @@ -3108,10 +3095,7 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "" -"Gizlenen bazı ayarlar normal hesaplanan değerden farklı değerler kullanır.\n" -"\n" -"Bu ayarları görmek için tıklayın." +msgstr "Gizlenen bazı ayarlar normal hesaplanan değerden farklı değerler kullanır.\n\nBu ayarları görmek için tıklayın." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 msgctxt "@label Header for list of settings." @@ -3139,10 +3123,7 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "" -"Bu ayarın değeri profilden farklıdır.\n" -"\n" -"Profil değerini yenilemek için tıklayın." +msgstr "Bu ayarın değeri profilden farklıdır.\n\nProfil değerini yenilemek için tıklayın." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 msgctxt "@label" @@ -3150,10 +3131,7 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "" -"Bu ayar normal olarak yapılır ama şu anda mutlak değer ayarı var.\n" -"\n" -"Hesaplanan değeri yenilemek için tıklayın." +msgstr "Bu ayar normal olarak yapılır ama şu anda mutlak değer ayarı var.\n\nHesaplanan değeri yenilemek için tıklayın." #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" @@ -3165,9 +3143,7 @@ msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "" -"Yazdırma Ayarı devre dışı\n" -"G-code dosyaları üzerinde değişiklik yapılamaz" +msgstr "Yazdırma Ayarı devre dışı\nG-code dosyaları üzerinde değişiklik yapılamaz" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 msgctxt "@label" @@ -3177,22 +3153,22 @@ msgstr "00sa 00dk" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 msgctxt "@tooltip" msgid "Time information" -msgstr "" +msgstr "Süre bilgisi" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 msgctxt "@description" msgid "Print time" -msgstr "" +msgstr "Yazdırma süresi" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 msgctxt "@label" msgid "%1m / ~ %2g / ~ %4 %3" -msgstr "" +msgstr "%1m / ~ %2g / ~ %4 %3" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 msgctxt "@label" msgid "%1m / ~ %2g" -msgstr "" +msgstr "%1m / ~ %2g" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" @@ -3252,12 +3228,12 @@ msgstr "Yazıcı bağlı değil" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" msgid "Extruder" -msgstr "" +msgstr "Ekstrüder" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." -msgstr "" +msgstr "Sıcak ucun hedef sıcaklığı. Sıcak uç, bu sıcaklığa doğru ısıtılır veya soğutulur. Bu ayar 0 olarak belirlenirse sıcak uç ısıtma kapatılır." #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" @@ -3726,27 +3702,27 @@ msgstr "Hazırla" #: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" msgid "Monitor" -msgstr "" +msgstr "İzle" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 msgctxt "@label" msgid "Layer Height" -msgstr "" +msgstr "Katman Yüksekliği" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 msgctxt "@label" msgid "Print Speed" -msgstr "" +msgstr "Yazdırma Hızı" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 msgctxt "@label" msgid "Slower" -msgstr "" +msgstr "Daha yavaş" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 msgctxt "@label" msgid "Faster" -msgstr "" +msgstr "Daha Hızlı" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" @@ -3761,7 +3737,7 @@ msgstr "Kademeli dolgu, yukarıya doğru dolgu miktarını kademeli olarak yüks #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 msgctxt "@label" msgid "Enable gradual" -msgstr "" +msgstr "Kademeli özelliği etkinleştir" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" @@ -3838,7 +3814,7 @@ msgstr "Malzeme" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 msgctxt "@label" msgid "Check material compatibility" -msgstr "" +msgstr "Malzeme uyumunu denetle" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" @@ -3898,12 +3874,12 @@ msgstr "Tanrı Modu" #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "description" msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "" +msgstr "G-Code’u kabul eder ve WiFi üzerinden Doodle3D WiFi-Box'a gönderir." #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "name" msgid "Doodle3D WiFi-Box" -msgstr "" +msgstr "Doodle3D WiFi-Box" #: ChangeLogPlugin/plugin.json msgctxt "description" @@ -3958,17 +3934,17 @@ msgstr "UM3 Ağ Bağlantısı" #: CuraPrintClusterUpload/plugin.json msgctxt "name" msgid "UM3 Network Connection (Cluster)" -msgstr "" +msgstr "UM3 Ağ Bağlantısı (Küme)" #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." -msgstr "" +msgstr "Bellenim güncellemelerini denetler." #: FirmwareUpdateChecker/plugin.json msgctxt "name" msgid "Firmware Update Checker" -msgstr "" +msgstr "Bellenim Güncelleme Denetleyicisi" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" @@ -4063,12 +4039,12 @@ msgstr "2.5’ten 2.6’ya Sürüm Yükseltme" #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -msgstr "" +msgstr "Yapılandırmaları Cura 2.7’den Cura 3.0’a yükseltir." #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" -msgstr "" +msgstr "2.7’den 3.0’a Sürüm Yükseltme" #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" @@ -4973,4 +4949,4 @@ msgstr "Cura Profil Okuyucu" #~ msgctxt "@label:" #~ msgid "Print Again" -#~ msgstr "Yeniden Yazdır" +#~ msgstr "Yeniden Yazdır" \ No newline at end of file diff --git a/resources/i18n/tr_TR/fdmprinter.def.json.po b/resources/i18n/tr_TR/fdmprinter.def.json.po index c5ae253cfd..b67557a126 100644 --- a/resources/i18n/tr_TR/fdmprinter.def.json.po +++ b/resources/i18n/tr_TR/fdmprinter.def.json.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-11 14:31+0200\n" +"PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -56,9 +56,7 @@ msgctxt "machine_start_gcode description" msgid "" "Gcode commands to be executed at the very start - separated by \n" "." -msgstr "" -"​\n" -" ile ayrılan, başlangıçta yürütülecek G-code komutları." +msgstr "​\n ile ayrılan, başlangıçta yürütülecek G-code komutları." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -70,9 +68,7 @@ msgctxt "machine_end_gcode description" msgid "" "Gcode commands to be executed at the very end - separated by \n" "." -msgstr "" -"​\n" -" ile ayrılan, bitişte yürütülecek Gcode komutları." +msgstr "​\n ile ayrılan, bitişte yürütülecek Gcode komutları." #: fdmprinter.def.json msgctxt "material_guid label" @@ -1122,7 +1118,7 @@ msgstr "Gelişigüzel" #: fdmprinter.def.json msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" -msgstr "" +msgstr "En Keskin Köşe" #: fdmprinter.def.json msgctxt "z_seam_x label" @@ -1147,32 +1143,32 @@ msgstr "Bir katmandaki her kısmın yazdırılmaya başlanacağı yere yakın ko #: fdmprinter.def.json msgctxt "z_seam_corner label" msgid "Seam Corner Preference" -msgstr "" +msgstr "Dikiş Köşesi Tercihi" #: fdmprinter.def.json msgctxt "z_seam_corner description" msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "" +msgstr "Modelin ana hatlarında yer alan köşelerin dikişin konumunu etkileyip etkilemediğini kontrol edin. Hiçbiri, köşelerin dikişin konumunu etkilemediği anlamına gelir. Dikişi Gizle, dikişin daha büyük olasılıkla bir iç köşe üzerinde oluşmasını sağlar. Dikişi Açığa Çıkar, dikişin daha büyük olasılıkla bir dış köşe üzerinde oluşmasını sağlar. Dikişi Gizle veya Açığa Çıkar, dikişin daha büyük olasılıkla bir iç veya dış köşe üzerinde oluşmasını sağlar." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" msgid "None" -msgstr "" +msgstr "Hiçbiri" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_inner" msgid "Hide Seam" -msgstr "" +msgstr "Dikişi Gizle" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_outer" msgid "Expose Seam" -msgstr "" +msgstr "Dikişi Açığa Çıkar" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" -msgstr "" +msgstr "Dikişi Gizle veya Açığa Çıkar" #: fdmprinter.def.json msgctxt "z_seam_relative label" @@ -1252,7 +1248,7 @@ msgstr "Dolgu Şekli" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "Yazdırma dolgu malzemesinin şeklidir. Hat ve zikzak dolgu, farklı katmanlar üzerinde yön değiştirerek malzeme maliyetini azaltır. Izgara, üçgen, kübik, sekizlik, çeyrek kübik ve eş merkezli şekiller, her katmanda tam olarak yazdırılır. Kübik, çeyrek kübik ve sekizlik dolgu, her yönde daha eşit bir kuvvet dağılımı sağlamak için her katmanda değişir." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1282,12 +1278,12 @@ msgstr "Kübik Alt Bölüm" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" msgid "Octet" -msgstr "" +msgstr "Sekizlik" #: fdmprinter.def.json msgctxt "infill_pattern option quarter_cubic" msgid "Quarter Cubic" -msgstr "" +msgstr "Çeyrek Kübik" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1307,22 +1303,22 @@ msgstr "Zik Zak" #: fdmprinter.def.json msgctxt "infill_pattern option cross" msgid "Cross" -msgstr "" +msgstr "Çapraz" #: fdmprinter.def.json msgctxt "infill_pattern option cross_3d" msgid "Cross 3D" -msgstr "" +msgstr "Çapraz 3D" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" msgid "Connect Infill Lines" -msgstr "" +msgstr "Dolgu Hatlarını Bağlayın" #: fdmprinter.def.json msgctxt "zig_zaggify_infill description" msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." -msgstr "" +msgstr "İç duvarın şeklini takip eden bir hattı kullanarak, dolgu şeklinin iç duvarla buluştuğu noktada uçları bağlayın. Bu ayarın etkinleştirilmesi, dolgunun duvarlara daha iyi yapışmasını sağlayabilir ve dolgunun dikey yüzeylerin kalitesi üzerindeki etkilerini azaltır. Bu ayarın devre dışı bırakılması, kullanılan malzemenin miktarını azaltır." #: fdmprinter.def.json msgctxt "infill_angles label" @@ -1447,32 +1443,32 @@ msgstr "Bundan küçük dolgu alanları oluşturma (onun yerine yüzey kullan)." #: fdmprinter.def.json msgctxt "skin_preshrink label" msgid "Skin Removal Width" -msgstr "" +msgstr "Yüzey Kaldırma Genişliği" #: fdmprinter.def.json msgctxt "skin_preshrink description" msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." -msgstr "" +msgstr "Kaldırılacak olan yüzey alanlarının en büyük genişliğidir. Bu değerden daha küçük olan her yüzey alanı kaybolacaktır. Bu, modeldeki eğimli yüzeylerde alt/üst yüzeyin yazdırılması için harcanan süreyi ve malzemeyi sınırlamaya yardımcı olabilir." #: fdmprinter.def.json msgctxt "top_skin_preshrink label" msgid "Top Skin Removal Width" -msgstr "" +msgstr "Üst Yüzey Kaldırma Genişliği" #: fdmprinter.def.json msgctxt "top_skin_preshrink description" msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." -msgstr "" +msgstr "Kaldırılacak olan üst yüzey alanlarının en büyük genişliğidir. Bu değerden daha küçük olan her yüzey alanı kaybolacaktır. Bu, modeldeki eğimli yüzeylerde üst yüzeyin yazdırılması için harcanan süreyi ve malzemeyi sınırlamaya yardımcı olabilir." #: fdmprinter.def.json msgctxt "bottom_skin_preshrink label" msgid "Bottom Skin Removal Width" -msgstr "" +msgstr "Alt Yüzey Kaldırma Genişliği" #: fdmprinter.def.json msgctxt "bottom_skin_preshrink description" msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." -msgstr "" +msgstr "Kaldırılacak olan alt yüzey alanlarının en büyük genişliğidir. Bu değerden daha küçük olan her yüzey alanı kaybolacaktır. Bu, modeldeki eğimli yüzeylerde alt yüzeyin yazdırılması için harcanan süreyi ve malzemeyi sınırlamaya yardımcı olabilir." #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1482,27 +1478,27 @@ msgstr "Yüzey Genişleme Mesafesi" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." -msgstr "" +msgstr "Yüzeylerin dolgunun içine doğru genişleyeceği mesafedir. Daha yüksek değerler, yüzeyin dolgu şekline daha iyi tutunmasını sağladığı gibi komşu katmanlardaki duvarların yüzeye daha iyi yapışmasını sağlar. Daha düşük değerler, kullanılan malzemenin miktarından tasarruf yapılmasını sağlar." #: fdmprinter.def.json msgctxt "top_skin_expand_distance label" msgid "Top Skin Expand Distance" -msgstr "" +msgstr "Üst Yüzey Genişleme Mesafesi" #: fdmprinter.def.json msgctxt "top_skin_expand_distance description" msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." -msgstr "" +msgstr "Üst yüzeylerin dolgunun içine doğru genişleyeceği mesafedir. Daha yüksek değerler, yüzeyin dolgu şekline daha iyi tutunmasını sağladığı gibi yukarıdaki katmandaki duvarların yüzeye daha iyi yapışmasını sağlar. Daha düşük değerler, kullanılan malzemenin miktarından tasarruf yapılmasını sağlar." #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance label" msgid "Bottom Skin Expand Distance" -msgstr "" +msgstr "Alt Yüzey Genişleme Mesafesi" #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance description" msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." -msgstr "" +msgstr "Alt yüzeylerin dolgunun içine doğru genişleyeceği mesafedir. Daha yüksek değerler, yüzeyin dolgu şekline daha iyi tutunmasını sağladığı gibi yüzeyin aşağıdaki katmandaki duvara daha iyi yapışmasını sağlar. Daha düşük değerler, kullanılan malzemenin miktarından tasarruf yapılmasını sağlar." #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -2822,7 +2818,7 @@ msgstr "Zik Zak" #: fdmprinter.def.json msgctxt "support_pattern option cross" msgid "Cross" -msgstr "" +msgstr "Çapraz" #: fdmprinter.def.json msgctxt "support_connect_zigzags label" @@ -2837,32 +2833,32 @@ msgstr "Zikzakları Bağla Zik zak destek yapısının sağlamlığını artır #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" -msgstr "" +msgstr "Parçalarda Döküm Desteği" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." -msgstr "" +msgstr "Destek yapısının daha kolay kırılması için bazı destek hattı bağlantılarını atlayın. Bu ayar, Zikzak destek dolgusu şekli için geçerlidir." #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm label" msgid "Support Chunk Size" -msgstr "" +msgstr "Destek Parçasının Boyutu" #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm description" msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." -msgstr "" +msgstr "Destek yapısının daha kolay kırılması için her N milimetresinde bir destek hatları arasında bağlantı atlayın." #: fdmprinter.def.json msgctxt "support_zag_skip_count label" msgid "Support Chunk Line Count" -msgstr "" +msgstr "Destek Parçası Hattı Sayısı" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" msgid "Skip one in every N connection lines to make the support structure easier to break away." -msgstr "" +msgstr "Destek yapısının daha kolay kırılması için her N bağlantı hattında bir zikzak atlayın." #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3404,9 +3400,7 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance, multiple skirt lines will extend outwards from this distance." -msgstr "" -"Etek ve baskının ilk katmanı arasındaki yatay mesafe.\n" -"Bu minimum mesafedir ve çoklu etek hatları bu mesafeden dışa doğru genişleyecektir." +msgstr "Etek ve baskının ilk katmanı arasındaki yatay mesafe.\nBu minimum mesafedir ve çoklu etek hatları bu mesafeden dışa doğru genişleyecektir." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3451,22 +3445,22 @@ msgstr "Sadece modelin dış kısmındaki kenarı yazdırır. Yatak yapışması #: fdmprinter.def.json msgctxt "z_offset_layer_0 label" msgid "Initial Layer Z Offset" -msgstr "" +msgstr "İlk Katman Z Ofseti" #: fdmprinter.def.json msgctxt "z_offset_layer_0 description" msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." -msgstr "" +msgstr "Ekstrüder, birinci katmanın normal yüksekliğinden bu miktarda mesafe bırakılır. Negatif (yükseltilmiş) veya pozitif (alçaltılmış) olabilir. Ekstrüderin hafifçe yükseltilmesi durumunda, bazı filaman türleri yapı levhasına daha iyi yapışır." #: fdmprinter.def.json msgctxt "z_offset_taper_layers label" msgid "Z Offset Taper Layers" -msgstr "" +msgstr "Z Ofseti Konik Katmanları" #: fdmprinter.def.json msgctxt "z_offset_taper_layers description" msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." -msgstr "" +msgstr "Sıfır olmadığında, Z ofseti birçok katman üzerinde 0’a düşürülür. 0 değeri, Z ofsetinin yazdırmada yer alan tüm katmanlarda sabit kalması anlamına gelir." #: fdmprinter.def.json msgctxt "raft_margin label" @@ -3481,12 +3475,12 @@ msgstr "Radye etkinleştirildiğinde, ayrıca radye verilen model etrafındaki e #: fdmprinter.def.json msgctxt "raft_smoothing label" msgid "Raft Smoothing" -msgstr "" +msgstr "Radye Düzeltme" #: fdmprinter.def.json msgctxt "raft_smoothing description" msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." -msgstr "" +msgstr "Bu ayar, radye ana hattında yer alan iç köşelerin ne kadar yuvarlandığını kontrol eder. İç köşeler, burada belirtilen değere eşit yarıçapa sahip yarım daire şeklinde yuvarlanır. Ayrıca bu ayar, söz konusu daireden daha küçük olan radye ana hattındaki delikleri ortadan kaldırır." #: fdmprinter.def.json msgctxt "raft_airgap label" @@ -4166,12 +4160,12 @@ msgstr "Z dikişinin görünürlüğünü azaltmak için helezon şeklinde kontu #: fdmprinter.def.json msgctxt "relative_extrusion label" msgid "Relative Extrusion" -msgstr "" +msgstr "Bağıl Ekstrüzyon" #: fdmprinter.def.json msgctxt "relative_extrusion description" msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." -msgstr "" +msgstr "Mutlak ekstrüzyon yerine bağıl ekstrüzyon uygulayın. Bağıl E-adımlarının uygulanması, Gcode’un sonradan işlenmesini kolaylaştırır. Ancak bu, tüm yazıcılar tarafından desteklenmemektedir ve mutlak E-adımları ile karşılaştırıldığında birikmiş malzemenin miktarında hafif farklılıklar yaratabilir. Bu ayara bakılmaksızın, herhangi bir Gcode komut dosyası çıkartılmadan önce ekstrüzyon modu her zaman mutlak değere ayarlı olacaktır." #: fdmprinter.def.json msgctxt "experimental label" @@ -4186,12 +4180,12 @@ msgstr "deneysel!" #: fdmprinter.def.json msgctxt "optimize_wall_printing_order label" msgid "Optimize Wall Printing Order" -msgstr "" +msgstr "Duvar Yazdırma Sırasını Optimize Et" #: fdmprinter.def.json msgctxt "optimize_wall_printing_order description" msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "" +msgstr "Geri çekmelerin sayısını ve kat edilen mesafeyi azaltmak için duvarların yazdırıldığı sırayı optimize edin. Çoğu parça, bunun etkinleştirilmesinden yararlanır, ancak bazılarının yararlanması için gerçekte daha uzun bir süre gerekebilir. Bu yüzden, yazdırma süresi tahminlerini optimizasyonlu ve optimizasyonsuz olarak karşılaştırın." #: fdmprinter.def.json msgctxt "draft_shield_enabled label" @@ -4316,22 +4310,22 @@ msgstr "Üst/alt katmanların yazdırıldığı yönü değiştirin. Normal koş #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" -msgstr "" +msgstr "Çapraz 3D Cebin Boyutu" #: fdmprinter.def.json msgctxt "cross_infill_pocket_size description" msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." -msgstr "" +msgstr "Şeklin kendisine temas ettiği yüksekliklerde, çapraz 3D şekilde dört yönlü kesişme yerlerinde bulunan ceplerin boyutudur." #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly label" msgid "Alternate Cross 3D Pockets" -msgstr "" +msgstr "Çapraz 3D Cepleri Değiştir" #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly description" msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." -msgstr "" +msgstr "Cepleri sadece çapraz 3D şekildeki dört yönlü kesişme yerlerinin yarısında uygulayın ve şeklin kendisine temas ettiği yüksekliklerin arasında ceplerin yerini değiştirin." #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" @@ -4633,9 +4627,7 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "" -"Yarı hızda sıkıştırılmış yukarı doğru hareket mesafesi.\n" -"Bu katmanlarda malzemeyi çok fazla ısıtmayarak önceki katmanlarda daha iyi yapışma sağlayabilir. Sadece kablo yazdırmaya uygulanır." +msgstr "Yarı hızda sıkıştırılmış yukarı doğru hareket mesafesi.\nBu katmanlarda malzemeyi çok fazla ısıtmayarak önceki katmanlarda daha iyi yapışma sağlayabilir. Sadece kablo yazdırmaya uygulanır." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -4755,12 +4747,12 @@ msgstr "Malzeme ekstrude edilmeden önce üst yüzey üzerinden bir kere daha ge #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" msgid "Iron Only Highest Layer" -msgstr "" +msgstr "Sadece En Yüksek Katmanı Ütüle" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer description" msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." -msgstr "" +msgstr "Ütüleme işlemini bileşimin sadece en son katmanı üzerinde gerçekleştirin. Bu, alt katmanlarda pürüzsüz bir yüzey tesviyesine gerek olmadığı durumlarda zaman kazandırır." #: fdmprinter.def.json msgctxt "ironing_pattern label" @@ -5124,4 +5116,4 @@ msgstr "Modeli dosyadan indirirken modele uygulanacak olan dönüşüm matrisi" #~ msgctxt "multiple_mesh_overlap label" #~ msgid "Dual Extrusion Overlap" -#~ msgstr "İkili Ekstrüzyon Çakışması" +#~ msgstr "İkili Ekstrüzyon Çakışması" \ No newline at end of file diff --git a/resources/i18n/zh_CN/cura.po b/resources/i18n/zh_CN/cura.po index 60e0139877..3fd9f30fd2 100644 --- a/resources/i18n/zh_CN/cura.po +++ b/resources/i18n/zh_CN/cura.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-28 11:00+0200\n" +"PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: PCDotFan , Bothof \n" "Language: zh_CN\n" @@ -26,7 +26,7 @@ msgstr "打印机设置" #: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 msgctxt "@item:inlistbox" msgid "X-Ray view" -msgstr "" +msgstr "透视视图" #: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 msgctxt "@item:inlistbox" @@ -41,17 +41,17 @@ msgstr "GCode 文件" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 msgctxt "@action:button" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "使用 Doodle3D WiFi-Box 打印" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 msgctxt "@properties:tooltip" msgid "Print with Doodle3D WiFi-Box" -msgstr "" +msgstr "使用 Doodle3D WiFi-Box 打印" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 msgctxt "@info:status" msgid "Connecting to Doodle3D Connect" -msgstr "" +msgstr "连接至 Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:87 #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:155 @@ -75,32 +75,32 @@ msgstr "取消" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:154 msgctxt "@info:status" msgid "Sending data to Doodle3D Connect" -msgstr "" +msgstr "发送数据至 Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:161 msgctxt "@info:status" msgid "Unable to send data to Doodle3D Connect. Is another job still active?" -msgstr "" +msgstr "无法发送数据至 Doodle3D Connect。 是否有另一项作业仍在进行?" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 msgctxt "@info:status" msgid "Storing data on Doodle3D Connect" -msgstr "" +msgstr "在 Doodle3D Connect 中存储数据" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 msgctxt "@info:status" msgid "File sent to Doodle3D Connect" -msgstr "" +msgstr "已发送至 Doodle3D Connect 的文件" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@action:button" msgid "Open Connect.." -msgstr "" +msgstr "打开 Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" -msgstr "" +msgstr "打开 Doodle3D Connect Web 界面" #: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 msgctxt "@item:inmenu" @@ -145,7 +145,7 @@ msgstr "无法启动新作业,因为打印机处于忙碌状态或未连接。 #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 msgctxt "@info:title" msgid "Print Details" -msgstr "" +msgstr "打印品详细信息" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:status" @@ -155,7 +155,7 @@ msgstr "此打印机不支持通过 USB 打印,因为其使用 UltiGCode 类 #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 msgctxt "@info:title" msgid "USB Printing" -msgstr "" +msgstr "USB 打印" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 msgctxt "@info:status" @@ -170,7 +170,7 @@ msgstr "无法启动新作业,因为该打印机不支持通过 USB 打印。" #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1296 msgctxt "@info:title" msgid "Warning" -msgstr "" +msgstr "警告" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 msgctxt "@info" @@ -186,7 +186,7 @@ msgstr "在 %s 无法找到打印机所需的固件。" #: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 msgctxt "@info:title" msgid "Printer Firmware" -msgstr "" +msgstr "打印机固件" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 msgctxt "@action:button Preceded by 'Ready to'." @@ -203,25 +203,25 @@ msgstr "保存到可移动磁盘 {0}" #, python-brace-format msgctxt "@info:progress Don't translate the XML tags !" msgid "Saving to Removable Drive {0}" -msgstr "" +msgstr "保存到可移动磁盘 {0} " #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 msgctxt "@info:title" msgid "Saving" -msgstr "" +msgstr "正在保存" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:99 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:102 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not save to {0}: {1}" -msgstr "" +msgstr "无法保存到 {0}{1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:118 #, python-brace-format msgctxt "@info:status Don't translate the tag {device}!" msgid "Could not find a file name when trying to write to {device}." -msgstr "" +msgstr "尝试写入到 {device} 时找不到文件名。" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:131 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:146 @@ -238,7 +238,7 @@ msgstr "无法保存到可移动磁盘 {0}:{1}" #: /home/ruben/Projects/Cura/cura/CuraApplication.py:1305 msgctxt "@info:title" msgid "Error" -msgstr "" +msgstr "错误" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 #, python-brace-format @@ -249,7 +249,7 @@ msgstr "保存到可移动磁盘 {0} :{1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 msgctxt "@info:title" msgid "File Saved" -msgstr "" +msgstr "文件已保存" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:141 msgctxt "@action:button" @@ -271,7 +271,7 @@ msgstr "已弹出 {0}。现在,您可以安全地拔出磁盘。" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 msgctxt "@info:title" msgid "Safely Remove Hardware" -msgstr "" +msgstr "安全移除硬件" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:158 #, python-brace-format @@ -306,7 +306,7 @@ msgstr "已发送打印机访问请求,请在打印机上批准该请求。" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 msgctxt "@info:title" msgid "Connection status" -msgstr "" +msgstr "连接状态" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 @@ -321,7 +321,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:500 msgctxt "@info:title" msgid "Connection Status" -msgstr "" +msgstr "连接状态" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 @@ -419,7 +419,7 @@ msgstr "打印机无法启动新的打印作业,当前的打印机状态为 %s #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 msgctxt "@info:title" msgid "Printer Status" -msgstr "" +msgstr "打印机状态" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 @@ -490,7 +490,7 @@ msgstr "向打印机发送数据" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 msgctxt "@info:title" msgid "Sending Data" -msgstr "" +msgstr "正在发送数据" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 @@ -549,73 +549,73 @@ msgstr "通过网络连接" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "这台打印机未设置为运行一组连接的 Ultimaker 3 打印机。" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 #, python-brace-format msgctxt "Count is number of printers." msgid "This printer is the host for a group of {count} connected Ultimaker 3 printers." -msgstr "" +msgstr "这台打印机是一组共 {count} 台已连接 Ultimaker 3 打印机的主机。" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." -msgstr "" +msgstr "{printer_name} 已完成打印 '{job_name}'。 请收起打印品并确认清空打印平台。" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 #, python-brace-format msgid "{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing." -msgstr "" +msgstr "{printer_name} 已保留用于打印 '{job_name}'。 请更改打印机配置以匹配此项作业,以便开始打印。" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:196 msgctxt "@info:status" msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." -msgstr "" +msgstr "发送新作业(暂时)受阻,仍在发送前一份打印作业。" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 msgctxt "@info:status" msgid "Unable to send new print job: this 3D printer is not (yet) set up to host a group of connected Ultimaker 3 printers." -msgstr "" +msgstr "无法发送新打印作业:此 3D 打印机(尚)未设置为运行一组连接的 Ultimaker 3 打印机。" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:425 #, python-brace-format msgctxt "@info:progress" msgid "Sending {file_name} to group {cluster_name}" -msgstr "" +msgstr "发送 {file_name} 至组 {cluster_name}" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:498 #, python-brace-format msgctxt "@info:status" msgid "Sent {file_name} to group {cluster_name}." -msgstr "" +msgstr "已发送 {file_name} 至组 {cluster_name}。" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 msgctxt "@action:button" msgid "Show print jobs" -msgstr "" +msgstr "显示打印作业" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 msgctxt "@info:tooltip" msgid "Opens the print jobs interface in your browser." -msgstr "" +msgstr "在您的浏览器中打开打印作业界面。" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." -msgstr "" +msgstr "无法发送打印作业至组 {cluster_name}。" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 #, python-brace-format msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" msgid "To ensure that your {machine_name} is equipped with the latest features it is recommended to update the firmware regularly. This can be done on the {machine_name} (when connected to the network) or via USB." -msgstr "" +msgstr "为确保您的 {machine_name} 具备最新功能,建议定期更新固件。 更新可在 {machine_name} 上(连接至网络时)或通过 USB 进行。" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" -msgstr "" +msgstr "新 %s 固件可用" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 @@ -626,7 +626,7 @@ msgstr "下载" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 msgctxt "@info" msgid "Could not access update information." -msgstr "" +msgstr "无法获取更新信息。" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/SolidWorksReader.py:199 msgctxt "@info:status" @@ -665,7 +665,7 @@ msgstr "Cura 收集匿名切片统计资料。 您可以在偏好设置中禁用 #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 msgctxt "@info:title" msgid "Collecting Data" -msgstr "" +msgstr "正在收集数据" #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 msgctxt "@action:button" @@ -686,7 +686,7 @@ msgstr "GCode 文件" #: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 msgctxt "@item:inlistbox" msgid "Layer view" -msgstr "" +msgstr "分层视图" #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:93 msgctxt "@info:status" @@ -696,7 +696,7 @@ msgstr "当单线打印(Wire Printing)功能开启时,Cura 将无法准确 #: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.py:94 msgctxt "@info:title" msgid "Layer View" -msgstr "" +msgstr "分层视图" #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" @@ -726,7 +726,7 @@ msgstr "GIF 图像" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." -msgstr "" +msgstr "无法使用当前材料进行切片,因为该材料与所选机器或配置不兼容。" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:269 #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:297 @@ -734,7 +734,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:316 msgctxt "@info:title" msgid "Unable to slice" -msgstr "" +msgstr "无法切片" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:296 #, python-brace-format @@ -761,7 +761,7 @@ msgstr "正在处理层" #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 msgctxt "@info:title" msgid "Information" -msgstr "" +msgstr "信息" #: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 msgctxt "@label" @@ -800,18 +800,18 @@ msgstr "喷嘴" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 msgctxt "@menuitem" msgid "Browse plugins" -msgstr "" +msgstr "浏览插件" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" -msgstr "" +msgstr "无法从 {0} 获取插件 ID" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 msgctxt "@info:tile" msgid "Warning" -msgstr "" +msgstr "警告" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 msgctxt "@window:title" @@ -821,7 +821,7 @@ msgstr "插件浏览器" #: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 msgctxt "@item:inmenu" msgid "Solid view" -msgstr "" +msgstr "实体视图" #: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 msgctxt "@item:inlistbox" @@ -837,7 +837,7 @@ msgstr "解析 G-code" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 msgctxt "@info:title" msgid "G-code Details" -msgstr "" +msgstr "G-code 详细信息" #: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 msgctxt "@info:generic" @@ -919,7 +919,7 @@ msgstr "支撑" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Skirt" -msgstr "" +msgstr "Skirt" #: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" @@ -960,7 +960,7 @@ msgstr "正在为模型寻找新位置" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 msgctxt "@info:title" msgid "Finding Location" -msgstr "" +msgstr "正在寻找位置" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:89 #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 @@ -971,7 +971,7 @@ msgstr "无法在成形空间体积内放下全部模型" #: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 msgctxt "@info:title" msgid "Can't Find Location" -msgstr "" +msgstr "找不到位置" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 @@ -984,7 +984,7 @@ msgstr "文件已存在" #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "" +msgstr "文件 {0} 已存在。 您确定要替换它吗?" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 msgctxt "@label" @@ -1026,24 +1026,24 @@ msgstr "撤销更改材料直径。" #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" -msgstr "" +msgstr "无法将配置文件导出至 {0} {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." -msgstr "" +msgstr "无法将配置文件导出至 {0} : 写入器插件报告故障。" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" -msgstr "" +msgstr "配置文件已导出至: {0} " #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 msgctxt "@info:title" msgid "Export Details" -msgstr "" +msgstr "导出详细信息" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:182 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:204 @@ -1052,7 +1052,7 @@ msgstr "" #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" -msgstr "" +msgstr "无法从 {0} 导入配置文件: {1}" #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 #: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 @@ -1091,7 +1091,7 @@ msgstr "由于“打印序列”设置的值,成形空间体积高度已被减 #: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 msgctxt "@info:title" msgid "Build Volume" -msgstr "" +msgstr "成形空间体积" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 msgctxt "@info:status" @@ -1102,7 +1102,7 @@ msgstr "复制并放置模型" #: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 msgctxt "@info:title" msgid "Placing Object" -msgstr "" +msgstr "放置模型" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 msgctxt "@title:window" @@ -1115,9 +1115,7 @@ msgid "" "

A fatal exception has occurred that we could not recover from!

\n" "

Please use the information below to post a bug report at http://github.com/Ultimaker/Cura/issues

\n" " " -msgstr "" -"

发生了致命错误,我们无法恢复!

\n" -"

请在以下网址中使用下方的信息提交错误报告:http://github.com/Ultimaker/Cura/issues

" +msgstr "

发生了致命错误,我们无法恢复!

\n

请在以下网址中使用下方的信息提交错误报告:http://github.com/Ultimaker/Cura/issues

" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 msgctxt "@action:button" @@ -1419,10 +1417,7 @@ msgid "" "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" "\n" "Select your printer from the list below:" -msgstr "" -"要通过网络向打印机发送打印请求,请确保您的打印机已通过网线或 WIFI 连接到网络。若您不能连接 Cura 与打印机,您仍然可以使用 USB 设备将 G-code 文件传输到打印机。\n" -"\n" -"从以下列表中选择您的打印机:" +msgstr "要通过网络向打印机发送打印请求,请确保您的打印机已通过网线或 WIFI 连接到网络。若您不能连接 Cura 与打印机,您仍然可以使用 USB 设备将 G-code 文件传输到打印机。\n\n从以下列表中选择您的打印机:" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:75 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:75 @@ -1548,17 +1543,17 @@ msgstr "应用配置" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 msgctxt "@label" msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "这台打印机未设置为运行一组连接的 Ultimaker 3 打印机" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 msgctxt "@label" msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" -msgstr "" +msgstr "这台打印机是一组 %1 台已连接 Ultimaker 3 打印机的主机" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" msgid "Print over network" -msgstr "" +msgstr "通过网络打印" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:92 msgctxt "@action:button" @@ -1568,98 +1563,98 @@ msgstr "打印" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:50 msgctxt "@label: arg 1 is group name" msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" -msgstr "" +msgstr "%1 未设置为运行一组连接的 Ultimaker 3 打印机" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 msgctxt "@label:status" msgid "Printing" -msgstr "" +msgstr "打印" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 msgctxt "@label:status" msgid "Reserved" -msgstr "" +msgstr "保留" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 msgctxt "@label:status" msgid "Finished" -msgstr "" +msgstr "已完成" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 msgctxt "@label:status" msgid "Preparing" -msgstr "" +msgstr "准备" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 msgctxt "@label:status" msgid "Available" -msgstr "" +msgstr "可用" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 msgctxt "@label" msgid "Completed on: " -msgstr "" +msgstr "完成时间: " #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 msgctxt "@label" msgid "Clear build plate" -msgstr "" +msgstr "清空打印平台" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 msgctxt "@label" msgid "Preparing to print" -msgstr "" +msgstr "准备打印" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 msgctxt "@label" msgid "Not accepting print jobs" -msgstr "" +msgstr "不接受打印作业" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 msgctxt "@info:tooltip" msgid "Opens the print jobs page with your default web browser." -msgstr "" +msgstr "使用默认 Web 浏览器打开打印作业页面。" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:15 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:154 msgctxt "@action:button" msgid "View print jobs" -msgstr "" +msgstr "查看打印作业" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 msgctxt "@label" msgid "PRINTER GROUP" -msgstr "" +msgstr "打印机组" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 msgctxt "@title" msgid "Print jobs" -msgstr "" +msgstr "打印作业" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 msgctxt "@label" msgid "Printing" -msgstr "" +msgstr "打印" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 msgctxt "@label" msgid "Queued" -msgstr "" +msgstr "已排队" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 msgctxt "@label" msgid "Waiting for configuration change" -msgstr "" +msgstr "正在等待配置更改" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 msgctxt "@label:title" msgid "Printers" -msgstr "" +msgstr "打印机" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 msgctxt "@action:button" msgid "View printers" -msgstr "" +msgstr "查看打印机" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" @@ -2048,7 +2043,7 @@ msgstr "已安装" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" -msgstr "" +msgstr "插件许可协议" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" @@ -2056,17 +2051,17 @@ msgid "" " plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "" +msgstr " 插件包含一个许可。\n您需要接受此许可才能安装此插件。\n是否同意下列条款?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" msgid "Accept" -msgstr "" +msgstr "接受" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 msgctxt "@action:button" msgid "Decline" -msgstr "" +msgstr "拒绝" #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 @@ -2321,9 +2316,7 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "" -"您已自定义某些配置文件设置。\n" -"您想保留或舍弃这些设置吗?" +msgstr "您已自定义某些配置文件设置。\n您想保留或舍弃这些设置吗?" #: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -2907,12 +2900,12 @@ msgstr "导入配置" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "" +msgstr "无法导入材料 %1%2" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "" +msgstr "成功导入材料 %1" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2923,12 +2916,12 @@ msgstr "导出材料" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "" +msgstr "无法导出材料至 %1%2" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "" +msgstr "成功导出材料至: %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 @@ -2961,9 +2954,7 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "" -"Cura 由 Ultimaker B.V. 与社区合作开发。\n" -"Cura 使用以下开源项目:" +msgstr "Cura 由 Ultimaker B.V. 与社区合作开发。\nCura 使用以下开源项目:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -3066,10 +3057,7 @@ msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "" -"某些设置/重写值与存储在配置文件中的值不同。\n" -"\n" -"点击打开配置文件管理器。" +msgstr "某些设置/重写值与存储在配置文件中的值不同。\n\n点击打开配置文件管理器。" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" @@ -3107,10 +3095,7 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "" -"一些隐藏设置正在使用有别于一般设置的计算值。\n" -"\n" -"单击以使这些设置可见。" +msgstr "一些隐藏设置正在使用有别于一般设置的计算值。\n\n单击以使这些设置可见。" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 msgctxt "@label Header for list of settings." @@ -3138,10 +3123,7 @@ msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "" -"此设置的值与配置文件不同。\n" -"\n" -"单击以恢复配置文件的值。" +msgstr "此设置的值与配置文件不同。\n\n单击以恢复配置文件的值。" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:284 msgctxt "@label" @@ -3149,10 +3131,7 @@ msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "" -"此设置通常可被自动计算,但其当前已被绝对定义。\n" -"\n" -"单击以恢复自动计算的值。" +msgstr "此设置通常可被自动计算,但其当前已被绝对定义。\n\n单击以恢复自动计算的值。" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 msgctxt "@label:listbox" @@ -3164,9 +3143,7 @@ msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" -msgstr "" -"打印设置已禁用\n" -"G-code 文件无法被修改" +msgstr "打印设置已禁用\nG-code 文件无法被修改" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 msgctxt "@label" @@ -3176,22 +3153,22 @@ msgstr "00 小时 00 分" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 msgctxt "@tooltip" msgid "Time information" -msgstr "" +msgstr "时间信息" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 msgctxt "@description" msgid "Print time" -msgstr "" +msgstr "打印时间" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 msgctxt "@label" msgid "%1m / ~ %2g / ~ %4 %3" -msgstr "" +msgstr "%1m / ~ %2g / ~ %4 %3" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 msgctxt "@label" msgid "%1m / ~ %2g" -msgstr "" +msgstr "%1m / ~ %2g" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" @@ -3249,12 +3226,12 @@ msgstr "没有连接打印机" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 msgctxt "@label" msgid "Extruder" -msgstr "" +msgstr "挤出机" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:120 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." -msgstr "" +msgstr "热端的目标温度。 热端将加热或冷却至此温度。 如果目标温度为 0,则热端加热将关闭。" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 msgctxt "@tooltip" @@ -3720,27 +3697,27 @@ msgstr "准备" #: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 msgctxt "@title:tab" msgid "Monitor" -msgstr "" +msgstr "监控" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 msgctxt "@label" msgid "Layer Height" -msgstr "" +msgstr "层高" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 msgctxt "@label" msgid "Print Speed" -msgstr "" +msgstr "打印速度" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 msgctxt "@label" msgid "Slower" -msgstr "" +msgstr "更慢" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 msgctxt "@label" msgid "Faster" -msgstr "" +msgstr "更快" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 msgctxt "@label" @@ -3755,7 +3732,7 @@ msgstr "渐层填充(Gradual infill)将随着打印高度的提升而逐渐 #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 msgctxt "@label" msgid "Enable gradual" -msgstr "" +msgstr "启用渐层" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" @@ -3831,7 +3808,7 @@ msgstr "材料" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 msgctxt "@label" msgid "Check material compatibility" -msgstr "" +msgstr "检查材料兼容性" #: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 msgctxt "@tooltip" @@ -3891,12 +3868,12 @@ msgstr "God 模式" #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "description" msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." -msgstr "" +msgstr "接受 G-Code 并通过 WiFi 将其发送到 Doodle3D WiFi-Box。" #: Doodle3D-cura-plugin/Doodle3D/plugin.json msgctxt "name" msgid "Doodle3D WiFi-Box" -msgstr "" +msgstr "Doodle3D WiFi-Box" #: ChangeLogPlugin/plugin.json msgctxt "description" @@ -3951,17 +3928,17 @@ msgstr "UM3 网络连接" #: CuraPrintClusterUpload/plugin.json msgctxt "name" msgid "UM3 Network Connection (Cluster)" -msgstr "" +msgstr "UM3 网络连接(群集)" #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." -msgstr "" +msgstr "检查以进行固件更新。" #: FirmwareUpdateChecker/plugin.json msgctxt "name" msgid "Firmware Update Checker" -msgstr "" +msgstr "固件更新检查程序" #: CuraSolidWorksPlugin/plugin.json msgctxt "description" @@ -4056,12 +4033,12 @@ msgstr "版本自 2.5 升级到 2.6" #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." -msgstr "" +msgstr "将配置从 Cura 2.7 版本升级至 3.0 版本。" #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" -msgstr "" +msgstr "版本自 2.7 升级到 3.0" #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" @@ -4689,4 +4666,4 @@ msgstr "Cura 配置文件读取器" #~ msgctxt "@label" #~ msgid "Print Selected Model with %1" #~ msgid_plural "Print Selected Models With %1" -#~ msgstr[0] "用 %1 打印所选模型" +#~ msgstr[0] "用 %1 打印所选模型" \ No newline at end of file diff --git a/resources/i18n/zh_CN/fdmprinter.def.json.po b/resources/i18n/zh_CN/fdmprinter.def.json.po index afeff326f8..78650174db 100644 --- a/resources/i18n/zh_CN/fdmprinter.def.json.po +++ b/resources/i18n/zh_CN/fdmprinter.def.json.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" -"PO-Revision-Date: 2017-08-28 11:00+0200\n" +"PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: PCDotFan , Bothof \n" "Language: zh_CN\n" @@ -58,9 +58,7 @@ msgctxt "machine_start_gcode description" msgid "" "Gcode commands to be executed at the very start - separated by \n" "." -msgstr "" -"在开始后执行的 G-code 命令 - 以 \n" -" 分行" +msgstr "在开始后执行的 G-code 命令 - 以 \n 分行" #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -72,9 +70,7 @@ msgctxt "machine_end_gcode description" msgid "" "Gcode commands to be executed at the very end - separated by \n" "." -msgstr "" -"在结束前执行的 G-code 命令 - 以 \n" -" 分行" +msgstr "在结束前执行的 G-code 命令 - 以 \n 分行" #: fdmprinter.def.json msgctxt "material_guid label" @@ -1124,7 +1120,7 @@ msgstr "随机" #: fdmprinter.def.json msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" -msgstr "" +msgstr "最尖角" #: fdmprinter.def.json msgctxt "z_seam_x label" @@ -1149,32 +1145,32 @@ msgstr "位置的 Y 轴坐标,在该位置附近开始打印层中各个部分 #: fdmprinter.def.json msgctxt "z_seam_corner label" msgid "Seam Corner Preference" -msgstr "" +msgstr "缝隙角偏好设置" #: fdmprinter.def.json msgctxt "z_seam_corner description" msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "" +msgstr "控制模型轮廓上的各个角是否影响缝隙的位置。 “无”意味着各个角不影响缝隙位置。 “隐藏缝隙”会使缝隙更可能出现在内侧角上。 “外露缝隙”会使缝隙更可能出现在外侧角上。 “隐藏或外露缝隙”会使缝隙更可能出现在内侧或外侧角上。" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" msgid "None" -msgstr "" +msgstr "无" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_inner" msgid "Hide Seam" -msgstr "" +msgstr "隐藏缝隙" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_outer" msgid "Expose Seam" -msgstr "" +msgstr "外露缝隙" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" -msgstr "" +msgstr "隐藏或外露缝隙" #: fdmprinter.def.json msgctxt "z_seam_relative label" @@ -1254,7 +1250,7 @@ msgstr "填充图案" #: fdmprinter.def.json msgctxt "infill_pattern description" msgid "The pattern of the infill material of the print. The line and zig zag infill swap direction on alternate layers, reducing material cost. The grid, triangle, cubic, octet, quarter cubic and concentric patterns are fully printed every layer. Cubic, quarter cubic and octet infill change with every layer to provide a more equal distribution of strength over each direction." -msgstr "" +msgstr "打印填充材料的图案。 线条和锯齿形填充在交替层上交换方向,从而降低材料成本。 网格、三角形、立方体、八角形、四面体和同心图案在每层完整打印。 立方体、四面体和八角形填充随每层变化,以在各个方向提供更均衡的强度分布。" #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1284,12 +1280,12 @@ msgstr "立方体分区" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" msgid "Octet" -msgstr "" +msgstr "八角形" #: fdmprinter.def.json msgctxt "infill_pattern option quarter_cubic" msgid "Quarter Cubic" -msgstr "" +msgstr "四面体" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" @@ -1309,22 +1305,22 @@ msgstr "锯齿状" #: fdmprinter.def.json msgctxt "infill_pattern option cross" msgid "Cross" -msgstr "" +msgstr "交叉" #: fdmprinter.def.json msgctxt "infill_pattern option cross_3d" msgid "Cross 3D" -msgstr "" +msgstr "交叉 3D" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" msgid "Connect Infill Lines" -msgstr "" +msgstr "连接填充走线" #: fdmprinter.def.json msgctxt "zig_zaggify_infill description" msgid "Connect the ends where the infill pattern meets the inner wall using a lines which follows the shape of the inner wall. Enabling this setting can make the infill adhere to the walls better and reduces the effects on infill on the quality of vertical surfaces. Disabling this setting reduces the amount of material used." -msgstr "" +msgstr "使用沿内壁形状的走线连接填充图案与内壁相接的各端。 启用此设置会使填充更好地粘着在壁上,减少填充物效果对垂直表面质量的影响。 禁用此设置可减少使用的材料量。" #: fdmprinter.def.json msgctxt "infill_angles label" @@ -1449,32 +1445,32 @@ msgstr "不要生成小于此面积的填充区域(使用皮肤取代)。" #: fdmprinter.def.json msgctxt "skin_preshrink label" msgid "Skin Removal Width" -msgstr "" +msgstr "肤移除宽度" #: fdmprinter.def.json msgctxt "skin_preshrink description" msgid "The largest width of skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top/bottom skin at slanted surfaces in the model." -msgstr "" +msgstr "将被移除的皮肤区域的最大宽度。 小于此值的所有皮肤区域都将消失。 这有助于限制在模型的倾斜表面打印顶部/底部皮肤时所耗用的时间和材料。" #: fdmprinter.def.json msgctxt "top_skin_preshrink label" msgid "Top Skin Removal Width" -msgstr "" +msgstr "顶部皮肤移除宽度" #: fdmprinter.def.json msgctxt "top_skin_preshrink description" msgid "The largest width of top skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing top skin at slanted surfaces in the model." -msgstr "" +msgstr "将被移除的顶部皮肤区域的最大宽度。 小于此值的所有皮肤区域都将消失。 这有助于限制在模型的倾斜表面打印顶部皮肤时所耗用的时间和材料。" #: fdmprinter.def.json msgctxt "bottom_skin_preshrink label" msgid "Bottom Skin Removal Width" -msgstr "" +msgstr "底部皮肤移除宽度" #: fdmprinter.def.json msgctxt "bottom_skin_preshrink description" msgid "The largest width of bottom skin areas which are to be removed. Every skin area smaller than this value will disappear. This can help in limiting the amount of time and material spent on printing bottom skin at slanted surfaces in the model." -msgstr "" +msgstr "将被移除的底部皮肤区域的最大宽度。 小于此值的所有皮肤区域都将消失。 这有助于限制在模型的倾斜表面打印底部皮肤时所耗用的时间和材料。" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" @@ -1484,27 +1480,27 @@ msgstr "皮肤扩展距离" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" msgid "The distance the skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on neighboring layers adhere better to the skin. Lower values save amount of material used." -msgstr "" +msgstr "皮肤扩展到填充物中的距离。 值越大会让皮肤与填充图案更好地附着,并让相邻层的层壁与皮肤更好地粘着。 较低的值将节省所用的材料量。" #: fdmprinter.def.json msgctxt "top_skin_expand_distance label" msgid "Top Skin Expand Distance" -msgstr "" +msgstr "顶部皮肤扩展距离" #: fdmprinter.def.json msgctxt "top_skin_expand_distance description" msgid "The distance the top skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the walls on the layer above adhere better to the skin. Lower values save amount of material used." -msgstr "" +msgstr "顶部皮肤扩展到填充物中的距离。 值越大会让皮肤与填充图案更好地附着,并让上方层的层壁与皮肤更好地粘着。 较低的值将节省所用的材料量。" #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance label" msgid "Bottom Skin Expand Distance" -msgstr "" +msgstr "底部皮肤扩展距离" #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance description" msgid "The distance the bottom skins are expanded into the infill. Higher values makes the skin attach better to the infill pattern and makes the skin adhere better to the walls on the layer below. Lower values save amount of material used." -msgstr "" +msgstr "底部皮肤扩展到填充物中的距离。 值越大会让皮肤与填充图案更好地附着,并让皮肤与下面层的壁更好地粘着。 较低的值将节省所用的材料量。" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" @@ -2824,7 +2820,7 @@ msgstr "锯齿形" #: fdmprinter.def.json msgctxt "support_pattern option cross" msgid "Cross" -msgstr "" +msgstr "交叉" #: fdmprinter.def.json msgctxt "support_connect_zigzags label" @@ -2839,32 +2835,32 @@ msgstr "连接锯齿形。 这将增加锯齿形支撑结构的强度。" #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" -msgstr "" +msgstr "将支撑结构分拆成块状" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" msgid "Skip some support line connections to make the support structure easier to break away. This setting is applicable to the Zig Zag support infill pattern." -msgstr "" +msgstr "跳过部分支撑线连接,让支撑结构更容易脱离。 此设置适用于锯齿形支撑结构填充图案。" #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm label" msgid "Support Chunk Size" -msgstr "" +msgstr "支撑块大小" #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm description" msgid "Leave out a connection between support lines once every N millimeter to make the support structure easier to break away." -msgstr "" +msgstr "每隔 N 毫米在支撑线之间略去一个连接,让支撑结构更容易脱离。" #: fdmprinter.def.json msgctxt "support_zag_skip_count label" msgid "Support Chunk Line Count" -msgstr "" +msgstr "支撑块走线数" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" msgid "Skip one in every N connection lines to make the support structure easier to break away." -msgstr "" +msgstr "每隔 N 个连接线跳过一个连接,让支撑结构更容易脱离。" #: fdmprinter.def.json msgctxt "support_infill_rate label" @@ -3406,9 +3402,7 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance, multiple skirt lines will extend outwards from this distance." -msgstr "" -"skirt 和打印第一层之间的水平距离。\n" -"这是最小距离,多个 skirt 走线将从此距离向外延伸。" +msgstr "skirt 和打印第一层之间的水平距离。\n这是最小距离,多个 skirt 走线将从此距离向外延伸。" #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3453,22 +3447,22 @@ msgstr "仅在模型外部打印 brim。 这会减少您之后需要移除的 br #: fdmprinter.def.json msgctxt "z_offset_layer_0 label" msgid "Initial Layer Z Offset" -msgstr "" +msgstr "起始层 Z 偏移量" #: fdmprinter.def.json msgctxt "z_offset_layer_0 description" msgid "The extruder is offset from the normal height of the first layer by this amount. It can be positive (raised) or negative (lowered). Some filament types adhere to the build plate better if the extruder is raised slightly." -msgstr "" +msgstr "此值为挤出机与第一层正常高度之间的偏移量。 该值可以为正(升起),也可以为负(降下)。 如果挤出机略微升起,部分耗材类型会与打印平台实现更好的粘着。" #: fdmprinter.def.json msgctxt "z_offset_taper_layers label" msgid "Z Offset Taper Layers" -msgstr "" +msgstr "Z 偏移锥形层" #: fdmprinter.def.json msgctxt "z_offset_taper_layers description" msgid "When non-zero, the Z offset is reduced to 0 over that many layers. A value of 0 means that the Z offset remains constant for all the layers in the print." -msgstr "" +msgstr "当非零时,Z 偏移在多个层中逐步降至零。 值为 0 则表示,在打印品的各个层中 Z 偏移量保持不变。" #: fdmprinter.def.json msgctxt "raft_margin label" @@ -3483,12 +3477,12 @@ msgstr "如果启用了 raft,则这是指也被提供了 raft 的模型周围 #: fdmprinter.def.json msgctxt "raft_smoothing label" msgid "Raft Smoothing" -msgstr "" +msgstr "Raft 平滑度" #: fdmprinter.def.json msgctxt "raft_smoothing description" msgid "This setting control how much inner corners in the raft outline are rounded. Inward corners are rounded to a semi circle with a radius equal to the value given here. This setting also removes holes in the raft outline which are smaller than such a circle." -msgstr "" +msgstr "该设置控制 Raft 轮廓中的内角呈圆形的程度。 内向角被设置为半圆形,半径等于此处的值。 此设置还会移除 raft 轮廓中小于此半圆形的孔。" #: fdmprinter.def.json msgctxt "raft_airgap label" @@ -4168,12 +4162,12 @@ msgstr "平滑螺旋轮廓以减少 Z 缝的可见性(Z 缝应在打印品上 #: fdmprinter.def.json msgctxt "relative_extrusion label" msgid "Relative Extrusion" -msgstr "" +msgstr "相对挤出" #: fdmprinter.def.json msgctxt "relative_extrusion description" msgid "Use relative extrusion rather than absolute extrusion. Using relative E-steps makes for easier post-processing of the Gcode. However, it's not supported by all printers and it may produce very slight deviations in the amount of deposited material compared to absolute E-steps. Irrespective of this setting, the extrusion mode will always be set to absolute before any Gcode script is output." -msgstr "" +msgstr "使用相对挤出而不是绝对挤出。 使用相对 E 步阶,对 Gcode 进行更轻松的后期处理。 但是,不是所有打印机均支持此功能,而且与绝对 E 步阶相比,它在沉积材料量上会产生非常轻微的偏差。 不论是否有此设置,挤出模式将始终设置为绝对挤出后才会输出任何 Gcode 脚本。" #: fdmprinter.def.json msgctxt "experimental label" @@ -4188,12 +4182,12 @@ msgstr "实验性!" #: fdmprinter.def.json msgctxt "optimize_wall_printing_order label" msgid "Optimize Wall Printing Order" -msgstr "" +msgstr "优化壁打印顺序" #: fdmprinter.def.json msgctxt "optimize_wall_printing_order description" msgid "Optimize the order in which walls are printed so as to reduce the number of retractions and the distance travelled. Most parts will benefit from this being enabled but some may actually take longer so please compare the print time estimates with and without optimization." -msgstr "" +msgstr "优化打印各个壁的顺序,以减少回抽次数和空驶距离。 启用此设置将对大部分零件有益,但有的则会耗费更长时间,因此请将优化和不优化的打印时间估计值进行对比。" #: fdmprinter.def.json msgctxt "draft_shield_enabled label" @@ -4318,22 +4312,22 @@ msgstr "交替打印顶部/底部层的方向。 通常它们只进行对角线 #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" -msgstr "" +msgstr "交叉 3D 气槽大小" #: fdmprinter.def.json msgctxt "cross_infill_pocket_size description" msgid "The size of pockets at four-way crossings in the cross 3D pattern at heights where the pattern is touching itself." -msgstr "" +msgstr "交叉 3D 图案的四向交叉处的气槽大小,高度为图案与自身接触的位置。" #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly label" msgid "Alternate Cross 3D Pockets" -msgstr "" +msgstr "交替交叉 3D 气槽" #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly description" msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." -msgstr "" +msgstr "仅在交叉 3D 图案的一半四向交叉处应用气槽,并在图案与自身接触的高度之间交替气槽的位置。" #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" @@ -4635,9 +4629,7 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "" -"以半速挤出的上行移动的距离。\n" -"这会与之前的层产生更好的附着,而不会将这些层中的材料过度加热。 仅应用于单线打印。" +msgstr "以半速挤出的上行移动的距离。\n这会与之前的层产生更好的附着,而不会将这些层中的材料过度加热。 仅应用于单线打印。" #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -4757,12 +4749,12 @@ msgstr "再一次经过顶部表面,但不挤出材料。 这是为了进一 #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" msgid "Iron Only Highest Layer" -msgstr "" +msgstr "仅熨平最高层" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer description" msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." -msgstr "" +msgstr "仅在网格的最后一层执行熨平。 如果较低的层不需要平滑的表面效果,这将节省时间。" #: fdmprinter.def.json msgctxt "ironing_pattern label" @@ -5006,4 +4998,4 @@ msgstr "在将模型从文件中载入时应用在模型上的转换矩阵。" #~ msgctxt "machine_gcode_flavor option RepRap (Volumatric)" #~ msgid "RepRap (Volumetric)" -#~ msgstr "RepRap (Volumetric)" +#~ msgstr "RepRap (Volumetric)" \ No newline at end of file From 33fdca4a6b625d0436289178d250317040ab58c5 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 27 Sep 2017 17:27:47 +0200 Subject: [PATCH 298/589] Fix mistakes in translations from Bothof What do we pay these guys for? Contributes to issue CURA-4341. --- resources/i18n/es_ES/cura.po | 14 +++++++------- resources/i18n/es_ES/fdmprinter.def.json.po | 8 ++++---- resources/i18n/fr_FR/cura.po | 4 ++-- resources/i18n/fr_FR/fdmprinter.def.json.po | 4 ++-- resources/i18n/nl_NL/cura.po | 12 ++++++------ resources/i18n/nl_NL/fdmprinter.def.json.po | 18 +++++++++--------- 6 files changed, 30 insertions(+), 30 deletions(-) diff --git a/resources/i18n/es_ES/cura.po b/resources/i18n/es_ES/cura.po index c4e0dd333c..4971703962 100644 --- a/resources/i18n/es_ES/cura.po +++ b/resources/i18n/es_ES/cura.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-09-27 12:27+0200\n" @@ -2900,12 +2900,12 @@ msgstr "Importar material" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:320 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" -msgstr "No se pudo importar el material en %1: %2." +msgstr "No se pudo importar el material en %1: %2." #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:324 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" -msgstr "El material se ha importado correctamente en %1." +msgstr "El material se ha importado correctamente en %1." #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:343 #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:358 @@ -2916,12 +2916,12 @@ msgstr "Exportar material" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:362 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" -msgstr "Se ha producido un error al exportar el material a %1: %2." +msgstr "Se ha producido un error al exportar el material a %1: %2." #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:368 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" -msgstr "El material se ha exportado correctamente a %1." +msgstr "El material se ha exportado correctamente a %1." #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 @@ -3163,12 +3163,12 @@ msgstr "Tiempo de impresión" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 msgctxt "@label" msgid "%1m / ~ %2g / ~ %4 %3" -msgstr "%1m/~ %2g/~ %4 %3" +msgstr "%1m / ~ %2g/ ~ %4 %3" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 msgctxt "@label" msgid "%1m / ~ %2g" -msgstr "%1m/~ %2g" +msgstr "%1m / ~ %2g" #: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 msgctxt "@tooltip" diff --git a/resources/i18n/es_ES/fdmprinter.def.json.po b/resources/i18n/es_ES/fdmprinter.def.json.po index dcf8c318c7..b472fd44a7 100644 --- a/resources/i18n/es_ES/fdmprinter.def.json.po +++ b/resources/i18n/es_ES/fdmprinter.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-09-27 12:27+0200\n" @@ -56,7 +56,7 @@ msgctxt "machine_start_gcode description" msgid "" "Gcode commands to be executed at the very start - separated by \n" "." -msgstr "Los comandos de Gcode que se ejecutarán justo al inicio, separados por \n." +msgstr "Los comandos de Gcode que se ejecutarán justo al inicio - separados por \n." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -68,7 +68,7 @@ msgctxt "machine_end_gcode description" msgid "" "Gcode commands to be executed at the very end - separated by \n" "." -msgstr "Los comandos de Gcode que se ejecutarán justo al final, separados por \n." +msgstr "Los comandos de Gcode que se ejecutarán justo al final - separados por \n." #: fdmprinter.def.json msgctxt "material_guid label" @@ -4320,7 +4320,7 @@ msgstr "Tamaño de las bolsas en cruces del patrón de cruz 3D en las alturas en #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly label" msgid "Alternate Cross 3D Pockets" -msgstr "Bolsas 3D en cruz alternantes" +msgstr "Alternar bolsas 3D en cruz" #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly description" diff --git a/resources/i18n/fr_FR/cura.po b/resources/i18n/fr_FR/cura.po index ffdff5e74f..d5cc344828 100644 --- a/resources/i18n/fr_FR/cura.po +++ b/resources/i18n/fr_FR/cura.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-09-27 12:27+0200\n" @@ -3934,7 +3934,7 @@ msgstr "Connexion au réseau UM3" #: CuraPrintClusterUpload/plugin.json msgctxt "name" msgid "UM3 Network Connection (Cluster)" -msgstr "Connexion au réseau UM3 (cluster)" +msgstr "Connexion au réseau UM3 (Cluster)" #: FirmwareUpdateChecker/plugin.json msgctxt "description" diff --git a/resources/i18n/fr_FR/fdmprinter.def.json.po b/resources/i18n/fr_FR/fdmprinter.def.json.po index ebad6779de..0a4a135b99 100644 --- a/resources/i18n/fr_FR/fdmprinter.def.json.po +++ b/resources/i18n/fr_FR/fdmprinter.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-09-27 12:27+0200\n" @@ -4320,7 +4320,7 @@ msgstr "La taille de poches aux croisements à quatre branches dans le motif ent #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly label" msgid "Alternate Cross 3D Pockets" -msgstr "Poches entrecroisées 3D alternatives" +msgstr "Alterner les poches entrecroisées 3D" #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly description" diff --git a/resources/i18n/nl_NL/cura.po b/resources/i18n/nl_NL/cura.po index 48da7e783e..2444bf6a4c 100644 --- a/resources/i18n/nl_NL/cura.po +++ b/resources/i18n/nl_NL/cura.po @@ -488,7 +488,7 @@ msgstr "De gegevens worden naar de printer verzonden" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 msgctxt "@info:title" msgid "Sending Data" -msgstr "De gegevens worden verzonden" +msgstr "Gegevens Verzenden" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 @@ -1541,12 +1541,12 @@ msgstr "Configuratie Activeren" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:284 msgctxt "@label" msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -msgstr "Deze printer is niet ingesteld voor het hosten van een groep aangesloten Ultimaker 3-printers" +msgstr "Deze printer is niet ingesteld voor het hosten van een groep aaneengesloten Ultimaker 3-printers" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:287 msgctxt "@label" msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" -msgstr "Deze printer is de host voor een groep van %1 aangesloten Ultimaker 3-printers" +msgstr "Deze printer is de host voor een groep van %1 aaneengesloten Ultimaker 3-printers" #: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 msgctxt "@title:window" @@ -2954,7 +2954,7 @@ msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "Cura is ontwikkeld door Ultimaker B.V. in samenwerking met de community.\nCura is er trots op gebruik te maken van de volgende opensourceprojecten:" +msgstr "Cura is ontwikkeld door Ultimaker B.V. in samenwerking met de community.\nCura maakt met trots gebruik van de volgende opensourceprojecten:" #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 msgctxt "@label" @@ -3057,7 +3057,7 @@ msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "Sommige waarden voor instellingen/overschrijvingen zijn anders dan de waarden die in het profiel zijn opgeslagen.\n\nKlik om het profielbeheer te openen." +msgstr "Sommige waarden of aanpassingen van instellingen zijn anders dan de waarden die in het profiel zijn opgeslagen.\n\nKlik om het profielbeheer te openen." #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 msgctxt "@label:textbox" @@ -3737,7 +3737,7 @@ msgstr "Met geleidelijke vulling neemt de hoeveelheid vulling naar boven toe." #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:602 msgctxt "@label" msgid "Enable gradual" -msgstr "Geleidelijke vulling inschakelen" +msgstr "Geleidelijke vulling" #: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 msgctxt "@label" diff --git a/resources/i18n/nl_NL/fdmprinter.def.json.po b/resources/i18n/nl_NL/fdmprinter.def.json.po index 03c3cc8d38..18b692c116 100644 --- a/resources/i18n/nl_NL/fdmprinter.def.json.po +++ b/resources/i18n/nl_NL/fdmprinter.def.json.po @@ -5,7 +5,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 2.7\n" +"Project-Id-Version: Cura 3.0\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" "POT-Creation-Date: 2017-08-02 16:53+0000\n" "PO-Revision-Date: 2017-09-27 12:27+0200\n" @@ -1278,7 +1278,7 @@ msgstr "Kubische onderverdeling" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" msgid "Octet" -msgstr "Achtvlak" +msgstr "Octet" #: fdmprinter.def.json msgctxt "infill_pattern option quarter_cubic" @@ -2833,7 +2833,7 @@ msgstr "Verbind de zigzaglijnen. Hiermee versterkt u de zigzag-supportstructuur. #: fdmprinter.def.json msgctxt "support_skip_some_zags label" msgid "Break Up Support In Chunks" -msgstr "Supportstructuur in stukken breken" +msgstr "Supportstructuur in Stukken Breken" #: fdmprinter.def.json msgctxt "support_skip_some_zags description" @@ -2843,7 +2843,7 @@ msgstr "Sla enkele verbindingen tussen lijnen van de supportstructuur over zodat #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm label" msgid "Support Chunk Size" -msgstr "Grootte supportstuk" +msgstr "Grootte Supportstuk" #: fdmprinter.def.json msgctxt "support_skip_zag_per_mm description" @@ -2853,7 +2853,7 @@ msgstr "Sla elke N millimeter een verbinding tussen de lijnen van de supportstru #: fdmprinter.def.json msgctxt "support_zag_skip_count label" msgid "Support Chunk Line Count" -msgstr "Aantal lijnen supportstuk" +msgstr "Aantal Lijnen Supportstuk" #: fdmprinter.def.json msgctxt "support_zag_skip_count description" @@ -3455,7 +3455,7 @@ msgstr "De extruder wordt in deze mate gecorrigeerd ten opzichte van de normale #: fdmprinter.def.json msgctxt "z_offset_taper_layers label" msgid "Z Offset Taper Layers" -msgstr "Z-offset Taps Toelopende Lagen" +msgstr "Z-offset Aflopende Lagen" #: fdmprinter.def.json msgctxt "z_offset_taper_layers description" @@ -4160,7 +4160,7 @@ msgstr "Maak de gespiraliseerde contouren vlak om de zichtbaarheid van de Z-naad #: fdmprinter.def.json msgctxt "relative_extrusion label" msgid "Relative Extrusion" -msgstr "Relatieve extrusie" +msgstr "Relatieve Extrusie" #: fdmprinter.def.json msgctxt "relative_extrusion description" @@ -4325,7 +4325,7 @@ msgstr "Afwisselend luchtbellen in kruis 3D" #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly description" msgid "Only apply pockets at half of the four-way crossings in the cross 3D pattern and alternate the location of the pockets between heights where the pattern is touching itself." -msgstr "Laat alleen luchtbellen achter in de helft van de kruispunten in het kruis 3D-patroon en wisselt de plaats van de luchtbellen op punten waar het patroon zichzelf raakt." +msgstr "Laat alleen luchtbellen achter in de helft van de kruispunten in het Kruis 3D-patroon en wisselt de plaats van de luchtbellen op punten waar het patroon zichzelf raakt." #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" @@ -4752,7 +4752,7 @@ msgstr "Alleen hoogste laag strijken" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer description" msgid "Only perform ironing on the very last layer of the mesh. This saves time if the lower layers don't need a smooth surface finish." -msgstr "Strijk alleen de allerlaatste laag van het raster. Dit bespaart tijd als de daaronder gelegen lagen geen glad oppervlak vereisen." +msgstr "Strijk alleen de allerlaatste laag van het voorwerp. Dit bespaart tijd als de daaronder gelegen lagen geen glad oppervlak vereisen." #: fdmprinter.def.json msgctxt "ironing_pattern label" From fcc914cf0d2aab3c7c6ae31ceaf10fc2392b4986 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 27 Sep 2017 17:28:32 +0200 Subject: [PATCH 299/589] Make material colour indication a circle instead of square The rest of them are circles. This one should be one too. --- resources/qml/PrintMonitor.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/qml/PrintMonitor.qml b/resources/qml/PrintMonitor.qml index 931a8ae23f..f9c6aff7ed 100644 --- a/resources/qml/PrintMonitor.qml +++ b/resources/qml/PrintMonitor.qml @@ -164,6 +164,7 @@ Column id: materialColor width: materialName.height * 0.75 height: materialName.height * 0.75 + radius: width / 2 color: (connectedPrinter != null && connectedPrinter.materialColors[index] != null && connectedPrinter.materialIds[index] != "") ? connectedPrinter.materialColors[index] : "#00000000" border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") From 68b4dfd3c328babfa8724da2e5dae3317cddea15 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 27 Sep 2017 17:29:30 +0200 Subject: [PATCH 300/589] Fix spelling mistake Contributes to issue CURA-4341. --- plugins/3MFReader/WorkspaceDialog.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 2363f16b9d..32bb139648 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -362,7 +362,7 @@ UM.Dialog Label { id: warningLabel - text: catalog.i18nc("@action:warning", "Loading a project will clear all models on the buildplate") + text: catalog.i18nc("@action:warning", "Loading a project will clear all models on the build plate.") wrapMode: Text.Wrap } } From 94846d0faf3498e74054c057eb4111f948c39ffe Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 27 Sep 2017 17:30:29 +0200 Subject: [PATCH 301/589] Add missing word I'm guessing it was 'This'. That must've accidentally gotten selected when working with it. Contributes to issue CURA-4341. --- plugins/PluginBrowser/PluginBrowser.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/PluginBrowser/PluginBrowser.qml b/plugins/PluginBrowser/PluginBrowser.qml index cbb60aed70..71e88c652b 100644 --- a/plugins/PluginBrowser/PluginBrowser.qml +++ b/plugins/PluginBrowser/PluginBrowser.qml @@ -217,7 +217,7 @@ UM.Dialog anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right - text: licenseDialog.pluginName + catalog.i18nc("@label", " plugin contains a license.\nYou need to accept this license to install this plugin.\nDo you agree with the terms below?") + text: licenseDialog.pluginName + catalog.i18nc("@label", "This plugin contains a license.\nYou need to accept this license to install this plugin.\nDo you agree with the terms below?") wrapMode: Text.Wrap } From 2715ef604dccc72027d1572649474d733a039807 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 27 Sep 2017 17:31:26 +0200 Subject: [PATCH 302/589] Use lower case text for translation, then transform to upper case The formatting is done in QML, regardless of how the data looks. Contributes to issue CURA-4341. --- plugins/UM3NetworkPrinting/ClusterControlItem.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/UM3NetworkPrinting/ClusterControlItem.qml b/plugins/UM3NetworkPrinting/ClusterControlItem.qml index 6558720943..be86e04185 100644 --- a/plugins/UM3NetworkPrinting/ClusterControlItem.qml +++ b/plugins/UM3NetworkPrinting/ClusterControlItem.qml @@ -33,7 +33,7 @@ Component { id: printerGroupLabel anchors.top: activePrintersLabel.bottom - text: catalog.i18nc("@label", "PRINTER GROUP") + text: catalog.i18nc("@label", "Printer Group").toUpperCase() anchors.horizontalCenter: parent.horizontalCenter font: UM.Theme.getFont("very_small") opacity: 0.65 From df14ea2b1a32dceefc26848e246b70a240334ee8 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 27 Sep 2017 17:32:24 +0200 Subject: [PATCH 303/589] Proper capitalisation of 'OK' This is consistent with the rest. Contributes to issue CURA-4341. --- plugins/UM3NetworkPrinting/DiscoverUM3Action.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml b/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml index 5ea7d77d8a..11ebdd818b 100644 --- a/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml +++ b/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml @@ -378,7 +378,7 @@ Cura.MachineAction }, Button { id: btnOk - text: catalog.i18nc("@action:button", "Ok") + text: catalog.i18nc("@action:button", "OK") onClicked: { manualPrinterDialog.accept() From d999d1c7f26b81bb476eaa619c12637b668974af Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 27 Sep 2017 17:32:47 +0200 Subject: [PATCH 304/589] Remove extra space Just a typo. Contributes to issue CURA-4341. --- plugins/UM3NetworkPrinting/OpenPanelButton.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/UM3NetworkPrinting/OpenPanelButton.qml b/plugins/UM3NetworkPrinting/OpenPanelButton.qml index 3915c1f9eb..2a59d0fa83 100644 --- a/plugins/UM3NetworkPrinting/OpenPanelButton.qml +++ b/plugins/UM3NetworkPrinting/OpenPanelButton.qml @@ -11,7 +11,7 @@ Button { UM.I18nCatalog { id: catalog; name: "cura"; } height: UM.Theme.getSize("save_button_save_to_button").height - tooltip: catalog.i18nc("@info:tooltip", "Opens the print jobs page with your default web browser.") + tooltip: catalog.i18nc("@info:tooltip", "Opens the print jobs page with your default web browser.") text: catalog.i18nc("@action:button", "View print jobs") style: UM.Theme.styles.sidebar_action_button From e56a6214d2c5b4d9832cc66fc0bdf54b92179d71 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 27 Sep 2017 17:33:17 +0200 Subject: [PATCH 305/589] Fix grammar mistake These are two sentences. Contributes to issue CURA-4341. --- resources/definitions/fdmprinter.def.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 06bc04b1fe..26a8be6318 100755 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3986,7 +3986,7 @@ "skirt_gap": { "label": "Skirt Distance", - "description": "The horizontal distance between the skirt and the first layer of the print.\nThis is the minimum distance, multiple skirt lines will extend outwards from this distance.", + "description": "The horizontal distance between the skirt and the first layer of the print.\nThis is the minimum distance. Multiple skirt lines will extend outwards from this distance.", "unit": "mm", "type": "float", "default_value": 3, From c4fc4a7198eb564b061d2c398506e8a87cdc7cb4 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Wed, 27 Sep 2017 17:34:12 +0200 Subject: [PATCH 306/589] Add better descriptions for abbreviated units This should help the translators next time to find better translations. Contributes to issue CURA-4341. --- resources/qml/Sidebar.qml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index cdfe5e7a81..b0971ba15f 100755 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -324,7 +324,7 @@ Rectangle anchors.bottom: timeSpecDescription.top font: UM.Theme.getFont("large") color: UM.Theme.getColor("text_subtext") - text: (!base.printDuration || !base.printDuration.valid) ? catalog.i18nc("@label", "00h 00min") : base.printDuration.getDisplayString(UM.DurationFormat.Short) + text: (!base.printDuration || !base.printDuration.valid) ? catalog.i18nc("@label Hours and minutes", "00h 00min") : base.printDuration.getDisplayString(UM.DurationFormat.Short) MouseArea { @@ -407,12 +407,12 @@ Rectangle } if(someCostsKnown) { - return catalog.i18nc("@label", "%1m / ~ %2g / ~ %4 %3").arg(lengths.join(" + ")) + return catalog.i18nc("@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost", "%1m / ~ %2g / ~ %4 %3").arg(lengths.join(" + ")) .arg(weights.join(" + ")).arg(costs.join(" + ")).arg(UM.Preferences.getValue("cura/currency")); } else { - return catalog.i18nc("@label", "%1m / ~ %2g").arg(lengths.join(" + ")).arg(weights.join(" + ")); + return catalog.i18nc("@label Print estimates: m for meters, g for grams", "%1m / ~ %2g").arg(lengths.join(" + ")).arg(weights.join(" + ")); } } } From 0b036818909a036a67902b248515c1451c12a492 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Wed, 27 Sep 2017 22:28:20 +0200 Subject: [PATCH 307/589] Hide gradual infill checkbox if the gradual infill steps setting is disabled --- resources/qml/SidebarSimple.qml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 3a104e81a1..18518fe611 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -360,7 +360,7 @@ Item { id: infillCellRight - height: infillSlider.height + enableGradualInfillCheckBox.height + (UM.Theme.getSize("sidebar_margin").height * 2) + height: infillSlider.height + UM.Theme.getSize("sidebar_margin").height + enableGradualInfillCheckBox.visible * (enableGradualInfillCheckBox.height + UM.Theme.getSize("sidebar_margin").height) width: UM.Theme.getSize("sidebar").width * .55 anchors.left: infillCellLeft.right @@ -510,6 +510,7 @@ Item style: UM.Theme.styles.checkbox enabled: base.settingsEnabled + visible: infillSteps.properties.enabled == "True" checked: parseInt(infillSteps.properties.value) > 0 MouseArea { @@ -849,7 +850,7 @@ Item id: infillSteps containerStackId: Cura.MachineManager.activeStackId key: "gradual_infill_steps" - watchedProperties: ["value"] + watchedProperties: ["value", "enabled"] storeIndex: 0 } From 4ca8bc5a9eb7b5874d9fa9d584e3d6bea49a4237 Mon Sep 17 00:00:00 2001 From: Simon Edwards Date: Thu, 28 Sep 2017 11:21:17 +0200 Subject: [PATCH 308/589] CL-118 Add support and text for disabled printers and print jobs which require config changes. --- .../UM3NetworkPrinting/PrinterInfoBlock.qml | 47 +++++++++++++------ 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml index bab7db41d4..c83865f8b1 100644 --- a/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml +++ b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml @@ -199,10 +199,10 @@ Rectangle property var showExtended: { if(printJob!= null) { - var extendStates = ["sent_to_printer", "wait_for_configuration", "printing", "pre_print", "post_print", "wait_cleanup"]; + var extendStates = ["sent_to_printer", "wait_for_configuration", "printing", "pre_print", "post_print", "wait_cleanup", "queued"]; return extendStates.indexOf(printJob.status) !== -1; } - return false + return ! printer.enabled; } visible: { @@ -227,6 +227,11 @@ Rectangle anchors.right: progressText.left anchors.rightMargin: UM.Theme.getSize("default_margin").width text: { + if ( ! printer.enabled) + { + return catalog.i18nc("@label:status", "Disabled"); + } + if(printJob != null) { if(printJob.status == "printing" || printJob.status == "post_print") @@ -245,12 +250,16 @@ Rectangle { return catalog.i18nc("@label:status", "Preparing") } + else if (printJob.configuration_changes_required != undefined && printJob.status == "queued") + { + return catalog.i18nc("@label:status", "Required action") + } else { - return "" + return printJob.status; } } - return catalog.i18nc("@label:status", "Available") + return catalog.i18nc("@label:status", "Available"); } elide: Text.ElideRight @@ -292,29 +301,37 @@ Rectangle width: parent.width - 2 * UM.Theme.getSize("default_margin").width - visible: printJob != null && (["wait_cleanup", "printing", "pre_print", "wait_for_configuration"].indexOf(printJob.status) !== -1) + visible: showExtended Label // Status detail { text: { + if ( ! printer.enabled) + { + return catalog.i18nc("@label", "Not accepting print jobs"); + } + if(printJob != null) { - if(printJob.status == "printing" ) + switch (printJob.status) { + case "printing": return catalog.i18nc("@label", "Finishes at: ") + OutputDevice.getTimeCompleted(printJob.time_total - printJob.time_elapsed) - } - if(printJob.status == "wait_cleanup") - { + case "wait_cleanup": return catalog.i18nc("@label", "Clear build plate") - } - if(printJob.status == "sent_to_printer" || printJob.status == "pre_print") - { + case "sent_to_printer": + case "pre_print": return catalog.i18nc("@label", "Preparing to print") - } - if(printJob.status == "wait_for_configuration") - { + case "wait_for_configuration": return catalog.i18nc("@label", "Not accepting print jobs") + case "queued": + if (printJob.configuration_changes_required != undefined) + { + return catalog.i18nc("@label", "Configuration change"); + } + default: + return ""; } } return "" From 01ff608a09da47e1d277021f996c4672837d51d3 Mon Sep 17 00:00:00 2001 From: Simon Edwards Date: Thu, 28 Sep 2017 11:40:48 +0200 Subject: [PATCH 309/589] Change "Required action" to "Action required" CL-118 --- plugins/UM3NetworkPrinting/PrinterInfoBlock.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml index c83865f8b1..c53ecdec8c 100644 --- a/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml +++ b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml @@ -252,7 +252,7 @@ Rectangle } else if (printJob.configuration_changes_required != undefined && printJob.status == "queued") { - return catalog.i18nc("@label:status", "Required action") + return catalog.i18nc("@label:status", "Action required") } else { From 729d61082af679dd5fab7aac090c9a44e53575ee Mon Sep 17 00:00:00 2001 From: Mark Date: Thu, 28 Sep 2017 12:58:03 +0200 Subject: [PATCH 310/589] add CuraEngine to gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 616d325ffb..5a077bd6b2 100644 --- a/.gitignore +++ b/.gitignore @@ -57,4 +57,6 @@ cmake_install.cmake #Debug *.gcode run.sh +.scannerwork/ +CuraEngine From 9a193ad5c5ab5324ad1335dd9adf80fef24a7977 Mon Sep 17 00:00:00 2001 From: Mark Date: Thu, 28 Sep 2017 13:00:43 +0200 Subject: [PATCH 311/589] Changing AGPLv3 to LGPLv3 --- CuraEngine | Bin 0 -> 4739960 bytes LICENSE | 816 ++++-------------- cmake/CuraTests.cmake | 2 +- cura/ArrangeObjectsJob.py | 2 +- cura/BuildVolume.py | 2 +- cura/CameraAnimation.py | 2 +- cura/ConvexHullDecorator.py | 2 +- cura/ConvexHullNode.py | 2 +- cura/CuraActions.py | 2 +- cura/CuraApplication.py | 2 +- cura/CuraSplashScreen.py | 2 +- cura/CuraVersion.py.in | 2 +- cura/LayerData.py | 2 +- cura/LayerDataBuilder.py | 2 +- cura/LayerPolygon.py | 2 +- cura/MachineAction.py | 2 +- cura/MachineActionManager.py | 2 +- cura/MultiplyObjectsJob.py | 2 +- cura/OneAtATimeIterator.py | 2 +- cura/PlatformPhysics.py | 2 +- cura/PlatformPhysicsOperation.py | 2 +- cura/PrintInformation.py | 2 +- cura/PrinterOutputDevice.py | 2 +- cura/ProfileReader.py | 2 +- cura/ProfileWriter.py | 2 +- cura/QualityManager.py | 2 +- cura/SetParentOperation.py | 2 +- cura/Settings/ContainerManager.py | 2 +- cura/Settings/ContainerSettingsModel.py | 2 +- cura/Settings/CuraContainerRegistry.py | 2 +- cura/Settings/CuraContainerStack.py | 2 +- cura/Settings/CuraStackBuilder.py | 2 +- cura/Settings/Exceptions.py | 2 +- cura/Settings/ExtruderManager.py | 2 +- cura/Settings/ExtruderStack.py | 2 +- cura/Settings/ExtrudersModel.py | 2 +- cura/Settings/GlobalStack.py | 2 +- cura/Settings/MachineManager.py | 2 +- cura/Settings/MachineNameValidator.py | 2 +- cura/Settings/MaterialManager.py | 2 +- .../MaterialSettingsVisibilityHandler.py | 2 +- cura/Settings/MaterialsModel.py | 2 +- cura/Settings/ProfilesModel.py | 2 +- cura/Settings/QualityAndUserProfilesModel.py | 2 +- cura/Settings/QualitySettingsModel.py | 2 +- cura/Settings/SetObjectExtruderOperation.py | 2 +- cura/Settings/SettingInheritanceManager.py | 2 +- cura/Settings/SettingOverrideDecorator.py | 2 +- cura/Settings/UserProfilesModel.py | 2 +- cura/Settings/__init__.py | 2 +- cura_app.py | 2 +- plugins/3MFReader/ThreeMFReader.py | 2 +- plugins/3MFReader/ThreeMFWorkspaceReader.py | 2 +- plugins/3MFReader/WorkspaceDialog.py | 2 +- plugins/3MFReader/WorkspaceDialog.qml | 2 +- plugins/3MFReader/__init__.py | 2 +- plugins/3MFWriter/ThreeMFWorkspaceWriter.py | 2 +- plugins/3MFWriter/ThreeMFWriter.py | 2 +- plugins/3MFWriter/__init__.py | 2 +- plugins/AutoSave/AutoSave.py | 2 +- plugins/AutoSave/__init__.py | 2 +- plugins/ChangeLogPlugin/ChangeLog.py | 2 +- plugins/ChangeLogPlugin/ChangeLog.qml | 2 +- plugins/ChangeLogPlugin/__init__.py | 2 +- .../CuraEngineBackend/CuraEngineBackend.py | 2 +- plugins/CuraEngineBackend/ProcessGCodeJob.py | 2 +- .../ProcessSlicedLayersJob.py | 2 +- plugins/CuraEngineBackend/StartSliceJob.py | 2 +- plugins/CuraEngineBackend/__init__.py | 2 +- .../CuraProfileReader/CuraProfileReader.py | 2 +- plugins/CuraProfileReader/__init__.py | 2 +- .../CuraProfileWriter/CuraProfileWriter.py | 2 +- plugins/CuraProfileWriter/__init__.py | 2 +- .../FirmwareUpdateChecker.py | 2 +- .../FirmwareUpdateCheckerJob.py | 2 +- plugins/FirmwareUpdateChecker/__init__.py | 2 +- .../GCodeProfileReader/GCodeProfileReader.py | 2 +- plugins/GCodeProfileReader/__init__.py | 2 +- plugins/GCodeReader/GCodeReader.py | 2 +- plugins/GCodeReader/__init__.py | 2 +- plugins/GCodeWriter/GCodeWriter.py | 2 +- plugins/GCodeWriter/__init__.py | 2 +- plugins/ImageReader/ConfigUI.qml | 2 +- plugins/ImageReader/ImageReader.py | 2 +- plugins/ImageReader/ImageReaderUI.py | 2 +- plugins/ImageReader/__init__.py | 2 +- plugins/LayerView/LayerPass.py | 2 +- plugins/LayerView/LayerView.py | 2 +- plugins/LayerView/LayerView.qml | 2 +- plugins/LayerView/__init__.py | 2 +- .../LegacyProfileReader.py | 2 +- plugins/LegacyProfileReader/__init__.py | 2 +- .../MachineSettingsAction.py | 2 +- .../MachineSettingsAction.qml | 2 +- plugins/MachineSettingsAction/__init__.py | 2 +- .../PerObjectCategory.qml | 2 +- .../PerObjectSettingsTool/PerObjectItem.qml | 2 +- .../PerObjectSettingVisibilityHandler.py | 2 +- .../PerObjectSettingsPanel.qml | 2 +- .../PerObjectSettingsTool.py | 2 +- plugins/PerObjectSettingsTool/__init__.py | 2 +- plugins/PluginBrowser/PluginBrowser.py | 2 +- plugins/PluginBrowser/__init__.py | 2 +- .../LinuxRemovableDrivePlugin.py | 2 +- .../OSXRemovableDrivePlugin.py | 2 +- .../RemovableDriveOutputDevice.py | 2 +- .../RemovableDrivePlugin.py | 2 +- .../WindowsRemovableDrivePlugin.py | 2 +- .../RemovableDriveOutputDevice/__init__.py | 2 +- plugins/SliceInfoPlugin/SliceInfo.py | 2 +- plugins/SliceInfoPlugin/SliceInfoJob.py | 2 +- plugins/SliceInfoPlugin/__init__.py | 2 +- plugins/SolidView/SolidView.py | 2 +- plugins/SolidView/__init__.py | 2 +- .../NetworkPrinterOutputDevice.py | 2 +- .../NetworkPrinterOutputDevicePlugin.py | 2 +- plugins/UM3NetworkPrinting/PrintWindow.qml | 2 +- plugins/UM3NetworkPrinting/__init__.py | 2 +- plugins/USBPrinting/FirmwareUpdateWindow.qml | 2 +- plugins/USBPrinting/USBPrinterOutputDevice.py | 2 +- .../USBPrinterOutputDeviceManager.py | 2 +- plugins/USBPrinting/__init__.py | 2 +- .../BedLevelMachineAction.qml | 2 +- .../UM2UpgradeSelection.py | 2 +- .../UM2UpgradeSelectionMachineAction.qml | 2 +- .../UMOUpgradeSelection.py | 2 +- .../UMOUpgradeSelectionMachineAction.qml | 2 +- .../UpgradeFirmwareMachineAction.qml | 2 +- plugins/UltimakerMachineActions/__init__.py | 2 +- .../VersionUpgrade21to22/MachineInstance.py | 2 +- .../VersionUpgrade21to22/Preferences.py | 2 +- .../VersionUpgrade21to22/Profile.py | 2 +- .../VersionUpgrade21to22.py | 2 +- .../VersionUpgrade21to22/__init__.py | 2 +- .../VersionUpgrade22to24/VersionUpgrade.py | 2 +- .../VersionUpgrade22to24/__init__.py | 2 +- .../VersionUpgrade25to26.py | 2 +- .../VersionUpgrade25to26/__init__.py | 2 +- .../tests/TestVersionUpgrade25to26.py | 2 +- .../VersionUpgrade26to27.py | 2 +- .../VersionUpgrade26to27/__init__.py | 2 +- .../tests/TestVersionUpgrade26to27.py | 2 +- .../VersionUpgrade27to30.py | 2 +- .../VersionUpgrade27to30/__init__.py | 2 +- .../tests/TestVersionUpgrade27to30.py | 2 +- plugins/X3DReader/X3DReader.py | 2 +- plugins/XRayView/XRayPass.py | 2 +- plugins/XRayView/XRayView.py | 2 +- plugins/XRayView/__init__.py | 2 +- .../XmlMaterialProfile/XmlMaterialProfile.py | 2 +- .../XmlMaterialProfile/XmlMaterialUpgrader.py | 2 +- plugins/XmlMaterialProfile/__init__.py | 2 +- resources/qml/AboutDialog.qml | 10 +- resources/qml/Actions.qml | 2 +- resources/qml/AddMachineDialog.qml | 2 +- .../qml/AskOpenAsProjectOrModelsDialog.qml | 2 +- resources/qml/Cura.qml | 2 +- .../qml/DiscardOrKeepProfileChangesDialog.qml | 2 +- resources/qml/EngineLog.qml | 2 +- resources/qml/ExtruderButton.qml | 2 +- resources/qml/JobSpecs.qml | 2 +- resources/qml/Menus/ContextMenu.qml | 2 +- resources/qml/Menus/MaterialMenu.qml | 2 +- resources/qml/Menus/NozzleMenu.qml | 2 +- resources/qml/Menus/PrinterMenu.qml | 2 +- resources/qml/Menus/ProfileMenu.qml | 2 +- resources/qml/Menus/RecentFilesMenu.qml | 2 +- resources/qml/Menus/ViewMenu.qml | 2 +- resources/qml/MonitorButton.qml | 2 +- .../qml/OpenFilesIncludingProjectsDialog.qml | 2 +- resources/qml/Preferences/GeneralPage.qml | 2 +- resources/qml/Preferences/MachinesPage.qml | 2 +- resources/qml/Preferences/MaterialView.qml | 2 +- resources/qml/Preferences/MaterialsPage.qml | 2 +- resources/qml/Preferences/ProfileTab.qml | 2 +- resources/qml/Preferences/ProfilesPage.qml | 2 +- resources/qml/Preferences/ReadOnlySpinBox.qml | 2 +- .../qml/Preferences/ReadOnlyTextArea.qml | 2 +- .../qml/Preferences/ReadOnlyTextField.qml | 2 +- .../qml/Preferences/SettingVisibilityPage.qml | 2 +- resources/qml/PrintMonitor.qml | 2 +- resources/qml/SaveButton.qml | 2 +- resources/qml/Settings/SettingCategory.qml | 2 +- resources/qml/Settings/SettingCheckBox.qml | 2 +- resources/qml/Settings/SettingComboBox.qml | 2 +- resources/qml/Settings/SettingExtruder.qml | 2 +- resources/qml/Settings/SettingItem.qml | 2 +- .../qml/Settings/SettingOptionalExtruder.qml | 2 +- resources/qml/Settings/SettingTextField.qml | 2 +- resources/qml/Settings/SettingUnknown.qml | 2 +- resources/qml/Settings/SettingView.qml | 2 +- resources/qml/Sidebar.qml | 2 +- resources/qml/SidebarAdvanced.qml | 2 +- resources/qml/SidebarContents.qml | 2 +- resources/qml/SidebarHeader.qml | 2 +- resources/qml/SidebarSimple.qml | 2 +- resources/qml/SidebarTooltip.qml | 2 +- resources/qml/Toolbar.qml | 2 +- resources/qml/Topbar.qml | 2 +- resources/qml/WorkspaceSummaryDialog.qml | 2 +- resources/themes/cura-light/styles.qml | 2 +- setup.py | 2 +- tests/Settings/TestCuraContainerRegistry.py | 2 +- tests/Settings/TestExtruderStack.py | 2 +- tests/Settings/TestGlobalStack.py | 2 +- 205 files changed, 367 insertions(+), 863 deletions(-) create mode 100755 CuraEngine diff --git a/CuraEngine b/CuraEngine new file mode 100755 index 0000000000000000000000000000000000000000..3cee13468b3835775c22754503ff0d0e271b3346 GIT binary patch literal 4739960 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 z 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¡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%0DHmi@r>!WaW(ucM;GQ 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