diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000000..b78b9b91a2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,36 @@ + + +**Application Version** + + +**Platform** + + +**Qt** + + +**PyQt** + + +**Display Driver** + + +**Steps to Reproduce** + + +**Actual Results** + + +**Expected results** + + +**Additional Information** + diff --git a/.gitignore b/.gitignore index 570c932d28..71e83433cf 100644 --- a/.gitignore +++ b/.gitignore @@ -33,16 +33,23 @@ cura.desktop .settings #Externally located plug-ins. -plugins/CuraSolidWorksPlugin -plugins/Doodle3D-cura-plugin -plugins/GodMode -plugins/PostProcessingPlugin -plugins/X3GWriter -plugins/FlatProfileExporter -plugins/ProfileFlattener -plugins/cura-god-mode-plugin plugins/cura-big-flame-graph +plugins/cura-god-mode-plugin plugins/cura-siemensnx-plugin +plugins/CuraBlenderPlugin +plugins/CuraCloudPlugin +plugins/CuraLiveScriptingPlugin +plugins/CuraOpenSCADPlugin +plugins/CuraPrintProfileCreator +plugins/CuraSolidWorksPlugin +plugins/CuraVariSlicePlugin +plugins/Doodle3D-cura-plugin +plugins/FlatProfileExporter +plugins/GodMode +plugins/OctoPrintPlugin +plugins/PostProcessingPlugin +plugins/ProfileFlattener +plugins/X3GWriter #Build stuff CMakeCache.txt diff --git a/CHANGES b/CHANGES deleted file mode 100644 index bd9c26751c..0000000000 --- a/CHANGES +++ /dev/null @@ -1,173 +0,0 @@ -Cura 15.06 Beta -=============== - -This is the *Beta* version of Cura 15.06. - -Cura 15.06 is a new release built from the ground up on a completely new -framework called Uranium. This framework has been designed to make it easier to -extend Cura with additional functionality as well as provide a cleaner UI. - -Changes since 15.05.95 ----------------------- - -* Fixed: Selection ghost remains visible after deleting an object -* Fixed: Window does not show up immediately after starting application on OSX -* Fixed: Added display of rotation angle during rotation -* Fixed: Object changes position while rotating/scaling -* Fixed: Loading improvements in the layer view -* Fixed: Added application icons -* Fixed: Improved feedback when loading models -* Fixed: Eject device on MacOSX now provides proper feedback -* Fixed: Make it possible to show retraction settings for UM2 -* Fixed: Opening the machine preferences page will switch to the first available machine -* Fixed: Improved tool handle hit area size -* Fixed: Render lines with a thickness based on screen DPI - -Changes since 15.05.94 ----------------------- - -* Added Russian translations -* Fixed: Infill not displayed in layer view -* Fixed: Cannot select/scale/rotate when first activating the tool and then trying to select a model. -* Fixed: Improved font rendering on Windows -* Fixed: Help > Show Documentation crashes Cura on Windows -* Fixed: "There is no disk in the drive" repeating messages on Windows -* Fixed: Retraction settings not visible for Ultimaker2 -* Fixed: Display rotation angle when rotating an object -* Fixed: Time/Quality slider values are properly rounded -* Fixed: Improved clarity of buttons and text -* Fixed: No indication that anything is happening when loading a model -* Fixed: Eject device now works on Windows - -Changes since 15.05.93 ----------------------- - -* Fixed: No shortcuts for moving up/down layers in layer view. -* Fixed: Last view layers could not be scrolled through in layer view. -* Fixed: Files provided on command line would not actually show up on the build - platform. -* Fixed: Render a ghost of the selection in Layer view to make the actual object - position clear. -* Fixed: Showing a menu would clear the selection. -* Fixed: Size and scaling factor display for scale tool. -* Fixed: Missing background for additional tool controls. -* Fixed: Loading message times out when loading large files. -* Fixed: Show recent files in the file menu. -* Fixed: Windows installer will now install MSVC 2010 redistributable, to - prevent issues with missing DLL's. -* Fixed: Collapsed/expanded state of setting categories not stored. - -Changes since 15.05.91 ----------------------- - -* There is now a working MacOSX version. Currently it supports OSX 10.7 and - higher. -* Fixed: Need to deselect before selecting a different object. -* Fixed: Object can be moved on Z axis. -* Fixed: Error values should be considered invalid values and will not trigger a - slice. -* Fixed: Text fields used a locale-aware validator while the underlying code did - not. -* Fixed: Text fields will trigger a slice on text change, not only after focus - change/enter press. -* Fixed: Rotate Tool snaps to incorrect value. -* Fixed: Object Collision would only moved objects to the right. -* Fixed: Object Collision would move the selected object when it should not. -* Fixed: Camera panning now works correctly instead of doing nothing. -* Fixed: Camera would flip around center point at maximum rotation. -* Fixed: Build platform grid blocked view from below objects. -* Fixed: Viewport on MacOSX with high-DPI screens was only taking 1/4th of the -window - -Changes since 15.05.90 ----------------------- - -* Fixed: Additional UI elements for tools and views not loading. -* Fixed: Double click needed to change setting dialog page. -* Fixed: Context menu entries (reload, center object, etc.) not working. -* Fixed: "Open With" or passing files from command line not working. -* Fixed: "Reload All" would not reload files. - -In addition, a lot of work has gone into getting a usable Mac OSX version. - -New Features ------------- - -* Plugin based system - The Uranium framework provides us with a plugin-based system - that provides additional flexibility when extending Cura. Think - of new views, tools, file formats, etc. This is probably the - biggest new feature. -* Improved UI - The UI has received a complete overhaul. -* Time-Quality Slider - The 4 static quick print profiles have been replaced with - a slider that should make it easier to find the right spot - between print time and print quality. -* More Settings - The Advanced mode is now configurable and can show many - additional settings that were previously not available, while at - the same time not overwhelming new users with too many settings. - Custom set of visible settings can be created by the user. -* Support for high-DPI screens - The refreshed UI has been designed with high-DPI screens in - mind which should improve the experience of Cura on such - devices. -* Improved language support - (Not yet available for the Beta release.) -* Improved support structure generation - The new version of the CuraEngine now features improved - support generation algorithms and additional options for support - structure generation. -* Experimental Feature: Wire Printing - Wire Printing has been added as an experimental new feature. It - will print objects as a structure of lines. It can be enabled by - from Advanced Mode -> Fixes -> Wire Printing. -* Undo/Redo - It is now possible to undo and redo most scene operations, like - moving or rotating objects. - -Features from earlier versions not (yet) in this release --------------------------------------------------------- - -* The All-at-once/One-at-a-time toggle is not available. - We are working on an improved implementation of this mechanism - but it will not be available for this release. -* No dual extrusion features are available yet. - We are working on a completely new workflow for this but this - needs additional time. -* “Lay Flat” has been removed. - The existing implementation was unfortunately not salvageable. - We will be looking into an improved implementation for this - feature. -* "Split Object Into Parts" has been removed. - Due to the same reason as Lay Flat. -* Support for AMF and DAE file formats has been removed. - Both of these will be implemented as plugins in the future. -* Support for directly loading a GCode file is not yet available. - This will be implemented as a plugin in the future. -* Support for PNG, JPG and other image formats has been removed. - These can be supported by a plugin with an improved UI. -* Support for loading Minecraft levels has been removed. - This can be implemented as a plugin. -* Windows XP support has been dropped. - Microsoft is no longer supporting xp, so they no longer back - port certain features that we require. -* X-Ray view is missing. - Will be implemented as a (you might have guessed it) plugin. -* Fixes: Follow Mesh Surface - Has been removed from the engine, the same result can be - achieved using no infill or top/bottom layers. - -Known Issues ------------- - -For an up to date list of all known issues, please see -https://github.com/Ultimaker/Cura/issues and -https://github.com/Ultimaker/Uranium/issues . - -* Some OBJ files are rendered as black objects due to missing - normals. -* Disabling plugins does not work correctly yet. -* Unicorn occasionally still requires feeding. Do not feed it - after midnight. diff --git a/CMakeLists.txt b/CMakeLists.txt index 44b4b57f54..9296c4ce4e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,7 +39,7 @@ find_package(PythonInterp 3.5.0 REQUIRED) install(DIRECTORY resources DESTINATION ${CMAKE_INSTALL_DATADIR}/cura) install(DIRECTORY plugins - DESTINATION lib/cura) + DESTINATION lib${LIB_SUFFIX}/cura) if(NOT APPLE AND NOT WIN32) install(FILES cura_app.py DESTINATION ${CMAKE_INSTALL_BINDIR} @@ -47,16 +47,16 @@ if(NOT APPLE AND NOT WIN32) RENAME cura) if(EXISTS /etc/debian_version) install(DIRECTORY cura - DESTINATION lib/python${PYTHON_VERSION_MAJOR}/dist-packages + DESTINATION lib${LIB_SUFFIX}/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) + DESTINATION lib${LIB_SUFFIX}/python${PYTHON_VERSION_MAJOR}/dist-packages/cura) else() install(DIRECTORY cura - DESTINATION lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages + DESTINATION lib${LIB_SUFFIX}/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) + DESTINATION lib${LIB_SUFFIX}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/cura) endif() install(FILES ${CMAKE_BINARY_DIR}/cura.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications) @@ -72,8 +72,8 @@ else() DESTINATION ${CMAKE_INSTALL_BINDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) install(DIRECTORY cura - DESTINATION lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages + DESTINATION lib${LIB_SUFFIX}/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) + DESTINATION lib${LIB_SUFFIX}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages/cura) endif() diff --git a/Jenkinsfile b/Jenkinsfile index 6408cbf9b2..20c7303719 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,45 +1,47 @@ -parallel_nodes(['linux && cura', 'windows && cura']) { - // Prepare building - stage('Prepare') { - // Ensure we start with a clean build directory. - step([$class: 'WsCleanup']) +timeout(time: 2, unit: "HOURS") { + parallel_nodes(['linux && cura', 'windows && cura']) { + // Prepare building + stage('Prepare') { + // Ensure we start with a clean build directory. + step([$class: 'WsCleanup']) - // Checkout whatever sources are linked to this pipeline. - checkout scm - } + // Checkout whatever sources are linked to this pipeline. + checkout scm + } - // If any error occurs during building, we want to catch it and continue with the "finale" stage. - catchError { - // Building and testing should happen in a subdirectory. - dir('build') { - // Perform the "build". Since Uranium is Python code, this basically only ensures CMake is setup. - stage('Build') { - def branch = env.BRANCH_NAME - if(!fileExists("${env.CURA_ENVIRONMENT_PATH}/${branch}")) { - branch = "master" + // If any error occurs during building, we want to catch it and continue with the "finale" stage. + catchError { + // Building and testing should happen in a subdirectory. + dir('build') { + // Perform the "build". Since Uranium is Python code, this basically only ensures CMake is setup. + stage('Build') { + def branch = env.BRANCH_NAME + if(!fileExists("${env.CURA_ENVIRONMENT_PATH}/${branch}")) { + branch = "master" + } + + // Ensure CMake is setup. Note that since this is Python code we do not really "build" it. + def uranium_dir = get_workspace_dir("Ultimaker/Uranium/${branch}") + cmake("..", "-DCMAKE_PREFIX_PATH=\"${env.CURA_ENVIRONMENT_PATH}/${branch}\" -DCMAKE_BUILD_TYPE=Release -DURANIUM_DIR=\"${uranium_dir}\"") } - // Ensure CMake is setup. Note that since this is Python code we do not really "build" it. - def uranium_dir = get_workspace_dir("Ultimaker/Uranium/${branch}") - cmake("..", "-DCMAKE_PREFIX_PATH=\"${env.CURA_ENVIRONMENT_PATH}/${branch}\" -DCMAKE_BUILD_TYPE=Release -DURANIUM_DIR=\"${uranium_dir}\"") - } - - // Try and run the unit tests. If this stage fails, we consider the build to be "unstable". - stage('Unit Test') { - try { - make('test') - } catch(e) { - currentBuild.result = "UNSTABLE" + // Try and run the unit tests. If this stage fails, we consider the build to be "unstable". + stage('Unit Test') { + try { + make('test') + } catch(e) { + currentBuild.result = "UNSTABLE" + } } } } - } - // Perform any post-build actions like notification and publishing of unit tests. - stage('Finalize') { - // Publish the test results to Jenkins. - junit allowEmptyResults: true, testResults: 'build/junit*.xml' + // Perform any post-build actions like notification and publishing of unit tests. + stage('Finalize') { + // Publish the test results to Jenkins. + junit allowEmptyResults: true, testResults: 'build/junit*.xml' - notify_build_result(env.CURA_EMAIL_RECIPIENTS, '#cura-dev', ['master', '2.']) + notify_build_result(env.CURA_EMAIL_RECIPIENTS, '#cura-dev', ['master', '2.']) + } } } diff --git a/README.md b/README.md index f8d809df16..6ea839a300 100644 --- a/README.md +++ b/README.md @@ -1,74 +1,43 @@ Cura ==== - -This is the new, shiny frontend for Cura. [daid/Cura](https://github.com/daid/Cura.git) is the old legacy Cura that everyone knows and loves/hates. - -We re-worked the whole GUI code at Ultimaker, because the old code started to become a unmaintainable. - +This is the new, shiny frontend for Cura. Check [daid/LegacyCura](https://github.com/daid/LegacyCura) for the legacy Cura that everyone knows and loves/hates. We re-worked the whole GUI code at Ultimaker, because the old code started to become unmaintainable. Logging Issues ------------ -Use [this](https://github.com/Ultimaker/Uranium/wiki/Bug-Reporting-Template) template to report issues. New issues that do not adhere to this template will take us a lot longer to handle and will therefore have a lower pirority. - For crashes and similar issues, please attach the following information: * (On Windows) The log as produced by dxdiag (start -> run -> dxdiag -> save output) * The Cura GUI log file, located at - * %APPDATA%\cura\\``\cura.log (Windows), or usually C:\Users\\``\AppData\Roaming\cura\\``\cura.log - * $User/Library/Application Support/cura/``/cura.log (OSX) - * $USER/.local/share/cura/``/cura.log (Ubuntu/Linux) + * `%APPDATA%\cura\\cura.log` (Windows), or usually `C:\Users\\\AppData\Roaming\cura\\cura.log` + * `$USER/Library/Application Support/cura//cura.log` (OSX) + * `$USER/.local/share/cura//cura.log` (Ubuntu/Linux) If the Cura user interface still starts, you can also reach this directory from the application menu in Help -> Show settings folder +For additional support, you could also ask in the #cura channel on FreeNode IRC. For help with development, there is also the #cura-dev channel. + Dependencies ------------ - -* [Uranium](https://github.com/Ultimaker/Uranium) - Cura is built on top of the Uranium framework. -* [CuraEngine](https://github.com/Ultimaker/CuraEngine) - This will be needed at runtime to perform the actual slicing. -* [PySerial](https://github.com/pyserial/pyserial) - Only required for USB printing support. -* [python-zeroconf](https://github.com/jstasiak/python-zeroconf) - Only required to detect mDNS-enabled printers - -Configuring Cura ----------------- -Link your CuraEngine backend by inserting the following lines in `$HOME/.config/cura/config.cfg` : -``` -[backend] -location = /[path_to_the..]/CuraEngine/build/CuraEngine -``` +* [Uranium](https://github.com/Ultimaker/Uranium) Cura is built on top of the Uranium framework. +* [CuraEngine](https://github.com/Ultimaker/CuraEngine) This will be needed at runtime to perform the actual slicing. +* [PySerial](https://github.com/pyserial/pyserial) Only required for USB printing support. +* [python-zeroconf](https://github.com/jstasiak/python-zeroconf) Only required to detect mDNS-enabled printers Build scripts ------------- +Please checkout [cura-build](https://github.com/Ultimaker/cura-build) for detailed building instructions. -Please checkout [cura-build](https://github.com/Ultimaker/cura-build) - -Third party plugins +Plugins ------------- -* [Post Processing Plugin](https://github.com/nallath/PostProcessingPlugin): Allows for post-processing scripts to run on g-code. -* [Barbarian Plugin](https://github.com/nallath/BarbarianPlugin): Simple scale tool for imperial to metric. -* [X3G Writer](https://github.com/Ghostkeeper/X3GWriter): Adds support for exporting X3G files. -* [Auto orientation](https://github.com/nallath/CuraOrientationPlugin): Calculate the optimal orientation for a model. -* [OctoPrint Plugin](https://github.com/fieldofview/OctoPrintPlugin): Send printjobs directly to OctoPrint and monitor their progress in Cura. -* [Electric Print Cost Calculator Plugin](https://github.com/zoff99/ElectricPrintCostCalculator): Calculate the electric costs of a print. +Please check our [Wiki page](https://github.com/Ultimaker/Cura/wiki/Plugin-Directory) for details about creating and using plugins. -Making profiles for other printers ----------------------------------- -If your make of printer is not in the list of supported printers, and using the "Custom FDM Printer" does not offer enough flexibility, you can use [this](https://github.com/Ultimaker/Cura/blob/master/resources/definitions/ultimaker_original.def.json) as a template. +Supported printers +------------- +Please check our [Wiki page](https://github.com/Ultimaker/Cura/wiki/Adding-new-machine-profiles-to-Cura) for guidelines about adding support for new machines. -* Change the machine ID to something unique -* Change the machine_name to your printer's name -* If you have a 3D model of your platform you can put it in resources/meshes and put its name under platform -* Set your machine's dimensions with machine_width, machine_depth, and machine_height -* If your printer's origin is in the center of the bed, set machine_center_is_zero to true. -* Set your print head dimensions with the machine_head_shape parameters -* Set the start and end gcode in machine_start_gcode and machine_end_gcode - -Once you are done, put the profile you have made into resources/definitions, or in definitions in your cura profile folder. - -If you want to make a definition for a multi-extrusion printer, have a look at [this](https://github.com/Ultimaker/Cura/blob/master/resources/definitions/ultimaker_original_dual.def.json) as a template, along with the two extruder definitions it references [here](https://github.com/Ultimaker/Cura/blob/master/resources/extruders/ultimaker_original_dual_1st.def.json) and [here](https://github.com/Ultimaker/Cura/blob/master/resources/extruders/ultimaker_original_dual_2nd.def.json) +Configuring Cura +---------------- +Please check out [Wiki page](https://github.com/Ultimaker/Cura/wiki/Cura-Settings) about configuration options for developers. Translating Cura ---------------- @@ -91,3 +60,7 @@ To submit your translation, ideally you would make two pull requests where all ` After the translation is submitted, the Cura maintainers will check for its completeness and check whether it is consistent. We will take special care to look for common mistakes, such as translating mark-up `` code and such. We are often not fluent in every language, so we expect the translator and the international users to make corrections where necessary. Of course, there will always be some mistakes in every translation. When the next Cura release comes around, some of the texts will have changed and some new texts will have been added. Around the time when the beta is released we will invoke a string freeze, meaning that no developer is allowed to make changes to the texts. Then we will update the translation template `.pot` files and ask all our translators to update their translations. If you are unable to update the translation in time for the actual release, we will remove the language from the drop-down menu in the Preferences window. The translation stays in Cura however, so that someone might pick it up again later and update it with the newest texts. Also, users who had previously selected the language can still continue Cura in their language but English text will appear among the original text. + +License +---------------- +Cura is released under the terms of the LGPLv3 or higher. A copy of this license should be included with the software. diff --git a/cmake/CuraTests.cmake b/cmake/CuraTests.cmake index a8af16c28c..ffe4616bf3 100644 --- a/cmake/CuraTests.cmake +++ b/cmake/CuraTests.cmake @@ -24,16 +24,23 @@ function(cura_add_test) if(WIN32) string(REPLACE "|" "\\;" _PYTHONPATH ${_PYTHONPATH}) + set(_PYTHONPATH "${_PYTHONPATH}\\;$ENV{PYTHONPATH}") else() string(REPLACE "|" ":" _PYTHONPATH ${_PYTHONPATH}) + set(_PYTHONPATH "${_PYTHONPATH}:$ENV{PYTHONPATH}") endif() - add_test( - NAME ${_NAME} - COMMAND ${PYTHON_EXECUTABLE} -m pytest --junitxml=${CMAKE_BINARY_DIR}/junit-${_NAME}.xml ${_DIRECTORY} - ) - set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT LANG=C) - set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT "PYTHONPATH=${_PYTHONPATH}") + get_test_property(${_NAME} ENVIRONMENT test_exists) #Find out if the test exists by getting a property from it that always exists (such as ENVIRONMENT because we set that ourselves). + if (NOT ${test_exists}) + add_test( + NAME ${_NAME} + COMMAND ${PYTHON_EXECUTABLE} -m pytest --junitxml=${CMAKE_BINARY_DIR}/junit-${_NAME}.xml ${_DIRECTORY} + ) + set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT LANG=C) + set_tests_properties(${_NAME} PROPERTIES ENVIRONMENT "PYTHONPATH=${_PYTHONPATH}") + else() + message(WARNING "Duplicate test ${_NAME}!") + endif() endfunction() cura_add_test(NAME pytest-main DIRECTORY ${CMAKE_SOURCE_DIR}/tests PYTHONPATH "${CMAKE_SOURCE_DIR}|${URANIUM_DIR}") diff --git a/cura.desktop.in b/cura.desktop.in index 778e1d5033..a91032dd6f 100644 --- a/cura.desktop.in +++ b/cura.desktop.in @@ -1,6 +1,6 @@ [Desktop Entry] -Name=Cura -Name[de]=Cura +Name=Ultimaker Cura +Name[de]=Ultimaker Cura GenericName=3D Printing Software GenericName[de]=3D-Druck-Software Comment=Cura converts 3D models into paths for a 3D printer. It prepares your print for maximum accuracy, minimum printing time and good reliability with many extra features that make your print come out great. diff --git a/cura/Arrange.py b/cura/Arranging/Arrange.py old mode 100755 new mode 100644 similarity index 91% rename from cura/Arrange.py rename to cura/Arranging/Arrange.py index 0d1f2e0c06..a90a97c3c2 --- a/cura/Arrange.py +++ b/cura/Arranging/Arrange.py @@ -1,8 +1,8 @@ from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Logger import Logger from UM.Math.Vector import Vector -from cura.ShapeArray import ShapeArray -from cura import ZOffsetDecorator +from cura.Arranging.ShapeArray import ShapeArray +from cura.Scene import ZOffsetDecorator from collections import namedtuple @@ -30,6 +30,7 @@ class Arrange: self._offset_x = offset_x self._offset_y = offset_y self._last_priority = 0 + self._is_empty = True ## Helper to create an Arranger instance # @@ -38,8 +39,8 @@ class Arrange: # \param scene_root Root for finding all scene nodes # \param fixed_nodes Scene nodes to be placed @classmethod - def create(cls, scene_root = None, fixed_nodes = None, scale = 0.5): - arranger = Arrange(220, 220, 110, 110, scale = scale) + def create(cls, scene_root = None, fixed_nodes = None, scale = 0.5, x = 220, y = 220): + arranger = Arrange(x, y, x // 2, y // 2, scale = scale) arranger.centerFirst() if fixed_nodes is None: @@ -52,6 +53,8 @@ class Arrange: # Place all objects fixed nodes for fixed_node in fixed_nodes: vertices = fixed_node.callDecoration("getConvexHull") + if not vertices: + continue points = copy.deepcopy(vertices._points) shape_arr = ShapeArray.fromPolygon(points, scale = scale) arranger.place(0, 0, shape_arr) @@ -62,7 +65,7 @@ class Arrange: for area in disallowed_areas: points = copy.deepcopy(area._points) shape_arr = ShapeArray.fromPolygon(points, scale = scale) - arranger.place(0, 0, shape_arr) + arranger.place(0, 0, shape_arr, update_empty = False) return arranger ## Find placement for a node (using offset shape) and place it (using hull shape) @@ -166,7 +169,8 @@ class Arrange: # \param x x-coordinate # \param y y-coordinate # \param shape_arr ShapeArray object - def place(self, x, y, shape_arr): + # \param update_empty updates the _is_empty, used when adding disallowed areas + def place(self, x, y, shape_arr, update_empty = True): x = int(self._scale * x) y = int(self._scale * y) offset_x = x + self._offset_x + shape_arr.offset_x @@ -179,10 +183,17 @@ class Arrange: max_y = min(max(offset_y + shape_arr.arr.shape[0], 0), shape_y - 1) occupied_slice = self._occupied[min_y:max_y, min_x:max_x] # we use a slice of shape because it can be out of bounds - occupied_slice[numpy.where(shape_arr.arr[ - min_y - offset_y:max_y - offset_y, min_x - offset_x:max_x - offset_x] == 1)] = 1 + new_occupied = numpy.where(shape_arr.arr[ + min_y - offset_y:max_y - offset_y, min_x - offset_x:max_x - offset_x] == 1) + if update_empty and new_occupied: + self._is_empty = False + occupied_slice[new_occupied] = 1 # Set priority to low (= high number), so it won't get picked at trying out. prio_slice = self._priority[min_y:max_y, min_x:max_x] prio_slice[numpy.where(shape_arr.arr[ min_y - offset_y:max_y - offset_y, min_x - offset_x:max_x - offset_x] == 1)] = 999 + + @property + def isEmpty(self): + return self._is_empty diff --git a/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py b/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py new file mode 100644 index 0000000000..3f23b0dbe7 --- /dev/null +++ b/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py @@ -0,0 +1,154 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from UM.Job import Job +from UM.Scene.SceneNode import SceneNode +from UM.Math.Vector import Vector +from UM.Operations.TranslateOperation import TranslateOperation +from UM.Operations.GroupedOperation import GroupedOperation +from UM.Message import Message +from UM.i18n import i18nCatalog +i18n_catalog = i18nCatalog("cura") + +from cura.Scene.ZOffsetDecorator import ZOffsetDecorator +from cura.Arranging.Arrange import Arrange +from cura.Arranging.ShapeArray import ShapeArray + +from typing import List + + +class ArrangeArray: + def __init__(self, x: int, y: int, fixed_nodes: List[SceneNode]): + self._x = x + self._y = y + self._fixed_nodes = fixed_nodes + self._count = 0 + self._first_empty = None + self._has_empty = False + self._arrange = [] + + def _update_first_empty(self): + for i, a in enumerate(self._arrange): + if a.isEmpty: + self._first_empty = i + self._has_empty = True + return + self._first_empty = None + self._has_empty = False + + def add(self): + new_arrange = Arrange.create(x = self._x, y = self._y, fixed_nodes = self._fixed_nodes) + self._arrange.append(new_arrange) + self._count += 1 + self._update_first_empty() + + def count(self): + return self._count + + def get(self, index): + return self._arrange[index] + + def getFirstEmpty(self): + if not self._is_empty: + self.add() + return self._arrange[self._first_empty] + + +class ArrangeObjectsAllBuildPlatesJob(Job): + def __init__(self, nodes: List[SceneNode], min_offset = 8): + super().__init__() + self._nodes = nodes + 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, + title = i18n_catalog.i18nc("@info:title", "Finding Location")) + status_message.show() + + + # Collect nodes to be placed + nodes_arr = [] # fill with (size, node, offset_shape_arr, hull_shape_arr) + for node in self._nodes: + offset_shape_arr, hull_shape_arr = ShapeArray.fromNode(node, min_offset = self._min_offset) + nodes_arr.append((offset_shape_arr.arr.shape[0] * offset_shape_arr.arr.shape[1], node, offset_shape_arr, hull_shape_arr)) + + # Sort the nodes with the biggest area first. + nodes_arr.sort(key=lambda item: item[0]) + nodes_arr.reverse() + + x, y = 200, 200 + + arrange_array = ArrangeArray(x = x, y = y, fixed_nodes = []) + arrange_array.add() + + # Place nodes one at a time + start_priority = 0 + grouped_operation = GroupedOperation() + found_solution_for_all = True + left_over_nodes = [] # nodes that do not fit on an empty build plate + + for idx, (size, node, offset_shape_arr, hull_shape_arr) in enumerate(nodes_arr): + # For performance reasons, we assume that when a location does not fit, + # it will also not fit for the next object (while what can be untrue). + # We also skip possibilities by slicing through the possibilities (step = 10) + + try_placement = True + + current_build_plate_number = 0 # always start with the first one + + # # Only for first build plate + # if last_size == size and last_build_plate_number == current_build_plate_number: + # # This optimization works if many of the objects have the same size + # # Continue with same build plate number + # start_priority = last_priority + # else: + # start_priority = 0 + + while try_placement: + # make sure that current_build_plate_number is not going crazy or you'll have a lot of arrange objects + while current_build_plate_number >= arrange_array.count(): + arrange_array.add() + arranger = arrange_array.get(current_build_plate_number) + + best_spot = arranger.bestSpot(offset_shape_arr, start_prio=start_priority, step=10) + x, y = best_spot.x, best_spot.y + node.removeDecorator(ZOffsetDecorator) + if node.getBoundingBox(): + center_y = node.getWorldPosition().y - node.getBoundingBox().bottom + else: + center_y = 0 + if x is not None: # We could find a place + arranger.place(x, y, hull_shape_arr) # place the object in the arranger + + node.callDecoration("setBuildPlateNumber", current_build_plate_number) + grouped_operation.addOperation(TranslateOperation(node, Vector(x, center_y, y), set_position = True)) + try_placement = False + else: + # very naive, because we skip to the next build plate if one model doesn't fit. + if arranger.isEmpty: + # apparently we can never place this object + left_over_nodes.append(node) + try_placement = False + else: + # try next build plate + current_build_plate_number += 1 + try_placement = True + + status_message.setProgress((idx + 1) / len(nodes_arr) * 100) + Job.yieldThread() + + for node in left_over_nodes: + node.callDecoration("setBuildPlateNumber", -1) # these are not on any build plate + found_solution_for_all = False + + grouped_operation.push() + + 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"), + title = i18n_catalog.i18nc("@info:title", "Can't Find Location")) + no_full_solution_message.show() diff --git a/cura/ArrangeObjectsJob.py b/cura/Arranging/ArrangeObjectsJob.py old mode 100755 new mode 100644 similarity index 95% rename from cura/ArrangeObjectsJob.py rename to cura/Arranging/ArrangeObjectsJob.py index d650fd7f57..f529543779 --- a/cura/ArrangeObjectsJob.py +++ b/cura/Arranging/ArrangeObjectsJob.py @@ -4,7 +4,6 @@ from UM.Job import Job from UM.Scene.SceneNode import SceneNode from UM.Math.Vector import Vector -from UM.Operations.SetTransformOperation import SetTransformOperation from UM.Operations.TranslateOperation import TranslateOperation from UM.Operations.GroupedOperation import GroupedOperation from UM.Logger import Logger @@ -12,9 +11,9 @@ from UM.Message import Message from UM.i18n import i18nCatalog i18n_catalog = i18nCatalog("cura") -from cura.ZOffsetDecorator import ZOffsetDecorator -from cura.Arrange import Arrange -from cura.ShapeArray import ShapeArray +from cura.Scene.ZOffsetDecorator import ZOffsetDecorator +from cura.Arranging.Arrange import Arrange +from cura.Arranging.ShapeArray import ShapeArray from typing import List diff --git a/cura/ShapeArray.py b/cura/Arranging/ShapeArray.py old mode 100755 new mode 100644 similarity index 97% rename from cura/ShapeArray.py rename to cura/Arranging/ShapeArray.py index 73fc2023e3..9232c9f22f --- a/cura/ShapeArray.py +++ b/cura/Arranging/ShapeArray.py @@ -43,13 +43,12 @@ class ShapeArray: transform_x = transform._data[0][3] transform_y = transform._data[2][3] hull_verts = node.callDecoration("getConvexHull") + # If a model is too small then it will not contain any points + if hull_verts is None or not hull_verts.getPoints().any(): + return None, None # For one_at_a_time printing you need the convex hull head. hull_head_verts = node.callDecoration("getConvexHullHead") or hull_verts - # If a model is to small then it will not contain any points - if not hull_verts.getPoints().any(): - return None, None - offset_verts = hull_head_verts.getMinkowskiHull(Polygon.approximatedCircle(min_offset)) offset_points = copy.deepcopy(offset_verts._points) # x, y offset_points[:, 0] = numpy.add(offset_points[:, 0], -transform_x) diff --git a/cura/Arranging/__init__.py b/cura/Arranging/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cura/BuildPlateModel.py b/cura/BuildPlateModel.py new file mode 100644 index 0000000000..73f61202c6 --- /dev/null +++ b/cura/BuildPlateModel.py @@ -0,0 +1,53 @@ +from PyQt5.QtCore import pyqtSignal, pyqtProperty, pyqtSlot + +from UM.Qt.ListModel import ListModel +from UM.Scene.Selection import Selection +from UM.Logger import Logger +from UM.Application import Application + + +class BuildPlateModel(ListModel): + maxBuildPlateChanged = pyqtSignal() + activeBuildPlateChanged = pyqtSignal() + selectionChanged = pyqtSignal() + + def __init__(self): + super().__init__() + Application.getInstance().getController().getScene().sceneChanged.connect(self._updateSelectedObjectBuildPlateNumbers) + Selection.selectionChanged.connect(self._updateSelectedObjectBuildPlateNumbers) + + self._max_build_plate = 1 # default + self._active_build_plate = -1 + self._selection_build_plates = [] + + def setMaxBuildPlate(self, max_build_plate): + self._max_build_plate = max_build_plate + self.maxBuildPlateChanged.emit() + + ## Return the highest build plate number + @pyqtProperty(int, notify = maxBuildPlateChanged) + def maxBuildPlate(self): + return self._max_build_plate + + def setActiveBuildPlate(self, nr): + self._active_build_plate = nr + self.activeBuildPlateChanged.emit() + + @pyqtProperty(int, notify = activeBuildPlateChanged) + def activeBuildPlate(self): + return self._active_build_plate + + @staticmethod + def createBuildPlateModel(): + return BuildPlateModel() + + def _updateSelectedObjectBuildPlateNumbers(self, *args): + result = set() + for node in Selection.getAllSelectedObjects(): + result.add(node.callDecoration("getBuildPlateNumber")) + self._selection_build_plates = list(result) + self.selectionChanged.emit() + + @pyqtProperty("QVariantList", notify = selectionChanged) + def selectionBuildPlates(self): + return self._selection_build_plates diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index e87bfebd94..2567641cc9 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -513,14 +513,13 @@ class BuildVolume(SceneNode): 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 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: @@ -528,9 +527,20 @@ class BuildVolume(SceneNode): else: self._height = self._global_container_stack.getProperty("machine_height", "value") self._build_volume_message.hide() + update_disallowed_areas = True 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: + # sometimes the machine size or shape settings are adjusted on the active machine, we should reflect this + if setting_key in self._machine_settings: + self._height = self._global_container_stack.getProperty("machine_height", "value") + self._width = self._global_container_stack.getProperty("machine_width", "value") + self._depth = self._global_container_stack.getProperty("machine_depth", "value") + self._shape = self._global_container_stack.getProperty("machine_shape", "value") + update_extra_z_clearance = True + update_disallowed_areas = True + rebuild_me = True + + if setting_key in self._skirt_settings + self._prime_settings + self._tower_settings + self._ooze_shield_settings + self._distance_settings + self._extruder_settings: update_disallowed_areas = True rebuild_me = True @@ -876,15 +886,6 @@ class BuildVolume(SceneNode): return result - ## Private convenience function to get a setting from the adhesion - # extruder. - # - # \param setting_key The key of the setting to get. - # \param property The property to get from the setting. - # \return The property of the specified setting in the adhesion extruder. - def _getSettingFromAdhesionExtruder(self, setting_key, property = "value"): - return self._getSettingFromExtruder(setting_key, "adhesion_extruder_nr", property) - ## Private convenience function to get a setting from every extruder. # # For single extrusion machines, this gets the setting from the global @@ -899,44 +900,6 @@ class BuildVolume(SceneNode): all_values[i] = 0 return all_values - ## Private convenience function to get a setting from the support infill - # extruder. - # - # \param setting_key The key of the setting to get. - # \param property The property to get from the setting. - # \return The property of the specified setting in the support infill - # extruder. - def _getSettingFromSupportInfillExtruder(self, setting_key, property = "value"): - return self._getSettingFromExtruder(setting_key, "support_infill_extruder_nr", property) - - ## Helper function to get a setting from an extruder specified in another - # setting. - # - # \param setting_key The key of the setting to get. - # \param extruder_setting_key The key of the setting that specifies from - # which extruder to get the setting, if there are multiple extruders. - # \param property The property to get from the setting. - # \return The property of the specified setting in the specified extruder. - def _getSettingFromExtruder(self, setting_key, extruder_setting_key, property = "value"): - multi_extrusion = self._global_container_stack.getProperty("machine_extruder_count", "value") > 1 - - if not multi_extrusion: - stack = self._global_container_stack - else: - extruder_index = self._global_container_stack.getProperty(extruder_setting_key, "value") - - if str(extruder_index) == "-1": # If extruder index is -1 use global instead - stack = self._global_container_stack - else: - extruder_stack_id = ExtruderManager.getInstance().extruderIds[str(extruder_index)] - stack = ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0] - - value = stack.getProperty(setting_key, property) - setting_type = stack.getProperty(setting_key, "type") - if not value and (setting_type == "int" or setting_type == "float"): - return 0 - return value - ## Convenience function to calculate the disallowed radius around the edge. # # This disallowed radius is to allow for space around the models that is @@ -945,6 +908,7 @@ class BuildVolume(SceneNode): def _getEdgeDisallowedSize(self): if not self._global_container_stack: return 0 + container_stack = self._global_container_stack used_extruders = ExtruderManager.getInstance().getUsedExtruderStacks() @@ -953,32 +917,44 @@ class BuildVolume(SceneNode): return 0.1 # Return a very small value, so we do draw disallowed area's near the edges. adhesion_type = container_stack.getProperty("adhesion_type", "value") + skirt_brim_line_width = self._global_container_stack.getProperty("skirt_brim_line_width", "value") + initial_layer_line_width_factor = self._global_container_stack.getProperty("initial_layer_line_width_factor", "value") if adhesion_type == "skirt": - skirt_distance = self._getSettingFromAdhesionExtruder("skirt_gap") - skirt_line_count = self._getSettingFromAdhesionExtruder("skirt_line_count") - 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 + skirt_distance = self._global_container_stack.getProperty("skirt_gap", "value") + skirt_line_count = self._global_container_stack.getProperty("skirt_line_count", "value") + + bed_adhesion_size = skirt_distance + (skirt_brim_line_width * skirt_line_count) * initial_layer_line_width_factor / 100.0 + + 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 -= skirt_brim_line_width * initial_layer_line_width_factor / 100.0 + elif adhesion_type == "brim": - 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 - #We don't create an additional line for the extruder we're printing the brim with. - bed_adhesion_size -= self._getSettingFromAdhesionExtruder("skirt_brim_line_width", "value") * self._getSettingFromAdhesionExtruder("initial_layer_line_width_factor", "value") / 100.0 + brim_line_count = self._global_container_stack.getProperty("brim_line_count", "value") + bed_adhesion_size = skirt_brim_line_width * brim_line_count * initial_layer_line_width_factor / 100.0 + + 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 brim with. + bed_adhesion_size -= skirt_brim_line_width * initial_layer_line_width_factor / 100.0 + elif adhesion_type == "raft": - bed_adhesion_size = self._getSettingFromAdhesionExtruder("raft_margin") + bed_adhesion_size = self._global_container_stack.getProperty("raft_margin", "value") + elif adhesion_type == "none": bed_adhesion_size = 0 + else: raise Exception("Unknown bed adhesion type. Did you forget to update the build volume calculations for your new bed adhesion type?") support_expansion = 0 - if self._getSettingFromSupportInfillExtruder("support_offset") and self._global_container_stack.getProperty("support_enable", "value"): - support_expansion += self._getSettingFromSupportInfillExtruder("support_offset") + support_enabled = self._global_container_stack.getProperty("support_enable", "value") + support_offset = self._global_container_stack.getProperty("support_offset", "value") + if support_enabled and support_offset: + support_expansion += support_offset farthest_shield_distance = 0 if container_stack.getProperty("draft_shield_enabled", "value"): @@ -1003,6 +979,7 @@ class BuildVolume(SceneNode): def _clamp(self, value, min_value, max_value): return max(min(value, max_value), min_value) + _machine_settings = ["machine_width", "machine_depth", "machine_height", "machine_shape", "machine_center_is_zero"] _skirt_settings = ["adhesion_type", "skirt_gap", "skirt_line_count", "skirt_brim_line_width", "brim_width", "brim_line_count", "raft_margin", "draft_shield_enabled", "draft_shield_dist", "initial_layer_line_width_factor"] _raft_settings = ["adhesion_type", "raft_base_thickness", "raft_interface_thickness", "raft_surface_layers", "raft_surface_thickness", "raft_airgap", "layer_0_z_overlap"] _extra_z_settings = ["retraction_hop_enabled", "retraction_hop"] diff --git a/cura/CrashHandler.py b/cura/CrashHandler.py index a78ecb8a72..b5d4001fe2 100644 --- a/cura/CrashHandler.py +++ b/cura/CrashHandler.py @@ -37,7 +37,7 @@ else: # List of exceptions that should be considered "fatal" and abort the program. # These are primarily some exception types that we simply cannot really recover from # (MemoryError and SystemError) and exceptions that indicate grave errors in the -# code that cause the Python interpreter to fail (SyntaxError, ImportError). +# code that cause the Python interpreter to fail (SyntaxError, ImportError). fatal_exception_types = [ MemoryError, SyntaxError, @@ -53,12 +53,13 @@ class CrashHandler: self.exception_type = exception_type self.value = value self.traceback = tb + self.dialog = None # Don't create a QDialog before there is a QApplication # While we create the GUI, the information will be stored for sending afterwards self.data = dict() self.data["time_stamp"] = time.time() - Logger.log("c", "An uncaught exception has occurred!") + Logger.log("c", "An uncaught error has occurred!") for line in traceback.format_exception(exception_type, value, tb): for part in line.rstrip("\n").split("\n"): Logger.log("c", part) @@ -70,11 +71,11 @@ class CrashHandler: if not application: sys.exit(1) + self.dialog = QDialog() self._createDialog() ## Creates a modal dialog. def _createDialog(self): - self.dialog = QDialog() self.dialog.setMinimumWidth(640) self.dialog.setMinimumHeight(640) self.dialog.setWindowTitle(catalog.i18nc("@title:window", "Crash Report")) @@ -90,7 +91,7 @@ class CrashHandler: def _messageWidget(self): label = QLabel() - label.setText(catalog.i18nc("@label crash message", """

A fatal exception has occurred. Please send us this Crash Report to fix the problem

+ label.setText(catalog.i18nc("@label crash message", """

A fatal error has occurred. Please send us this Crash Report to fix the problem

Please use the "Send report" button to post a bug report automatically to our servers

""")) @@ -108,11 +109,11 @@ class CrashHandler: except: self.cura_version = catalog.i18nc("@label unknown version of Cura", "Unknown") - crash_info = catalog.i18nc("@label Cura version", "Cura version: {version}
").format(version = self.cura_version) - crash_info += catalog.i18nc("@label Platform", "Platform: {platform}
").format(platform = platform.platform()) - crash_info += catalog.i18nc("@label Qt version", "Qt version: {qt}
").format(qt = QT_VERSION_STR) - crash_info += catalog.i18nc("@label PyQt version", "PyQt version: {pyqt}
").format(pyqt = PYQT_VERSION_STR) - crash_info += catalog.i18nc("@label OpenGL", "OpenGL: {opengl}
").format(opengl = self._getOpenGLInfo()) + crash_info = "" + catalog.i18nc("@label Cura version number", "Cura version") + ": " + str(self.cura_version) + "
" + crash_info += "" + catalog.i18nc("@label Type of platform", "Platform") + ": " + str(platform.platform()) + "
" + crash_info += "" + catalog.i18nc("@label", "Qt version") + ": " + str(QT_VERSION_STR) + "
" + crash_info += "" + catalog.i18nc("@label", "PyQt version") + ": " + str(PYQT_VERSION_STR) + "
" + crash_info += "" + catalog.i18nc("@label OpenGL version", "OpenGL") + ": " + str(self._getOpenGLInfo()) + "
" label.setText(crash_info) layout.addWidget(label) @@ -126,19 +127,24 @@ class CrashHandler: return group def _getOpenGLInfo(self): + opengl_instance = OpenGL.getInstance() + if not opengl_instance: + self.data["opengl"] = {"version": "n/a", "vendor": "n/a", "type": "n/a"} + return catalog.i18nc("@label", "not yet initialised
") + info = "
    " - info += catalog.i18nc("@label OpenGL version", "
  • OpenGL Version: {version}
  • ").format(version = OpenGL.getInstance().getOpenGLVersion()) - info += catalog.i18nc("@label OpenGL vendor", "
  • OpenGL Vendor: {vendor}
  • ").format(vendor = OpenGL.getInstance().getGPUVendorName()) - info += catalog.i18nc("@label OpenGL renderer", "
  • OpenGL Renderer: {renderer}
  • ").format(renderer = OpenGL.getInstance().getGPUType()) + info += catalog.i18nc("@label OpenGL version", "
  • OpenGL Version: {version}
  • ").format(version = opengl_instance.getOpenGLVersion()) + info += catalog.i18nc("@label OpenGL vendor", "
  • OpenGL Vendor: {vendor}
  • ").format(vendor = opengl_instance.getGPUVendorName()) + info += catalog.i18nc("@label OpenGL renderer", "
  • OpenGL Renderer: {renderer}
  • ").format(renderer = opengl_instance.getGPUType()) info += "
" - self.data["opengl"] = {"version": OpenGL.getInstance().getOpenGLVersion(), "vendor": OpenGL.getInstance().getGPUVendorName(), "type": OpenGL.getInstance().getGPUType()} + self.data["opengl"] = {"version": opengl_instance.getOpenGLVersion(), "vendor": opengl_instance.getGPUVendorName(), "type": opengl_instance.getGPUType()} return info def _exceptionInfoWidget(self): group = QGroupBox() - group.setTitle(catalog.i18nc("@title:groupbox", "Exception traceback")) + group.setTitle(catalog.i18nc("@title:groupbox", "Error traceback")) layout = QVBoxLayout() text_area = QTextEdit() @@ -280,5 +286,7 @@ class CrashHandler: Application.getInstance().callLater(self._show) def _show(self): - self.dialog.exec_() + # When the exception is not in the fatal_exception_types list, the dialog is not created, so we don't need to show it + if self.dialog: + self.dialog.exec_() os._exit(1) diff --git a/cura/CuraActions.py b/cura/CuraActions.py index b51728f028..2474e218e8 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -13,12 +13,18 @@ from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator from UM.Operations.GroupedOperation import GroupedOperation from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation from UM.Operations.SetTransformOperation import SetTransformOperation +from UM.Operations.TranslateOperation import TranslateOperation -from cura.SetParentOperation import SetParentOperation +from cura.Operations.SetParentOperation import SetParentOperation from cura.MultiplyObjectsJob import MultiplyObjectsJob from cura.Settings.SetObjectExtruderOperation import SetObjectExtruderOperation from cura.Settings.ExtruderManager import ExtruderManager +from cura.Operations.SetBuildPlateNumberOperation import SetBuildPlateNumberOperation + +from UM.Logger import Logger + + class CuraActions(QObject): def __init__(self, parent = None): super().__init__(parent) @@ -54,7 +60,11 @@ class CuraActions(QObject): while current_node.getParent() and current_node.getParent().callDecoration("isGroup"): current_node = current_node.getParent() - center_operation = SetTransformOperation(current_node, Vector()) + # This was formerly done with SetTransformOperation but because of + # unpredictable matrix deconstruction it was possible that mirrors + # could manifest as rotations. Centering is therefore done by + # moving the node to negative whatever its position is: + center_operation = TranslateOperation(current_node, -current_node._position) operation.addOperation(center_operation) operation.push() @@ -124,5 +134,31 @@ class CuraActions(QObject): operation.addOperation(SetObjectExtruderOperation(node, extruder_id)) operation.push() + @pyqtSlot(int) + def setBuildPlateForSelection(self, build_plate_nr: int) -> None: + Logger.log("d", "Setting build plate number... %d" % build_plate_nr) + operation = GroupedOperation() + + root = Application.getInstance().getController().getScene().getRoot() + + nodes_to_change = [] + for node in Selection.getAllSelectedObjects(): + parent_node = node # Find the parent node to change instead + while parent_node.getParent() != root: + parent_node = parent_node.getParent() + + for single_node in BreadthFirstIterator(parent_node): + nodes_to_change.append(single_node) + + if not nodes_to_change: + Logger.log("d", "Nothing to change.") + return + + for node in nodes_to_change: + operation.addOperation(SetBuildPlateNumberOperation(node, build_plate_nr)) + operation.push() + + Selection.clear() + def _openUrl(self, url): QDesktopServices.openUrl(url) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 1680e7c6a6..476b5d3708 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1,6 +1,6 @@ # Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. - from PyQt5.QtNetwork import QLocalServer from PyQt5.QtNetwork import QLocalSocket @@ -17,7 +17,6 @@ from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Mesh.ReadMeshJob import ReadMeshJob from UM.Logger import Logger from UM.Preferences import Preferences -from UM.SaveFile import SaveFile from UM.Scene.Selection import Selection from UM.Scene.GroupDecorator import GroupDecorator from UM.Settings.ContainerStack import ContainerStack @@ -32,15 +31,20 @@ from UM.Operations.AddSceneNodeOperation import AddSceneNodeOperation from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation from UM.Operations.GroupedOperation import GroupedOperation from UM.Operations.SetTransformOperation import SetTransformOperation -from cura.Arrange import Arrange -from cura.ShapeArray import ShapeArray -from cura.ConvexHullDecorator import ConvexHullDecorator -from cura.SetParentOperation import SetParentOperation -from cura.SliceableObjectDecorator import SliceableObjectDecorator -from cura.BlockSlicingDecorator import BlockSlicingDecorator -from cura.ArrangeObjectsJob import ArrangeObjectsJob +from cura.Arranging.Arrange import Arrange +from cura.Arranging.ArrangeObjectsJob import ArrangeObjectsJob +from cura.Arranging.ArrangeObjectsAllBuildPlatesJob import ArrangeObjectsAllBuildPlatesJob +from cura.Arranging.ShapeArray import ShapeArray from cura.MultiplyObjectsJob import MultiplyObjectsJob +from cura.Scene.ConvexHullDecorator import ConvexHullDecorator +from cura.Operations.SetParentOperation import SetParentOperation +from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator +from cura.Scene.BlockSlicingDecorator import BlockSlicingDecorator +from cura.Scene.BuildPlateDecorator import BuildPlateDecorator +from cura.Scene.CuraSceneNode import CuraSceneNode + +from cura.Scene.CuraSceneController import CuraSceneController from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyType from UM.Settings.ContainerRegistry import ContainerRegistry @@ -53,12 +57,13 @@ from cura.Settings.SettingInheritanceManager import SettingInheritanceManager from cura.Settings.UserProfilesModel import UserProfilesModel from cura.Settings.SimpleModeSettingsManager import SimpleModeSettingsManager + from . import PlatformPhysics from . import BuildVolume from . import CameraAnimation from . import PrintInformation from . import CuraActions -from . import ZOffsetDecorator +from cura.Scene import ZOffsetDecorator from . import CuraSplashScreen from . import CameraImageProvider from . import MachineActionManager @@ -72,8 +77,9 @@ from cura.Settings.ContainerSettingsModel import ContainerSettingsModel from cura.Settings.MaterialSettingsVisibilityHandler import MaterialSettingsVisibilityHandler from cura.Settings.QualitySettingsModel import QualitySettingsModel from cura.Settings.ContainerManager import ContainerManager -from cura.Settings.GlobalStack import GlobalStack -from cura.Settings.ExtruderStack import ExtruderStack + +from cura.ObjectsModel import ObjectsModel +from cura.BuildPlateModel import BuildPlateModel from PyQt5.QtCore import QUrl, pyqtSignal, pyqtProperty, QEvent, Q_ENUMS from UM.FlameProfiler import pyqtSlot @@ -85,7 +91,6 @@ import sys import os.path import numpy import copy -import urllib.parse import os import argparse import json @@ -95,17 +100,18 @@ numpy.seterr(all="ignore") MYPY = False if not MYPY: try: - from cura.CuraVersion import CuraVersion, CuraBuildType + from cura.CuraVersion import CuraVersion, CuraBuildType, CuraDebugMode except ImportError: CuraVersion = "master" # [CodeStyle: Reflecting imported value] CuraBuildType = "" + CuraDebugMode = False 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 = 3 + SettingVersion = 4 class ResourceTypes: QmlFiles = Resources.UserType + 1 @@ -126,9 +132,8 @@ class CuraApplication(QtApplication): # Cura will always show the Add Machine Dialog upon start. stacksValidationFinished = pyqtSignal() # Emitted whenever a validation is finished - projectFileLoaded = pyqtSignal(str) # Emitted whenever a project file is loaded + def __init__(self, **kwargs): - 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"]: Resources.addExpectedDirNameInData(dir_name) @@ -157,7 +162,6 @@ class CuraApplication(QtApplication): SettingDefinition.addSettingType("extruder", None, str, Validator) SettingDefinition.addSettingType("optional_extruder", None, str, None) - SettingDefinition.addSettingType("[int]", None, str, None) SettingFunction.registerOperator("extruderValues", ExtruderManager.getExtruderValues) @@ -173,16 +177,18 @@ class CuraApplication(QtApplication): Resources.addStorageType(self.ResourceTypes.MachineStack, "machine_instances") Resources.addStorageType(self.ResourceTypes.DefinitionChangesContainer, "definition_changes") - ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.QualityInstanceContainer) - ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.VariantInstanceContainer) - ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.MaterialInstanceContainer) - ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.UserInstanceContainer) - ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.ExtruderStack) - ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.MachineStack) - ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.DefinitionChangesContainer) + ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.QualityInstanceContainer, "quality") + ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.QualityInstanceContainer, "quality_changes") + ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.VariantInstanceContainer, "variant") + ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.MaterialInstanceContainer, "material") + ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.UserInstanceContainer, "user") + ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.ExtruderStack, "extruder_train") + ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.MachineStack, "machine") + ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.DefinitionChangesContainer, "definition_changes") ## Initialise the version upgrade manager with Cura's storage paths. - import UM.VersionUpgradeManager #Needs to be here to prevent circular dependencies. + # Needs to be here to prevent circular dependencies. + import UM.VersionUpgradeManager UM.VersionUpgradeManager.VersionUpgradeManager.getInstance().setCurrentVersions( { @@ -200,14 +206,22 @@ class CuraApplication(QtApplication): self._machine_action_manager = MachineActionManager.MachineActionManager() self._machine_manager = None # This is initialized on demand. + self._extruder_manager = None self._material_manager = None + self._object_manager = None + self._build_plate_model = None self._setting_inheritance_manager = None self._simple_mode_settings_manager = None + self._cura_scene_controller = None self._additional_components = {} # Components to add to certain areas in the interface - super().__init__(name = "cura", version = CuraVersion, buildtype = CuraBuildType, - tray_icon_name = "cura-icon-32.png") + super().__init__(name = "cura", + version = CuraVersion, + buildtype = CuraBuildType, + is_debug_mode = CuraDebugMode, + tray_icon_name = "cura-icon-32.png", + **kwargs) self.default_theme = "cura-light" @@ -215,8 +229,9 @@ class CuraApplication(QtApplication): self.setRequiredPlugins([ "CuraEngineBackend", + "UserAgreement", "SolidView", - "LayerView", + "SimulationView", "STLReader", "SelectionTool", "CameraTool", @@ -225,7 +240,9 @@ class CuraApplication(QtApplication): "TranslateTool", "FileLogger", "XmlMaterialProfile", - "PluginBrowser" + "PluginBrowser", + "PrepareStage", + "MonitorStage" ]) self._physics = None self._volume = None @@ -259,27 +276,32 @@ class CuraApplication(QtApplication): # Since they are empty, they should never be serialized and instead just programmatically created. # We need them to simplify the switching between materials. empty_container = ContainerRegistry.getInstance().getEmptyInstanceContainer() + empty_variant_container = copy.deepcopy(empty_container) - empty_variant_container._id = "empty_variant" + empty_variant_container.setMetaDataEntry("id", "empty_variant") empty_variant_container.addMetaDataEntry("type", "variant") ContainerRegistry.getInstance().addContainer(empty_variant_container) + empty_material_container = copy.deepcopy(empty_container) - empty_material_container._id = "empty_material" + empty_material_container.setMetaDataEntry("id", "empty_material") empty_material_container.addMetaDataEntry("type", "material") ContainerRegistry.getInstance().addContainer(empty_material_container) + empty_quality_container = copy.deepcopy(empty_container) - empty_quality_container._id = "empty_quality" + empty_quality_container.setMetaDataEntry("id", "empty_quality") empty_quality_container.setName("Not Supported") - empty_quality_container.addMetaDataEntry("quality_type", "normal") + empty_quality_container.addMetaDataEntry("quality_type", "not_supported") empty_quality_container.addMetaDataEntry("type", "quality") + empty_quality_container.addMetaDataEntry("supported", False) ContainerRegistry.getInstance().addContainer(empty_quality_container) + empty_quality_changes_container = copy.deepcopy(empty_container) - empty_quality_changes_container._id = "empty_quality_changes" + empty_quality_changes_container.setMetaDataEntry("id", "empty_quality_changes") empty_quality_changes_container.addMetaDataEntry("type", "quality_changes") ContainerRegistry.getInstance().addContainer(empty_quality_changes_container) with ContainerRegistry.getInstance().lockFile(): - ContainerRegistry.getInstance().load() + ContainerRegistry.getInstance().loadAllMetadata() # set the setting version for Preferences preferences = Preferences.getInstance() @@ -297,11 +319,17 @@ class CuraApplication(QtApplication): preferences.addPreference("cura/asked_dialog_on_project_save", False) preferences.addPreference("cura/choice_on_profile_override", "always_ask") preferences.addPreference("cura/choice_on_open_project", "always_ask") + preferences.addPreference("cura/arrange_objects_on_load", True) + preferences.addPreference("cura/use_multi_build_plate", False) preferences.addPreference("cura/currency", "€") preferences.addPreference("cura/material_settings", "{}") preferences.addPreference("view/invert_zoom", False) + preferences.addPreference("view/filter_current_build_plate", False) + preferences.addPreference("cura/sidebar_collapsed", False) + + self._need_to_show_user_agreement = not Preferences.getInstance().getValue("general/accepted_user_agreement") for key in [ "dialog_load_path", # dialog_save_path is in LocalFileOutputDevicePlugin @@ -372,14 +400,35 @@ class CuraApplication(QtApplication): self._plugin_registry.addSupportedPluginExtension("curaplugin", "Cura Plugin") + self.getCuraSceneController().setActiveBuildPlate(0) # Initialize + def _onEngineCreated(self): self._engine.addImageProvider("camera", CameraImageProvider.CameraImageProvider()) + @pyqtProperty(bool) + def needToShowUserAgreement(self): + return self._need_to_show_user_agreement + + def setNeedToShowUserAgreement(self, set_value = True): + self._need_to_show_user_agreement = set_value + ## The "Quit" button click event handler. @pyqtSlot() def closeApplication(self): Logger.log("i", "Close application") - self._main_window.close() + main_window = self.getMainWindow() + if main_window is not None: + main_window.close() + else: + self.exit(0) + + ## Signal to connect preferences action in QML + showPreferencesWindow = pyqtSignal() + + ## Show the preferences window + @pyqtSlot() + def showPreferences(self): + self.showPreferencesWindow.emit() ## A reusable dialogbox # @@ -413,7 +462,7 @@ class CuraApplication(QtApplication): def discardOrKeepProfileChangesClosed(self, option): if option == "discard": global_stack = self.getGlobalContainerStack() - for extruder in ExtruderManager.getInstance().getMachineExtruders(global_stack.getId()): + for extruder in self._extruder_manager.getMachineExtruders(global_stack.getId()): extruder.getTop().clear() global_stack.getTop().clear() @@ -421,7 +470,7 @@ class CuraApplication(QtApplication): # before slicing. To ensure that slicer uses right settings values elif option == "keep": global_stack = self.getGlobalContainerStack() - for extruder in ExtruderManager.getInstance().getMachineExtruders(global_stack.getId()): + for extruder in self._extruder_manager.getMachineExtruders(global_stack.getId()): user_extruder_container = extruder.getTop() if user_extruder_container: user_extruder_container.update() @@ -450,69 +499,10 @@ class CuraApplication(QtApplication): if not self._started: # Do not do saving during application start return - # Lock file for "more" atomically loading and saving to/from config dir. - with ContainerRegistry.getInstance().lockFile(): - for instance in ContainerRegistry.getInstance().findInstanceContainers(): - if not instance.isDirty(): - continue - - try: - data = instance.serialize() - except NotImplementedError: - continue - except Exception: - Logger.logException("e", "An exception occurred when serializing container %s", instance.getId()) - continue - - mime_type = ContainerRegistry.getMimeTypeForContainer(type(instance)) - file_name = urllib.parse.quote_plus(instance.getId()) + "." + mime_type.preferredSuffix - instance_type = instance.getMetaDataEntry("type") - path = None - if instance_type == "material": - path = Resources.getStoragePath(self.ResourceTypes.MaterialInstanceContainer, file_name) - elif instance_type == "quality" or instance_type == "quality_changes": - path = Resources.getStoragePath(self.ResourceTypes.QualityInstanceContainer, file_name) - elif instance_type == "user": - path = Resources.getStoragePath(self.ResourceTypes.UserInstanceContainer, file_name) - elif instance_type == "variant": - path = Resources.getStoragePath(self.ResourceTypes.VariantInstanceContainer, file_name) - elif instance_type == "definition_changes": - path = Resources.getStoragePath(self.ResourceTypes.DefinitionChangesContainer, file_name) - - if path: - instance.setPath(path) - with SaveFile(path, "wt") as f: - f.write(data) - - for stack in ContainerRegistry.getInstance().findContainerStacks(): - self.saveStack(stack) + ContainerRegistry.getInstance().saveDirtyContainers() def saveStack(self, stack): - if not stack.isDirty(): - return - try: - data = stack.serialize() - except NotImplementedError: - return - except Exception: - Logger.logException("e", "An exception occurred when serializing container %s", stack.getId()) - return - - mime_type = ContainerRegistry.getMimeTypeForContainer(type(stack)) - file_name = urllib.parse.quote_plus(stack.getId()) + "." + mime_type.preferredSuffix - - path = None - if isinstance(stack, GlobalStack): - path = Resources.getStoragePath(self.ResourceTypes.MachineStack, file_name) - elif isinstance(stack, ExtruderStack): - path = Resources.getStoragePath(self.ResourceTypes.ExtruderStack, file_name) - else: - path = Resources.getStoragePath(Resources.ContainerStacks, file_name) - - stack.setPath(path) - with SaveFile(path, "wt") as f: - f.write(data) - + ContainerRegistry.getInstance().saveContainer(stack) @pyqtSlot(str, result = QUrl) def getDefaultPath(self, key): @@ -546,8 +536,8 @@ class CuraApplication(QtApplication): self._plugins_loaded = True @classmethod - def addCommandLineOptions(self, parser): - super().addCommandLineOptions(parser) + def addCommandLineOptions(self, parser, parsed_command_line = {}): + super().addCommandLineOptions(parser, parsed_command_line = parsed_command_line) parser.add_argument("file", nargs="*", help="Files to load after starting the application.") parser.add_argument("--single-instance", action="store_true", default=False) @@ -603,13 +593,16 @@ class CuraApplication(QtApplication): # This should be called directly before creating an instance of CuraApplication. # \returns \type{bool} True if the whole Cura app should continue running. @classmethod - def preStartUp(cls): + def preStartUp(cls, parser = None, parsed_command_line = {}): # Peek the arguments and look for the 'single-instance' flag. - parser = argparse.ArgumentParser(prog="cura") # pylint: disable=bad-whitespace - CuraApplication.addCommandLineOptions(parser) - parsed_command_line = vars(parser.parse_args()) + if not parser: + parser = argparse.ArgumentParser(prog = "cura", add_help = False) # pylint: disable=bad-whitespace + CuraApplication.addCommandLineOptions(parser, parsed_command_line = parsed_command_line) + # Important: It is important to keep this line here! + # In Uranium we allow to pass unknown arguments to the final executable or script. + parsed_command_line.update(vars(parser.parse_known_args()[0])) - if "single_instance" in parsed_command_line and parsed_command_line["single_instance"]: + if parsed_command_line["single_instance"]: Logger.log("i", "Checking for the presence of an ready running Cura instance.") single_instance_socket = QLocalSocket() Logger.log("d", "preStartUp(): full server name: " + single_instance_socket.fullServerName()) @@ -641,21 +634,36 @@ class CuraApplication(QtApplication): return False return True + def preRun(self): + # Last check for unknown commandline arguments + parser = self.getCommandlineParser() + parser.add_argument("--help", "-h", + action='store_true', + default = False, + help = "Show this help message and exit." + ) + parsed_args = vars(parser.parse_args()) # This won't allow unknown arguments + if parsed_args["help"]: + parser.print_help() + sys.exit(0) + def run(self): + self.preRun() + self.showSplashMessage(self._i18n_catalog.i18nc("@info:progress", "Setting up scene...")) self._setUpSingleInstanceServer() controller = self.getController() + controller.setActiveStage("PrepareStage") controller.setActiveView("SolidView") - controller.setCameraTool("CameraTool") controller.setSelectionTool("SelectionTool") t = controller.getTool("TranslateTool") if t: - t.setEnabledAxis([ToolHandle.XAxis, ToolHandle.YAxis,ToolHandle.ZAxis]) + t.setEnabledAxis([ToolHandle.XAxis, ToolHandle.YAxis, ToolHandle.ZAxis]) Selection.selectionChanged.connect(self.onSelectionChanged) @@ -686,25 +694,34 @@ class CuraApplication(QtApplication): self.showSplashMessage(self._i18n_catalog.i18nc("@info:progress", "Loading interface...")) - # Initialise extruder so as to listen to global container stack changes before the first global container stack is set. - ExtruderManager.getInstance() + qmlRegisterSingletonType(ExtruderManager, "Cura", 1, 0, "ExtruderManager", self.getExtruderManager) qmlRegisterSingletonType(MachineManager, "Cura", 1, 0, "MachineManager", self.getMachineManager) qmlRegisterSingletonType(MaterialManager, "Cura", 1, 0, "MaterialManager", self.getMaterialManager) + qmlRegisterSingletonType(SettingInheritanceManager, "Cura", 1, 0, "SettingInheritanceManager", self.getSettingInheritanceManager) qmlRegisterSingletonType(SimpleModeSettingsManager, "Cura", 1, 2, "SimpleModeSettingsManager", self.getSimpleModeSettingsManager) + qmlRegisterSingletonType(ObjectsModel, "Cura", 1, 2, "ObjectsModel", self.getObjectsModel) + qmlRegisterSingletonType(BuildPlateModel, "Cura", 1, 2, "BuildPlateModel", self.getBuildPlateModel) + qmlRegisterSingletonType(CuraSceneController, "Cura", 1, 2, "SceneController", self.getCuraSceneController) + qmlRegisterSingletonType(MachineActionManager.MachineActionManager, "Cura", 1, 0, "MachineActionManager", self.getMachineActionManager) + self.setMainQml(Resources.getPath(self.ResourceTypes.QmlFiles, "Cura.qml")) self._qml_import_paths.append(Resources.getPath(self.ResourceTypes.QmlFiles)) - self.initializeEngine() - if self._engine.rootObjects: + run_without_gui = self.getCommandLineOption("headless", False) + if not run_without_gui: + self.initializeEngine() + controller.setActiveStage("PrepareStage") + + if run_without_gui or self._engine.rootObjects: self.closeSplash() - for file in self.getCommandLineOption("file", []): - self._openFile(file) + for file_name in self.getCommandLineOption("file", []): + self._openFile(file_name) for file_name in self._open_file_queue: #Open all the files that were queued up while plug-ins were loading. self._openFile(file_name) @@ -712,16 +729,37 @@ class CuraApplication(QtApplication): self.exec_() - def getMachineManager(self, *args): + def getMachineManager(self, *args) -> MachineManager: if self._machine_manager is None: self._machine_manager = MachineManager.createMachineManager() return self._machine_manager + def getExtruderManager(self, *args): + if self._extruder_manager is None: + self._extruder_manager = ExtruderManager.createExtruderManager() + return self._extruder_manager + def getMaterialManager(self, *args): if self._material_manager is None: self._material_manager = MaterialManager.createMaterialManager() return self._material_manager + def getObjectsModel(self, *args): + if self._object_manager is None: + self._object_manager = ObjectsModel.createObjectsModel() + return self._object_manager + + def getBuildPlateModel(self, *args): + if self._build_plate_model is None: + self._build_plate_model = BuildPlateModel.createBuildPlateModel() + + return self._build_plate_model + + def getCuraSceneController(self, *args): + if self._cura_scene_controller is None: + self._cura_scene_controller = CuraSceneController.createCuraSceneController() + return self._cura_scene_controller + def getSettingInheritanceManager(self, *args): if self._setting_inheritance_manager is None: self._setting_inheritance_manager = SettingInheritanceManager.createSettingInheritanceManager() @@ -767,7 +805,6 @@ class CuraApplication(QtApplication): qmlRegisterUncreatableType(CuraApplication, "Cura", 1, 0, "ResourceTypes", "Just an Enum type") qmlRegisterType(ExtrudersModel, "Cura", 1, 0, "ExtrudersModel") - qmlRegisterType(ContainerSettingsModel, "Cura", 1, 0, "ContainerSettingsModel") qmlRegisterSingletonType(ProfilesModel, "Cura", 1, 0, "ProfilesModel", ProfilesModel.createProfilesModel) qmlRegisterType(MaterialsModel, "Cura", 1, 0, "MaterialsModel") @@ -777,15 +814,12 @@ class CuraApplication(QtApplication): qmlRegisterType(QualitySettingsModel, "Cura", 1, 0, "QualitySettingsModel") qmlRegisterType(MachineNameValidator, "Cura", 1, 0, "MachineNameValidator") qmlRegisterType(UserChangesModel, "Cura", 1, 1, "UserChangesModel") - qmlRegisterSingletonType(ContainerManager, "Cura", 1, 0, "ContainerManager", ContainerManager.createContainerManager) # As of Qt5.7, it is necessary to get rid of any ".." in the path for the singleton to work. actions_url = QUrl.fromLocalFile(os.path.abspath(Resources.getPath(CuraApplication.ResourceTypes.QmlFiles, "Actions.qml"))) qmlRegisterSingletonType(actions_url, "Cura", 1, 0, "Actions") - engine.rootContext().setContextProperty("ExtruderManager", ExtruderManager.getInstance()) - for path in Resources.getAllResourcesOfType(CuraApplication.ResourceTypes.QmlFiles): type_name = os.path.splitext(os.path.basename(path))[0] if type_name in ("Cura", "Actions"): @@ -861,7 +895,7 @@ class CuraApplication(QtApplication): scene_bounding_box = None is_block_slicing_node = False for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if type(node) is not SceneNode or (not node.getMeshData() and not node.callDecoration("getLayerData")): + if not issubclass(type(node), SceneNode) or (not node.getMeshData() and not node.callDecoration("getLayerData")): continue if node.callDecoration("isBlockSlicing"): is_block_slicing_node = True @@ -978,7 +1012,7 @@ class CuraApplication(QtApplication): Selection.clear() for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if type(node) is not SceneNode: + if not issubclass(type(node), SceneNode): continue if not node.getMeshData() and not node.callDecoration("isGroup"): continue # Node that doesnt have a mesh and is not a group. @@ -986,6 +1020,9 @@ class CuraApplication(QtApplication): continue # Grouped nodes don't need resetting as their parent (the group) is resetted) if not node.isSelectable(): continue # i.e. node with layer data + if not node.callDecoration("isSliceable"): + continue # i.e. node with layer data + Selection.add(node) ## Delete all nodes containing mesh data in the scene. @@ -997,7 +1034,7 @@ class CuraApplication(QtApplication): nodes = [] for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if type(node) is not SceneNode: + if type(node) not in {SceneNode, CuraSceneNode}: continue if (not node.getMeshData() and not node.callDecoration("getLayerData")) and not node.callDecoration("isGroup"): continue # Node that doesnt have a mesh and is not a group. @@ -1013,13 +1050,15 @@ class CuraApplication(QtApplication): op.push() Selection.clear() - ## Reset all translation on nodes with mesh data. + self.getCuraSceneController().setActiveBuildPlate(0) # Select first build plate + + ## Reset all translation on nodes with mesh data. @pyqtSlot() def resetAllTranslation(self): Logger.log("i", "Resetting all scene translations") nodes = [] for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if type(node) is not SceneNode: + if not issubclass(type(node), SceneNode): continue if not node.getMeshData() and not node.callDecoration("isGroup"): continue # Node that doesnt have a mesh and is not a group. @@ -1047,13 +1086,13 @@ class CuraApplication(QtApplication): Logger.log("i", "Resetting all scene transformations") nodes = [] for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if type(node) is not SceneNode: + if not issubclass(type(node), SceneNode): continue if not node.getMeshData() and not node.callDecoration("isGroup"): continue # Node that doesnt have a mesh and is not a group. if node.getParent() and node.getParent().callDecoration("isGroup"): continue # Grouped nodes don't need resetting as their parent (the group) is resetted) - if not node.isSelectable(): + if not node.callDecoration("isSliceable"): continue # i.e. node with layer data nodes.append(node) @@ -1071,10 +1110,31 @@ class CuraApplication(QtApplication): ## Arrange all objects. @pyqtSlot() - def arrangeAll(self): + def arrangeObjectsToAllBuildPlates(self): nodes = [] for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if type(node) is not SceneNode: + if not issubclass(type(node), SceneNode): + continue + if not node.getMeshData() and not node.callDecoration("isGroup"): + continue # Node that doesnt have a mesh and is not a group. + if node.getParent() and node.getParent().callDecoration("isGroup"): + continue # Grouped nodes don't need resetting as their parent (the group) is resetted) + if not node.callDecoration("isSliceable"): + continue # i.e. node with layer data + # Skip nodes that are too big + if node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth: + nodes.append(node) + job = ArrangeObjectsAllBuildPlatesJob(nodes) + job.start() + self.getCuraSceneController().setActiveBuildPlate(0) # Select first build plate + + # Single build plate + @pyqtSlot() + def arrangeAll(self): + nodes = [] + active_build_plate = self.getBuildPlateModel().activeBuildPlate + for node in DepthFirstIterator(self.getController().getScene().getRoot()): + if not issubclass(type(node), SceneNode): continue if not node.getMeshData() and not node.callDecoration("isGroup"): continue # Node that doesnt have a mesh and is not a group. @@ -1082,9 +1142,12 @@ class CuraApplication(QtApplication): continue # Grouped nodes don't need resetting as their parent (the group) is resetted) if not node.isSelectable(): continue # i.e. node with layer data - # Skip nodes that are too big - if node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth: - nodes.append(node) + if not node.callDecoration("isSliceable"): + continue # i.e. node with layer data + if node.callDecoration("getBuildPlateNumber") == active_build_plate: + # Skip nodes that are too big + if node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth: + nodes.append(node) self.arrange(nodes, fixed_nodes = []) ## Arrange Selection @@ -1095,7 +1158,7 @@ class CuraApplication(QtApplication): # What nodes are on the build plate and are not being moved fixed_nodes = [] for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if type(node) is not SceneNode: + if not issubclass(type(node), SceneNode): continue if not node.getMeshData() and not node.callDecoration("isGroup"): continue # Node that doesnt have a mesh and is not a group. @@ -1103,6 +1166,8 @@ class CuraApplication(QtApplication): continue # Grouped nodes don't need resetting as their parent (the group) is resetted) if not node.isSelectable(): continue # i.e. node with layer data + if not node.callDecoration("isSliceable"): + continue # i.e. node with layer data if node in nodes: # exclude selected node from fixed_nodes continue fixed_nodes.append(node) @@ -1121,7 +1186,7 @@ class CuraApplication(QtApplication): Logger.log("i", "Reloading all loaded mesh data.") nodes = [] for node in DepthFirstIterator(self.getController().getScene().getRoot()): - if type(node) is not SceneNode or not node.getMeshData(): + if not issubclass(type(node), SceneNode) or not node.getMeshData(): continue nodes.append(node) @@ -1138,7 +1203,7 @@ class CuraApplication(QtApplication): job.start() else: Logger.log("w", "Unable to reload data because we don't have a filename.") - + ## Get logging data of the backend engine # \returns \type{string} Logging data @pyqtSlot(result = str) @@ -1212,10 +1277,11 @@ class CuraApplication(QtApplication): @pyqtSlot() def groupSelected(self): # Create a group-node - group_node = SceneNode() + group_node = CuraSceneNode() group_decorator = GroupDecorator() group_node.addDecorator(group_decorator) group_node.addDecorator(ConvexHullDecorator()) + group_node.addDecorator(BuildPlateDecorator(self.getBuildPlateModel().activeBuildPlate)) group_node.setParent(self.getController().getScene().getRoot()) group_node.setSelectable(True) center = Selection.getSelectionCenter() @@ -1251,6 +1317,9 @@ class CuraApplication(QtApplication): # see GroupDecorator._onChildrenChanged def _createSplashScreen(self): + run_headless = self.getCommandLineOption("headless", False) + if run_headless: + return None return CuraSplashScreen.CuraSplashScreen() def _onActiveMachineChanged(self): @@ -1357,14 +1426,21 @@ class CuraApplication(QtApplication): min_offset = 8 self.fileLoaded.emit(filename) + arrange_objects_on_load = ( + not Preferences.getInstance().getValue("cura/use_multi_build_plate") or + Preferences.getInstance().getValue("cura/arrange_objects_on_load")) + target_build_plate = self.getBuildPlateModel().activeBuildPlate if arrange_objects_on_load else -1 + + for original_node in nodes: + node = CuraSceneNode() # We want our own CuraSceneNode + node.setMeshData(original_node.getMeshData()) - for node in nodes: node.setSelectable(True) node.setName(os.path.basename(filename)) extension = os.path.splitext(filename)[1] if extension.lower() in self._non_sliceable_extensions: - self.getController().setActiveView("LayerView") + self.getController().setActiveView("SimulationView") view = self.getController().getActiveView() view.resetLayerData() view.setLayer(9999999) @@ -1385,20 +1461,23 @@ class CuraApplication(QtApplication): if not child.getDecorator(ConvexHullDecorator): child.addDecorator(ConvexHullDecorator()) - if node.callDecoration("isSliceable"): - # Only check position if it's not already blatantly obvious that it won't fit. - if node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth: - # Find node location - offset_shape_arr, hull_shape_arr = ShapeArray.fromNode(node, min_offset = min_offset) + if arrange_objects_on_load: + if node.callDecoration("isSliceable"): + # Only check position if it's not already blatantly obvious that it won't fit. + if node.getBoundingBox() is None or self._volume.getBoundingBox() is None or node.getBoundingBox().width < self._volume.getBoundingBox().width or node.getBoundingBox().depth < self._volume.getBoundingBox().depth: + # Find node location + offset_shape_arr, hull_shape_arr = ShapeArray.fromNode(node, min_offset = min_offset) - # If a model is to small then it will not contain any points - if offset_shape_arr is None and hull_shape_arr is None: - Message(self._i18n_catalog.i18nc("@info:status", "The selected model was too small to load."), - title=self._i18n_catalog.i18nc("@info:title", "Warning")).show() - return + # If a model is to small then it will not contain any points + if offset_shape_arr is None and hull_shape_arr is None: + Message(self._i18n_catalog.i18nc("@info:status", "The selected model was too small to load."), + title=self._i18n_catalog.i18nc("@info:title", "Warning")).show() + return - # Step is for skipping tests to make it a lot faster. it also makes the outcome somewhat rougher - node, _ = arranger.findNodePlacement(node, offset_shape_arr, hull_shape_arr, step = 10) + # Step is for skipping tests to make it a lot faster. it also makes the outcome somewhat rougher + node, _ = arranger.findNodePlacement(node, offset_shape_arr, hull_shape_arr, step = 10) + + node.addDecorator(BuildPlateDecorator(target_build_plate)) op = AddSceneNodeOperation(node, scene.getRoot()) op.push() diff --git a/cura/Layer.py b/cura/Layer.py index d5ef5c9bb4..9cd45380fc 100644 --- a/cura/Layer.py +++ b/cura/Layer.py @@ -47,12 +47,12 @@ class Layer: return result - def build(self, vertex_offset, index_offset, vertices, colors, line_dimensions, extruders, line_types, indices): + def build(self, vertex_offset, index_offset, vertices, colors, line_dimensions, feedrates, extruders, line_types, indices): result_vertex_offset = vertex_offset result_index_offset = index_offset self._element_count = 0 for polygon in self._polygons: - polygon.build(result_vertex_offset, result_index_offset, vertices, colors, line_dimensions, extruders, line_types, indices) + polygon.build(result_vertex_offset, result_index_offset, vertices, colors, line_dimensions, feedrates, extruders, line_types, indices) result_vertex_offset += polygon.lineMeshVertexCount() result_index_offset += polygon.lineMeshElementCount() self._element_count += polygon.elementCount diff --git a/cura/LayerDataBuilder.py b/cura/LayerDataBuilder.py index 6e50611e64..d6cc81a4e9 100755 --- a/cura/LayerDataBuilder.py +++ b/cura/LayerDataBuilder.py @@ -20,11 +20,11 @@ class LayerDataBuilder(MeshBuilder): if layer not in self._layers: self._layers[layer] = Layer(layer) - def addPolygon(self, layer, polygon_type, data, line_width): + def addPolygon(self, layer, polygon_type, data, line_width, line_thickness, line_feedrate): if layer not in self._layers: self.addLayer(layer) - p = LayerPolygon(self, polygon_type, data, line_width) + p = LayerPolygon(self, polygon_type, data, line_width, line_thickness, line_feedrate) self._layers[layer].polygons.append(p) def getLayer(self, layer): @@ -64,13 +64,14 @@ class LayerDataBuilder(MeshBuilder): line_dimensions = numpy.empty((vertex_count, 2), numpy.float32) colors = numpy.empty((vertex_count, 4), numpy.float32) indices = numpy.empty((index_count, 2), numpy.int32) + feedrates = numpy.empty((vertex_count), numpy.float32) extruders = numpy.empty((vertex_count), numpy.float32) line_types = numpy.empty((vertex_count), numpy.float32) vertex_offset = 0 index_offset = 0 for layer, data in sorted(self._layers.items()): - ( vertex_offset, index_offset ) = data.build( vertex_offset, index_offset, vertices, colors, line_dimensions, extruders, line_types, indices) + ( vertex_offset, index_offset ) = data.build( vertex_offset, index_offset, vertices, colors, line_dimensions, feedrates, extruders, line_types, indices) self._element_counts[layer] = data.elementCount self.addVertices(vertices) @@ -107,6 +108,11 @@ class LayerDataBuilder(MeshBuilder): "value": line_types, "opengl_name": "a_line_type", "opengl_type": "float" + }, + "feedrates": { + "value": feedrates, + "opengl_name": "a_feedrate", + "opengl_type": "float" } } diff --git a/cura/LayerPolygon.py b/cura/LayerPolygon.py index 7f41351b7f..9766e0c82a 100644 --- a/cura/LayerPolygon.py +++ b/cura/LayerPolygon.py @@ -28,7 +28,8 @@ class LayerPolygon: # \param data new_points # \param line_widths array with line widths # \param line_thicknesses: array with type as index and thickness as value - def __init__(self, extruder, line_types, data, line_widths, line_thicknesses): + # \param line_feedrates array with line feedrates + def __init__(self, extruder, line_types, data, line_widths, line_thicknesses, line_feedrates): self._extruder = extruder self._types = line_types for i in range(len(self._types)): @@ -37,6 +38,7 @@ class LayerPolygon: self._data = data self._line_widths = line_widths self._line_thicknesses = line_thicknesses + self._line_feedrates = line_feedrates self._vertex_begin = 0 self._vertex_end = 0 @@ -84,10 +86,11 @@ class LayerPolygon: # \param vertices : vertex numpy array to be filled # \param colors : vertex numpy array to be filled # \param line_dimensions : vertex numpy array to be filled + # \param feedrates : vertex numpy array to be filled # \param extruders : vertex numpy array to be filled # \param line_types : vertex numpy array to be filled # \param indices : index numpy array to be filled - def build(self, vertex_offset, index_offset, vertices, colors, line_dimensions, extruders, line_types, indices): + def build(self, vertex_offset, index_offset, vertices, colors, line_dimensions, feedrates, extruders, line_types, indices): if self._build_cache_line_mesh_mask is None or self._build_cache_needed_points is None: self.buildCache() @@ -109,10 +112,13 @@ class LayerPolygon: # Create an array with colors for each vertex and remove the color data for the points that has been thrown away. colors[self._vertex_begin:self._vertex_end, :] = numpy.tile(self._colors, (1, 2)).reshape((-1, 4))[needed_points_list.ravel()] - # Create an array with line widths for each vertex. + # Create an array with line widths and thicknesses for each vertex. line_dimensions[self._vertex_begin:self._vertex_end, 0] = numpy.tile(self._line_widths, (1, 2)).reshape((-1, 1))[needed_points_list.ravel()][:, 0] line_dimensions[self._vertex_begin:self._vertex_end, 1] = numpy.tile(self._line_thicknesses, (1, 2)).reshape((-1, 1))[needed_points_list.ravel()][:, 0] + # Create an array with feedrates for each line + feedrates[self._vertex_begin:self._vertex_end] = numpy.tile(self._line_feedrates, (1, 2)).reshape((-1, 1))[needed_points_list.ravel()][:, 0] + extruders[self._vertex_begin:self._vertex_end] = self._extruder # Convert type per vertex to type per line @@ -166,6 +172,14 @@ class LayerPolygon: @property def lineWidths(self): return self._line_widths + + @property + def lineThicknesses(self): + return self._line_thicknesses + + @property + def lineFeedrates(self): + return self._line_feedrates @property def jumpMask(self): diff --git a/cura/MachineAction.py b/cura/MachineAction.py index bc7b17af85..969fef0edf 100644 --- a/cura/MachineAction.py +++ b/cura/MachineAction.py @@ -1,12 +1,10 @@ # Copyright (c) 2016 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal, QUrl -from PyQt5.QtQml import QQmlComponent, QQmlContext +from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal from UM.PluginObject import PluginObject from UM.PluginRegistry import PluginRegistry -from UM.Logger import Logger from UM.Application import Application import os @@ -26,9 +24,6 @@ class MachineAction(QObject, PluginObject): self._key = key self._label = label self._qml_url = "" - - self._component = None - self._context = None self._view = None self._finished = False @@ -52,7 +47,6 @@ class MachineAction(QObject, PluginObject): # /sa _reset @pyqtSlot() def reset(self): - self._component = None self._finished = False self._reset() @@ -73,18 +67,11 @@ class MachineAction(QObject, PluginObject): ## Protected helper to create a view object based on provided QML. def _createViewFromQML(self): - path = QUrl.fromLocalFile(os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), self._qml_url)) - self._component = QQmlComponent(Application.getInstance()._engine, path) - self._context = QQmlContext(Application.getInstance()._engine.rootContext()) - self._context.setContextProperty("manager", self) - self._view = self._component.create(self._context) - if self._view is None: - Logger.log("c", "QQmlComponent status %s", self._component.status()) - Logger.log("c", "QQmlComponent error string %s", self._component.errorString()) + path = os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), self._qml_url) + self._view = Application.getInstance().createQmlComponent(path, {"manager": self}) @pyqtProperty(QObject, constant = True) def displayItem(self): - if not self._component: + if not self._view: self._createViewFromQML() - - return self._view \ No newline at end of file + return self._view diff --git a/cura/MultiplyObjectsJob.py b/cura/MultiplyObjectsJob.py index 721c0e4c07..441d4c96c3 100644 --- a/cura/MultiplyObjectsJob.py +++ b/cura/MultiplyObjectsJob.py @@ -2,24 +2,15 @@ # Cura is released under the terms of the LGPLv3 or higher. from UM.Job import Job -from UM.Scene.SceneNode import SceneNode -from UM.Math.Vector import Vector -from UM.Operations.SetTransformOperation import SetTransformOperation -from UM.Operations.TranslateOperation import TranslateOperation from UM.Operations.GroupedOperation import GroupedOperation -from UM.Logger import Logger from UM.Message import Message from UM.i18n import i18nCatalog i18n_catalog = i18nCatalog("cura") -from cura.ZOffsetDecorator import ZOffsetDecorator -from cura.Arrange import Arrange -from cura.ShapeArray import ShapeArray - -from typing import List +from cura.Arranging.Arrange import Arrange +from cura.Arranging.ShapeArray import ShapeArray from UM.Application import Application -from UM.Scene.Selection import Selection from UM.Operations.AddSceneNodeOperation import AddSceneNodeOperation @@ -65,6 +56,10 @@ class MultiplyObjectsJob(Job): new_location = new_location.set(z = 100 - i * 20) node.setPosition(new_location) + # Same build plate + build_plate_number = current_node.callDecoration("getBuildPlateNumber") + node.callDecoration("setBuildPlateNumber", build_plate_number) + nodes.append(node) current_progress += 1 status_message.setProgress((current_progress / total_progress) * 100) diff --git a/cura/ObjectsModel.py b/cura/ObjectsModel.py new file mode 100644 index 0000000000..2e83ee9033 --- /dev/null +++ b/cura/ObjectsModel.py @@ -0,0 +1,49 @@ +from UM.Application import Application +from UM.Qt.ListModel import ListModel +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator +from UM.Scene.SceneNode import SceneNode +from UM.Scene.Selection import Selection +from UM.Preferences import Preferences + + +## Keep track of all objects in the project +class ObjectsModel(ListModel): + def __init__(self): + super().__init__() + + Application.getInstance().getController().getScene().sceneChanged.connect(self._update) + Preferences.getInstance().preferenceChanged.connect(self._update) + + self._build_plate_number = -1 + + def setActiveBuildPlate(self, nr): + self._build_plate_number = nr + self._update() + + def _update(self, *args): + nodes = [] + filter_current_build_plate = Preferences.getInstance().getValue("view/filter_current_build_plate") + active_build_plate_number = self._build_plate_number + for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): + if not issubclass(type(node), SceneNode) or (not node.getMeshData() and not node.callDecoration("getLayerData")): + continue + if not node.callDecoration("isSliceable"): + continue + node_build_plate_number = node.callDecoration("getBuildPlateNumber") + if filter_current_build_plate and node_build_plate_number != active_build_plate_number: + continue + nodes.append({ + "name": node.getName(), + "isSelected": Selection.isSelected(node), + "isOutsideBuildArea": node.isOutsideBuildArea(), + "buildPlateNumber": node_build_plate_number, + "node": node + }) + nodes = sorted(nodes, key=lambda n: n["name"]) + self.setItems(nodes) + + self.itemsChanged.emit() + + @staticmethod + def createObjectsModel(): + return ObjectsModel() diff --git a/cura/PlatformPhysicsOperation.py b/cura/Operations/PlatformPhysicsOperation.py similarity index 100% rename from cura/PlatformPhysicsOperation.py rename to cura/Operations/PlatformPhysicsOperation.py diff --git a/cura/Operations/SetBuildPlateNumberOperation.py b/cura/Operations/SetBuildPlateNumberOperation.py new file mode 100644 index 0000000000..c14d737f93 --- /dev/null +++ b/cura/Operations/SetBuildPlateNumberOperation.py @@ -0,0 +1,27 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from UM.Scene.SceneNode import SceneNode +from UM.Operations.Operation import Operation + +from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator + +## Simple operation to set the buildplate number of a scenenode. +class SetBuildPlateNumberOperation(Operation): + def __init__(self, node: SceneNode, build_plate_nr: int) -> None: + self._node = node + self._build_plate_nr = build_plate_nr + self._previous_build_plate_nr = None + self._decorator_added = False + + def undo(self): + if self._previous_build_plate_nr: + self._node.callDecoration("setBuildPlateNumber", self._previous_build_plate_nr) + + def redo(self): + stack = self._node.callDecoration("getStack") #Don't try to get the active extruder since it may be None anyway. + if not stack: + self._node.addDecorator(SettingOverrideDecorator()) + + self._previous_build_plate_nr = self._node.callDecoration("getBuildPlateNumber") + self._node.callDecoration("setBuildPlateNumber", self._build_plate_nr) diff --git a/cura/SetParentOperation.py b/cura/Operations/SetParentOperation.py similarity index 100% rename from cura/SetParentOperation.py rename to cura/Operations/SetParentOperation.py diff --git a/cura/Operations/__init__.py b/cura/Operations/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index 23197dac24..06d796eed5 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -10,10 +10,10 @@ from UM.Math.Vector import Vector from UM.Scene.Selection import Selection from UM.Preferences import Preferences -from cura.ConvexHullDecorator import ConvexHullDecorator +from cura.Scene.ConvexHullDecorator import ConvexHullDecorator -from . import PlatformPhysicsOperation -from . import ZOffsetDecorator +from cura.Operations import PlatformPhysicsOperation +from cura.Scene import ZOffsetDecorator import random # used for list shuffling @@ -34,6 +34,7 @@ class PlatformPhysics: self._change_timer.timeout.connect(self._onChangeTimerFinished) self._move_factor = 1.1 # By how much should we multiply overlap to calculate a new spot? self._max_overlap_checks = 10 # How many times should we try to find a new spot per tick? + self._minimum_gap = 2 # It is a minimum distance between two models, applicable for small models Preferences.getInstance().addPreference("physics/automatic_push_free", True) Preferences.getInstance().addPreference("physics/automatic_drop_down", True) @@ -57,10 +58,11 @@ class PlatformPhysics: # Only check nodes inside build area. nodes = [node for node in nodes if (hasattr(node, "_outside_buildarea") and not node._outside_buildarea)] + active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate random.shuffle(nodes) for node in nodes: - if node is root or type(node) is not SceneNode or node.getBoundingBox() is None: + if node is root or not issubclass(type(node), SceneNode) or node.getBoundingBox() is None: continue bbox = node.getBoundingBox() @@ -76,11 +78,12 @@ class PlatformPhysics: if not node.getDecorator(ConvexHullDecorator): node.addDecorator(ConvexHullDecorator()) - if Preferences.getInstance().getValue("physics/automatic_push_free"): + # only push away objects if this node is a printing mesh + if not node.callDecoration("isNonPrintingMesh") and Preferences.getInstance().getValue("physics/automatic_push_free"): # Check for collisions between convex hulls for other_node in BreadthFirstIterator(root): # Ignore root, ourselves and anything that is not a normal SceneNode. - if other_node is root or type(other_node) is not SceneNode or other_node is node: + if other_node is root or not issubclass(type(other_node), SceneNode) or other_node is node or other_node.callDecoration("getBuildPlateNumber") != node.callDecoration("getBuildPlateNumber"): continue # Ignore collisions of a group with it's own children @@ -98,6 +101,9 @@ class PlatformPhysics: if other_node in transformed_nodes: continue # Other node is already moving, wait for next pass. + if other_node.callDecoration("isNonPrintingMesh"): + continue + overlap = (0, 0) # Start loop with no overlap current_overlap_checks = 0 # Continue to check the overlap until we no longer find one. @@ -112,26 +118,41 @@ class PlatformPhysics: overlap = node.callDecoration("getConvexHull").translate(move_vector.x, move_vector.z).intersectsPolygon(other_head_hull) if overlap: # Moving ensured that overlap was still there. Try anew! - move_vector = move_vector.set(x=move_vector.x + overlap[0] * self._move_factor, - z=move_vector.z + overlap[1] * self._move_factor) + move_vector = move_vector.set(x = move_vector.x + overlap[0] * self._move_factor, + z = move_vector.z + overlap[1] * self._move_factor) else: # Moving ensured that overlap was still there. Try anew! - move_vector = move_vector.set(x=move_vector.x + overlap[0] * self._move_factor, - z=move_vector.z + overlap[1] * self._move_factor) + move_vector = move_vector.set(x = move_vector.x + overlap[0] * self._move_factor, + z = move_vector.z + overlap[1] * self._move_factor) else: own_convex_hull = node.callDecoration("getConvexHull") other_convex_hull = other_node.callDecoration("getConvexHull") if own_convex_hull and other_convex_hull: overlap = own_convex_hull.translate(move_vector.x, move_vector.z).intersectsPolygon(other_convex_hull) if overlap: # Moving ensured that overlap was still there. Try anew! - move_vector = move_vector.set(x=move_vector.x + overlap[0] * self._move_factor, - z=move_vector.z + overlap[1] * self._move_factor) + temp_move_vector = move_vector.set(x = move_vector.x + overlap[0] * self._move_factor, + z = move_vector.z + overlap[1] * self._move_factor) + + # if the distance between two models less than 2mm then try to find a new factor + if abs(temp_move_vector.x - overlap[0]) < self._minimum_gap and abs(temp_move_vector.y - overlap[1]) < self._minimum_gap: + temp_scale_factor = self._move_factor + temp_x_factor = (abs(overlap[0]) + self._minimum_gap) / overlap[0] if overlap[0] != 0 else 0 # find x move_factor, like (3.4 + 2) / 3.4 = 1.58 + temp_y_factor = (abs(overlap[1]) + self._minimum_gap) / overlap[1] if overlap[1] != 0 else 0 # find y move_factor + if abs(temp_x_factor) > abs(temp_y_factor): + temp_scale_factor = temp_x_factor + else: + temp_scale_factor = temp_y_factor + + move_vector = move_vector.set(x = move_vector.x + overlap[0] * temp_scale_factor, + z = move_vector.z + overlap[1] * temp_scale_factor) + else: + move_vector = temp_move_vector else: # This can happen in some cases if the object is not yet done with being loaded. # Simply waiting for the next tick seems to resolve this correctly. overlap = None - if not Vector.Null.equals(move_vector, epsilon=1e-5): + if not Vector.Null.equals(move_vector, epsilon = 1e-5): transformed_nodes.append(node) op = PlatformPhysicsOperation.PlatformPhysicsOperation(node, move_vector) op.push() diff --git a/cura/PreviewPass.py b/cura/PreviewPass.py new file mode 100644 index 0000000000..c1880e82ef --- /dev/null +++ b/cura/PreviewPass.py @@ -0,0 +1,57 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Uranium is released under the terms of the LGPLv3 or higher. + +from UM.Application import Application +from UM.Resources import Resources + +from UM.View.RenderPass import RenderPass +from UM.View.GL.OpenGL import OpenGL +from UM.View.RenderBatch import RenderBatch + + +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator + +from typing import Optional + +MYPY = False +if MYPY: + from UM.Scene.Camera import Camera + +## A render pass subclass that renders slicable objects with default parameters. +# It uses the active camera by default, but it can be overridden to use a different camera. +# +# This is useful to get a preview image of a scene taken from a different location as the active camera. +class PreviewPass(RenderPass): + def __init__(self, width: int, height: int): + super().__init__("preview", width, height, 0) + + self._camera = None # type: Optional[Camera] + + self._renderer = Application.getInstance().getRenderer() + + self._shader = None + self._scene = Application.getInstance().getController().getScene() + + # Set the camera to be used by this render pass + # if it's None, the active camera is used + def setCamera(self, camera: Optional["Camera"]): + self._camera = camera + + def render(self) -> None: + if not self._shader: + self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "object.shader")) + + # Create a new batch to be rendered + batch = RenderBatch(self._shader) + + # Fill up the batch with objects that can be sliced. ` + for node in DepthFirstIterator(self._scene.getRoot()): + if node.callDecoration("isSliceable") and node.getMeshData() and node.isVisible(): + batch.addItem(node.getWorldTransformation(), node.getMeshData()) + + self.bind() + if self._camera is None: + batch.render(Application.getInstance().getController().getScene().getActiveCamera()) + else: + batch.render(self._camera) + self.release() diff --git a/cura/PrintInformation.py b/cura/PrintInformation.py index 86bcc2719e..60d3c11a49 100644 --- a/cura/PrintInformation.py +++ b/cura/PrintInformation.py @@ -16,6 +16,7 @@ import math import os.path import unicodedata import json +import re #To create abbreviations for printer names. from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") @@ -53,9 +54,10 @@ class PrintInformation(QObject): self.initializeCuraMessagePrintTimeProperties() - self._material_lengths = [] - self._material_weights = [] - self._material_costs = [] + self._material_lengths = {} # indexed by build plate number + self._material_weights = {} + self._material_costs = {} + self._material_names = {} self._pre_sliced = False @@ -67,10 +69,14 @@ class PrintInformation(QObject): self._abbr_machine = "" self._job_name = "" self._project_name = "" + self._active_build_plate = 0 + self._initVariablesWithBuildPlate(self._active_build_plate) Application.getInstance().globalContainerStackChanged.connect(self._updateJobName) Application.getInstance().fileLoaded.connect(self.setBaseName) - Application.getInstance().projectFileLoaded.connect(self.setProjectName) + Application.getInstance().getBuildPlateModel().activeBuildPlateChanged.connect(self._onActiveBuildPlateChanged) + Application.getInstance().workspaceLoaded.connect(self.setProjectName) + Preferences.getInstance().preferenceChanged.connect(self._onPreferencesChanged) self._active_material_container = None @@ -82,7 +88,7 @@ class PrintInformation(QObject): # 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._current_print_time = {} # Duration(None, self) self._print_time_message_translations = { "inset_0": catalog.i18nc("@tooltip", "Outer Wall"), @@ -100,10 +106,26 @@ class PrintInformation(QObject): self._print_time_message_values = {} - # Full fill message values using keys from _print_time_message_translations - for key in self._print_time_message_translations.keys(): - self._print_time_message_values[key] = Duration(None, self) + def _initPrintTimeMessageValues(self, build_plate_number): + # Full fill message values using keys from _print_time_message_translations + self._print_time_message_values[build_plate_number] = {} + for key in self._print_time_message_translations.keys(): + self._print_time_message_values[build_plate_number][key] = Duration(None, self) + + def _initVariablesWithBuildPlate(self, build_plate_number): + if build_plate_number not in self._print_time_message_values: + self._initPrintTimeMessageValues(build_plate_number) + if self._active_build_plate not in self._material_lengths: + self._material_lengths[self._active_build_plate] = [] + if self._active_build_plate not in self._material_weights: + self._material_weights[self._active_build_plate] = [] + if self._active_build_plate not in self._material_costs: + self._material_costs[self._active_build_plate] = [] + if self._active_build_plate not in self._material_names: + self._material_names[self._active_build_plate] = [] + if self._active_build_plate not in self._current_print_time: + self._current_print_time[self._active_build_plate] = Duration(None, self) currentPrintTimeChanged = pyqtSignal() @@ -119,57 +141,71 @@ class PrintInformation(QObject): @pyqtProperty(Duration, notify = currentPrintTimeChanged) def currentPrintTime(self): - return self._current_print_time + return self._current_print_time[self._active_build_plate] materialLengthsChanged = pyqtSignal() @pyqtProperty("QVariantList", notify = materialLengthsChanged) def materialLengths(self): - return self._material_lengths + return self._material_lengths[self._active_build_plate] materialWeightsChanged = pyqtSignal() @pyqtProperty("QVariantList", notify = materialWeightsChanged) def materialWeights(self): - return self._material_weights + return self._material_weights[self._active_build_plate] materialCostsChanged = pyqtSignal() @pyqtProperty("QVariantList", notify = materialCostsChanged) def materialCosts(self): - return self._material_costs + return self._material_costs[self._active_build_plate] - def _onPrintDurationMessage(self, print_time, material_amounts): + materialNamesChanged = pyqtSignal() - self._updateTotalPrintTimePerFeature(print_time) + @pyqtProperty("QVariantList", notify = materialNamesChanged) + def materialNames(self): + return self._material_names[self._active_build_plate] + + def printTimes(self): + return self._print_time_message_values[self._active_build_plate] + + def _onPrintDurationMessage(self, build_plate_number, print_time, material_amounts): + self._updateTotalPrintTimePerFeature(build_plate_number, print_time) self.currentPrintTimeChanged.emit() self._material_amounts = material_amounts - self._calculateInformation() + self._calculateInformation(build_plate_number) - def _updateTotalPrintTimePerFeature(self, print_time): + def _updateTotalPrintTimePerFeature(self, build_plate_number, print_time): total_estimated_time = 0 + if build_plate_number not in self._print_time_message_values: + self._initPrintTimeMessageValues(build_plate_number) + 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) + self._print_time_message_values[build_plate_number].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._print_time_message_values[build_plate_number].get(feature).setDuration(time) - self._current_print_time.setDuration(total_estimated_time) + if build_plate_number not in self._current_print_time: + self._current_print_time[build_plate_number] = Duration(None, self) + self._current_print_time[build_plate_number].setDuration(total_estimated_time) - def _calculateInformation(self): + def _calculateInformation(self, build_plate_number): if Application.getInstance().getGlobalContainerStack() is None: return # Material amount is sent as an amount of mm^3, so calculate length from that radius = Application.getInstance().getGlobalContainerStack().getProperty("material_diameter", "value") / 2 - self._material_lengths = [] - self._material_weights = [] - self._material_costs = [] + self._material_lengths[build_plate_number] = [] + self._material_weights[build_plate_number] = [] + self._material_costs[build_plate_number] = [] + self._material_names[build_plate_number] = [] material_preference_values = json.loads(Preferences.getInstance().getValue("cura/material_settings")) @@ -188,8 +224,10 @@ class PrintInformation(QObject): weight = float(amount) * float(density) / 1000 cost = 0 + material_name = catalog.i18nc("@label unknown material", "Unknown") if material: material_guid = material.getMetaDataEntry("GUID") + material_name = material.getName() if material_guid in material_preference_values: material_values = material_preference_values[material_guid] @@ -205,19 +243,22 @@ class PrintInformation(QObject): length = round((amount / (math.pi * radius ** 2)) / 1000, 2) else: length = 0 - self._material_weights.append(weight) - self._material_lengths.append(length) - self._material_costs.append(cost) + self._material_weights[build_plate_number].append(weight) + self._material_lengths[build_plate_number].append(length) + self._material_costs[build_plate_number].append(cost) + self._material_names[build_plate_number].append(material_name) self.materialLengthsChanged.emit() self.materialWeightsChanged.emit() self.materialCostsChanged.emit() + self.materialNamesChanged.emit() def _onPreferencesChanged(self, preference): if preference != "cura/material_settings": return - self._calculateInformation() + for build_plate_number in range(Application.getInstance().getBuildPlateModel().maxBuildPlate + 1): + self._calculateInformation(build_plate_number) def _onActiveMaterialChanged(self): if self._active_material_container: @@ -227,25 +268,34 @@ class PrintInformation(QObject): pass active_material_id = Application.getInstance().getMachineManager().activeMaterialId - active_material_containers = ContainerRegistry.getInstance().findInstanceContainers(id=active_material_id) + active_material_containers = ContainerRegistry.getInstance().findInstanceContainers(id = active_material_id) if active_material_containers: self._active_material_container = active_material_containers[0] self._active_material_container.metaDataChanged.connect(self._onMaterialMetaDataChanged) + def _onActiveBuildPlateChanged(self): + new_active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate + if new_active_build_plate != self._active_build_plate: + self._active_build_plate = new_active_build_plate + + self._initVariablesWithBuildPlate(self._active_build_plate) + + self.materialLengthsChanged.emit() + self.materialWeightsChanged.emit() + self.materialCostsChanged.emit() + self.materialNamesChanged.emit() + self.currentPrintTimeChanged.emit() + def _onMaterialMetaDataChanged(self, *args, **kwargs): - self._calculateInformation() + for build_plate_number in range(Application.getInstance().getBuildPlateModel().maxBuildPlate + 1): + self._calculateInformation(build_plate_number) @pyqtSlot(str) def setJobName(self, name): self._job_name = name self.jobNameChanged.emit() - @pyqtSlot(str) - def setProjectName(self, name): - self._project_name = name - self.setJobName(name) - jobNameChanged = pyqtSignal() @pyqtProperty(str, notify = jobNameChanged) @@ -253,11 +303,6 @@ class PrintInformation(QObject): return self._job_name def _updateJobName(self): - # if the project name is set, we use the project name as the job name, so the job name should not get updated - # if a model file is loaded after that. - if self._project_name != "": - return - if self._base_name == "": self._job_name = "" self.jobNameChanged.emit() @@ -283,7 +328,11 @@ class PrintInformation(QObject): return self._base_name @pyqtSlot(str) - def setBaseName(self, base_name): + def setProjectName(self, name): + self.setBaseName(name, is_project_file = True) + + @pyqtSlot(str) + def setBaseName(self, base_name, is_project_file = False): # Ensure that we don't use entire path but only filename name = os.path.basename(base_name) @@ -291,11 +340,17 @@ class PrintInformation(QObject): # extension. This cuts the extension off if necessary. name = os.path.splitext(name)[0] + # if this is a profile file, always update the job 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): + is_empty = name == "" + if is_project_file or (is_empty or (self._base_name == "" and self._base_name != name)): + # remove ".curaproject" suffix from (imported) the file name + if name.endswith(".curaproject"): + name = name[:name.rfind(".curaproject")] 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 def _setAbbreviatedMachineName(self): @@ -305,15 +360,19 @@ class PrintInformation(QObject): return global_stack_name = global_container_stack.getName() - split_name = global_stack_name.split(" ") abbr_machine = "" - for word in split_name: + for word in re.findall(r"[\w']+", global_stack_name): if word.lower() == "ultimaker": abbr_machine += "UM" elif word.isdigit(): abbr_machine += word else: - abbr_machine += self._stripAccents(word.strip("()[]{}#").upper())[0] + stripped_word = self._stripAccents(word.upper()) + # - use only the first character if the word is too long (> 3 characters) + # - use the whole word if it's not too long (<= 3 characters) + if len(stripped_word) > 3: + stripped_word = stripped_word[0] + abbr_machine += stripped_word self._abbr_machine = abbr_machine @@ -324,7 +383,9 @@ class PrintInformation(QObject): @pyqtSlot(result = "QVariantMap") def getFeaturePrintTimes(self): result = {} - for feature, time in self._print_time_message_values.items(): + if self._active_build_plate not in self._print_time_message_values: + self._initPrintTimeMessageValues(self._active_build_plate) + for feature, time in self._print_time_message_values[self._active_build_plate].items(): if feature in self._print_time_message_translations: result[self._print_time_message_translations[feature]] = time else: @@ -332,11 +393,12 @@ class PrintInformation(QObject): return result # Simulate message with zero time duration - def setToZeroPrintInformation(self): + def setToZeroPrintInformation(self, build_plate_number): temp_message = {} - for key in self._print_time_message_values.keys(): + if build_plate_number not in self._print_time_message_values: + self._print_time_message_values[build_plate_number] = {} + for key in self._print_time_message_values[build_plate_number].keys(): temp_message[key] = 0 temp_material_amounts = [0] - self._onPrintDurationMessage(temp_message, temp_material_amounts) - + self._onPrintDurationMessage(build_plate_number, temp_message, temp_material_amounts) diff --git a/cura/PrinterOutputDevice.py b/cura/PrinterOutputDevice.py index c6e98257ba..b147019b37 100644 --- a/cura/PrinterOutputDevice.py +++ b/cura/PrinterOutputDevice.py @@ -3,19 +3,15 @@ from UM.i18n import i18nCatalog from UM.OutputDevice.OutputDevice import OutputDevice -from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject, QTimer, pyqtSignal, QUrl -from PyQt5.QtQml import QQmlComponent, QQmlContext +from PyQt5.QtCore import pyqtProperty, pyqtSlot, QObject, QTimer, pyqtSignal from PyQt5.QtWidgets import QMessageBox from enum import IntEnum # For the connection state tracking. from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Logger import Logger from UM.Signal import signalemitter -from UM.PluginRegistry import PluginRegistry from UM.Application import Application -import os - i18n_catalog = i18nCatalog("cura") ## Printer output device adds extra interface options on top of output device. @@ -63,17 +59,16 @@ class PrinterOutputDevice(QObject, OutputDevice): self._camera_active = False self._monitor_view_qml_path = "" - self._monitor_component = None self._monitor_item = None self._control_view_qml_path = "" - self._control_component = None self._control_item = None self._qml_context = None self._can_pause = True self._can_abort = True self._can_pre_heat_bed = True + self._can_control_manually = True def requestWrite(self, nodes, file_name = None, filter_by_machine = False, file_handler = None): raise NotImplementedError("requestWrite needs to be implemented") @@ -144,59 +139,41 @@ class PrinterOutputDevice(QObject, OutputDevice): def canAbort(self): return self._can_abort + # Does the printer support manual control at all + @pyqtProperty(bool, constant=True) + def canControlManually(self): + return self._can_control_manually + @pyqtProperty(QObject, constant=True) def monitorItem(self): # Note that we specifically only check if the monitor component is created. # It could be that it failed to actually create the qml item! If we check if the item was created, it will try to # create the item (and fail) every time. - if not self._monitor_component: + if not self._monitor_item: self._createMonitorViewFromQML() - return self._monitor_item @pyqtProperty(QObject, constant=True) def controlItem(self): - if not self._control_component: + if not self._control_item: self._createControlViewFromQML() - return self._control_item def _createControlViewFromQML(self): if not self._control_view_qml_path: return - path = QUrl.fromLocalFile(self._control_view_qml_path) - - # Because of garbage collection we need to keep this referenced by python. - self._control_component = QQmlComponent(Application.getInstance()._engine, path) - - # Check if the context was already requested before (Printer output device might have multiple items in the future) - if self._qml_context is None: - self._qml_context = QQmlContext(Application.getInstance()._engine.rootContext()) - self._qml_context.setContextProperty("OutputDevice", self) - - self._control_item = self._control_component.create(self._qml_context) - if self._control_item is None: - Logger.log("e", "QQmlComponent status %s", self._control_component.status()) - Logger.log("e", "QQmlComponent error string %s", self._control_component.errorString()) + self._control_item = Application.getInstance().createQmlComponent(self._control_view_qml_path, { + "OutputDevice": self + }) def _createMonitorViewFromQML(self): if not self._monitor_view_qml_path: return - path = QUrl.fromLocalFile(self._monitor_view_qml_path) - # Because of garbage collection we need to keep this referenced by python. - self._monitor_component = QQmlComponent(Application.getInstance()._engine, path) - - # Check if the context was already requested before (Printer output device might have multiple items in the future) - if self._qml_context is None: - self._qml_context = QQmlContext(Application.getInstance()._engine.rootContext()) - self._qml_context.setContextProperty("OutputDevice", self) - - self._monitor_item = self._monitor_component.create(self._qml_context) - if self._monitor_item is None: - Logger.log("e", "QQmlComponent status %s", self._monitor_component.status()) - Logger.log("e", "QQmlComponent error string %s", self._monitor_component.errorString()) + self._monitor_item = Application.getInstance().createQmlComponent(self._monitor_view_qml_path, { + "OutputDevice": self + }) @pyqtProperty(str, notify=printerTypeChanged) def printerType(self): @@ -463,9 +440,9 @@ class PrinterOutputDevice(QObject, OutputDevice): result.append(i18n_catalog.i18nc("@item:material", "No material loaded")) continue - containers = self._container_registry.findInstanceContainers(type = "material", GUID = material_id) + containers = self._container_registry.findInstanceContainersMetadata(type = "material", GUID = material_id) if containers: - result.append(containers[0].getName()) + result.append(containers[0]["name"]) else: result.append(i18n_catalog.i18nc("@item:material", "Unknown material")) return result @@ -485,9 +462,9 @@ class PrinterOutputDevice(QObject, OutputDevice): result.append("#00000000") #No material. continue - containers = self._container_registry.findInstanceContainers(type = "material", GUID = material_id) + containers = self._container_registry.findInstanceContainersMetadata(type = "material", GUID = material_id) if containers: - result.append(containers[0].getMetaDataEntry("color_code")) + result.append(containers[0]["color_code"]) else: result.append("#00000000") #Unknown material. return result diff --git a/cura/QualityManager.py b/cura/QualityManager.py index b6d47d919b..76a0c86a5f 100644 --- a/cura/QualityManager.py +++ b/cura/QualityManager.py @@ -1,13 +1,12 @@ -# Copyright (c) 2016 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. # This collects a lot of quality and quality changes related code which was split between ContainerManager # and the MachineManager and really needs to usable from both. -from typing import List, Optional, Dict, TYPE_CHECKING +from typing import Any, Dict, List, Optional, TYPE_CHECKING from UM.Application import Application from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Settings.DefinitionContainer import DefinitionContainer from UM.Settings.InstanceContainer import InstanceContainer from cura.Settings.ExtruderManager import ExtruderManager @@ -33,16 +32,16 @@ class QualityManager: # \param quality_name # \param machine_definition (Optional) \type{DefinitionContainerInterface} If nothing is # specified then the currently selected machine definition is used. - # \param material_containers (Optional) \type{List[InstanceContainer]} If nothing is specified then - # the current set of selected materials is used. + # \param material_containers_metadata If nothing is specified then the + # current set of selected materials is used. # \return the matching quality container \type{InstanceContainer} - def findQualityByName(self, quality_name: str, machine_definition: Optional["DefinitionContainerInterface"] = None, material_containers: List[InstanceContainer] = None) -> Optional[InstanceContainer]: + def findQualityByName(self, quality_name: str, machine_definition: Optional["DefinitionContainerInterface"] = None, material_containers_metadata: Optional[List[Dict[str, Any]]] = None) -> Optional[InstanceContainer]: criteria = {"type": "quality", "name": quality_name} - result = self._getFilteredContainersForStack(machine_definition, material_containers, **criteria) + result = self._getFilteredContainersForStack(machine_definition, material_containers_metadata, **criteria) # Fall back to using generic materials and qualities if nothing could be found. - if not result and material_containers and len(material_containers) == 1: - basic_materials = self._getBasicMaterials(material_containers[0]) + if not result and material_containers_metadata and len(material_containers_metadata) == 1: + basic_materials = self._getBasicMaterialMetadatas(material_containers_metadata[0]) result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria) return result[0] if result else None @@ -87,7 +86,7 @@ class QualityManager: 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())) + qualities.intersection_update(set(next_quality_type_dict.values())) return list(qualities) @@ -108,18 +107,18 @@ class QualityManager: # \param quality_type \type{str} the name of the quality type to search for. # \param machine_definition (Optional) \type{InstanceContainer} If nothing is # specified then the currently selected machine definition is used. - # \param material_containers (Optional) \type{List[InstanceContainer]} If nothing is specified then - # the current set of selected materials is used. + # \param material_containers_metadata If nothing is specified then the + # current set of selected materials is used. # \return the matching quality container \type{InstanceContainer} - def findQualityByQualityType(self, quality_type: str, machine_definition: Optional["DefinitionContainerInterface"] = None, material_containers: List[InstanceContainer] = None, **kwargs) -> InstanceContainer: + def findQualityByQualityType(self, quality_type: str, machine_definition: Optional["DefinitionContainerInterface"] = None, material_containers_metadata: Optional[List[Dict[str, Any]]] = None, **kwargs) -> InstanceContainer: criteria = kwargs criteria["type"] = "quality" if quality_type: criteria["quality_type"] = quality_type - result = self._getFilteredContainersForStack(machine_definition, material_containers, **criteria) + result = self._getFilteredContainersForStack(machine_definition, material_containers_metadata, **criteria) # Fall back to using generic materials and qualities if nothing could be found. - if not result and material_containers and len(material_containers) == 1: - basic_materials = self._getBasicMaterials(material_containers[0]) + if not result and material_containers_metadata and len(material_containers_metadata) == 1: + basic_materials = self._getBasicMaterialMetadatas(material_containers_metadata[0]) if basic_materials: result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria) return result[0] if result else None @@ -131,9 +130,9 @@ class QualityManager: # \return \type{List[InstanceContainer]} the list of suitable qualities. def findAllQualitiesForMachineMaterial(self, machine_definition: "DefinitionContainerInterface", material_container: InstanceContainer) -> List[InstanceContainer]: criteria = {"type": "quality"} - result = self._getFilteredContainersForStack(machine_definition, [material_container], **criteria) + result = self._getFilteredContainersForStack(machine_definition, [material_container.getMetaData()], **criteria) if not result: - basic_materials = self._getBasicMaterials(material_container) + basic_materials = self._getBasicMaterialMetadatas(material_container.getMetaData()) if basic_materials: result = self._getFilteredContainersForStack(machine_definition, basic_materials, **criteria) @@ -178,12 +177,16 @@ class QualityManager: def findAllUsableQualitiesForMachineAndExtruders(self, global_container_stack: "GlobalStack", extruder_stacks: List["ExtruderStack"]) -> List[InstanceContainer]: global_machine_definition = global_container_stack.getBottom() - if extruder_stacks: - # Multi-extruder machine detected. - materials = [stack.material for stack in extruder_stacks] - else: - # Machine with one extruder. - materials = [global_container_stack.material] + machine_manager = Application.getInstance().getMachineManager() + active_stack_id = machine_manager.activeStackId + + materials = [] + + for stack in extruder_stacks: + if stack.getId() == active_stack_id and machine_manager.newMaterial: + materials.append(machine_manager.newMaterial) + else: + materials.append(stack.material) quality_types = self.findAllQualityTypesForMachineAndMaterials(global_machine_definition, materials) @@ -198,22 +201,34 @@ class QualityManager: ## Fetch more basic versions of a material. # # This tries to find a generic or basic version of the given material. - # \param material_container \type{InstanceContainer} the material - # \return \type{List[InstanceContainer]} a list of the basic materials or an empty list if one could not be found. - def _getBasicMaterials(self, material_container: InstanceContainer): - base_material = material_container.getMetaDataEntry("material") - material_container_definition = material_container.getDefinition() - if material_container_definition and material_container_definition.getMetaDataEntry("has_machine_quality"): - definition_id = material_container.getDefinition().getMetaDataEntry("quality_definition", material_container.getDefinition().getId()) - else: + # \param material_container \type{Dict[str, Any]} The metadata of a + # material to find the basic versions of. + # \return \type{List[Dict[str, Any]]} A list of the metadata of basic + # materials, or an empty list if none could be found. + def _getBasicMaterialMetadatas(self, material_container: Dict[str, Any]) -> List[Dict[str, Any]]: + if "definition" not in material_container: definition_id = "fdmprinter" + else: + material_container_definition = ContainerRegistry.getInstance().findDefinitionContainersMetadata(id = material_container["definition"]) + if not material_container_definition: + definition_id = "fdmprinter" + else: + material_container_definition = material_container_definition[0] + if "has_machine_quality" not in material_container_definition: + definition_id = "fdmprinter" + else: + definition_id = material_container_definition.get("quality_definition", material_container_definition["id"]) + + base_material = material_container.get("material") if base_material: # There is a basic material specified - criteria = { "type": "material", "name": base_material, "definition": definition_id } - containers = ContainerRegistry.getInstance().findInstanceContainers(**criteria) - containers = [basic_material for basic_material in containers if - basic_material.getMetaDataEntry("variant") == material_container.getMetaDataEntry( - "variant")] + criteria = { + "type": "material", + "name": base_material, + "definition": definition_id, + "variant": material_container.get("variant") + } + containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(**criteria) return containers return [] @@ -221,29 +236,25 @@ class QualityManager: def _getFilteredContainers(self, **kwargs): return self._getFilteredContainersForStack(None, None, **kwargs) - def _getFilteredContainersForStack(self, machine_definition: "DefinitionContainerInterface" = None, material_containers: List[InstanceContainer] = None, **kwargs): + def _getFilteredContainersForStack(self, machine_definition: "DefinitionContainerInterface" = None, material_metadata: Optional[List[Dict[str, Any]]] = None, **kwargs): # Fill in any default values. if machine_definition is None: machine_definition = Application.getInstance().getGlobalContainerStack().getBottom() quality_definition_id = machine_definition.getMetaDataEntry("quality_definition") if quality_definition_id is not None: - machine_definition = ContainerRegistry.getInstance().findDefinitionContainers(id=quality_definition_id)[0] + machine_definition = ContainerRegistry.getInstance().findDefinitionContainers(id = quality_definition_id)[0] - # for convenience - if material_containers is None: - material_containers = [] - - if not material_containers: + if not material_metadata: active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() if active_stacks: - material_containers = [stack.material for stack in active_stacks] + material_metadata = [stack.material.getMetaData() for stack in active_stacks] criteria = kwargs filter_by_material = False machine_definition = self.getParentMachineDefinition(machine_definition) criteria["definition"] = machine_definition.getId() - found_containers_with_machine_definition = ContainerRegistry.getInstance().findInstanceContainers(**criteria) + found_containers_with_machine_definition = ContainerRegistry.getInstance().findInstanceContainersMetadata(**criteria) whole_machine_definition = self.getWholeMachineDefinition(machine_definition) if whole_machine_definition.getMetaDataEntry("has_machine_quality"): definition_id = machine_definition.getMetaDataEntry("quality_definition", whole_machine_definition.getId()) @@ -257,12 +268,12 @@ class QualityManager: # Stick the material IDs in a set material_ids = set() - for material_instance in material_containers: + for material_instance in material_metadata: if material_instance is not None: # Add the parent material too. - for basic_material in self._getBasicMaterials(material_instance): - material_ids.add(basic_material.getId()) - material_ids.add(material_instance.getId()) + for basic_material in self._getBasicMaterialMetadatas(material_instance): + material_ids.add(basic_material["id"]) + material_ids.add(material_instance["id"]) containers = ContainerRegistry.getInstance().findInstanceContainers(**criteria) result = [] @@ -288,13 +299,13 @@ class QualityManager: # We have a normal (whole) machine defintion quality_definition = machine_definition.getMetaDataEntry("quality_definition") if quality_definition is not None: - parent_machine_definition = container_registry.findDefinitionContainers(id=quality_definition)[0] + parent_machine_definition = container_registry.findDefinitionContainers(id = quality_definition)[0] return self.getParentMachineDefinition(parent_machine_definition) else: return machine_definition else: # This looks like an extruder. Find the rest of the machine. - whole_machine = container_registry.findDefinitionContainers(id=machine_entry)[0] + whole_machine = container_registry.findDefinitionContainers(id = machine_entry)[0] parent_machine = self.getParentMachineDefinition(whole_machine) if whole_machine is parent_machine: # This extruder already belongs to a 'parent' machine def. @@ -303,7 +314,7 @@ class QualityManager: # Look up the corresponding extruder definition in the parent machine definition. extruder_position = machine_definition.getMetaDataEntry("position") parent_extruder_id = parent_machine.getMetaDataEntry("machine_extruder_trains")[extruder_position] - return container_registry.findDefinitionContainers(id=parent_extruder_id)[0] + return container_registry.findDefinitionContainers(id = parent_extruder_id)[0] ## Get the whole/global machine definition from an extruder definition. # @@ -317,5 +328,5 @@ class QualityManager: return machine_definition else: container_registry = ContainerRegistry.getInstance() - whole_machine = container_registry.findDefinitionContainers(id=machine_entry)[0] + whole_machine = container_registry.findDefinitionContainers(id = machine_entry)[0] return whole_machine diff --git a/cura/BlockSlicingDecorator.py b/cura/Scene/BlockSlicingDecorator.py similarity index 100% rename from cura/BlockSlicingDecorator.py rename to cura/Scene/BlockSlicingDecorator.py diff --git a/cura/Scene/BuildPlateDecorator.py b/cura/Scene/BuildPlateDecorator.py new file mode 100644 index 0000000000..44372976f0 --- /dev/null +++ b/cura/Scene/BuildPlateDecorator.py @@ -0,0 +1,26 @@ +from UM.Scene.SceneNodeDecorator import SceneNodeDecorator +from cura.Scene.CuraSceneNode import CuraSceneNode + + +## Make a SceneNode build plate aware CuraSceneNode objects all have this decorator. +class BuildPlateDecorator(SceneNodeDecorator): + def __init__(self, build_plate_number = -1): + super().__init__() + self._build_plate_number = None + self.setBuildPlateNumber(build_plate_number) + + def setBuildPlateNumber(self, nr): + # Make sure that groups are set correctly + # setBuildPlateForSelection in CuraActions makes sure that no single childs are set. + self._build_plate_number = nr + if issubclass(type(self._node), CuraSceneNode): + self._node.transformChanged() # trigger refresh node without introducing a new signal + if self._node and self._node.callDecoration("isGroup"): + for child in self._node.getChildren(): + child.callDecoration("setBuildPlateNumber", nr) + + def getBuildPlateNumber(self): + return self._build_plate_number + + def __deepcopy__(self, memo): + return BuildPlateDecorator() diff --git a/cura/ConvexHullDecorator.py b/cura/Scene/ConvexHullDecorator.py similarity index 95% rename from cura/ConvexHullDecorator.py rename to cura/Scene/ConvexHullDecorator.py index bfeb690192..3a563c2764 100644 --- a/cura/ConvexHullDecorator.py +++ b/cura/Scene/ConvexHullDecorator.py @@ -7,7 +7,7 @@ from UM.Scene.SceneNodeDecorator import SceneNodeDecorator from UM.Settings.ContainerRegistry import ContainerRegistry from cura.Settings.ExtruderManager import ExtruderManager -from . import ConvexHullNode +from cura.Scene import ConvexHullNode import numpy @@ -302,24 +302,23 @@ class ConvexHullDecorator(SceneNodeDecorator): self._onChanged() ## Private convenience function to get a setting from the correct extruder (as defined by limit_to_extruder property). - def _getSettingProperty(self, setting_key, property = "value"): + def _getSettingProperty(self, setting_key, prop = "value"): per_mesh_stack = self._node.callDecoration("getStack") if per_mesh_stack: - return per_mesh_stack.getProperty(setting_key, property) - - multi_extrusion = self._global_stack.getProperty("machine_extruder_count", "value") > 1 - if not multi_extrusion: - return self._global_stack.getProperty(setting_key, property) + return per_mesh_stack.getProperty(setting_key, prop) extruder_index = self._global_stack.getProperty(setting_key, "limit_to_extruder") - if extruder_index == "-1": #No limit_to_extruder. + if extruder_index == "-1": + # No limit_to_extruder extruder_stack_id = self._node.callDecoration("getActiveExtruder") - if not extruder_stack_id: #Decoration doesn't exist. + if not extruder_stack_id: + # Decoration doesn't exist extruder_stack_id = ExtruderManager.getInstance().extruderIds["0"] extruder_stack = ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0] - return extruder_stack.getProperty(setting_key, property) - else: #Limit_to_extruder is set. The global stack handles this then. - return self._global_stack.getProperty(setting_key, property) + return extruder_stack.getProperty(setting_key, prop) + else: + # Limit_to_extruder is set. The global stack handles this then + return self._global_stack.getProperty(setting_key, prop) ## Returns true if node is a descendant or the same as the root node. def __isDescendant(self, root, node): diff --git a/cura/ConvexHullNode.py b/cura/Scene/ConvexHullNode.py similarity index 94% rename from cura/ConvexHullNode.py rename to cura/Scene/ConvexHullNode.py index cc4720c197..02d8ed833c 100644 --- a/cura/ConvexHullNode.py +++ b/cura/Scene/ConvexHullNode.py @@ -6,7 +6,6 @@ from UM.Scene.SceneNode import SceneNode from UM.Resources import Resources from UM.Math.Color import Color from UM.Mesh.MeshBuilder import MeshBuilder # To create a mesh to display the convex hull with. - from UM.View.GL.OpenGL import OpenGL @@ -66,7 +65,7 @@ class ConvexHullNode(SceneNode): ConvexHullNode.shader.setUniformValue("u_opacity", 0.6) if self.getParent(): - if self.getMeshData(): + if self.getMeshData() and issubclass(type(self._node), SceneNode) and self._node.callDecoration("getBuildPlateNumber") == Application.getInstance().getBuildPlateModel().activeBuildPlate: renderer.queueNode(self, transparent = True, shader = ConvexHullNode.shader, backface_cull = True, sort = -8) if self._convex_hull_head_mesh: renderer.queueNode(self, shader = ConvexHullNode.shader, transparent = True, mesh = self._convex_hull_head_mesh, backface_cull = True, sort = -8) diff --git a/cura/Scene/CuraSceneController.py b/cura/Scene/CuraSceneController.py new file mode 100644 index 0000000000..65723db52c --- /dev/null +++ b/cura/Scene/CuraSceneController.py @@ -0,0 +1,101 @@ +from UM.Logger import Logger + +from PyQt5.QtCore import Qt, pyqtSlot, QObject +from PyQt5.QtWidgets import QApplication + +from cura.ObjectsModel import ObjectsModel +from cura.BuildPlateModel import BuildPlateModel + +from UM.Application import Application +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator +from UM.Scene.SceneNode import SceneNode +from UM.Scene.Selection import Selection + + +class CuraSceneController(QObject): + def __init__(self, objects_model: ObjectsModel, build_plate_model: BuildPlateModel): + super().__init__() + + self._objects_model = objects_model + self._build_plate_model = build_plate_model + self._active_build_plate = -1 + + self._last_selected_index = 0 + self._max_build_plate = 1 # default + + Application.getInstance().getController().getScene().sceneChanged.connect(self.updateMaxBuildPlate) # it may be a bit inefficient when changing a lot simultaneously + + def updateMaxBuildPlate(self, *args): + if args: + source = args[0] + else: + source = None + if not issubclass(type(source), SceneNode): + return + max_build_plate = self._calcMaxBuildPlate() + changed = False + if max_build_plate != self._max_build_plate: + self._max_build_plate = max_build_plate + changed = True + if changed: + self._build_plate_model.setMaxBuildPlate(self._max_build_plate) + build_plates = [{"name": "Build Plate %d" % (i + 1), "buildPlateNumber": i} for i in range(self._max_build_plate + 1)] + self._build_plate_model.setItems(build_plates) + # self.buildPlateItemsChanged.emit() # TODO: necessary after setItems? + + def _calcMaxBuildPlate(self): + max_build_plate = 0 + for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): + if node.callDecoration("isSliceable"): + build_plate_number = node.callDecoration("getBuildPlateNumber") + max_build_plate = max(build_plate_number, max_build_plate) + return max_build_plate + + ## Either select or deselect an item + @pyqtSlot(int) + def changeSelection(self, index): + modifiers = QApplication.keyboardModifiers() + ctrl_is_active = modifiers & Qt.ControlModifier + shift_is_active = modifiers & Qt.ShiftModifier + + if ctrl_is_active: + item = self._objects_model.getItem(index) + node = item["node"] + if Selection.isSelected(node): + Selection.remove(node) + else: + Selection.add(node) + elif shift_is_active: + polarity = 1 if index + 1 > self._last_selected_index else -1 + for i in range(self._last_selected_index, index + polarity, polarity): + item = self._objects_model.getItem(i) + node = item["node"] + Selection.add(node) + else: + # Single select + item = self._objects_model.getItem(index) + node = item["node"] + Selection.clear() + Selection.add(node) + build_plate_number = node.callDecoration("getBuildPlateNumber") + if build_plate_number is not None and build_plate_number != -1: + self._build_plate_model.setActiveBuildPlate(build_plate_number) + + self._last_selected_index = index + + @pyqtSlot(int) + def setActiveBuildPlate(self, nr): + if nr == self._active_build_plate: + return + Logger.log("d", "Select build plate: %s" % nr) + self._active_build_plate = nr + Selection.clear() + + self._build_plate_model.setActiveBuildPlate(nr) + self._objects_model.setActiveBuildPlate(nr) + + @staticmethod + def createCuraSceneController(): + objects_model = Application.getInstance().getObjectsModel() + build_plate_model = Application.getInstance().getBuildPlateModel() + return CuraSceneController(objects_model = objects_model, build_plate_model = build_plate_model) diff --git a/cura/Scene/CuraSceneNode.py b/cura/Scene/CuraSceneNode.py new file mode 100644 index 0000000000..9df2931f0b --- /dev/null +++ b/cura/Scene/CuraSceneNode.py @@ -0,0 +1,43 @@ +from UM.Application import Application +from UM.Logger import Logger +from UM.Scene.SceneNode import SceneNode +from copy import deepcopy + + +## Scene nodes that are models are only seen when selecting the corresponding build plate +# Note that many other nodes can just be UM SceneNode objects. +class CuraSceneNode(SceneNode): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._outside_buildarea = True + + def setOutsideBuildArea(self, new_value): + self._outside_buildarea = new_value + + def isOutsideBuildArea(self): + return self._outside_buildarea or self.callDecoration("getBuildPlateNumber") < 0 + + def isVisible(self): + return super().isVisible() and self.callDecoration("getBuildPlateNumber") == Application.getInstance().getBuildPlateModel().activeBuildPlate + + def isSelectable(self) -> bool: + return super().isSelectable() and self.callDecoration("getBuildPlateNumber") == Application.getInstance().getBuildPlateModel().activeBuildPlate + + ## Taken from SceneNode, but replaced SceneNode with CuraSceneNode + def __deepcopy__(self, memo): + copy = CuraSceneNode() + copy.setTransformation(self.getLocalTransformation()) + copy.setMeshData(self._mesh_data) + copy.setVisible(deepcopy(self._visible, memo)) + copy._selectable = deepcopy(self._selectable, memo) + copy._name = deepcopy(self._name, memo) + for decorator in self._decorators: + copy.addDecorator(deepcopy(decorator, memo)) + + for child in self._children: + copy.addChild(deepcopy(child, memo)) + self.calculateBoundingBoxMesh() + return copy + + def transformChanged(self) -> None: + self._transformChanged() diff --git a/cura/GCodeListDecorator.py b/cura/Scene/GCodeListDecorator.py similarity index 100% rename from cura/GCodeListDecorator.py rename to cura/Scene/GCodeListDecorator.py diff --git a/cura/SliceableObjectDecorator.py b/cura/Scene/SliceableObjectDecorator.py similarity index 100% rename from cura/SliceableObjectDecorator.py rename to cura/Scene/SliceableObjectDecorator.py diff --git a/cura/ZOffsetDecorator.py b/cura/Scene/ZOffsetDecorator.py similarity index 100% rename from cura/ZOffsetDecorator.py rename to cura/Scene/ZOffsetDecorator.py diff --git a/cura/Scene/__init__.py b/cura/Scene/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index 85aed93cf6..209e1ec8fd 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -1,10 +1,11 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +import copy import os.path import urllib import uuid -from typing import Dict, Union +from typing import Any, Dict, List, Union from PyQt5.QtCore import QObject, QUrl, QVariant from UM.FlameProfiler import pyqtSlot @@ -55,13 +56,24 @@ class ContainerManager(QObject): # \return The ID of the new container, or an empty string if duplication failed. @pyqtSlot(str, result = str) def duplicateContainer(self, container_id): - containers = self._container_registry.findContainers(None, id = container_id) + #TODO: It should be able to duplicate a container of which only the metadata is known. + containers = self._container_registry.findContainers(id = container_id) if not containers: Logger.log("w", "Could duplicate container %s because it was not found.", container_id) return "" container = containers[0] + new_container = self.duplicateContainerInstance(container) + return new_container.getId() + ## Create a duplicate of the given container instance + # + # This will create and add a duplicate of the container that was passed. + # + # \param container \type{ContainerInterface} The container to duplicate. + # + # \return The duplicated container, or None if duplication failed. + def duplicateContainerInstance(self, container): new_container = None new_name = self._container_registry.uniqueName(container.getName()) # Only InstanceContainer has a duplicate method at the moment. @@ -73,10 +85,11 @@ class ContainerManager(QObject): new_container.deserialize(container.serialize()) new_container.setName(new_name) + # TODO: we probably don't want to add it to the registry here! if new_container: self._container_registry.addContainer(new_container) - return new_container.getId() + return new_container ## Change the name of a specified container to a new name. # @@ -87,14 +100,14 @@ class ContainerManager(QObject): # \return True if successful, False if not. @pyqtSlot(str, str, str, result = bool) def renameContainer(self, container_id, new_id, new_name): - containers = self._container_registry.findContainers(None, id = container_id) + containers = self._container_registry.findContainers(id = container_id) if not containers: Logger.log("w", "Could rename container %s because it was not found.", container_id) return False container = containers[0] # First, remove the container from the registry. This will clean up any files related to the container. - self._container_registry.removeContainer(container) + self._container_registry.removeContainer(container_id) # Ensure we have a unique name for the container new_name = self._container_registry.uniqueName(new_name) @@ -115,9 +128,9 @@ class ContainerManager(QObject): # \return True if the container was successfully removed, False if not. @pyqtSlot(str, result = bool) def removeContainer(self, container_id): - containers = self._container_registry.findContainers(None, id = container_id) + containers = self._container_registry.findContainers(id = container_id) if not containers: - Logger.log("w", "Could remove container %s because it was not found.", container_id) + Logger.log("w", "Could not remove container %s because it was not found.", container_id) return False self._container_registry.removeContainer(containers[0].getId()) @@ -135,14 +148,14 @@ class ContainerManager(QObject): # \return True if successfully merged, False if not. @pyqtSlot(str, result = bool) def mergeContainers(self, merge_into_id, merge_id): - containers = self._container_registry.findContainers(None, id = merge_into_id) + containers = self._container_registry.findContainers(id = merge_into_id) if not containers: Logger.log("w", "Could merge into container %s because it was not found.", merge_into_id) return False merge_into = containers[0] - containers = self._container_registry.findContainers(None, id = merge_id) + containers = self._container_registry.findContainers(id = merge_id) if not containers: Logger.log("w", "Could not merge container %s because it was not found", merge_id) return False @@ -164,13 +177,13 @@ class ContainerManager(QObject): # \return True if successful, False if not. @pyqtSlot(str, result = bool) def clearContainer(self, container_id): - containers = self._container_registry.findContainers(None, id = container_id) - if not containers: - Logger.log("w", "Could clear container %s because it was not found.", container_id) + if self._container_registry.isReadOnly(container_id): + Logger.log("w", "Cannot clear read-only container %s", container_id) return False - if containers[0].isReadOnly(): - Logger.log("w", "Cannot clear read-only container %s", container_id) + containers = self._container_registry.findContainers(id = container_id) + if not containers: + Logger.log("w", "Could clear container %s because it was not found.", container_id) return False containers[0].clear() @@ -179,16 +192,12 @@ class ContainerManager(QObject): @pyqtSlot(str, str, result=str) def getContainerMetaDataEntry(self, container_id, entry_name): - containers = self._container_registry.findContainers(None, id=container_id) - if not containers: + metadatas = self._container_registry.findContainersMetadata(id = container_id) + if not metadatas: Logger.log("w", "Could not get metadata of container %s because it was not found.", container_id) return "" - result = containers[0].getMetaDataEntry(entry_name) - if result is not None: - return str(result) - else: - return "" + return str(metadatas[0].get(entry_name, "")) ## Set a metadata entry of the specified container. # @@ -204,17 +213,17 @@ class ContainerManager(QObject): # \return True if successful, False if not. @pyqtSlot(str, str, str, result = bool) def setContainerMetaDataEntry(self, container_id, entry_name, entry_value): - containers = self._container_registry.findContainers(None, id = container_id) + if self._container_registry.isReadOnly(container_id): + Logger.log("w", "Cannot set metadata of read-only container %s.", container_id) + return False + + containers = self._container_registry.findContainers(id = container_id) #We need the complete container, since we need to know whether the container is read-only or not. if not containers: Logger.log("w", "Could not set metadata of container %s because it was not found.", container_id) return False container = containers[0] - if container.isReadOnly(): - Logger.log("w", "Cannot set metadata of read-only container %s.", container_id) - return False - entries = entry_name.split("/") entry_name = entries.pop() @@ -254,17 +263,17 @@ class ContainerManager(QObject): # \return True if successful, False if not. @pyqtSlot(str, str, str, str, result = bool) def setContainerProperty(self, container_id, setting_key, property_name, property_value): - containers = self._container_registry.findContainers(None, id = container_id) + if self._container_registry.isReadOnly(container_id): + Logger.log("w", "Cannot set properties of read-only container %s.", container_id) + return False + + containers = self._container_registry.findContainers(id = container_id) if not containers: Logger.log("w", "Could not set properties of container %s because it was not found.", container_id) return False container = containers[0] - if container.isReadOnly(): - Logger.log("w", "Cannot set properties of read-only container %s.", container_id) - return False - container.setProperty(setting_key, property_name, property_value) basefile = container.getMetaDataEntry("base_file", container_id) @@ -300,35 +309,30 @@ class ContainerManager(QObject): ## Set the name of the specified container. @pyqtSlot(str, str, result = bool) def setContainerName(self, container_id, new_name): - containers = self._container_registry.findContainers(None, id = container_id) + if self._container_registry.isReadOnly(container_id): + Logger.log("w", "Cannot set name of read-only container %s.", container_id) + return False + + containers = self._container_registry.findContainers(id = container_id) #We need to get the full container, not just metadata, since we need to know whether it's read-only. if not containers: Logger.log("w", "Could not set name of container %s because it was not found.", container_id) return False - container = containers[0] - - if container.isReadOnly(): - Logger.log("w", "Cannot set name of read-only container %s.", container_id) - return False - - container.setName(new_name) + containers[0].setName(new_name) return True ## Find instance containers matching certain criteria. # - # This effectively forwards to ContainerRegistry::findInstanceContainers. + # This effectively forwards to + # ContainerRegistry::findInstanceContainersMetadata. # # \param criteria A dict of key - value pairs to search for. # # \return A list of container IDs that match the given criteria. @pyqtSlot("QVariantMap", result = "QVariantList") def findInstanceContainers(self, criteria): - result = [] - for entry in self._container_registry.findInstanceContainers(**criteria): - result.append(entry.getId()) - - return result + return [entry["id"] for entry in self._container_registry.findInstanceContainersMetadata(**criteria)] @pyqtSlot(str, result = bool) def isContainerUsed(self, container_id): @@ -336,15 +340,17 @@ class ContainerManager(QObject): # check if this is a material container. If so, check if any material with the same base is being used by any # stacks. container_ids_to_check = [container_id] - container_results = self._container_registry.findInstanceContainers(id = container_id, type = "material") + container_results = self._container_registry.findInstanceContainersMetadata(id = container_id, type = "material") if container_results: this_container = container_results[0] - material_base_file = this_container.getMetaDataEntry("base_file", this_container.getId()) + material_base_file = this_container["id"] + if "base_file" in this_container: + material_base_file = this_container["base_file"] # check all material container IDs with the same base - material_containers = self._container_registry.findInstanceContainers(base_file = material_base_file, + material_containers = self._container_registry.findInstanceContainersMetadata(base_file = material_base_file, type = "material") if material_containers: - container_ids_to_check = [container.getId() for container in material_containers] + container_ids_to_check = [container["id"] for container in material_containers] all_stacks = self._container_registry.findContainerStacks() for stack in all_stacks: @@ -412,7 +418,7 @@ class ContainerManager(QObject): else: mime_type = self._container_name_filters[file_type]["mime"] - containers = self._container_registry.findContainers(None, id = container_id) + containers = self._container_registry.findContainers(id = container_id) if not containers: return { "status": "error", "message": "Container not found"} container = containers[0] @@ -508,7 +514,7 @@ class ContainerManager(QObject): for stack in ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks(): # Find the quality_changes container for this stack and merge the contents of the top container into it. quality_changes = stack.qualityChanges - if not quality_changes or quality_changes.isReadOnly(): + if not quality_changes or self._container_registry.isReadOnly(quality_changes.getId()): Logger.log("e", "Could not update quality of a nonexistant or read only quality profile in stack %s", stack.getId()) continue @@ -616,9 +622,9 @@ class ContainerManager(QObject): elif activate_quality: definition_id = "fdmprinter" if not self._machine_manager.filterQualityByMachine else self._machine_manager.activeDefinitionId - containers = self._container_registry.findInstanceContainers(type = "quality", definition = definition_id, quality_type = activate_quality_type) + containers = self._container_registry.findInstanceContainersMetadata(type = "quality", definition = definition_id, quality_type = activate_quality_type) if containers: - self._machine_manager.setActiveQuality(containers[0].getId()) + self._machine_manager.setActiveQuality(containers[0]["id"]) self._machine_manager.activeQualityChanged.emit() return containers_found @@ -653,11 +659,13 @@ class ContainerManager(QObject): container_registry = self._container_registry - containers_to_rename = self._container_registry.findInstanceContainers(type = "quality_changes", name = quality_name) + containers_to_rename = self._container_registry.findInstanceContainersMetadata(type = "quality_changes", name = quality_name) for container in containers_to_rename: - stack_id = container.getMetaDataEntry("extruder", global_stack.getId()) - container_registry.renameContainer(container.getId(), new_name, self._createUniqueId(stack_id, new_name)) + stack_id = global_stack.getId() + if "extruder" in container: + stack_id = container["extruder"] + container_registry.renameContainer(container["id"], new_name, self._createUniqueId(stack_id, new_name)) if not containers_to_rename: Logger.log("e", "Unable to rename %s, because we could not find the profile", quality_name) @@ -679,30 +687,32 @@ class ContainerManager(QObject): global_stack = Application.getInstance().getGlobalContainerStack() if not global_stack or not quality_name: return "" - machine_definition = global_stack.getBottom() + machine_definition = global_stack.definition active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() - material_containers = [stack.material for stack in active_stacks] + if active_stacks is None: + return "" + material_metadatas = [stack.material.getMetaData() for stack in active_stacks] result = self._duplicateQualityOrQualityChangesForMachineType(quality_name, base_name, QualityManager.getInstance().getParentMachineDefinition(machine_definition), - material_containers) + material_metadatas) return result[0].getName() if result else "" ## Duplicate a quality or quality changes profile specific to a machine type # - # \param quality_name \type{str} the name of the quality or quality changes container to duplicate. - # \param base_name \type{str} the desired name for the new container. - # \param machine_definition \type{DefinitionContainer} - # \param material_instances \type{List[InstanceContainer]} - # \return \type{str} the name of the newly created container. - def _duplicateQualityOrQualityChangesForMachineType(self, quality_name, base_name, machine_definition, material_instances): + # \param quality_name The name of the quality or quality changes container to duplicate. + # \param base_name The desired name for the new container. + # \param machine_definition The machine with the specific machine type. + # \param material_metadatas Metadata of materials + # \return List of duplicated quality profiles. + def _duplicateQualityOrQualityChangesForMachineType(self, quality_name: str, base_name: str, machine_definition: DefinitionContainer, material_metadatas: List[Dict[str, Any]]) -> List[InstanceContainer]: Logger.log("d", "Attempting to duplicate the quality %s", quality_name) if base_name is None: base_name = quality_name # Try to find a Quality with the name. - container = QualityManager.getInstance().findQualityByName(quality_name, machine_definition, material_instances) + container = QualityManager.getInstance().findQualityByName(quality_name, machine_definition, material_metadatas) if container: Logger.log("d", "We found a quality to duplicate.") return self._duplicateQualityForMachineType(container, base_name, machine_definition) @@ -711,7 +721,7 @@ class ContainerManager(QObject): return self._duplicateQualityChangesForMachineType(quality_name, base_name, machine_definition) # Duplicate a quality profile - def _duplicateQualityForMachineType(self, quality_container, base_name, machine_definition): + def _duplicateQualityForMachineType(self, quality_container, base_name, machine_definition) -> List[InstanceContainer]: if base_name is None: base_name = quality_container.getName() new_name = self._container_registry.uniqueName(base_name) @@ -735,7 +745,7 @@ class ContainerManager(QObject): return new_change_instances # Duplicate a quality changes container - def _duplicateQualityChangesForMachineType(self, quality_changes_name, base_name, machine_definition): + def _duplicateQualityChangesForMachineType(self, quality_changes_name, base_name, machine_definition) -> List[InstanceContainer]: new_change_instances = [] for container in QualityManager.getInstance().findQualityChangesByName(quality_changes_name, machine_definition): @@ -754,27 +764,57 @@ class ContainerManager(QObject): # \return \type{str} the id of the newly created container. @pyqtSlot(str, result = str) def duplicateMaterial(self, material_id: str) -> str: - containers = self._container_registry.findInstanceContainers(id=material_id) - if not containers: + original = self._container_registry.findContainersMetadata(id = material_id) + if not original: Logger.log("d", "Unable to duplicate the material with id %s, because it doesn't exist.", material_id) return "" + original = original[0] + + base_container_id = original.get("base_file") + base_container = self._container_registry.findContainers(id = base_container_id) + if not base_container: + Logger.log("d", "Unable to duplicate the material with id {material_id}, because base_file {base_container_id} doesn't exist.".format(material_id = material_id, base_container_id = base_container_id)) + return "" + base_container = base_container[0] + + #We'll copy all containers with the same base. + #This way the correct variant and machine still gets assigned when loading the copy of the material. + containers_to_copy = self._container_registry.findInstanceContainers(base_file = base_container_id) # Ensure all settings are saved. Application.getInstance().saveSettings() # Create a new ID & container to hold the data. - new_id = self._container_registry.uniqueName(material_id) - container_type = type(containers[0]) # Could be either a XMLMaterialProfile or a InstanceContainer - duplicated_container = container_type(new_id) + new_containers = [] + new_base_id = self._container_registry.uniqueName(base_container.getId()) + new_base_container = copy.deepcopy(base_container) + new_base_container.getMetaData()["id"] = new_base_id + new_base_container.getMetaData()["base_file"] = new_base_id + new_containers.append(new_base_container) - # Instead of duplicating we load the data from the basefile again. - # This ensures that the inheritance goes well and all "cut up" subclasses of the xmlMaterial profile - # are also correctly created. - with open(containers[0].getPath(), encoding="utf-8") as f: - duplicated_container.deserialize(f.read()) - duplicated_container.setDirty(True) - self._container_registry.addContainer(duplicated_container) - return self._getMaterialContainerIdForActiveMachine(new_id) + #Clone all of them. + clone_of_original = None #Keeping track of which one is the clone of the original material, since we need to return that. + for container_to_copy in containers_to_copy: + #Create unique IDs for every clone. + current_id = container_to_copy.getId() + new_id = new_base_id + if container_to_copy.getMetaDataEntry("definition") != "fdmprinter": + new_id += "_" + container_to_copy.getMetaDataEntry("definition") + if container_to_copy.getMetaDataEntry("variant"): + variant = self._container_registry.findContainers(id = container_to_copy.getMetaDataEntry("variant"))[0] + new_id += "_" + variant.getName().replace(" ", "_") + if current_id == material_id: + clone_of_original = new_id + + new_container = copy.deepcopy(container_to_copy) + new_container.getMetaData()["id"] = new_id + new_container.getMetaData()["base_file"] = new_base_id + new_containers.append(new_container) + + for container_to_add in new_containers: + container_to_add.setDirty(True) + ContainerRegistry.getInstance().addContainer(container_to_add) + return self._getMaterialContainerIdForActiveMachine(clone_of_original) ## Create a new material by cloning Generic PLA for the current material diameter and setting the GUID to something unqiue # @@ -789,12 +829,12 @@ class ContainerManager(QObject): return "" approximate_diameter = str(round(global_stack.getProperty("material_diameter", "value"))) - containers = self._container_registry.findInstanceContainers(id = "generic_pla*", approximate_diameter = approximate_diameter) + containers = self._container_registry.findInstanceContainersMetadata(id = "generic_pla*", approximate_diameter = approximate_diameter) if not containers: Logger.log("d", "Unable to create a new material by cloning Generic PLA, because it cannot be found for the material diameter for this machine.") return "" - base_file = containers[0].getMetaDataEntry("base_file") + base_file = containers[0].get("base_file") containers = self._container_registry.findInstanceContainers(id = base_file) if not containers: Logger.log("d", "Unable to create a new material by cloning Generic PLA, because the base file for Generic PLA for this machine can not be found.") @@ -835,14 +875,14 @@ class ContainerManager(QObject): has_variants = parseBool(global_stack.getMetaDataEntry("has_variants", default = False)) if has_machine_materials or has_variant_materials: if has_variants: - materials = self._container_registry.findInstanceContainers(type = "material", base_file = base_file, definition = global_stack.getBottom().getId(), variant = self._machine_manager.activeVariantId) + materials = self._container_registry.findInstanceContainersMetadata(type = "material", base_file = base_file, definition = global_stack.getBottom().getId(), variant = self._machine_manager.activeVariantId) else: - materials = self._container_registry.findInstanceContainers(type = "material", base_file = base_file, definition = global_stack.getBottom().getId()) + materials = self._container_registry.findInstanceContainersMetadata(type = "material", base_file = base_file, definition = global_stack.getBottom().getId()) if materials: - return materials[0].getId() + return materials[0]["id"] - Logger.log("w", "Unable to find a suitable container based on %s for the current machine .", base_file) + Logger.log("w", "Unable to find a suitable container based on %s for the current machine.", base_file) return "" # do not activate a new material if a container can not be found return base_file @@ -853,25 +893,25 @@ class ContainerManager(QObject): # \return \type{list} a list of names of materials with the same GUID @pyqtSlot(str, result = "QStringList") def getLinkedMaterials(self, material_id: str): - containers = self._container_registry.findInstanceContainers(id=material_id) + containers = self._container_registry.findInstanceContainersMetadata(id = material_id) if not containers: Logger.log("d", "Unable to find materials linked to material with id %s, because it doesn't exist.", material_id) return [] material_container = containers[0] - material_base_file = material_container.getMetaDataEntry("base_file", "") - material_guid = material_container.getMetaDataEntry("GUID", "") + material_base_file = material_container.get("base_file", "") + material_guid = material_container.get("GUID", "") if not material_guid: Logger.log("d", "Unable to find materials linked to material with id %s, because it doesn't have a GUID.", material_id) return [] - containers = self._container_registry.findInstanceContainers(type = "material", GUID = material_guid) + containers = self._container_registry.findInstanceContainersMetadata(type = "material", GUID = material_guid) linked_material_names = [] for container in containers: - if container.getId() in [material_id, material_base_file] or container.getMetaDataEntry("base_file") != container.getId(): + if container["id"] in [material_id, material_base_file] or container.get("base_file") != container["id"]: continue - linked_material_names.append(container.getName()) + linked_material_names.append(container["name"]) return linked_material_names ## Unlink a material from all other materials by creating a new GUID @@ -957,14 +997,6 @@ class ContainerManager(QObject): name_filter = "{0} ({1})".format(mime_type.comment, suffix_list) self._container_name_filters[name_filter] = entry - ## Get containers filtered by machine type and material if required. - # - # \param kwargs Initial search criteria that the containers need to match. - # - # \return A list of containers matching the search criteria. - def _getFilteredContainers(self, **kwargs): - return QualityManager.getInstance()._getFilteredContainers(**kwargs) - ## Creates a unique ID for a container by prefixing the name with the stack ID. # # This method creates a unique ID for a container by prefixing it with a specified stack ID. @@ -1004,9 +1036,9 @@ class ContainerManager(QObject): # If the machine specifies qualities should be filtered, ensure we match the current criteria. if not machine_definition.getMetaDataEntry("has_machine_quality"): - quality_changes.setDefinition(self._container_registry.findContainers(id = "fdmprinter")[0]) + quality_changes.setDefinition("fdmprinter") else: - quality_changes.setDefinition(QualityManager.getInstance().getParentMachineDefinition(machine_definition)) + quality_changes.setDefinition(QualityManager.getInstance().getParentMachineDefinition(machine_definition).getId()) from cura.CuraApplication import CuraApplication quality_changes.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 12f27e8156..a078240d80 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -4,6 +4,7 @@ import os import os.path import re +import configparser from typing import Optional @@ -13,12 +14,14 @@ from UM.Decorators import override from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.ContainerStack import ContainerStack from UM.Settings.InstanceContainer import InstanceContainer +from UM.Settings.SettingInstance import SettingInstance from UM.Application import Application from UM.Logger import Logger from UM.Message import Message from UM.Platform import Platform -from UM.PluginRegistry import PluginRegistry #For getting the possible profile writers to write with. +from UM.PluginRegistry import PluginRegistry # For getting the possible profile writers to write with. from UM.Util import parseBool +from UM.Resources import Resources from . import ExtruderStack from . import GlobalStack @@ -34,6 +37,11 @@ class CuraContainerRegistry(ContainerRegistry): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + # We don't have all the machines loaded in the beginning, so in order to add the missing extruder stack + # for single extrusion machines, we subscribe to the containerAdded signal, and whenever a global stack + # is added, we check to see if an extruder stack needs to be added. + self.containerAdded.connect(self._onContainerAdded) + ## Overridden from ContainerRegistry # # Adds a container to the registry. @@ -47,7 +55,7 @@ class CuraContainerRegistry(ContainerRegistry): container = self._convertContainerStack(container) if isinstance(container, InstanceContainer) and type(container) != type(self.getEmptyInstanceContainer()): - #Check against setting version of the definition. + # Check against setting version of the definition. required_setting_version = CuraApplication.SettingVersion actual_setting_version = int(container.getMetaDataEntry("setting_version", default = 0)) if required_setting_version != actual_setting_version: @@ -86,8 +94,8 @@ class CuraContainerRegistry(ContainerRegistry): def _containerExists(self, container_type, container_name): container_class = ContainerStack if container_type == "machine" else InstanceContainer - return self.findContainers(container_class, id = container_name, type = container_type, ignore_case = True) or \ - self.findContainers(container_class, name = container_name, type = container_type) + return self.findContainersMetadata(id = container_name, type = container_type, ignore_case = True) or \ + self.findContainersMetadata(container_type = container_class, name = container_name, type = container_type) ## Exports an profile to a file # @@ -116,7 +124,7 @@ class CuraContainerRegistry(ContainerRegistry): found_containers = [] extruder_positions = [] for instance_id in instance_ids: - containers = ContainerRegistry.getInstance().findInstanceContainers(id=instance_id) + containers = ContainerRegistry.getInstance().findInstanceContainers(id = instance_id) if containers: found_containers.append(containers[0]) @@ -126,9 +134,9 @@ class CuraContainerRegistry(ContainerRegistry): # Global stack extruder_positions.append(-1) else: - extruder_containers = ContainerRegistry.getInstance().findDefinitionContainers(id=extruder_id) + extruder_containers = ContainerRegistry.getInstance().findDefinitionContainersMetadata(id = extruder_id) if extruder_containers: - extruder_positions.append(int(extruder_containers[0].getMetaDataEntry("position", 0))) + extruder_positions.append(int(extruder_containers[0].get("position", 0))) else: extruder_positions.append(0) # Ensure the profiles are always exported in order (global, extruder 0, extruder 1, ...) @@ -202,53 +210,41 @@ class CuraContainerRegistry(ContainerRegistry): # Note that this will fail quickly. That is, if any profile reader throws an exception, it will stop reading. It will only continue reading if the reader returned None. Logger.log("e", "Failed to import profile from %s: %s while using profile reader. Got exception %s", file_name,profile_reader.getPluginId(), str(e)) return { "status": "error", "message": catalog.i18nc("@info:status Don't translate the XML tags or !", "Failed to import profile from {0}: {1}", file_name, str(e))} - if profile_or_list: # Success! + + if profile_or_list: name_seed = os.path.splitext(os.path.basename(file_name))[0] new_name = self.uniqueName(name_seed) + + # Ensure it is always a list of profiles if type(profile_or_list) is not list: - profile = profile_or_list + profile_or_list = [profile_or_list] - result = self._configureProfile(profile, name_seed, new_name) - if result is not None: - return {"status": "error", "message": catalog.i18nc("@info:status Don't translate the XML tags or !", "Failed to import profile from {0}: {1}", file_name, result)} + # Import all profiles + for profile_index, profile in enumerate(profile_or_list): + if profile_index == 0: + # This is assumed to be the global profile + profile_id = (global_container_stack.getBottom().getId() + "_" + name_seed).lower().replace(" ", "_") - return {"status": "ok", "message": catalog.i18nc("@info:status", "Successfully imported profile {0}", profile.getName())} - else: - profile_index = -1 - global_profile = None - - for profile in profile_or_list: - if profile_index >= 0: - if len(machine_extruders) > profile_index: - extruder_id = Application.getInstance().getMachineManager().getQualityDefinitionId(machine_extruders[profile_index].getBottom()) - # Ensure the extruder profiles get non-conflicting names - # NB: these are not user-facing - if "extruder" in profile.getMetaData(): - profile.setMetaDataEntry("extruder", extruder_id) - else: - profile.addMetaDataEntry("extruder", extruder_id) - profile_id = (extruder_id + "_" + name_seed).lower().replace(" ", "_") - elif profile_index == 0: - # Importing a multiextrusion profile into a single extrusion machine; merge 1st extruder profile into global profile - profile._id = self.uniqueName("temporary_profile") - self.addContainer(profile) - ContainerManager.getInstance().mergeContainers(global_profile.getId(), profile.getId()) - self.removeContainer(profile.getId()) - break - else: - # The imported composite profile has a profile for an extruder that this machine does not have. Ignore this extruder-profile - break + elif profile_index < len(machine_extruders) + 1: + # This is assumed to be an extruder profile + extruder_id = Application.getInstance().getMachineManager().getQualityDefinitionId(machine_extruders[profile_index - 1].getBottom()) + if not profile.getMetaDataEntry("extruder"): + profile.addMetaDataEntry("extruder", extruder_id) else: - global_profile = profile - profile_id = (global_container_stack.getBottom().getId() + "_" + name_seed).lower().replace(" ", "_") + profile.setMetaDataEntry("extruder", extruder_id) + profile_id = (extruder_id + "_" + name_seed).lower().replace(" ", "_") - result = self._configureProfile(profile, profile_id, new_name) - if result is not None: - return {"status": "error", "message": catalog.i18nc("@info:status Don't translate the XML tags or !", "Failed to import profile from {0}: {1}", file_name, result)} + else: #More extruders in the imported file than in the machine. + continue #Delete the additional profiles. - profile_index += 1 + result = self._configureProfile(profile, profile_id, new_name) + if result is not None: + return {"status": "error", "message": catalog.i18nc( + "@info:status Don't translate the XML tags or !", + "Failed to import profile from {0}: {1}", + file_name, result)} - return {"status": "ok", "message": catalog.i18nc("@info:status", "Successfully imported profile {0}", profile_or_list[0].getName())} + return {"status": "ok", "message": catalog.i18nc("@info:status", "Successfully imported profile {0}", profile_or_list[0].getName())} # If it hasn't returned by now, none of the plugins loaded the profile successfully. return {"status": "error", "message": catalog.i18nc("@info:status", "Profile {0} has an unknown file type or is corrupted.", file_name)} @@ -256,7 +252,8 @@ class CuraContainerRegistry(ContainerRegistry): @override(ContainerRegistry) def load(self): super().load() - self._fixupExtruders() + self._registerSingleExtrusionMachinesExtruderStacks() + self._connectUpgradedExtruderStacksToMachines() ## Update an imported profile to match the current machine configuration. # @@ -266,7 +263,6 @@ class CuraContainerRegistry(ContainerRegistry): # # \return None if configuring was successful or an error message if an error occurred. def _configureProfile(self, profile: InstanceContainer, id_seed: str, new_name: str) -> Optional[str]: - profile.setReadOnly(False) profile.setDirty(True) # Ensure the profiles are correctly saved new_id = self.createUniqueName("quality_changes", "", id_seed, catalog.i18nc("@label", "Custom profile")) @@ -284,7 +280,7 @@ class CuraContainerRegistry(ContainerRegistry): quality_type_criteria = {"quality_type": quality_type} if self._machineHasOwnQualities(): - profile.setDefinition(self._activeQualityDefinition()) + profile.setDefinition(self._activeQualityDefinition().getId()) if self._machineHasOwnMaterials(): active_material_id = self._activeMaterialId() if active_material_id and active_material_id != "empty": # only update if there is an active material @@ -294,16 +290,22 @@ class CuraContainerRegistry(ContainerRegistry): quality_type_criteria["definition"] = profile.getDefinition().getId() else: - profile.setDefinition(ContainerRegistry.getInstance().findDefinitionContainers(id="fdmprinter")[0]) + profile.setDefinition("fdmprinter") quality_type_criteria["definition"] = "fdmprinter" machine_definition = Application.getInstance().getGlobalContainerStack().getBottom() del quality_type_criteria["definition"] - materials = None + + # materials = None + if "material" in quality_type_criteria: - materials = ContainerRegistry.getInstance().findInstanceContainers(id = quality_type_criteria["material"]) + # materials = ContainerRegistry.getInstance().findInstanceContainers(id = quality_type_criteria["material"]) del quality_type_criteria["material"] + # Do not filter quality containers here with materials because we are trying to import a profile, so it should + # NOT be restricted by the active materials on the current machine. + materials = None + # Check to make sure the imported profile actually makes sense in context of the current configuration. # This prevents issues where importing a "draft" profile for a machine without "draft" qualities would report as # successfully imported but then fail to show up. @@ -335,7 +337,7 @@ class CuraContainerRegistry(ContainerRegistry): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: definition_id = Application.getInstance().getMachineManager().getQualityDefinitionId(global_container_stack.getBottom()) - definition = self.findDefinitionContainers(id=definition_id)[0] + definition = self.findDefinitionContainers(id = definition_id)[0] if definition: return definition @@ -357,8 +359,8 @@ class CuraContainerRegistry(ContainerRegistry): return global_container_stack.material.getId() return "" - ## Returns true if the current machien requires its own quality profiles - # \return true if the current machien requires its own quality profiles + ## Returns true if the current machine requires its own quality profiles + # \return true if the current machine requires its own quality profiles def _machineHasOwnQualities(self): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: @@ -391,19 +393,198 @@ class CuraContainerRegistry(ContainerRegistry): return new_stack + def _registerSingleExtrusionMachinesExtruderStacks(self): + machines = self.findContainerStacks(type = "machine", machine_extruder_trains = {"0": "fdmextruder"}) + for machine in machines: + extruder_stacks = self.findContainerStacks(type = "extruder_train", machine = machine.getId()) + if not extruder_stacks: + self.addExtruderStackForSingleExtrusionMachine(machine, "fdmextruder") + + def _onContainerAdded(self, container): + # We don't have all the machines loaded in the beginning, so in order to add the missing extruder stack + # for single extrusion machines, we subscribe to the containerAdded signal, and whenever a global stack + # is added, we check to see if an extruder stack needs to be added. + if not isinstance(container, ContainerStack) or container.getMetaDataEntry("type") != "machine": + return + + machine_extruder_trains = container.getMetaDataEntry("machine_extruder_trains") + if machine_extruder_trains is not None and machine_extruder_trains != {"0": "fdmextruder"}: + return + + extruder_stacks = self.findContainerStacks(type = "extruder_train", machine = container.getId()) + if not extruder_stacks: + self.addExtruderStackForSingleExtrusionMachine(container, "fdmextruder") + + def addExtruderStackForSingleExtrusionMachine(self, machine, extruder_id): + new_extruder_id = extruder_id + + extruder_definitions = self.findDefinitionContainers(id = new_extruder_id) + if not extruder_definitions: + Logger.log("w", "Could not find definition containers for extruder %s", new_extruder_id) + return + + extruder_definition = extruder_definitions[0] + unique_name = self.uniqueName(machine.getName() + " " + new_extruder_id) + + extruder_stack = ExtruderStack.ExtruderStack(unique_name) + extruder_stack.setName(extruder_definition.getName()) + extruder_stack.setDefinition(extruder_definition) + extruder_stack.addMetaDataEntry("position", extruder_definition.getMetaDataEntry("position")) + + from cura.CuraApplication import CuraApplication + + # create a new definition_changes container for the extruder stack + definition_changes_id = self.uniqueName(extruder_stack.getId() + "_settings") + definition_changes_name = definition_changes_id + definition_changes = InstanceContainer(definition_changes_id) + definition_changes.setName(definition_changes_name) + definition_changes.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) + definition_changes.addMetaDataEntry("type", "definition_changes") + definition_changes.addMetaDataEntry("definition", extruder_definition.getId()) + + # move definition_changes settings if exist + for setting_key in definition_changes.getAllKeys(): + if machine.definition.getProperty(setting_key, "settable_per_extruder"): + setting_value = machine.definitionChanges.getProperty(setting_key, "value") + if setting_value is not None: + # move it to the extruder stack's definition_changes + setting_definition = machine.getSettingDefinition(setting_key) + new_instance = SettingInstance(setting_definition, definition_changes) + new_instance.setProperty("value", setting_value) + new_instance.resetState() # Ensure that the state is not seen as a user state. + definition_changes.addInstance(new_instance) + definition_changes.setDirty(True) + + machine.definitionChanges.removeInstance(setting_key, postpone_emit = True) + + self.addContainer(definition_changes) + extruder_stack.setDefinitionChanges(definition_changes) + + # create empty user changes container otherwise + user_container_id = self.uniqueName(extruder_stack.getId() + "_user") + user_container_name = user_container_id + user_container = InstanceContainer(user_container_id) + user_container.setName(user_container_name) + user_container.addMetaDataEntry("type", "user") + user_container.addMetaDataEntry("machine", extruder_stack.getId()) + user_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) + user_container.setDefinition(machine.definition.getId()) + + if machine.userChanges: + # for the newly created extruder stack, we need to move all "per-extruder" settings to the user changes + # container to the extruder stack. + for user_setting_key in machine.userChanges.getAllKeys(): + settable_per_extruder = machine.getProperty(user_setting_key, "settable_per_extruder") + if settable_per_extruder: + setting_value = machine.getProperty(user_setting_key, "value") + + setting_definition = machine.getSettingDefinition(user_setting_key) + new_instance = SettingInstance(setting_definition, definition_changes) + new_instance.setProperty("value", setting_value) + new_instance.resetState() # Ensure that the state is not seen as a user state. + user_container.addInstance(new_instance) + user_container.setDirty(True) + + machine.userChanges.removeInstance(user_setting_key, postpone_emit = True) + + self.addContainer(user_container) + extruder_stack.setUserChanges(user_container) + + variant_id = "default" + if machine.variant.getId() not in ("empty", "empty_variant"): + variant_id = machine.variant.getId() + else: + variant_id = "empty_variant" + extruder_stack.setVariantById(variant_id) + + material_id = "default" + if machine.material.getId() not in ("empty", "empty_material"): + material_id = machine.material.getId() + else: + material_id = "empty_material" + extruder_stack.setMaterialById(material_id) + + quality_id = "default" + if machine.quality.getId() not in ("empty", "empty_quality"): + quality_id = machine.quality.getId() + else: + quality_id = "empty_quality" + extruder_stack.setQualityById(quality_id) + + if machine.qualityChanges.getId() not in ("empty", "empty_quality_changes"): + extruder_quality_changes_container = self.findInstanceContainers(name = machine.qualityChanges.getName(), extruder = extruder_id) + if extruder_quality_changes_container: + extruder_quality_changes_container = extruder_quality_changes_container[0] + quality_changes_id = extruder_quality_changes_container.getId() + extruder_stack.setQualityChangesById(quality_changes_id) + else: + # Some extruder quality_changes containers can be created at runtime as files in the qualities + # folder. Those files won't be loaded in the registry immediately. So we also need to search + # the folder to see if the quality_changes exists. + extruder_quality_changes_container = self._findQualityChangesContainerInCuraFolder(machine.qualityChanges.getName()) + if extruder_quality_changes_container: + quality_changes_id = extruder_quality_changes_container.getId() + extruder_stack.setQualityChangesById(quality_changes_id) + + if not extruder_quality_changes_container: + Logger.log("w", "Could not find quality_changes named [%s] for extruder [%s]", + machine.qualityChanges.getName(), extruder_stack.getId()) + else: + extruder_stack.setQualityChangesById("empty_quality_changes") + + self.addContainer(extruder_stack) + + # Set next stack at the end + extruder_stack.setNextStack(machine) + + return extruder_stack + + def _findQualityChangesContainerInCuraFolder(self, name): + quality_changes_dir = Resources.getPath(CuraApplication.ResourceTypes.QualityInstanceContainer) + + instance_container = None + + for item in os.listdir(quality_changes_dir): + file_path = os.path.join(quality_changes_dir, item) + if not os.path.isfile(file_path): + continue + + parser = configparser.ConfigParser() + try: + parser.read([file_path]) + except: + # skip, it is not a valid stack file + continue + + if not parser.has_option("general", "name"): + continue + + if parser["general"]["name"] == name: + # load the container + container_id = os.path.basename(file_path).replace(".inst.cfg", "") + + instance_container = InstanceContainer(container_id) + with open(file_path, "r") as f: + serialized = f.read() + instance_container.deserialize(serialized, file_path) + self.addContainer(instance_container) + break + + return instance_container + # Fix the extruders that were upgraded to ExtruderStack instances during addContainer. # The stacks are now responsible for setting the next stack on deserialize. However, # due to problems with loading order, some stacks may not have the proper next stack # set after upgrading, because the proper global stack was not yet loaded. This method # makes sure those extruders also get the right stack set. - def _fixupExtruders(self): - extruder_stacks = self.findContainers(ExtruderStack.ExtruderStack) + def _connectUpgradedExtruderStacksToMachines(self): + extruder_stacks = self.findContainers(container_type = ExtruderStack.ExtruderStack) for extruder_stack in extruder_stacks: if extruder_stack.getNextStack(): # Has the right next stack, so ignore it. continue - machines = ContainerRegistry.getInstance().findContainerStacks(id=extruder_stack.getMetaDataEntry("machine", "")) + machines = ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack.getMetaDataEntry("machine", "")) if machines: extruder_stack.setNextStack(machines[0]) else: diff --git a/cura/Settings/CuraContainerStack.py b/cura/Settings/CuraContainerStack.py index 2d3bf683f6..8e13b24358 100755 --- a/cura/Settings/CuraContainerStack.py +++ b/cura/Settings/CuraContainerStack.py @@ -14,7 +14,7 @@ from UM.Settings.ContainerStack import ContainerStack, InvalidContainerStackErro from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.DefinitionContainer import DefinitionContainer from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Settings.Interfaces import ContainerInterface +from UM.Settings.Interfaces import ContainerInterface, DefinitionContainerInterface from . import Exceptions @@ -41,9 +41,20 @@ class CuraContainerStack(ContainerStack): def __init__(self, container_id: str, *args, **kwargs): super().__init__(container_id, *args, **kwargs) - self._empty_instance_container = ContainerRegistry.getInstance().getEmptyInstanceContainer() + self._container_registry = ContainerRegistry.getInstance() + + self._empty_instance_container = self._container_registry.getEmptyInstanceContainer() + + self._empty_quality_changes = self._container_registry.findInstanceContainers(id = "empty_quality_changes")[0] + self._empty_quality = self._container_registry.findInstanceContainers(id = "empty_quality")[0] + self._empty_material = self._container_registry.findInstanceContainers(id = "empty_material")[0] + self._empty_variant = self._container_registry.findInstanceContainers(id = "empty_variant")[0] self._containers = [self._empty_instance_container for i in range(len(_ContainerIndexes.IndexTypeMap))] + self._containers[_ContainerIndexes.QualityChanges] = self._empty_quality_changes + self._containers[_ContainerIndexes.Quality] = self._empty_quality + self._containers[_ContainerIndexes.Material] = self._empty_material + self._containers[_ContainerIndexes.Variant] = self._empty_variant self.containersChanged.connect(self._onContainersChanged) @@ -110,7 +121,7 @@ class CuraContainerStack(ContainerStack): # # \throws Exceptions.InvalidContainerError Raised when no container could be found with the specified ID. def setQualityById(self, new_quality_id: str) -> None: - quality = self._empty_instance_container + quality = self._empty_quality if new_quality_id == "default": new_quality = self.findDefaultQuality() if new_quality: @@ -148,7 +159,7 @@ class CuraContainerStack(ContainerStack): # # \throws Exceptions.InvalidContainerError Raised when no container could be found with the specified ID. def setMaterialById(self, new_material_id: str) -> None: - material = self._empty_instance_container + material = self._empty_material if new_material_id == "default": new_material = self.findDefaultMaterial() if new_material: @@ -186,7 +197,7 @@ class CuraContainerStack(ContainerStack): # # \throws Exceptions.InvalidContainerError Raised when no container could be found with the specified ID. def setVariantById(self, new_variant_id: str) -> None: - variant = self._empty_instance_container + variant = self._empty_variant if new_variant_id == "default": new_variant = self.findDefaultVariant() if new_variant: @@ -235,7 +246,7 @@ class CuraContainerStack(ContainerStack): ## Set the definition container. # # \param new_quality_changes The new definition container. It is expected to have a "type" metadata entry with the value "quality_changes". - def setDefinition(self, new_definition: DefinitionContainer) -> None: + def setDefinition(self, new_definition: DefinitionContainerInterface) -> None: self.replaceContainer(_ContainerIndexes.Definition, new_definition) ## Set the definition container by an ID. @@ -348,8 +359,8 @@ class CuraContainerStack(ContainerStack): # # \throws InvalidContainerStackError Raised when no definition can be found for the stack. @override(ContainerStack) - def deserialize(self, contents: str) -> None: - super().deserialize(contents) + def deserialize(self, contents: str, file_name: Optional[str] = None) -> None: + super().deserialize(contents, file_name) new_containers = self._containers.copy() while len(new_containers) < len(_ContainerIndexes.IndexTypeMap): @@ -366,7 +377,7 @@ class CuraContainerStack(ContainerStack): if not container or not isinstance(container, DefinitionContainer): definition = self.findContainer(container_type = DefinitionContainer) if not definition: - raise InvalidContainerStackError("Stack {id} does not have a definition!".format(id = self._id)) + raise InvalidContainerStackError("Stack {id} does not have a definition!".format(id = self.getId())) new_containers[index] = definition continue @@ -396,7 +407,9 @@ class CuraContainerStack(ContainerStack): # \note This method assumes the stack has a valid machine definition. def findDefaultVariant(self) -> Optional[ContainerInterface]: definition = self._getMachineDefinition() - if not definition.getMetaDataEntry("has_variants"): + # has_variants can be overridden in other containers and stacks. + # In the case of UM2, it is overridden in the GlobalStack + if not self.getMetaDataEntry("has_variants"): # If the machine does not use variants, we should never set a variant. return None @@ -454,7 +467,7 @@ class CuraContainerStack(ContainerStack): else: search_criteria["definition"] = "fdmprinter" - if self.material != self._empty_instance_container: + if self.material != self._empty_material: search_criteria["name"] = self.material.name else: preferred_material = definition.getMetaDataEntry("preferred_material") @@ -474,11 +487,17 @@ class CuraContainerStack(ContainerStack): search_criteria.pop("name", None) materials = ContainerRegistry.getInstance().findInstanceContainers(**search_criteria) - if materials: - return materials[0] + if not materials: + Logger.log("w", "Could not find a valid material for stack {stack}", stack = self.id) + return None + + for material in materials: + # Prefer a read-only material + if ContainerRegistry.getInstance().isReadOnly(material.getId()): + return material + + return materials[0] - Logger.log("w", "Could not find a valid material for stack {stack}", stack = self.id) - return None ## Find the quality that should be used as "default" quality. # @@ -489,7 +508,7 @@ class CuraContainerStack(ContainerStack): def findDefaultQuality(self) -> Optional[ContainerInterface]: definition = self._getMachineDefinition() registry = ContainerRegistry.getInstance() - material_container = self.material if self.material != self._empty_instance_container else None + material_container = self.material if self.material.getId() not in (self._empty_material.getId(), self._empty_instance_container.getId()) else None search_criteria = {"type": "quality"} @@ -501,7 +520,7 @@ class CuraContainerStack(ContainerStack): else: search_criteria["definition"] = "fdmprinter" - if self.quality != self._empty_instance_container: + if self.quality != self._empty_quality: search_criteria["name"] = self.quality.name else: preferred_quality = definition.getMetaDataEntry("preferred_quality") @@ -533,7 +552,7 @@ class CuraContainerStack(ContainerStack): material_search_criteria = {"type": "material", "material": material_container.getMetaDataEntry("material"), "color_name": "Generic"} if definition.getMetaDataEntry("has_machine_quality"): if self.material != self._empty_instance_container: - material_search_criteria["definition"] = material_container.getDefinition().id + material_search_criteria["definition"] = material_container.getMetaDataEntry("definition") if definition.getMetaDataEntry("has_variants"): material_search_criteria["variant"] = material_container.getMetaDataEntry("variant") @@ -544,10 +563,10 @@ class CuraContainerStack(ContainerStack): material_search_criteria["variant"] = self.variant.id else: material_search_criteria["definition"] = "fdmprinter" - material_containers = registry.findInstanceContainers(**material_search_criteria) + material_containers = registry.findInstanceContainersMetadata(**material_search_criteria) # Try all materials to see if there is a quality profile available. for material_container in material_containers: - search_criteria["material"] = material_container.getId() + search_criteria["material"] = material_container["id"] containers = registry.findInstanceContainers(**search_criteria) if containers: diff --git a/cura/Settings/CuraStackBuilder.py b/cura/Settings/CuraStackBuilder.py index 09815da319..8d2d66ea87 100644 --- a/cura/Settings/CuraStackBuilder.py +++ b/cura/Settings/CuraStackBuilder.py @@ -3,7 +3,7 @@ from UM.Logger import Logger -from UM.Settings.DefinitionContainer import DefinitionContainer +from UM.Settings.Interfaces import DefinitionContainerInterface from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.ContainerRegistry import ContainerRegistry @@ -34,7 +34,7 @@ class CuraStackBuilder: # Make sure the new name does not collide with any definition or (quality) profile # createUniqueName() only looks at other stacks, but not at definitions or quality profiles # Note that we don't go for uniqueName() immediately because that function matches with ignore_case set to true - if registry.findContainers(id = generated_name): + if registry.findContainersMetadata(id = generated_name): generated_name = registry.uniqueName(generated_name) new_global_stack = cls.createGlobalStack( @@ -47,21 +47,40 @@ class CuraStackBuilder: new_global_stack.setName(generated_name) - for extruder_definition in registry.findDefinitionContainers(machine = machine_definition.id): - position = extruder_definition.getMetaDataEntry("position", None) - if not position: - Logger.log("w", "Extruder definition %s specifies no position metadata entry.", extruder_definition.id) + extruder_definition = registry.findDefinitionContainers(machine = machine_definition.getId()) - new_extruder_id = registry.uniqueName(extruder_definition.id) + if not extruder_definition: + # create extruder stack for single extrusion machines that have no separate extruder definition files + extruder_definition = registry.findDefinitionContainers(id = "fdmextruder")[0] + new_extruder_id = registry.uniqueName(machine_definition.getName() + " " + extruder_definition.id) new_extruder = cls.createExtruderStack( new_extruder_id, definition = extruder_definition, - machine_definition = machine_definition, + machine_definition_id = machine_definition.getId(), quality = "default", material = "default", variant = "default", next_stack = new_global_stack ) + new_global_stack.addExtruder(new_extruder) + else: + # create extruder stack for each found extruder definition + for extruder_definition in registry.findDefinitionContainers(machine = machine_definition.id): + position = extruder_definition.getMetaDataEntry("position", None) + if not position: + Logger.log("w", "Extruder definition %s specifies no position metadata entry.", extruder_definition.id) + + new_extruder_id = registry.uniqueName(extruder_definition.id) + new_extruder = cls.createExtruderStack( + new_extruder_id, + definition = extruder_definition, + machine_definition_id = machine_definition.getId(), + quality = "default", + material = "default", + variant = "default", + next_stack = new_global_stack + ) + new_global_stack.addExtruder(new_extruder) return new_global_stack @@ -69,17 +88,20 @@ class CuraStackBuilder: # # \param new_stack_id The ID of the new stack. # \param definition The definition to base the new stack on. - # \param machine_definition The machine definition to use for the user container. + # \param machine_definition_id The ID of the machine definition to use for + # the user container. # \param kwargs You can add keyword arguments to specify IDs of containers to use for a specific type, for example "variant": "0.4mm" # # \return A new Global stack instance with the specified parameters. @classmethod - def createExtruderStack(cls, new_stack_id: str, definition: DefinitionContainer, machine_definition: DefinitionContainer, **kwargs) -> ExtruderStack: + def createExtruderStack(cls, new_stack_id: str, definition: DefinitionContainerInterface, machine_definition_id: str, **kwargs) -> ExtruderStack: stack = ExtruderStack(new_stack_id) stack.setName(definition.getName()) stack.setDefinition(definition) stack.addMetaDataEntry("position", definition.getMetaDataEntry("position")) - if "next_stack" in kwargs: #Add stacks before containers are added, since they may trigger a setting update. + + if "next_stack" in kwargs: + # Add stacks before containers are added, since they may trigger a setting update. stack.setNextStack(kwargs["next_stack"]) user_container = InstanceContainer(new_stack_id + "_user") @@ -87,7 +109,7 @@ class CuraStackBuilder: user_container.addMetaDataEntry("extruder", new_stack_id) from cura.CuraApplication import CuraApplication user_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) - user_container.setDefinition(machine_definition) + user_container.setDefinition(machine_definition_id) stack.setUserChanges(user_container) @@ -127,7 +149,7 @@ class CuraStackBuilder: # # \return A new Global stack instance with the specified parameters. @classmethod - def createGlobalStack(cls, new_stack_id: str, definition: DefinitionContainer, **kwargs) -> GlobalStack: + def createGlobalStack(cls, new_stack_id: str, definition: DefinitionContainerInterface, **kwargs) -> GlobalStack: stack = GlobalStack(new_stack_id) stack.setDefinition(definition) @@ -136,7 +158,7 @@ class CuraStackBuilder: user_container.addMetaDataEntry("machine", new_stack_id) from cura.CuraApplication import CuraApplication user_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) - user_container.setDefinition(definition) + user_container.setDefinition(definition.getId()) stack.setUserChanges(user_container) @@ -172,8 +194,7 @@ class CuraStackBuilder: unique_container_name = ContainerRegistry.getInstance().uniqueName(container_name) definition_changes_container = InstanceContainer(unique_container_name) - definition = container_stack.getBottom() - definition_changes_container.setDefinition(definition) + definition_changes_container.setDefinition(container_stack.getBottom().getId()) definition_changes_container.addMetaDataEntry("type", "definition_changes") definition_changes_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index c8daca7f92..32e3867300 100755 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -1,21 +1,18 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, QVariant #For communicating data and events to Qt. +from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, QVariant # For communicating data and events to Qt. from UM.FlameProfiler import pyqtSlot -from UM.Application import Application #To get the global container stack to find the current machine. +from UM.Application import Application # To get the global container stack to find the current machine. from UM.Logger import Logger -from UM.Decorators import deprecated from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Scene.SceneNode import SceneNode from UM.Scene.Selection import Selection from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator -from UM.Settings.ContainerRegistry import ContainerRegistry #Finding containers by ID. -from UM.Settings.InstanceContainer import InstanceContainer +from UM.Settings.ContainerRegistry import ContainerRegistry # Finding containers by ID. from UM.Settings.SettingFunction import SettingFunction from UM.Settings.ContainerStack import ContainerStack -from UM.Settings.Interfaces import DefinitionContainerInterface from UM.Settings.PropertyEvaluationContext import PropertyEvaluationContext from typing import Optional, List, TYPE_CHECKING, Union @@ -28,6 +25,20 @@ if TYPE_CHECKING: # # This keeps a list of extruder stacks for each machine. class ExtruderManager(QObject): + + ## Registers listeners and such to listen to changes to the extruders. + def __init__(self, parent = None): + super().__init__(parent) + + self._extruder_trains = {} # Per machine, a dictionary of extruder container stack IDs. Only for separately defined extruders. + self._active_extruder_index = -1 # Indicates the index of the active extruder stack. -1 means no active extruder stack + self._selected_object_extruders = [] + self._global_container_stack_definition_id = None + self._addCurrentMachineExtruders() + + Application.getInstance().globalContainerStackChanged.connect(self.__globalContainerStackChanged) + Selection.selectionChanged.connect(self.resetSelectedObjectExtruders) + ## Signal to notify other components when the list of extruders for a machine definition changes. extrudersChanged = pyqtSignal(QVariant) @@ -38,18 +49,6 @@ class ExtruderManager(QObject): ## Notify when the user switches the currently active extruder. activeExtruderChanged = pyqtSignal() - ## Registers listeners and such to listen to changes to the extruders. - def __init__(self, parent = None): - super().__init__(parent) - self._extruder_trains = { } #Per machine, a dictionary of extruder container stack IDs. Only for separately defined extruders. - self._active_extruder_index = -1 # Indicates the index of the active extruder stack. -1 means no active extruder stack - self._selected_object_extruders = [] - Application.getInstance().globalContainerStackChanged.connect(self.__globalContainerStackChanged) - self._global_container_stack_definition_id = None - self._addCurrentMachineExtruders() - - Selection.selectionChanged.connect(self.resetSelectedObjectExtruders) - ## Gets the unique identifier of the currently active extruder stack. # # The currently active extruder stack is the stack that is currently being @@ -59,10 +58,10 @@ class ExtruderManager(QObject): @pyqtProperty(str, notify = activeExtruderChanged) def activeExtruderStackId(self) -> Optional[str]: if not Application.getInstance().getGlobalContainerStack(): - return None # No active machine, so no active extruder. + return None # No active machine, so no active extruder. try: return self._extruder_trains[Application.getInstance().getGlobalContainerStack().getId()][str(self._active_extruder_index)].getId() - except KeyError: # Extruder index could be -1 if the global tab is selected, or the entry doesn't exist if the machine definition is wrong. + except KeyError: # Extruder index could be -1 if the global tab is selected, or the entry doesn't exist if the machine definition is wrong. return None ## Return extruder count according to extruder trains. @@ -76,23 +75,23 @@ class ExtruderManager(QObject): return 0 ## Gets a dict with the extruder stack ids with the extruder number as the key. - # The key "-1" indicates the global stack id. - # @pyqtProperty("QVariantMap", notify = extrudersChanged) def extruderIds(self): extruder_stack_ids = {} + global_stack_id = Application.getInstance().getGlobalContainerStack().getId() - extruder_stack_ids["-1"] = global_stack_id + if global_stack_id in self._extruder_trains: for position in self._extruder_trains[global_stack_id]: extruder_stack_ids[position] = self._extruder_trains[global_stack_id][position].getId() + return extruder_stack_ids @pyqtSlot(str, result = str) - def getQualityChangesIdByExtruderStackId(self, id: str) -> str: + def getQualityChangesIdByExtruderStackId(self, extruder_stack_id: str) -> str: for position in self._extruder_trains[Application.getInstance().getGlobalContainerStack().getId()]: extruder = self._extruder_trains[Application.getInstance().getGlobalContainerStack().getId()][position] - if extruder.getId() == id: + if extruder.getId() == extruder_stack_id: return extruder.qualityChanges.getId() ## The instance of the singleton pattern. @@ -100,6 +99,10 @@ class ExtruderManager(QObject): # It's None if the extruder manager hasn't been created yet. __instance = None + @staticmethod + def createExtruderManager(): + return ExtruderManager().getInstance() + ## Gets an instance of the extruder manager, or creates one if no instance # exists yet. # @@ -185,6 +188,7 @@ class ExtruderManager(QObject): if global_container_stack.getId() in self._extruder_trains: if str(self._active_extruder_index) in self._extruder_trains[global_container_stack.getId()]: return self._extruder_trains[global_container_stack.getId()][str(self._active_extruder_index)] + return None ## Get an extruder stack by index @@ -203,40 +207,6 @@ class ExtruderManager(QObject): result.append(self.getExtruderStack(i)) return result - ## Adds all extruders of a specific machine definition to the extruder - # manager. - # - # \param machine_definition The machine definition to add the extruders for. - # \param machine_id The machine_id to add the extruders for. - @deprecated("Use CuraStackBuilder", "2.6") - def addMachineExtruders(self, machine_definition: DefinitionContainerInterface, machine_id: str) -> None: - changed = False - machine_definition_id = machine_definition.getId() - if machine_id not in self._extruder_trains: - self._extruder_trains[machine_id] = { } - changed = True - container_registry = ContainerRegistry.getInstance() - if container_registry: - # Add the extruder trains that don't exist yet. - for extruder_definition in container_registry.findDefinitionContainers(machine = machine_definition_id): - position = extruder_definition.getMetaDataEntry("position", None) - if not position: - Logger.log("w", "Extruder definition %s specifies no position metadata entry.", extruder_definition.getId()) - if not container_registry.findContainerStacks(machine = machine_id, position = position): # Doesn't exist yet. - self.createExtruderTrain(extruder_definition, machine_definition, position, machine_id) - changed = True - - # Gets the extruder trains that we just created as well as any that still existed. - extruder_trains = container_registry.findContainerStacks(type = "extruder_train", machine = machine_id) - for extruder_train in extruder_trains: - self._extruder_trains[machine_id][extruder_train.getMetaDataEntry("position")] = extruder_train - - # regardless of what the next stack is, we have to set it again, because of signal routing. - extruder_train.setNextStack(Application.getInstance().getGlobalContainerStack()) - changed = True - if changed: - self.extrudersChanged.emit(machine_id) - def registerExtruder(self, extruder_train, machine_id): changed = False @@ -256,138 +226,6 @@ class ExtruderManager(QObject): if changed: self.extrudersChanged.emit(machine_id) - ## Creates a container stack for an extruder train. - # - # The container stack has an extruder definition at the bottom, which is - # linked to a machine definition. Then it has a variant profile, a material - # profile, a quality profile and a user profile, in that order. - # - # The resulting container stack is added to the registry. - # - # \param extruder_definition The extruder to create the extruder train for. - # \param machine_definition The machine that the extruder train belongs to. - # \param position The position of this extruder train in the extruder slots of the machine. - # \param machine_id The id of the "global" stack this extruder is linked to. - @deprecated("Use CuraStackBuilder::createExtruderStack", "2.6") - def createExtruderTrain(self, extruder_definition: DefinitionContainerInterface, machine_definition: DefinitionContainerInterface, - position, machine_id: str) -> None: - # Cache some things. - container_registry = ContainerRegistry.getInstance() - machine_definition_id = Application.getInstance().getMachineManager().getQualityDefinitionId(machine_definition) - - # Create a container stack for this extruder. - extruder_stack_id = container_registry.uniqueName(extruder_definition.getId()) - container_stack = ContainerStack(extruder_stack_id) - container_stack.setName(extruder_definition.getName()) # Take over the display name to display the stack with. - container_stack.addMetaDataEntry("type", "extruder_train") - container_stack.addMetaDataEntry("machine", machine_id) - container_stack.addMetaDataEntry("position", position) - container_stack.addContainer(extruder_definition) - - # Find the variant to use for this extruder. - variant = container_registry.findInstanceContainers(id = "empty_variant")[0] - if machine_definition.getMetaDataEntry("has_variants"): - # First add any variant. Later, overwrite with preference if the preference is valid. - variants = container_registry.findInstanceContainers(definition = machine_definition_id, type = "variant") - if len(variants) >= 1: - variant = variants[0] - preferred_variant_id = machine_definition.getMetaDataEntry("preferred_variant") - if preferred_variant_id: - preferred_variants = container_registry.findInstanceContainers(id = preferred_variant_id, definition = machine_definition_id, type = "variant") - if len(preferred_variants) >= 1: - variant = preferred_variants[0] - else: - Logger.log("w", "The preferred variant \"%s\" of machine %s doesn't exist or is not a variant profile.", preferred_variant_id, machine_id) - # And leave it at the default variant. - container_stack.addContainer(variant) - - # Find a material to use for this variant. - material = container_registry.findInstanceContainers(id = "empty_material")[0] - if machine_definition.getMetaDataEntry("has_materials"): - # First add any material. Later, overwrite with preference if the preference is valid. - machine_has_variant_materials = machine_definition.getMetaDataEntry("has_variant_materials", default = False) - if machine_has_variant_materials or machine_has_variant_materials == "True": - materials = container_registry.findInstanceContainers(type = "material", definition = machine_definition_id, variant = variant.getId()) - else: - materials = container_registry.findInstanceContainers(type = "material", definition = machine_definition_id) - if len(materials) >= 1: - material = materials[0] - preferred_material_id = machine_definition.getMetaDataEntry("preferred_material") - if preferred_material_id: - global_stack = ContainerRegistry.getInstance().findContainerStacks(id = machine_id) - if global_stack: - approximate_material_diameter = str(round(global_stack[0].getProperty("material_diameter", "value"))) - else: - approximate_material_diameter = str(round(machine_definition.getProperty("material_diameter", "value"))) - - search_criteria = { "type": "material", "id": preferred_material_id, "approximate_diameter": approximate_material_diameter} - if machine_definition.getMetaDataEntry("has_machine_materials"): - search_criteria["definition"] = machine_definition_id - - if machine_definition.getMetaDataEntry("has_variants") and variant: - search_criteria["variant"] = variant.id - else: - search_criteria["definition"] = "fdmprinter" - - preferred_materials = container_registry.findInstanceContainers(**search_criteria) - if len(preferred_materials) >= 1: - # In some cases we get multiple materials. In that case, prefer materials that are marked as read only. - read_only_preferred_materials = [preferred_material for preferred_material in preferred_materials if preferred_material.isReadOnly()] - if len(read_only_preferred_materials) >= 1: - material = read_only_preferred_materials[0] - else: - material = preferred_materials[0] - else: - Logger.log("w", "The preferred material \"%s\" of machine %s doesn't exist or is not a material profile.", preferred_material_id, machine_id) - # And leave it at the default material. - container_stack.addContainer(material) - - # Find a quality to use for this extruder. - quality = container_registry.getEmptyInstanceContainer() - - search_criteria = { "type": "quality" } - if machine_definition.getMetaDataEntry("has_machine_quality"): - search_criteria["definition"] = machine_definition_id - if machine_definition.getMetaDataEntry("has_materials") and material: - search_criteria["material"] = material.id - else: - search_criteria["definition"] = "fdmprinter" - - preferred_quality = machine_definition.getMetaDataEntry("preferred_quality") - if preferred_quality: - search_criteria["id"] = preferred_quality - - containers = ContainerRegistry.getInstance().findInstanceContainers(**search_criteria) - if not containers and preferred_quality: - Logger.log("w", "The preferred quality \"%s\" of machine %s doesn't exist or is not a quality profile.", preferred_quality, machine_id) - search_criteria.pop("id", None) - containers = ContainerRegistry.getInstance().findInstanceContainers(**search_criteria) - if containers: - quality = containers[0] - - container_stack.addContainer(quality) - - empty_quality_changes = container_registry.findInstanceContainers(id = "empty_quality_changes")[0] - container_stack.addContainer(empty_quality_changes) - - user_profile = container_registry.findInstanceContainers(type = "user", extruder = extruder_stack_id) - if user_profile: # There was already a user profile, loaded from settings. - user_profile = user_profile[0] - else: - user_profile = InstanceContainer(extruder_stack_id + "_current_settings") # Add an empty user profile. - user_profile.addMetaDataEntry("type", "user") - user_profile.addMetaDataEntry("extruder", extruder_stack_id) - from cura.CuraApplication import CuraApplication - user_profile.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) - user_profile.setDefinition(machine_definition) - container_registry.addContainer(user_profile) - container_stack.addContainer(user_profile) - - # regardless of what the next stack is, we have to set it again, because of signal routing. - container_stack.setNextStack(Application.getInstance().getGlobalContainerStack()) - - container_registry.addContainer(container_stack) - def getAllExtruderValues(self, setting_key): return self.getAllExtruderSettings(setting_key, "value") @@ -396,16 +234,12 @@ class ExtruderManager(QObject): # \param setting_key \type{str} The setting to get the property of. # \param property \type{str} The property to get. # \return \type{List} the list of results - def getAllExtruderSettings(self, setting_key, property): - global_container_stack = Application.getInstance().getGlobalContainerStack() - if global_container_stack.getProperty("machine_extruder_count", "value") <= 1: - return [global_container_stack.getProperty(setting_key, property)] - + def getAllExtruderSettings(self, setting_key: str, prop: str): result = [] for index in self.extruderIds: extruder_stack_id = self.extruderIds[str(index)] - stack = ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0] - result.append(stack.getProperty(setting_key, property)) + extruder_stack = ContainerRegistry.getInstance().findContainerStacks(id = extruder_stack_id)[0] + result.append(extruder_stack.getProperty(setting_key, prop)) return result ## Gets the extruder stacks that are actually being used at the moment. @@ -422,20 +256,25 @@ class ExtruderManager(QObject): global_stack = Application.getInstance().getGlobalContainerStack() container_registry = ContainerRegistry.getInstance() - if global_stack.getProperty("machine_extruder_count", "value") <= 1: #For single extrusion. - return [global_stack] - used_extruder_stack_ids = set() - #Get the extruders of all meshes in the scene. + # Get the extruders of all meshes in the scene support_enabled = False support_bottom_enabled = False support_roof_enabled = False + scene_root = Application.getInstance().getController().getScene().getRoot() - meshes = [node for node in DepthFirstIterator(scene_root) if type(node) is SceneNode and node.isSelectable()] #Only use the nodes that will be printed. + + # If no extruders are registered in the extruder manager yet, return an empty array + if len(self.extruderIds) == 0: + return [] + + # Get the extruders of all printable meshes in the scene + meshes = [node for node in DepthFirstIterator(scene_root) if type(node) is SceneNode and node.isSelectable()] for mesh in meshes: extruder_stack_id = mesh.callDecoration("getActiveExtruder") - if not extruder_stack_id: #No per-object settings for this node. + if not extruder_stack_id: + # No per-object settings for this node extruder_stack_id = self.extruderIds["0"] used_extruder_stack_ids.add(extruder_stack_id) @@ -471,9 +310,10 @@ class ExtruderManager(QObject): if support_roof_enabled: used_extruder_stack_ids.add(self.extruderIds[str(global_stack.getProperty("support_roof_extruder_nr", "value"))]) - #The platform adhesion extruder. Not used if using none. + # The platform adhesion extruder. Not used if using none. if global_stack.getProperty("adhesion_type", "value") != "none": used_extruder_stack_ids.add(self.extruderIds[str(global_stack.getProperty("adhesion_extruder_nr", "value"))]) + try: return [container_registry.findContainerStacks(id = stack_id)[0] for stack_id in used_extruder_stack_ids] except IndexError: # One or more of the extruders was not found. @@ -516,18 +356,16 @@ class ExtruderManager(QObject): # \return \type{List[ContainerStack]} a list of def getActiveExtruderStacks(self) -> List["ExtruderStack"]: global_stack = Application.getInstance().getGlobalContainerStack() + if not global_stack: + return None result = [] - machine_extruder_count = global_stack.getProperty("machine_extruder_count", "value") - - # In case the printer is using one extruder, shouldn't exist active extruder stacks - if machine_extruder_count == 1: - return result - - if global_stack and global_stack.getId() in self._extruder_trains: + if 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]) + machine_extruder_count = global_stack.getProperty("machine_extruder_count", "value") + return result[:machine_extruder_count] def __globalContainerStackChanged(self) -> None: @@ -536,24 +374,39 @@ class ExtruderManager(QObject): self._global_container_stack_definition_id = global_container_stack.getBottom().getId() self.globalContainerStackDefinitionChanged.emit() - # If the global container changed, the number of extruders could be changed and so the active_extruder_index is updated - extruder_count = global_container_stack.getProperty("machine_extruder_count", "value") - if extruder_count > 1: - if self._active_extruder_index == -1: - self.setActiveExtruderIndex(0) - else: - if self._active_extruder_index != -1: - self.setActiveExtruderIndex(-1) - - self.activeExtruderChanged.emit() + # If the global container changed, the machine changed and might have extruders that were not registered yet + self._addCurrentMachineExtruders() self.resetSelectedObjectExtruders() ## Adds the extruders of the currently active machine. def _addCurrentMachineExtruders(self) -> None: global_stack = Application.getInstance().getGlobalContainerStack() - if global_stack and global_stack.getBottom(): - self.addMachineExtruders(global_stack.getBottom(), global_stack.getId()) + extruders_changed = False + + if global_stack: + container_registry = ContainerRegistry.getInstance() + global_stack_id = global_stack.getId() + + # Gets the extruder trains that we just created as well as any that still existed. + extruder_trains = container_registry.findContainerStacks(type = "extruder_train", machine = global_stack_id) + + # Make sure the extruder trains for the new machine can be placed in the set of sets + if global_stack_id not in self._extruder_trains: + self._extruder_trains[global_stack_id] = {} + extruders_changed = True + + # Register the extruder trains by position + for extruder_train in extruder_trains: + self._extruder_trains[global_stack_id][extruder_train.getMetaDataEntry("position")] = extruder_train + + # regardless of what the next stack is, we have to set it again, because of signal routing. ??? + extruder_train.setNextStack(global_stack) + extruders_changed = True + + if extruders_changed: + self.extrudersChanged.emit(global_stack_id) + self.setActiveExtruderIndex(0) ## Get all extruder values for a certain setting. # @@ -632,7 +485,7 @@ class ExtruderManager(QObject): # # This is exposed to qml for display purposes # - # \param key The key of the setting to retieve values for. + # \param key The key of the setting to retrieve values for. # # \return String representing the extruder values @pyqtSlot(str, result="QVariant") @@ -656,7 +509,8 @@ class ExtruderManager(QObject): value = extruder.getRawProperty(key, "value") if isinstance(value, SettingFunction): value = value(extruder) - else: #Just a value from global. + else: + # Just a value from global. value = Application.getInstance().getGlobalContainerStack().getProperty(key, "value") return value diff --git a/cura/Settings/ExtruderStack.py b/cura/Settings/ExtruderStack.py index d8ff6645a8..6dffeda6c2 100644 --- a/cura/Settings/ExtruderStack.py +++ b/cura/Settings/ExtruderStack.py @@ -8,6 +8,7 @@ from UM.MimeTypeDatabase import MimeType, MimeTypeDatabase from UM.Settings.ContainerStack import ContainerStack from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.Interfaces import ContainerInterface, PropertyEvaluationContext +from UM.Settings.SettingInstance import SettingInstance from . import Exceptions from .CuraContainerStack import CuraContainerStack @@ -16,6 +17,11 @@ from .ExtruderManager import ExtruderManager if TYPE_CHECKING: from cura.Settings.GlobalStack import GlobalStack + +_EXTRUDER_SPECIFIC_DEFINITION_CHANGES_SETTINGS = ["machine_nozzle_size", + "material_diameter"] + + ## Represents an Extruder and its related containers. # # @@ -39,6 +45,29 @@ class ExtruderStack(CuraContainerStack): # For backward compatibility: Register the extruder with the Extruder Manager ExtruderManager.getInstance().registerExtruder(self, stack.id) + # Now each machine will have at least one extruder stack. If this is the first extruder, the extruder-specific + # settings such as nozzle size and material diameter should be moved from the machine's definition_changes to + # the this extruder's definition_changes. + # + # We do this here because it is tooooo expansive to do it in the version upgrade: During the version upgrade, + # when we are upgrading a definition_changes container file, there is NO guarantee that other files such as + # machine an extruder stack files are upgraded before this, so we cannot read those files assuming they are in + # the latest format. + if self.getMetaDataEntry("position") == "0": + for key in _EXTRUDER_SPECIFIC_DEFINITION_CHANGES_SETTINGS: + setting_value = stack.definitionChanges.getProperty(key, "value") + if setting_value is None: + continue + + setting_definition = stack.getSettingDefinition(key) + new_instance = SettingInstance(setting_definition, self.definitionChanges) + new_instance.setProperty("value", setting_value) + new_instance.resetState() # Ensure that the state is not seen as a user state. + self.definitionChanges.addInstance(new_instance) + self.definitionChanges.setDirty(True) + + stack.definitionChanges.removeInstance(key, postpone_emit = True) + @override(ContainerStack) def getNextStack(self) -> Optional["GlobalStack"]: return super().getNextStack() @@ -92,8 +121,8 @@ class ExtruderStack(CuraContainerStack): return self.getNextStack()._getMachineDefinition() @override(CuraContainerStack) - def deserialize(self, contents: str) -> None: - super().deserialize(contents) + def deserialize(self, contents: str, file_name: Optional[str] = None) -> None: + super().deserialize(contents, file_name) stacks = ContainerRegistry.getInstance().findContainerStacks(id=self.getMetaDataEntry("machine", "")) if stacks: self.setNextStack(stacks[0]) @@ -115,6 +144,11 @@ class ExtruderStack(CuraContainerStack): if has_global_dependencies: self.getNextStack().propertiesChanged.emit(key, properties) + def findDefaultVariant(self): + # The default variant is defined in the machine stack and/or definition, so use the machine stack to find + # the default variant. + return self.getNextStack().findDefaultVariant() + extruder_stack_mime = MimeType( name = "application/x-cura-extruderstack", diff --git a/cura/Settings/ExtrudersModel.py b/cura/Settings/ExtrudersModel.py index b13e51723b..5139b9885d 100644 --- a/cura/Settings/ExtrudersModel.py +++ b/cura/Settings/ExtrudersModel.py @@ -8,8 +8,8 @@ from UM.i18n import i18nCatalog import UM.Qt.ListModel from UM.Application import Application import UM.FlameProfiler -from cura.Settings.ExtruderManager import ExtruderManager -from cura.Settings.ExtruderStack import ExtruderStack #To listen to changes on the extruders. + +from cura.Settings.ExtruderStack import ExtruderStack # To listen to changes on the extruders. catalog = i18nCatalog("cura") @@ -68,28 +68,16 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): self._update_extruder_timer.setSingleShot(True) self._update_extruder_timer.timeout.connect(self.__updateExtruders) - self._add_global = False self._simple_names = False - self._active_machine_extruders = [] # type: Iterable[ExtruderStack] + self._active_machine_extruders = [] # type: Iterable[ExtruderStack] self._add_optional_extruder = False - #Listen to changes. - Application.getInstance().globalContainerStackChanged.connect(self._extrudersChanged) #When the machine is swapped we must update the active machine extruders. - ExtruderManager.getInstance().extrudersChanged.connect(self._extrudersChanged) #When the extruders change we must link to the stack-changed signal of the new extruder. - self._extrudersChanged() #Also calls _updateExtruders. - - def setAddGlobal(self, add): - if add != self._add_global: - self._add_global = add - self._updateExtruders() - self.addGlobalChanged.emit() - - addGlobalChanged = pyqtSignal() - - @pyqtProperty(bool, fset = setAddGlobal, notify = addGlobalChanged) - def addGlobal(self): - return self._add_global + # Listen to changes + Application.getInstance().globalContainerStackChanged.connect(self._extrudersChanged) # When the machine is swapped we must update the active machine extruders + Application.getInstance().getExtruderManager().extrudersChanged.connect(self._extrudersChanged) # When the extruders change we must link to the stack-changed signal of the new extruder + Application.getInstance().getContainerRegistry().containerMetaDataChanged.connect(self._onExtruderStackContainersChanged) # When meta data from a material container changes we must update + self._extrudersChanged() # Also calls _updateExtruders addOptionalExtruderChanged = pyqtSignal() @@ -128,21 +116,26 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): def _extrudersChanged(self, machine_id = None): if machine_id is not None: if Application.getInstance().getGlobalContainerStack() is None: - return #No machine, don't need to update the current machine's extruders. + # No machine, don't need to update the current machine's extruders + return if machine_id != Application.getInstance().getGlobalContainerStack().getId(): - return #Not the current machine. - #Unlink from old extruders. + # Not the current machine + return + + # Unlink from old extruders for extruder in self._active_machine_extruders: extruder.containersChanged.disconnect(self._onExtruderStackContainersChanged) - #Link to new extruders. + # Link to new extruders self._active_machine_extruders = [] - extruder_manager = ExtruderManager.getInstance() + extruder_manager = Application.getInstance().getExtruderManager() for extruder in extruder_manager.getExtruderStacks(): + if extruder is None: #This extruder wasn't loaded yet. This happens asynchronously while this model is constructed from QML. + continue extruder.containersChanged.connect(self._onExtruderStackContainersChanged) self._active_machine_extruders.append(extruder) - self._updateExtruders() #Since the new extruders may have different properties, update our own model. + self._updateExtruders() # Since the new extruders may have different properties, update our own model. def _onExtruderStackContainersChanged(self, container): # Update when there is an empty container or material change @@ -150,7 +143,6 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): # The ExtrudersModel needs to be updated when the material-name or -color changes, because the user identifies extruders by material-name self._updateExtruders() - modelChanged = pyqtSignal() def _updateExtruders(self): @@ -161,59 +153,52 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): # This should be called whenever the list of extruders changes. @UM.FlameProfiler.profile def __updateExtruders(self): - changed = False + extruders_changed = False if self.rowCount() != 0: - changed = True + extruders_changed = True items = [] + global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: - if self._add_global: - material = global_container_stack.material - color = material.getMetaDataEntry("color_code", default = self.defaultColors[0]) if material else self.defaultColors[0] - item = { - "id": global_container_stack.getId(), - "name": catalog.i18nc("@menuitem", "Global"), - "color": color, - "index": -1, - "definition": "" - } - items.append(item) - changed = True + # get machine extruder count for verification machine_extruder_count = global_container_stack.getProperty("machine_extruder_count", "value") - manager = ExtruderManager.getInstance() - for extruder in manager.getMachineExtruders(global_container_stack.getId()): + + for extruder in Application.getInstance().getExtruderManager().getMachineExtruders(global_container_stack.getId()): position = extruder.getMetaDataEntry("position", default = "0") # Get the position try: position = int(position) - except ValueError: #Not a proper int. + except ValueError: + # Not a proper int. position = -1 if position >= machine_extruder_count: continue - extruder_name = extruder.getName() - material = extruder.material - variant = extruder.variant - default_color = self.defaultColors[position] if position >= 0 and position < len(self.defaultColors) else self.defaultColors[0] - color = material.getMetaDataEntry("color_code", default = default_color) if material else default_color - item = { #Construct an item with only the relevant information. + default_color = self.defaultColors[position] if 0 <= position < len(self.defaultColors) else self.defaultColors[0] + color = extruder.material.getMetaDataEntry("color_code", default = default_color) if extruder.material else default_color + + # construct an item with only the relevant information + item = { "id": extruder.getId(), - "name": extruder_name, + "name": extruder.getName(), "color": color, "index": position, "definition": extruder.getBottom().getId(), - "material": material.getName() if material else "", - "variant": variant.getName() if variant else "", + "material": extruder.material.getName() if extruder.material else "", + "variant": extruder.variant.getName() if extruder.variant else "", # e.g. print core } - items.append(item) - changed = True - if changed: + items.append(item) + extruders_changed = True + + if extruders_changed: + # sort by extruder index items.sort(key = lambda i: i["index"]) + # We need optional extruder to be last, so add it after we do sorting. - # This way we can simply intrepret the -1 of the index as the last item (which it now always is) + # This way we can simply interpret the -1 of the index as the last item (which it now always is) if self._add_optional_extruder: item = { "id": "", @@ -223,5 +208,6 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): "definition": "" } items.append(item) + self.setItems(items) self.modelChanged.emit() diff --git a/cura/Settings/GlobalStack.py b/cura/Settings/GlobalStack.py index 88218c2f1e..dae1c103b4 100755 --- a/cura/Settings/GlobalStack.py +++ b/cura/Settings/GlobalStack.py @@ -23,9 +23,9 @@ class GlobalStack(CuraContainerStack): def __init__(self, container_id: str, *args, **kwargs): super().__init__(container_id, *args, **kwargs) - self.addMetaDataEntry("type", "machine") # For backward compatibility + self.addMetaDataEntry("type", "machine") # For backward compatibility - self._extruders = {} + self._extruders = {} # type: Dict[str, "ExtruderStack"] # This property is used to track which settings we are calculating the "resolve" for # and if so, to bypass the resolve to prevent an infinite recursion that would occur @@ -43,15 +43,11 @@ class GlobalStack(CuraContainerStack): def getLoadingPriority(cls) -> int: return 2 - def getConfigurationTypeFromSerialized(self, serialized: str) -> Optional[str]: - configuration_type = None - try: - parser = self._readAndValidateSerialized(serialized) - configuration_type = parser["metadata"].get("type") - if configuration_type == "machine": - configuration_type = "machine_stack" - except Exception as e: - Logger.log("e", "Could not get configuration type: %s", e) + @classmethod + def getConfigurationTypeFromSerialized(cls, serialized: str) -> Optional[str]: + configuration_type = super().getConfigurationTypeFromSerialized(serialized) + if configuration_type == "machine": + return "machine_stack" return configuration_type ## Add an extruder to the list of extruders of this stack. @@ -61,20 +57,13 @@ class GlobalStack(CuraContainerStack): # \throws Exceptions.TooManyExtrudersError Raised when trying to add an extruder while we # already have the maximum number of extruders. def addExtruder(self, extruder: ContainerStack) -> None: - extruder_count = self.getProperty("machine_extruder_count", "value") - - if extruder_count <= 1: - Logger.log("i", "Not adding extruder[%s] to [%s] because it is a single-extrusion machine.", - extruder.id, self.id) - return - position = extruder.getMetaDataEntry("position") if position is None: Logger.log("w", "No position defined for extruder {extruder}, cannot add it to stack {stack}", extruder = extruder.id, stack = self.id) return if any(item.getId() == extruder.id for item in self._extruders.values()): - Logger.log("w", "Extruder [%s] has already been added to this stack [%s]", extruder.id, self._id) + Logger.log("w", "Extruder [%s] has already been added to this stack [%s]", extruder.id, self.getId()) return self._extruders[position] = extruder diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index fc5c415f87..05aed1f5e2 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -32,6 +32,7 @@ from .CuraStackBuilder import CuraStackBuilder from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") +from cura.Settings.ProfilesModel import ProfilesModel from typing import TYPE_CHECKING, Optional if TYPE_CHECKING: @@ -50,6 +51,7 @@ class MachineManager(QObject): # Used to store the new containers until after confirming the dialog self._new_variant_container = None self._new_material_container = None + self._new_quality_containers = [] self._error_check_timer = QTimer() self._error_check_timer.setInterval(250) @@ -59,9 +61,11 @@ class MachineManager(QObject): self._instance_container_timer = QTimer() self._instance_container_timer.setInterval(250) self._instance_container_timer.setSingleShot(True) - self._instance_container_timer.timeout.connect(self.__onInstanceContainersChanged) + self._instance_container_timer.timeout.connect(self.__emitChangedSignals) Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged) + Application.getInstance().getContainerRegistry().containerLoadComplete.connect(self._onInstanceContainersChanged) + self._connected_to_profiles_model = False ## When the global container is changed, active material probably needs to be updated. self.globalContainerChanged.connect(self.activeMaterialChanged) @@ -70,10 +74,10 @@ class MachineManager(QObject): self._stacks_have_errors = None - self._empty_variant_container = ContainerRegistry.getInstance().getEmptyInstanceContainer() - self._empty_material_container = ContainerRegistry.getInstance().getEmptyInstanceContainer() - self._empty_quality_container = ContainerRegistry.getInstance().getEmptyInstanceContainer() - self._empty_quality_changes_container = ContainerRegistry.getInstance().getEmptyInstanceContainer() + self._empty_variant_container = ContainerRegistry.getInstance().findContainers(id = "empty_variant")[0] + self._empty_material_container = ContainerRegistry.getInstance().findContainers(id = "empty_material")[0] + self._empty_quality_container = ContainerRegistry.getInstance().findContainers(id = "empty_quality")[0] + self._empty_quality_changes_container = ContainerRegistry.getInstance().findContainers(id = "empty_quality_changes")[0] self._onGlobalContainerChanged() @@ -103,12 +107,11 @@ class MachineManager(QObject): # There might already be some output devices by the time the signal is connected self._onOutputDevicesChanged() - if active_machine_id != "" and ContainerRegistry.getInstance().findContainerStacks(id = active_machine_id): + if active_machine_id != "" and ContainerRegistry.getInstance().findContainerStacksMetadata(id = active_machine_id): # An active machine was saved, so restore it. self.setActiveMachine(active_machine_id) - if self._global_container_stack and self._global_container_stack.getProperty("machine_extruder_count", "value") > 1: - # Make sure _active_container_stack is properly initiated - ExtruderManager.getInstance().setActiveExtruderIndex(0) + # Make sure _active_container_stack is properly initiated + ExtruderManager.getInstance().setActiveExtruderIndex(0) self._auto_materials_changed = {} self._auto_hotends_changed = {} @@ -117,6 +120,10 @@ class MachineManager(QObject): "The selected material is incompatible with the selected machine or configuration."), title = catalog.i18nc("@info:title", "Incompatible Material")) + containers = ContainerRegistry.getInstance().findInstanceContainers(id = self.activeMaterialId) + if containers: + containers[0].nameChanged.connect(self._onMaterialNameChanged) + 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() activeVariantChanged = pyqtSignal() @@ -147,19 +154,27 @@ class MachineManager(QObject): self.outputDevicesChanged.emit() + @property + def newVariant(self): + return self._new_variant_container + + @property + def newMaterial(self): + return self._new_material_container + @pyqtProperty("QVariantList", notify = outputDevicesChanged) def printerOutputDevices(self): return self._printer_output_devices @pyqtProperty(int, constant=True) def totalNumberOfSettings(self) -> int: - return len(ContainerRegistry.getInstance().findDefinitionContainers(id="fdmprinter")[0].getAllKeys()) + return len(ContainerRegistry.getInstance().findDefinitionContainers(id = "fdmprinter")[0].getAllKeys()) def _onHotendIdChanged(self, index: Union[str, int], hotend_id: str) -> None: if not self._global_container_stack: return - containers = ContainerRegistry.getInstance().findInstanceContainers(type="variant", definition=self._global_container_stack.getBottom().getId(), name=hotend_id) + containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(type = "variant", definition = self._global_container_stack.definition.getId(), name = hotend_id) if containers: # New material ID is known extruder_manager = ExtruderManager.getInstance() machine_id = self.activeMachineId @@ -171,10 +186,10 @@ class MachineManager(QObject): break if matching_extruder and matching_extruder.variant.getName() != hotend_id: # Save the material that needs to be changed. Multiple changes will be handled by the callback. - self._auto_hotends_changed[str(index)] = containers[0].getId() + self._auto_hotends_changed[str(index)] = containers[0]["id"] self._printer_output_devices[0].materialHotendChangedMessage(self._materialHotendChangedCallback) else: - Logger.log("w", "No variant found for printer definition %s with id %s" % (self._global_container_stack.getBottom().getId(), hotend_id)) + Logger.log("w", "No variant found for printer definition %s with id %s" % (self._global_container_stack.definition.getId(), hotend_id)) def _onMaterialIdChanged(self, index: Union[str, int], material_id: str): if not self._global_container_stack: @@ -184,7 +199,7 @@ class MachineManager(QObject): if self._global_container_stack.getMetaDataEntry("has_machine_materials", False): definition_id = self.activeQualityDefinitionId extruder_manager = ExtruderManager.getInstance() - containers = ContainerRegistry.getInstance().findInstanceContainers(type = "material", definition = definition_id, GUID = material_id) + containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(type = "material", definition = definition_id, GUID = material_id) if containers: # New material ID is known extruders = list(extruder_manager.getMachineExtruders(self.activeMachineId)) matching_extruder = None @@ -195,15 +210,15 @@ class MachineManager(QObject): if matching_extruder and matching_extruder.material.getMetaDataEntry("GUID") != material_id: # Save the material that needs to be changed. Multiple changes will be handled by the callback. - if self._global_container_stack.getBottom().getMetaDataEntry("has_variants") and matching_extruder.variant: - variant_id = self.getQualityVariantId(self._global_container_stack.getBottom(), matching_extruder.variant) + if self._global_container_stack.definition.getMetaDataEntry("has_variants") and matching_extruder.variant: + variant_id = self.getQualityVariantId(self._global_container_stack.definition, matching_extruder.variant) for container in containers: - if container.getMetaDataEntry("variant") == variant_id: - self._auto_materials_changed[str(index)] = container.getId() + if container.get("variant") == variant_id: + self._auto_materials_changed[str(index)] = container["id"] break else: # Just use the first result we found. - self._auto_materials_changed[str(index)] = containers[0].getId() + self._auto_materials_changed[str(index)] = containers[0]["id"] self._printer_output_devices[0].materialHotendChangedMessage(self._materialHotendChangedCallback) else: Logger.log("w", "No material definition found for printer definition %s and GUID %s" % (definition_id, material_id)) @@ -249,13 +264,13 @@ class MachineManager(QObject): if old_index is not None: extruder_manager.setActiveExtruderIndex(old_index) - self._auto_hotends_changed = {} #Processed all of them now. + self._auto_hotends_changed = {} # Processed all of them now. def _onGlobalContainerChanged(self): if self._global_container_stack: try: self._global_container_stack.nameChanged.disconnect(self._onMachineNameChanged) - except TypeError: #pyQtSignal gives a TypeError when disconnecting from something that was already disconnected. + except TypeError: # pyQtSignal gives a TypeError when disconnecting from something that was already disconnected. pass try: self._global_container_stack.containersChanged.disconnect(self._onInstanceContainersChanged) @@ -265,52 +280,38 @@ class MachineManager(QObject): self._global_container_stack.propertyChanged.disconnect(self._onPropertyChanged) except TypeError: pass - material = self._global_container_stack.material - material.nameChanged.disconnect(self._onMaterialNameChanged) - quality = self._global_container_stack.quality - quality.nameChanged.disconnect(self._onQualityNameChanged) - - if self._global_container_stack.getProperty("machine_extruder_count", "value") > 1: - for extruder_stack in ExtruderManager.getInstance().getActiveExtruderStacks(): - extruder_stack.propertyChanged.disconnect(self._onPropertyChanged) - extruder_stack.containersChanged.disconnect(self._onInstanceContainersChanged) + for extruder_stack in ExtruderManager.getInstance().getActiveExtruderStacks(): + extruder_stack.propertyChanged.disconnect(self._onPropertyChanged) + extruder_stack.containersChanged.disconnect(self._onInstanceContainersChanged) + # update the local global container stack reference self._global_container_stack = Application.getInstance().getGlobalContainerStack() self.globalContainerChanged.emit() + # after switching the global stack we reconnect all the signals and set the variant and material references if self._global_container_stack: Preferences.getInstance().setValue("cura/active_machine", self._global_container_stack.getId()) + self._global_container_stack.nameChanged.connect(self._onMachineNameChanged) self._global_container_stack.containersChanged.connect(self._onInstanceContainersChanged) self._global_container_stack.propertyChanged.connect(self._onPropertyChanged) - if self._global_container_stack.getProperty("machine_extruder_count", "value") > 1: - # For multi-extrusion machines, we do not want variant or material profiles in the stack, - # because these are extruder specific and may cause wrong values to be used for extruders - # that did not specify a value in the extruder. - global_variant = self._global_container_stack.variant - if global_variant != self._empty_variant_container: - self._global_container_stack.setVariant(self._empty_variant_container) + # set the global variant to empty as we now use the extruder stack at all times - CURA-4482 + global_variant = self._global_container_stack.variant + if global_variant != self._empty_variant_container: + self._global_container_stack.setVariant(self._empty_variant_container) - global_material = self._global_container_stack.material - if global_material != self._empty_material_container: - self._global_container_stack.setMaterial(self._empty_material_container) + # set the global material to empty as we now use the extruder stack at all times - CURA-4482 + global_material = self._global_container_stack.material + if global_material != self._empty_material_container: + self._global_container_stack.setMaterial(self._empty_material_container) - for extruder_stack in ExtruderManager.getInstance().getActiveExtruderStacks(): #Listen for changes on all extruder stacks. - extruder_stack.propertyChanged.connect(self._onPropertyChanged) - extruder_stack.containersChanged.connect(self._onInstanceContainersChanged) - - else: - material = self._global_container_stack.material - material.nameChanged.connect(self._onMaterialNameChanged) - - quality = self._global_container_stack.quality - quality.nameChanged.connect(self._onQualityNameChanged) - - self._active_container_stack = self._global_container_stack - self.activeStackChanged.emit() + # Listen for changes on all extruder stacks + for extruder_stack in ExtruderManager.getInstance().getActiveExtruderStacks(): + extruder_stack.propertyChanged.connect(self._onPropertyChanged) + extruder_stack.containersChanged.connect(self._onInstanceContainersChanged) self._error_check_timer.start() @@ -327,8 +328,6 @@ class MachineManager(QObject): old_active_container_stack = self._active_container_stack self._active_container_stack = ExtruderManager.getInstance().getActiveExtruderStack() - if not self._active_container_stack: - self._active_container_stack = self._global_container_stack self._error_check_timer.start() @@ -337,14 +336,24 @@ class MachineManager(QObject): # on _active_container_stack. If it changes, then the properties change. self.activeQualityChanged.emit() - def __onInstanceContainersChanged(self): + def __emitChangedSignals(self): self.activeQualityChanged.emit() self.activeVariantChanged.emit() self.activeMaterialChanged.emit() self._updateStacksHaveErrors() # Prevents unwanted re-slices after changing machine self._error_check_timer.start() + def _onProfilesModelChanged(self, *args): + self.__emitChangedSignals() + def _onInstanceContainersChanged(self, container): + # This should not trigger the ProfilesModel to be created, or there will be an infinite recursion + if not self._connected_to_profiles_model and ProfilesModel.hasInstance(): + # This triggers updating the qualityModel in SidebarSimple whenever ProfilesModel is updated + Logger.log("d", "Connecting profiles model...") + ProfilesModel.getInstance().itemsChanged.connect(self._onProfilesModelChanged) + self._connected_to_profiles_model = True + self._instance_container_timer.start() def _onPropertyChanged(self, key: str, property_name: str): @@ -360,11 +369,13 @@ class MachineManager(QObject): self.blurSettings.emit() # Ensure no-one has focus. self._cancelDelayedActiveContainerStackChanges() - containers = ContainerRegistry.getInstance().findContainerStacks(id = stack_id) + container_registry = ContainerRegistry.getInstance() + + containers = container_registry.findContainerStacks(id = stack_id) if containers: Application.getInstance().setGlobalContainerStack(containers[0]) - self.__onInstanceContainersChanged() + self.__emitChangedSignals() @pyqtSlot(str, str) def addMachine(self, name: str, definition_id: str) -> None: @@ -375,15 +386,6 @@ class MachineManager(QObject): else: Logger.log("w", "Failed creating a new machine!") - ## Create a name that is not empty and unique - # \param container_type \type{string} Type of the container (machine, quality, ...) - # \param current_name \type{} Current name of the container, which may be an acceptable option - # \param new_name \type{string} Base name, which may not be unique - # \param fallback_name \type{string} Name to use when (stripped) new_name is empty - # \return \type{string} Name that is unique for the specified type and name/id - 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) -> bool: if self._global_container_stack is None: #No active machine. return False @@ -515,6 +517,7 @@ class MachineManager(QObject): @pyqtProperty("QVariantList", notify=activeVariantChanged) def activeVariantNames(self) -> List[str]: result = [] + active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() if active_stacks is not None: for stack in active_stacks: @@ -527,6 +530,7 @@ class MachineManager(QObject): @pyqtProperty("QVariantList", notify = activeMaterialChanged) def activeMaterialNames(self) -> List[str]: result = [] + active_stacks = ExtruderManager.getInstance().getActiveGlobalAndExtruderStacks() if active_stacks is not None: for stack in active_stacks: @@ -547,6 +551,7 @@ class MachineManager(QObject): @pyqtProperty("QVariantMap", notify = activeVariantChanged) def allActiveVariantIds(self) -> Dict[str, str]: result = {} + active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() if active_stacks is not None: #If we have a global stack. for stack in active_stacks: @@ -565,10 +570,8 @@ class MachineManager(QObject): @pyqtProperty("QVariantMap", notify = activeMaterialChanged) def allActiveMaterialIds(self) -> Dict[str, str]: result = {} + active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() - - result[self._global_container_stack.getId()] = self._global_container_stack.material.getId() - if active_stacks is not None: # If we have extruder stacks for stack in active_stacks: material_container = stack.material @@ -637,12 +640,17 @@ class MachineManager(QObject): @pyqtProperty(str, notify=activeQualityChanged) def activeQualityId(self) -> str: if self._active_container_stack: - quality = self._active_container_stack.qualityChanges - if quality and not isinstance(quality, type(self._empty_quality_changes_container)): - return quality.getId() quality = self._active_container_stack.quality - if quality: - return quality.getId() + if isinstance(quality, type(self._empty_quality_container)): + return "" + quality_changes = self._active_container_stack.qualityChanges + if quality and quality_changes: + if isinstance(quality_changes, type(self._empty_quality_changes_container)): + # It's a built-in profile + return quality.getId() + else: + # Custom profile + return quality_changes.getId() return "" @pyqtProperty(str, notify=activeQualityChanged) @@ -707,31 +715,26 @@ class MachineManager(QObject): @pyqtProperty(str, notify = activeQualityChanged) def activeQualityChangesId(self) -> str: if self._active_container_stack: - changes = self._active_container_stack.qualityChanges - if changes and changes.getId() != "empty": - return changes.getId() + quality_changes = self._active_container_stack.qualityChanges + if quality_changes and not isinstance(quality_changes, type(self._empty_quality_changes_container)): + return quality_changes.getId() return "" ## Check if a container is read_only @pyqtSlot(str, result = bool) def isReadOnly(self, container_id: str) -> bool: - containers = ContainerRegistry.getInstance().findInstanceContainers(id = container_id) - if not containers or not self._active_container_stack: - return True - return containers[0].isReadOnly() + return ContainerRegistry.getInstance().isReadOnly(container_id) ## Copy the value of the setting of the current extruder to all other extruders as well as the global container. @pyqtSlot(str) def copyValueToExtruders(self, key: str): - if not self._active_container_stack or self._global_container_stack.getProperty("machine_extruder_count", "value") <= 1: - return - new_value = self._active_container_stack.getProperty(key, "value") - stacks = [stack for stack in ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId())] - stacks.append(self._global_container_stack) - for extruder_stack in stacks: + extruder_stacks = [stack for stack in ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId())] + + # check in which stack the value has to be replaced + for extruder_stack in extruder_stacks: if extruder_stack != self._active_container_stack and extruder_stack.getProperty(key, "value") != new_value: - extruder_stack.getTop().setProperty(key, "value", new_value) + extruder_stack.userChanges.setProperty(key, "value", new_value) # TODO: nested property access, should be improved ## Set the active material by switching out a container # Depending on from/to material+current variant, a quality profile is chosen and set. @@ -747,6 +750,9 @@ class MachineManager(QObject): old_material = self._active_container_stack.material old_quality = self._active_container_stack.quality + old_quality_type = None + if old_quality and old_quality.getId() != self._empty_quality_container.getId(): + old_quality_type = old_quality.getMetaDataEntry("quality_type") old_quality_changes = self._active_container_stack.qualityChanges if not old_material: Logger.log("w", "While trying to set the active material, no material was found to replace it.") @@ -777,29 +783,45 @@ class MachineManager(QObject): quality_type = old_quality_changes.getMetaDataEntry("quality_type") new_quality_id = old_quality_changes.getId() - # See if the requested quality type is available in the new situation. - machine_definition = self._active_container_stack.getBottom() - quality_manager = QualityManager.getInstance() - candidate_quality = None - if quality_type: - candidate_quality = quality_manager.findQualityByQualityType(quality_type, - quality_manager.getWholeMachineDefinition(machine_definition), - [material_container]) + global_stack = Application.getInstance().getGlobalContainerStack() + if global_stack: + quality_manager = QualityManager.getInstance() - if not candidate_quality or isinstance(candidate_quality, type(self._empty_quality_changes_container)): - Logger.log("d", "Attempting to find fallback quality") - # Fall back to a quality (which must be compatible with all other extruders) - new_qualities = quality_manager.findAllUsableQualitiesForMachineAndExtruders( - self._global_container_stack, ExtruderManager.getInstance().getExtruderStacks()) - if new_qualities: - new_quality_id = new_qualities[0].getId() # Just pick the first available one + candidate_quality = None + if quality_type: + candidate_quality = quality_manager.findQualityByQualityType(quality_type, + quality_manager.getWholeMachineDefinition(global_stack.definition), + [material_container.getMetaData()]) + + if not candidate_quality or candidate_quality.getId() == self._empty_quality_changes_container: + Logger.log("d", "Attempting to find fallback quality") + # Fall back to a quality (which must be compatible with all other extruders) + new_qualities = quality_manager.findAllUsableQualitiesForMachineAndExtruders( + self._global_container_stack, ExtruderManager.getInstance().getExtruderStacks()) + + quality_types = sorted([q.getMetaDataEntry("quality_type") for q in new_qualities], reverse = True) + quality_type_to_use = None + if quality_types: + # try to use the same quality as before, otherwise the first one in the quality_types + quality_type_to_use = quality_types[0] + if old_quality_type is not None and old_quality_type in quality_type_to_use: + quality_type_to_use = old_quality_type + + new_quality = None + for q in new_qualities: + if quality_type_to_use is not None and q.getMetaDataEntry("quality_type") == quality_type_to_use: + new_quality = q + break + + if new_quality is not None: + new_quality_id = new_quality.getId() # Just pick the first available one + else: + Logger.log("w", "No quality profile found that matches the current machine and extruders.") else: - Logger.log("w", "No quality profile found that matches the current machine and extruders.") - else: - if not old_quality_changes: - new_quality_id = candidate_quality.getId() + if not old_quality_changes: + new_quality_id = candidate_quality.getId() - self.setActiveQuality(new_quality_id) + self.setActiveQuality(new_quality_id) @pyqtSlot(str) def setActiveVariant(self, variant_id: str): @@ -817,7 +839,7 @@ class MachineManager(QObject): preferred_material_name = None if old_material: preferred_material_name = old_material.getName() - preferred_material_id = self._updateMaterialContainer(self._global_container_stack.getBottom(), self._global_container_stack, containers[0], preferred_material_name).id + preferred_material_id = self._updateMaterialContainer(self._global_container_stack.definition, self._global_container_stack, containers[0], preferred_material_name).id self.setActiveMaterial(preferred_material_id) else: Logger.log("w", "While trying to set the active variant, no variant was found to replace.") @@ -829,17 +851,15 @@ class MachineManager(QObject): with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): self.blurSettings.emit() - containers = ContainerRegistry.getInstance().findInstanceContainers(id = quality_id) + containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(id = quality_id) if not containers or not self._global_container_stack: return - Logger.log("d", "Attempting to change the active quality to %s", quality_id) - # Quality profile come in two flavours: type=quality and type=quality_changes # If we found a quality_changes profile then look up its parent quality profile. - container_type = containers[0].getMetaDataEntry("type") - quality_name = containers[0].getName() - quality_type = containers[0].getMetaDataEntry("quality_type") + container_type = containers[0].get("type") + quality_name = containers[0]["name"] + quality_type = containers[0].get("quality_type") # Get quality container and optionally the quality_changes container. if container_type == "quality": @@ -847,56 +867,75 @@ class MachineManager(QObject): elif container_type == "quality_changes": new_quality_settings_list = self._determineQualityAndQualityChangesForQualityChanges(quality_name) else: - Logger.log("e", "Tried to set quality to a container that is not of the right type") + Logger.log("e", "Tried to set quality to a container that is not of the right type: {container_id}".format(container_id = containers[0]["id"])) return # Check if it was at all possible to find new settings if new_quality_settings_list is None: return - name_changed_connect_stacks = [] # Connect these stacks to the name changed callback + # check if any of the stacks have a not supported profile + # if that is the case, all stacks should have a not supported state (otherwise it will show quality_type normal) + has_not_supported_quality = False + + # check all stacks for not supported + for setting_info in new_quality_settings_list: + if setting_info["quality"].getMetaDataEntry("quality_type") == "not_supported": + has_not_supported_quality = True + break + + # set all stacks to not supported if that's the case + if has_not_supported_quality: + for setting_info in new_quality_settings_list: + setting_info["quality"] = self._empty_quality_container + + self._new_quality_containers.clear() + + # store the upcoming quality profile changes per stack for later execution + # this prevents re-slicing before the user has made a choice in the discard or keep dialog + # (see _executeDelayedActiveContainerStackChanges) for setting_info in new_quality_settings_list: stack = setting_info["stack"] stack_quality = setting_info["quality"] stack_quality_changes = setting_info["quality_changes"] - name_changed_connect_stacks.append(stack_quality) - name_changed_connect_stacks.append(stack_quality_changes) - self._replaceQualityOrQualityChangesInStack(stack, stack_quality, postpone_emit=True) - self._replaceQualityOrQualityChangesInStack(stack, stack_quality_changes, postpone_emit=True) + self._new_quality_containers.append({ + "stack": stack, + "quality": stack_quality, + "quality_changes": stack_quality_changes + }) - # Connect to onQualityNameChanged - for stack in name_changed_connect_stacks: - stack.nameChanged.connect(self._onQualityNameChanged) - - has_user_interaction = False + # show the keep/discard dialog after the containers have been switched. Otherwise, the default values on + # the dialog will be the those before the switching. + self._executeDelayedActiveContainerStackChanges() if self.hasUserSettings and Preferences.getInstance().getValue("cura/active_mode") == 1: - # Show the keep/discard user settings dialog - has_user_interaction = Application.getInstance().discardOrKeepProfileChanges() - else: - # If the user doesn't have any of adjusted settings then slicing will be triggered by emit() - # Send emits that are postponed in replaceContainer. - # Here the stacks are finished replacing and every value can be resolved based on the current state. - for setting_info in new_quality_settings_list: - setting_info["stack"].sendPostponedEmits() - - if not has_user_interaction: - self._executeDelayedActiveContainerStackChanges() - self.activeQualityChanged.emit() + Application.getInstance().discardOrKeepProfileChanges() ## Used to update material and variant in the active container stack with a delay. # This delay prevents the stack from triggering a lot of signals (eventually resulting in slicing) # before the user decided to keep or discard any of their changes using the dialog. # The Application.onDiscardOrKeepProfileChangesClosed signal triggers this method. def _executeDelayedActiveContainerStackChanges(self): + if self._new_variant_container is not None: + self._active_container_stack.variant = self._new_variant_container + self._new_variant_container = None + if self._new_material_container is not None: self._active_container_stack.material = self._new_material_container self._new_material_container = None - if self._new_variant_container is not None: - self._active_container_stack.variant = self._new_variant_container - self._new_variant_container = None + # apply the new quality to all stacks + if self._new_quality_containers: + for new_quality in self._new_quality_containers: + self._replaceQualityOrQualityChangesInStack(new_quality["stack"], new_quality["quality"], postpone_emit = True) + self._replaceQualityOrQualityChangesInStack(new_quality["stack"], new_quality["quality_changes"], postpone_emit = True) + + for new_quality in self._new_quality_containers: + new_quality["stack"].nameChanged.connect(self._onQualityNameChanged) + new_quality["stack"].sendPostponedEmits() # Send the signals that were postponed in _replaceQualityOrQualityChangesInStack + + self._new_quality_containers.clear() ## Cancel set changes for material and variant in the active container stack. # Used for ignoring any changes when switching between printers (setActiveMachine) @@ -916,29 +955,46 @@ class MachineManager(QObject): global_container_stack = self._global_container_stack if not global_container_stack: return [] - global_machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.getBottom()) + global_machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.definition) extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() - if extruder_stacks: - stacks = extruder_stacks - else: - stacks = [global_container_stack] - for stack in stacks: - material = stack.material - quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material]) - if not quality: #No quality profile is found for this quality type. + # find qualities for extruders + for extruder_stack in extruder_stacks: + material_metadata = extruder_stack.material.getMetaData() + + # TODO: fix this + if self._new_material_container and extruder_stack.getId() == self._active_container_stack.getId(): + material_metadata = self._new_material_container.getMetaData() + + quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material_metadata]) + + if not quality: + # No quality profile is found for this quality type. quality = self._empty_quality_container - result.append({"stack": stack, "quality": quality, "quality_changes": empty_quality_changes}) - if extruder_stacks: - # Add an extra entry for the global stack. - global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [], global_quality = "True") + result.append({ + "stack": extruder_stack, + "quality": quality, + "quality_changes": empty_quality_changes + }) - if not global_quality: - global_quality = self._empty_quality_container + # also find a global quality for the machine + global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [], global_quality = "True") - result.append({"stack": global_container_stack, "quality": global_quality, "quality_changes": empty_quality_changes}) + # if there is not global quality but we're using a single extrusion machine, copy the quality of the first extruder - CURA-4482 + if not global_quality and len(extruder_stacks) == 1: + global_quality = result[0]["quality"] + + # if there is still no global quality, set it to empty (not supported) + if not global_quality: + global_quality = self._empty_quality_container + + result.append({ + "stack": global_container_stack, + "quality": global_quality, + "quality_changes": empty_quality_changes + }) return result @@ -951,10 +1007,8 @@ class MachineManager(QObject): quality_manager = QualityManager.getInstance() global_container_stack = self._global_container_stack - global_machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.getBottom()) - - quality_changes_profiles = quality_manager.findQualityChangesByName(quality_changes_name, - global_machine_definition) + global_machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.definition) + quality_changes_profiles = quality_manager.findQualityChangesByName(quality_changes_name, global_machine_definition) global_quality_changes = [qcp for qcp in quality_changes_profiles if qcp.getMetaDataEntry("extruder") is None] if global_quality_changes: @@ -962,26 +1016,19 @@ class MachineManager(QObject): else: Logger.log("e", "Could not find the global quality changes container with name %s", quality_changes_name) return None - material = global_container_stack.material # For the global stack, find a quality which matches the quality_type in # the quality changes profile and also satisfies any material constraints. quality_type = global_quality_changes.getMetaDataEntry("quality_type") - if global_container_stack.getProperty("machine_extruder_count", "value") > 1: - global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [], global_quality = True) - else: - global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material]) - if not global_quality: - global_quality = self._empty_quality_container - # Find the values for each extruder. extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() - for stack in extruder_stacks: - extruder_definition = quality_manager.getParentMachineDefinition(stack.getBottom()) + # append the extruder quality changes + for extruder_stack in extruder_stacks: + extruder_definition = quality_manager.getParentMachineDefinition(extruder_stack.definition) + + quality_changes_list = [qcp for qcp in quality_changes_profiles if qcp.getMetaDataEntry("extruder") == extruder_definition.getId()] - quality_changes_list = [qcp for qcp in quality_changes_profiles - if qcp.getMetaDataEntry("extruder") == extruder_definition.getId()] if quality_changes_list: quality_changes = quality_changes_list[0] else: @@ -989,20 +1036,39 @@ class MachineManager(QObject): if not quality_changes: quality_changes = self._empty_quality_changes_container - material = stack.material - quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material]) - if not quality: #No quality profile found for this quality type. + material_metadata = extruder_stack.material.getMetaData() + + if self._new_material_container and self._active_container_stack.getId() == extruder_stack.getId(): + material_metadata = self._new_material_container.getMetaData() + + quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material_metadata]) + + if not quality: + # No quality profile found for this quality type. quality = self._empty_quality_container - result.append({"stack": stack, "quality": quality, "quality_changes": quality_changes}) + result.append({ + "stack": extruder_stack, + "quality": quality, + "quality_changes": quality_changes + }) - if extruder_stacks: - global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, [material], global_quality = "True") - if not global_quality: - global_quality = self._empty_quality_container - result.append({"stack": global_container_stack, "quality": global_quality, "quality_changes": global_quality_changes}) - else: - result.append({"stack": global_container_stack, "quality": global_quality, "quality_changes": global_quality_changes}) + # append the global quality changes + global_quality = quality_manager.findQualityByQualityType(quality_type, global_machine_definition, global_quality = "True") + + # if there is not global quality but we're using a single extrusion machine, copy the quality of the first extruder - CURA-4482 + if not global_quality and len(extruder_stacks) == 1: + global_quality = result[0]["quality"] + + # if still no global quality changes are found we set it to empty (not supported) + if not global_quality: + global_quality = self._empty_quality_container + + result.append({ + "stack": global_container_stack, + "quality": global_quality, + "quality_changes": global_quality_changes + }) return result @@ -1042,18 +1108,14 @@ class MachineManager(QObject): @pyqtProperty(str, notify = globalContainerChanged) def activeDefinitionId(self) -> str: if self._global_container_stack: - definition = self._global_container_stack.getBottom() - if definition: - return definition.id + return self._global_container_stack.definition.id return "" @pyqtProperty(str, notify=globalContainerChanged) def activeDefinitionName(self) -> str: if self._global_container_stack: - definition = self._global_container_stack.getBottom() - if definition: - return definition.getName() + return self._global_container_stack.definition.getName() return "" @@ -1063,7 +1125,7 @@ class MachineManager(QObject): @pyqtProperty(str, notify = globalContainerChanged) def activeQualityDefinitionId(self) -> str: if self._global_container_stack: - return self.getQualityDefinitionId(self._global_container_stack.getBottom()) + return self.getQualityDefinitionId(self._global_container_stack.definition) return "" ## Get the Definition ID to use to select quality profiles for machines of the specified definition @@ -1081,7 +1143,7 @@ class MachineManager(QObject): if self._active_container_stack: variant = self._active_container_stack.variant if variant: - return self.getQualityVariantId(self._global_container_stack.getBottom(), variant) + return self.getQualityVariantId(self._global_container_stack.definition, variant) return "" ## Get the Variant ID to use to select quality profiles for variants of the specified definitions @@ -1105,16 +1167,17 @@ class MachineManager(QObject): def activeDefinitionVariantsName(self) -> str: fallback_title = catalog.i18nc("@label", "Nozzle") if self._global_container_stack: - return self._global_container_stack.getBottom().getMetaDataEntry("variants_name", fallback_title) + return self._global_container_stack.definition.getMetaDataEntry("variants_name", fallback_title) return fallback_title @pyqtSlot(str, str) def renameMachine(self, machine_id: str, new_name: str): - containers = ContainerRegistry.getInstance().findContainerStacks(id = machine_id) - if containers: - new_name = self._createUniqueName("machine", containers[0].getName(), new_name, containers[0].getBottom().getName()) - containers[0].setName(new_name) + container_registry = ContainerRegistry.getInstance() + machine_stack = container_registry.findContainerStacks(id = machine_id) + if machine_stack: + new_name = container_registry.createUniqueName("machine", machine_stack[0].getName(), new_name, machine_stack[0].definition.getName()) + machine_stack[0].setName(new_name) self.globalContainerChanged.emit() @pyqtSlot(str) @@ -1124,29 +1187,28 @@ class MachineManager(QObject): # activate a new machine before removing a machine because this is safer if activate_new_machine: - machine_stacks = ContainerRegistry.getInstance().findContainerStacks(type = "machine") - other_machine_stacks = [s for s in machine_stacks if s.getId() != machine_id] + machine_stacks = ContainerRegistry.getInstance().findContainerStacksMetadata(type = "machine") + other_machine_stacks = [s for s in machine_stacks if s["id"] != machine_id] if other_machine_stacks: - self.setActiveMachine(other_machine_stacks[0].getId()) + self.setActiveMachine(other_machine_stacks[0]["id"]) ExtruderManager.getInstance().removeMachineExtruders(machine_id) - containers = ContainerRegistry.getInstance().findInstanceContainers(type = "user", machine = machine_id) + containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(type = "user", machine = machine_id) for container in containers: - ContainerRegistry.getInstance().removeContainer(container.getId()) + ContainerRegistry.getInstance().removeContainer(container["id"]) ContainerRegistry.getInstance().removeContainer(machine_id) @pyqtProperty(bool, notify = globalContainerChanged) def hasMaterials(self) -> bool: if self._global_container_stack: - return bool(self._global_container_stack.getMetaDataEntry("has_materials", False)) + return Util.parseBool(self._global_container_stack.getMetaDataEntry("has_materials", False)) return False @pyqtProperty(bool, notify = globalContainerChanged) def hasVariants(self) -> bool: if self._global_container_stack: - return bool(self._global_container_stack.getMetaDataEntry("has_variants", False)) - + return Util.parseBool(self._global_container_stack.getMetaDataEntry("has_variants", False)) return False ## Property to indicate if a machine has "specialized" material profiles. @@ -1154,8 +1216,7 @@ class MachineManager(QObject): @pyqtProperty(bool, notify = globalContainerChanged) def filterMaterialsByMachine(self) -> bool: if self._global_container_stack: - return bool(self._global_container_stack.getMetaDataEntry("has_machine_materials", False)) - + return Util.parseBool(self._global_container_stack.getMetaDataEntry("has_machine_materials", False)) return False ## Property to indicate if a machine has "specialized" quality profiles. @@ -1163,7 +1224,7 @@ class MachineManager(QObject): @pyqtProperty(bool, notify = globalContainerChanged) def filterQualityByMachine(self) -> bool: if self._global_container_stack: - return bool(self._global_container_stack.getMetaDataEntry("has_machine_quality", False)) + return Util.parseBool(self._global_container_stack.getMetaDataEntry("has_machine_quality", False)) return False ## Get the Definition ID of a machine (specified by ID) @@ -1171,12 +1232,12 @@ class MachineManager(QObject): # \returns DefinitionID (string) if found, None otherwise @pyqtSlot(str, result = str) def getDefinitionByMachineId(self, machine_id: str) -> str: - containers = ContainerRegistry.getInstance().findContainerStacks(id=machine_id) + containers = ContainerRegistry.getInstance().findContainerStacks(id = machine_id) if containers: - return containers[0].getBottom().getId() + return containers[0].definition.getId() @staticmethod - def createMachineManager(engine=None, script_engine=None): + def createMachineManager(): return MachineManager() @deprecated("Use ExtruderStack.material = ... and it won't be necessary", "2.7") diff --git a/cura/Settings/MaterialsModel.py b/cura/Settings/MaterialsModel.py index bee9307b53..c4b0329336 100644 --- a/cura/Settings/MaterialsModel.py +++ b/cura/Settings/MaterialsModel.py @@ -1,6 +1,7 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Any, List from UM.Settings.ContainerRegistry import ContainerRegistry #To listen for changes to the materials. from UM.Settings.Models.InstanceContainersModel import InstanceContainersModel #We're extending this class. @@ -18,4 +19,19 @@ class MaterialsModel(InstanceContainersModel): # \param container The container whose metadata was changed. def _onContainerMetaDataChanged(self, container): if container.getMetaDataEntry("type") == "material": #Only need to update if a material was changed. - self._update() \ No newline at end of file + self._container_change_timer.start() + + def _onContainerChanged(self, container): + if container.getMetaDataEntry("type", "") == "material": + super()._onContainerChanged(container) + + ## Group brand together + def _sortKey(self, item) -> List[Any]: + result = [] + result.append(item["metadata"]["brand"]) + result.append(item["metadata"]["material"]) + result.append(item["metadata"]["name"]) + result.append(item["metadata"]["color_name"]) + result.append(item["metadata"]["id"]) + result.extend(super()._sortKey(item)) + return result diff --git a/cura/Settings/ProfilesModel.py b/cura/Settings/ProfilesModel.py index bf1993b184..3b43e2740a 100644 --- a/cura/Settings/ProfilesModel.py +++ b/cura/Settings/ProfilesModel.py @@ -12,6 +12,11 @@ from UM.Settings.Models.InstanceContainersModel import InstanceContainersModel from cura.QualityManager import QualityManager from cura.Settings.ExtruderManager import ExtruderManager +from typing import List, TYPE_CHECKING + +if TYPE_CHECKING: + from cura.Settings.ExtruderStack import ExtruderStack + ## QML Model for listing the current list of valid quality profiles. # @@ -27,7 +32,6 @@ class ProfilesModel(InstanceContainersModel): self.addRoleName(self.AvailableRole, "available") Application.getInstance().globalContainerStackChanged.connect(self._update) - Application.getInstance().getMachineManager().activeVariantChanged.connect(self._update) Application.getInstance().getMachineManager().activeStackChanged.connect(self._update) Application.getInstance().getMachineManager().activeMaterialChanged.connect(self._update) @@ -45,6 +49,10 @@ class ProfilesModel(InstanceContainersModel): ProfilesModel.__instance = cls() return ProfilesModel.__instance + @classmethod + def hasInstance(cls) -> bool: + return ProfilesModel.__instance is not None + __instance = None # type: "ProfilesModel" ## Fetch the list of containers to display. @@ -53,18 +61,12 @@ class ProfilesModel(InstanceContainersModel): def _fetchInstanceContainers(self): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack is None: - return [] - global_stack_definition = global_container_stack.getBottom() + return {}, {} + global_stack_definition = global_container_stack.definition # 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] + extruder_stacks = self._getOrderedExtruderStacksList() + materials = [extruder.material for extruder in 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. @@ -83,39 +85,26 @@ class ProfilesModel(InstanceContainersModel): if quality.getMetaDataEntry("quality_type") not in quality_type_set: result.append(quality) - return result + # if still profiles are found, add a single empty_quality ("Not supported") instance to the drop down list + if len(result) == 0: + # If not qualities are found we dynamically create a not supported container for this machine + material combination + not_supported_container = ContainerRegistry.getInstance().findContainers(id = "empty_quality")[0] + result.append(not_supported_container) + + return {item.getId():item for item in result}, {} #Only return true profiles for now, no metadata. The quality manager is not able to get only metadata yet. ## Re-computes the items in this model, and adds the layer height role. def _recomputeItems(self): - #Some globals that we can re-use. + # Some globals that we can re-use. global_container_stack = Application.getInstance().getGlobalContainerStack() 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 multiple_extrusion: - # Place the active extruder at the front of the list. - # This is a workaround checking if there is an active_extruder or not before moving it to the front of the list. - # Actually, when a printer has multiple extruders, should exist always an active_extruder. However, in some - # cases the active_extruder is still None. - if active_extruder in extruder_stacks: - extruder_stacks.remove(active_extruder) - new_extruder_stacks = [] - if active_extruder is not None: - new_extruder_stacks = [active_extruder] - extruder_stacks = new_extruder_stacks + extruder_stacks + extruder_stacks = self._getOrderedExtruderStacksList() + container_registry = ContainerRegistry.getInstance() # Get a list of usable/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() + qualities = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_container_stack, extruder_stacks) unit = global_container_stack.getBottom().getProperty("layer_height", "unit") if not unit: @@ -125,8 +114,12 @@ 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"]) - quality_type = profile[0].getMetaDataEntry("quality_type") if profile else "" + + profiles = container_registry.findContainersMetadata(id = item["id"]) + if not profiles or "quality_type" not in profiles[0]: + quality_type = "" + else: + quality_type = profiles[0]["quality_type"] if quality_type not in tmp_all_quality_items: tmp_all_quality_items[quality_type] = {"suitable_container": None, "all_containers": []} @@ -155,14 +148,24 @@ 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"]) + + # When for some reason there is no profile container in the registry if not profile: - self._setItemLayerHeight(item, "", unit) + self._setItemLayerHeight(item, "", "") item["available"] = False yield item continue profile = profile[0] + + # When there is a profile but it's an empty quality should. It's shown in the list (they are "Not Supported" profiles) + if profile.getId() == "empty_quality": + self._setItemLayerHeight(item, "", "") + item["available"] = True + yield item + continue + item["available"] = profile in qualities # Easy case: This profile defines its own layer height. @@ -171,6 +174,8 @@ class ProfilesModel(InstanceContainersModel): yield item continue + machine_manager = Application.getInstance().getMachineManager() + # 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: @@ -179,9 +184,11 @@ class ProfilesModel(InstanceContainersModel): if quality_result["stack"] is global_container_stack: quality = quality_result["quality"] break - else: #No global container stack in the results: + else: + # No global container stack in the results: if quality_results: - quality = quality_results[0]["quality"] #Take any of the extruders. + # Take any of the extruders. + quality = quality_results[0]["quality"] else: quality = None if quality and quality.hasProperty("layer_height", "value"): @@ -189,15 +196,29 @@ class ProfilesModel(InstanceContainersModel): yield item continue - #Quality has no value for layer height either. Get the layer height from somewhere lower in the stack. + # Quality has no value for layer height either. Get the layer height from somewhere lower in the stack. skip_until_container = global_container_stack.material - if not skip_until_container or skip_until_container == ContainerRegistry.getInstance().getEmptyInstanceContainer(): #No material in stack. + if not skip_until_container or skip_until_container == ContainerRegistry.getInstance().getEmptyInstanceContainer(): # No material in stack. skip_until_container = global_container_stack.variant - if not skip_until_container or skip_until_container == ContainerRegistry.getInstance().getEmptyInstanceContainer(): #No variant in stack. + if not skip_until_container or skip_until_container == ContainerRegistry.getInstance().getEmptyInstanceContainer(): # No variant in stack. skip_until_container = global_container_stack.getBottom() 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): + ## Get a list of extruder stacks with the active extruder at the front of the list. + @staticmethod + def _getOrderedExtruderStacksList() -> List["ExtruderStack"]: + extruder_manager = ExtruderManager.getInstance() + extruder_stacks = extruder_manager.getActiveExtruderStacks() + active_extruder = extruder_manager.getActiveExtruderStack() + + if active_extruder in extruder_stacks: + extruder_stacks.remove(active_extruder) + extruder_stacks = [active_extruder] + extruder_stacks + + return extruder_stacks + + @staticmethod + def _setItemLayerHeight(item, value, unit): item["layer_height"] = str(value) + unit item["layer_height_without_unit"] = str(value) diff --git a/cura/Settings/QualityAndUserProfilesModel.py b/cura/Settings/QualityAndUserProfilesModel.py index 9d7d913d5e..bc81df976b 100644 --- a/cura/Settings/QualityAndUserProfilesModel.py +++ b/cura/Settings/QualityAndUserProfilesModel.py @@ -18,51 +18,29 @@ class QualityAndUserProfilesModel(ProfilesModel): def _fetchInstanceContainers(self): global_container_stack = Application.getInstance().getGlobalContainerStack() if not global_container_stack: - return [] + return {}, {} # Fetch the list of quality changes. quality_manager = QualityManager.getInstance() - machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.getBottom()) + machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.definition) quality_changes_list = quality_manager.findAllQualityChangesForMachine(machine_definition) - # Detecting if the machine has multiple extrusion - 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 multiple_extrusion: - # Place the active extruder at the front of the list. - # This is a workaround checking if there is an active_extruder or not before moving it to the front of the list. - # Actually, when a printer has multiple extruders, should exist always an active_extruder. However, in some - # cases the active_extruder is still None. - if active_extruder in extruder_stacks: - extruder_stacks.remove(active_extruder) - new_extruder_stacks = [] - if active_extruder is not None: - new_extruder_stacks = [active_extruder] - else: - # if there is no active extruder, use the first one in the active extruder stacks - active_extruder = extruder_stacks[0] - extruder_stacks = new_extruder_stacks + extruder_stacks + extruder_stacks = self._getOrderedExtruderStacksList() - # Fetch the list of useable qualities across all extruders. + # Fetch the list of usable 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) + 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.getId():qc for qc in quality_changes_list if + qc.getMetaDataEntry("quality_type") in quality_type_set and + qc.getMetaDataEntry("extruder") is not None and + (qc.getMetaDataEntry("extruder") == active_extruder.definition.getMetaDataEntry("quality_definition") or + qc.getMetaDataEntry("extruder") == active_extruder.definition.getId())} - 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") is not None and - (qc.getMetaDataEntry("extruder") == active_extruder.definition.getMetaDataEntry("quality_definition") or - 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 and - qc.getMetaDataEntry("extruder") is None] - - return quality_list + filtered_quality_changes + result = filtered_quality_changes + result.update({q.getId():q for q in quality_list}) + return result, {} #Only return true profiles for now, no metadata. The quality manager is not able to get only metadata yet. \ No newline at end of file diff --git a/cura/Settings/QualitySettingsModel.py b/cura/Settings/QualitySettingsModel.py index 2ab4e2a9b5..243fd146dc 100644 --- a/cura/Settings/QualitySettingsModel.py +++ b/cura/Settings/QualitySettingsModel.py @@ -92,7 +92,6 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel): items = [] - settings = collections.OrderedDict() definition_container = Application.getInstance().getGlobalContainerStack().getBottom() containers = self._container_registry.findInstanceContainers(id = self._quality_id) @@ -224,7 +223,6 @@ class QualitySettingsModel(UM.Qt.ListModel.ListModel): if self._extruder_id == "" and settable_per_extruder: continue - label = definition.label if self._i18n_catalog: label = self._i18n_catalog.i18nc(definition.key + " label", label) diff --git a/cura/Settings/SettingInheritanceManager.py b/cura/Settings/SettingInheritanceManager.py index 8c9f5b20d6..0d4cd02cdb 100644 --- a/cura/Settings/SettingInheritanceManager.py +++ b/cura/Settings/SettingInheritanceManager.py @@ -47,21 +47,20 @@ class SettingInheritanceManager(QObject): @pyqtSlot(str, str, result = "QStringList") def getOverridesForExtruder(self, key, extruder_index): - multi_extrusion = self._global_container_stack.getProperty("machine_extruder_count", "value") > 1 - if not multi_extrusion: - return self._settings_with_inheritance_warning - extruder = ExtruderManager.getInstance().getExtruderStack(extruder_index) - if not extruder: - Logger.log("w", "Unable to find extruder for current machine with index %s", extruder_index) - return [] + result = [] - definitions = self._global_container_stack.definition.findDefinitions(key=key) + extruder_stack = ExtruderManager.getInstance().getExtruderStack(extruder_index) + if not extruder_stack: + Logger.log("w", "Unable to find extruder for current machine with index %s", extruder_index) + return result + + definitions = self._global_container_stack.definition.findDefinitions(key = key) if not definitions: Logger.log("w", "Could not find definition for key [%s] (2)", key) - return [] - result = [] + return result + for key in definitions[0].getAllKeys(): - if self._settingIsOverwritingInheritance(key, extruder): + if self._settingIsOverwritingInheritance(key, extruder_stack): result.append(key) return result @@ -78,8 +77,8 @@ class SettingInheritanceManager(QObject): def _onActiveExtruderChanged(self): new_active_stack = ExtruderManager.getInstance().getActiveExtruderStack() - if not new_active_stack: - new_active_stack = self._global_container_stack + # if not new_active_stack: + # new_active_stack = self._global_container_stack if new_active_stack != self._active_container_stack: # Check if changed if self._active_container_stack: # Disconnect signal from old container (if any) diff --git a/cura/Settings/SettingOverrideDecorator.py b/cura/Settings/SettingOverrideDecorator.py index 4e0893a35f..b853c06c8e 100644 --- a/cura/Settings/SettingOverrideDecorator.py +++ b/cura/Settings/SettingOverrideDecorator.py @@ -22,20 +22,26 @@ class SettingOverrideDecorator(SceneNodeDecorator): ## Event indicating that the user selected a different extruder. activeExtruderChanged = Signal() + ## Non-printing meshes + # + # If these settings are True for any mesh, the mesh does not need a convex hull, + # and is sent to the slicer regardless of whether it fits inside the build volume. + # Note that Support Mesh is not in here because it actually generates + # g-code in the volume of the mesh. + _non_printing_mesh_settings = {"anti_overhang_mesh", "infill_mesh", "cutting_mesh"} + def __init__(self): super().__init__() - self._stack = PerObjectContainerStack(stack_id = id(self)) + self._stack = PerObjectContainerStack(stack_id = "per_object_stack_" + str(id(self))) self._stack.setDirty(False) # This stack does not need to be saved. self._stack.addContainer(InstanceContainer(container_id = "SettingOverrideInstanceContainer")) + self._extruder_stack = ExtruderManager.getInstance().getExtruderStack(0).getId() - if ExtruderManager.getInstance().extruderCount > 1: - self._extruder_stack = ExtruderManager.getInstance().getExtruderStack(0).getId() - else: - self._extruder_stack = None + self._is_non_printing_mesh = False self._stack.propertyChanged.connect(self._onSettingChanged) - ContainerRegistry.getInstance().addContainer(self._stack) + Application.getInstance().getContainerRegistry().addContainer(self._stack) Application.getInstance().globalContainerStackChanged.connect(self._updateNextStack) self.activeExtruderChanged.connect(self._updateNextStack) @@ -53,6 +59,10 @@ class SettingOverrideDecorator(SceneNodeDecorator): # Properly set the right extruder on the copy deep_copy.setActiveExtruder(self._extruder_stack) + # use value from the stack because there can be a delay in signal triggering and "_is_non_printing_mesh" + # has not been updated yet. + deep_copy._is_non_printing_mesh = any(bool(self._stack.getProperty(setting, "value")) for setting in self._non_printing_mesh_settings) + return deep_copy ## Gets the currently active extruder to print this object with. @@ -76,9 +86,14 @@ class SettingOverrideDecorator(SceneNodeDecorator): container_stack = containers[0] return container_stack.getMetaDataEntry("position", default=None) + def isNonPrintingMesh(self): + return self._is_non_printing_mesh + def _onSettingChanged(self, instance, property_name): # Reminder: 'property' is a built-in function # Trigger slice/need slicing if the value has changed. if property_name == "value": + self._is_non_printing_mesh = any(bool(self._stack.getProperty(setting, "value")) for setting in self._non_printing_mesh_settings) + Application.getInstance().getBackend().needsSlicing() Application.getInstance().getBackend().tickle() diff --git a/cura/Settings/UserProfilesModel.py b/cura/Settings/UserProfilesModel.py index aa815ef4aa..e093c6c132 100644 --- a/cura/Settings/UserProfilesModel.py +++ b/cura/Settings/UserProfilesModel.py @@ -1,7 +1,7 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from UM.Application import Application +from UM.Application import Application from cura.QualityManager import QualityManager from cura.Settings.ProfilesModel import ProfilesModel from cura.Settings.ExtruderManager import ExtruderManager @@ -12,57 +12,69 @@ class UserProfilesModel(ProfilesModel): def __init__(self, parent = None): super().__init__(parent) + #Need to connect to the metaDataChanged signal of the active materials. + self.__current_extruders = [] + self.__current_materials = [] + + Application.getInstance().getExtruderManager().extrudersChanged.connect(self.__onExtrudersChanged) + self.__onExtrudersChanged() + self.__current_materials = [extruder.material for extruder in self.__current_extruders] + for material in self.__current_materials: + material.metaDataChanged.connect(self._onContainerChanged) + ## Fetch the list of containers to display. # # See UM.Settings.Models.InstanceContainersModel._fetchInstanceContainers(). def _fetchInstanceContainers(self): global_container_stack = Application.getInstance().getGlobalContainerStack() if not global_container_stack: - return [] + return {}, {} # Fetch the list of quality changes. quality_manager = QualityManager.getInstance() - machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.getBottom()) + machine_definition = quality_manager.getParentMachineDefinition(global_container_stack.definition) quality_changes_list = quality_manager.findAllQualityChangesForMachine(machine_definition) - # 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 multiple_extrusion: - # Place the active extruder at the front of the list. - # This is a workaround checking if there is an active_extruder or not before moving it to the front of the list. - # Actually, when a printer has multiple extruders, should exist always an active_extruder. However, in some - # cases the active_extruder is still None. - if active_extruder in extruder_stacks: - extruder_stacks.remove(active_extruder) - new_extruder_stacks = [] - if active_extruder is not None: - new_extruder_stacks = [active_extruder] - else: - # if there is no active extruder, use the first one in the active extruder stacks - active_extruder = extruder_stacks[0] - extruder_stacks = new_extruder_stacks + extruder_stacks + extruder_stacks = self._getOrderedExtruderStacksList() - # Fetch the list of useable qualities across all extruders. + # Fetch the list of usable 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) + 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]) - 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") is not None and - (qc.getMetaDataEntry("extruder") == active_extruder.definition.getMetaDataEntry("quality_definition") or - 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 and - qc.getMetaDataEntry("extruder") is None] + filtered_quality_changes = {qc.getId():qc for qc in quality_changes_list if + qc.getMetaDataEntry("quality_type") in quality_type_set and + qc.getMetaDataEntry("extruder") is not None and + (qc.getMetaDataEntry("extruder") == active_extruder.definition.getMetaDataEntry("quality_definition") or + qc.getMetaDataEntry("extruder") == active_extruder.definition.getId())} - return filtered_quality_changes + return filtered_quality_changes, {} #Only return true profiles for now, no metadata. The quality manager is not able to get only metadata yet. + + ## Called when a container changed on an extruder stack. + # + # If it's the material we need to connect to the metaDataChanged signal of + # that. + def __onContainerChanged(self, new_container): + #Careful not to update when a quality or quality changes profile changed! + #If you then update you're going to have an infinite recursion because the update may change the container. + if new_container.getMetaDataEntry("type") == "material": + for material in self.__current_materials: + material.metaDataChanged.disconnect(self._onContainerChanged) + self.__current_materials = [extruder.material for extruder in self.__current_extruders] + for material in self.__current_materials: + material.metaDataChanged.connect(self._onContainerChanged) + + ## Called when the current set of extruders change. + # + # This makes sure that we are listening to the signal for when the + # materials change. + def __onExtrudersChanged(self): + for extruder in self.__current_extruders: + extruder.containersChanged.disconnect(self.__onContainerChanged) + self.__current_extruders = Application.getInstance().getExtruderManager().getExtruderStacks() + for extruder in self.__current_extruders: + extruder.containersChanged.connect(self.__onContainerChanged) \ No newline at end of file diff --git a/cura/Stages/CuraStage.py b/cura/Stages/CuraStage.py new file mode 100644 index 0000000000..8b7822ed7a --- /dev/null +++ b/cura/Stages/CuraStage.py @@ -0,0 +1,22 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from PyQt5.QtCore import pyqtProperty, QUrl, QObject + +from UM.Stage import Stage + +class CuraStage(Stage): + + def __init__(self, parent = None): + super().__init__(parent) + + @pyqtProperty(str, constant = True) + def stageId(self): + return self.getPluginId() + + @pyqtProperty(QUrl, constant = True) + def mainComponent(self): + return self.getDisplayComponent("main") + + @pyqtProperty(QUrl, constant = True) + def sidebarComponent(self): + return self.getDisplayComponent("sidebar") diff --git a/cura/Stages/__init__.py b/cura/Stages/__init__.py new file mode 100644 index 0000000000..2977645166 --- /dev/null +++ b/cura/Stages/__init__.py @@ -0,0 +1,2 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. diff --git a/cura_app.py b/cura_app.py index d725bc1200..b5844055ab 100755 --- a/cura_app.py +++ b/cura_app.py @@ -2,17 +2,45 @@ # Copyright (c) 2015 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. + +import argparse import os import sys -import platform -import faulthandler from UM.Platform import Platform +parser = argparse.ArgumentParser(prog = "cura", + add_help = False) +parser.add_argument('--debug', + action='store_true', + default = False, + help = "Turn on the debug mode by setting this option." + ) +known_args = vars(parser.parse_known_args()[0]) + +if not known_args["debug"]: + def get_cura_dir_path(): + if Platform.isWindows(): + return os.path.expanduser("~/AppData/Roaming/cura/") + elif Platform.isLinux(): + return os.path.expanduser("~/.local/share/cura") + elif Platform.isOSX(): + return os.path.expanduser("~/Library/Logs/cura") + + if hasattr(sys, "frozen"): + dirpath = get_cura_dir_path() + os.makedirs(dirpath, exist_ok = True) + sys.stdout = open(os.path.join(dirpath, "stdout.log"), "w") + sys.stderr = open(os.path.join(dirpath, "stderr.log"), "w") + +import platform +import faulthandler + #WORKAROUND: GITHUB-88 GITHUB-385 GITHUB-612 if Platform.isLinux(): # Needed for platform.linux_distribution, which is not available on Windows and OSX # For Ubuntu: https://bugs.launchpad.net/ubuntu/+source/python-qt4/+bug/941826 - if platform.linux_distribution()[0] in ("debian", "Ubuntu", "LinuxMint"): # TODO: Needs a "if X11_GFX == 'nvidia'" here. The workaround is only needed on Ubuntu+NVidia drivers. Other drivers are not affected, but fine with this fix. + linux_distro_name = platform.linux_distribution()[0].lower() + if linux_distro_name in ("debian", "ubuntu", "linuxmint", "fedora"): # TODO: Needs a "if X11_GFX == 'nvidia'" here. The workaround is only needed on Ubuntu+NVidia drivers. Other drivers are not affected, but fine with this fix. import ctypes from ctypes.util import find_library libGL = find_library("GL") @@ -22,9 +50,10 @@ if Platform.isLinux(): # Needed for platform.linux_distribution, which is not av if Platform.isWindows() and hasattr(sys, "frozen"): try: del os.environ["PYTHONPATH"] - except KeyError: pass + except KeyError: + pass -#WORKAROUND: GITHUB-704 GITHUB-708 +# WORKAROUND: GITHUB-704 GITHUB-708 # It looks like setuptools creates a .pth file in # the default /usr/lib which causes the default site-packages # to be inserted into sys.path before PYTHONPATH. @@ -45,7 +74,8 @@ def exceptHook(hook_type, value, traceback): _crash_handler = CrashHandler(hook_type, value, traceback) _crash_handler.show() -sys.excepthook = exceptHook +if not known_args["debug"]: + sys.excepthook = exceptHook # Workaround for a race condition on certain systems where there # is a race condition between Arcus and PyQt. Importing Arcus @@ -55,29 +85,14 @@ import Arcus #@UnusedImport import cura.CuraApplication import cura.Settings.CuraContainerRegistry -def get_cura_dir_path(): - if Platform.isWindows(): - return os.path.expanduser("~/AppData/Local/cura/") - elif Platform.isLinux(): - return os.path.expanduser("~/.local/share/cura") - elif Platform.isOSX(): - return os.path.expanduser("~/Library/Logs/cura") - - -if hasattr(sys, "frozen"): - dirpath = get_cura_dir_path() - os.makedirs(dirpath, exist_ok = True) - sys.stdout = open(os.path.join(dirpath, "stdout.log"), "w") - sys.stderr = open(os.path.join(dirpath, "stderr.log"), "w") - faulthandler.enable() # Force an instance of CuraContainerRegistry to be created and reused later. cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance() -# This prestart up check is needed to determine if we should start the application at all. -if not cura.CuraApplication.CuraApplication.preStartUp(): +# This pre-start up check is needed to determine if we should start the application at all. +if not cura.CuraApplication.CuraApplication.preStartUp(parser = parser, parsed_command_line = known_args): sys.exit(0) -app = cura.CuraApplication.CuraApplication.getInstance() +app = cura.CuraApplication.CuraApplication.getInstance(parser = parser, parsed_command_line = known_args) app.run() diff --git a/installer.nsi b/installer.nsi index 79704eece8..7516f733a1 100644 --- a/installer.nsi +++ b/installer.nsi @@ -126,11 +126,7 @@ Section "Install Arduino Drivers" SectionEnd Section "Open STL files with Cura" - WriteRegStr HKCR .stl "" "Cura STL model file" - DeleteRegValue HKCR .stl "Content Type" - WriteRegStr HKCR "Cura STL model file\DefaultIcon" "" "$INSTDIR\Cura.exe,0" - WriteRegStr HKCR "Cura STL model file\shell" "" "open" - WriteRegStr HKCR "Cura STL model file\shell\open\command" "" '"$INSTDIR\Cura.exe" "%1"' + ${registerExtension} "$INSTDIR\Cura.exe" ".stl" "STL_File" SectionEnd Section /o "Open OBJ files with Cura" diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index a34bf771d7..727bce2112 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -4,7 +4,6 @@ import os.path import zipfile -from UM.Job import Job from UM.Logger import Logger from UM.Math.Matrix import Matrix from UM.Math.Vector import Vector @@ -15,9 +14,10 @@ from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator from UM.Application import Application 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 +from cura.Scene.CuraSceneNode import CuraSceneNode +from cura.Scene.BuildPlateDecorator import BuildPlateDecorator +from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator +from cura.Scene.ZOffsetDecorator import ZOffsetDecorator MYPY = False @@ -43,6 +43,7 @@ class ThreeMFReader(MeshReader): } self._base_name = "" self._unit = None + self._object_count = 0 # Used to name objects as there is no node name yet. def _createMatrixFromTransformationString(self, transformation): if transformation == "": @@ -77,7 +78,12 @@ class ThreeMFReader(MeshReader): ## 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() + self._object_count += 1 + node_name = "Object %s" % self._object_count + + um_node = CuraSceneNode() + um_node.addDecorator(BuildPlateDecorator(0)) + um_node.setName(node_name) transformation = self._createMatrixFromTransformationString(savitar_node.getTransformation()) um_node.setTransformation(transformation) mesh_builder = MeshBuilder() @@ -107,24 +113,17 @@ class ThreeMFReader(MeshReader): 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 + default_stack = ExtruderManager.getInstance().getExtruderStack(0) - # Ensure that all extruder data is reset - if not multi_extrusion: - default_stack_id = global_container_stack.getId() - else: - default_stack = ExtruderManager.getInstance().getExtruderStack(0) - if default_stack: - default_stack_id = default_stack.getId() - else: - default_stack_id = global_container_stack.getId() - um_node.callDecoration("setActiveExtruder", default_stack_id) + if default_stack: + um_node.callDecoration("setActiveExtruder", default_stack.getId()) # Get the definition & set it definition = QualityManager.getInstance().getParentMachineDefinition(global_container_stack.getBottom()) - um_node.callDecoration("getStack").getTop().setDefinition(definition) + um_node.callDecoration("getStack").getTop().setDefinition(definition.getId()) setting_container = um_node.callDecoration("getStack").getTop() @@ -139,7 +138,7 @@ class ThreeMFReader(MeshReader): else: Logger.log("w", "Unable to find extruder in position %s", setting_value) continue - setting_container.setProperty(key,"value", setting_value) + setting_container.setProperty(key, "value", setting_value) if len(um_node.getChildren()) > 0: group_decorator = GroupDecorator() @@ -154,6 +153,7 @@ class ThreeMFReader(MeshReader): def read(self, file_name): result = [] + self._object_count = 0 # Used to name objects as there is no node name yet. # The base object of 3mf is a zipped archive. try: archive = zipfile.ZipFile(file_name, "r") diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 5b1e084262..40d64590f5 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -13,6 +13,7 @@ from UM.Settings.ContainerRegistry import ContainerRegistry from UM.MimeTypeDatabase import MimeTypeDatabase from UM.Job import Job from UM.Preferences import Preferences +from UM.Util import parseBool from .WorkspaceDialog import WorkspaceDialog import xml.etree.ElementTree as ET @@ -21,6 +22,8 @@ from cura.Settings.CuraStackBuilder import CuraStackBuilder from cura.Settings.ExtruderManager import ExtruderManager from cura.Settings.ExtruderStack import ExtruderStack from cura.Settings.GlobalStack import GlobalStack +from cura.Settings.CuraContainerStack import _ContainerIndexes +from cura.QualityManager import QualityManager from configparser import ConfigParser import zipfile @@ -119,7 +122,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader): Logger.log("w", "Could not find reader that was able to read the scene data for 3MF workspace") return WorkspaceReader.PreReadResult.failed - machine_name = "" machine_type = "" variant_type_name = i18n_catalog.i18nc("@label", "Nozzle") @@ -130,9 +132,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # A few lists of containers in this project files. # When loading the global stack file, it may be associated with those containers, which may or may not be # in Cura already, so we need to provide them as alternative search lists. - definition_container_list = [] instance_container_list = [] - material_container_list = [] resolve_strategy_keys = ["machine", "material", "quality_changes"] self._resolve_strategies = {k: None for k in resolve_strategy_keys} @@ -146,20 +146,20 @@ class ThreeMFWorkspaceReader(WorkspaceReader): definition_container_files = [name for name in cura_file_names if name.endswith(self._definition_container_suffix)] for each_definition_container_file in definition_container_files: container_id = self._stripFileToId(each_definition_container_file) - definitions = self._container_registry.findDefinitionContainers(id=container_id) + definitions = self._container_registry.findDefinitionContainersMetadata(id = container_id) if not definitions: definition_container = DefinitionContainer(container_id) - definition_container.deserialize(archive.open(each_definition_container_file).read().decode("utf-8")) + definition_container.deserialize(archive.open(each_definition_container_file).read().decode("utf-8"), file_name = each_definition_container_file) + definition_container = definition_container.getMetaData() else: definition_container = definitions[0] - definition_container_list.append(definition_container) - definition_container_type = definition_container.getMetaDataEntry("type") + definition_container_type = definition_container.get("type") if definition_container_type == "machine": - machine_type = definition_container.getName() - variant_type_name = definition_container.getMetaDataEntry("variants_name", variant_type_name) + machine_type = definition_container["name"] + variant_type_name = definition_container.get("variants_name", variant_type_name) machine_definition_container_count += 1 elif definition_container_type == "extruder": @@ -183,11 +183,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader): material_container_files = [name for name in cura_file_names if name.endswith(self._material_container_suffix)] for material_container_file in material_container_files: container_id = self._stripFileToId(material_container_file) - materials = self._container_registry.findInstanceContainers(id=container_id) material_labels.append(self._getMaterialLabelFromSerialized(archive.open(material_container_file).read().decode("utf-8"))) - if materials: + if self._container_registry.findContainersMetadata(id = container_id): #This material already exists. containers_found_dict["material"] = True - if not materials[0].isReadOnly(): # Only non readonly materials can be in conflict + if not self._container_registry.isReadOnly(container_id): # Only non readonly materials can be in conflict material_conflict = True Job.yieldThread() @@ -206,7 +205,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): instance_container = InstanceContainer(container_id) # Deserialize InstanceContainer by converting read data from bytes to string - instance_container.deserialize(archive.open(each_instance_container_file).read().decode("utf-8")) + instance_container.deserialize(archive.open(each_instance_container_file).read().decode("utf-8"), + file_name = each_instance_container_file) instance_container_list.append(instance_container) container_type = instance_container.getMetaDataEntry("type") @@ -376,7 +376,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): return WorkspaceReader.PreReadResult.accepted ## Overrides an ExtruderStack in the given GlobalStack and returns the new ExtruderStack. - def _overrideExtruderStack(self, global_stack, extruder_file_content): + def _overrideExtruderStack(self, global_stack, extruder_file_content, extruder_stack_file): # Get extruder position first extruder_config = configparser.ConfigParser() extruder_config.read_string(extruder_file_content) @@ -392,7 +392,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): return None # Override the given extruder stack - extruder_stack.deserialize(extruder_file_content) + extruder_stack.deserialize(extruder_file_content, file_name = extruder_stack_file) # return the new ExtruderStack return extruder_stack @@ -444,6 +444,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): extruder_stacks = [] extruder_stacks_added = [] container_stacks_added = [] + machine_extruder_count = None containers_added = [] @@ -456,16 +457,17 @@ class ThreeMFWorkspaceReader(WorkspaceReader): extruder_stack_id_map = {} # new and old ExtruderStack IDs map if self._resolve_strategies["machine"] == "new": # We need a new id if the id already exists - if self._container_registry.findContainerStacks(id = global_stack_id_original): + if self._container_registry.findContainerStacksMetadata(id = global_stack_id_original): global_stack_id_new = self.getNewId(global_stack_id_original) global_stack_need_rename = True - global_stack_name_new = self._container_registry.uniqueName(global_stack_name_original) + if self._container_registry.findContainerStacksMetadata(name = global_stack_id_original): + global_stack_name_new = self._container_registry.uniqueName(global_stack_name_original) for each_extruder_stack_file in extruder_stack_files: old_container_id = self._stripFileToId(each_extruder_stack_file) new_container_id = old_container_id - if self._container_registry.findContainerStacks(id = old_container_id): + if self._container_registry.findContainerStacksMetadata(id = old_container_id): # get a new name for this extruder new_container_id = self.getNewId(old_container_id) @@ -479,10 +481,11 @@ class ThreeMFWorkspaceReader(WorkspaceReader): definition_container_files = [name for name in cura_file_names if name.endswith(self._definition_container_suffix)] for definition_container_file in definition_container_files: container_id = self._stripFileToId(definition_container_file) - definitions = self._container_registry.findDefinitionContainers(id = container_id) + definitions = self._container_registry.findDefinitionContainersMetadata(id = container_id) if not definitions: definition_container = DefinitionContainer(container_id) - definition_container.deserialize(archive.open(definition_container_file).read().decode("utf-8")) + definition_container.deserialize(archive.open(definition_container_file).read().decode("utf-8"), + file_name = definition_container_file) self._container_registry.addContainer(definition_container) Job.yieldThread() @@ -500,18 +503,21 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if not materials: material_container = xml_material_profile(container_id) - material_container.deserialize(archive.open(material_container_file).read().decode("utf-8")) + material_container.deserialize(archive.open(material_container_file).read().decode("utf-8"), + file_name = material_container_file) containers_to_add.append(material_container) else: material_container = materials[0] - if not material_container.isReadOnly(): # Only create new materials if they are not read only. + if not self._container_registry.isReadOnly(container_id): # Only create new materials if they are not read only. if self._resolve_strategies["material"] == "override": - material_container.deserialize(archive.open(material_container_file).read().decode("utf-8")) + material_container.deserialize(archive.open(material_container_file).read().decode("utf-8"), + file_name = material_container_file) elif self._resolve_strategies["material"] == "new": # Note that we *must* deserialize it with a new ID, as multiple containers will be # auto created & added. material_container = xml_material_profile(self.getNewId(container_id)) - material_container.deserialize(archive.open(material_container_file).read().decode("utf-8")) + material_container.deserialize(archive.open(material_container_file).read().decode("utf-8"), + file_name = material_container_file) containers_to_add.append(material_container) material_containers.append(material_container) @@ -538,7 +544,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): instance_container = InstanceContainer(container_id) # Deserialize InstanceContainer by converting read data from bytes to string - instance_container.deserialize(serialized) + instance_container.deserialize(serialized, file_name = instance_container_file) container_type = instance_container.getMetaDataEntry("type") Job.yieldThread() @@ -560,7 +566,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): else: if self._resolve_strategies["machine"] == "override" or self._resolve_strategies["machine"] is None: instance_container = user_containers[0] - instance_container.deserialize(archive.open(instance_container_file).read().decode("utf-8")) + instance_container.deserialize(archive.open(instance_container_file).read().decode("utf-8"), + file_name = instance_container_file) instance_container.setDirty(True) elif self._resolve_strategies["machine"] == "new": # The machine is going to get a spiffy new name, so ensure that the id's of user settings match. @@ -568,7 +575,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if old_extruder_id: new_extruder_id = extruder_stack_id_map[old_extruder_id] new_id = new_extruder_id + "_current_settings" - instance_container._id = new_id + instance_container.setMetaDataEntry("id", new_id) instance_container.setName(new_id) instance_container.setMetaDataEntry("extruder", new_extruder_id) containers_to_add.append(instance_container) @@ -577,7 +584,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if machine_id: new_machine_id = self.getNewId(machine_id) new_id = new_machine_id + "_current_settings" - instance_container._id = new_id + instance_container.setMetaDataEntry("id", new_id) instance_container.setName(new_id) instance_container.setMetaDataEntry("machine", new_machine_id) containers_to_add.append(instance_container) @@ -593,7 +600,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # selected strategy. if self._resolve_strategies[container_type] == "override": instance_container = changes_containers[0] - instance_container.deserialize(archive.open(instance_container_file).read().decode("utf-8")) + instance_container.deserialize(archive.open(instance_container_file).read().decode("utf-8"), + file_name = instance_container_file) instance_container.setDirty(True) elif self._resolve_strategies[container_type] == "new": @@ -625,8 +633,14 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # The ID already exists, but nothing in the values changed, so do nothing. pass quality_and_definition_changes_instance_containers.append(instance_container) + + if container_type == "definition_changes": + definition_changes_extruder_count = instance_container.getProperty("machine_extruder_count", "value") + if definition_changes_extruder_count is not None: + machine_extruder_count = definition_changes_extruder_count + else: - existing_container = self._container_registry.findInstanceContainers(id = container_id) + existing_container = self._container_registry.findInstanceContainersMetadata(id = container_id) if not existing_container: containers_to_add.append(instance_container) if global_stack_need_rename: @@ -642,36 +656,33 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Get the stack(s) saved in the workspace. Logger.log("d", "Workspace loading is checking stacks containers...") - # -- # load global stack file try: + stack = None + if self._resolve_strategies["machine"] == "override": container_stacks = self._container_registry.findContainerStacks(id = global_stack_id_original) stack = container_stacks[0] # HACK # There is a machine, check if it has authentication data. If so, keep that data. - network_authentication_id = container_stacks[0].getMetaDataEntry("network_authentication_id") - network_authentication_key = container_stacks[0].getMetaDataEntry("network_authentication_key") - container_stacks[0].deserialize(archive.open(global_stack_file).read().decode("utf-8")) + network_authentication_id = stack.getMetaDataEntry("network_authentication_id") + network_authentication_key = stack.getMetaDataEntry("network_authentication_key") + stack.deserialize(archive.open(global_stack_file).read().decode("utf-8"), file_name = global_stack_file) if network_authentication_id: - container_stacks[0].addMetaDataEntry("network_authentication_id", network_authentication_id) + stack.addMetaDataEntry("network_authentication_id", network_authentication_id) if network_authentication_key: - container_stacks[0].addMetaDataEntry("network_authentication_key", network_authentication_key) + stack.addMetaDataEntry("network_authentication_key", network_authentication_key) elif self._resolve_strategies["machine"] == "new": # create a new global stack stack = GlobalStack(global_stack_id_new) # Deserialize stack by converting read data from bytes to string - stack.deserialize(archive.open(global_stack_file).read().decode("utf-8")) + stack.deserialize(archive.open(global_stack_file).read().decode("utf-8"), + file_name = global_stack_file) # Ensure a unique ID and name - stack._id = global_stack_id_new - - # Extruder stacks are "bound" to a machine. If we add the machine as a new one, the id of the - # bound machine also needs to change. - if stack.getMetaDataEntry("machine", None): - stack.setMetaDataEntry("machine", global_stack_id_new) + stack.setMetaDataEntry("id", global_stack_id_new) # Only machines need a new name, stacks may be non-unique stack.setName(global_stack_name_new) @@ -680,12 +691,11 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._container_registry.addContainer(stack) containers_added.append(stack) else: - Logger.log("e", "Resolve strategy of %s for machine is not supported", - self._resolve_strategies["machine"]) + Logger.log("e", "Resolve strategy of %s for machine is not supported", self._resolve_strategies["machine"]) # Create a new definition_changes container if it was empty if stack.definitionChanges == self._container_registry.getEmptyInstanceContainer(): - stack.setDefinitionChanges(CuraStackBuilder.createDefinitionChangesContainer(stack, stack._id + "_settings")) + stack.setDefinitionChanges(CuraStackBuilder.createDefinitionChangesContainer(stack, stack.getId() + "_settings")) global_stack = stack Job.yieldThread() except: @@ -695,16 +705,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._container_registry.removeContainer(container.getId()) return - # - # Use the number of extruders from the global stack instead of the number of extruder stacks this project file - # contains. The Custom FDM Printer can have multiple extruders, but the actual number of extruders in used is - # defined in the global stack. - # Because for single-extrusion machines, there won't be an extruder stack, so relying on the the extruder count - # in the global stack can avoid problems in those cases. - # - extruder_count_from_global_stack = global_stack.getProperty("machine_extruder_count", "value") - - # -- # load extruder stack files try: for extruder_stack_file in extruder_stack_files: @@ -712,11 +712,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader): extruder_file_content = archive.open(extruder_stack_file, "r").read().decode("utf-8") if self._resolve_strategies["machine"] == "override": - if global_stack.getProperty("machine_extruder_count", "value") > 1: - # deserialize new extruder stack over the current ones (if any) - stack = self._overrideExtruderStack(global_stack, extruder_file_content) - if stack is None: - continue + # deserialize new extruder stack over the current ones (if any) + stack = self._overrideExtruderStack(global_stack, extruder_file_content, extruder_stack_file) + if stack is None: + continue elif self._resolve_strategies["machine"] == "new": new_id = extruder_stack_id_map[container_id] @@ -734,10 +733,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader): extruder_config.write(tmp_string_io) extruder_file_content = tmp_string_io.getvalue() - stack.deserialize(extruder_file_content) + stack.deserialize(extruder_file_content, file_name = extruder_stack_file) # Ensure a unique ID and name - stack._id = new_id + stack.setMetaDataEntry("id", new_id) self._container_registry.addContainer(stack) extruder_stacks_added.append(stack) @@ -747,9 +746,26 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # Create a new definition_changes container if it was empty if stack.definitionChanges == self._container_registry.getEmptyInstanceContainer(): - stack.setDefinitionChanges(CuraStackBuilder.createDefinitionChangesContainer(stack, stack._id + "_settings")) - if global_stack.getProperty("machine_extruder_count", "value") > 1: + stack.setDefinitionChanges(CuraStackBuilder.createDefinitionChangesContainer(stack, stack.getId() + "_settings")) + + if stack.getMetaDataEntry("type") == "extruder_train": extruder_stacks.append(stack) + + # If not extruder stacks were saved in the project file (pre 3.1) create one manually + # We re-use the container registry's addExtruderStackForSingleExtrusionMachine method for this + if not extruder_stacks: + stack = self._container_registry.addExtruderStackForSingleExtrusionMachine(global_stack, "fdmextruder") + if stack: + if self._resolve_strategies["machine"] == "override": + # in case the extruder is newly created (for a single-extrusion machine), we need to override + # the existing extruder stack. + existing_extruder_stack = global_stack.extruders[stack.getMetaDataEntry("position")] + for idx in range(len(_ContainerIndexes.IndexTypeMap)): + existing_extruder_stack.replaceContainer(idx, stack._containers[idx], postpone_emit = True) + extruder_stacks.append(existing_extruder_stack) + else: + extruder_stacks.append(stack) + except: Logger.logException("w", "We failed to serialize the stack. Trying to clean up.") # Something went really wrong. Try to remove any data that we added. @@ -757,13 +773,122 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._container_registry.removeContainer(container.getId()) return + + # Check quality profiles to make sure that if one stack has the "not supported" quality profile, + # all others should have the same. # + # This block code tries to fix the following problems in Cura 3.0 and earlier: + # 1. The upgrade script can rename all "Not Supported" quality profiles to "empty_quality", but it cannot fix + # the problem that the global stack the extruder stacks may have different quality profiles. The code + # below loops over all stacks and make sure that if there is one stack with "Not Supported" profile, the + # rest should also use the "Not Supported" profile. + # 2. In earlier versions (at least 2.7 and 3.0), a wrong quality profile could be assigned to a stack. For + # example, a UM3 can have a BB 0.8 variant with "aa04_pla_fast" quality profile enabled. To fix this, + # in the code below we also check the actual available quality profiles for the machine. + # + has_not_supported = False + for stack in [global_stack] + extruder_stacks: + if stack.quality.getId() in ("empty", "empty_quality"): + has_not_supported = True + break + + # We filter out extruder stacks that are not actually used, for example the UM3 and custom FDM printer extruder count setting. + extruder_stacks_in_use = extruder_stacks + if machine_extruder_count is not None: + extruder_stacks_in_use = extruder_stacks[:machine_extruder_count] + + available_quality = QualityManager.getInstance().findAllUsableQualitiesForMachineAndExtruders(global_stack, + extruder_stacks_in_use) + if not has_not_supported: + has_not_supported = not available_quality + + quality_has_been_changed = False + + if has_not_supported: + empty_quality_container = self._container_registry.findInstanceContainers(id = "empty_quality")[0] + for stack in [global_stack] + extruder_stacks_in_use: + stack.replaceContainer(_ContainerIndexes.Quality, empty_quality_container) + empty_quality_changes_container = self._container_registry.findInstanceContainers(id = "empty_quality_changes")[0] + for stack in [global_stack] + extruder_stacks_in_use: + stack.replaceContainer(_ContainerIndexes.QualityChanges, empty_quality_changes_container) + quality_has_been_changed = True + + else: + empty_quality_changes_container = self._container_registry.findInstanceContainers(id="empty_quality_changes")[0] + + # The machine in the project has non-empty quality and there are usable qualities for this machine. + # We need to check if the current quality_type is still usable for this machine, if not, then the quality + # will be reset to the "preferred quality" if present, otherwise "normal". + available_quality_types = [q.getMetaDataEntry("quality_type") for q in available_quality] + + if global_stack.quality.getMetaDataEntry("quality_type") not in available_quality_types: + # We are here because the quality_type specified in the project is not supported any more, + # so we need to switch it to the "preferred quality" if present, otherwise "normal". + quality_has_been_changed = True + + # find the preferred quality + preferred_quality_id = global_stack.getMetaDataEntry("preferred_quality", None) + if preferred_quality_id is not None: + definition_id = global_stack.definition.getId() + definition_id = global_stack.definition.getMetaDataEntry("quality_definition", definition_id) + if not parseBool(global_stack.getMetaDataEntry("has_machine_quality", "False")): + definition_id = "fdmprinter" + + containers = self._container_registry.findInstanceContainers(id = preferred_quality_id, + type = "quality", + definition = definition_id) + containers = [c for c in containers if not c.getMetaDataEntry("material", "")] + if containers: + global_stack.quality = containers[0] + global_stack.qualityChanges = empty_quality_changes_container + # also find the quality containers for the extruders + for extruder_stack in extruder_stacks_in_use: + search_criteria = {"id": preferred_quality_id, + "type": "quality", + "definition": definition_id} + if global_stack.getMetaDataEntry("has_machine_materials") and extruder_stack.material.getId() not in ("empty", "empty_material"): + search_criteria["material"] = extruder_stack.material.getId() + containers = self._container_registry.findInstanceContainers(**search_criteria) + if containers: + extruder_stack.quality = containers[0] + extruder_stack.qualityChanges = empty_quality_changes_container + else: + Logger.log("e", "Cannot find preferred quality for extruder [%s].", extruder_stack.getId()) + + else: + # we cannot find the preferred quality. THIS SHOULD NOT HAPPEN + Logger.log("e", "Cannot find the preferred quality for machine [%s]", global_stack.getId()) + else: + # The quality_type specified in the project file is usable, but the quality container itself may not + # be correct. For example, for UM2, the quality container can be "draft" while it should be "um2_draft" + # instead. + # In this code branch, we try to fix those incorrect quality containers. + # + # ***IMPORTANT***: We only do this fix for single-extrusion machines. + # We will first find the correct quality profile for the extruder, then apply the same + # quality profile for the global stack. + # + if len(extruder_stacks) == 1: + extruder_stack = extruder_stacks[0] + + search_criteria = {"type": "quality", "quality_type": global_stack.quality.getMetaDataEntry("quality_type")} + search_criteria["definition"] = global_stack.definition.getId() + if not parseBool(global_stack.getMetaDataEntry("has_machine_quality", "False")): + search_criteria["definition"] = "fdmprinter" + + if global_stack.getMetaDataEntry("has_machine_materials") and extruder_stack.material.getId() not in ("empty", "empty_material"): + search_criteria["material"] = extruder_stack.material.getId() + containers = self._container_registry.findInstanceContainers(**search_criteria) + if containers: + new_quality_container = containers[0] + extruder_stack.quality = new_quality_container + global_stack.quality = new_quality_container + # Replacing the old containers if resolve is "new". # When resolve is "new", some containers will get renamed, so all the other containers that reference to those # 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 @@ -781,7 +906,11 @@ class ThreeMFWorkspaceReader(WorkspaceReader): global_stack.userChanges = container continue - for changes_container_type in ("quality_changes", "definition_changes"): + changes_container_types = ("quality_changes", "definition_changes") + if quality_has_been_changed: + # DO NOT replace quality_changes if the current quality_type is not supported + changes_container_types = ("definition_changes",) + for changes_container_type in changes_container_types: if self._resolve_strategies[changes_container_type] == "new": # Quality changes needs to get a new ID, added to registry and to the right stacks for each_changes_container in quality_and_definition_changes_instance_containers: @@ -881,7 +1010,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): base_file_name = os.path.basename(file_name) if base_file_name.endswith(".curaproject.3mf"): base_file_name = base_file_name[:base_file_name.rfind(".curaproject.3mf")] - Application.getInstance().projectFileLoaded.emit(base_file_name) + self.setWorkspaceName(base_file_name) return nodes ## HACK: Replaces the material container in the given stack with a newly created material container. diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 151771b25d..5b474843d5 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -1,12 +1,10 @@ # Copyright (c) 2016 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import QUrl, pyqtSignal, QObject, pyqtProperty, QCoreApplication +from PyQt5.QtCore import pyqtSignal, QObject, pyqtProperty, QCoreApplication from UM.FlameProfiler import pyqtSlot -from PyQt5.QtQml import QQmlComponent, QQmlContext from UM.PluginRegistry import PluginRegistry from UM.Application import Application -from UM.Logger import Logger from UM.i18n import i18nCatalog from UM.Settings.ContainerRegistry import ContainerRegistry @@ -256,14 +254,8 @@ class WorkspaceDialog(QObject): return self._result def _createViewFromQML(self): - path = QUrl.fromLocalFile(os.path.join(PluginRegistry.getInstance().getPluginPath("3MFReader"), self._qml_url)) - self._component = QQmlComponent(Application.getInstance()._engine, path) - self._context = QQmlContext(Application.getInstance()._engine.rootContext()) - self._context.setContextProperty("manager", self) - self._view = self._component.create(self._context) - if self._view is None: - Logger.log("c", "QQmlComponent status %s", self._component.status()) - Logger.log("c", "QQmlComponent error string %s", self._component.errorString()) + path = os.path.join(PluginRegistry.getInstance().getPluginPath("3MFReader"), self._qml_url) + self._view = Application.getInstance().createQmlComponent(path, {"manager": self}) def show(self): # Emit signal so the right thread actually shows the view. diff --git a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py index 9c143f0057..f07a37a25f 100644 --- a/plugins/3MFWriter/ThreeMFWorkspaceWriter.py +++ b/plugins/3MFWriter/ThreeMFWorkspaceWriter.py @@ -59,7 +59,9 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): version_file = zipfile.ZipInfo("Cura/version.ini") version_config_parser = configparser.ConfigParser() version_config_parser.add_section("versions") - version_config_parser.set("versions", "cura_version", Application.getStaticVersion()) + version_config_parser.set("versions", "cura_version", Application.getInstance().getVersion()) + version_config_parser.set("versions", "build_type", Application.getInstance().getBuildType()) + version_config_parser.set("versions", "is_debug_mode", str(Application.getInstance().getIsDebugMode())) version_file_string = StringIO() version_config_parser.write(version_file_string) @@ -95,7 +97,7 @@ class ThreeMFWorkspaceWriter(WorkspaceWriter): file_in_archive.compress_type = zipfile.ZIP_DEFLATED # Do not include the network authentication keys - ignore_keys = ["network_authentication_id", "network_authentication_key"] + ignore_keys = {"network_authentication_id", "network_authentication_key"} serialized_data = container.serialize(ignored_metadata_keys = ignore_keys) archive.writestr(file_in_archive, serialized_data) diff --git a/plugins/3MFWriter/ThreeMFWriter.py b/plugins/3MFWriter/ThreeMFWriter.py index a764d30fac..79b821fe31 100644 --- a/plugins/3MFWriter/ThreeMFWriter.py +++ b/plugins/3MFWriter/ThreeMFWriter.py @@ -7,6 +7,7 @@ from UM.Logger import Logger from UM.Math.Matrix import Matrix from UM.Application import Application import UM.Scene.SceneNode +from cura.Scene.CuraSceneNode import CuraSceneNode import Savitar @@ -63,7 +64,7 @@ class ThreeMFWriter(MeshWriter): ## Convenience function that converts an Uranium SceneNode object to a SavitarSceneNode # \returns Uranium Scenen node. def _convertUMNodeToSavitarNode(self, um_node, transformation = Matrix()): - if type(um_node) is not UM.Scene.SceneNode.SceneNode: + if type(um_node) not in [UM.Scene.SceneNode.SceneNode, CuraSceneNode]: return None savitar_node = Savitar.SceneNode() @@ -87,7 +88,7 @@ class ThreeMFWriter(MeshWriter): if stack is not None: changed_setting_keys = set(stack.getTop().getAllKeys()) - # Ensure that we save the extruder used for this object. + # Ensure that we save the extruder used for this object in a multi-extrusion setup if stack.getProperty("machine_extruder_count", "value") > 1: changed_setting_keys.add("extruder_nr") diff --git a/plugins/ChangeLogPlugin/ChangeLog.py b/plugins/ChangeLogPlugin/ChangeLog.py index 8d1e54f40c..c31d1337ef 100644 --- a/plugins/ChangeLogPlugin/ChangeLog.py +++ b/plugins/ChangeLogPlugin/ChangeLog.py @@ -8,9 +8,7 @@ from UM.Application import Application from UM.PluginRegistry import PluginRegistry from UM.Version import Version -from PyQt5.QtQuick import QQuickView -from PyQt5.QtQml import QQmlComponent, QQmlContext -from PyQt5.QtCore import QUrl, pyqtSlot, QObject +from PyQt5.QtCore import pyqtSlot, QObject import os.path import collections @@ -107,9 +105,5 @@ class ChangeLog(Extension, QObject,): self._changelog_window.hide() def createChangelogWindow(self): - path = QUrl.fromLocalFile(os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), "ChangeLog.qml")) - - component = QQmlComponent(Application.getInstance()._engine, path) - self._changelog_context = QQmlContext(Application.getInstance()._engine.rootContext()) - self._changelog_context.setContextProperty("manager", self) - self._changelog_window = component.create(self._changelog_context) + path = os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), "ChangeLog.qml") + self._changelog_window = Application.getInstance().createQmlComponent(path, {"manager": self}) diff --git a/plugins/ChangeLogPlugin/ChangeLog.txt b/plugins/ChangeLogPlugin/ChangeLog.txt index 25880a66e4..de895b3e41 100755 --- a/plugins/ChangeLogPlugin/ChangeLog.txt +++ b/plugins/ChangeLogPlugin/ChangeLog.txt @@ -1,3 +1,82 @@ +[3.1.0] +*Profile added for 0.25 mm print core +This new print core gives extra fine line widths which gives prints extra definition and surface quality. + +*Profile added for Breakaway material +New material profile for Breakaway material, a new dry post processing support material, which can be used for models with flat surface area overhangs. + +*Layer view +The existing Layer View has been updated in order to see a live simulation of all the paths within a layer. + +*Quick camera controls +New buttons have been added to the interface that can quickly reposition the camera view of the buildplate. + +*Lock model on platform +The move tool has a new option to lock a selected model to the platform. + +*Faster profile switching speed +Duplicating and removing a profile could take Ultimaker Cura quite some time, it now happens instantly. + +*Faster printer selection +Removing a printer from the library is now instant. No more unresponsive screens. + +*Faster processing speed +A 5 - 10 % speed increase when calculating normals, loading models, and slicing. + +*Feedrate visualization +Feedrate visualization has been added to the Layer view. Using this gives the user an idea of the print speeds per model part, allowing for better control over prints. + +*Jogging +It allows the printhead to be moved with on-screen controls. Contributed by fieldOfView. + +*Large model loading +A new feature has been added which unloads the layer view when switching to solid mode, speeding Ultimaker Cura back up without losing your G-code/layer view information. + +*Scripts folder +A scripts folder is now available in the Ultimaker Cura configuration folder. This folder can be loaded with post processing plugins scripts, which will automatically show in Ultimaker Cura. Contributed by fieldOfView. + +*Optimized workflow for crash reporting +Crash reports are automatically generated and allow the user, in case of a crash, to easily send their report with a description to developers. + +*Floating models enabled +In previous releases, models were dropped to the build plate when support was disabled. Models now float when the setting is enabled (even if creates an impossible-to-print situation). This can be used to stack separate models on top of each other. + +*Slicing tolerance +A new setting that affects the intersect point to influence the dimensional accuracy for diagonal surfaces. The user can select the behaviour: ‘Inclusive’ makes gaps narrower, ‘Exclusive’ makes gaps wider, and ‘Middle’ is the fastest to process. This can be used to create better tolerances for printed screw holes. Contributed by BagelOrb. + +*Optimized zig zag patterns +Zig zag patterns now print more consistently. Lines now have a 5 micron tolerance in which they are printed any way, resulting in longer connected lines. Contributed by smartavionics. + +*Aligned z-seam inner wall moves +Inner wall travel moves are aligned with the z-seam. This reduces the number of travel moves and reduces the chance of more unwanted seams. + +*Relative positioning of infill patterns +Infill patterns are now positioned relative to the center of loaded models and an offset can be applied to control the infill more precisely and adjust it to preference or strength. Contributed by smartavionics. + +*Line resolution +Enables the user to specify the minimum allowed distance value between two points in G-code to create lower or higher resolution polygons. + +*Custom mode changes +If profile settings have been modified in recommended mode under custom mode, a reset icon will appear to notify the user. Click the icon to show the changes that have been made, and revert back to the default profile settings. + +*Bugfixes +- Fix for layer numbers being displayed incorrectly when switching between solid and layer mode +- Fix for Ultimaker Cura engine crashes on certain models +- Fix for Uninstalling previous versions of Cura on Windows platforms +- Fix for displaying visible settings +- Fix for importing legacy .ini files +- Prevent skipping user agreement dialog by pressing escape + +[3.0.4] +*Bug fixes +- Fixed OpenGL issue that prevents Cura from starting. + +*License agreement on the first startup has been added + +[3.0.3] +*Bug fixes +- Add missing libraries for the MakePrintable plugin. + [3.0.0] *Faster start-up Start-up speed has been cut in half compared to the previous version. @@ -30,7 +109,7 @@ The build plate now shows graduations of 10 mm and 1 mm for easy model positioni Extruder tabs have become buttons and icons have been updated. *Add an "Export to Cura" button in SOLIDWORKS -SOLIDWORKS plugin can now be installed using an automatic installer. +A macro can be added to your SOLIDWORKS installation that loads your model into Ultimaker Cura. *Siemens NX macro When a user updates models in Siemens NX and clicks the button, the updated models replace the models opened in Ultimaker Cura. @@ -561,10 +640,10 @@ The new GUI allows custom profiles to load easily and intuitively, directly from *3MF File Loading Support We’re happy to report we now support loading 3MF files. This is a new file format similar to AMF, but freely available. -*Intuitive Cut-Off Object Bottom +*Intuitive Cut-Off Object Bottom We’ve added a feature that allows you to move objects below the build plate. You can either correct a model with a rough bottom, or print only a part of an object. Please note that the implementation differs greatly from the old one when it was just a setting. -*64-bit Windows Builds +*64-bit Windows Builds An optimized 64-bit Windows Cura version is now available. This allows you to load larger model files. *Automatic calculations @@ -629,3 +708,165 @@ Prints the outer walls with a jittering motion to give your object a diffuse fin *Wire Printing The object is printed with a mid-air / net-like structure, following the mesh surface. The build plate will move up and down during diagonal segments. Though not visible in layer view, you can view the result in other software, such as Repetier Host or http://chilipeppr.com/tinyg. + + +[15.06 Beta] + +Cura 15.06 is a new release built from the ground up on a completely new +framework called Uranium. This framework has been designed to make it easier to +extend Cura with additional functionality as well as provide a cleaner UI. + +[15.05.95] + +* Fixed: Selection ghost remains visible after deleting an object +* Fixed: Window does not show up immediately after starting application on OSX +* Fixed: Added display of rotation angle during rotation +* Fixed: Object changes position while rotating/scaling +* Fixed: Loading improvements in the layer view +* Fixed: Added application icons +* Fixed: Improved feedback when loading models +* Fixed: Eject device on MacOSX now provides proper feedback +* Fixed: Make it possible to show retraction settings for UM2 +* Fixed: Opening the machine preferences page will switch to the first available machine +* Fixed: Improved tool handle hit area size +* Fixed: Render lines with a thickness based on screen DPI + +[15.05.94] + +* Added Russian translations +* Fixed: Infill not displayed in layer view +* Fixed: Cannot select/scale/rotate when first activating the tool and then trying to select a model. +* Fixed: Improved font rendering on Windows +* Fixed: Help > Show Documentation crashes Cura on Windows +* Fixed: "There is no disk in the drive" repeating messages on Windows +* Fixed: Retraction settings not visible for Ultimaker2 +* Fixed: Display rotation angle when rotating an object +* Fixed: Time/Quality slider values are properly rounded +* Fixed: Improved clarity of buttons and text +* Fixed: No indication that anything is happening when loading a model +* Fixed: Eject device now works on Windows + +[15.05.93] + +* Fixed: No shortcuts for moving up/down layers in layer view. +* Fixed: Last view layers could not be scrolled through in layer view. +* Fixed: Files provided on command line would not actually show up on the build + platform. +* Fixed: Render a ghost of the selection in Layer view to make the actual object + position clear. +* Fixed: Showing a menu would clear the selection. +* Fixed: Size and scaling factor display for scale tool. +* Fixed: Missing background for additional tool controls. +* Fixed: Loading message times out when loading large files. +* Fixed: Show recent files in the file menu. +* Fixed: Windows installer will now install MSVC 2010 redistributable, to + prevent issues with missing DLL's. +* Fixed: Collapsed/expanded state of setting categories not stored. + +[15.05.91] + +* There is now a working MacOSX version. Currently it supports OSX 10.7 and + higher. +* Fixed: Need to deselect before selecting a different object. +* Fixed: Object can be moved on Z axis. +* Fixed: Error values should be considered invalid values and will not trigger a + slice. +* Fixed: Text fields used a locale-aware validator while the underlying code did + not. +* Fixed: Text fields will trigger a slice on text change, not only after focus + change/enter press. +* Fixed: Rotate Tool snaps to incorrect value. +* Fixed: Object Collision would only moved objects to the right. +* Fixed: Object Collision would move the selected object when it should not. +* Fixed: Camera panning now works correctly instead of doing nothing. +* Fixed: Camera would flip around center point at maximum rotation. +* Fixed: Build platform grid blocked view from below objects. +* Fixed: Viewport on MacOSX with high-DPI screens was only taking 1/4th of the +window + +[15.05.90] + +* Fixed: Additional UI elements for tools and views not loading. +* Fixed: Double click needed to change setting dialog page. +* Fixed: Context menu entries (reload, center object, etc.) not working. +* Fixed: "Open With" or passing files from command line not working. +* Fixed: "Reload All" would not reload files. + +In addition, a lot of work has gone into getting a usable Mac OSX version. + +New Features +------------ + +* Plugin based system + The Uranium framework provides us with a plugin-based system + that provides additional flexibility when extending Cura. Think + of new views, tools, file formats, etc. This is probably the + biggest new feature. +* Improved UI + The UI has received a complete overhaul. +* Time-Quality Slider + The 4 static quick print profiles have been replaced with + a slider that should make it easier to find the right spot + between print time and print quality. +* More Settings + The Advanced mode is now configurable and can show many + additional settings that were previously not available, while at + the same time not overwhelming new users with too many settings. + Custom set of visible settings can be created by the user. +* Support for high-DPI screens + The refreshed UI has been designed with high-DPI screens in + mind which should improve the experience of Cura on such + devices. +* Improved language support + (Not yet available for the Beta release.) +* Improved support structure generation + The new version of the CuraEngine now features improved + support generation algorithms and additional options for support + structure generation. +* Experimental Feature: Wire Printing + Wire Printing has been added as an experimental new feature. It + will print objects as a structure of lines. It can be enabled by + from Advanced Mode -> Fixes -> Wire Printing. +* Undo/Redo + It is now possible to undo and redo most scene operations, like + moving or rotating objects. + +Features from earlier versions not (yet) in this release +-------------------------------------------------------- + +* The All-at-once/One-at-a-time toggle is not available. + We are working on an improved implementation of this mechanism + but it will not be available for this release. +* No dual extrusion features are available yet. + We are working on a completely new workflow for this but this + needs additional time. +* “Lay Flat” has been removed. + The existing implementation was unfortunately not salvageable. + We will be looking into an improved implementation for this + feature. +* "Split Object Into Parts" has been removed. + Due to the same reason as Lay Flat. +* Support for AMF and DAE file formats has been removed. + Both of these will be implemented as plugins in the future. +* Support for directly loading a GCode file is not yet available. + This will be implemented as a plugin in the future. +* Support for PNG, JPG and other image formats has been removed. + These can be supported by a plugin with an improved UI. +* Support for loading Minecraft levels has been removed. + This can be implemented as a plugin. +* Windows XP support has been dropped. + Microsoft is no longer supporting xp, so they no longer back + port certain features that we require. +* X-Ray view is missing. + Will be implemented as a (you might have guessed it) plugin. +* Fixes: Follow Mesh Surface + Has been removed from the engine, the same result can be + achieved using no infill or top/bottom layers. + +Known Issues +------------ +* Some OBJ files are rendered as black objects due to missing + normals. +* Disabling plugins does not work correctly yet. +* Unicorn occasionally still requires feeding. Do not feed it + after midnight. diff --git a/plugins/CuraEngineBackend/Cura.proto b/plugins/CuraEngineBackend/Cura.proto index c2e4e5bb5f..69612210ec 100644 --- a/plugins/CuraEngineBackend/Cura.proto +++ b/plugins/CuraEngineBackend/Cura.proto @@ -61,6 +61,8 @@ message Polygon { Type type = 1; // Type of move bytes points = 2; // The points of the polygon, or two points if only a line segment (Currently only line segments are used) float line_width = 3; // The width of the line being laid down + float line_thickness = 4; // The thickness of the line being laid down + float line_feedrate = 5; // The feedrate of the line being laid down } message LayerOptimized { @@ -82,6 +84,8 @@ message PathSegment { bytes points = 3; // The points defining the line segments, bytes of float[2/3] array of length N+1 bytes line_type = 4; // Type of line segment as an unsigned char array of length 1 or N, where N is the number of line segments in this path bytes line_width = 5; // The widths of the line segments as bytes of a float array of length 1 or N + bytes line_thickness = 6; // The thickness of the line segments as bytes of a float array of length 1 or N + bytes line_feedrate = 7; // The feedrate of the line segments as bytes of a float array of length 1 or N } diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index 914aa1dee0..74dd515951 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -16,6 +16,7 @@ from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Qt.Duration import DurationFormat from PyQt5.QtCore import QObject, pyqtSlot +from collections import defaultdict from cura.Settings.ExtruderManager import ExtruderManager from . import ProcessSlicedLayersJob from . import StartSliceJob @@ -69,9 +70,10 @@ class CuraEngineBackend(QObject, Backend): # Workaround to disable layer view processing if layer view is not active. self._layer_view_active = False Application.getInstance().getController().activeViewChanged.connect(self._onActiveViewChanged) + Application.getInstance().getBuildPlateModel().activeBuildPlateChanged.connect(self._onActiveViewChanged) self._onActiveViewChanged() self._stored_layer_data = [] - self._stored_optimized_layer_data = [] + self._stored_optimized_layer_data = {} # key is build plate number, then arrays are stored until they go to the ProcessSlicesLayersJob self._scene = Application.getInstance().getController().getScene() self._scene.sceneChanged.connect(self._onSceneChanged) @@ -86,6 +88,7 @@ class CuraEngineBackend(QObject, Backend): # self._global_container_stack = None Application.getInstance().globalContainerStackChanged.connect(self._onGlobalStackChanged) + Application.getInstance().getExtruderManager().activeExtruderChanged.connect(self._onGlobalStackChanged) self._onGlobalStackChanged() Application.getInstance().stacksValidationFinished.connect(self._onStackErrorCheckFinished) @@ -104,17 +107,18 @@ class CuraEngineBackend(QObject, Backend): self._message_handlers["cura.proto.SlicingFinished"] = self._onSlicingFinishedMessage self._start_slice_job = None + self._start_slice_job_build_plate = None self._slicing = False # Are we currently slicing? self._restart = False # Back-end is currently restarting? self._tool_active = False # If a tool is active, some tasks do not have to do anything self._always_restart = True # Always restart the engine when starting a new slice. Don't keep the process running. TODO: Fix engine statelessness. self._process_layers_job = None # The currently active job to process layers, or None if it is not processing layers. - self._need_slicing = False + self._build_plates_to_be_sliced = [] # what needs slicing? self._engine_is_fresh = True # Is the newly started engine used before or not? self._backend_log_max_lines = 20000 # Maximum number of lines to buffer self._error_message = None # Pop-up message that shows errors. - self._last_num_objects = 0 # Count number of objects to see if there is something changed + self._last_num_objects = defaultdict(int) # Count number of objects to see if there is something changed self._postponed_scene_change_sources = [] # scene change is postponed (by a tool) self.backendQuit.connect(self._onBackendQuit) @@ -173,6 +177,7 @@ class CuraEngineBackend(QObject, Backend): self._createSocket() if self._process_layers_job: # We were processing layers. Stop that, the layers are going to change soon. + Logger.log("d", "Aborting process layers job...") self._process_layers_job.abort() self._process_layers_job = None @@ -189,17 +194,34 @@ class CuraEngineBackend(QObject, Backend): ## Perform a slice of the scene. def slice(self): + Logger.log("d", "starting to slice!") self._slice_start_time = time() - if not self._need_slicing: + if not self._build_plates_to_be_sliced: self.processingProgress.emit(1.0) self.backendStateChange.emit(BackendState.Done) Logger.log("w", "Slice unnecessary, nothing has changed that needs reslicing.") return - if Application.getInstance().getPrintInformation(): - Application.getInstance().getPrintInformation().setToZeroPrintInformation() + + if self._process_layers_job: + Logger.log("d", " ## Process layers job still busy, trying later") + self._invokeSlice() + return + + # see if we really have to slice + active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate + build_plate_to_be_sliced = self._build_plates_to_be_sliced.pop(0) + Logger.log("d", "Going to slice build plate [%s]!" % build_plate_to_be_sliced) + num_objects = self._numObjects() + if build_plate_to_be_sliced not in num_objects or num_objects[build_plate_to_be_sliced] == 0: + Logger.log("d", "Build plate %s has 0 objects to be sliced, skipping", build_plate_to_be_sliced) + self._invokeSlice() + return self._stored_layer_data = [] - self._stored_optimized_layer_data = [] + self._stored_optimized_layer_data[build_plate_to_be_sliced] = [] + + if Application.getInstance().getPrintInformation() and build_plate_to_be_sliced == active_build_plate: + Application.getInstance().getPrintInformation().setToZeroPrintInformation(build_plate_to_be_sliced) if self._process is None: self._createSocket() @@ -209,12 +231,16 @@ class CuraEngineBackend(QObject, Backend): self.processingProgress.emit(0.0) self.backendStateChange.emit(BackendState.NotStarted) - self._scene.gcode_list = [] + if not hasattr(self._scene, "gcode_list"): + self._scene.gcode_list = {} + self._scene.gcode_list[build_plate_to_be_sliced] = [] #[] indexed by build plate number self._slicing = True self.slicingStarted.emit() slice_message = self._socket.createMessage("cura.proto.Slice") self._start_slice_job = StartSliceJob.StartSliceJob(slice_message) + self._start_slice_job_build_plate = build_plate_to_be_sliced + self._start_slice_job.setBuildPlate(self._start_slice_job_build_plate) self._start_slice_job.start() self._start_slice_job.finished.connect(self._onStartSliceCompleted) @@ -223,7 +249,8 @@ class CuraEngineBackend(QObject, Backend): def _terminate(self): self._slicing = False self._stored_layer_data = [] - self._stored_optimized_layer_data = [] + if self._start_slice_job_build_plate in self._stored_optimized_layer_data: + del self._stored_optimized_layer_data[self._start_slice_job_build_plate] if self._start_slice_job is not None: self._start_slice_job.cancel() @@ -293,7 +320,7 @@ 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", "Unable to slice")) self._error_message.show() self.backendStateChange.emit(BackendState.Error) @@ -301,6 +328,26 @@ class CuraEngineBackend(QObject, Backend): self.backendStateChange.emit(BackendState.NotStarted) return + elif job.getResult() == StartSliceJob.StartJobResult.ObjectSettingError: + errors = {} + for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): + stack = node.callDecoration("getStack") + if not stack: + continue + for key in stack.getErrorKeys(): + definition = self._global_container_stack.getBottom().findDefinitions(key = key) + if not definition: + Logger.log("e", "When checking settings for errors, unable to find definition for key {key} in per-object stack.".format(key = key)) + continue + definition = definition[0] + errors[key] = definition.label + error_labels = ", ".join(errors.values()) + self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}").format(error_labels = error_labels), + title = catalog.i18nc("@info:title", "Unable to slice")) + self._error_message.show() + self.backendStateChange.emit(BackendState.Error) + return + 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."), @@ -310,15 +357,6 @@ class CuraEngineBackend(QObject, Backend): else: self.backendStateChange.emit(BackendState.NotStarted) - 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", "Unable to slice")) - self._error_message.show() - self.backendStateChange.emit(BackendState.Error) - else: - self.backendStateChange.emit(BackendState.NotStarted) - return # Preparation completed, send it to the backend. self._socket.sendMessage(job.getSliceMessage()) @@ -342,7 +380,7 @@ class CuraEngineBackend(QObject, Backend): self.backendStateChange.emit(BackendState.Disabled) gcode_list = node.callDecoration("getGCodeList") if gcode_list is not None: - self._scene.gcode_list = gcode_list + self._scene.gcode_list[node.callDecoration("getBuildPlateNumber")] = gcode_list if self._use_timer == enable_timer: return self._use_timer @@ -354,33 +392,48 @@ class CuraEngineBackend(QObject, Backend): self.disableTimer() return False + ## Return a dict with number of objects per build plate + def _numObjects(self): + num_objects = defaultdict(int) + for node in DepthFirstIterator(self._scene.getRoot()): + # Only count sliceable objects + if node.callDecoration("isSliceable"): + build_plate_number = node.callDecoration("getBuildPlateNumber") + num_objects[build_plate_number] += 1 + return num_objects + ## Listener for when the scene has changed. # # This should start a slice if the scene is now ready to slice. # # \param source The scene node that was changed. def _onSceneChanged(self, source): - if type(source) is not SceneNode: + if not issubclass(type(source), SceneNode): return - root_scene_nodes_changed = False + build_plate_changed = set() + source_build_plate_number = source.callDecoration("getBuildPlateNumber") if source == self._scene.getRoot(): - num_objects = 0 - for node in DepthFirstIterator(self._scene.getRoot()): - # Only count sliceable objects - if node.callDecoration("isSliceable"): - num_objects += 1 - if num_objects != self._last_num_objects: - self._last_num_objects = num_objects - root_scene_nodes_changed = True - else: - return + # we got the root node + num_objects = self._numObjects() + for build_plate_number in list(self._last_num_objects.keys()) + list(num_objects.keys()): + if build_plate_number not in self._last_num_objects or num_objects[build_plate_number] != self._last_num_objects[build_plate_number]: + self._last_num_objects[build_plate_number] = num_objects[build_plate_number] + build_plate_changed.add(build_plate_number) + else: + # we got a single scenenode + if not source.callDecoration("isGroup"): + if source.getMeshData() is None: + return + if source.getMeshData().getVertices() is None: + return - if not source.callDecoration("isGroup") and not root_scene_nodes_changed: - if source.getMeshData() is None: - return - if source.getMeshData().getVertices() is None: - return + build_plate_changed.add(source_build_plate_number) + + build_plate_changed.discard(None) + build_plate_changed.discard(-1) # object not on build plate + if not build_plate_changed: + return if self._tool_active: # do it later, each source only has to be done once @@ -388,9 +441,17 @@ class CuraEngineBackend(QObject, Backend): self._postponed_scene_change_sources.append(source) return - self.needsSlicing() self.stopSlicing() - self._onChanged() + for build_plate_number in build_plate_changed: + if build_plate_number not in self._build_plates_to_be_sliced: + self._build_plates_to_be_sliced.append(build_plate_number) + self.processingProgress.emit(0.0) + self.backendStateChange.emit(BackendState.NotStarted) + # if not self._use_timer: + # With manually having to slice, we want to clear the old invalid layer data. + self._clearLayerData(build_plate_changed) + + self._invokeSlice() ## Called when an error occurs in the socket connection towards the engine. # @@ -410,16 +471,21 @@ class CuraEngineBackend(QObject, Backend): Logger.log("w", "A socket error caused the connection to be reset") ## Remove old layer data (if any) - def _clearLayerData(self): + def _clearLayerData(self, build_plate_numbers = set()): for node in DepthFirstIterator(self._scene.getRoot()): if node.callDecoration("getLayerData"): - node.getParent().removeChild(node) - break + if not build_plate_numbers or node.callDecoration("getBuildPlateNumber") in build_plate_numbers: + node.getParent().removeChild(node) - ## Convenient function: set need_slicing, emit state and clear layer data + def markSliceAll(self): + for build_plate_number in range(Application.getInstance().getBuildPlateModel().maxBuildPlate + 1): + if build_plate_number not in self._build_plates_to_be_sliced: + self._build_plates_to_be_sliced.append(build_plate_number) + + ## Convenient function: mark everything to slice, emit state and clear layer data def needsSlicing(self): self.stopSlicing() - self._need_slicing = True + self.markSliceAll() self.processingProgress.emit(0.0) self.backendStateChange.emit(BackendState.NotStarted) if not self._use_timer: @@ -441,7 +507,7 @@ class CuraEngineBackend(QObject, Backend): def _onStackErrorCheckFinished(self): self._is_error_check_scheduled = False - if not self._slicing and self._need_slicing: + if not self._slicing and self._build_plates_to_be_sliced: #self._need_slicing: self.needsSlicing() self._onChanged() @@ -455,7 +521,7 @@ class CuraEngineBackend(QObject, Backend): # # \param message The protobuf message containing sliced layer data. def _onOptimizedLayerMessage(self, message): - self._stored_optimized_layer_data.append(message) + self._stored_optimized_layer_data[self._start_slice_job_build_plate].append(message) ## Called when a progress message is received from the engine. # @@ -464,6 +530,16 @@ class CuraEngineBackend(QObject, Backend): self.processingProgress.emit(message.amount) self.backendStateChange.emit(BackendState.Processing) + # testing + def _invokeSlice(self): + if self._use_timer: + # if the error check is scheduled, wait for the error check finish signal to trigger auto-slice, + # otherwise business as usual + if self._is_error_check_scheduled: + self._change_timer.stop() + else: + self._change_timer.start() + ## Called when the engine sends a message that slicing is finished. # # \param message The protobuf message signalling that slicing is finished. @@ -471,36 +547,44 @@ class CuraEngineBackend(QObject, Backend): self.backendStateChange.emit(BackendState.Done) self.processingProgress.emit(1.0) - for line in self._scene.gcode_list: + gcode_list = self._scene.gcode_list[self._start_slice_job_build_plate] + for index, line in enumerate(gcode_list): replaced = line.replace("{print_time}", str(Application.getInstance().getPrintInformation().currentPrintTime.getDisplayString(DurationFormat.Format.ISO8601))) replaced = replaced.replace("{filament_amount}", str(Application.getInstance().getPrintInformation().materialLengths)) replaced = replaced.replace("{filament_weight}", str(Application.getInstance().getPrintInformation().materialWeights)) replaced = replaced.replace("{filament_cost}", str(Application.getInstance().getPrintInformation().materialCosts)) replaced = replaced.replace("{jobname}", str(Application.getInstance().getPrintInformation().jobName)) - self._scene.gcode_list[self._scene.gcode_list.index(line)] = replaced + gcode_list[index] = replaced self._slicing = False - self._need_slicing = False Logger.log("d", "Slicing took %s seconds", time() - self._slice_start_time ) - if self._layer_view_active and (self._process_layers_job is None or not self._process_layers_job.isRunning()): - self._process_layers_job = ProcessSlicedLayersJob.ProcessSlicedLayersJob(self._stored_optimized_layer_data) - self._process_layers_job.finished.connect(self._onProcessLayersFinished) - self._process_layers_job.start() - self._stored_optimized_layer_data = [] + + # See if we need to process the sliced layers job. + active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate + if self._layer_view_active and (self._process_layers_job is None or not self._process_layers_job.isRunning()) and active_build_plate == self._start_slice_job_build_plate: + self._startProcessSlicedLayersJob(active_build_plate) + # self._onActiveViewChanged() + self._start_slice_job_build_plate = None + + Logger.log("d", "See if there is more to slice...") + # Somehow this results in an Arcus Error + # self.slice() + # Testing call slice again, allow backend to restart by using the timer + self._invokeSlice() ## Called when a g-code message is received from the engine. # # \param message The protobuf message containing g-code, encoded as UTF-8. def _onGCodeLayerMessage(self, message): - self._scene.gcode_list.append(message.data.decode("utf-8", "replace")) + self._scene.gcode_list[self._start_slice_job_build_plate].append(message.data.decode("utf-8", "replace")) ## Called when a g-code prefix message is received from the engine. # # \param message The protobuf message containing the g-code prefix, # encoded as UTF-8. def _onGCodePrefixMessage(self, message): - self._scene.gcode_list.insert(0, message.data.decode("utf-8", "replace")) + self._scene.gcode_list[self._start_slice_job_build_plate].insert(0, message.data.decode("utf-8", "replace")) ## Creates a new socket connection. def _createSocket(self): @@ -530,7 +614,7 @@ class CuraEngineBackend(QObject, Backend): material_amounts.append(message.getRepeatedMessage("materialEstimates", index).material_amount) times = self._parseMessagePrintTimes(message) - self.printDurationMessage.emit(times, material_amounts) + self.printDurationMessage.emit(self._start_slice_job_build_plate, times, material_amounts) ## Called for parsing message to retrieve estimated time per feature # @@ -584,19 +668,25 @@ class CuraEngineBackend(QObject, Backend): source = self._postponed_scene_change_sources.pop(0) self._onSceneChanged(source) + def _startProcessSlicedLayersJob(self, build_plate_number): + self._process_layers_job = ProcessSlicedLayersJob.ProcessSlicedLayersJob(self._stored_optimized_layer_data[build_plate_number]) + self._process_layers_job.setBuildPlate(build_plate_number) + self._process_layers_job.finished.connect(self._onProcessLayersFinished) + self._process_layers_job.start() + ## Called when the user changes the active view mode. def _onActiveViewChanged(self): - if Application.getInstance().getController().getActiveView(): - view = Application.getInstance().getController().getActiveView() - if view.getPluginId() == "LayerView": # If switching to layer view, we should process the layers if that hasn't been done yet. + application = Application.getInstance() + view = application.getController().getActiveView() + if view: + active_build_plate = application.getBuildPlateModel().activeBuildPlate + if view.getPluginId() == "SimulationView": # If switching to layer view, we should process the layers if that hasn't been done yet. self._layer_view_active = True # There is data and we're not slicing at the moment # if we are slicing, there is no need to re-calculate the data as it will be invalid in a moment. - if self._stored_optimized_layer_data and not self._slicing: - self._process_layers_job = ProcessSlicedLayersJob.ProcessSlicedLayersJob(self._stored_optimized_layer_data) - self._process_layers_job.finished.connect(self._onProcessLayersFinished) - self._process_layers_job.start() - self._stored_optimized_layer_data = [] + # TODO: what build plate I am slicing + if active_build_plate in self._stored_optimized_layer_data and not self._slicing and not self._process_layers_job: + self._startProcessSlicedLayersJob(active_build_plate) else: self._layer_view_active = False @@ -632,7 +722,10 @@ class CuraEngineBackend(QObject, Backend): self._onChanged() def _onProcessLayersFinished(self, job): + del self._stored_optimized_layer_data[job.getBuildPlate()] self._process_layers_job = None + Logger.log("d", "See if there is more to slice(2)...") + self._invokeSlice() ## Connect slice function to timer. def enableTimer(self): diff --git a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py index a352564bc2..be9c3f73f0 100644 --- a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py +++ b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py @@ -4,7 +4,6 @@ import gc from UM.Job import Job -from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Scene.SceneNode import SceneNode from UM.Application import Application from UM.Mesh.MeshData import MeshData @@ -17,6 +16,7 @@ from UM.Logger import Logger from UM.Math.Vector import Vector +from cura.Scene.BuildPlateDecorator import BuildPlateDecorator from cura.Settings.ExtruderManager import ExtruderManager from cura import LayerDataBuilder from cura import LayerDataDecorator @@ -49,6 +49,7 @@ class ProcessSlicedLayersJob(Job): self._scene = Application.getInstance().getController().getScene() self._progress_message = Message(catalog.i18nc("@info:status", "Processing Layers"), 0, False, -1) self._abort_requested = False + self._build_plate_number = None ## Aborts the processing of layers. # @@ -59,9 +60,18 @@ class ProcessSlicedLayersJob(Job): def abort(self): self._abort_requested = True + def setBuildPlate(self, new_value): + self._build_plate_number = new_value + + def getBuildPlate(self): + return self._build_plate_number + def run(self): + Logger.log("d", "Processing new layer for build plate %s..." % self._build_plate_number) start_time = time() - if Application.getInstance().getController().getActiveView().getPluginId() == "LayerView": + view = Application.getInstance().getController().getActiveView() + if view.getPluginId() == "SimulationView": + view.resetLayerData() self._progress_message.show() Job.yieldThread() if self._abort_requested: @@ -72,16 +82,7 @@ class ProcessSlicedLayersJob(Job): Application.getInstance().getController().activeViewChanged.connect(self._onActiveViewChanged) new_node = SceneNode() - - ## Remove old layer data (if any) - for node in DepthFirstIterator(self._scene.getRoot()): - if node.callDecoration("getLayerData"): - node.getParent().removeChild(node) - break - if self._abort_requested: - if self._progress_message: - self._progress_message.hide() - return + new_node.addDecorator(BuildPlateDecorator(self._build_plate_number)) # Force garbage collection. # For some reason, Python has a tendency to keep the layer data @@ -95,20 +96,27 @@ class ProcessSlicedLayersJob(Job): # Find the minimum layer number # When using a raft, the raft layers are sent as layers < 0. Instead of allowing layers < 0, we - # instead simply offset all other layers so the lowest layer is always 0. + # instead simply offset all other layers so the lowest layer is always 0. It could happens that + # the first raft layer has value -8 but there are just 4 raft (negative) layers. min_layer_number = 0 + negative_layers = 0 for layer in self._layers: if layer.id < min_layer_number: min_layer_number = layer.id + if layer.id < 0: + negative_layers += 1 current_layer = 0 for layer in self._layers: - abs_layer_number = layer.id + abs(min_layer_number) + # Negative layers are offset by the minimum layer number, but the positive layers are just + # offset by the number of negative layers so there is no layer gap between raft and model + abs_layer_number = layer.id + abs(min_layer_number) if layer.id < 0 else layer.id + negative_layers layer_data.addLayer(abs_layer_number) this_layer = layer_data.getLayer(abs_layer_number) layer_data.setLayerHeight(abs_layer_number, layer.height) + layer_data.setLayerThickness(abs_layer_number, layer.thickness) for p in range(layer.repeatedMessageCount("path_segment")): polygon = layer.getRepeatedMessage("path_segment", p) @@ -127,10 +135,11 @@ class ProcessSlicedLayersJob(Job): line_widths = numpy.fromstring(polygon.line_width, dtype="f4") # Convert bytearray to numpy array line_widths = line_widths.reshape((-1,1)) # We get a linear list of pairs that make up the points, so make numpy interpret them correctly. - # In the future, line_thicknesses should be given by CuraEngine as well. - # Currently the infill layer thickness also translates to line width - line_thicknesses = numpy.zeros(line_widths.shape, dtype="f4") - line_thicknesses[:] = layer.thickness / 1000 # from micrometer to millimeter + line_thicknesses = numpy.fromstring(polygon.line_thickness, dtype="f4") # Convert bytearray to numpy array + line_thicknesses = line_thicknesses.reshape((-1,1)) # We get a linear list of pairs that make up the points, so make numpy interpret them correctly. + + line_feedrates = numpy.fromstring(polygon.line_feedrate, dtype="f4") # Convert bytearray to numpy array + line_feedrates = line_feedrates.reshape((-1,1)) # We get a linear list of pairs that make up the points, so make numpy interpret them correctly. # Create a new 3D-array, copy the 2D points over and insert the right height. # This uses manual array creation + copy rather than numpy.insert since this is @@ -145,7 +154,7 @@ class ProcessSlicedLayersJob(Job): new_points[:, 1] = points[:, 2] new_points[:, 2] = -points[:, 1] - this_poly = LayerPolygon.LayerPolygon(extruder, line_types, new_points, line_widths, line_thicknesses) + this_poly = LayerPolygon.LayerPolygon(extruder, line_types, new_points, line_widths, line_thicknesses, line_feedrates) this_poly.buildCache() this_layer.polygons.append(this_poly) @@ -218,10 +227,6 @@ class ProcessSlicedLayersJob(Job): if self._progress_message: self._progress_message.setProgress(100) - view = Application.getInstance().getController().getActiveView() - if view.getPluginId() == "LayerView": - view.resetLayerData() - if self._progress_message: self._progress_message.hide() @@ -232,7 +237,7 @@ class ProcessSlicedLayersJob(Job): def _onActiveViewChanged(self): if self.isRunning(): - if Application.getInstance().getController().getActiveView().getPluginId() == "LayerView": + if Application.getInstance().getController().getActiveView().getPluginId() == "SimulationView": 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: diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index a53daa4e63..b0e19e7f39 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -10,15 +10,19 @@ from UM.Job import Job from UM.Application import Application from UM.Logger import Logger -from UM.Scene.SceneNode import SceneNode from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Settings.Validator import ValidatorState from UM.Settings.SettingRelation import RelationType +from cura.Scene.CuraSceneNode import CuraSceneNode as SceneNode from cura.OneAtATimeIterator import OneAtATimeIterator from cura.Settings.ExtruderManager import ExtruderManager + +NON_PRINTING_MESH_SETTINGS = ["anti_overhang_mesh", "infill_mesh", "cutting_mesh"] + + class StartJobResult(IntEnum): Finished = 1 Error = 2 @@ -26,14 +30,38 @@ class StartJobResult(IntEnum): NothingToSlice = 4 MaterialIncompatible = 5 BuildPlateError = 6 + ObjectSettingError = 7 #When an error occurs in per-object settings. ## Formatter class that handles token expansion in start/end gcod class GcodeStartEndFormatter(Formatter): def get_value(self, key, args, kwargs): # [CodeStyle: get_value is an overridden function from the Formatter class] + # The kwargs dictionary contains a dictionary for each stack (with a string of the extruder_nr as their key), + # and a default_extruder_nr to use when no extruder_nr is specified + if isinstance(key, str): try: - return kwargs[key] + extruder_nr = kwargs["default_extruder_nr"] + except ValueError: + extruder_nr = -1 + + key_fragments = [fragment.strip() for fragment in key.split(',')] + if len(key_fragments) == 2: + try: + extruder_nr = int(key_fragments[1]) + except ValueError: + try: + extruder_nr = int(kwargs["-1"][key_fragments[1]]) # get extruder_nr values from the global stack + except (KeyError, ValueError): + # either the key does not exist, or the value is not an int + Logger.log("w", "Unable to determine stack nr '%s' for key '%s' in start/end gcode, using global stack", key_fragments[1], key_fragments[0]) + elif len(key_fragments) != 1: + Logger.log("w", "Incorrectly formatted placeholder '%s' in start/end gcode", key) + return "{" + str(key) + "}" + + key = key_fragments[0] + try: + return kwargs[str(extruder_nr)][key] except KeyError: Logger.log("w", "Unable to replace '%s' placeholder in start/end gcode", key) return "{" + key + "}" @@ -44,24 +72,22 @@ class GcodeStartEndFormatter(Formatter): ## Job class that builds up the message of scene data to send to CuraEngine. class StartSliceJob(Job): - ## Meshes that are sent to the engine regardless of being outside of the - # build volume. - # - # If these settings are True for any mesh, the build volume is ignored. - # Note that Support Mesh is not in here because it actually generates - # g-code in the volume of the mesh. - _not_printed_mesh_settings = {"anti_overhang_mesh", "infill_mesh", "cutting_mesh"} - def __init__(self, slice_message): super().__init__() self._scene = Application.getInstance().getController().getScene() self._slice_message = slice_message self._is_cancelled = False + self._build_plate_number = None + + self._all_extruders_settings = None # cache for all setting values from all stacks (global & extruder) for the current machine def getSliceMessage(self): return self._slice_message + def setBuildPlate(self, build_plate_number): + self._build_plate_number = build_plate_number + ## Check if a stack has any errors. ## returns true if it has errors, false otherwise. def _checkStackForErrors(self, stack): @@ -78,6 +104,10 @@ class StartSliceJob(Job): ## Runs the job that initiates the slicing. def run(self): + if self._build_plate_number is None: + self.setResult(StartJobResult.Error) + return + stack = Application.getInstance().getGlobalContainerStack() if not stack: self.setResult(StartJobResult.Error) @@ -105,13 +135,13 @@ class StartSliceJob(Job): continue if self._checkStackForErrors(node.callDecoration("getStack")): - self.setResult(StartJobResult.SettingError) + self.setResult(StartJobResult.ObjectSettingError) return with self._scene.getSceneLock(): # Remove old layer data. for node in DepthFirstIterator(self._scene.getRoot()): - if node.callDecoration("getLayerData"): + if node.callDecoration("getLayerData") and node.callDecoration("getBuildPlateNumber") == self._build_plate_number: node.getParent().removeChild(node) break @@ -138,13 +168,27 @@ class StartSliceJob(Job): Logger.log("w", "No objects suitable for one at a time found, or no correct order found") else: temp_list = [] + has_printing_mesh = False for node in DepthFirstIterator(self._scene.getRoot()): - if type(node) is SceneNode and node.getMeshData() and node.getMeshData().getVertices() is not None: - if not getattr(node, "_outside_buildarea", False)\ - or (node.callDecoration("getStack") and any(node.callDecoration("getStack").getProperty(setting, "value") for setting in self._not_printed_mesh_settings)): - temp_list.append(node) + if node.callDecoration("isSliceable") and type(node) is SceneNode and node.getMeshData() and node.getMeshData().getVertices() is not None: + per_object_stack = node.callDecoration("getStack") + is_non_printing_mesh = False + if per_object_stack: + is_non_printing_mesh = any(per_object_stack.getProperty(key, "value") for key in NON_PRINTING_MESH_SETTINGS) + + if (node.callDecoration("getBuildPlateNumber") == self._build_plate_number): + if not getattr(node, "_outside_buildarea", False) or is_non_printing_mesh: + temp_list.append(node) + if not is_non_printing_mesh: + has_printing_mesh = True + Job.yieldThread() + #If the list doesn't have any model with suitable settings then clean the list + # otherwise CuraEngine will crash + if not has_printing_mesh: + temp_list.clear() + if temp_list: object_groups.append(temp_list) @@ -158,13 +202,9 @@ class StartSliceJob(Job): self._buildGlobalSettingsMessage(stack) self._buildGlobalInheritsStackMessage(stack) - # Only add extruder stacks if there are multiple extruders - # Single extruder machines only use the global stack to store setting values - if stack.getProperty("machine_extruder_count", "value") > 1: - for extruder_stack in ExtruderManager.getInstance().getMachineExtruders(stack.getId()): - self._buildExtruderMessage(extruder_stack) - else: - self._buildExtruderMessageFromGlobalStack(stack) + # Build messages for extruder stacks + for extruder_stack in ExtruderManager.getInstance().getMachineExtruders(stack.getId()): + self._buildExtruderMessage(extruder_stack) for group in object_groups: group_message = self._slice_message.addRepeatedMessage("object_lists") @@ -208,32 +248,71 @@ class StartSliceJob(Job): def isCancelled(self): return self._is_cancelled - def _expandGcodeTokens(self, key, value, settings): + ## Creates a dictionary of tokens to replace in g-code pieces. + # + # This indicates what should be replaced in the start and end g-codes. + # \param stack The stack to get the settings from to replace the tokens + # with. + # \return A dictionary of replacement tokens to the values they should be + # replaced with. + def _buildReplacementTokens(self, stack) -> dict: + result = {} + for key in stack.getAllKeys(): + result[key] = stack.getProperty(key, "value") + Job.yieldThread() + + result["print_bed_temperature"] = result["material_bed_temperature"] # Renamed settings. + result["print_temperature"] = result["material_print_temperature"] + result["time"] = time.strftime("%H:%M:%S") #Some extra settings. + result["date"] = time.strftime("%d-%m-%Y") + result["day"] = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][int(time.strftime("%w"))] + + initial_extruder_stack = Application.getInstance().getExtruderManager().getUsedExtruderStacks()[0] + initial_extruder_nr = initial_extruder_stack.getProperty("extruder_nr", "value") + result["initial_extruder_nr"] = initial_extruder_nr + + return result + + ## Replace setting tokens in a piece of g-code. + # \param value A piece of g-code to replace tokens in. + # \param default_extruder_nr Stack nr to use when no stack nr is specified, defaults to the global stack + def _expandGcodeTokens(self, value: str, default_extruder_nr: int = -1): + if not self._all_extruders_settings: + global_stack = Application.getInstance().getGlobalContainerStack() + + # NB: keys must be strings for the string formatter + self._all_extruders_settings = { + "-1": self._buildReplacementTokens(global_stack) + } + + for extruder_stack in ExtruderManager.getInstance().getMachineExtruders(global_stack.getId()): + extruder_nr = extruder_stack.getProperty("extruder_nr", "value") + self._all_extruders_settings[str(extruder_nr)] = self._buildReplacementTokens(extruder_stack) + try: # any setting can be used as a token fmt = GcodeStartEndFormatter() - return str(fmt.format(value, **settings)).encode("utf-8") + settings = self._all_extruders_settings.copy() + settings["default_extruder_nr"] = default_extruder_nr + return str(fmt.format(value, **settings)) except: Logger.logException("w", "Unable to do token replacement on start/end gcode") - return str(value).encode("utf-8") + return str(value) ## Create extruder message from stack def _buildExtruderMessage(self, stack): message = self._slice_message.addRepeatedMessage("extruders") message.id = int(stack.getMetaDataEntry("position")) - material_instance_container = stack.findContainer({"type": "material"}) + settings = self._buildReplacementTokens(stack) - settings = {} - for key in stack.getAllKeys(): - settings[key] = stack.getProperty(key, "value") - Job.yieldThread() + # Also send the material GUID. This is a setting in fdmprinter, but we have no interface for it. + settings["material_guid"] = stack.material.getMetaDataEntry("GUID", "") - settings["print_bed_temperature"] = settings["material_bed_temperature"] #Renamed settings. - settings["print_temperature"] = settings["material_print_temperature"] - settings["time"] = time.strftime("%H:%M:%S") #Some extra settings. - settings["date"] = time.strftime("%d-%m-%Y") - settings["day"] = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][int(time.strftime("%w"))] + # Replace the setting tokens in start and end g-code. + extruder_nr = stack.getProperty("extruder_nr", "value") + settings["machine_extruder_start_code"] = self._expandGcodeTokens(settings["machine_extruder_start_code"], extruder_nr) + settings["machine_extruder_end_code"] = self._expandGcodeTokens(settings["machine_extruder_end_code"], extruder_nr) for key, value in settings.items(): # Do not send settings that are not settable_per_extruder. @@ -241,26 +320,7 @@ class StartSliceJob(Job): continue setting = message.getMessage("settings").addRepeatedMessage("settings") setting.name = key - if key == "material_guid" and material_instance_container: - # Also send the material GUID. This is a setting in fdmprinter, but we have no interface for it. - setting.value = str(material_instance_container.getMetaDataEntry("GUID", "")).encode("utf-8") - elif key == "machine_extruder_start_code" or key == "machine_extruder_end_code": - setting.value = self._expandGcodeTokens(key, value, settings) - else: - setting.value = str(stack.getProperty(key, "value")).encode("utf-8") - Job.yieldThread() - - ## Create extruder message from global stack - def _buildExtruderMessageFromGlobalStack(self, stack): - message = self._slice_message.addRepeatedMessage("extruders") - - for key in stack.getAllKeys(): - # Do not send settings that are not settable_per_extruder. - if not stack.getProperty(key, "settable_per_extruder"): - continue - setting = message.getMessage("settings").addRepeatedMessage("settings") - setting.name = key - setting.value = str(stack.getProperty(key, "value")).encode("utf-8") + setting.value = str(value).encode("utf-8") Job.yieldThread() ## Sends all global settings to the engine. @@ -268,33 +328,28 @@ class StartSliceJob(Job): # The settings are taken from the global stack. This does not include any # per-extruder settings or per-object settings. def _buildGlobalSettingsMessage(self, stack): - keys = stack.getAllKeys() - settings = {} - for key in keys: - settings[key] = stack.getProperty(key, "value") - Job.yieldThread() + settings = self._buildReplacementTokens(stack) + # Pre-compute material material_bed_temp_prepend and material_print_temp_prepend start_gcode = settings["machine_start_gcode"] - #Pre-compute material material_bed_temp_prepend and material_print_temp_prepend bed_temperature_settings = {"material_bed_temperature", "material_bed_temperature_layer_0"} settings["material_bed_temp_prepend"] = all(("{" + setting + "}" not in start_gcode for setting in bed_temperature_settings)) print_temperature_settings = {"material_print_temperature", "material_print_temperature_layer_0", "default_material_print_temperature", "material_initial_print_temperature", "material_final_print_temperature", "material_standby_temperature"} settings["material_print_temp_prepend"] = all(("{" + setting + "}" not in start_gcode for setting in print_temperature_settings)) - settings["print_bed_temperature"] = settings["material_bed_temperature"] - settings["print_temperature"] = settings["material_print_temperature"] + # Replace the setting tokens in start and end g-code. + # Use values from the first used extruder by default so we get the expected temperatures + initial_extruder_stack = Application.getInstance().getExtruderManager().getUsedExtruderStacks()[0] + initial_extruder_nr = initial_extruder_stack.getProperty("extruder_nr", "value") - settings["time"] = time.strftime('%H:%M:%S') - settings["date"] = time.strftime('%d-%m-%Y') - settings["day"] = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][int(time.strftime('%w'))] + settings["machine_start_gcode"] = self._expandGcodeTokens(settings["machine_start_gcode"], initial_extruder_nr) + settings["machine_end_gcode"] = self._expandGcodeTokens(settings["machine_end_gcode"], initial_extruder_nr) - for key, value in settings.items(): #Add all submessages for each individual setting. + # Add all sub-messages for each individual setting. + for key, value in settings.items(): setting_message = self._slice_message.getMessage("global_settings").addRepeatedMessage("settings") setting_message.name = key - if key == "machine_start_gcode" or key == "machine_end_gcode": #If it's a g-code message, use special formatting. - setting_message.value = self._expandGcodeTokens(key, value, settings) - else: - setting_message.value = str(value).encode("utf-8") + setting_message.value = str(value).encode("utf-8") Job.yieldThread() ## Sends for some settings which extruder they should fallback to if not @@ -364,3 +419,4 @@ class StartSliceJob(Job): relations_set.add(relation.target.key) self._addRelations(relations_set, relation.target.relations) + diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py index 5ee3493549..458aca5787 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateChecker.py @@ -1,6 +1,9 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from PyQt5.QtCore import QUrl +from PyQt5.QtGui import QDesktopServices + from UM.Extension import Extension from UM.Preferences import Preferences from UM.Logger import Logger @@ -32,6 +35,17 @@ class FirmwareUpdateChecker(Extension): if Preferences.getInstance().getValue("info/automatic_update_check"): ContainerRegistry.getInstance().containerAdded.connect(self._onContainerAdded) + self._download_url = None + + ## Callback for the message that is spawned when there is a new version. + def _onActionTriggered(self, message, action): + if action == "download": + if self._download_url is not None: + QDesktopServices.openUrl(QUrl(self._download_url)) + + def _onSetDownloadUrl(self, download_url): + self._download_url = download_url + def _onContainerAdded(self, container): # Only take care when a new GlobalStack was added if isinstance(container, GlobalStack): @@ -45,5 +59,7 @@ 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.JEDI_VERSION_URL) + job = FirmwareUpdateCheckerJob(container = container, silent = silent, url = self.JEDI_VERSION_URL, + callback = self._onActionTriggered, + set_download_url_callback = self._onSetDownloadUrl) job.start() diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py index 8f299761fc..6dd7338cfd 100644 --- a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py +++ b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py @@ -10,30 +10,21 @@ 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, container = None, silent = False, url = None): + def __init__(self, container = None, silent = False, url = None, callback = None, set_download_url_callback = 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. - - ## 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)) + self._callback = callback + self._set_download_url_callback = set_download_url_callback 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 @@ -70,13 +61,14 @@ 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 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), + message = Message(i18n_catalog.i18nc("@info Don't translate {machine_name}, since it gets replaced by a printer name!", "New features are available for your {machine_name}! It is recommended to update the firmware on your printer.").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]") + message.addAction("download", i18n_catalog.i18nc("@action:button", "How to update"), "[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) + if self._set_download_url_callback: + self._set_download_url_callback("https://ultimaker.com/en/resources/20500-upgrade-firmware") + message.actionTriggered.connect(self._callback) message.show() except Exception as e: diff --git a/plugins/GCodeReader/FlavorParser.py b/plugins/GCodeReader/FlavorParser.py new file mode 100644 index 0000000000..fa5d6da243 --- /dev/null +++ b/plugins/GCodeReader/FlavorParser.py @@ -0,0 +1,462 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from UM.Application import Application +from UM.Backend import Backend +from UM.Job import Job +from UM.Logger import Logger +from UM.Math.AxisAlignedBox import AxisAlignedBox +from UM.Math.Vector import Vector +from UM.Message import Message +from UM.Scene.SceneNode import SceneNode +from UM.i18n import i18nCatalog +from UM.Preferences import Preferences + +catalog = i18nCatalog("cura") + +from cura import LayerDataBuilder +from cura import LayerDataDecorator +from cura.LayerPolygon import LayerPolygon +from cura.Scene.GCodeListDecorator import GCodeListDecorator +from cura.Settings.ExtruderManager import ExtruderManager + +import numpy +import math +import re +from collections import namedtuple + +# This parser is intented for interpret the common firmware codes among all the different flavors +class FlavorParser: + + def __init__(self): + Application.getInstance().hideMessageSignal.connect(self._onHideMessage) + self._cancelled = False + self._message = None + self._layer_number = 0 + self._extruder_number = 0 + self._clearValues() + self._scene_node = None + # X, Y, Z position, F feedrate and E extruder values are stored + self._position = namedtuple('Position', ['x', 'y', 'z', 'f', 'e']) + self._is_layers_in_file = False # Does the Gcode have the layers comment? + self._extruder_offsets = {} # Offsets for multi extruders. key is index, value is [x-offset, y-offset] + self._current_layer_thickness = 0.2 # default + + Preferences.getInstance().addPreference("gcodereader/show_caution", True) + + def _clearValues(self): + self._filament_diameter = 2.85 + self._extruder_number = 0 + self._extrusion_length_offset = [0] + self._layer_type = LayerPolygon.Inset0Type + self._layer_number = 0 + self._previous_z = 0 + self._layer_data_builder = LayerDataBuilder.LayerDataBuilder() + self._center_is_zero = False + self._is_absolute_positioning = True # It can be absolute (G90) or relative (G91) + self._is_absolute_extrusion = True # It can become absolute (M82, default) or relative (M83) + + @staticmethod + def _getValue(line, code): + n = line.find(code) + if n < 0: + return None + n += len(code) + pattern = re.compile("[;\s]") + match = pattern.search(line, n) + m = match.start() if match is not None else -1 + try: + if m < 0: + return line[n:] + return line[n:m] + except: + return None + + def _getInt(self, line, code): + value = self._getValue(line, code) + try: + return int(value) + except: + return None + + def _getFloat(self, line, code): + value = self._getValue(line, code) + try: + return float(value) + except: + return None + + def _onHideMessage(self, message): + if message == self._message: + self._cancelled = True + + @staticmethod + def _getNullBoundingBox(): + return AxisAlignedBox(minimum=Vector(0, 0, 0), maximum=Vector(10, 10, 10)) + + def _createPolygon(self, layer_thickness, path, extruder_offsets): + countvalid = 0 + for point in path: + if point[5] > 0: + countvalid += 1 + if countvalid >= 2: + # we know what to do now, no need to count further + continue + if countvalid < 2: + return False + try: + self._layer_data_builder.addLayer(self._layer_number) + self._layer_data_builder.setLayerHeight(self._layer_number, path[0][2]) + self._layer_data_builder.setLayerThickness(self._layer_number, layer_thickness) + this_layer = self._layer_data_builder.getLayer(self._layer_number) + except ValueError: + return False + count = len(path) + line_types = numpy.empty((count - 1, 1), numpy.int32) + line_widths = numpy.empty((count - 1, 1), numpy.float32) + line_thicknesses = numpy.empty((count - 1, 1), numpy.float32) + line_feedrates = numpy.empty((count - 1, 1), numpy.float32) + line_widths[:, 0] = 0.35 # Just a guess + line_thicknesses[:, 0] = layer_thickness + points = numpy.empty((count, 3), numpy.float32) + extrusion_values = numpy.empty((count, 1), numpy.float32) + i = 0 + for point in path: + points[i, :] = [point[0] + extruder_offsets[0], point[2], -point[1] - extruder_offsets[1]] + extrusion_values[i] = point[4] + if i > 0: + line_feedrates[i - 1] = point[3] + line_types[i - 1] = point[5] + if point[5] in [LayerPolygon.MoveCombingType, LayerPolygon.MoveRetractionType]: + line_widths[i - 1] = 0.1 + line_thicknesses[i - 1] = 0.0 # Travels are set as zero thickness lines + else: + line_widths[i - 1] = self._calculateLineWidth(points[i], points[i-1], extrusion_values[i], extrusion_values[i-1], layer_thickness) + i += 1 + + this_poly = LayerPolygon(self._extruder_number, line_types, points, line_widths, line_thicknesses, line_feedrates) + this_poly.buildCache() + + this_layer.polygons.append(this_poly) + return True + + def _createEmptyLayer(self, layer_number): + self._layer_data_builder.addLayer(layer_number) + self._layer_data_builder.setLayerHeight(layer_number, 0) + self._layer_data_builder.setLayerThickness(layer_number, 0) + + def _calculateLineWidth(self, current_point, previous_point, current_extrusion, previous_extrusion, layer_thickness): + # Area of the filament + Af = (self._filament_diameter / 2) ** 2 * numpy.pi + # Length of the extruded filament + de = current_extrusion - previous_extrusion + # Volumne of the extruded filament + dVe = de * Af + # Length of the printed line + dX = numpy.sqrt((current_point[0] - previous_point[0])**2 + (current_point[2] - previous_point[2])**2) + # When the extruder recovers from a retraction, we get zero distance + if dX == 0: + return 0.1 + # Area of the printed line. This area is a rectangle + Ae = dVe / dX + # This area is a rectangle with area equal to layer_thickness * layer_width + line_width = Ae / layer_thickness + + # A threshold is set to avoid weird paths in the GCode + if line_width > 1.2: + return 0.35 + return line_width + + def _gCode0(self, position, params, path): + x, y, z, f, e = position + + if self._is_absolute_positioning: + x = params.x if params.x is not None else x + y = params.y if params.y is not None else y + z = params.z if params.z is not None else z + else: + x += params.x if params.x is not None else 0 + y += params.y if params.y is not None else 0 + z += params.z if params.z is not None else 0 + + f = params.f if params.f is not None else f + + if params.e is not None: + new_extrusion_value = params.e if self._is_absolute_extrusion else e[self._extruder_number] + params.e + if new_extrusion_value > e[self._extruder_number]: + path.append([x, y, z, f, new_extrusion_value + self._extrusion_length_offset[self._extruder_number], self._layer_type]) # extrusion + else: + path.append([x, y, z, f, new_extrusion_value + self._extrusion_length_offset[self._extruder_number], LayerPolygon.MoveRetractionType]) # retraction + e[self._extruder_number] = new_extrusion_value + + # Only when extruding we can determine the latest known "layer height" which is the difference in height between extrusions + # Also, 1.5 is a heuristic for any priming or whatsoever, we skip those. + if z > self._previous_z and (z - self._previous_z < 1.5): + self._current_layer_thickness = z - self._previous_z # allow a tiny overlap + self._previous_z = z + else: + path.append([x, y, z, f, e[self._extruder_number] + self._extrusion_length_offset[self._extruder_number], LayerPolygon.MoveCombingType]) + return self._position(x, y, z, f, e) + + + # G0 and G1 should be handled exactly the same. + _gCode1 = _gCode0 + + ## Home the head. + def _gCode28(self, position, params, path): + return self._position( + params.x if params.x is not None else position.x, + params.y if params.y is not None else position.y, + params.z if params.z is not None else position.z, + position.f, + position.e) + + ## Set the absolute positioning + def _gCode90(self, position, params, path): + self._is_absolute_positioning = True + self._is_absolute_extrusion = True + return position + + ## Set the relative positioning + def _gCode91(self, position, params, path): + self._is_absolute_positioning = False + self._is_absolute_extrusion = False + return position + + ## Reset the current position to the values specified. + # For example: G92 X10 will set the X to 10 without any physical motion. + def _gCode92(self, position, params, path): + if params.e is not None: + # Sometimes a G92 E0 is introduced in the middle of the GCode so we need to keep those offsets for calculate the line_width + self._extrusion_length_offset[self._extruder_number] += position.e[self._extruder_number] - params.e + position.e[self._extruder_number] = params.e + return self._position( + params.x if params.x is not None else position.x, + params.y if params.y is not None else position.y, + params.z if params.z is not None else position.z, + params.f if params.f is not None else position.f, + position.e) + + def processGCode(self, G, line, position, path): + func = getattr(self, "_gCode%s" % G, None) + line = line.split(";", 1)[0] # Remove comments (if any) + if func is not None: + s = line.upper().split(" ") + x, y, z, f, e = None, None, None, None, None + for item in s[1:]: + if len(item) <= 1: + continue + if item.startswith(";"): + continue + if item[0] == "X": + x = float(item[1:]) + if item[0] == "Y": + y = float(item[1:]) + if item[0] == "Z": + z = float(item[1:]) + if item[0] == "F": + f = float(item[1:]) / 60 + if item[0] == "E": + e = float(item[1:]) + if self._is_absolute_positioning and ((x is not None and x < 0) or (y is not None and y < 0)): + self._center_is_zero = True + params = self._position(x, y, z, f, e) + return func(position, params, path) + return position + + def processTCode(self, T, line, position, path): + self._extruder_number = T + if self._extruder_number + 1 > len(position.e): + self._extrusion_length_offset.extend([0] * (self._extruder_number - len(position.e) + 1)) + position.e.extend([0] * (self._extruder_number - len(position.e) + 1)) + return position + + def processMCode(self, M, line, position, path): + pass + + _type_keyword = ";TYPE:" + _layer_keyword = ";LAYER:" + + ## For showing correct x, y offsets for each extruder + def _extruderOffsets(self): + result = {} + for extruder in ExtruderManager.getInstance().getExtruderStacks(): + result[int(extruder.getMetaData().get("position", "0"))] = [ + extruder.getProperty("machine_nozzle_offset_x", "value"), + extruder.getProperty("machine_nozzle_offset_y", "value")] + return result + + def processGCodeFile(self, file_name): + Logger.log("d", "Preparing to load %s" % file_name) + self._cancelled = False + # We obtain the filament diameter from the selected printer to calculate line widths + self._filament_diameter = Application.getInstance().getGlobalContainerStack().getProperty("material_diameter", "value") + + scene_node = SceneNode() + # Override getBoundingBox function of the sceneNode, as this node should return a bounding box, but there is no + # real data to calculate it from. + scene_node.getBoundingBox = self._getNullBoundingBox + + gcode_list = [] + self._is_layers_in_file = False + + Logger.log("d", "Opening file %s" % file_name) + + self._extruder_offsets = self._extruderOffsets() # dict with index the extruder number. can be empty + + with open(file_name, "r") as file: + file_lines = 0 + current_line = 0 + for line in file: + file_lines += 1 + gcode_list.append(line) + if not self._is_layers_in_file and line[:len(self._layer_keyword)] == self._layer_keyword: + self._is_layers_in_file = True + file.seek(0) + + file_step = max(math.floor(file_lines / 100), 1) + + self._clearValues() + + 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() + + Logger.log("d", "Parsing %s..." % file_name) + + current_position = self._position(0, 0, 0, 0, [0]) + current_path = [] + min_layer_number = 0 + negative_layers = 0 + previous_layer = 0 + + for line in file: + if self._cancelled: + Logger.log("d", "Parsing %s cancelled" % file_name) + return None + current_line += 1 + + if current_line % file_step == 0: + self._message.setProgress(math.floor(current_line / file_lines * 100)) + Job.yieldThread() + if len(line) == 0: + continue + + if line.find(self._type_keyword) == 0: + type = line[len(self._type_keyword):].strip() + if type == "WALL-INNER": + self._layer_type = LayerPolygon.InsetXType + elif type == "WALL-OUTER": + self._layer_type = LayerPolygon.Inset0Type + elif type == "SKIN": + self._layer_type = LayerPolygon.SkinType + elif type == "SKIRT": + self._layer_type = LayerPolygon.SkirtType + elif type == "SUPPORT": + self._layer_type = LayerPolygon.SupportType + elif type == "FILL": + self._layer_type = LayerPolygon.InfillType + else: + Logger.log("w", "Encountered a unknown type (%s) while parsing g-code.", type) + + # When the layer change is reached, the polygon is computed so we have just one layer per layer per extruder + if self._is_layers_in_file and line[:len(self._layer_keyword)] == self._layer_keyword: + try: + layer_number = int(line[len(self._layer_keyword):]) + self._createPolygon(self._current_layer_thickness, current_path, self._extruder_offsets.get(self._extruder_number, [0, 0])) + current_path.clear() + + # When using a raft, the raft layers are stored as layers < 0, it mimics the same behavior + # as in ProcessSlicedLayersJob + if layer_number < min_layer_number: + min_layer_number = layer_number + if layer_number < 0: + layer_number += abs(min_layer_number) + negative_layers += 1 + else: + layer_number += negative_layers + + # In case there is a gap in the layer count, empty layers are created + for empty_layer in range(previous_layer + 1, layer_number): + self._createEmptyLayer(empty_layer) + + self._layer_number = layer_number + previous_layer = layer_number + except: + pass + + # This line is a comment. Ignore it (except for the layer_keyword) + if line.startswith(";"): + continue + + G = self._getInt(line, "G") + if G is not None: + # When find a movement, the new posistion is calculated and added to the current_path, but + # don't need to create a polygon until the end of the layer + current_position = self.processGCode(G, line, current_position, current_path) + continue + + # When changing the extruder, the polygon with the stored paths is computed + if line.startswith("T"): + T = self._getInt(line, "T") + if T is not None: + self._createPolygon(self._current_layer_thickness, current_path, self._extruder_offsets.get(self._extruder_number, [0, 0])) + current_path.clear() + + current_position = self.processTCode(T, line, current_position, current_path) + + if line.startswith("M"): + M = self._getInt(line, "M") + self.processMCode(M, line, current_position, current_path) + + # "Flush" leftovers. Last layer paths are still stored + if len(current_path) > 1: + if self._createPolygon(self._current_layer_thickness, current_path, self._extruder_offsets.get(self._extruder_number, [0, 0])): + self._layer_number += 1 + current_path.clear() + + material_color_map = numpy.zeros((10, 4), dtype = numpy.float32) + material_color_map[0, :] = [0.0, 0.7, 0.9, 1.0] + material_color_map[1, :] = [0.7, 0.9, 0.0, 1.0] + layer_mesh = self._layer_data_builder.build(material_color_map) + decorator = LayerDataDecorator.LayerDataDecorator() + decorator.setLayerData(layer_mesh) + scene_node.addDecorator(decorator) + + gcode_list_decorator = GCodeListDecorator() + gcode_list_decorator.setGCodeList(gcode_list) + scene_node.addDecorator(gcode_list_decorator) + + Application.getInstance().getController().getScene().gcode_list = gcode_list + + Logger.log("d", "Finished parsing %s" % file_name) + self._message.hide() + + if self._layer_number == 0: + Logger.log("w", "File %s doesn't contain any valid layers" % file_name) + + settings = Application.getInstance().getGlobalContainerStack() + machine_width = settings.getProperty("machine_width", "value") + machine_depth = settings.getProperty("machine_depth", "value") + + if not self._center_is_zero: + scene_node.setPosition(Vector(-machine_width / 2, 0, machine_depth / 2)) + + Logger.log("d", "Loaded %s" % file_name) + + 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, + title = catalog.i18nc("@info:title", "G-code Details")) + caution_message.show() + + # The "save/print" button's state is bound to the backend state. + backend = Application.getInstance().getBackend() + backend.backendStateChange.emit(Backend.BackendState.Disabled) + + return scene_node diff --git a/plugins/GCodeReader/GCodeReader.py b/plugins/GCodeReader/GCodeReader.py index 9107ec3258..cb2f5d99e0 100755 --- a/plugins/GCodeReader/GCodeReader.py +++ b/plugins/GCodeReader/GCodeReader.py @@ -1,377 +1,44 @@ -# Copyright (c) 2016 Aleph Objects, Inc. +# Copyright (c) 2017 Aleph Objects, Inc. # Cura is released under the terms of the LGPLv3 or higher. -from UM.Application import Application -from UM.Backend import Backend -from UM.Job import Job -from UM.Logger import Logger -from UM.Math.AxisAlignedBox import AxisAlignedBox -from UM.Math.Vector import Vector +from UM.FileHandler.FileReader import FileReader from UM.Mesh.MeshReader import MeshReader -from UM.Message import Message -from UM.Scene.SceneNode import SceneNode from UM.i18n import i18nCatalog from UM.Preferences import Preferences catalog = i18nCatalog("cura") - - -from cura import LayerDataBuilder -from cura import LayerDataDecorator -from cura.LayerPolygon import LayerPolygon -from cura.GCodeListDecorator import GCodeListDecorator -from cura.Settings.ExtruderManager import ExtruderManager - -import numpy -import math -import re -from collections import namedtuple - +from . import MarlinFlavorParser, RepRapFlavorParser # Class for loading and parsing G-code files class GCodeReader(MeshReader): + + _flavor_default = "Marlin" + _flavor_keyword = ";FLAVOR:" + _flavor_readers_dict = {"RepRap" : RepRapFlavorParser.RepRapFlavorParser(), + "Marlin" : MarlinFlavorParser.MarlinFlavorParser()} + def __init__(self): super(GCodeReader, self).__init__() self._supported_extensions = [".gcode", ".g"] - Application.getInstance().hideMessageSignal.connect(self._onHideMessage) - self._cancelled = False - self._message = None - self._layer_number = 0 - self._extruder_number = 0 - self._clearValues() - self._scene_node = None - self._position = namedtuple('Position', ['x', 'y', 'z', 'e']) - self._is_layers_in_file = False # Does the Gcode have the layers comment? - self._extruder_offsets = {} # Offsets for multi extruders. key is index, value is [x-offset, y-offset] - self._current_layer_thickness = 0.2 # default + self._flavor_reader = None Preferences.getInstance().addPreference("gcodereader/show_caution", True) - def _clearValues(self): - self._extruder_number = 0 - self._layer_type = LayerPolygon.Inset0Type - self._layer_number = 0 - self._previous_z = 0 - self._layer_data_builder = LayerDataBuilder.LayerDataBuilder() - self._center_is_zero = False + # PreRead is used to get the correct flavor. If not, Marlin is set by default + def preRead(self, file_name, *args, **kwargs): + with open(file_name, "r") as file: + for line in file: + if line[:len(self._flavor_keyword)] == self._flavor_keyword: + try: + self._flavor_reader = self._flavor_readers_dict[line[len(self._flavor_keyword):].rstrip()] + return FileReader.PreReadResult.accepted + except: + # If there is no entry in the dictionary for this flavor, just skip and select the by-default flavor + break - @staticmethod - def _getValue(line, code): - n = line.find(code) - if n < 0: - return None - n += len(code) - pattern = re.compile("[;\s]") - match = pattern.search(line, n) - m = match.start() if match is not None else -1 - try: - if m < 0: - return line[n:] - return line[n:m] - except: - return None - - def _getInt(self, line, code): - value = self._getValue(line, code) - try: - return int(value) - except: - return None - - def _getFloat(self, line, code): - value = self._getValue(line, code) - try: - return float(value) - except: - return None - - def _onHideMessage(self, message): - if message == self._message: - self._cancelled = True - - @staticmethod - def _getNullBoundingBox(): - return AxisAlignedBox(minimum=Vector(0, 0, 0), maximum=Vector(10, 10, 10)) - - def _createPolygon(self, layer_thickness, path, extruder_offsets): - countvalid = 0 - for point in path: - if point[3] > 0: - countvalid += 1 - if countvalid >= 2: - # we know what to do now, no need to count further - continue - if countvalid < 2: - return False - try: - self._layer_data_builder.addLayer(self._layer_number) - self._layer_data_builder.setLayerHeight(self._layer_number, path[0][2]) - self._layer_data_builder.setLayerThickness(self._layer_number, layer_thickness) - this_layer = self._layer_data_builder.getLayer(self._layer_number) - except ValueError: - return False - count = len(path) - line_types = numpy.empty((count - 1, 1), numpy.int32) - line_widths = numpy.empty((count - 1, 1), numpy.float32) - line_thicknesses = numpy.empty((count - 1, 1), numpy.float32) - # TODO: need to calculate actual line width based on E values - line_widths[:, 0] = 0.35 # Just a guess - line_thicknesses[:, 0] = layer_thickness - points = numpy.empty((count, 3), numpy.float32) - i = 0 - for point in path: - points[i, :] = [point[0] + extruder_offsets[0], point[2], -point[1] - extruder_offsets[1]] - if i > 0: - line_types[i - 1] = point[3] - if point[3] in [LayerPolygon.MoveCombingType, LayerPolygon.MoveRetractionType]: - line_widths[i - 1] = 0.1 - i += 1 - - this_poly = LayerPolygon(self._extruder_number, line_types, points, line_widths, line_thicknesses) - this_poly.buildCache() - - this_layer.polygons.append(this_poly) - return True - - def _gCode0(self, position, params, path): - x, y, z, e = position - x = params.x if params.x is not None else x - y = params.y if params.y is not None else y - z = params.z if params.z is not None else position.z - - if params.e is not None: - if params.e > e[self._extruder_number]: - path.append([x, y, z, self._layer_type]) # extrusion - else: - path.append([x, y, z, LayerPolygon.MoveRetractionType]) # retraction - e[self._extruder_number] = params.e - - # Only when extruding we can determine the latest known "layer height" which is the difference in height between extrusions - # Also, 1.5 is a heuristic for any priming or whatsoever, we skip those. - if z > self._previous_z and (z - self._previous_z < 1.5): - self._current_layer_thickness = z - self._previous_z + 0.05 # allow a tiny overlap - self._previous_z = z - else: - path.append([x, y, z, LayerPolygon.MoveCombingType]) - return self._position(x, y, z, e) - - # G0 and G1 should be handled exactly the same. - _gCode1 = _gCode0 - - ## Home the head. - def _gCode28(self, position, params, path): - return self._position( - params.x if params.x is not None else position.x, - params.y if params.y is not None else position.y, - 0, - position.e) - - ## Reset the current position to the values specified. - # For example: G92 X10 will set the X to 10 without any physical motion. - def _gCode92(self, position, params, path): - if params.e is not None: - position.e[self._extruder_number] = params.e - return self._position( - params.x if params.x is not None else position.x, - params.y if params.y is not None else position.y, - params.z if params.z is not None else position.z, - position.e) - - def _processGCode(self, G, line, position, path): - func = getattr(self, "_gCode%s" % G, None) - line = line.split(";", 1)[0] # Remove comments (if any) - if func is not None: - s = line.upper().split(" ") - x, y, z, e = None, None, None, None - for item in s[1:]: - if len(item) <= 1: - continue - if item.startswith(";"): - continue - if item[0] == "X": - x = float(item[1:]) - if item[0] == "Y": - y = float(item[1:]) - if item[0] == "Z": - z = float(item[1:]) - if item[0] == "E": - e = float(item[1:]) - if (x is not None and x < 0) or (y is not None and y < 0): - self._center_is_zero = True - params = self._position(x, y, z, e) - return func(position, params, path) - return position - - def _processTCode(self, T, line, position, path): - self._extruder_number = T - if self._extruder_number + 1 > len(position.e): - position.e.extend([0] * (self._extruder_number - len(position.e) + 1)) - return position - - _type_keyword = ";TYPE:" - _layer_keyword = ";LAYER:" - - ## For showing correct x, y offsets for each extruder - def _extruderOffsets(self): - result = {} - for extruder in ExtruderManager.getInstance().getExtruderStacks(): - result[int(extruder.getMetaData().get("position", "0"))] = [ - extruder.getProperty("machine_nozzle_offset_x", "value"), - extruder.getProperty("machine_nozzle_offset_y", "value")] - return result + # If no flavor is found in the GCode, then we use the by-default + self._flavor_reader = self._flavor_readers_dict[self._flavor_default] + return FileReader.PreReadResult.accepted def read(self, file_name): - Logger.log("d", "Preparing to load %s" % file_name) - self._cancelled = False - - scene_node = SceneNode() - # Override getBoundingBox function of the sceneNode, as this node should return a bounding box, but there is no - # real data to calculate it from. - scene_node.getBoundingBox = self._getNullBoundingBox - - gcode_list = [] - self._is_layers_in_file = False - - Logger.log("d", "Opening file %s" % file_name) - - self._extruder_offsets = self._extruderOffsets() # dict with index the extruder number. can be empty - - last_z = 0 - with open(file_name, "r") as file: - file_lines = 0 - current_line = 0 - for line in file: - file_lines += 1 - gcode_list.append(line) - if not self._is_layers_in_file and line[:len(self._layer_keyword)] == self._layer_keyword: - self._is_layers_in_file = True - file.seek(0) - - file_step = max(math.floor(file_lines / 100), 1) - - self._clearValues() - - 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() - - Logger.log("d", "Parsing %s..." % file_name) - - current_position = self._position(0, 0, 0, [0]) - current_path = [] - - for line in file: - if self._cancelled: - Logger.log("d", "Parsing %s cancelled" % file_name) - return None - current_line += 1 - last_z = current_position.z - - if current_line % file_step == 0: - self._message.setProgress(math.floor(current_line / file_lines * 100)) - Job.yieldThread() - if len(line) == 0: - continue - - if line.find(self._type_keyword) == 0: - type = line[len(self._type_keyword):].strip() - if type == "WALL-INNER": - self._layer_type = LayerPolygon.InsetXType - elif type == "WALL-OUTER": - self._layer_type = LayerPolygon.Inset0Type - elif type == "SKIN": - self._layer_type = LayerPolygon.SkinType - elif type == "SKIRT": - self._layer_type = LayerPolygon.SkirtType - elif type == "SUPPORT": - self._layer_type = LayerPolygon.SupportType - elif type == "FILL": - self._layer_type = LayerPolygon.InfillType - else: - Logger.log("w", "Encountered a unknown type (%s) while parsing g-code.", type) - - if self._is_layers_in_file and line[:len(self._layer_keyword)] == self._layer_keyword: - try: - layer_number = int(line[len(self._layer_keyword):]) - self._createPolygon(self._current_layer_thickness, current_path, self._extruder_offsets.get(self._extruder_number, [0, 0])) - current_path.clear() - self._layer_number = layer_number - except: - pass - - # This line is a comment. Ignore it (except for the layer_keyword) - if line.startswith(";"): - continue - - G = self._getInt(line, "G") - if G is not None: - current_position = self._processGCode(G, line, current_position, current_path) - - # < 2 is a heuristic for a movement only, that should not be counted as a layer - if current_position.z > last_z and abs(current_position.z - last_z) < 2: - if self._createPolygon(self._current_layer_thickness, current_path, self._extruder_offsets.get(self._extruder_number, [0, 0])): - current_path.clear() - if not self._is_layers_in_file: - self._layer_number += 1 - - continue - - if line.startswith("T"): - T = self._getInt(line, "T") - if T is not None: - self._createPolygon(self._current_layer_thickness, current_path, self._extruder_offsets.get(self._extruder_number, [0, 0])) - current_path.clear() - - current_position = self._processTCode(T, line, current_position, current_path) - - # "Flush" leftovers - if not self._is_layers_in_file and len(current_path) > 1: - if self._createPolygon(self._current_layer_thickness, current_path, self._extruder_offsets.get(self._extruder_number, [0, 0])): - self._layer_number += 1 - current_path.clear() - - material_color_map = numpy.zeros((10, 4), dtype = numpy.float32) - material_color_map[0, :] = [0.0, 0.7, 0.9, 1.0] - material_color_map[1, :] = [0.7, 0.9, 0.0, 1.0] - layer_mesh = self._layer_data_builder.build(material_color_map) - decorator = LayerDataDecorator.LayerDataDecorator() - decorator.setLayerData(layer_mesh) - scene_node.addDecorator(decorator) - - gcode_list_decorator = GCodeListDecorator() - gcode_list_decorator.setGCodeList(gcode_list) - scene_node.addDecorator(gcode_list_decorator) - - Application.getInstance().getController().getScene().gcode_list = gcode_list - - Logger.log("d", "Finished parsing %s" % file_name) - self._message.hide() - - if self._layer_number == 0: - Logger.log("w", "File %s doesn't contain any valid layers" % file_name) - - settings = Application.getInstance().getGlobalContainerStack() - machine_width = settings.getProperty("machine_width", "value") - machine_depth = settings.getProperty("machine_depth", "value") - - if not self._center_is_zero: - scene_node.setPosition(Vector(-machine_width / 2, 0, machine_depth / 2)) - - Logger.log("d", "Loaded %s" % file_name) - - 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, - title = catalog.i18nc("@info:title", "G-code Details")) - caution_message.show() - - # The "save/print" button's state is bound to the backend state. - backend = Application.getInstance().getBackend() - backend.backendStateChange.emit(Backend.BackendState.Disabled) - - return scene_node + return self._flavor_reader.processGCodeFile(file_name) diff --git a/plugins/GCodeReader/MarlinFlavorParser.py b/plugins/GCodeReader/MarlinFlavorParser.py new file mode 100644 index 0000000000..482285a2c9 --- /dev/null +++ b/plugins/GCodeReader/MarlinFlavorParser.py @@ -0,0 +1,10 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from . import FlavorParser + +# This parser is intented for interpret the Marlin/Sprinter Firmware flavor +class MarlinFlavorParser(FlavorParser.FlavorParser): + + def __init__(self): + super().__init__() \ No newline at end of file diff --git a/plugins/GCodeReader/RepRapFlavorParser.py b/plugins/GCodeReader/RepRapFlavorParser.py new file mode 100644 index 0000000000..42853913d6 --- /dev/null +++ b/plugins/GCodeReader/RepRapFlavorParser.py @@ -0,0 +1,32 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from . import FlavorParser + +# This parser is intented for interpret the RepRap Firmware flavor +class RepRapFlavorParser(FlavorParser.FlavorParser): + + def __init__(self): + super().__init__() + + def processMCode(self, M, line, position, path): + if M == 82: + # Set absolute extrusion mode + self._is_absolute_extrusion = True + elif M == 83: + # Set relative extrusion mode + self._is_absolute_extrusion = False + + ## Set the absolute positioning + # RepRapFlavor code G90 sets position of X, Y, Z, and E to absolute + def _gCode90(self, position, params, path): + self._is_absolute_positioning = True + self._is_absolute_extrusion = True + return position + + ## Set the relative positioning + # RepRapFlavor code G91 sets position of X, Y, Z to relative + # For relative E, M83 is used + def _gCode91(self, position, params, path): + self._is_absolute_positioning = False + return position \ No newline at end of file diff --git a/plugins/GCodeWriter/GCodeWriter.py b/plugins/GCodeWriter/GCodeWriter.py index 3860590ef7..ad23f2c8ee 100644 --- a/plugins/GCodeWriter/GCodeWriter.py +++ b/plugins/GCodeWriter/GCodeWriter.py @@ -59,8 +59,9 @@ class GCodeWriter(MeshWriter): Logger.log("e", "GCode Writer does not support non-text mode.") return False + active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate scene = Application.getInstance().getController().getScene() - gcode_list = getattr(scene, "gcode_list") + gcode_list = getattr(scene, "gcode_list")[active_build_plate] if gcode_list: for gcode in gcode_list: stream.write(gcode) @@ -74,12 +75,13 @@ class GCodeWriter(MeshWriter): ## Create a new container with container 2 as base and container 1 written over it. def _createFlattenedContainerInstance(self, instance_container1, instance_container2): flat_container = InstanceContainer(instance_container2.getName()) - if instance_container1.getDefinition(): - flat_container.setDefinition(instance_container1.getDefinition()) - else: - flat_container.setDefinition(instance_container2.getDefinition()) + + # The metadata includes id, name and definition flat_container.setMetaData(copy.deepcopy(instance_container2.getMetaData())) + if instance_container1.getDefinition(): + flat_container.setDefinition(instance_container1.getDefinition().getId()) + for key in instance_container2.getAllKeys(): flat_container.setProperty(key, "value", instance_container2.getProperty(key, "value")) diff --git a/plugins/ImageReader/ConfigUI.qml b/plugins/ImageReader/ConfigUI.qml index d2caec0220..d829f46459 100644 --- a/plugins/ImageReader/ConfigUI.qml +++ b/plugins/ImageReader/ConfigUI.qml @@ -43,7 +43,7 @@ UM.Dialog TextField { id: peak_height objectName: "Peak_Height" - validator: DoubleValidator {notation: DoubleValidator.StandardNotation; bottom: -500; top: 500;} + validator: RegExpValidator {regExp: /^-?\d{1,3}([\,|\.]\d*)?$/} width: 180 * screenScaleFactor onTextChanged: { manager.onPeakHeightChanged(text) } } @@ -66,7 +66,7 @@ UM.Dialog TextField { id: base_height objectName: "Base_Height" - validator: DoubleValidator {notation: DoubleValidator.StandardNotation; bottom: 0; top: 500;} + validator: RegExpValidator {regExp: /^\d{1,3}([\,|\.]\d*)?$/} width: 180 * screenScaleFactor onTextChanged: { manager.onBaseHeightChanged(text) } } @@ -90,7 +90,7 @@ UM.Dialog id: width objectName: "Width" focus: true - validator: DoubleValidator {notation: DoubleValidator.StandardNotation; bottom: 1; top: 500;} + validator: RegExpValidator {regExp: /^[1-9]\d{0,2}([\,|\.]\d*)?$/} width: 180 * screenScaleFactor onTextChanged: { manager.onWidthChanged(text) } } @@ -113,7 +113,7 @@ UM.Dialog id: depth objectName: "Depth" focus: true - validator: DoubleValidator {notation: DoubleValidator.StandardNotation; bottom: 1; top: 500;} + validator: RegExpValidator {regExp: /^[1-9]\d{0,2}([\,|\.]\d*)?$/} width: 180 * screenScaleFactor onTextChanged: { manager.onDepthChanged(text) } } diff --git a/plugins/ImageReader/ImageReader.py b/plugins/ImageReader/ImageReader.py index b419c0b496..3a98abccf5 100644 --- a/plugins/ImageReader/ImageReader.py +++ b/plugins/ImageReader/ImageReader.py @@ -8,12 +8,13 @@ from PyQt5.QtCore import Qt from UM.Mesh.MeshReader import MeshReader from UM.Mesh.MeshBuilder import MeshBuilder -from UM.Scene.SceneNode import SceneNode from UM.Math.Vector import Vector from UM.Job import Job from UM.Logger import Logger from .ImageReaderUI import ImageReaderUI +from cura.Scene.CuraSceneNode import CuraSceneNode as SceneNode + class ImageReader(MeshReader): def __init__(self): diff --git a/plugins/ImageReader/ImageReaderUI.py b/plugins/ImageReader/ImageReaderUI.py index 40ea15f7a0..cb45afa4ad 100644 --- a/plugins/ImageReader/ImageReaderUI.py +++ b/plugins/ImageReader/ImageReaderUI.py @@ -4,8 +4,7 @@ import os import threading -from PyQt5.QtCore import Qt, QUrl, pyqtSignal, QObject -from PyQt5.QtQml import QQmlComponent, QQmlContext +from PyQt5.QtCore import Qt, pyqtSignal, QObject from UM.FlameProfiler import pyqtSlot from UM.Application import Application from UM.PluginRegistry import PluginRegistry @@ -81,14 +80,9 @@ class ImageReaderUI(QObject): def _createConfigUI(self): if self._ui_view is None: Logger.log("d", "Creating ImageReader config UI") - path = QUrl.fromLocalFile(os.path.join(PluginRegistry.getInstance().getPluginPath("ImageReader"), "ConfigUI.qml")) - component = QQmlComponent(Application.getInstance()._engine, path) - self._ui_context = QQmlContext(Application.getInstance()._engine.rootContext()) - self._ui_context.setContextProperty("manager", self) - self._ui_view = component.create(self._ui_context) - + path = os.path.join(PluginRegistry.getInstance().getPluginPath("ImageReader"), "ConfigUI.qml") + self._ui_view = Application.getInstance().createQmlComponent(path, {"manager": self}) self._ui_view.setFlags(self._ui_view.flags() & ~Qt.WindowCloseButtonHint & ~Qt.WindowMinimizeButtonHint & ~Qt.WindowMaximizeButtonHint); - self._disable_size_callbacks = False @pyqtSlot() @@ -107,7 +101,7 @@ class ImageReaderUI(QObject): def onWidthChanged(self, value): if self._ui_view and not self._disable_size_callbacks: if len(value) > 0: - self._width = float(value) + self._width = float(value.replace(",", ".")) else: self._width = 0 @@ -120,7 +114,7 @@ class ImageReaderUI(QObject): def onDepthChanged(self, value): if self._ui_view and not self._disable_size_callbacks: if len(value) > 0: - self._depth = float(value) + self._depth = float(value.replace(",", ".")) else: self._depth = 0 @@ -132,14 +126,14 @@ class ImageReaderUI(QObject): @pyqtSlot(str) def onBaseHeightChanged(self, value): if (len(value) > 0): - self.base_height = float(value) + self.base_height = float(value.replace(",", ".")) else: self.base_height = 0 @pyqtSlot(str) def onPeakHeightChanged(self, value): if (len(value) > 0): - self.peak_height = float(value) + self.peak_height = float(value.replace(",", ".")) else: self.peak_height = 0 @@ -149,7 +143,4 @@ class ImageReaderUI(QObject): @pyqtSlot(int) def onImageColorInvertChanged(self, value): - if (value == 1): - self.image_color_invert = True - else: - self.image_color_invert = False + self.image_color_invert = (value == 1) diff --git a/plugins/LayerView/LayerPass.py b/plugins/LayerView/LayerPass.py deleted file mode 100755 index 963c8c75c8..0000000000 --- a/plugins/LayerView/LayerPass.py +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright (c) 2016 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator -from UM.Resources import Resources -from UM.Scene.SceneNode import SceneNode -from UM.Scene.ToolHandle import ToolHandle -from UM.Application import Application -from UM.PluginRegistry import PluginRegistry - -from UM.View.RenderPass import RenderPass -from UM.View.RenderBatch import RenderBatch -from UM.View.GL.OpenGL import OpenGL - -from cura.Settings.ExtruderManager import ExtruderManager - - -import os.path - -## RenderPass used to display g-code paths. -class LayerPass(RenderPass): - def __init__(self, width, height): - super().__init__("layerview", width, height) - - self._layer_shader = None - self._tool_handle_shader = None - self._gl = OpenGL.getInstance().getBindingsObject() - self._scene = Application.getInstance().getController().getScene() - self._extruder_manager = ExtruderManager.getInstance() - - self._layer_view = None - self._compatibility_mode = None - - def setLayerView(self, layerview): - self._layer_view = layerview - self._compatibility_mode = layerview.getCompatibilityMode() - - def render(self): - if not self._layer_shader: - if self._compatibility_mode: - shader_filename = "layers.shader" - else: - shader_filename = "layers3d.shader" - self._layer_shader = OpenGL.getInstance().createShaderProgram(os.path.join(PluginRegistry.getInstance().getPluginPath("LayerView"), shader_filename)) - # Use extruder 0 if the extruder manager reports extruder index -1 (for single extrusion printers) - self._layer_shader.setUniformValue("u_active_extruder", float(max(0, self._extruder_manager.activeExtruderIndex))) - if self._layer_view: - self._layer_shader.setUniformValue("u_layer_view_type", self._layer_view.getLayerViewType()) - self._layer_shader.setUniformValue("u_extruder_opacity", self._layer_view.getExtruderOpacities()) - self._layer_shader.setUniformValue("u_show_travel_moves", self._layer_view.getShowTravelMoves()) - self._layer_shader.setUniformValue("u_show_helpers", self._layer_view.getShowHelpers()) - self._layer_shader.setUniformValue("u_show_skin", self._layer_view.getShowSkin()) - self._layer_shader.setUniformValue("u_show_infill", self._layer_view.getShowInfill()) - else: - #defaults - self._layer_shader.setUniformValue("u_layer_view_type", 1) - self._layer_shader.setUniformValue("u_extruder_opacity", [1, 1, 1, 1]) - self._layer_shader.setUniformValue("u_show_travel_moves", 0) - self._layer_shader.setUniformValue("u_show_helpers", 1) - self._layer_shader.setUniformValue("u_show_skin", 1) - self._layer_shader.setUniformValue("u_show_infill", 1) - - if not self._tool_handle_shader: - self._tool_handle_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "toolhandle.shader")) - - self.bind() - - tool_handle_batch = RenderBatch(self._tool_handle_shader, type = RenderBatch.RenderType.Overlay) - - for node in DepthFirstIterator(self._scene.getRoot()): - - if isinstance(node, ToolHandle): - tool_handle_batch.addItem(node.getWorldTransformation(), mesh = node.getSolidMesh()) - - elif isinstance(node, SceneNode) and (node.getMeshData() or node.callDecoration("isBlockSlicing")) and node.isVisible(): - layer_data = node.callDecoration("getLayerData") - if not layer_data: - continue - - # Render all layers below a certain number as line mesh instead of vertices. - if self._layer_view._current_layer_num > -1 and ((not self._layer_view._only_show_top_layers) or (not self._layer_view.getCompatibilityMode())): - start = 0 - end = 0 - element_counts = layer_data.getElementCounts() - for layer in sorted(element_counts.keys()): - if layer > self._layer_view._current_layer_num: - break - if self._layer_view._minimum_layer_num > layer: - start += element_counts[layer] - end += element_counts[layer] - - # This uses glDrawRangeElements internally to only draw a certain range of lines. - batch = RenderBatch(self._layer_shader, type = RenderBatch.RenderType.Solid, mode = RenderBatch.RenderMode.Lines, range = (start, end)) - batch.addItem(node.getWorldTransformation(), layer_data) - batch.render(self._scene.getActiveCamera()) - - # Create a new batch that is not range-limited - batch = RenderBatch(self._layer_shader, type = RenderBatch.RenderType.Solid) - - if self._layer_view.getCurrentLayerMesh(): - batch.addItem(node.getWorldTransformation(), self._layer_view.getCurrentLayerMesh()) - - if self._layer_view.getCurrentLayerJumps(): - batch.addItem(node.getWorldTransformation(), self._layer_view.getCurrentLayerJumps()) - - if len(batch.items) > 0: - batch.render(self._scene.getActiveCamera()) - - # Render toolhandles on top of the layerview - if len(tool_handle_batch.items) > 0: - tool_handle_batch.render(self._scene.getActiveCamera()) - - self.release() diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml deleted file mode 100755 index 7261926bc5..0000000000 --- a/plugins/LayerView/LayerView.qml +++ /dev/null @@ -1,388 +0,0 @@ -// Copyright (c) 2017 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.4 -import QtQuick.Controls 1.2 -import QtQuick.Layouts 1.1 -import QtQuick.Controls.Styles 1.1 - -import UM 1.0 as UM -import Cura 1.0 as Cura - -Item -{ - id: base - width: { - if (UM.LayerView.compatibilityMode) { - return UM.Theme.getSize("layerview_menu_size_compatibility").width; - } else { - return UM.Theme.getSize("layerview_menu_size").width; - } - } - 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) - } - } - - property var buttonTarget: { - 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 != null ? !parent.parent.monitoringPrint: true - - UM.PointingRectangle { - id: layerViewMenu - anchors.right: parent.right - anchors.top: parent.top - width: parent.width - height: parent.height - z: slider.z - 1 - color: UM.Theme.getColor("tool_panel_background") - borderWidth: UM.Theme.getSize("default_lining").width - borderColor: UM.Theme.getColor("lining") - arrowSize: 0 // hide arrow until weird issue with first time rendering is fixed - - ColumnLayout { - id: view_settings - - property var extruder_opacities: UM.Preferences.getValue("layerview/extruder_opacities").split("|") - property bool show_travel_moves: UM.Preferences.getValue("layerview/show_travel_moves") - property bool show_helpers: UM.Preferences.getValue("layerview/show_helpers") - property bool show_skin: UM.Preferences.getValue("layerview/show_skin") - property bool show_infill: UM.Preferences.getValue("layerview/show_infill") - // if we are in compatibility mode, we only show the "line type" - property bool show_legend: UM.LayerView.compatibilityMode ? 1 : UM.Preferences.getValue("layerview/layer_view_type") == 1 - property bool only_show_top_layers: UM.Preferences.getValue("view/only_show_top_layers") - property int top_layer_count: UM.Preferences.getValue("view/top_layer_count") - - anchors.top: parent.top - anchors.topMargin: UM.Theme.getSize("default_margin").height - anchors.left: parent.left - 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 - - Label - { - id: layerViewTypesLabel - anchors.left: parent.left - text: catalog.i18nc("@label","Color scheme") - font: UM.Theme.getFont("default"); - visible: !UM.LayerView.compatibilityMode - Layout.fillWidth: true - color: UM.Theme.getColor("setting_control_text") - } - - ListModel // matches LayerView.py - { - id: layerViewTypes - } - - Component.onCompleted: - { - layerViewTypes.append({ - text: catalog.i18nc("@label:listbox", "Material Color"), - type_id: 0 - }) - layerViewTypes.append({ - text: catalog.i18nc("@label:listbox", "Line Type"), - type_id: 1 // these ids match the switching in the shader - }) - } - - ComboBox - { - id: layerTypeCombobox - anchors.left: parent.left - Layout.fillWidth: true - Layout.preferredWidth: UM.Theme.getSize("layerview_row").width - model: layerViewTypes - visible: !UM.LayerView.compatibilityMode - style: UM.Theme.styles.combobox - anchors.right: parent.right - anchors.rightMargin: 10 * screenScaleFactor - - onActivated: - { - UM.Preferences.setValue("layerview/layer_view_type", index); - } - - Component.onCompleted: - { - currentIndex = UM.LayerView.compatibilityMode ? 1 : UM.Preferences.getValue("layerview/layer_view_type"); - updateLegends(currentIndex); - } - - function updateLegends(type_id) - { - // update visibility of legends - view_settings.show_legend = UM.LayerView.compatibilityMode || (type_id == 1); - } - - } - - Label - { - id: compatibilityModeLabel - anchors.left: parent.left - text: catalog.i18nc("@label","Compatibility Mode") - font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") - visible: UM.LayerView.compatibilityMode - Layout.fillWidth: true - Layout.preferredHeight: UM.Theme.getSize("layerview_row").height - Layout.preferredWidth: UM.Theme.getSize("layerview_row").width - } - - Label - { - id: space2Label - anchors.left: parent.left - text: " " - font.pointSize: 0.5 - } - - Connections { - target: UM.Preferences - onPreferenceChanged: - { - layerTypeCombobox.currentIndex = UM.LayerView.compatibilityMode ? 1 : UM.Preferences.getValue("layerview/layer_view_type"); - layerTypeCombobox.updateLegends(layerTypeCombobox.currentIndex); - view_settings.extruder_opacities = UM.Preferences.getValue("layerview/extruder_opacities").split("|"); - view_settings.show_travel_moves = UM.Preferences.getValue("layerview/show_travel_moves"); - view_settings.show_helpers = UM.Preferences.getValue("layerview/show_helpers"); - view_settings.show_skin = UM.Preferences.getValue("layerview/show_skin"); - view_settings.show_infill = UM.Preferences.getValue("layerview/show_infill"); - view_settings.only_show_top_layers = UM.Preferences.getValue("view/only_show_top_layers"); - view_settings.top_layer_count = UM.Preferences.getValue("view/top_layer_count"); - } - } - - Repeater { - model: Cura.ExtrudersModel{} - CheckBox { - id: extrudersModelCheckBox - checked: view_settings.extruder_opacities[index] > 0.5 || view_settings.extruder_opacities[index] == undefined || view_settings.extruder_opacities[index] == "" - onClicked: { - view_settings.extruder_opacities[index] = checked ? 1.0 : 0.0 - UM.Preferences.setValue("layerview/extruder_opacities", view_settings.extruder_opacities.join("|")); - } - visible: !UM.LayerView.compatibilityMode - enabled: index + 1 <= 4 - Rectangle { - anchors.verticalCenter: parent.verticalCenter - anchors.right: extrudersModelCheckBox.right - anchors.rightMargin: UM.Theme.getSize("default_margin").width - 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 - } - 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 - style: UM.Theme.styles.checkbox - Label - { - text: model.name - elide: Text.ElideRight - color: UM.Theme.getColor("setting_control_text") - font: UM.Theme.getFont("default") - anchors.verticalCenter: parent.verticalCenter - anchors.left: extrudersModelCheckBox.left; - anchors.right: extrudersModelCheckBox.right; - anchors.leftMargin: UM.Theme.getSize("checkbox").width + UM.Theme.getSize("default_margin").width /2 - anchors.rightMargin: UM.Theme.getSize("default_margin").width * 2 - } - } - } - - Repeater { - model: ListModel { - id: typesLegenModel - Component.onCompleted: - { - typesLegenModel.append({ - label: catalog.i18nc("@label", "Show Travels"), - initialValue: view_settings.show_travel_moves, - preference: "layerview/show_travel_moves", - colorId: "layerview_move_combing" - }); - typesLegenModel.append({ - label: catalog.i18nc("@label", "Show Helpers"), - initialValue: view_settings.show_helpers, - preference: "layerview/show_helpers", - colorId: "layerview_support" - }); - typesLegenModel.append({ - label: catalog.i18nc("@label", "Show Shell"), - initialValue: view_settings.show_skin, - preference: "layerview/show_skin", - colorId: "layerview_inset_0" - }); - typesLegenModel.append({ - label: catalog.i18nc("@label", "Show Infill"), - initialValue: view_settings.show_infill, - preference: "layerview/show_infill", - colorId: "layerview_infill" - }); - } - } - - CheckBox { - id: legendModelCheckBox - checked: model.initialValue - onClicked: { - UM.Preferences.setValue(model.preference, checked); - } - Rectangle { - anchors.verticalCenter: parent.verticalCenter - anchors.right: legendModelCheckBox.right - anchors.rightMargin: UM.Theme.getSize("default_margin").width - width: UM.Theme.getSize("layerview_legend_size").width - height: UM.Theme.getSize("layerview_legend_size").height - color: UM.Theme.getColor(model.colorId) - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("lining") - visible: view_settings.show_legend - } - 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 - style: UM.Theme.styles.checkbox - Label - { - text: label - font: UM.Theme.getFont("default") - elide: Text.ElideRight - color: UM.Theme.getColor("setting_control_text") - anchors.verticalCenter: parent.verticalCenter - anchors.left: legendModelCheckBox.left; - anchors.right: legendModelCheckBox.right; - anchors.leftMargin: UM.Theme.getSize("checkbox").width + UM.Theme.getSize("default_margin").width /2 - anchors.rightMargin: UM.Theme.getSize("default_margin").width * 2 - } - } - } - - CheckBox { - checked: view_settings.only_show_top_layers - onClicked: { - UM.Preferences.setValue("view/only_show_top_layers", checked ? 1.0 : 0.0); - } - text: catalog.i18nc("@label", "Only Show Top Layers") - visible: UM.LayerView.compatibilityMode - style: UM.Theme.styles.checkbox - } - CheckBox { - checked: view_settings.top_layer_count == 5 - onClicked: { - UM.Preferences.setValue("view/top_layer_count", checked ? 5 : 1); - } - text: catalog.i18nc("@label", "Show 5 Detailed Layers On Top") - visible: UM.LayerView.compatibilityMode - style: UM.Theme.styles.checkbox - } - - Repeater { - model: ListModel { - id: typesLegenModelNoCheck - Component.onCompleted: - { - typesLegenModelNoCheck.append({ - label: catalog.i18nc("@label", "Top / Bottom"), - colorId: "layerview_skin", - }); - typesLegenModelNoCheck.append({ - label: catalog.i18nc("@label", "Inner Wall"), - colorId: "layerview_inset_x", - }); - } - } - - Label { - text: label - visible: view_settings.show_legend - id: typesLegendModelLabel - Rectangle { - anchors.verticalCenter: parent.verticalCenter - anchors.right: typesLegendModelLabel.right - anchors.rightMargin: UM.Theme.getSize("default_margin").width - width: UM.Theme.getSize("layerview_legend_size").width - height: UM.Theme.getSize("layerview_legend_size").height - color: UM.Theme.getColor(model.colorId) - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("lining") - visible: view_settings.show_legend - } - 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("setting_control_text") - font: UM.Theme.getFont("default") - } - } - } - - LayerSlider { - id: slider - - width: UM.Theme.getSize("slider_handle").width - height: UM.Theme.getSize("layerview_menu_size").height - - anchors { - top: parent.bottom - topMargin: UM.Theme.getSize("slider_layerview_margin").height - right: layerViewMenu.right - rightMargin: UM.Theme.getSize("slider_layerview_margin").width - } - - // custom properties - upperValue: UM.LayerView.currentLayer - lowerValue: UM.LayerView.minimumLayer - maximumValue: UM.LayerView.numLayers - handleSize: UM.Theme.getSize("slider_handle").width - trackThickness: UM.Theme.getSize("slider_groove").width - trackColor: UM.Theme.getColor("slider_groove") - trackBorderColor: UM.Theme.getColor("slider_groove_border") - upperHandleColor: UM.Theme.getColor("slider_handle") - lowerHandleColor: UM.Theme.getColor("slider_handle") - rangeHandleColor: UM.Theme.getColor("slider_groove_fill") - handleLabelWidth: UM.Theme.getSize("slider_layerview_background").width - layersVisible: UM.LayerView.layerActivity && CuraApplication.platformActivity ? true : false - - // update values when layer data changes - Connections { - target: UM.LayerView - onMaxLayersChanged: slider.setUpperValue(UM.LayerView.currentLayer) - onMinimumLayerChanged: slider.setLowerValue(UM.LayerView.minimumLayer) - onCurrentLayerChanged: slider.setUpperValue(UM.LayerView.currentLayer) - } - - // make sure the slider handlers show the correct value after switching views - Component.onCompleted: { - slider.setLowerValue(UM.LayerView.minimumLayer) - slider.setUpperValue(UM.LayerView.currentLayer) - } - } - } - - FontMetrics { - id: fontMetrics - font: UM.Theme.getFont("default") - } -} diff --git a/plugins/LayerView/LayerViewProxy.py b/plugins/LayerView/LayerViewProxy.py deleted file mode 100644 index 4cf84117da..0000000000 --- a/plugins/LayerView/LayerViewProxy.py +++ /dev/null @@ -1,151 +0,0 @@ -from PyQt5.QtCore import QObject, pyqtSignal, pyqtProperty -from UM.FlameProfiler import pyqtSlot -from UM.Application import Application - -import LayerView - - -class LayerViewProxy(QObject): - def __init__(self, parent=None): - super().__init__(parent) - self._current_layer = 0 - self._controller = Application.getInstance().getController() - self._controller.activeViewChanged.connect(self._onActiveViewChanged) - self._onActiveViewChanged() - - currentLayerChanged = pyqtSignal() - maxLayersChanged = pyqtSignal() - activityChanged = pyqtSignal() - globalStackChanged = pyqtSignal() - preferencesChanged = pyqtSignal() - busyChanged = pyqtSignal() - - @pyqtProperty(bool, notify=activityChanged) - def layerActivity(self): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - return active_view.getActivity() - - @pyqtProperty(int, notify=maxLayersChanged) - def numLayers(self): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - return active_view.getMaxLayers() - - @pyqtProperty(int, notify=currentLayerChanged) - def currentLayer(self): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - return active_view.getCurrentLayer() - - @pyqtProperty(int, notify=currentLayerChanged) - def minimumLayer(self): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - return active_view.getMinimumLayer() - - @pyqtProperty(bool, notify=busyChanged) - def busy(self): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - return active_view.isBusy() - - return False - - @pyqtProperty(bool, notify=preferencesChanged) - def compatibilityMode(self): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - return active_view.getCompatibilityMode() - return False - - @pyqtSlot(int) - def setCurrentLayer(self, layer_num): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - active_view.setLayer(layer_num) - - @pyqtSlot(int) - def setMinimumLayer(self, layer_num): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - active_view.setMinimumLayer(layer_num) - - @pyqtSlot(int) - def setLayerViewType(self, layer_view_type): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - active_view.setLayerViewType(layer_view_type) - - @pyqtSlot(result=int) - def getLayerViewType(self): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - return active_view.getLayerViewType() - return 0 - - # Opacity 0..1 - @pyqtSlot(int, float) - def setExtruderOpacity(self, extruder_nr, opacity): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - active_view.setExtruderOpacity(extruder_nr, opacity) - - @pyqtSlot(int) - def setShowTravelMoves(self, show): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - active_view.setShowTravelMoves(show) - - @pyqtSlot(int) - def setShowHelpers(self, show): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - active_view.setShowHelpers(show) - - @pyqtSlot(int) - def setShowSkin(self, show): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - active_view.setShowSkin(show) - - @pyqtSlot(int) - def setShowInfill(self, show): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - active_view.setShowInfill(show) - - @pyqtProperty(int, notify=globalStackChanged) - def extruderCount(self): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - return active_view.getExtruderCount() - return 0 - - def _layerActivityChanged(self): - self.activityChanged.emit() - - def _onLayerChanged(self): - self.currentLayerChanged.emit() - self._layerActivityChanged() - - def _onMaxLayersChanged(self): - self.maxLayersChanged.emit() - - def _onBusyChanged(self): - self.busyChanged.emit() - - def _onGlobalStackChanged(self): - self.globalStackChanged.emit() - - def _onPreferencesChanged(self): - self.preferencesChanged.emit() - - def _onActiveViewChanged(self): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - active_view.currentLayerNumChanged.connect(self._onLayerChanged) - active_view.maxLayersChanged.connect(self._onMaxLayersChanged) - active_view.busyChanged.connect(self._onBusyChanged) - active_view.globalStackChanged.connect(self._onGlobalStackChanged) - active_view.preferencesChanged.connect(self._onPreferencesChanged) diff --git a/plugins/LayerView/__init__.py b/plugins/LayerView/__init__.py deleted file mode 100644 index da1a5aed19..0000000000 --- a/plugins/LayerView/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright (c) 2015 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from . import LayerView, LayerViewProxy -from PyQt5.QtQml import qmlRegisterType, qmlRegisterSingletonType - -from UM.i18n import i18nCatalog -catalog = i18nCatalog("cura") - -def getMetaData(): - return { - "view": { - "name": catalog.i18nc("@item:inlistbox", "Layer view"), - "view_panel": "LayerView.qml", - "weight": 2 - } - } - -def createLayerViewProxy(engine, script_engine): - return LayerViewProxy.LayerViewProxy() - -def register(app): - layer_view = LayerView.LayerView() - qmlRegisterSingletonType(LayerViewProxy.LayerViewProxy, "UM", 1, 0, "LayerView", layer_view.getProxy) - return { "view": LayerView.LayerView() } diff --git a/plugins/LegacyProfileReader/LegacyProfileReader.py b/plugins/LegacyProfileReader/LegacyProfileReader.py index 3d680f2b97..07cd8b0aad 100644 --- a/plugins/LegacyProfileReader/LegacyProfileReader.py +++ b/plugins/LegacyProfileReader/LegacyProfileReader.py @@ -1,7 +1,8 @@ -# Copyright (c) 2015 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import configparser # For reading the legacy profile INI files. +import io import json # For reading the Dictionary of Doom. import math # For mathematical operations included in the Dictionary of Doom. import os.path # For concatenating the path to the plugin and the relative path to the Dictionary of Doom. @@ -9,8 +10,10 @@ import os.path # For concatenating the path to the plugin and the relative path from UM.Application import Application # To get the machine manager to create the new profile in. from UM.Logger import Logger # Logging errors. from UM.PluginRegistry import PluginRegistry # For getting the path to this plugin's directory. +from UM.Settings.ContainerRegistry import ContainerRegistry #To create unique profile IDs. from UM.Settings.InstanceContainer import InstanceContainer # The new profile to make. from cura.ProfileReader import ProfileReader # The plug-in type to implement. +from cura.Settings.ExtruderManager import ExtruderManager #To get the current extruder definition. ## A plugin that reads profile data from legacy Cura versions. @@ -76,12 +79,13 @@ class LegacyProfileReader(ProfileReader): raise Exception("Unable to import legacy profile. Multi extrusion is not supported") Logger.log("i", "Importing legacy profile from file " + file_name + ".") - profile = InstanceContainer("Imported Legacy Profile") # Create an empty profile. + container_registry = ContainerRegistry.getInstance() + profile_id = container_registry.uniqueName("Imported Legacy Profile") + profile = InstanceContainer(profile_id) # Create an empty profile. parser = configparser.ConfigParser(interpolation = None) try: - with open(file_name) as f: - parser.readfp(f) # Parse the INI file. + parser.read([file_name]) # Parse the INI file. except Exception as e: Logger.log("e", "Unable to open legacy profile %s: %s", file_name, str(e)) return None @@ -120,8 +124,8 @@ class LegacyProfileReader(ProfileReader): if "translation" not in dict_of_doom: Logger.log("e", "Dictionary of Doom has no translation. Is it the correct JSON file?") return None - current_printer_definition = global_container_stack.getBottom() - profile.setDefinition(current_printer_definition) + current_printer_definition = global_container_stack.definition + profile.setDefinition(current_printer_definition.getId()) for new_setting in dict_of_doom["translation"]: # Evaluate all new settings that would get a value from the translations. old_setting_expression = dict_of_doom["translation"][new_setting] compiled = compile(old_setting_expression, new_setting, "eval") @@ -138,7 +142,40 @@ class LegacyProfileReader(ProfileReader): if len(profile.getAllKeys()) == 0: Logger.log("i", "A legacy profile was imported but everything evaluates to the defaults, creating an empty profile.") - profile.setDirty(True) - profile.addMetaDataEntry("type", "quality_changes") + + profile.addMetaDataEntry("type", "profile") + # don't know what quality_type it is based on, so use "normal" by default profile.addMetaDataEntry("quality_type", "normal") - return profile \ No newline at end of file + profile.setName(profile_id) + profile.setDirty(True) + + #Serialise and deserialise in order to perform the version upgrade. + parser = configparser.ConfigParser(interpolation=None) + data = profile.serialize() + parser.read_string(data) + parser["general"]["version"] = "1" + if parser.has_section("values"): + parser["settings"] = parser["values"] + del parser["values"] + stream = io.StringIO() + parser.write(stream) + data = stream.getvalue() + profile.deserialize(data) + + #We need to return one extruder stack and one global stack. + global_container_id = container_registry.uniqueName("Global Imported Legacy Profile") + global_profile = profile.duplicate(new_id = global_container_id, new_name = profile_id) #Needs to have the same name as the extruder profile. + global_profile.setDirty(True) + + #Only the extruder stack has an extruder metadata entry. + profile.addMetaDataEntry("extruder", ExtruderManager.getInstance().getActiveExtruderStack().definition.getId()) + + #Split all settings into per-extruder and global settings. + for setting_key in profile.getAllKeys(): + settable_per_extruder = global_container_stack.getProperty(setting_key, "settable_per_extruder") + if settable_per_extruder: + global_profile.removeInstance(setting_key) + else: + profile.removeInstance(setting_key) + + return [global_profile, profile] diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.py b/plugins/MachineSettingsAction/MachineSettingsAction.py index 4343c2c780..a939d033fc 100755 --- a/plugins/MachineSettingsAction/MachineSettingsAction.py +++ b/plugins/MachineSettingsAction/MachineSettingsAction.py @@ -7,14 +7,11 @@ from UM.FlameProfiler import pyqtSlot from cura.MachineAction import MachineAction from UM.Application import Application -from UM.Preferences import Preferences -from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.DefinitionContainer import DefinitionContainer from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Logger import Logger -from cura.CuraApplication import CuraApplication from cura.Settings.ExtruderManager import ExtruderManager from cura.Settings.CuraStackBuilder import CuraStackBuilder @@ -30,13 +27,14 @@ class MachineSettingsAction(MachineAction): self._qml_url = "MachineSettingsAction.qml" self._global_container_stack = None - self._container_index = 0 + + from cura.Settings.CuraContainerStack import _ContainerIndexes + self._container_index = _ContainerIndexes.DefinitionChanges self._container_registry = ContainerRegistry.getInstance() self._container_registry.containerAdded.connect(self._onContainerAdded) self._container_registry.containerRemoved.connect(self._onContainerRemoved) Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged) - ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderStackChanged) self._empty_container = self._container_registry.getEmptyInstanceContainer() @@ -67,7 +65,9 @@ class MachineSettingsAction(MachineAction): self._global_container_stack, self._global_container_stack.getName() + "_settings") # Notify the UI in which container to store the machine settings data - container_index = self._global_container_stack.getContainerIndex(definition_changes_container) + from cura.Settings.CuraContainerStack import CuraContainerStack, _ContainerIndexes + + container_index = _ContainerIndexes.DefinitionChanges if container_index != self._container_index: self._container_index = container_index self.containerIndexChanged.emit() @@ -82,17 +82,6 @@ class MachineSettingsAction(MachineAction): if self._backend and self._backend.determineAutoSlicing(): self._backend.tickle() - def _onActiveExtruderStackChanged(self): - extruder_container_stack = ExtruderManager.getInstance().getActiveExtruderStack() - if not self._global_container_stack or not extruder_container_stack: - return - - # Make sure there is a definition_changes container to store the machine settings - definition_changes_container = extruder_container_stack.definitionChanges - if definition_changes_container == self._empty_container: - definition_changes_container = CuraStackBuilder.createDefinitionChangesContainer( - extruder_container_stack, extruder_container_stack.getId() + "_settings") - containerIndexChanged = pyqtSignal() @pyqtProperty(int, notify = containerIndexChanged) @@ -116,8 +105,7 @@ class MachineSettingsAction(MachineAction): @pyqtSlot(int) def setMachineExtruderCount(self, extruder_count): - machine_manager = Application.getInstance().getMachineManager() - extruder_manager = ExtruderManager.getInstance() + extruder_manager = Application.getInstance().getExtruderManager() definition_changes_container = self._global_container_stack.definitionChanges if not self._global_container_stack or definition_changes_container == self._empty_container: @@ -127,38 +115,16 @@ class MachineSettingsAction(MachineAction): if extruder_count == previous_extruder_count: return - extruder_material_id = None - extruder_variant_id = None - if extruder_count == 1: - # Get the material and variant of the first extruder before setting the number extruders to 1 - if machine_manager.hasMaterials: - extruder_material_id = machine_manager.allActiveMaterialIds[extruder_manager.extruderIds["0"]] - if machine_manager.hasVariants: - extruder_variant_id = machine_manager.allActiveVariantIds[extruder_manager.extruderIds["0"]] + # reset all extruder number settings whose value is no longer valid + for setting_instance in self._global_container_stack.userChanges.findInstances(): + setting_key = setting_instance.definition.key + if not self._global_container_stack.getProperty(setting_key, "type") in ("extruder", "optional_extruder"): + continue - # Copy any settable_per_extruder setting value from the extruders to the global stack - extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() - extruder_stacks.reverse() # make sure the first extruder is done last, so its settings override any higher extruder settings - - global_user_container = self._global_container_stack.getTop() - for extruder_stack in extruder_stacks: - extruder_index = extruder_stack.getMetaDataEntry("position") - extruder_user_container = extruder_stack.getTop() - for setting_instance in extruder_user_container.findInstances(): - setting_key = setting_instance.definition.key - settable_per_extruder = self._global_container_stack.getProperty(setting_key, "settable_per_extruder") - if settable_per_extruder: - limit_to_extruder = self._global_container_stack.getProperty(setting_key, "limit_to_extruder") - - if limit_to_extruder == "-1" or limit_to_extruder == extruder_index: - global_user_container.setProperty(setting_key, "value", extruder_user_container.getProperty(setting_key, "value")) - extruder_user_container.removeInstance(setting_key) - - # Check to see if any features are set to print with an extruder that will no longer exist - for setting_key in ["adhesion_extruder_nr", "support_extruder_nr", "support_extruder_nr_layer_0", "support_infill_extruder_nr", "support_interface_extruder_nr"]: - if int(self._global_container_stack.getProperty(setting_key, "value")) > extruder_count - 1: - Logger.log("i", "Lowering %s setting to match number of extruders", setting_key) - self._global_container_stack.getTop().setProperty(setting_key, "value", extruder_count - 1) + old_value = int(self._global_container_stack.userChanges.getProperty(setting_key, "value")) + if old_value >= extruder_count: + self._global_container_stack.userChanges.removeInstance(setting_key) + Logger.log("d", "Reset [%s] because its old value [%s] is no longer valid ", setting_key, old_value) # Check to see if any objects are set to print with an extruder that will no longer exist root_node = Application.getInstance().getController().getScene().getRoot() @@ -171,52 +137,29 @@ class MachineSettingsAction(MachineAction): definition_changes_container.setProperty("machine_extruder_count", "value", extruder_count) - if extruder_count > 1: - # Multiextrusion + # Make sure one of the extruder stacks is active + extruder_manager.setActiveExtruderIndex(0) - # Make sure one of the extruder stacks is active - if extruder_manager.activeExtruderIndex == -1: - extruder_manager.setActiveExtruderIndex(0) + # Move settable_per_extruder values out of the global container + # After CURA-4482 this should not be the case anymore, but we still want to support older project files. + global_user_container = self._global_container_stack.getTop() - # Move settable_per_extruder values out of the global container - if previous_extruder_count == 1: - extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() - global_user_container = self._global_container_stack.getTop() + if previous_extruder_count == 1: + extruder_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() + global_user_container = self._global_container_stack.getTop() - for setting_instance in global_user_container.findInstances(): - setting_key = setting_instance.definition.key - settable_per_extruder = self._global_container_stack.getProperty(setting_key, "settable_per_extruder") - if settable_per_extruder: - limit_to_extruder = int(self._global_container_stack.getProperty(setting_key, "limit_to_extruder")) - extruder_stack = extruder_stacks[max(0, limit_to_extruder)] - extruder_stack.getTop().setProperty(setting_key, "value", global_user_container.getProperty(setting_key, "value")) - global_user_container.removeInstance(setting_key) - else: - # Single extrusion + for setting_instance in global_user_container.findInstances(): + setting_key = setting_instance.definition.key + settable_per_extruder = self._global_container_stack.getProperty(setting_key, "settable_per_extruder") - # Make sure the machine stack is active - if extruder_manager.activeExtruderIndex > -1: - extruder_manager.setActiveExtruderIndex(-1) - - # Restore material and variant on global stack - # MachineManager._onGlobalContainerChanged removes the global material and variant of multiextruder machines - if extruder_material_id or extruder_variant_id: - # Prevent the DiscardOrKeepProfileChangesDialog from popping up (twice) if there are user changes - # The dialog is not relevant here, since we're restoring the previous situation as good as possible - preferences = Preferences.getInstance() - choice_on_profile_override = preferences.getValue("cura/choice_on_profile_override") - preferences.setValue("cura/choice_on_profile_override", "always_keep") - - if extruder_material_id: - machine_manager.setActiveMaterial(extruder_material_id) - if extruder_variant_id: - machine_manager.setActiveVariant(extruder_variant_id) - - preferences.setValue("cura/choice_on_profile_override", choice_on_profile_override) + if settable_per_extruder: + limit_to_extruder = int(self._global_container_stack.getProperty(setting_key, "limit_to_extruder")) + extruder_stack = extruder_stacks[max(0, limit_to_extruder)] + extruder_stack.getTop().setProperty(setting_key, "value", global_user_container.getProperty(setting_key, "value")) + global_user_container.removeInstance(setting_key) self.forceUpdate() - @pyqtSlot() def forceUpdate(self): # Force rebuilding the build volume by reloading the global container stack. @@ -234,34 +177,37 @@ class MachineSettingsAction(MachineAction): # In other words: only continue for the UM2 (extended), but not for the UM2+ return + stacks = ExtruderManager.getInstance().getExtruderStacks() has_materials = self._global_container_stack.getProperty("machine_gcode_flavor", "value") != "UltiGCode" - material_container = self._global_container_stack.material - if has_materials: if "has_materials" in self._global_container_stack.getMetaData(): self._global_container_stack.setMetaDataEntry("has_materials", True) else: self._global_container_stack.addMetaDataEntry("has_materials", True) - # Set the material container to a sane default - if material_container == self._empty_container: - search_criteria = { "type": "material", "definition": "fdmprinter", "id": self._global_container_stack.getMetaDataEntry("preferred_material")} - materials = self._container_registry.findInstanceContainers(**search_criteria) - if materials: - self._global_container_stack.material = materials[0] + # Set the material container for each extruder to a sane default + for stack in stacks: + material_container = stack.material + if material_container == self._empty_container: + machine_approximate_diameter = str(round(self._global_container_stack.getProperty("material_diameter", "value"))) + search_criteria = { "type": "material", "definition": "fdmprinter", "id": self._global_container_stack.getMetaDataEntry("preferred_material"), "approximate_diameter": machine_approximate_diameter} + materials = self._container_registry.findInstanceContainers(**search_criteria) + if materials: + stack.material = materials[0] else: # The metadata entry is stored in an ini, and ini files are parsed as strings only. # Because any non-empty string evaluates to a boolean True, we have to remove the entry to make it False. if "has_materials" in self._global_container_stack.getMetaData(): self._global_container_stack.removeMetaDataEntry("has_materials") - self._global_container_stack.material = ContainerRegistry.getInstance().getEmptyInstanceContainer() + for stack in stacks: + stack.material = ContainerRegistry.getInstance().getEmptyInstanceContainer() Application.getInstance().globalContainerStackChanged.emit() - @pyqtSlot() - def updateMaterialForDiameter(self): + @pyqtSlot(int) + def updateMaterialForDiameter(self, extruder_position: int): # Updates the material container to a material that matches the material diameter set for the printer if not self._global_container_stack: return @@ -269,30 +215,22 @@ class MachineSettingsAction(MachineAction): if not self._global_container_stack.getMetaDataEntry("has_materials", False): return - machine_extruder_count = self._global_container_stack.getProperty("machine_extruder_count", "value") - if machine_extruder_count > 1: - material = ExtruderManager.getInstance().getActiveExtruderStack().material - else: - material = self._global_container_stack.material - material_diameter = material.getProperty("material_diameter", "value") - if not material_diameter: # in case of "empty" material - material_diameter = 0 - material_approximate_diameter = str(round(material_diameter)) + extruder_stack = self._global_container_stack.extruders[str(extruder_position)] - definition_changes = self._global_container_stack.definitionChanges - machine_diameter = definition_changes.getProperty("material_diameter", "value") + material_diameter = extruder_stack.material.getProperty("material_diameter", "value") + if not material_diameter: + # in case of "empty" material + material_diameter = 0 + + material_approximate_diameter = str(round(material_diameter)) + machine_diameter = extruder_stack.definitionChanges.getProperty("material_diameter", "value") if not machine_diameter: - machine_diameter = self._global_container_stack.definition.getProperty("material_diameter", "value") + machine_diameter = extruder_stack.definition.getProperty("material_diameter", "value") machine_approximate_diameter = str(round(machine_diameter)) if material_approximate_diameter != machine_approximate_diameter: Logger.log("i", "The the currently active material(s) do not match the diameter set for the printer. Finding alternatives.") - if machine_extruder_count > 1: - stacks = ExtruderManager.getInstance().getExtruderStacks() - else: - stacks = [self._global_container_stack] - if self._global_container_stack.getMetaDataEntry("has_machine_materials", False): materials_definition = self._global_container_stack.definition.getId() has_material_variants = self._global_container_stack.getMetaDataEntry("has_variants", False) @@ -300,45 +238,47 @@ class MachineSettingsAction(MachineAction): materials_definition = "fdmprinter" has_material_variants = False - for stack in stacks: - old_material = stack.material - search_criteria = { - "type": "material", - "approximate_diameter": machine_approximate_diameter, - "material": old_material.getMetaDataEntry("material", "value"), - "supplier": old_material.getMetaDataEntry("supplier", "value"), - "color_name": old_material.getMetaDataEntry("color_name", "value"), - "definition": materials_definition - } - if has_material_variants: - search_criteria["variant"] = stack.variant.getId() + old_material = extruder_stack.material + search_criteria = { + "type": "material", + "approximate_diameter": machine_approximate_diameter, + "material": old_material.getMetaDataEntry("material", "value"), + "brand": old_material.getMetaDataEntry("brand", "value"), + "supplier": old_material.getMetaDataEntry("supplier", "value"), + "color_name": old_material.getMetaDataEntry("color_name", "value"), + "definition": materials_definition + } + if has_material_variants: + search_criteria["variant"] = extruder_stack.variant.getId() - if old_material == self._empty_container: - search_criteria.pop("material", None) - search_criteria.pop("supplier", None) - search_criteria.pop("definition", None) - search_criteria["id"] = stack.getMetaDataEntry("preferred_material") + if old_material == self._empty_container: + search_criteria.pop("material", None) + search_criteria.pop("supplier", None) + search_criteria.pop("brand", None) + search_criteria.pop("definition", None) + search_criteria["id"] = extruder_stack.getMetaDataEntry("preferred_material") + materials = self._container_registry.findInstanceContainers(**search_criteria) + if not materials: + # Same material with new diameter is not found, search for generic version of the same material type + search_criteria.pop("supplier", None) + search_criteria.pop("brand", None) + search_criteria["color_name"] = "Generic" materials = self._container_registry.findInstanceContainers(**search_criteria) - if not materials: - # Same material with new diameter is not found, search for generic version of the same material type - search_criteria.pop("supplier", None) - search_criteria["color_name"] = "Generic" - materials = self._container_registry.findInstanceContainers(**search_criteria) - if not materials: - # Generic material with new diameter is not found, search for preferred material - search_criteria.pop("color_name", None) - search_criteria.pop("material", None) - search_criteria["id"] = stack.getMetaDataEntry("preferred_material") - materials = self._container_registry.findInstanceContainers(**search_criteria) - if not materials: - # Preferrd material with new diameter is not found, search for any material - search_criteria.pop("id", None) - materials = self._container_registry.findInstanceContainers(**search_criteria) - if not materials: - # Just use empty material as a final fallback - materials = [self._empty_container] + if not materials: + # Generic material with new diameter is not found, search for preferred material + search_criteria.pop("color_name", None) + search_criteria.pop("material", None) + search_criteria["id"] = extruder_stack.getMetaDataEntry("preferred_material") + materials = self._container_registry.findInstanceContainers(**search_criteria) + if not materials: + # Preferred material with new diameter is not found, search for any material + search_criteria.pop("id", None) + materials = self._container_registry.findInstanceContainers(**search_criteria) + if not materials: + # Just use empty material as a final fallback + materials = [self._empty_container] - Logger.log("i", "Selecting new material: %s" % materials[0].getId()) + Logger.log("i", "Selecting new material: %s", materials[0].getId()) - stack.material = materials[0] + extruder_stack.material = materials[0] diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.qml b/plugins/MachineSettingsAction/MachineSettingsAction.qml index 5e2e67eed6..b815d71acc 100644 --- a/plugins/MachineSettingsAction/MachineSettingsAction.qml +++ b/plugins/MachineSettingsAction/MachineSettingsAction.qml @@ -22,7 +22,7 @@ Cura.MachineAction onModelChanged: { var extruderCount = base.extrudersModel.rowCount(); - base.extruderTabsCount = extruderCount > 1 ? extruderCount : 0; + base.extruderTabsCount = extruderCount; } } @@ -241,7 +241,6 @@ Cura.MachineAction UM.TooltipArea { - visible: manager.definedExtruderCount > 1 height: childrenRect.height width: childrenRect.width text: machineExtruderCountProvider.properties.description @@ -271,6 +270,20 @@ Cura.MachineAction } } } + + Connections + { + target: manager + onDefinedExtruderCountChanged: + { + extruderCountModel.clear(); + for(var i = 0; i < manager.definedExtruderCount; ++i) + { + extruderCountModel.append({text: String(i + 1), value: i}); + } + } + } + currentIndex: machineExtruderCountProvider.properties.value - 1 onActivated: { @@ -279,26 +292,6 @@ Cura.MachineAction } } } - - Loader - { - id: materialDiameterField - sourceComponent: numericTextFieldWithUnit - property string settingKey: "material_diameter" - property string unit: catalog.i18nc("@label", "mm") - property string tooltip: catalog.i18nc("@tooltip", "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile.") - property var afterOnEditingFinished: manager.updateMaterialForDiameter - property string label: catalog.i18nc("@label", "Material diameter") - } - Loader - { - id: nozzleSizeField - visible: !Cura.MachineManager.hasVariants && machineExtruderCountProvider.properties.value == 1 - sourceComponent: numericTextFieldWithUnit - property string settingKey: "machine_nozzle_size" - property string label: catalog.i18nc("@label", "Nozzle size") - property string unit: catalog.i18nc("@label", "mm") - } } } @@ -355,7 +348,6 @@ Cura.MachineAction if(currentIndex > 0) { contentItem.forceActiveFocus(); - ExtruderManager.setActiveExtruderIndex(currentIndex - 1); } } @@ -392,6 +384,25 @@ Cura.MachineAction property bool isExtruderSetting: true } + Loader + { + id: materialDiameterField + visible: Cura.MachineManager.hasMaterials + sourceComponent: numericTextFieldWithUnit + property string settingKey: "material_diameter" + property string label: catalog.i18nc("@label", "Material diameter") + property string unit: catalog.i18nc("@label", "mm") + property string tooltip: catalog.i18nc("@tooltip", "The nominal diameter of filament supported by the printer. The exact diameter will be overridden by the material and/or the profile.") + function afterOnEditingFinished() + { + if (settingsTabs.currentIndex > 0) + { + manager.updateMaterialForDiameter(settingsTabs.currentIndex - 1); + } + } + property bool isExtruderSetting: true + } + Loader { id: extruderOffsetXField @@ -441,7 +452,7 @@ Cura.MachineAction property int areaHeight: parent.height - y property string settingKey: "machine_extruder_start_code" property bool isExtruderSetting: true - } + } } Column { height: parent.height @@ -490,7 +501,7 @@ Cura.MachineAction { if(settingsTabs.currentIndex > 0) { - return Cura.MachineManager.activeStackId; + return Cura.ExtruderManager.extruderIds[String(settingsTabs.currentIndex - 1)]; } return ""; } @@ -508,11 +519,11 @@ Cura.MachineAction checked: String(propertyProvider.properties.value).toLowerCase() != 'false' onClicked: { - propertyProvider.setPropertyValue("value", checked); - if(_forceUpdateOnChange) - { - manager.forceUpdate(); - } + propertyProvider.setPropertyValue("value", checked); + if(_forceUpdateOnChange) + { + manager.forceUpdate(); + } } } } @@ -543,7 +554,7 @@ Cura.MachineAction { if(settingsTabs.currentIndex > 0) { - return Cura.MachineManager.activeStackId; + return Cura.ExtruderManager.extruderIds[String(settingsTabs.currentIndex - 1)]; } return ""; } @@ -576,7 +587,10 @@ Cura.MachineAction TextField { id: textField - text: (propertyProvider.properties.value) ? propertyProvider.properties.value : "" + text: { + const value = propertyProvider.properties.value; + return value ? value : ""; + } validator: RegExpValidator { regExp: _allowNegative ? /-?[0-9\.]{0,6}/ : /[0-9\.]{0,6}/ } onEditingFinished: { @@ -585,12 +599,7 @@ Cura.MachineAction propertyProvider.setPropertyValue("value", text); if(_forceUpdateOnChange) { - var extruderIndex = ExtruderManager.activeExtruderIndex; manager.forceUpdate(); - if(ExtruderManager.activeExtruderIndex != extruderIndex) - { - ExtruderManager.setActiveExtruderIndex(extruderIndex) - } } if(_afterOnEditingFinished) { @@ -636,7 +645,7 @@ Cura.MachineAction { if(settingsTabs.currentIndex > 0) { - return Cura.MachineManager.activeStackId; + return Cura.ExtruderManager.extruderIds[String(settingsTabs.currentIndex - 1)]; } return ""; } @@ -723,7 +732,7 @@ Cura.MachineAction width: gcodeArea.width text: _tooltip - property bool _isExtruderSetting: (typeof(isExtruderSetting) === 'undefined') ? false: isExtruderSetting + property bool _isExtruderSetting: (typeof(isExtruderSetting) === 'undefined') ? false : isExtruderSetting property string _tooltip: (typeof(tooltip) === 'undefined') ? propertyProvider.properties.description : tooltip UM.SettingPropertyProvider @@ -735,7 +744,7 @@ Cura.MachineAction { if(settingsTabs.currentIndex > 0) { - return Cura.MachineManager.activeStackId; + return Cura.ExtruderManager.extruderIds[String(settingsTabs.currentIndex - 1)]; } return ""; } diff --git a/plugins/MonitorStage/MonitorMainView.qml b/plugins/MonitorStage/MonitorMainView.qml new file mode 100644 index 0000000000..15b05bed0a --- /dev/null +++ b/plugins/MonitorStage/MonitorMainView.qml @@ -0,0 +1,44 @@ +// Copyright (c) 2017 Ultimaker B.V. + +import QtQuick 2.2 +import QtQuick.Controls 1.1 + +import UM 1.3 as UM +import Cura 1.0 as Cura + +Item +{ + width: parent.width + height: parent.height + + // We show a nice overlay on the 3D viewer when the current output device has no monitor view + Rectangle + { + id: viewportOverlay + + color: UM.Theme.getColor("viewport_overlay") + width: parent.width + height: parent.height + + MouseArea + { + anchors.fill: parent + acceptedButtons: Qt.AllButtons + onWheel: wheel.accepted = true + } + } + + Loader + { + id: monitorViewComponent + + width: parent.width + height: parent.height + + property real maximumWidth: parent.width + property real maximumHeight: parent.height + + sourceComponent: Cura.MachineManager.printerOutputDevices.length > 0 ? Cura.MachineManager.printerOutputDevices[0].monitorItem: null + visible: sourceComponent != null + } +} diff --git a/plugins/MonitorStage/MonitorStage.py b/plugins/MonitorStage/MonitorStage.py new file mode 100644 index 0000000000..0736f49858 --- /dev/null +++ b/plugins/MonitorStage/MonitorStage.py @@ -0,0 +1,73 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +import os.path +from UM.Application import Application +from UM.PluginRegistry import PluginRegistry +from UM.Resources import Resources +from cura.Stages.CuraStage import CuraStage + + +## Stage for monitoring a 3D printing while it's printing. +class MonitorStage(CuraStage): + + def __init__(self, parent = None): + super().__init__(parent) + + # Wait until QML engine is created, otherwise creating the new QML components will fail + Application.getInstance().engineCreatedSignal.connect(self._setComponents) + + # Update the status icon when the output device is changed + Application.getInstance().getOutputDeviceManager().activeDeviceChanged.connect(self._setIconSource) + + def _setComponents(self): + self._setMainOverlay() + self._setSidebar() + self._setIconSource() + + def _setMainOverlay(self): + main_component_path = os.path.join(PluginRegistry.getInstance().getPluginPath("MonitorStage"), "MonitorMainView.qml") + self.addDisplayComponent("main", main_component_path) + + def _setSidebar(self): + # TODO: currently the sidebar component for prepare and monitor stages is the same, this will change with the printer output device refactor! + sidebar_component_path = os.path.join(Resources.getPath(Application.getInstance().ResourceTypes.QmlFiles), "Sidebar.qml") + self.addDisplayComponent("sidebar", sidebar_component_path) + + def _setIconSource(self): + if Application.getInstance().getTheme() is not None: + icon_name = self._getActiveOutputDeviceStatusIcon() + self.setIconSource(Application.getInstance().getTheme().getIcon(icon_name)) + + ## Find the correct status icon depending on the active output device state + def _getActiveOutputDeviceStatusIcon(self): + output_device = Application.getInstance().getOutputDeviceManager().getActiveDevice() + + if not output_device: + return "tab_status_unknown" + + if hasattr(output_device, "acceptsCommands") and not output_device.acceptsCommands: + return "tab_status_unknown" + + if not hasattr(output_device, "printerState") or not hasattr(output_device, "jobState"): + return "tab_status_unknown" + + # TODO: refactor to use enum instead of hardcoded strings? + if output_device.printerState == "maintenance": + return "tab_status_busy" + + if output_device.jobState in ["printing", "pre_print", "pausing", "resuming"]: + return "tab_status_busy" + + if output_device.jobState == "wait_cleanup": + return "tab_status_finished" + + if output_device.jobState in ["ready", ""]: + return "tab_status_connected" + + if output_device.jobState == "paused": + return "tab_status_paused" + + if output_device.jobState == "error": + return "tab_status_stopped" + + return "tab_status_unknown" diff --git a/plugins/MonitorStage/__init__.py b/plugins/MonitorStage/__init__.py new file mode 100644 index 0000000000..884d43a8af --- /dev/null +++ b/plugins/MonitorStage/__init__.py @@ -0,0 +1,20 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from . import MonitorStage + +from UM.i18n import i18nCatalog +i18n_catalog = i18nCatalog("cura") + +def getMetaData(): + return { + "stage": { + "name": i18n_catalog.i18nc("@item:inmenu", "Monitor"), + "weight": 1 + } + } + +def register(app): + return { + "stage": MonitorStage.MonitorStage() + } diff --git a/plugins/MonitorStage/plugin.json b/plugins/MonitorStage/plugin.json new file mode 100644 index 0000000000..cb3f55a80d --- /dev/null +++ b/plugins/MonitorStage/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Monitor Stage", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Provides a monitor stage in Cura.", + "api": 4, + "i18n-catalog": "cura" +} \ No newline at end of file diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index c15431c9e2..ea126bfd44 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -26,17 +26,92 @@ Item { spacing: UM.Theme.getSize("default_margin").height + Row + { + spacing: UM.Theme.getSize("default_margin").width + + Label + { + text: catalog.i18nc("@label","Mesh Type") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + height: UM.Theme.getSize("setting").height + verticalAlignment: Text.AlignVCenter + } + + ComboBox + { + id: meshTypeSelection + style: UM.Theme.styles.combobox + onActivated: { + UM.ActiveTool.setProperty("MeshType", model.get(index).type) + } + model: ListModel + { + id: meshTypeModel + Component.onCompleted: + { + meshTypeModel.append({ + type: "", + text: catalog.i18nc("@label", "Normal model") + }); + meshTypeModel.append({ + type: "support_mesh", + text: catalog.i18nc("@label", "Print as support") + }); + meshTypeModel.append({ + type: "anti_overhang_mesh", + text: catalog.i18nc("@label", "Don't support overlap with other models") + }); + meshTypeModel.append({ + type: "cutting_mesh", + text: catalog.i18nc("@label", "Modify settings for overlap with other models") + }); + meshTypeModel.append({ + type: "infill_mesh", + text: catalog.i18nc("@label", "Modify settings for infill of other models") + }); + + meshTypeSelection.updateCurrentIndex(); + } + } + + function updateCurrentIndex() + { + var mesh_type = UM.ActiveTool.properties.getValue("MeshType"); + for(var index=0; index < meshTypeSelection.model.count; index++) + { + if(meshTypeSelection.model.get(index).type == mesh_type) + { + meshTypeSelection.currentIndex = index; + return; + } + } + meshTypeSelection.currentIndex = 0; + } + } + + Connections + { + target: UM.Selection + onSelectionChanged: meshTypeSelection.updateCurrentIndex() + } + + } + Column { // 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) + id: currentSettings property int maximumHeight: 200 * screenScaleFactor height: Math.min(contents.count * (UM.Theme.getSize("section").height + UM.Theme.getSize("default_lining").height), maximumHeight) + visible: ["support_mesh", "anti_overhang_mesh"].indexOf(meshTypeSelection.model.get(meshTypeSelection.currentIndex).type) == -1 ScrollView { height: parent.height - width: UM.Theme.getSize("setting").width + UM.Theme.getSize("setting").height + width: UM.Theme.getSize("setting").width style: UM.Theme.styles.scrollview ListView @@ -49,6 +124,7 @@ Item { id: addedSettingsModel; containerId: Cura.MachineManager.activeDefinitionId expanded: [ "*" ] + exclude: [ "support_mesh", "anti_overhang_mesh", "cutting_mesh", "infill_mesh" ] visibilityHandler: Cura.PerObjectSettingVisibilityHandler { @@ -58,6 +134,7 @@ Item { delegate: Row { + spacing: - UM.Theme.getSize("default_margin").width Loader { id: settingLoader @@ -68,6 +145,7 @@ Item { property var settingDefinitionsModel: addedSettingsModel property var propertyProvider: provider property var globalPropertyProvider: inheritStackProvider + property var externalResetHandler: false //Qt5.4.2 and earlier has a bug where this causes a crash: https://bugreports.qt.io/browse/QTBUG-35989 //In addition, while it works for 5.5 and higher, the ordering of the actual combo box drop down changes, @@ -112,7 +190,7 @@ Item { Button { - width: (UM.Theme.getSize("setting").height / 2) | 0 + width: Math.floor(UM.Theme.getSize("setting").height / 2) height: UM.Theme.getSize("setting").height onClicked: addedSettingsModel.setVisible(model.key, false) @@ -125,7 +203,7 @@ Item { { anchors.verticalCenter: parent.verticalCenter width: parent.width - height: parent.height / 2 + height: width sourceSize.width: width sourceSize.height: width color: control.hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button") @@ -201,9 +279,9 @@ Item { Button { - id: customise_settings_button; - height: UM.Theme.getSize("setting").height; - visible: parseInt(UM.Preferences.getValue("cura/active_mode")) == 1 + id: customiseSettingsButton; + height: UM.Theme.getSize("setting_control").height; + visible: currentSettings.visible text: catalog.i18nc("@action:button", "Select settings"); @@ -223,21 +301,12 @@ Item { { text: control.text; color: UM.Theme.getColor("setting_control_text"); + font: UM.Theme.getFont("default") anchors.centerIn: parent } } onClicked: settingPickDialog.visible = true; - - Connections - { - target: UM.Preferences; - - onPreferenceChanged: - { - customise_settings_button.visible = parseInt(UM.Preferences.getValue("cura/active_mode")) - } - } } } @@ -325,7 +394,7 @@ Item { } visibilityHandler: UM.SettingPreferenceVisibilityHandler {} expanded: [ "*" ] - exclude: [ "machine_settings", "command_line_settings" ] + exclude: [ "machine_settings", "command_line_settings", "support_mesh", "anti_overhang_mesh", "cutting_mesh", "infill_mesh" ] } delegate:Loader { diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py b/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py index d0cb53c4f8..d2db5ff420 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py @@ -8,6 +8,7 @@ from UM.Application import Application from UM.Preferences import Preferences from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator from cura.Settings.ExtruderManager import ExtruderManager +from UM.Settings.SettingInstance import SettingInstance from UM.Event import Event @@ -18,7 +19,7 @@ class PerObjectSettingsTool(Tool): super().__init__() self._model = None - self.setExposedProperties("SelectedObjectId", "ContainerID", "SelectedActiveExtruder") + self.setExposedProperties("SelectedObjectId", "ContainerID", "SelectedActiveExtruder", "MeshType") self._advanced_mode = False self._multi_extrusion = False @@ -70,6 +71,39 @@ class PerObjectSettingsTool(Tool): selected_object.addDecorator(SettingOverrideDecorator()) selected_object.callDecoration("setActiveExtruder", extruder_stack_id) + def setMeshType(self, mesh_type): + selected_object = Selection.getSelectedObject(0) + stack = selected_object.callDecoration("getStack") #Don't try to get the active extruder since it may be None anyway. + if not stack: + selected_object.addDecorator(SettingOverrideDecorator()) + stack = selected_object.callDecoration("getStack") + + settings = stack.getTop() + for property_key in ["infill_mesh", "cutting_mesh", "support_mesh", "anti_overhang_mesh"]: + if property_key != mesh_type: + if settings.getInstance(property_key): + settings.removeInstance(property_key) + else: + if not (settings.getInstance(property_key) and settings.getProperty(property_key, "value")): + definition = stack.getSettingDefinition(property_key) + new_instance = SettingInstance(definition, settings) + new_instance.setProperty("value", True) + new_instance.resetState() # Ensure that the state is not seen as a user state. + settings.addInstance(new_instance) + + def getMeshType(self): + selected_object = Selection.getSelectedObject(0) + stack = selected_object.callDecoration("getStack") #Don't try to get the active extruder since it may be None anyway. + if not stack: + return "" + + settings = stack.getTop() + for property_key in ["infill_mesh", "cutting_mesh", "support_mesh", "anti_overhang_mesh"]: + if settings.getInstance(property_key) and settings.getProperty(property_key, "value"): + return property_key + + return "" + def _onPreferenceChanged(self, preference): if preference == "cura/active_mode": self._advanced_mode = Preferences.getInstance().getValue(preference) == 1 @@ -78,31 +112,26 @@ class PerObjectSettingsTool(Tool): def _onGlobalContainerChanged(self): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: + + # used for enabling or disabling per extruder settings per object self._multi_extrusion = global_container_stack.getProperty("machine_extruder_count", "value") > 1 - # Ensure that all extruder data is reset - if not self._multi_extrusion: - default_stack_id = global_container_stack.getId() - else: - default_stack = ExtruderManager.getInstance().getExtruderStack(0) - if default_stack: - default_stack_id = default_stack.getId() - else: - default_stack_id = global_container_stack.getId() + extruder_stack = ExtruderManager.getInstance().getExtruderStack(0) - root_node = Application.getInstance().getController().getScene().getRoot() - for node in DepthFirstIterator(root_node): - new_stack_id = default_stack_id - # Get position of old extruder stack for this node - old_extruder_pos = node.callDecoration("getActiveExtruderPosition") - if old_extruder_pos is not None: - # Fetch current (new) extruder stack at position - new_stack = ExtruderManager.getInstance().getExtruderStack(old_extruder_pos) - if new_stack: - new_stack_id = new_stack.getId() - node.callDecoration("setActiveExtruder", new_stack_id) + if extruder_stack: + root_node = Application.getInstance().getController().getScene().getRoot() + for node in DepthFirstIterator(root_node): + new_stack_id = extruder_stack.getId() + # Get position of old extruder stack for this node + old_extruder_pos = node.callDecoration("getActiveExtruderPosition") + if old_extruder_pos is not None: + # Fetch current (new) extruder stack at position + new_stack = ExtruderManager.getInstance().getExtruderStack(old_extruder_pos) + if new_stack: + new_stack_id = new_stack.getId() + node.callDecoration("setActiveExtruder", new_stack_id) - self._updateEnabled() + self._updateEnabled() def _updateEnabled(self): selected_objects = Selection.getAllSelectedObjects() diff --git a/plugins/PluginBrowser/PluginBrowser.py b/plugins/PluginBrowser/PluginBrowser.py index 37ad128b49..35b88b3465 100644 --- a/plugins/PluginBrowser/PluginBrowser.py +++ b/plugins/PluginBrowser/PluginBrowser.py @@ -11,7 +11,6 @@ from UM.Message import Message from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply from PyQt5.QtCore import QUrl, QObject, Qt, pyqtProperty, pyqtSignal, pyqtSlot -from PyQt5.QtQml import QQmlComponent, QQmlContext import json import os @@ -39,8 +38,6 @@ class PluginBrowser(QObject, Extension): self._plugins_metadata = [] self._plugins_model = None - self._qml_component = None - self._qml_context = None self._dialog = None self._download_progress = 0 @@ -111,17 +108,8 @@ class PluginBrowser(QObject, Extension): def _createDialog(self, qml_name): Logger.log("d", "Creating dialog [%s]", qml_name) - - path = QUrl.fromLocalFile(os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), qml_name)) - self._qml_component = QQmlComponent(Application.getInstance()._engine, path) - - # We need access to engine (although technically we can't) - self._qml_context = QQmlContext(Application.getInstance()._engine.rootContext()) - self._qml_context.setContextProperty("manager", self) - dialog = self._qml_component.create(self._qml_context) - if dialog is None: - Logger.log("e", "QQmlComponent status %s", self._qml_component.status()) - Logger.log("e", "QQmlComponent errorString %s", self._qml_component.errorString()) + path = os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), qml_name) + dialog = Application.getInstance().createQmlComponent(path, {"manager": self}) return dialog def setIsDownloading(self, is_downloading): diff --git a/plugins/PrepareStage/PrepareStage.py b/plugins/PrepareStage/PrepareStage.py new file mode 100644 index 0000000000..9d4d632845 --- /dev/null +++ b/plugins/PrepareStage/PrepareStage.py @@ -0,0 +1,18 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +import os.path +from UM.Application import Application +from UM.Resources import Resources +from cura.Stages.CuraStage import CuraStage + + +## Stage for preparing model (slicing). +class PrepareStage(CuraStage): + + def __init__(self, parent = None): + super().__init__(parent) + Application.getInstance().engineCreatedSignal.connect(self._engineCreated) + + def _engineCreated(self): + sidebar_component_path = os.path.join(Resources.getPath(Application.getInstance().ResourceTypes.QmlFiles), "Sidebar.qml") + self.addDisplayComponent("sidebar", sidebar_component_path) diff --git a/plugins/PrepareStage/__init__.py b/plugins/PrepareStage/__init__.py new file mode 100644 index 0000000000..f085d788f9 --- /dev/null +++ b/plugins/PrepareStage/__init__.py @@ -0,0 +1,20 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from . import PrepareStage + +from UM.i18n import i18nCatalog +i18n_catalog = i18nCatalog("cura") + +def getMetaData(): + return { + "stage": { + "name": i18n_catalog.i18nc("@item:inmenu", "Prepare"), + "weight": 0 + } + } + +def register(app): + return { + "stage": PrepareStage.PrepareStage() + } diff --git a/plugins/PrepareStage/plugin.json b/plugins/PrepareStage/plugin.json new file mode 100644 index 0000000000..4fd55e955e --- /dev/null +++ b/plugins/PrepareStage/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Prepare Stage", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Provides a prepare stage in Cura.", + "api": 4, + "i18n-catalog": "cura" +} \ No newline at end of file diff --git a/plugins/RemovableDriveOutputDevice/OSXRemovableDrivePlugin.py b/plugins/RemovableDriveOutputDevice/OSXRemovableDrivePlugin.py index d87499273b..5ad2caed0b 100644 --- a/plugins/RemovableDriveOutputDevice/OSXRemovableDrivePlugin.py +++ b/plugins/RemovableDriveOutputDevice/OSXRemovableDrivePlugin.py @@ -4,8 +4,6 @@ from . import RemovableDrivePlugin -from UM.Logger import Logger - import subprocess import os @@ -15,12 +13,12 @@ import plistlib class OSXRemovableDrivePlugin(RemovableDrivePlugin.RemovableDrivePlugin): def checkRemovableDrives(self): drives = {} - p = subprocess.Popen(["system_profiler", "SPUSBDataType", "-xml"], stdout = subprocess.PIPE) + p = subprocess.Popen(["system_profiler", "SPUSBDataType", "-xml"], stdout = subprocess.PIPE, stderr = subprocess.PIPE) plist = plistlib.loads(p.communicate()[0]) result = self._recursiveSearch(plist, "removable_media") - p = subprocess.Popen(["system_profiler", "SPCardReaderDataType", "-xml"], stdout=subprocess.PIPE) + p = subprocess.Popen(["system_profiler", "SPCardReaderDataType", "-xml"], stdout=subprocess.PIPE, stderr = subprocess.PIPE) plist = plistlib.loads(p.communicate()[0]) result.extend(self._recursiveSearch(plist, "removable_media")) diff --git a/plugins/LayerView/LayerSlider.qml b/plugins/SimulationView/LayerSlider.qml similarity index 85% rename from plugins/LayerView/LayerSlider.qml rename to plugins/SimulationView/LayerSlider.qml index 9abeb01148..22f9d91340 100644 --- a/plugins/LayerView/LayerSlider.qml +++ b/plugins/SimulationView/LayerSlider.qml @@ -1,312 +1,325 @@ -// Copyright (c) 2017 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.2 -import QtQuick.Layouts 1.1 -import QtQuick.Controls.Styles 1.1 - -import UM 1.0 as UM -import Cura 1.0 as Cura - -Item { - id: sliderRoot - - // handle properties - property real handleSize: 10 - property real handleRadius: handleSize / 2 - property real minimumRangeHandleSize: handleSize / 2 - property color upperHandleColor: "black" - property color lowerHandleColor: "black" - property color rangeHandleColor: "black" - property real handleLabelWidth: width - property var activeHandle: upperHandle - - // track properties - property real trackThickness: 4 // width of the slider track - property real trackRadius: trackThickness / 2 - property color trackColor: "white" - property real trackBorderWidth: 1 // width of the slider track border - property color trackBorderColor: "black" - - // value properties - property real maximumValue: 100 - property real minimumValue: 0 - property real minimumRange: 0 // minimum range allowed between min and max values - property bool roundValues: true - property real upperValue: maximumValue - property real lowerValue: minimumValue - - property bool layersVisible: true - - function getUpperValueFromSliderHandle () { - return upperHandle.getValue() - } - - function setUpperValue (value) { - upperHandle.setValue(value) - updateRangeHandle() - } - - function getLowerValueFromSliderHandle () { - return lowerHandle.getValue() - } - - function setLowerValue (value) { - lowerHandle.setValue(value) - updateRangeHandle() - } - - function updateRangeHandle () { - rangeHandle.height = lowerHandle.y - (upperHandle.y + upperHandle.height) - } - - // set the active handle to show only one label at a time - function setActiveHandle (handle) { - activeHandle = handle - } - - // slider track - Rectangle { - id: track - - width: sliderRoot.trackThickness - height: sliderRoot.height - sliderRoot.handleSize - radius: sliderRoot.trackRadius - anchors.centerIn: sliderRoot - color: sliderRoot.trackColor - border.width: sliderRoot.trackBorderWidth - border.color: sliderRoot.trackBorderColor - visible: sliderRoot.layersVisible - } - - // Range handle - Item { - id: rangeHandle - - y: upperHandle.y + upperHandle.height - width: sliderRoot.handleSize - height: sliderRoot.minimumRangeHandleSize - anchors.horizontalCenter: sliderRoot.horizontalCenter - visible: sliderRoot.layersVisible - - // set the new value when dragging - function onHandleDragged () { - - upperHandle.y = y - upperHandle.height - lowerHandle.y = y + height - - var upperValue = sliderRoot.getUpperValueFromSliderHandle() - var lowerValue = sliderRoot.getLowerValueFromSliderHandle() - - // set both values after moving the handle position - UM.LayerView.setCurrentLayer(upperValue) - UM.LayerView.setMinimumLayer(lowerValue) - } - - function setValue (value) { - var range = sliderRoot.upperValue - sliderRoot.lowerValue - value = Math.min(value, sliderRoot.maximumValue) - value = Math.max(value, sliderRoot.minimumValue + range) - - UM.LayerView.setCurrentLayer(value) - UM.LayerView.setMinimumLayer(value - range) - } - - Rectangle { - width: sliderRoot.trackThickness - 2 * sliderRoot.trackBorderWidth - height: parent.height + sliderRoot.handleSize - anchors.centerIn: parent - color: sliderRoot.rangeHandleColor - } - - MouseArea { - anchors.fill: parent - - drag { - target: parent - axis: Drag.YAxis - minimumY: upperHandle.height - maximumY: sliderRoot.height - (rangeHandle.height + lowerHandle.height) - } - - onPositionChanged: parent.onHandleDragged() - onPressed: sliderRoot.setActiveHandle(rangeHandle) - } - - LayerSliderLabel { - id: rangleHandleLabel - - height: sliderRoot.handleSize + UM.Theme.getSize("default_margin").height - x: parent.x - width - UM.Theme.getSize("default_margin").width - anchors.verticalCenter: parent.verticalCenter - target: Qt.point(sliderRoot.width, y + height / 2) - visible: sliderRoot.activeHandle == parent - - // custom properties - maximumValue: sliderRoot.maximumValue - value: sliderRoot.upperValue - busy: UM.LayerView.busy - setValue: rangeHandle.setValue // connect callback functions - } - } - - // Upper handle - Rectangle { - id: upperHandle - - y: sliderRoot.height - (sliderRoot.minimumRangeHandleSize + 2 * sliderRoot.handleSize) - width: sliderRoot.handleSize - height: sliderRoot.handleSize - anchors.horizontalCenter: sliderRoot.horizontalCenter - radius: sliderRoot.handleRadius - color: sliderRoot.upperHandleColor - visible: sliderRoot.layersVisible - - function onHandleDragged () { - - // don't allow the lower handle to be heigher than the upper handle - if (lowerHandle.y - (y + height) < sliderRoot.minimumRangeHandleSize) { - lowerHandle.y = y + height + sliderRoot.minimumRangeHandleSize - } - - // update the range handle - sliderRoot.updateRangeHandle() - - // set the new value after moving the handle position - UM.LayerView.setCurrentLayer(getValue()) - } - - // get the upper value based on the slider position - function getValue () { - var result = y / (sliderRoot.height - (2 * sliderRoot.handleSize + sliderRoot.minimumRangeHandleSize)) - result = sliderRoot.maximumValue + result * (sliderRoot.minimumValue - (sliderRoot.maximumValue - sliderRoot.minimumValue)) - result = sliderRoot.roundValues ? Math.round(result) : result - return result - } - - // set the slider position based on the upper value - function setValue (value) { - - UM.LayerView.setCurrentLayer(value) - - var diff = (value - sliderRoot.maximumValue) / (sliderRoot.minimumValue - sliderRoot.maximumValue) - var newUpperYPosition = Math.round(diff * (sliderRoot.height - (2 * sliderRoot.handleSize + sliderRoot.minimumRangeHandleSize))) - y = newUpperYPosition - - // update the range handle - sliderRoot.updateRangeHandle() - } - - // dragging - MouseArea { - anchors.fill: parent - - drag { - target: parent - axis: Drag.YAxis - minimumY: 0 - maximumY: sliderRoot.height - (2 * sliderRoot.handleSize + sliderRoot.minimumRangeHandleSize) - } - - onPositionChanged: parent.onHandleDragged() - onPressed: sliderRoot.setActiveHandle(upperHandle) - } - - LayerSliderLabel { - id: upperHandleLabel - - height: sliderRoot.handleSize + UM.Theme.getSize("default_margin").height - x: parent.x - width - UM.Theme.getSize("default_margin").width - anchors.verticalCenter: parent.verticalCenter - target: Qt.point(sliderRoot.width, y + height / 2) - visible: sliderRoot.activeHandle == parent - - // custom properties - maximumValue: sliderRoot.maximumValue - value: sliderRoot.upperValue - busy: UM.LayerView.busy - setValue: upperHandle.setValue // connect callback functions - } - } - - // Lower handle - Rectangle { - id: lowerHandle - - y: sliderRoot.height - sliderRoot.handleSize - width: parent.handleSize - height: parent.handleSize - anchors.horizontalCenter: parent.horizontalCenter - radius: sliderRoot.handleRadius - color: sliderRoot.lowerHandleColor - - visible: slider.layersVisible - - function onHandleDragged () { - - // don't allow the upper handle to be lower than the lower handle - if (y - (upperHandle.y + upperHandle.height) < sliderRoot.minimumRangeHandleSize) { - upperHandle.y = y - (upperHandle.heigth + sliderRoot.minimumRangeHandleSize) - } - - // update the range handle - sliderRoot.updateRangeHandle() - - // set the new value after moving the handle position - UM.LayerView.setMinimumLayer(getValue()) - } - - // get the lower value from the current slider position - function getValue () { - var result = (y - (sliderRoot.handleSize + sliderRoot.minimumRangeHandleSize)) / (sliderRoot.height - (2 * sliderRoot.handleSize + sliderRoot.minimumRangeHandleSize)); - result = sliderRoot.maximumValue - sliderRoot.minimumRange + result * (sliderRoot.minimumValue - (sliderRoot.maximumValue - sliderRoot.minimumRange)) - result = sliderRoot.roundValues ? Math.round(result) : result - return result - } - - // set the slider position based on the lower value - function setValue (value) { - - UM.LayerView.setMinimumLayer(value) - - var diff = (value - sliderRoot.maximumValue) / (sliderRoot.minimumValue - sliderRoot.maximumValue) - var newLowerYPosition = Math.round((sliderRoot.handleSize + sliderRoot.minimumRangeHandleSize) + diff * (sliderRoot.height - (2 * sliderRoot.handleSize + sliderRoot.minimumRangeHandleSize))) - y = newLowerYPosition - - // update the range handle - sliderRoot.updateRangeHandle() - } - - // dragging - MouseArea { - anchors.fill: parent - - drag { - target: parent - axis: Drag.YAxis - minimumY: upperHandle.height + sliderRoot.minimumRangeHandleSize - maximumY: sliderRoot.height - parent.height - } - - onPositionChanged: parent.onHandleDragged() - onPressed: sliderRoot.setActiveHandle(lowerHandle) - } - - LayerSliderLabel { - id: lowerHandleLabel - - height: sliderRoot.handleSize + UM.Theme.getSize("default_margin").height - x: parent.x - width - UM.Theme.getSize("default_margin").width - anchors.verticalCenter: parent.verticalCenter - target: Qt.point(sliderRoot.width, y + height / 2) - visible: sliderRoot.activeHandle == parent - - // custom properties - maximumValue: sliderRoot.maximumValue - value: sliderRoot.lowerValue - busy: UM.LayerView.busy - setValue: lowerHandle.setValue // connect callback functions - } - } -} +// Copyright (c) 2017 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Layouts 1.1 +import QtQuick.Controls.Styles 1.1 + +import UM 1.0 as UM +import Cura 1.0 as Cura + +Item { + id: sliderRoot + + // handle properties + property real handleSize: 10 + property real handleRadius: handleSize / 2 + property real minimumRangeHandleSize: handleSize / 2 + property color upperHandleColor: "black" + property color lowerHandleColor: "black" + property color rangeHandleColor: "black" + property color handleActiveColor: "white" + property real handleLabelWidth: width + property var activeHandle: upperHandle + + // track properties + property real trackThickness: 4 // width of the slider track + property real trackRadius: trackThickness / 2 + property color trackColor: "white" + property real trackBorderWidth: 1 // width of the slider track border + property color trackBorderColor: "black" + + // value properties + property real maximumValue: 100 + property real minimumValue: 0 + property real minimumRange: 0 // minimum range allowed between min and max values + property bool roundValues: true + property real upperValue: maximumValue + property real lowerValue: minimumValue + + property bool layersVisible: true + + function getUpperValueFromSliderHandle () { + return upperHandle.getValue() + } + + function setUpperValue (value) { + upperHandle.setValue(value) + updateRangeHandle() + } + + function getLowerValueFromSliderHandle () { + return lowerHandle.getValue() + } + + function setLowerValue (value) { + lowerHandle.setValue(value) + updateRangeHandle() + } + + function updateRangeHandle () { + rangeHandle.height = lowerHandle.y - (upperHandle.y + upperHandle.height) + } + + // set the active handle to show only one label at a time + function setActiveHandle (handle) { + activeHandle = handle + } + + // slider track + Rectangle { + id: track + + width: sliderRoot.trackThickness + height: sliderRoot.height - sliderRoot.handleSize + radius: sliderRoot.trackRadius + anchors.centerIn: sliderRoot + color: sliderRoot.trackColor + border.width: sliderRoot.trackBorderWidth + border.color: sliderRoot.trackBorderColor + visible: sliderRoot.layersVisible + } + + // Range handle + Item { + id: rangeHandle + + y: upperHandle.y + upperHandle.height + width: sliderRoot.handleSize + height: sliderRoot.minimumRangeHandleSize + anchors.horizontalCenter: sliderRoot.horizontalCenter + visible: sliderRoot.layersVisible + + // set the new value when dragging + function onHandleDragged () { + + upperHandle.y = y - upperHandle.height + lowerHandle.y = y + height + + var upperValue = sliderRoot.getUpperValueFromSliderHandle() + var lowerValue = sliderRoot.getLowerValueFromSliderHandle() + + // set both values after moving the handle position + UM.SimulationView.setCurrentLayer(upperValue) + UM.SimulationView.setMinimumLayer(lowerValue) + } + + function setValue (value) { + var range = sliderRoot.upperValue - sliderRoot.lowerValue + value = Math.min(value, sliderRoot.maximumValue) + value = Math.max(value, sliderRoot.minimumValue + range) + + UM.SimulationView.setCurrentLayer(value) + UM.SimulationView.setMinimumLayer(value - range) + } + + Rectangle { + width: sliderRoot.trackThickness - 2 * sliderRoot.trackBorderWidth + height: parent.height + sliderRoot.handleSize + anchors.centerIn: parent + color: sliderRoot.rangeHandleColor + } + + MouseArea { + anchors.fill: parent + + drag { + target: parent + axis: Drag.YAxis + minimumY: upperHandle.height + maximumY: sliderRoot.height - (rangeHandle.height + lowerHandle.height) + } + + onPositionChanged: parent.onHandleDragged() + onPressed: sliderRoot.setActiveHandle(rangeHandle) + } + + SimulationSliderLabel { + id: rangleHandleLabel + + height: sliderRoot.handleSize + UM.Theme.getSize("default_margin").height + x: parent.x - width - UM.Theme.getSize("default_margin").width + anchors.verticalCenter: parent.verticalCenter + target: Qt.point(sliderRoot.width, y + height / 2) + visible: sliderRoot.activeHandle == parent + + // custom properties + maximumValue: sliderRoot.maximumValue + value: sliderRoot.upperValue + busy: UM.SimulationView.busy + setValue: rangeHandle.setValue // connect callback functions + } + } + + // Upper handle + Rectangle { + id: upperHandle + + y: sliderRoot.height - (sliderRoot.minimumRangeHandleSize + 2 * sliderRoot.handleSize) + width: sliderRoot.handleSize + height: sliderRoot.handleSize + anchors.horizontalCenter: sliderRoot.horizontalCenter + radius: sliderRoot.handleRadius + color: upperHandleLabel.activeFocus ? sliderRoot.handleActiveColor : sliderRoot.upperHandleColor + visible: sliderRoot.layersVisible + + function onHandleDragged () { + + // don't allow the lower handle to be heigher than the upper handle + if (lowerHandle.y - (y + height) < sliderRoot.minimumRangeHandleSize) { + lowerHandle.y = y + height + sliderRoot.minimumRangeHandleSize + } + + // update the range handle + sliderRoot.updateRangeHandle() + + // set the new value after moving the handle position + UM.SimulationView.setCurrentLayer(getValue()) + } + + // get the upper value based on the slider position + function getValue () { + var result = y / (sliderRoot.height - (2 * sliderRoot.handleSize + sliderRoot.minimumRangeHandleSize)) + result = sliderRoot.maximumValue + result * (sliderRoot.minimumValue - (sliderRoot.maximumValue - sliderRoot.minimumValue)) + result = sliderRoot.roundValues ? Math.round(result) : result + return result + } + + // set the slider position based on the upper value + function setValue (value) { + + UM.SimulationView.setCurrentLayer(value) + + var diff = (value - sliderRoot.maximumValue) / (sliderRoot.minimumValue - sliderRoot.maximumValue) + var newUpperYPosition = Math.round(diff * (sliderRoot.height - (2 * sliderRoot.handleSize + sliderRoot.minimumRangeHandleSize))) + y = newUpperYPosition + + // update the range handle + sliderRoot.updateRangeHandle() + } + + Keys.onUpPressed: upperHandleLabel.setValue(upperHandleLabel.value + ((event.modifiers & Qt.ShiftModifier) ? 10 : 1)) + Keys.onDownPressed: upperHandleLabel.setValue(upperHandleLabel.value - ((event.modifiers & Qt.ShiftModifier) ? 10 : 1)) + + // dragging + MouseArea { + anchors.fill: parent + + drag { + target: parent + axis: Drag.YAxis + minimumY: 0 + maximumY: sliderRoot.height - (2 * sliderRoot.handleSize + sliderRoot.minimumRangeHandleSize) + } + + onPositionChanged: parent.onHandleDragged() + onPressed: { + sliderRoot.setActiveHandle(upperHandle) + upperHandleLabel.forceActiveFocus() + } + } + + SimulationSliderLabel { + id: upperHandleLabel + + height: sliderRoot.handleSize + UM.Theme.getSize("default_margin").height + x: parent.x - width - UM.Theme.getSize("default_margin").width + anchors.verticalCenter: parent.verticalCenter + target: Qt.point(sliderRoot.width, y + height / 2) + visible: sliderRoot.activeHandle == parent + + // custom properties + maximumValue: sliderRoot.maximumValue + value: sliderRoot.upperValue + busy: UM.SimulationView.busy + setValue: upperHandle.setValue // connect callback functions + } + } + + // Lower handle + Rectangle { + id: lowerHandle + + y: sliderRoot.height - sliderRoot.handleSize + width: parent.handleSize + height: parent.handleSize + anchors.horizontalCenter: parent.horizontalCenter + radius: sliderRoot.handleRadius + color: lowerHandleLabel.activeFocus ? sliderRoot.handleActiveColor : sliderRoot.lowerHandleColor + + visible: sliderRoot.layersVisible + + function onHandleDragged () { + + // don't allow the upper handle to be lower than the lower handle + if (y - (upperHandle.y + upperHandle.height) < sliderRoot.minimumRangeHandleSize) { + upperHandle.y = y - (upperHandle.heigth + sliderRoot.minimumRangeHandleSize) + } + + // update the range handle + sliderRoot.updateRangeHandle() + + // set the new value after moving the handle position + UM.SimulationView.setMinimumLayer(getValue()) + } + + // get the lower value from the current slider position + function getValue () { + var result = (y - (sliderRoot.handleSize + sliderRoot.minimumRangeHandleSize)) / (sliderRoot.height - (2 * sliderRoot.handleSize + sliderRoot.minimumRangeHandleSize)); + result = sliderRoot.maximumValue - sliderRoot.minimumRange + result * (sliderRoot.minimumValue - (sliderRoot.maximumValue - sliderRoot.minimumRange)) + result = sliderRoot.roundValues ? Math.round(result) : result + return result + } + + // set the slider position based on the lower value + function setValue (value) { + + UM.SimulationView.setMinimumLayer(value) + + var diff = (value - sliderRoot.maximumValue) / (sliderRoot.minimumValue - sliderRoot.maximumValue) + var newLowerYPosition = Math.round((sliderRoot.handleSize + sliderRoot.minimumRangeHandleSize) + diff * (sliderRoot.height - (2 * sliderRoot.handleSize + sliderRoot.minimumRangeHandleSize))) + y = newLowerYPosition + + // update the range handle + sliderRoot.updateRangeHandle() + } + + Keys.onUpPressed: lowerHandleLabel.setValue(lowerHandleLabel.value + ((event.modifiers & Qt.ShiftModifier) ? 10 : 1)) + Keys.onDownPressed: lowerHandleLabel.setValue(lowerHandleLabel.value - ((event.modifiers & Qt.ShiftModifier) ? 10 : 1)) + + // dragging + MouseArea { + anchors.fill: parent + + drag { + target: parent + axis: Drag.YAxis + minimumY: upperHandle.height + sliderRoot.minimumRangeHandleSize + maximumY: sliderRoot.height - parent.height + } + + onPositionChanged: parent.onHandleDragged() + onPressed: { + sliderRoot.setActiveHandle(lowerHandle) + lowerHandleLabel.forceActiveFocus() + } + } + + SimulationSliderLabel { + id: lowerHandleLabel + + height: sliderRoot.handleSize + UM.Theme.getSize("default_margin").height + x: parent.x - width - UM.Theme.getSize("default_margin").width + anchors.verticalCenter: parent.verticalCenter + target: Qt.point(sliderRoot.width, y + height / 2) + visible: sliderRoot.activeHandle == parent + + // custom properties + maximumValue: sliderRoot.maximumValue + value: sliderRoot.lowerValue + busy: UM.SimulationView.busy + setValue: lowerHandle.setValue // connect callback functions + } + } +} diff --git a/plugins/SimulationView/NozzleNode.py b/plugins/SimulationView/NozzleNode.py new file mode 100644 index 0000000000..8a29871775 --- /dev/null +++ b/plugins/SimulationView/NozzleNode.py @@ -0,0 +1,49 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from UM.Application import Application +from UM.Math.Color import Color +from UM.Math.Vector import Vector +from UM.PluginRegistry import PluginRegistry +from UM.Scene.SceneNode import SceneNode +from UM.View.GL.OpenGL import OpenGL +from UM.Resources import Resources + +import os + +class NozzleNode(SceneNode): + def __init__(self, parent = None): + super().__init__(parent) + + self._shader = None + self.setCalculateBoundingBox(False) + self._createNozzleMesh() + + def _createNozzleMesh(self): + mesh_file = "resources/nozzle.stl" + try: + path = os.path.join(PluginRegistry.getInstance().getPluginPath("SimulationView"), mesh_file) + except FileNotFoundError: + path = "" + + reader = Application.getInstance().getMeshFileHandler().getReaderForFile(path) + node = reader.read(path) + + if node.getMeshData(): + self.setMeshData(node.getMeshData()) + + def render(self, renderer): + # Avoid to render if it is not visible + if not self.isVisible(): + return False + + if not self._shader: + # We now misuse the platform shader, as it actually supports textures + self._shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "color.shader")) + self._shader.setUniformValue("u_color", Color(*Application.getInstance().getTheme().getColor("layerview_nozzle").getRgb())) + # Set the opacity to 0, so that the template is in full control. + self._shader.setUniformValue("u_opacity", 0) + + if self.getMeshData(): + renderer.queueNode(self, shader = self._shader, transparent = True) + return True diff --git a/plugins/SimulationView/PathSlider.qml b/plugins/SimulationView/PathSlider.qml new file mode 100644 index 0000000000..0a4af904aa --- /dev/null +++ b/plugins/SimulationView/PathSlider.qml @@ -0,0 +1,161 @@ +// Copyright (c) 2017 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Layouts 1.1 +import QtQuick.Controls.Styles 1.1 + +import UM 1.0 as UM +import Cura 1.0 as Cura + +Item { + id: sliderRoot + + // handle properties + property real handleSize: 10 + property real handleRadius: handleSize / 2 + property color handleColor: "black" + property color handleActiveColor: "white" + property color rangeColor: "black" + property real handleLabelWidth: width + + // track properties + property real trackThickness: 4 // width of the slider track + property real trackRadius: trackThickness / 2 + property color trackColor: "white" + property real trackBorderWidth: 1 // width of the slider track border + property color trackBorderColor: "black" + + // value properties + property real maximumValue: 100 + property bool roundValues: true + property real handleValue: maximumValue + + property bool pathsVisible: true + + function getHandleValueFromSliderHandle () { + return handle.getValue() + } + + function setHandleValue (value) { + handle.setValue(value) + updateRangeHandle() + } + + function updateRangeHandle () { + rangeHandle.width = handle.x - sliderRoot.handleSize + } + + // slider track + Rectangle { + id: track + + width: sliderRoot.width - sliderRoot.handleSize + height: sliderRoot.trackThickness + radius: sliderRoot.trackRadius + anchors.centerIn: sliderRoot + color: sliderRoot.trackColor + border.width: sliderRoot.trackBorderWidth + border.color: sliderRoot.trackBorderColor + visible: sliderRoot.pathsVisible + } + + // Progress indicator + Item { + id: rangeHandle + + x: handle.width + height: sliderRoot.handleSize + width: handle.x - sliderRoot.handleSize + anchors.verticalCenter: sliderRoot.verticalCenter + visible: sliderRoot.pathsVisible + + Rectangle { + height: sliderRoot.trackThickness - 2 * sliderRoot.trackBorderWidth + width: parent.width + sliderRoot.handleSize + anchors.centerIn: parent + color: sliderRoot.rangeColor + } + } + + // Handle + Rectangle { + id: handle + + x: sliderRoot.handleSize + width: sliderRoot.handleSize + height: sliderRoot.handleSize + anchors.verticalCenter: sliderRoot.verticalCenter + radius: sliderRoot.handleRadius + color: handleLabel.activeFocus ? sliderRoot.handleActiveColor : sliderRoot.handleColor + visible: sliderRoot.pathsVisible + + function onHandleDragged () { + + // update the range handle + sliderRoot.updateRangeHandle() + + // set the new value after moving the handle position + UM.SimulationView.setCurrentPath(getValue()) + } + + // get the value based on the slider position + function getValue () { + var result = x / (sliderRoot.width - sliderRoot.handleSize) + result = result * sliderRoot.maximumValue + result = sliderRoot.roundValues ? Math.round(result) : result + return result + } + + // set the slider position based on the value + function setValue (value) { + + UM.SimulationView.setCurrentPath(value) + + var diff = value / sliderRoot.maximumValue + var newXPosition = Math.round(diff * (sliderRoot.width - sliderRoot.handleSize)) + x = newXPosition + + // update the range handle + sliderRoot.updateRangeHandle() + } + + Keys.onRightPressed: handleLabel.setValue(handleLabel.value + ((event.modifiers & Qt.ShiftModifier) ? 10 : 1)) + Keys.onLeftPressed: handleLabel.setValue(handleLabel.value - ((event.modifiers & Qt.ShiftModifier) ? 10 : 1)) + + // dragging + MouseArea { + anchors.fill: parent + + drag { + target: parent + axis: Drag.XAxis + minimumX: 0 + maximumX: sliderRoot.width - sliderRoot.handleSize + } + onPressed: { + handleLabel.forceActiveFocus() + } + + onPositionChanged: parent.onHandleDragged() + } + + SimulationSliderLabel { + id: handleLabel + + height: sliderRoot.handleSize + UM.Theme.getSize("default_margin").height + y: parent.y + sliderRoot.handleSize + UM.Theme.getSize("default_margin").height + anchors.horizontalCenter: parent.horizontalCenter + target: Qt.point(x + width / 2, sliderRoot.height) + visible: false + startFrom: 0 + + // custom properties + maximumValue: sliderRoot.maximumValue + value: sliderRoot.handleValue + busy: UM.SimulationView.busy + setValue: handle.setValue // connect callback functions + } + } +} diff --git a/plugins/SimulationView/SimulationPass.py b/plugins/SimulationView/SimulationPass.py new file mode 100644 index 0000000000..b453020ffa --- /dev/null +++ b/plugins/SimulationView/SimulationPass.py @@ -0,0 +1,191 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from UM.Math.Color import Color +from UM.Math.Vector import Vector +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator +from UM.Resources import Resources +from UM.Scene.SceneNode import SceneNode +from UM.Scene.ToolHandle import ToolHandle +from UM.Application import Application +from UM.PluginRegistry import PluginRegistry + +from UM.View.RenderPass import RenderPass +from UM.View.RenderBatch import RenderBatch +from UM.View.GL.OpenGL import OpenGL + +from cura.Settings.ExtruderManager import ExtruderManager + + +import os.path + +## RenderPass used to display g-code paths. +from .NozzleNode import NozzleNode + + +class SimulationPass(RenderPass): + def __init__(self, width, height): + super().__init__("simulationview", width, height) + + self._layer_shader = None + self._layer_shadow_shader = None + self._current_shader = None # This shader will be the shadow or the normal depending if the user wants to see the paths or the layers + self._tool_handle_shader = None + self._nozzle_shader = None + self._old_current_layer = 0 + self._old_current_path = 0 + self._switching_layers = True # It tracks when the user is moving the layers' slider + self._gl = OpenGL.getInstance().getBindingsObject() + self._scene = Application.getInstance().getController().getScene() + self._extruder_manager = ExtruderManager.getInstance() + + self._layer_view = None + self._compatibility_mode = None + + def setSimulationView(self, layerview): + self._layer_view = layerview + self._compatibility_mode = layerview.getCompatibilityMode() + + def render(self): + if not self._layer_shader: + if self._compatibility_mode: + shader_filename = "layers.shader" + shadow_shader_filename = "layers_shadow.shader" + else: + shader_filename = "layers3d.shader" + shadow_shader_filename = "layers3d_shadow.shader" + self._layer_shader = OpenGL.getInstance().createShaderProgram(os.path.join(PluginRegistry.getInstance().getPluginPath("SimulationView"), shader_filename)) + self._layer_shadow_shader = OpenGL.getInstance().createShaderProgram(os.path.join(PluginRegistry.getInstance().getPluginPath("SimulationView"), shadow_shader_filename)) + self._current_shader = self._layer_shader + # Use extruder 0 if the extruder manager reports extruder index -1 (for single extrusion printers) + self._layer_shader.setUniformValue("u_active_extruder", float(max(0, self._extruder_manager.activeExtruderIndex))) + if self._layer_view: + self._layer_shader.setUniformValue("u_max_feedrate", self._layer_view.getMaxFeedrate()) + self._layer_shader.setUniformValue("u_min_feedrate", self._layer_view.getMinFeedrate()) + self._layer_shader.setUniformValue("u_max_thickness", self._layer_view.getMaxThickness()) + self._layer_shader.setUniformValue("u_min_thickness", self._layer_view.getMinThickness()) + self._layer_shader.setUniformValue("u_layer_view_type", self._layer_view.getSimulationViewType()) + self._layer_shader.setUniformValue("u_extruder_opacity", self._layer_view.getExtruderOpacities()) + self._layer_shader.setUniformValue("u_show_travel_moves", self._layer_view.getShowTravelMoves()) + self._layer_shader.setUniformValue("u_show_helpers", self._layer_view.getShowHelpers()) + self._layer_shader.setUniformValue("u_show_skin", self._layer_view.getShowSkin()) + self._layer_shader.setUniformValue("u_show_infill", self._layer_view.getShowInfill()) + else: + #defaults + self._layer_shader.setUniformValue("u_max_feedrate", 1) + self._layer_shader.setUniformValue("u_min_feedrate", 0) + self._layer_shader.setUniformValue("u_max_thickness", 1) + self._layer_shader.setUniformValue("u_min_thickness", 0) + self._layer_shader.setUniformValue("u_layer_view_type", 1) + self._layer_shader.setUniformValue("u_extruder_opacity", [1, 1, 1, 1]) + self._layer_shader.setUniformValue("u_show_travel_moves", 0) + self._layer_shader.setUniformValue("u_show_helpers", 1) + self._layer_shader.setUniformValue("u_show_skin", 1) + self._layer_shader.setUniformValue("u_show_infill", 1) + + if not self._tool_handle_shader: + self._tool_handle_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "toolhandle.shader")) + + if not self._nozzle_shader: + self._nozzle_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "color.shader")) + self._nozzle_shader.setUniformValue("u_color", Color(*Application.getInstance().getTheme().getColor("layerview_nozzle").getRgb())) + + self.bind() + + tool_handle_batch = RenderBatch(self._tool_handle_shader, type = RenderBatch.RenderType.Overlay, backface_cull = True) + active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate + head_position = None # Indicates the current position of the print head + nozzle_node = None + + for node in DepthFirstIterator(self._scene.getRoot()): + + if isinstance(node, ToolHandle): + tool_handle_batch.addItem(node.getWorldTransformation(), mesh = node.getSolidMesh()) + + elif isinstance(node, NozzleNode): + nozzle_node = node + nozzle_node.setVisible(False) + + elif issubclass(type(node), SceneNode) and (node.getMeshData() or node.callDecoration("isBlockSlicing")) and node.isVisible() and node.callDecoration("getBuildPlateNumber") == active_build_plate: + layer_data = node.callDecoration("getLayerData") + if not layer_data: + continue + + # Render all layers below a certain number as line mesh instead of vertices. + if self._layer_view._current_layer_num > -1 and ((not self._layer_view._only_show_top_layers) or (not self._layer_view.getCompatibilityMode())): + start = 0 + end = 0 + element_counts = layer_data.getElementCounts() + for layer in sorted(element_counts.keys()): + # In the current layer, we show just the indicated paths + if layer == self._layer_view._current_layer_num: + # We look for the position of the head, searching the point of the current path + index = self._layer_view._current_path_num + offset = 0 + for polygon in layer_data.getLayer(layer).polygons: + # The size indicates all values in the two-dimension array, and the second dimension is + # always size 3 because we have 3D points. + if index >= polygon.data.size // 3 - offset: + index -= polygon.data.size // 3 - offset + offset = 1 # This is to avoid the first point when there is more than one polygon, since has the same value as the last point in the previous polygon + continue + # The head position is calculated and translated + head_position = Vector(polygon.data[index+offset][0], polygon.data[index+offset][1], polygon.data[index+offset][2]) + node.getWorldPosition() + break + break + if self._layer_view._minimum_layer_num > layer: + start += element_counts[layer] + end += element_counts[layer] + + # Calculate the range of paths in the last layer + current_layer_start = end + current_layer_end = end + self._layer_view._current_path_num * 2 # Because each point is used twice + + # This uses glDrawRangeElements internally to only draw a certain range of lines. + # All the layers but the current selected layer are rendered first + if self._old_current_path != self._layer_view._current_path_num: + self._current_shader = self._layer_shadow_shader + self._switching_layers = False + if not self._layer_view.isSimulationRunning() and self._old_current_layer != self._layer_view._current_layer_num: + self._current_shader = self._layer_shader + self._switching_layers = True + + layers_batch = RenderBatch(self._current_shader, type = RenderBatch.RenderType.Solid, mode = RenderBatch.RenderMode.Lines, range = (start, end), backface_cull = True) + layers_batch.addItem(node.getWorldTransformation(), layer_data) + layers_batch.render(self._scene.getActiveCamera()) + + # Current selected layer is rendered + current_layer_batch = RenderBatch(self._layer_shader, type = RenderBatch.RenderType.Solid, mode = RenderBatch.RenderMode.Lines, range = (current_layer_start, current_layer_end)) + current_layer_batch.addItem(node.getWorldTransformation(), layer_data) + current_layer_batch.render(self._scene.getActiveCamera()) + + self._old_current_layer = self._layer_view._current_layer_num + self._old_current_path = self._layer_view._current_path_num + + # Create a new batch that is not range-limited + batch = RenderBatch(self._layer_shader, type = RenderBatch.RenderType.Solid) + + if self._layer_view.getCurrentLayerMesh(): + batch.addItem(node.getWorldTransformation(), self._layer_view.getCurrentLayerMesh()) + + if self._layer_view.getCurrentLayerJumps(): + batch.addItem(node.getWorldTransformation(), self._layer_view.getCurrentLayerJumps()) + + if len(batch.items) > 0: + batch.render(self._scene.getActiveCamera()) + + # The nozzle is drawn when once we know the correct position of the head, + # but the user is not using the layer slider, and the compatibility mode is not enabled + if not self._switching_layers and not self._compatibility_mode and self._layer_view.getActivity() and nozzle_node is not None: + if head_position is not None: + nozzle_node.setVisible(True) + nozzle_node.setPosition(head_position) + nozzle_batch = RenderBatch(self._nozzle_shader, type = RenderBatch.RenderType.Transparent) + nozzle_batch.addItem(nozzle_node.getWorldTransformation(), mesh = nozzle_node.getMeshData()) + nozzle_batch.render(self._scene.getActiveCamera()) + + # Render toolhandles on top of the layerview + if len(tool_handle_batch.items) > 0: + tool_handle_batch.render(self._scene.getActiveCamera()) + + self.release() diff --git a/plugins/LayerView/LayerSliderLabel.qml b/plugins/SimulationView/SimulationSliderLabel.qml similarity index 83% rename from plugins/LayerView/LayerSliderLabel.qml rename to plugins/SimulationView/SimulationSliderLabel.qml index 892f1775ea..1c8daf867f 100644 --- a/plugins/LayerView/LayerSliderLabel.qml +++ b/plugins/SimulationView/SimulationSliderLabel.qml @@ -1,103 +1,104 @@ -// Copyright (c) 2017 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.2 -import QtQuick.Layouts 1.1 -import QtQuick.Controls.Styles 1.1 - -import UM 1.0 as UM -import Cura 1.0 as Cura - -UM.PointingRectangle { - id: sliderLabelRoot - - // custom properties - property real maximumValue: 100 - property real value: 0 - property var setValue // Function - property bool busy: false - - target: Qt.point(parent.width, y + height / 2) - arrowSize: UM.Theme.getSize("default_arrow").width - height: parent.height - width: valueLabel.width + UM.Theme.getSize("default_margin").width - visible: false - - // make sure the text field is focussed when pressing the parent handle - // needed to connect the key bindings when switching active handle - onVisibleChanged: if (visible) valueLabel.forceActiveFocus() - - color: UM.Theme.getColor("tool_panel_background") - borderColor: UM.Theme.getColor("lining") - borderWidth: UM.Theme.getSize("default_lining").width - - Behavior on height { - NumberAnimation { - duration: 50 - } - } - - // catch all mouse events so they're not handled by underlying 3D scene - MouseArea { - anchors.fill: parent - } - - TextField { - id: valueLabel - - anchors { - left: parent.left - leftMargin: UM.Theme.getSize("default_margin").width / 2 - verticalCenter: parent.verticalCenter - } - - width: 40 * screenScaleFactor - text: sliderLabelRoot.value + 1 // the current handle value, add 1 because layers is an array - horizontalAlignment: TextInput.AlignRight - - // key bindings, work when label is currenctly focused (active handle in LayerSlider) - Keys.onUpPressed: sliderLabelRoot.setValue(sliderLabelRoot.value + ((event.modifiers & Qt.ShiftModifier) ? 10 : 1)) - Keys.onDownPressed: sliderLabelRoot.setValue(sliderLabelRoot.value - ((event.modifiers & Qt.ShiftModifier) ? 10 : 1)) - - style: TextFieldStyle { - textColor: UM.Theme.getColor("setting_control_text") - font: UM.Theme.getFont("default") - background: Item { } - } - - onEditingFinished: { - - // Ensure that the cursor is at the first position. On some systems the text isn't fully visible - // Seems to have to do something with different dpi densities that QML doesn't quite handle. - // Another option would be to increase the size even further, but that gives pretty ugly results. - cursorPosition = 0 - - if (valueLabel.text != "") { - // -1 because we need to convert back to an array structure - sliderLabelRoot.setValue(parseInt(valueLabel.text) - 1) - } - } - - validator: IntValidator { - bottom: 1 - top: sliderLabelRoot.maximumValue + 1 // +1 because actual layers is an array - } - } - - BusyIndicator { - id: busyIndicator - - anchors { - left: parent.right - leftMargin: UM.Theme.getSize("default_margin").width / 2 - verticalCenter: parent.verticalCenter - } - - width: sliderLabelRoot.height - height: width - - visible: sliderLabelRoot.busy - running: sliderLabelRoot.busy - } -} +// Copyright (c) 2017 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Layouts 1.1 +import QtQuick.Controls.Styles 1.1 + +import UM 1.0 as UM +import Cura 1.0 as Cura + +UM.PointingRectangle { + id: sliderLabelRoot + + // custom properties + property real maximumValue: 100 + property real value: 0 + property var setValue // Function + property bool busy: false + property int startFrom: 1 + + target: Qt.point(parent.width, y + height / 2) + arrowSize: UM.Theme.getSize("default_arrow").width + height: parent.height + width: valueLabel.width + UM.Theme.getSize("default_margin").width + visible: false + + // make sure the text field is focussed when pressing the parent handle + // needed to connect the key bindings when switching active handle + onVisibleChanged: if (visible) valueLabel.forceActiveFocus() + + color: UM.Theme.getColor("tool_panel_background") + borderColor: UM.Theme.getColor("lining") + borderWidth: UM.Theme.getSize("default_lining").width + + Behavior on height { + NumberAnimation { + duration: 50 + } + } + + // catch all mouse events so they're not handled by underlying 3D scene + MouseArea { + anchors.fill: parent + } + + TextField { + id: valueLabel + + anchors { + left: parent.left + leftMargin: Math.floor(UM.Theme.getSize("default_margin").width / 2) + verticalCenter: parent.verticalCenter + } + + width: 40 * screenScaleFactor + text: sliderLabelRoot.value + startFrom // the current handle value, add 1 because layers is an array + horizontalAlignment: TextInput.AlignRight + + // key bindings, work when label is currenctly focused (active handle in LayerSlider) + Keys.onUpPressed: sliderLabelRoot.setValue(sliderLabelRoot.value + ((event.modifiers & Qt.ShiftModifier) ? 10 : 1)) + Keys.onDownPressed: sliderLabelRoot.setValue(sliderLabelRoot.value - ((event.modifiers & Qt.ShiftModifier) ? 10 : 1)) + + style: TextFieldStyle { + textColor: UM.Theme.getColor("setting_control_text") + font: UM.Theme.getFont("default") + background: Item { } + } + + onEditingFinished: { + + // Ensure that the cursor is at the first position. On some systems the text isn't fully visible + // Seems to have to do something with different dpi densities that QML doesn't quite handle. + // Another option would be to increase the size even further, but that gives pretty ugly results. + cursorPosition = 0 + + if (valueLabel.text != "") { + // -startFrom because we need to convert back to an array structure + sliderLabelRoot.setValue(parseInt(valueLabel.text) - startFrom) + } + } + + validator: IntValidator { + bottom:startFrom + top: sliderLabelRoot.maximumValue + startFrom // +startFrom because maybe we want to start in a different value rather than 0 + } + } + + BusyIndicator { + id: busyIndicator + + anchors { + left: parent.right + leftMargin: Math.floor(UM.Theme.getSize("default_margin").width / 2) + verticalCenter: parent.verticalCenter + } + + width: sliderLabelRoot.height + height: width + + visible: sliderLabelRoot.busy + running: sliderLabelRoot.busy + } +} diff --git a/plugins/LayerView/LayerView.py b/plugins/SimulationView/SimulationView.py old mode 100755 new mode 100644 similarity index 70% rename from plugins/LayerView/LayerView.py rename to plugins/SimulationView/SimulationView.py index d23dd90915..7a716d3b2b --- a/plugins/LayerView/LayerView.py +++ b/plugins/SimulationView/SimulationView.py @@ -1,46 +1,49 @@ -# Copyright (c) 2015 Ultimaker B.V. +# Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import sys -from UM.PluginRegistry import PluginRegistry -from UM.View.View import View -from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator -from UM.Resources import Resources -from UM.Event import Event, KeyEvent -from UM.Signal import Signal -from UM.Scene.Selection import Selection -from UM.Math.Color import Color -from UM.Mesh.MeshBuilder import MeshBuilder -from UM.Job import Job -from UM.Preferences import Preferences -from UM.Logger import Logger -from UM.View.GL.OpenGL import OpenGL -from UM.Message import Message -from UM.Application import Application -from UM.View.GL.OpenGLContext import OpenGLContext - -from cura.ConvexHullNode import ConvexHullNode -from cura.Settings.ExtruderManager import ExtruderManager - from PyQt5.QtCore import Qt +from PyQt5.QtGui import QOpenGLContext from PyQt5.QtWidgets import QApplication -from . import LayerViewProxy - +from UM.Application import Application +from UM.Event import Event, KeyEvent +from UM.Job import Job +from UM.Logger import Logger +from UM.Math.Color import Color +from UM.Mesh.MeshBuilder import MeshBuilder +from UM.Message import Message +from UM.Platform import Platform +from UM.PluginRegistry import PluginRegistry +from UM.Preferences import Preferences +from UM.Resources import Resources +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator +from UM.Scene.Selection import Selection +from UM.Signal import Signal +from UM.View.GL.OpenGL import OpenGL +from UM.View.GL.OpenGLContext import OpenGLContext +from UM.View.View import View from UM.i18n import i18nCatalog -catalog = i18nCatalog("cura") +from cura.Scene.ConvexHullNode import ConvexHullNode +from cura.CuraApplication import CuraApplication -from . import LayerPass +from .NozzleNode import NozzleNode +from .SimulationPass import SimulationPass +from .SimulationViewProxy import SimulationViewProxy + +catalog = i18nCatalog("cura") import numpy import os.path ## View used to display g-code paths. -class LayerView(View): - # Must match LayerView.qml +class SimulationView(View): + # Must match SimulationView.qml LAYER_VIEW_TYPE_MATERIAL_TYPE = 0 LAYER_VIEW_TYPE_LINE_TYPE = 1 + LAYER_VIEW_TYPE_FEEDRATE = 2 + LAYER_VIEW_TYPE_THICKNESS = 3 def __init__(self): super().__init__() @@ -54,22 +57,29 @@ class LayerView(View): self._activity = False self._old_max_layers = 0 + self._max_paths = 0 + self._current_path_num = 0 + self._minimum_path_num = 0 + self.currentLayerNumChanged.connect(self._onCurrentLayerNumChanged) + self._busy = False + self._simulation_running = False self._ghost_shader = None self._layer_pass = None self._composite_pass = None self._old_layer_bindings = None - self._layerview_composite_shader = None + self._simulationview_composite_shader = None self._old_composite_shader = None self._global_container_stack = None - self._proxy = LayerViewProxy.LayerViewProxy() + self._proxy = SimulationViewProxy() self._controller.getScene().getRoot().childrenChanged.connect(self._onSceneChanged) self._resetSettings() self._legend_items = None self._show_travel_moves = False + self._nozzle_node = None Preferences.getInstance().addPreference("view/top_layer_count", 5) Preferences.getInstance().addPreference("view/only_show_top_layers", False) @@ -91,7 +101,7 @@ class LayerView(View): 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"), - title = catalog.i18nc("@info:title", "Layer View")) + title = catalog.i18nc("@info:title", "Simulation View")) def _resetSettings(self): self._layer_view_type = 0 # 0 is material color, 1 is color by linetype, 2 is speed @@ -101,18 +111,24 @@ class LayerView(View): self._show_helpers = 1 self._show_skin = 1 self._show_infill = 1 + self.resetLayerData() def getActivity(self): return self._activity - def getLayerPass(self): + def setActivity(self, activity): + if self._activity == activity: + return + self._activity = activity + self.activityChanged.emit() + + def getSimulationPass(self): if not self._layer_pass: # Currently the RenderPass constructor requires a size > 0 # This should be fixed in RenderPass's constructor. - self._layer_pass = LayerPass.LayerPass(1, 1) + self._layer_pass = SimulationPass(1, 1) self._compatibility_mode = OpenGLContext.isLegacyOpenGL() or bool(Preferences.getInstance().getValue("view/force_layer_view_compatibility_mode")) - self._layer_pass.setLayerView(self) - self.getRenderer().addRenderPass(self._layer_pass) + self._layer_pass.setSimulationView(self) return self._layer_pass def getCurrentLayer(self): @@ -121,13 +137,27 @@ class LayerView(View): def getMinimumLayer(self): return self._minimum_layer_num - def _onSceneChanged(self, node): - self.calculateMaxLayers() - def getMaxLayers(self): return self._max_layers - busyChanged = Signal() + def getCurrentPath(self): + return self._current_path_num + + def getMinimumPath(self): + return self._minimum_path_num + + def getMaxPaths(self): + return self._max_paths + + def getNozzleNode(self): + if not self._nozzle_node: + self._nozzle_node = NozzleNode() + return self._nozzle_node + + def _onSceneChanged(self, node): + self.setActivity(False) + self.calculateMaxLayers() + self.calculateMaxPathsOnLayer(self._current_layer_num) def isBusy(self): return self._busy @@ -137,9 +167,19 @@ class LayerView(View): self._busy = busy self.busyChanged.emit() + def isSimulationRunning(self): + return self._simulation_running + + def setSimulationRunning(self, running): + self._simulation_running = running + def resetLayerData(self): self._current_layer_mesh = None self._current_layer_jumps = None + self._max_feedrate = sys.float_info.min + self._min_feedrate = sys.float_info.max + self._max_thickness = sys.float_info.min + self._min_thickness = sys.float_info.max def beginRendering(self): scene = self.getController().getScene() @@ -187,15 +227,43 @@ class LayerView(View): self.currentLayerNumChanged.emit() + def setPath(self, value): + if self._current_path_num != value: + self._current_path_num = value + if self._current_path_num < 0: + self._current_path_num = 0 + if self._current_path_num > self._max_paths: + self._current_path_num = self._max_paths + if self._current_path_num < self._minimum_path_num: + self._minimum_path_num = self._current_path_num + + self._startUpdateTopLayers() + + self.currentPathNumChanged.emit() + + def setMinimumPath(self, value): + if self._minimum_path_num != value: + self._minimum_path_num = value + if self._minimum_path_num < 0: + self._minimum_path_num = 0 + if self._minimum_path_num > self._max_layers: + self._minimum_path_num = self._max_layers + if self._minimum_path_num > self._current_path_num: + self._current_path_num = self._minimum_path_num + + self._startUpdateTopLayers() + + self.currentPathNumChanged.emit() + ## Set the layer view type # - # \param layer_view_type integer as in LayerView.qml and this class - def setLayerViewType(self, layer_view_type): + # \param layer_view_type integer as in SimulationView.qml and this class + def setSimulationViewType(self, layer_view_type): self._layer_view_type = layer_view_type self.currentLayerNumChanged.emit() - ## Return the layer view type, integer as in LayerView.qml and this class - def getLayerViewType(self): + ## Return the layer view type, integer as in SimulationView.qml and this class + def getSimulationViewType(self): return self._layer_view_type ## Set the extruder opacity @@ -244,9 +312,20 @@ class LayerView(View): def getExtruderCount(self): return self._extruder_count + def getMinFeedrate(self): + return self._min_feedrate + + def getMaxFeedrate(self): + return self._max_feedrate + + def getMinThickness(self): + return self._min_thickness + + def getMaxThickness(self): + return self._max_thickness + def calculateMaxLayers(self): scene = self.getController().getScene() - self._activity = True self._old_max_layers = self._max_layers ## Recalculate num max layers @@ -256,9 +335,16 @@ class LayerView(View): if not layer_data: continue + self.setActivity(True) min_layer_number = sys.maxsize max_layer_number = -sys.maxsize for layer_id in layer_data.getLayers(): + # Store the max and min feedrates and thicknesses for display purposes + for p in layer_data.getLayer(layer_id).polygons: + self._max_feedrate = max(float(p.lineFeedrates.max()), self._max_feedrate) + self._min_feedrate = min(float(p.lineFeedrates.min()), self._min_feedrate) + self._max_thickness = max(float(p.lineThicknesses.max()), self._max_thickness) + self._min_thickness = min(float(p.lineThicknesses.min()), self._min_thickness) if max_layer_number < layer_id: max_layer_number = layer_id if min_layer_number > layer_id: @@ -282,10 +368,32 @@ class LayerView(View): self.maxLayersChanged.emit() self._startUpdateTopLayers() + def calculateMaxPathsOnLayer(self, layer_num): + # Update the currentPath + scene = self.getController().getScene() + for node in DepthFirstIterator(scene.getRoot()): + layer_data = node.callDecoration("getLayerData") + if not layer_data: + continue + + layer = layer_data.getLayer(layer_num) + if layer is None: + return + new_max_paths = layer.lineMeshElementCount() + if new_max_paths >= 0 and new_max_paths != self._max_paths: + self._max_paths = new_max_paths + self.maxPathsChanged.emit() + + self.setPath(int(new_max_paths)) + maxLayersChanged = Signal() + maxPathsChanged = Signal() currentLayerNumChanged = Signal() + currentPathNumChanged = Signal() globalStackChanged = Signal() preferencesChanged = Signal() + busyChanged = Signal() + activityChanged = Signal() ## Hackish way to ensure the proxy is already created, which ensures that the layerview.qml is already created # as this caused some issues. @@ -309,25 +417,48 @@ class LayerView(View): return True if event.type == Event.ViewActivateEvent: - # Make sure the LayerPass is created - self.getLayerPass() + # FIX: on Max OS X, somehow QOpenGLContext.currentContext() can become None during View switching. + # This can happen when you do the following steps: + # 1. Start Cura + # 2. Load a model + # 3. Switch to Custom mode + # 4. Select the model and click on the per-object tool icon + # 5. Switch view to Layer view or X-Ray + # 6. Cura will very likely crash + # It seems to be a timing issue that the currentContext can somehow be empty, but I have no clue why. + # This fix tries to reschedule the view changing event call on the Qt thread again if the current OpenGL + # context is None. + if Platform.isOSX(): + if QOpenGLContext.currentContext() is None: + Logger.log("d", "current context of OpenGL is empty on Mac OS X, will try to create shaders later") + CuraApplication.getInstance().callLater(lambda e=event: self.event(e)) + return + + # Make sure the SimulationPass is created + layer_pass = self.getSimulationPass() + self.getRenderer().addRenderPass(layer_pass) + + # Make sure the NozzleNode is add to the root + nozzle = self.getNozzleNode() + nozzle.setParent(self.getController().getScene().getRoot()) + nozzle.setVisible(False) Application.getInstance().globalContainerStackChanged.connect(self._onGlobalStackChanged) self._onGlobalStackChanged() - if not self._layerview_composite_shader: - self._layerview_composite_shader = OpenGL.getInstance().createShaderProgram(os.path.join(PluginRegistry.getInstance().getPluginPath("LayerView"), "layerview_composite.shader")) + if not self._simulationview_composite_shader: + self._simulationview_composite_shader = OpenGL.getInstance().createShaderProgram(os.path.join(PluginRegistry.getInstance().getPluginPath("SimulationView"), "simulationview_composite.shader")) theme = Application.getInstance().getTheme() - self._layerview_composite_shader.setUniformValue("u_background_color", Color(*theme.getColor("viewport_background").getRgb())) - self._layerview_composite_shader.setUniformValue("u_outline_color", Color(*theme.getColor("model_selection_outline").getRgb())) + self._simulationview_composite_shader.setUniformValue("u_background_color", Color(*theme.getColor("viewport_background").getRgb())) + self._simulationview_composite_shader.setUniformValue("u_outline_color", Color(*theme.getColor("model_selection_outline").getRgb())) if not self._composite_pass: self._composite_pass = self.getRenderer().getRenderPass("composite") self._old_layer_bindings = self._composite_pass.getLayerBindings()[:] # make a copy so we can restore to it later - self._composite_pass.getLayerBindings().append("layerview") + self._composite_pass.getLayerBindings().append("simulationview") self._old_composite_shader = self._composite_pass.getCompositeShader() - self._composite_pass.setCompositeShader(self._layerview_composite_shader) + self._composite_pass.setCompositeShader(self._simulationview_composite_shader) elif event.type == Event.ViewDeactivateEvent: self._wireprint_warning_message.hide() @@ -335,6 +466,8 @@ class LayerView(View): if self._global_container_stack: self._global_container_stack.propertyChanged.disconnect(self._onPropertyChanged) + self._nozzle_node.setParent(None) + self.getRenderer().removeRenderPass(self._layer_pass) self._composite_pass.setLayerBindings(self._old_layer_bindings) self._composite_pass.setCompositeShader(self._old_composite_shader) @@ -363,6 +496,9 @@ class LayerView(View): else: self._wireprint_warning_message.hide() + def _onCurrentLayerNumChanged(self): + self.calculateMaxPathsOnLayer(self._current_layer_num) + def _startUpdateTopLayers(self): if not self._compatibility_mode: return @@ -396,7 +532,7 @@ class LayerView(View): self._compatibility_mode = OpenGLContext.isLegacyOpenGL() or bool( Preferences.getInstance().getValue("view/force_layer_view_compatibility_mode")) - self.setLayerViewType(int(float(Preferences.getInstance().getValue("layerview/layer_view_type")))); + self.setSimulationViewType(int(float(Preferences.getInstance().getValue("layerview/layer_view_type")))); for extruder_nr, extruder_opacity in enumerate(Preferences.getInstance().getValue("layerview/extruder_opacities").split("|")): try: diff --git a/plugins/SimulationView/SimulationView.qml b/plugins/SimulationView/SimulationView.qml new file mode 100644 index 0000000000..19ae81a6e3 --- /dev/null +++ b/plugins/SimulationView/SimulationView.qml @@ -0,0 +1,707 @@ +// Copyright (c) 2017 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.4 +import QtQuick.Controls 1.2 +import QtQuick.Layouts 1.1 +import QtQuick.Controls.Styles 1.1 + +import UM 1.0 as UM +import Cura 1.0 as Cura + +Item +{ + id: base + width: { + if (UM.SimulationView.compatibilityMode) { + return UM.Theme.getSize("layerview_menu_size_compatibility").width; + } else { + return UM.Theme.getSize("layerview_menu_size").width; + } + } + height: { + if (viewSettings.collapsed) { + if (UM.SimulationView.compatibilityMode) { + return UM.Theme.getSize("layerview_menu_size_compatibility_collapsed").height; + } + return UM.Theme.getSize("layerview_menu_size_collapsed").height; + } else if (UM.SimulationView.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.SimulationView.extruderCount * (UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("layerview_row_spacing").height) + } else { + return UM.Theme.getSize("layerview_menu_size").height + UM.SimulationView.extruderCount * (UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("layerview_row_spacing").height) + } + } + Behavior on height { NumberAnimation { duration: 100 } } + + property var buttonTarget: { + 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 != null ? !parent.parent.monitoringPrint: true + + Rectangle { + id: layerViewMenu + anchors.right: parent.right + anchors.top: parent.top + width: parent.width + height: parent.height + clip: true + z: layerSlider.z - 1 + color: UM.Theme.getColor("tool_panel_background") + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + + Button { + id: collapseButton + anchors.top: parent.top + anchors.topMargin: Math.floor(UM.Theme.getSize("default_margin").height + (UM.Theme.getSize("layerview_row").height - UM.Theme.getSize("default_margin").height) / 2) + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_margin").width + + width: UM.Theme.getSize("standard_arrow").width + height: UM.Theme.getSize("standard_arrow").height + + onClicked: viewSettings.collapsed = !viewSettings.collapsed + + style: ButtonStyle + { + background: UM.RecolorImage + { + width: control.width + height: control.height + sourceSize.width: width + sourceSize.height: width + color: UM.Theme.getColor("setting_control_text") + source: viewSettings.collapsed ? UM.Theme.getIcon("arrow_left") : UM.Theme.getIcon("arrow_bottom") + } + label: Label{ } + } + } + + ColumnLayout { + id: viewSettings + + property bool collapsed: false + property var extruder_opacities: UM.Preferences.getValue("layerview/extruder_opacities").split("|") + property bool show_travel_moves: UM.Preferences.getValue("layerview/show_travel_moves") + property bool show_helpers: UM.Preferences.getValue("layerview/show_helpers") + property bool show_skin: UM.Preferences.getValue("layerview/show_skin") + property bool show_infill: UM.Preferences.getValue("layerview/show_infill") + // if we are in compatibility mode, we only show the "line type" + property bool show_legend: UM.SimulationView.compatibilityMode ? true : UM.Preferences.getValue("layerview/layer_view_type") == 1 + property bool show_gradient: UM.SimulationView.compatibilityMode ? false : UM.Preferences.getValue("layerview/layer_view_type") == 2 || UM.Preferences.getValue("layerview/layer_view_type") == 3 + property bool show_feedrate_gradient: show_gradient && UM.Preferences.getValue("layerview/layer_view_type") == 2 + property bool show_thickness_gradient: show_gradient && UM.Preferences.getValue("layerview/layer_view_type") == 3 + property bool only_show_top_layers: UM.Preferences.getValue("view/only_show_top_layers") + property int top_layer_count: UM.Preferences.getValue("view/top_layer_count") + + anchors.top: parent.top + 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 + spacing: UM.Theme.getSize("layerview_row_spacing").height + + Label + { + id: layerViewTypesLabel + anchors.left: parent.left + text: catalog.i18nc("@label","Color scheme") + font: UM.Theme.getFont("default"); + visible: !UM.SimulationView.compatibilityMode + Layout.fillWidth: true + color: UM.Theme.getColor("setting_control_text") + } + + ListModel // matches SimulationView.py + { + id: layerViewTypes + } + + Component.onCompleted: + { + layerViewTypes.append({ + text: catalog.i18nc("@label:listbox", "Material Color"), + type_id: 0 + }) + layerViewTypes.append({ + text: catalog.i18nc("@label:listbox", "Line Type"), + type_id: 1 + }) + layerViewTypes.append({ + text: catalog.i18nc("@label:listbox", "Feedrate"), + type_id: 2 + }) + layerViewTypes.append({ + text: catalog.i18nc("@label:listbox", "Layer thickness"), + type_id: 3 // these ids match the switching in the shader + }) + } + + ComboBox + { + id: layerTypeCombobox + anchors.left: parent.left + Layout.fillWidth: true + Layout.preferredWidth: UM.Theme.getSize("layerview_row").width + model: layerViewTypes + visible: !UM.SimulationView.compatibilityMode + style: UM.Theme.styles.combobox + anchors.right: parent.right + + onActivated: + { + UM.Preferences.setValue("layerview/layer_view_type", index); + } + + Component.onCompleted: + { + currentIndex = UM.SimulationView.compatibilityMode ? 1 : UM.Preferences.getValue("layerview/layer_view_type"); + updateLegends(currentIndex); + } + + function updateLegends(type_id) + { + // update visibility of legends + viewSettings.show_legend = UM.SimulationView.compatibilityMode || (type_id == 1); + viewSettings.show_gradient = !UM.SimulationView.compatibilityMode && (type_id == 2 || type_id == 3); + viewSettings.show_feedrate_gradient = viewSettings.show_gradient && (type_id == 2); + viewSettings.show_thickness_gradient = viewSettings.show_gradient && (type_id == 3); + } + + } + + Label + { + id: compatibilityModeLabel + anchors.left: parent.left + text: catalog.i18nc("@label","Compatibility Mode") + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + visible: UM.SimulationView.compatibilityMode + Layout.fillWidth: true + Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + Layout.preferredWidth: UM.Theme.getSize("layerview_row").width + } + + Item + { + height: Math.floor(UM.Theme.getSize("default_margin").width / 2) + width: width + } + + Connections { + target: UM.Preferences + onPreferenceChanged: + { + layerTypeCombobox.currentIndex = UM.SimulationView.compatibilityMode ? 1 : UM.Preferences.getValue("layerview/layer_view_type"); + layerTypeCombobox.updateLegends(layerTypeCombobox.currentIndex); + playButton.pauseSimulation(); + viewSettings.extruder_opacities = UM.Preferences.getValue("layerview/extruder_opacities").split("|"); + viewSettings.show_travel_moves = UM.Preferences.getValue("layerview/show_travel_moves"); + viewSettings.show_helpers = UM.Preferences.getValue("layerview/show_helpers"); + viewSettings.show_skin = UM.Preferences.getValue("layerview/show_skin"); + viewSettings.show_infill = UM.Preferences.getValue("layerview/show_infill"); + viewSettings.only_show_top_layers = UM.Preferences.getValue("view/only_show_top_layers"); + viewSettings.top_layer_count = UM.Preferences.getValue("view/top_layer_count"); + } + } + + Repeater { + model: Cura.ExtrudersModel{} + CheckBox { + id: extrudersModelCheckBox + checked: viewSettings.extruder_opacities[index] > 0.5 || viewSettings.extruder_opacities[index] == undefined || viewSettings.extruder_opacities[index] == "" + onClicked: { + viewSettings.extruder_opacities[index] = checked ? 1.0 : 0.0 + UM.Preferences.setValue("layerview/extruder_opacities", viewSettings.extruder_opacities.join("|")); + } + visible: !UM.SimulationView.compatibilityMode + enabled: index + 1 <= 4 + Rectangle { + anchors.verticalCenter: parent.verticalCenter + anchors.right: extrudersModelCheckBox.right + 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: !viewSettings.show_legend & !viewSettings.show_gradient + } + 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 + style: UM.Theme.styles.checkbox + Label + { + text: model.name + elide: Text.ElideRight + color: UM.Theme.getColor("setting_control_text") + font: UM.Theme.getFont("default") + anchors.verticalCenter: parent.verticalCenter + anchors.left: extrudersModelCheckBox.left; + anchors.right: extrudersModelCheckBox.right; + anchors.leftMargin: UM.Theme.getSize("checkbox").width + UM.Theme.getSize("default_margin").width /2 + anchors.rightMargin: UM.Theme.getSize("default_margin").width * 2 + } + } + } + + Repeater { + model: ListModel { + id: typesLegendModel + Component.onCompleted: + { + typesLegendModel.append({ + label: catalog.i18nc("@label", "Show Travels"), + initialValue: viewSettings.show_travel_moves, + preference: "layerview/show_travel_moves", + colorId: "layerview_move_combing" + }); + typesLegendModel.append({ + label: catalog.i18nc("@label", "Show Helpers"), + initialValue: viewSettings.show_helpers, + preference: "layerview/show_helpers", + colorId: "layerview_support" + }); + typesLegendModel.append({ + label: catalog.i18nc("@label", "Show Shell"), + initialValue: viewSettings.show_skin, + preference: "layerview/show_skin", + colorId: "layerview_inset_0" + }); + typesLegendModel.append({ + label: catalog.i18nc("@label", "Show Infill"), + initialValue: viewSettings.show_infill, + preference: "layerview/show_infill", + colorId: "layerview_infill" + }); + } + } + + CheckBox { + id: legendModelCheckBox + checked: model.initialValue + onClicked: { + UM.Preferences.setValue(model.preference, checked); + } + Rectangle { + anchors.verticalCenter: parent.verticalCenter + anchors.right: legendModelCheckBox.right + width: UM.Theme.getSize("layerview_legend_size").width + height: UM.Theme.getSize("layerview_legend_size").height + color: UM.Theme.getColor(model.colorId) + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + visible: viewSettings.show_legend + } + 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 + style: UM.Theme.styles.checkbox + Label + { + text: label + font: UM.Theme.getFont("default") + elide: Text.ElideRight + color: UM.Theme.getColor("setting_control_text") + anchors.verticalCenter: parent.verticalCenter + anchors.left: legendModelCheckBox.left; + anchors.right: legendModelCheckBox.right; + anchors.leftMargin: UM.Theme.getSize("checkbox").width + UM.Theme.getSize("default_margin").width /2 + anchors.rightMargin: UM.Theme.getSize("default_margin").width * 2 + } + } + } + + CheckBox { + checked: viewSettings.only_show_top_layers + onClicked: { + UM.Preferences.setValue("view/only_show_top_layers", checked ? 1.0 : 0.0); + } + text: catalog.i18nc("@label", "Only Show Top Layers") + visible: UM.SimulationView.compatibilityMode + style: UM.Theme.styles.checkbox + } + CheckBox { + checked: viewSettings.top_layer_count == 5 + onClicked: { + UM.Preferences.setValue("view/top_layer_count", checked ? 5 : 1); + } + text: catalog.i18nc("@label", "Show 5 Detailed Layers On Top") + visible: UM.SimulationView.compatibilityMode + style: UM.Theme.styles.checkbox + } + + Repeater { + model: ListModel { + id: typesLegendModelNoCheck + Component.onCompleted: + { + typesLegendModelNoCheck.append({ + label: catalog.i18nc("@label", "Top / Bottom"), + colorId: "layerview_skin", + }); + typesLegendModelNoCheck.append({ + label: catalog.i18nc("@label", "Inner Wall"), + colorId: "layerview_inset_x", + }); + } + } + + Label { + text: label + visible: viewSettings.show_legend + id: typesLegendModelLabel + Rectangle { + anchors.verticalCenter: parent.verticalCenter + anchors.right: typesLegendModelLabel.right + width: UM.Theme.getSize("layerview_legend_size").width + height: UM.Theme.getSize("layerview_legend_size").height + color: UM.Theme.getColor(model.colorId) + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + visible: viewSettings.show_legend + } + 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("setting_control_text") + font: UM.Theme.getFont("default") + } + } + + // Text for the minimum, maximum and units for the feedrates and layer thickness + Item { + id: gradientLegend + visible: viewSettings.show_gradient + width: parent.width + height: UM.Theme.getSize("layerview_row").height + anchors { + topMargin: UM.Theme.getSize("slider_layerview_margin").height + horizontalCenter: parent.horizontalCenter + } + + Label { + text: minText() + anchors.left: parent.left + color: UM.Theme.getColor("setting_control_text") + font: UM.Theme.getFont("default") + + function minText() { + if (UM.SimulationView.layerActivity && CuraApplication.platformActivity) { + // Feedrate selected + if (UM.Preferences.getValue("layerview/layer_view_type") == 2) { + return parseFloat(UM.SimulationView.getMinFeedrate()).toFixed(2) + } + // Layer thickness selected + if (UM.Preferences.getValue("layerview/layer_view_type") == 3) { + return parseFloat(UM.SimulationView.getMinThickness()).toFixed(2) + } + } + return catalog.i18nc("@label","min") + } + } + + Label { + text: unitsText() + anchors.horizontalCenter: parent.horizontalCenter + color: UM.Theme.getColor("setting_control_text") + font: UM.Theme.getFont("default") + + function unitsText() { + if (UM.SimulationView.layerActivity && CuraApplication.platformActivity) { + // Feedrate selected + if (UM.Preferences.getValue("layerview/layer_view_type") == 2) { + return "mm/s" + } + // Layer thickness selected + if (UM.Preferences.getValue("layerview/layer_view_type") == 3) { + return "mm" + } + } + return "" + } + } + + Label { + text: maxText() + anchors.right: parent.right + color: UM.Theme.getColor("setting_control_text") + font: UM.Theme.getFont("default") + + function maxText() { + if (UM.SimulationView.layerActivity && CuraApplication.platformActivity) { + // Feedrate selected + if (UM.Preferences.getValue("layerview/layer_view_type") == 2) { + return parseFloat(UM.SimulationView.getMaxFeedrate()).toFixed(2) + } + // Layer thickness selected + if (UM.Preferences.getValue("layerview/layer_view_type") == 3) { + return parseFloat(UM.SimulationView.getMaxThickness()).toFixed(2) + } + } + return catalog.i18nc("@label","max") + } + } + } + + // Gradient colors for feedrate + Rectangle { // In QML 5.9 can be changed by LinearGradient + // Invert values because then the bar is rotated 90 degrees + id: feedrateGradient + visible: viewSettings.show_feedrate_gradient + anchors.left: parent.right + height: parent.width + width: UM.Theme.getSize("layerview_row").height * 1.5 + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + transform: Rotation {origin.x: 0; origin.y: 0; angle: 90} + gradient: Gradient { + GradientStop { + position: 0.000 + color: Qt.rgba(1, 0.5, 0, 1) + } + GradientStop { + position: 0.625 + color: Qt.rgba(0.375, 0.5, 0, 1) + } + GradientStop { + position: 0.75 + color: Qt.rgba(0.25, 1, 0, 1) + } + GradientStop { + position: 1.0 + color: Qt.rgba(0, 0, 1, 1) + } + } + } + + // Gradient colors for layer thickness + Rectangle { // In QML 5.9 can be changed by LinearGradient + // Invert values because then the bar is rotated 90 degrees + id: thicknessGradient + visible: viewSettings.show_thickness_gradient + anchors.left: parent.right + height: parent.width + width: UM.Theme.getSize("layerview_row").height * 1.5 + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + transform: Rotation {origin.x: 0; origin.y: 0; angle: 90} + gradient: Gradient { + GradientStop { + position: 0.000 + color: Qt.rgba(1, 0, 0, 1) + } + GradientStop { + position: 0.25 + color: Qt.rgba(0.5, 0.5, 0, 1) + } + GradientStop { + position: 0.5 + color: Qt.rgba(0, 1, 0, 1) + } + GradientStop { + position: 0.75 + color: Qt.rgba(0, 0.5, 0.5, 1) + } + GradientStop { + position: 1.0 + color: Qt.rgba(0, 0, 1, 1) + } + } + } + } + } + + Item { + id: slidersBox + + width: parent.width + visible: UM.SimulationView.layerActivity && CuraApplication.platformActivity + + anchors { + top: parent.bottom + topMargin: UM.Theme.getSize("slider_layerview_margin").height + left: parent.left + } + + PathSlider { + id: pathSlider + + height: UM.Theme.getSize("slider_handle").width + anchors.left: playButton.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.right: parent.right + visible: !UM.SimulationView.compatibilityMode + + // custom properties + handleValue: UM.SimulationView.currentPath + maximumValue: UM.SimulationView.numPaths + handleSize: UM.Theme.getSize("slider_handle").width + trackThickness: UM.Theme.getSize("slider_groove").width + trackColor: UM.Theme.getColor("slider_groove") + trackBorderColor: UM.Theme.getColor("slider_groove_border") + handleColor: UM.Theme.getColor("slider_handle") + handleActiveColor: UM.Theme.getColor("slider_handle_active") + rangeColor: UM.Theme.getColor("slider_groove_fill") + + // update values when layer data changes + Connections { + target: UM.SimulationView + onMaxPathsChanged: pathSlider.setHandleValue(UM.SimulationView.currentPath) + onCurrentPathChanged: pathSlider.setHandleValue(UM.SimulationView.currentPath) + } + + // make sure the slider handlers show the correct value after switching views + Component.onCompleted: { + pathSlider.setHandleValue(UM.SimulationView.currentPath) + } + } + + LayerSlider { + id: layerSlider + + width: UM.Theme.getSize("slider_handle").width + height: UM.Theme.getSize("layerview_menu_size").height + + anchors { + top: !UM.SimulationView.compatibilityMode ? pathSlider.bottom : parent.top + topMargin: !UM.SimulationView.compatibilityMode ? UM.Theme.getSize("default_margin").height : 0 + right: parent.right + rightMargin: UM.Theme.getSize("slider_layerview_margin").width + } + + // custom properties + upperValue: UM.SimulationView.currentLayer + lowerValue: UM.SimulationView.minimumLayer + maximumValue: UM.SimulationView.numLayers + handleSize: UM.Theme.getSize("slider_handle").width + trackThickness: UM.Theme.getSize("slider_groove").width + trackColor: UM.Theme.getColor("slider_groove") + trackBorderColor: UM.Theme.getColor("slider_groove_border") + upperHandleColor: UM.Theme.getColor("slider_handle") + lowerHandleColor: UM.Theme.getColor("slider_handle") + rangeHandleColor: UM.Theme.getColor("slider_groove_fill") + handleActiveColor: UM.Theme.getColor("slider_handle_active") + handleLabelWidth: UM.Theme.getSize("slider_layerview_background").width + + // update values when layer data changes + Connections { + target: UM.SimulationView + onMaxLayersChanged: layerSlider.setUpperValue(UM.SimulationView.currentLayer) + onMinimumLayerChanged: layerSlider.setLowerValue(UM.SimulationView.minimumLayer) + onCurrentLayerChanged: layerSlider.setUpperValue(UM.SimulationView.currentLayer) + } + + // make sure the slider handlers show the correct value after switching views + Component.onCompleted: { + layerSlider.setLowerValue(UM.SimulationView.minimumLayer) + layerSlider.setUpperValue(UM.SimulationView.currentLayer) + } + } + + // Play simulation button + Button { + id: playButton + iconSource: "./resources/simulation_resume.svg" + style: UM.Theme.styles.small_tool_button + visible: !UM.SimulationView.compatibilityMode + anchors { + verticalCenter: pathSlider.verticalCenter + } + + property var status: 0 // indicates if it's stopped (0) or playing (1) + + onClicked: { + switch(status) { + case 0: { + resumeSimulation() + break + } + case 1: { + pauseSimulation() + break + } + } + } + + function pauseSimulation() { + UM.SimulationView.setSimulationRunning(false) + iconSource = "./resources/simulation_resume.svg" + simulationTimer.stop() + status = 0 + } + + function resumeSimulation() { + UM.SimulationView.setSimulationRunning(true) + iconSource = "./resources/simulation_pause.svg" + simulationTimer.start() + } + } + + Timer + { + id: simulationTimer + interval: 100 + running: false + repeat: true + onTriggered: { + var currentPath = UM.SimulationView.currentPath + var numPaths = UM.SimulationView.numPaths + var currentLayer = UM.SimulationView.currentLayer + var numLayers = UM.SimulationView.numLayers + // When the user plays the simulation, if the path slider is at the end of this layer, we start + // the simulation at the beginning of the current layer. + if (playButton.status == 0) + { + if (currentPath >= numPaths) + { + UM.SimulationView.setCurrentPath(0) + } + else + { + UM.SimulationView.setCurrentPath(currentPath+1) + } + } + // If the simulation is already playing and we reach the end of a layer, then it automatically + // starts at the beginning of the next layer. + else + { + if (currentPath >= numPaths) + { + // At the end of the model, the simulation stops + if (currentLayer >= numLayers) + { + playButton.pauseSimulation() + } + else + { + UM.SimulationView.setCurrentLayer(currentLayer+1) + UM.SimulationView.setCurrentPath(0) + } + } + else + { + UM.SimulationView.setCurrentPath(currentPath+1) + } + } + playButton.status = 1 + } + } + } + + FontMetrics { + id: fontMetrics + font: UM.Theme.getFont("default") + } +} diff --git a/plugins/SimulationView/SimulationViewProxy.py b/plugins/SimulationView/SimulationViewProxy.py new file mode 100644 index 0000000000..e144b841e6 --- /dev/null +++ b/plugins/SimulationView/SimulationViewProxy.py @@ -0,0 +1,259 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtCore import QObject, pyqtSignal, pyqtProperty +from UM.FlameProfiler import pyqtSlot +from UM.Application import Application + +import SimulationView + + +class SimulationViewProxy(QObject): + def __init__(self, parent=None): + super().__init__(parent) + self._current_layer = 0 + self._controller = Application.getInstance().getController() + self._controller.activeViewChanged.connect(self._onActiveViewChanged) + self._onActiveViewChanged() + self.is_simulationView_selected = False + + currentLayerChanged = pyqtSignal() + currentPathChanged = pyqtSignal() + maxLayersChanged = pyqtSignal() + maxPathsChanged = pyqtSignal() + activityChanged = pyqtSignal() + globalStackChanged = pyqtSignal() + preferencesChanged = pyqtSignal() + busyChanged = pyqtSignal() + + @pyqtProperty(bool, notify=activityChanged) + def layerActivity(self): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + return active_view.getActivity() + return False + + @pyqtProperty(int, notify=maxLayersChanged) + def numLayers(self): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + return active_view.getMaxLayers() + return 0 + + @pyqtProperty(int, notify=currentLayerChanged) + def currentLayer(self): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + return active_view.getCurrentLayer() + return 0 + + @pyqtProperty(int, notify=currentLayerChanged) + def minimumLayer(self): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + return active_view.getMinimumLayer() + return 0 + + @pyqtProperty(int, notify=maxPathsChanged) + def numPaths(self): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + return active_view.getMaxPaths() + return 0 + + @pyqtProperty(int, notify=currentPathChanged) + def currentPath(self): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + return active_view.getCurrentPath() + return 0 + + @pyqtProperty(int, notify=currentPathChanged) + def minimumPath(self): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + return active_view.getMinimumPath() + return 0 + + @pyqtProperty(bool, notify=busyChanged) + def busy(self): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + return active_view.isBusy() + return False + + @pyqtProperty(bool, notify=preferencesChanged) + def compatibilityMode(self): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + return active_view.getCompatibilityMode() + return False + + @pyqtSlot(int) + def setCurrentLayer(self, layer_num): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + active_view.setLayer(layer_num) + + @pyqtSlot(int) + def setMinimumLayer(self, layer_num): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + active_view.setMinimumLayer(layer_num) + + @pyqtSlot(int) + def setCurrentPath(self, path_num): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + active_view.setPath(path_num) + + @pyqtSlot(int) + def setMinimumPath(self, path_num): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + active_view.setMinimumPath(path_num) + + @pyqtSlot(int) + def setSimulationViewType(self, layer_view_type): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + active_view.setSimulationViewisinstance(layer_view_type) + + @pyqtSlot(result=int) + def getSimulationViewType(self): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + return active_view.getSimulationViewType() + return 0 + + @pyqtSlot(bool) + def setSimulationRunning(self, running): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + active_view.setSimulationRunning(running) + + @pyqtSlot(result=bool) + def getSimulationRunning(self): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + return active_view.isSimulationRunning() + return False + + @pyqtSlot(result=float) + def getMinFeedrate(self): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + return active_view.getMinFeedrate() + return 0 + + @pyqtSlot(result=float) + def getMaxFeedrate(self): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + return active_view.getMaxFeedrate() + return 0 + + @pyqtSlot(result=float) + def getMinThickness(self): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + return active_view.getMinThickness() + return 0 + + @pyqtSlot(result=float) + def getMaxThickness(self): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + return active_view.getMaxThickness() + return 0 + + # Opacity 0..1 + @pyqtSlot(int, float) + def setExtruderOpacity(self, extruder_nr, opacity): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + active_view.setExtruderOpacity(extruder_nr, opacity) + + @pyqtSlot(int) + def setShowTravelMoves(self, show): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + active_view.setShowTravelMoves(show) + + @pyqtSlot(int) + def setShowHelpers(self, show): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + active_view.setShowHelpers(show) + + @pyqtSlot(int) + def setShowSkin(self, show): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + active_view.setShowSkin(show) + + @pyqtSlot(int) + def setShowInfill(self, show): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + active_view.setShowInfill(show) + + @pyqtProperty(int, notify=globalStackChanged) + def extruderCount(self): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + return active_view.getExtruderCount() + return 0 + + def _layerActivityChanged(self): + self.activityChanged.emit() + + def _onLayerChanged(self): + self.currentLayerChanged.emit() + self._layerActivityChanged() + + def _onPathChanged(self): + self.currentPathChanged.emit() + self._layerActivityChanged() + + def _onMaxLayersChanged(self): + self.maxLayersChanged.emit() + + def _onMaxPathsChanged(self): + self.maxPathsChanged.emit() + + def _onBusyChanged(self): + self.busyChanged.emit() + + def _onActivityChanged(self): + self.activityChanged.emit() + + def _onGlobalStackChanged(self): + self.globalStackChanged.emit() + + def _onPreferencesChanged(self): + self.preferencesChanged.emit() + + def _onActiveViewChanged(self): + active_view = self._controller.getActiveView() + if isinstance(active_view, SimulationView.SimulationView.SimulationView): + # remove other connection if once the SimulationView was created. + if self.is_simulationView_selected: + active_view.currentLayerNumChanged.disconnect(self._onLayerChanged) + active_view.currentPathNumChanged.disconnect(self._onPathChanged) + active_view.maxLayersChanged.disconnect(self._onMaxLayersChanged) + active_view.maxPathsChanged.disconnect(self._onMaxPathsChanged) + active_view.busyChanged.disconnect(self._onBusyChanged) + active_view.activityChanged.disconnect(self._onActivityChanged) + active_view.globalStackChanged.disconnect(self._onGlobalStackChanged) + active_view.preferencesChanged.disconnect(self._onPreferencesChanged) + + self.is_simulationView_selected = True + active_view.currentLayerNumChanged.connect(self._onLayerChanged) + active_view.currentPathNumChanged.connect(self._onPathChanged) + active_view.maxLayersChanged.connect(self._onMaxLayersChanged) + active_view.maxPathsChanged.connect(self._onMaxPathsChanged) + active_view.busyChanged.connect(self._onBusyChanged) + active_view.activityChanged.connect(self._onActivityChanged) + active_view.globalStackChanged.connect(self._onGlobalStackChanged) + active_view.preferencesChanged.connect(self._onPreferencesChanged) diff --git a/plugins/SimulationView/__init__.py b/plugins/SimulationView/__init__.py new file mode 100644 index 0000000000..15e113bd8e --- /dev/null +++ b/plugins/SimulationView/__init__.py @@ -0,0 +1,26 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtQml import qmlRegisterSingletonType + +from UM.i18n import i18nCatalog +from . import SimulationViewProxy, SimulationView + +catalog = i18nCatalog("cura") + +def getMetaData(): + return { + "view": { + "name": catalog.i18nc("@item:inlistbox", "Layer view"), + "view_panel": "SimulationView.qml", + "weight": 2 + } + } + +def createSimulationViewProxy(engine, script_engine): + return SimulationViewProxy.SimulatorViewProxy() + +def register(app): + simulation_view = SimulationView.SimulationView() + qmlRegisterSingletonType(SimulationViewProxy.SimulationViewProxy, "UM", 1, 0, "SimulationView", simulation_view.getProxy) + return { "view": SimulationView.SimulationView()} diff --git a/plugins/LayerView/layers.shader b/plugins/SimulationView/layers.shader old mode 100755 new mode 100644 similarity index 100% rename from plugins/LayerView/layers.shader rename to plugins/SimulationView/layers.shader diff --git a/plugins/LayerView/layers3d.shader b/plugins/SimulationView/layers3d.shader old mode 100755 new mode 100644 similarity index 81% rename from plugins/LayerView/layers3d.shader rename to plugins/SimulationView/layers3d.shader index e8fe425c70..95dc604389 --- a/plugins/LayerView/layers3d.shader +++ b/plugins/SimulationView/layers3d.shader @@ -6,6 +6,10 @@ vertex41core = uniform highp mat4 u_modelMatrix; uniform highp mat4 u_viewProjectionMatrix; uniform lowp float u_active_extruder; + uniform lowp float u_max_feedrate; + uniform lowp float u_min_feedrate; + uniform lowp float u_max_thickness; + uniform lowp float u_min_thickness; uniform lowp int u_layer_view_type; uniform lowp vec4 u_extruder_opacity; // currently only for max 4 extruders, others always visible @@ -18,6 +22,8 @@ vertex41core = in highp vec2 a_line_dim; // line width and thickness in highp float a_extruder; in highp float a_line_type; + in highp float a_feedrate; + in highp float a_thickness; out lowp vec4 v_color; @@ -32,6 +38,28 @@ vertex41core = out highp vec3 f_vertex; out highp vec3 f_normal; + vec4 feedrateGradientColor(float abs_value, float min_value, float max_value) + { + float value = (abs_value - min_value)/(max_value - min_value); + float red = value; + float green = 1-abs(1-4*value); + if (value > 0.375) + { + green = 0.5; + } + float blue = max(1-4*value, 0); + return vec4(red, green, blue, 1.0); + } + + vec4 layerThicknessGradientColor(float abs_value, float min_value, float max_value) + { + float value = (abs_value - min_value)/(max_value - min_value); + float red = max(2*value-1, 0); + float green = 1-abs(1-2*value); + float blue = max(1-2*value, 0); + return vec4(red, green, blue, 1.0); + } + void main() { vec4 v1_vertex = a_vertex; @@ -48,6 +76,12 @@ vertex41core = case 1: // "Line type" v_color = a_color; break; + case 2: // "Feedrate" + v_color = feedrateGradientColor(a_feedrate, u_min_feedrate, u_max_feedrate); + break; + case 3: // "Layer thickness" + v_color = layerThicknessGradientColor(a_line_dim.y, u_min_thickness, u_max_thickness); + break; } v_vertex = world_space_vert.xyz; @@ -153,35 +187,42 @@ geometry41core = myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert)); myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz_head + g_vertex_offset_vert)); + //And reverse so that the line is also visible from the back side. + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head + g_vertex_offset_vert)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); EndPrimitive(); } else { // All normal lines are rendered as 3d tubes. - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_vert)); myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz)); - myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_vert)); - myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_vert)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_vert)); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_vert)); myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_vert)); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_vert)); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz)); EndPrimitive(); // left side - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_vert)); myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz_head, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head)); - myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); EndPrimitive(); - myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_vert)); myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz_head, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head)); - myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); EndPrimitive(); @@ -247,6 +288,12 @@ u_show_helpers = 1 u_show_skin = 1 u_show_infill = 1 +u_min_feedrate = 0 +u_max_feedrate = 1 + +u_min_thickness = 0 +u_max_thickness = 1 + [bindings] u_modelViewProjectionMatrix = model_view_projection_matrix u_modelMatrix = model_matrix @@ -262,3 +309,5 @@ a_line_dim = line_dim a_extruder = extruder a_material_color = material_color a_line_type = line_type +a_feedrate = feedrate +a_thickness = thickness diff --git a/plugins/SimulationView/layers3d_shadow.shader b/plugins/SimulationView/layers3d_shadow.shader new file mode 100644 index 0000000000..ad75fcf9d0 --- /dev/null +++ b/plugins/SimulationView/layers3d_shadow.shader @@ -0,0 +1,256 @@ +[shaders] +vertex41core = + #version 410 + uniform highp mat4 u_modelViewProjectionMatrix; + + uniform highp mat4 u_modelMatrix; + uniform highp mat4 u_viewProjectionMatrix; + uniform lowp float u_active_extruder; + uniform lowp vec4 u_extruder_opacity; // currently only for max 4 extruders, others always visible + + uniform highp mat4 u_normalMatrix; + + in highp vec4 a_vertex; + in lowp vec4 a_color; + in lowp vec4 a_grayColor; + in lowp vec4 a_material_color; + in highp vec4 a_normal; + in highp vec2 a_line_dim; // line width and thickness + in highp float a_extruder; + in highp float a_line_type; + + out lowp vec4 v_color; + + out highp vec3 v_vertex; + out highp vec3 v_normal; + out lowp vec2 v_line_dim; + out highp int v_extruder; + out highp vec4 v_extruder_opacity; + out float v_line_type; + + out lowp vec4 f_color; + out highp vec3 f_vertex; + out highp vec3 f_normal; + + void main() + { + vec4 v1_vertex = a_vertex; + v1_vertex.y -= a_line_dim.y / 2; // half layer down + + vec4 world_space_vert = u_modelMatrix * v1_vertex; + gl_Position = world_space_vert; + // shade the color depending on the extruder index stored in the alpha component of the color + + v_color = vec4(0.4, 0.4, 0.4, 0.9); // default color for not current layer + v_vertex = world_space_vert.xyz; + v_normal = (u_normalMatrix * normalize(a_normal)).xyz; + v_line_dim = a_line_dim; + v_extruder = int(a_extruder); + v_line_type = a_line_type; + v_extruder_opacity = u_extruder_opacity; + + // for testing without geometry shader + f_color = v_color; + f_vertex = v_vertex; + f_normal = v_normal; + } + +geometry41core = + #version 410 + + uniform highp mat4 u_viewProjectionMatrix; + uniform int u_show_travel_moves; + uniform int u_show_helpers; + uniform int u_show_skin; + uniform int u_show_infill; + + layout(lines) in; + layout(triangle_strip, max_vertices = 26) out; + + in vec4 v_color[]; + in vec3 v_vertex[]; + in vec3 v_normal[]; + in vec2 v_line_dim[]; + in int v_extruder[]; + in vec4 v_extruder_opacity[]; + in float v_line_type[]; + + out vec4 f_color; + out vec3 f_normal; + out vec3 f_vertex; + + // Set the set of variables and EmitVertex + void myEmitVertex(vec3 vertex, vec4 color, vec3 normal, vec4 pos) { + f_vertex = vertex; + f_color = color; + f_normal = normal; + gl_Position = pos; + EmitVertex(); + } + + void main() + { + vec4 g_vertex_delta; + vec3 g_vertex_normal_horz; // horizontal and vertical in respect to layers + vec4 g_vertex_offset_horz; // vec4 to match gl_in[x].gl_Position + vec3 g_vertex_normal_vert; + vec4 g_vertex_offset_vert; + vec3 g_vertex_normal_horz_head; + vec4 g_vertex_offset_horz_head; + + float size_x; + float size_y; + + if ((v_extruder_opacity[0][v_extruder[0]] == 0.0) && (v_line_type[0] != 8) && (v_line_type[0] != 9)) { + return; + } + // See LayerPolygon; 8 is MoveCombingType, 9 is RetractionType + if ((u_show_travel_moves == 0) && ((v_line_type[0] == 8) || (v_line_type[0] == 9))) { + return; + } + if ((u_show_helpers == 0) && ((v_line_type[0] == 4) || (v_line_type[0] == 5) || (v_line_type[0] == 7) || (v_line_type[0] == 10))) { + return; + } + if ((u_show_skin == 0) && ((v_line_type[0] == 1) || (v_line_type[0] == 2) || (v_line_type[0] == 3))) { + return; + } + if ((u_show_infill == 0) && (v_line_type[0] == 6)) { + return; + } + + if ((v_line_type[0] == 8) || (v_line_type[0] == 9)) { + // fixed size for movements + size_x = 0.05; + } else { + size_x = v_line_dim[1].x / 2 + 0.01; // radius, and make it nicely overlapping + } + size_y = v_line_dim[1].y / 2 + 0.01; + + g_vertex_delta = gl_in[1].gl_Position - gl_in[0].gl_Position; + g_vertex_normal_horz_head = normalize(vec3(-g_vertex_delta.x, -g_vertex_delta.y, -g_vertex_delta.z)); + g_vertex_offset_horz_head = vec4(g_vertex_normal_horz_head * size_x, 0.0); + + g_vertex_normal_horz = normalize(vec3(g_vertex_delta.z, g_vertex_delta.y, -g_vertex_delta.x)); + + g_vertex_offset_horz = vec4(g_vertex_normal_horz * size_x, 0.0); //size * g_vertex_normal_horz; + g_vertex_normal_vert = vec3(0.0, 1.0, 0.0); + g_vertex_offset_vert = vec4(g_vertex_normal_vert * size_y, 0.0); + + if ((v_line_type[0] == 8) || (v_line_type[0] == 9)) { + // Travels: flat plane with pointy ends + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head + g_vertex_offset_vert)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz + g_vertex_offset_vert)); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz + g_vertex_offset_vert)); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz_head + g_vertex_offset_vert)); + + EndPrimitive(); + } else { + // All normal lines are rendered as 3d tubes. + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_vert)); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_vert)); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_vert)); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_vert)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz)); + + EndPrimitive(); + + // left side + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_vert)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz_head, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head)); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); + + EndPrimitive(); + + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_horz)); + myEmitVertex(v_vertex[0], v_color[0], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[0].gl_Position - g_vertex_offset_vert)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz_head, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz_head)); + myEmitVertex(v_vertex[0], v_color[0], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[0].gl_Position + g_vertex_offset_horz)); + + EndPrimitive(); + + // right side + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz)); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_vert)); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz_head, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz_head)); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz)); + + EndPrimitive(); + + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz)); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_vert, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_vert)); + myEmitVertex(v_vertex[1], v_color[1], -g_vertex_normal_horz_head, u_viewProjectionMatrix * (gl_in[1].gl_Position - g_vertex_offset_horz_head)); + myEmitVertex(v_vertex[1], v_color[1], g_vertex_normal_horz, u_viewProjectionMatrix * (gl_in[1].gl_Position + g_vertex_offset_horz)); + + EndPrimitive(); + } + } + +fragment41core = + #version 410 + in lowp vec4 f_color; + in lowp vec3 f_normal; + in lowp vec3 f_vertex; + + out vec4 frag_color; + + uniform mediump vec4 u_ambientColor; + uniform highp vec3 u_lightPosition; + + void main() + { + mediump vec4 finalColor = vec4(0.0); + float alpha = f_color.a; + + finalColor.rgb += f_color.rgb * 0.3; + + highp vec3 normal = normalize(f_normal); + highp vec3 light_dir = normalize(u_lightPosition - f_vertex); + + // Diffuse Component + highp float NdotL = clamp(dot(normal, light_dir), 0.0, 1.0); + finalColor += (NdotL * f_color); + finalColor.a = alpha; // Do not change alpha in any way + + frag_color = finalColor; + } + + +[defaults] +u_active_extruder = 0.0 +u_extruder_opacity = [1.0, 1.0, 1.0, 1.0] + +u_specularColor = [0.4, 0.4, 0.4, 1.0] +u_ambientColor = [0.3, 0.3, 0.3, 0.0] +u_diffuseColor = [1.0, 0.79, 0.14, 1.0] +u_shininess = 20.0 + +u_show_travel_moves = 0 +u_show_helpers = 1 +u_show_skin = 1 +u_show_infill = 1 + +[bindings] +u_modelViewProjectionMatrix = model_view_projection_matrix +u_modelMatrix = model_matrix +u_viewProjectionMatrix = view_projection_matrix +u_normalMatrix = normal_matrix +u_lightPosition = light_0_position + +[attributes] +a_vertex = vertex +a_color = color +a_grayColor = vec4(0.87, 0.12, 0.45, 1.0) +a_normal = normal +a_line_dim = line_dim +a_extruder = extruder +a_material_color = material_color +a_line_type = line_type diff --git a/plugins/SimulationView/layers_shadow.shader b/plugins/SimulationView/layers_shadow.shader new file mode 100644 index 0000000000..972f18c921 --- /dev/null +++ b/plugins/SimulationView/layers_shadow.shader @@ -0,0 +1,156 @@ +[shaders] +vertex = + uniform highp mat4 u_modelViewProjectionMatrix; + uniform lowp float u_active_extruder; + uniform lowp float u_shade_factor; + uniform highp int u_layer_view_type; + + attribute highp float a_extruder; + attribute highp float a_line_type; + attribute highp vec4 a_vertex; + attribute lowp vec4 a_color; + attribute lowp vec4 a_material_color; + + varying lowp vec4 v_color; + varying float v_line_type; + + void main() + { + gl_Position = u_modelViewProjectionMatrix * a_vertex; + // shade the color depending on the extruder index + v_color = vec4(0.4, 0.4, 0.4, 0.9); // default color for not current layer; + // 8 and 9 are travel moves + // if ((a_line_type != 8.0) && (a_line_type != 9.0)) { + // v_color = (a_extruder == u_active_extruder) ? v_color : vec4(u_shade_factor * v_color.rgb, v_color.a); + // } + + v_line_type = a_line_type; + } + +fragment = + varying lowp vec4 v_color; + varying float v_line_type; + + uniform int u_show_travel_moves; + uniform int u_show_helpers; + uniform int u_show_skin; + uniform int u_show_infill; + + void main() + { + if ((u_show_travel_moves == 0) && (v_line_type >= 7.5) && (v_line_type <= 9.5)) { // actually, 8 and 9 + // discard movements + discard; + } + // support: 4, 5, 7, 10 + if ((u_show_helpers == 0) && ( + ((v_line_type >= 3.5) && (v_line_type <= 4.5)) || + ((v_line_type >= 6.5) && (v_line_type <= 7.5)) || + ((v_line_type >= 9.5) && (v_line_type <= 10.5)) || + ((v_line_type >= 4.5) && (v_line_type <= 5.5)) + )) { + discard; + } + // skin: 1, 2, 3 + if ((u_show_skin == 0) && ( + (v_line_type >= 0.5) && (v_line_type <= 3.5) + )) { + discard; + } + // infill: + if ((u_show_infill == 0) && (v_line_type >= 5.5) && (v_line_type <= 6.5)) { + // discard movements + discard; + } + + gl_FragColor = v_color; + } + +vertex41core = + #version 410 + uniform highp mat4 u_modelViewProjectionMatrix; + uniform lowp float u_active_extruder; + uniform lowp float u_shade_factor; + uniform highp int u_layer_view_type; + + in highp float a_extruder; + in highp float a_line_type; + in highp vec4 a_vertex; + in lowp vec4 a_color; + in lowp vec4 a_material_color; + + out lowp vec4 v_color; + out float v_line_type; + + void main() + { + gl_Position = u_modelViewProjectionMatrix * a_vertex; + v_color = vec4(0.4, 0.4, 0.4, 0.9); // default color for not current layer + // if ((a_line_type != 8) && (a_line_type != 9)) { + // v_color = (a_extruder == u_active_extruder) ? v_color : vec4(u_shade_factor * v_color.rgb, v_color.a); + // } + + v_line_type = a_line_type; + } + +fragment41core = + #version 410 + in lowp vec4 v_color; + in float v_line_type; + out vec4 frag_color; + + uniform int u_show_travel_moves; + uniform int u_show_helpers; + uniform int u_show_skin; + uniform int u_show_infill; + + void main() + { + if ((u_show_travel_moves == 0) && (v_line_type >= 7.5) && (v_line_type <= 9.5)) { // actually, 8 and 9 + // discard movements + discard; + } + // helpers: 4, 5, 7, 10 + if ((u_show_helpers == 0) && ( + ((v_line_type >= 3.5) && (v_line_type <= 4.5)) || + ((v_line_type >= 6.5) && (v_line_type <= 7.5)) || + ((v_line_type >= 9.5) && (v_line_type <= 10.5)) || + ((v_line_type >= 4.5) && (v_line_type <= 5.5)) + )) { + discard; + } + // skin: 1, 2, 3 + if ((u_show_skin == 0) && ( + (v_line_type >= 0.5) && (v_line_type <= 3.5) + )) { + discard; + } + // infill: + if ((u_show_infill == 0) && (v_line_type >= 5.5) && (v_line_type <= 6.5)) { + // discard movements + discard; + } + + frag_color = v_color; + } + +[defaults] +u_active_extruder = 0.0 +u_shade_factor = 0.60 +u_layer_view_type = 0 +u_extruder_opacity = [1.0, 1.0, 1.0, 1.0] + +u_show_travel_moves = 0 +u_show_helpers = 1 +u_show_skin = 1 +u_show_infill = 1 + +[bindings] +u_modelViewProjectionMatrix = model_view_projection_matrix + +[attributes] +a_vertex = vertex +a_color = color +a_extruder = extruder +a_line_type = line_type +a_material_color = material_color diff --git a/plugins/LayerView/plugin.json b/plugins/SimulationView/plugin.json similarity index 54% rename from plugins/LayerView/plugin.json rename to plugins/SimulationView/plugin.json index 232fe9c361..0e7bec0626 100644 --- a/plugins/LayerView/plugin.json +++ b/plugins/SimulationView/plugin.json @@ -1,8 +1,8 @@ { - "name": "Layer View", + "name": "Simulation View", "author": "Ultimaker B.V.", "version": "1.0.0", - "description": "Provides the Layer view.", + "description": "Provides the Simulation view.", "api": 4, "i18n-catalog": "cura" } diff --git a/plugins/SimulationView/resources/nozzle.stl b/plugins/SimulationView/resources/nozzle.stl new file mode 100644 index 0000000000..7f4b22804a Binary files /dev/null and b/plugins/SimulationView/resources/nozzle.stl differ diff --git a/plugins/SimulationView/resources/simulation_pause.svg b/plugins/SimulationView/resources/simulation_pause.svg new file mode 100644 index 0000000000..652434bd44 --- /dev/null +++ b/plugins/SimulationView/resources/simulation_pause.svg @@ -0,0 +1,79 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/plugins/SimulationView/resources/simulation_resume.svg b/plugins/SimulationView/resources/simulation_resume.svg new file mode 100644 index 0000000000..912a2ac418 --- /dev/null +++ b/plugins/SimulationView/resources/simulation_resume.svg @@ -0,0 +1,78 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/plugins/LayerView/layerview_composite.shader b/plugins/SimulationView/simulationview_composite.shader similarity index 100% rename from plugins/LayerView/layerview_composite.shader rename to plugins/SimulationView/simulationview_composite.shader diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py index 0514c4dacf..bcdb1bb407 100755 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -40,18 +40,25 @@ 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."), + self.send_slice_info_message = Message(catalog.i18nc("@info", "Cura collects anonymized usage statistics."), 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.addAction("Dismiss", name = catalog.i18nc("@action:button", "Allow"), icon = None, + description = catalog.i18nc("@action:tooltip", "Allow Cura to send anonymized usage statistics to help prioritize future improvements to Cura. Some of your preferences and settings are sent, the Cura version and a hash of the models you're slicing.")) + self.send_slice_info_message.addAction("Disable", name = catalog.i18nc("@action:button", "Disable"), icon = None, + description = catalog.i18nc("@action:tooltip", "Don't allow Cura to send anonymized usage statistics. You can enable it again in the preferences."), button_style = Message.ActionButtonStyle.LINK) self.send_slice_info_message.actionTriggered.connect(self.messageActionTriggered) self.send_slice_info_message.show() + ## Perform action based on user input. + # Note that clicking "Disable" won't actually disable the data sending, but rather take the user to preferences where they can disable it. def messageActionTriggered(self, message_id, action_id): - self.send_slice_info_message.hide() Preferences.getInstance().setValue("info/asked_send_slice_info", True) + if action_id == "Disable": + CuraApplication.getInstance().showPreferences() + self.send_slice_info_message.hide() def _onWriteStarted(self, output_device): try: @@ -87,15 +94,10 @@ class SliceInfo(Extension): data["active_machine"] = {"definition_id": global_container_stack.definition.getId(), "manufacturer": global_container_stack.definition.getMetaData().get("manufacturer","")} + # add extruder specific data to slice info data["extruders"] = [] - extruder_count = len(global_container_stack.extruders) - extruders = [] - if extruder_count > 1: - extruders = list(ExtruderManager.getInstance().getMachineExtruders(global_container_stack.getId())) - extruders = sorted(extruders, key = lambda extruder: extruder.getMetaDataEntry("position")) - - if not extruders: - extruders = [global_container_stack] + extruders = list(ExtruderManager.getInstance().getMachineExtruders(global_container_stack.getId())) + extruders = sorted(extruders, key = lambda extruder: extruder.getMetaDataEntry("position")) for extruder in extruders: extruder_dict = dict() @@ -104,7 +106,9 @@ class SliceInfo(Extension): "type": extruder.material.getMetaData().get("material", ""), "brand": extruder.material.getMetaData().get("brand", "") } - extruder_dict["material_used"] = print_information.materialLengths[int(extruder.getMetaDataEntry("position", "0"))] + extruder_position = int(extruder.getMetaDataEntry("position", "0")) + if extruder_position in print_information.materialLengths: + extruder_dict["material_used"] = print_information.materialLengths[extruder_position] extruder_dict["variant"] = extruder.variant.getName() extruder_dict["nozzle_size"] = extruder.getProperty("machine_nozzle_size", "value") @@ -162,7 +166,7 @@ class SliceInfo(Extension): data["models"].append(model) - print_times = print_information._print_time_message_values + print_times = print_information.printTimes() 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)), diff --git a/plugins/SolidView/SolidView.py b/plugins/SolidView/SolidView.py index 8f0c9a4dc1..e156e655ce 100644 --- a/plugins/SolidView/SolidView.py +++ b/plugins/SolidView/SolidView.py @@ -27,40 +27,39 @@ class SolidView(View): self._enabled_shader = None self._disabled_shader = None + self._non_printing_shader = None self._extruders_model = ExtrudersModel() + self._theme = None def beginRendering(self): scene = self.getController().getScene() renderer = self.getRenderer() + if not self._theme: + self._theme = Application.getInstance().getTheme() + if not self._enabled_shader: self._enabled_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "overhang.shader")) - theme = Application.getInstance().getTheme() - self._enabled_shader.setUniformValue("u_overhangColor", Color(*theme.getColor("model_overhang").getRgb())) + self._enabled_shader.setUniformValue("u_overhangColor", Color(*self._theme.getColor("model_overhang").getRgb())) if not self._disabled_shader: self._disabled_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "striped.shader")) - theme = Application.getInstance().getTheme() - self._disabled_shader.setUniformValue("u_diffuseColor1", Color(*theme.getColor("model_unslicable").getRgb())) - self._disabled_shader.setUniformValue("u_diffuseColor2", Color(*theme.getColor("model_unslicable_alt").getRgb())) + self._disabled_shader.setUniformValue("u_diffuseColor1", Color(*self._theme.getColor("model_unslicable").getRgb())) + self._disabled_shader.setUniformValue("u_diffuseColor2", Color(*self._theme.getColor("model_unslicable_alt").getRgb())) self._disabled_shader.setUniformValue("u_width", 50.0) - multi_extrusion = False + if not self._non_printing_shader: + self._non_printing_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "transparent_object.shader")) + self._non_printing_shader.setUniformValue("u_diffuseColor", Color(*self._theme.getColor("model_non_printing").getRgb())) + self._non_printing_shader.setUniformValue("u_opacity", 0.6) global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: - multi_extrusion = global_container_stack.getProperty("machine_extruder_count", "value") > 1 + support_extruder_nr = global_container_stack.getProperty("support_extruder_nr", "value") + support_angle_stack = Application.getInstance().getExtruderManager().getExtruderStack(support_extruder_nr) - if multi_extrusion: - support_extruder_nr = global_container_stack.getProperty("support_extruder_nr", "value") - support_angle_stack = ExtruderManager.getInstance().getExtruderStack(support_extruder_nr) - if not support_angle_stack: - support_angle_stack = global_container_stack - else: - support_angle_stack = global_container_stack - - if Preferences.getInstance().getValue("view/show_overhang"): + if support_angle_stack is not None and Preferences.getInstance().getValue("view/show_overhang"): angle = support_angle_stack.getProperty("support_angle", "value") # Make sure the overhang angle is valid before passing it to the shader # Note: if the overhang angle is set to its default value, it does not need to get validated (validationState = None) @@ -71,33 +70,34 @@ class SolidView(View): else: self._enabled_shader.setUniformValue("u_overhangAngle", math.cos(math.radians(0))) - for node in DepthFirstIterator(scene.getRoot()): if not node.render(renderer): if node.getMeshData() and node.isVisible(): uniforms = {} shade_factor = 1.0 - if not multi_extrusion: - if global_container_stack: - material = global_container_stack.findContainer({ "type": "material" }) - material_color = material.getMetaDataEntry("color_code", default = self._extruders_model.defaultColors[0]) if material else self._extruders_model.defaultColors[0] - else: - material_color = self._extruders_model.defaultColors[0] - else: - # Get color to render this mesh in from ExtrudersModel - extruder_index = 0 - extruder_id = node.callDecoration("getActiveExtruder") - if extruder_id: - extruder_index = max(0, self._extruders_model.find("id", extruder_id)) - try: - material_color = self._extruders_model.getItem(extruder_index)["color"] - except KeyError: - material_color = self._extruders_model.defaultColors[0] + per_mesh_stack = node.callDecoration("getStack") + + # Get color to render this mesh in from ExtrudersModel + extruder_index = 0 + extruder_id = node.callDecoration("getActiveExtruder") + if extruder_id: + extruder_index = max(0, self._extruders_model.find("id", extruder_id)) + + # Use the support extruder instead of the active extruder if this is a support_mesh + if per_mesh_stack: + if per_mesh_stack.getProperty("support_mesh", "value"): + extruder_index = int(global_container_stack.getProperty("support_extruder_nr", "value")) + + try: + material_color = self._extruders_model.getItem(extruder_index)["color"] + except KeyError: + material_color = self._extruders_model.defaultColors[0] + + if extruder_index != ExtruderManager.getInstance().activeExtruderIndex: + # Shade objects that are printed with the non-active extruder 25% darker + shade_factor = 0.6 - if extruder_index != ExtruderManager.getInstance().activeExtruderIndex: - # Shade objects that are printed with the non-active extruder 25% darker - shade_factor = 0.6 try: # Colors are passed as rgb hex strings (eg "#ffffff"), and the shader needs # an rgba list of floats (eg [1.0, 1.0, 1.0, 1.0]) @@ -110,19 +110,17 @@ class SolidView(View): except ValueError: pass - if hasattr(node, "_outside_buildarea"): - if node._outside_buildarea: - renderer.queueNode(node, shader = self._disabled_shader) + if node.callDecoration("isNonPrintingMesh"): + if per_mesh_stack and (per_mesh_stack.getProperty("infill_mesh", "value") or per_mesh_stack.getProperty("cutting_mesh", "value")): + renderer.queueNode(node, shader = self._non_printing_shader, uniforms = uniforms, transparent = True) else: - renderer.queueNode(node, shader = self._enabled_shader, uniforms = uniforms) + renderer.queueNode(node, shader = self._non_printing_shader, transparent = True) + elif getattr(node, "_outside_buildarea", False): + renderer.queueNode(node, shader = self._disabled_shader) else: - renderer.queueNode(node, material = self._enabled_shader, uniforms = uniforms) + renderer.queueNode(node, shader = self._enabled_shader, uniforms = uniforms) if node.callDecoration("isGroup") and Selection.isSelected(node): renderer.queueNode(scene.getRoot(), mesh = node.getBoundingBoxMesh(), mode = RenderBatch.RenderMode.LineLoop) def endRendering(self): pass - - #def _onPreferenceChanged(self, preference): - #if preference == "view/show_overhang": ## Todo: This a printer only setting. Should be removed from Uranium. - #self._enabled_material = None diff --git a/plugins/UM3NetworkPrinting/ClusterControlItem.qml b/plugins/UM3NetworkPrinting/ClusterControlItem.qml index 194337cca0..8ba7156da8 100644 --- a/plugins/UM3NetworkPrinting/ClusterControlItem.qml +++ b/plugins/UM3NetworkPrinting/ClusterControlItem.qml @@ -83,8 +83,7 @@ Component 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 diff --git a/plugins/UM3NetworkPrinting/DiscoverUM3Action.py b/plugins/UM3NetworkPrinting/DiscoverUM3Action.py index af1a556892..0d5d259ce4 100644 --- a/plugins/UM3NetworkPrinting/DiscoverUM3Action.py +++ b/plugins/UM3NetworkPrinting/DiscoverUM3Action.py @@ -1,17 +1,15 @@ -from cura.MachineAction import MachineAction +import os.path +import time + +from PyQt5.QtCore import pyqtSignal, pyqtProperty, pyqtSlot, QObject from UM.Application import Application from UM.PluginRegistry import PluginRegistry from UM.Logger import Logger - -from PyQt5.QtCore import pyqtSignal, pyqtProperty, pyqtSlot, QUrl, QObject -from PyQt5.QtQml import QQmlComponent, QQmlContext - -import os.path - -import time - from UM.i18n import i18nCatalog + +from cura.MachineAction import MachineAction + catalog = i18nCatalog("cura") class DiscoverUM3Action(MachineAction): @@ -136,17 +134,14 @@ class DiscoverUM3Action(MachineAction): def _createAdditionalComponentsView(self): Logger.log("d", "Creating additional ui components for UM3.") - path = QUrl.fromLocalFile(os.path.join(PluginRegistry.getInstance().getPluginPath("UM3NetworkPrinting"), "UM3InfoComponents.qml")) - self.__additional_component = QQmlComponent(Application.getInstance()._engine, path) - # We need access to engine (although technically we can't) - self.__additional_components_context = QQmlContext(Application.getInstance()._engine.rootContext()) - self.__additional_components_context.setContextProperty("manager", self) - - self.__additional_components_view = self.__additional_component.create(self.__additional_components_context) + # Create networking dialog + path = os.path.join(PluginRegistry.getInstance().getPluginPath("UM3NetworkPrinting"), "UM3InfoComponents.qml") + self.__additional_components_view = Application.getInstance().createQmlComponent(path, {"manager": self}) if not self.__additional_components_view: Logger.log("w", "Could not create ui components for UM3.") return + # Create extra components Application.getInstance().addAdditionalComponent("monitorButtons", self.__additional_components_view.findChild(QObject, "networkPrinterConnectButton")) Application.getInstance().addAdditionalComponent("machinesDetailPane", self.__additional_components_view.findChild(QObject, "networkPrinterConnectionInfo")) diff --git a/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml b/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml index b20d17a6d4..cb574384f9 100644 --- a/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml +++ b/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml @@ -114,7 +114,7 @@ Cura.MachineAction Column { - width: (parent.width * 0.5) | 0 + width: Math.floor(parent.width * 0.5) spacing: UM.Theme.getSize("default_margin").height ScrollView @@ -191,8 +191,6 @@ Cura.MachineAction anchors.left: parent.left anchors.right: parent.right wrapMode: Text.WordWrap - //: Tips label - //TODO: get actual link from webteam text: catalog.i18nc("@label", "If your printer is not listed, read the network printing troubleshooting guide").arg("https://ultimaker.com/en/troubleshooting"); onLinkActivated: Qt.openUrlExternally(link) } @@ -200,7 +198,7 @@ Cura.MachineAction } Column { - width: (parent.width * 0.5) | 0 + width: Math.floor(parent.width * 0.5) visible: base.selectedPrinter ? true : false spacing: UM.Theme.getSize("default_margin").height Label @@ -218,13 +216,13 @@ Cura.MachineAction columns: 2 Label { - width: (parent.width * 0.5) | 0 + width: Math.floor(parent.width * 0.5) wrapMode: Text.WordWrap text: catalog.i18nc("@label", "Type") } Label { - width: (parent.width * 0.5) | 0 + width: Math.floor(parent.width * 0.5) wrapMode: Text.WordWrap text: { @@ -232,13 +230,13 @@ Cura.MachineAction { if(base.selectedPrinter.printerType == "ultimaker3") { - return catalog.i18nc("@label", "Ultimaker 3") + return catalog.i18nc("@label Printer name", "Ultimaker 3") } else if(base.selectedPrinter.printerType == "ultimaker3_extended") { - return catalog.i18nc("@label", "Ultimaker 3 Extended") + return catalog.i18nc("@label Printer name", "Ultimaker 3 Extended") } else { - return catalog.i18nc("@label", "Unknown") // We have no idea what type it is. Should not happen 'in the field' + return catalog.i18nc("@label Printer name", "Unknown") // We have no idea what type it is. Should not happen 'in the field' } } else @@ -249,25 +247,25 @@ Cura.MachineAction } Label { - width: (parent.width * 0.5) | 0 + width: Math.floor(parent.width * 0.5) wrapMode: Text.WordWrap text: catalog.i18nc("@label", "Firmware version") } Label { - width: (parent.width * 0.5) | 0 + width: Math.floor(parent.width * 0.5) wrapMode: Text.WordWrap text: base.selectedPrinter ? base.selectedPrinter.firmwareVersion : "" } Label { - width: (parent.width * 0.5) | 0 + width: Math.floor(parent.width * 0.5) wrapMode: Text.WordWrap text: catalog.i18nc("@label", "Address") } Label { - width: (parent.width * 0.5) | 0 + width: Math.floor(parent.width * 0.5) wrapMode: Text.WordWrap text: base.selectedPrinter ? base.selectedPrinter.ipAddress : "" } @@ -278,12 +276,8 @@ Cura.MachineAction width: parent.width wrapMode: Text.WordWrap text:{ - if (base.selectedPrinter == undefined) - { - return ""; - } // The property cluster size does not exist for older UM3 devices. - if(base.selectedPrinter != undefined && base.selectedPrinter.clusterSize == null || base.selectedPrinter.clusterSize == 1) + if(!base.selectedPrinter || base.selectedPrinter.clusterSize == null || base.selectedPrinter.clusterSize == 1) { return ""; } diff --git a/plugins/UM3NetworkPrinting/MonitorItem.qml b/plugins/UM3NetworkPrinting/MonitorItem.qml index ffa2e8c85d..f69df41dd4 100644 --- a/plugins/UM3NetworkPrinting/MonitorItem.qml +++ b/plugins/UM3NetworkPrinting/MonitorItem.qml @@ -17,10 +17,10 @@ Component } return (sourceSize.width / sourceSize.height) > (maximumWidth / maximumHeight); } - property real _width: Math.min(maximumWidth, sourceSize.width) - property real _height: Math.min(maximumHeight, sourceSize.height) - width: proportionalHeight ? _width : sourceSize.width * _height / sourceSize.height - height: !proportionalHeight ? _height : sourceSize.height * _width / sourceSize.width + property real _width: Math.floor(Math.min(maximumWidth, sourceSize.width)) + property real _height: Math.floor(Math.min(maximumHeight, sourceSize.height)) + width: proportionalHeight ? _width : Math.floor(sourceSize.width * _height / sourceSize.height) + height: !proportionalHeight ? _height : Math.floor(sourceSize.height * _width / sourceSize.width) anchors.horizontalCenter: parent.horizontalCenter onVisibleChanged: diff --git a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py index e482cbd4e3..05069d1c0d 100644 --- a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py @@ -8,12 +8,10 @@ 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.QtCore import QUrl, 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.Decorators import override from UM.Logger import Logger from UM.Message import Message from UM.OutputDevice import OutputDeviceError @@ -103,6 +101,7 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte self._can_pause = True self._can_abort = True self._can_pre_heat_bed = False + self._can_control_manually = False self._cluster_size = int(properties.get(b"cluster_size", 0)) self._cleanupRequest() @@ -130,7 +129,7 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte @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: + if not self._control_item: self._createControlViewFromQML() name = self._selected_printer.get("friendly_name") if name == self._automatic_printer.get("friendly_name") or name == "": @@ -234,17 +233,8 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte 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()])) - + path = os.path.join(self._plugin_path, "PrintWindow.qml") + self._print_view = Application.getInstance().createQmlComponent(path, {"OutputDevice": self}) if self._print_view is not None: self._print_view.show() @@ -253,6 +243,11 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte self._selected_printer = self._automatic_printer # reset to default option self._request_job = [nodes, file_name, filter_by_machine, file_handler, kwargs] + # the build plates to be sent + gcodes = getattr(Application.getInstance().getController().getScene(), "gcode_list") + self._job_list = list(gcodes.keys()) + Logger.log("d", "build plates to be sent to printer: %s", (self._job_list)) + if self._stage != OutputStage.ready: if self._error_message: self._error_message.hide() @@ -262,12 +257,15 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte self._error_message.show() return + self._add_build_plate_number = len(self._job_list) > 1 + self.writeStarted.emit(self) # Allow postprocessing before sending data to the printer 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: @@ -282,28 +280,34 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte @pyqtSlot() def sendPrintJob(self): nodes, file_name, filter_by_machine, file_handler, kwargs = self._request_job - require_printer_name = self._selected_printer["unique_name"] + output_build_plate_number = self._job_list.pop(0) + gcode = getattr(Application.getInstance().getController().getScene(), "gcode_list")[output_build_plate_number] self._send_gcode_start = time.time() - Logger.log("d", "Sending print job [%s] to host..." % file_name) + Logger.log("d", "Sending print job [%s] to host, build plate [%s]..." % (file_name, output_build_plate_number)) 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 + if self._add_build_plate_number: + self._file_name = "%s_%d.gcode.gz" % (file_name, output_build_plate_number) + else: + self._file_name = "%s.gcode.gz" % (file_name) self._showProgressMessage() - new_request = self._buildSendPrintJobHttpRequest(require_printer_name) + require_printer_name = self._selected_printer["unique_name"] + + new_request = self._buildSendPrintJobHttpRequest(require_printer_name, gcode) if new_request is None or self._stage != OutputStage.uploading: return self._request = new_request self._reply = self._manager.post(self._request, self._multipart) self._reply.uploadProgress.connect(self._onUploadProgress) - # See _finishedPostPrintJobRequest() + # See _finishedPrintJobPostRequest() - def _buildSendPrintJobHttpRequest(self, require_printer_name): + def _buildSendPrintJobHttpRequest(self, require_printer_name, gcode): api_url = QUrl(self._api_base_uri + "print_jobs/") request = QNetworkRequest(api_url) # Create multipart request and add the g-code. @@ -312,9 +316,8 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte # Add gcode part = QHttpPart() part.setHeader(QNetworkRequest.ContentDispositionHeader, - 'form-data; name="file"; filename="%s"' % self._file_name) + '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 None # User aborted print, so stop trying. @@ -400,6 +403,9 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte self._cleanupRequest() + if self._job_list: # start sending next job + self.sendPrintJob() + 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( @@ -485,7 +491,7 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte printer_name = self.__getPrinterNameFromUuid(print_job["printer_uuid"]) if printer_name is None: - printer_name = i18n_catalog.i18nc("@label", "Unknown") + printer_name = i18n_catalog.i18nc("@label Printer name", "Unknown") message_text = (i18n_catalog.i18nc("@info:status", "Printer '{printer_name}' has finished printing '{job_name}'.") @@ -706,7 +712,7 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte if self._reply: self._reply.abort() self._stage = OutputStage.ready - Application.getInstance().showPrintMonitor.emit(False) + Application.getInstance().getController().setActiveStage("PrepareStage") @pyqtSlot(int, result=str) def formatDuration(self, seconds): diff --git a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py index 9dedc87df4..de0a06527e 100755 --- a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py @@ -102,6 +102,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): self._target_bed_temperature = 0 self._processing_preheat_requests = True + self._can_control_manually = False + 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")) @@ -670,10 +672,11 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): 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) + Application.getInstance().getController().setActiveStage("MonitorStage") self._print_finished = True self.writeStarted.emit(self) - self._gcode = getattr(Application.getInstance().getController().getScene(), "gcode_list") + active_build_plate = Application.getInstance().getBuildPlateModel().activeBuildPlate + self._gcode = getattr(Application.getInstance().getController().getScene(), "gcode_list")[active_build_plate] print_information = Application.getInstance().getPrintInformation() warnings = [] # There might be multiple things wrong. Keep a list of all the stuff we need to warn about. @@ -724,10 +727,10 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): remote_material_guid, material.getMetaDataEntry("GUID")) - remote_materials = UM.Settings.ContainerRegistry.ContainerRegistry.getInstance().findInstanceContainers(type = "material", GUID = remote_material_guid, read_only = True) + remote_materials = UM.Settings.ContainerRegistry.ContainerRegistry.getInstance().findInstanceContainersMetadata(type = "material", GUID = remote_material_guid, read_only = True) remote_material_name = "Unknown" if remote_materials: - remote_material_name = remote_materials[0].getName() + remote_material_name = remote_materials[0]["name"] warnings.append(i18n_catalog.i18nc("@label", "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}").format(material.getName(), remote_material_name, index + 1)) try: @@ -765,7 +768,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): if button == QMessageBox.Yes: self.startPrint() else: - Application.getInstance().showPrintMonitor.emit(False) + Application.getInstance().getController().setActiveStage("PrepareStage") # For some unknown reason Cura on OSX will hang if we do the call back code # immediately without first returning and leaving QML's event system. QTimer.singleShot(100, delayedCallback) @@ -848,7 +851,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): self._write_finished = True # post_reply does not always exist, so make sure we unblock writing if self._post_reply: self._finalizePostReply() - Application.getInstance().showPrintMonitor.emit(False) + Application.getInstance().getController().setActiveStage("PrepareStage") ## Attempt to start a new print. # This function can fail to actually start a print due to not being authenticated or another print already @@ -969,7 +972,8 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): ## Send all material profiles to the printer. def sendMaterialProfiles(self): - for container in UM.Settings.ContainerRegistry.ContainerRegistry.getInstance().findInstanceContainers(type = "material"): + registry = UM.Settings.ContainerRegistry.ContainerRegistry.getInstance() + for container in registry.findInstanceContainers(type = "material"): try: xml_data = container.serialize() if xml_data == "" or xml_data is None: @@ -978,7 +982,7 @@ class NetworkPrinterOutputDevice(PrinterOutputDevice): names = ContainerManager.getInstance().getLinkedMaterials(container.getId()) if names: # There are other materials that share this GUID. - if not container.isReadOnly(): + if not registry.isReadOnly(container.getId()): continue # If it's not readonly, it's created by user, so skip it. material_multi_part = QHttpMultiPart(QHttpMultiPart.FormDataType) diff --git a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevicePlugin.py b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevicePlugin.py index 46538f1af9..0d3ed52f03 100644 --- a/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevicePlugin.py +++ b/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevicePlugin.py @@ -43,6 +43,7 @@ class NetworkPrinterOutputDevicePlugin(QObject, OutputDevicePlugin): # List of old printer names. This is used to ensure that a refresh of zeroconf does not needlessly forces # authentication requests. self._old_printers = [] + self._excluded_addresses = ["127.0.0.1"] # Adding a list of not allowed IP addresses. At this moment, just localhost # Because the model needs to be created in the same thread as the QMLEngine, we use a signal. self.addPrinterSignal.connect(self.addPrinter) @@ -300,6 +301,9 @@ class NetworkPrinterOutputDevicePlugin(QObject, OutputDevicePlugin): if type_of_device: if type_of_device == b"printer": address = '.'.join(map(lambda n: str(n), info.address)) + if address in self._excluded_addresses: + Logger.log("d", "The IP address %s of the printer \'%s\' is not correct. Trying to reconnect.", address, name) + return False # When getting the localhost IP, then try to reconnect self.addPrinterSignal.emit(str(name), address, info.properties) else: Logger.log("w", "The type of the found device is '%s', not 'printer'! Ignoring.." % type_of_device ) diff --git a/plugins/UM3NetworkPrinting/PrintCoreConfiguration.qml b/plugins/UM3NetworkPrinting/PrintCoreConfiguration.qml index 624c02f735..03ff4542e1 100644 --- a/plugins/UM3NetworkPrinting/PrintCoreConfiguration.qml +++ b/plugins/UM3NetworkPrinting/PrintCoreConfiguration.qml @@ -10,7 +10,7 @@ Item id: extruderInfo property var printCoreConfiguration - width: parent.width / 2 + width: Math.floor(parent.width / 2) height: childrenRect.height Label { diff --git a/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml index 1ced5e8233..c253ebae89 100644 --- a/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml +++ b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml @@ -44,7 +44,7 @@ Rectangle case "maintenance": // TODO: new string case "unknown": default: - return catalog.i18nc("@label", "Unknown"); + return catalog.i18nc("@label Printer status", "Unknown"); } } @@ -86,7 +86,7 @@ Rectangle Rectangle { - width: parent.width / 3 + width: Math.floor(parent.width / 3) height: parent.height Label // Print job name @@ -131,7 +131,7 @@ Rectangle Rectangle { - width: parent.width / 3 * 2 + width: Math.floor(parent.width / 3 * 2) height: parent.height Label // Friendly machine name @@ -139,7 +139,7 @@ Rectangle id: printerNameLabel anchors.top: parent.top anchors.left: parent.left - width: parent.width / 2 - UM.Theme.getSize("default_margin").width - showCameraIcon.width + width: Math.floor(parent.width / 2 - UM.Theme.getSize("default_margin").width - showCameraIcon.width) text: printer.friendly_name font: UM.Theme.getFont("default_bold") elide: Text.ElideRight @@ -149,7 +149,7 @@ Rectangle { id: printerTypeLabel anchors.top: printerNameLabel.bottom - width: parent.width / 2 - UM.Theme.getSize("default_margin").width + width: Math.floor(parent.width / 2 - UM.Theme.getSize("default_margin").width) text: printer.machine_variant anchors.left: parent.left elide: Text.ElideRight @@ -183,7 +183,7 @@ Rectangle id: extruderInfo anchors.bottom: parent.bottom - width: parent.width / 2 - UM.Theme.getSize("default_margin").width + width: Math.floor(parent.width / 2 - UM.Theme.getSize("default_margin").width) height: childrenRect.height spacing: UM.Theme.getSize("default_margin").width @@ -217,7 +217,7 @@ Rectangle anchors.right: parent.right anchors.top: parent.top height: showExtended ? parent.height: printProgressTitleBar.height - width: parent.width / 2 - UM.Theme.getSize("default_margin").width + width: Math.floor(parent.width / 2 - UM.Theme.getSize("default_margin").width) border.width: UM.Theme.getSize("default_lining").width border.color: lineColor radius: cornerRadius diff --git a/plugins/UM3NetworkPrinting/PrinterVideoStream.qml b/plugins/UM3NetworkPrinting/PrinterVideoStream.qml index fe60d30dd4..6793d74ac5 100644 --- a/plugins/UM3NetworkPrinting/PrinterVideoStream.qml +++ b/plugins/UM3NetworkPrinting/PrinterVideoStream.qml @@ -57,7 +57,7 @@ Item { id: cameraImage width: Math.min(sourceSize.width === 0 ? 800 * screenScaleFactor : sourceSize.width, maximumWidth) - height: (sourceSize.height === 0 ? 600 * screenScaleFactor : sourceSize.height) * width / sourceSize.width + height: Math.floor((sourceSize.height === 0 ? 600 * screenScaleFactor : sourceSize.height) * width / sourceSize.width) anchors.horizontalCenter: parent.horizontalCenter anchors.verticalCenter: parent.verticalCenter z: 1 diff --git a/plugins/UM3NetworkPrinting/UM3InfoComponents.qml b/plugins/UM3NetworkPrinting/UM3InfoComponents.qml index 8d0d8a0754..d0c95e1524 100644 --- a/plugins/UM3NetworkPrinting/UM3InfoComponents.qml +++ b/plugins/UM3NetworkPrinting/UM3InfoComponents.qml @@ -119,11 +119,17 @@ Item onClicked: manager.loadConfigurationFromPrinter() function isClusterPrinter() { - var clusterSize = Cura.MachineManager.printerOutputDevices[0].clusterSize - // This is a non cluster printer or the cluster it is just one printer - if (clusterSize == undefined || clusterSize == 1) - return false - return true + if(Cura.MachineManager.printerOutputDevices.length == 0) + { + return false; + } + var clusterSize = Cura.MachineManager.printerOutputDevices[0].clusterSize; + // This is not a cluster printer or the cluster it is just one printer + if(clusterSize == undefined || clusterSize == 1) + { + return false; + } + return true; } } } diff --git a/plugins/USBPrinting/USBPrinterOutputDevice.py b/plugins/USBPrinting/USBPrinterOutputDevice.py index 3b9603cc1b..1930f5402b 100644 --- a/plugins/USBPrinting/USBPrinterOutputDevice.py +++ b/plugins/USBPrinting/USBPrinterOutputDevice.py @@ -13,6 +13,7 @@ from UM.Application import Application from UM.Logger import Logger from cura.PrinterOutputDevice import PrinterOutputDevice, ConnectionState from UM.Message import Message +from UM.Qt.Duration import DurationFormat from PyQt5.QtCore import QUrl, pyqtSlot, pyqtSignal, pyqtProperty @@ -52,6 +53,8 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._heatup_wait_start_time = time.time() + self.jobStateChanged.connect(self._onJobStateChanged) + ## Queue for commands that need to be send. Used when command is sent when a print is active. self._command_queue = queue.Queue() @@ -60,7 +63,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): ## Set when print is started in order to check running time. self._print_start_time = None - self._print_start_time_100 = None + self._print_estimated_time = None ## Keep track where in the provided g-code the print is self._gcode_position = 0 @@ -125,6 +128,29 @@ class USBPrinterOutputDevice(PrinterOutputDevice): def _homeBed(self): self._sendCommand("G28 Z") + ## Updates the target bed temperature from the printer, and emit a signal if it was changed. + # + # /param temperature The new target temperature of the bed. + # /return boolean, True if the temperature was changed, false if the new temperature has the same value as the already stored temperature + def _updateTargetBedTemperature(self, temperature): + if self._target_bed_temperature == temperature: + return False + self._target_bed_temperature = temperature + self.targetBedTemperatureChanged.emit() + return True + + ## Updates the target hotend temperature from the printer, and emit a signal if it was changed. + # + # /param index The index of the hotend. + # /param temperature The new target temperature of the hotend. + # /return boolean, True if the temperature was changed, false if the new temperature has the same value as the already stored temperature + def _updateTargetHotendTemperature(self, index, temperature): + if self._target_hotend_temperatures[index] == temperature: + return False + self._target_hotend_temperatures[index] = temperature + self.targetHotendTemperaturesChanged.emit() + return True + ## A name for the device. @pyqtProperty(str, constant = True) def name(self): @@ -164,7 +190,6 @@ class USBPrinterOutputDevice(PrinterOutputDevice): # Reset line number. If this is not done, first line is sometimes ignored self._gcode.insert(0, "M110") self._gcode_position = 0 - self._print_start_time_100 = None self._is_printing = True self._print_start_time = time.time() @@ -394,7 +419,8 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._listen_thread.join() except: pass - self._serial.close() + if self._serial is not None: # Avoid a race condition when a thread can change the value of self._serial to None + self._serial.close() self._listen_thread = threading.Thread(target = self._listen) self._listen_thread.daemon = True @@ -446,7 +472,6 @@ class USBPrinterOutputDevice(PrinterOutputDevice): # # \param nodes A collection of scene nodes to send. This is ignored. # \param file_name \type{string} A suggestion for a file name to write. - # This is ignored. # \param filter_by_machine Whether to filter MIME types by machine. This # is ignored. # \param kwargs Keyword arguments. @@ -462,7 +487,10 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._error_message.show() return - Application.getInstance().showPrintMonitor.emit(True) + self.setJobName(file_name) + self._print_estimated_time = int(Application.getInstance().getPrintInformation().currentPrintTime.getDisplayString(DurationFormat.Format.Seconds)) + + Application.getInstance().getController().setActiveStage("MonitorStage") self.startPrint() def _setEndstopState(self, endstop_key, value): @@ -482,6 +510,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): ## Listen thread function. def _listen(self): Logger.log("i", "Printer connection listen thread started for %s" % self._serial_port) + container_stack = Application.getInstance().getGlobalContainerStack() temperature_request_timeout = time.time() ok_timeout = time.time() while self._connection_state == ConnectionState.connected: @@ -511,16 +540,40 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._setErrorState(line[6:]) elif b" T:" in line or line.startswith(b"T:"): # Temperature message + temperature_matches = re.findall(b"T(\d*): ?([\d\.]+) ?\/?([\d\.]+)?", line) + temperature_set = False try: - self._setHotendTemperature(self._temperature_requested_extruder_index, float(re.search(b"T: *([0-9\.]*)", line).group(1))) + for match in temperature_matches: + if match[0]: + extruder_nr = int(match[0]) + if extruder_nr >= container_stack.getProperty("machine_extruder_count", "value"): + continue + if match[1]: + self._setHotendTemperature(extruder_nr, float(match[1])) + temperature_set = True + if match[2]: + self._updateTargetHotendTemperature(extruder_nr, float(match[2])) + else: + requested_temperatures = match + if not temperature_set and requested_temperatures: + if requested_temperatures[1]: + self._setHotendTemperature(self._temperature_requested_extruder_index, float(requested_temperatures[1])) + if requested_temperatures[2]: + self._updateTargetHotendTemperature(self._temperature_requested_extruder_index, float(requested_temperatures[2])) except: - pass - if b"B:" in line: # Check if it's a bed temperature + Logger.log("w", "Could not parse hotend temperatures from response: %s", line) + # Check if there's also a bed temperature + temperature_matches = re.findall(b"B: ?([\d\.]+) ?\/?([\d\.]+)?", line) + if container_stack.getProperty("machine_heated_bed", "value") and len(temperature_matches) > 0: + match = temperature_matches[0] try: - self._setBedTemperature(float(re.search(b"B: *([0-9\.]*)", line).group(1))) - except Exception as e: - pass - #TODO: temperature changed callback + if match[0]: + self._setBedTemperature(float(match[0])) + if match[1]: + self._updateTargetBedTemperature(float(match[1])) + except: + Logger.log("w", "Could not parse bed temperature from response: %s", line) + elif b"_min" in line or b"_max" in line: tag, value = line.split(b":", 1) self._setEndstopState(tag,(b"H" in value or b"TRIGGERED" in value)) @@ -559,8 +612,6 @@ class USBPrinterOutputDevice(PrinterOutputDevice): def _sendNextGcodeLine(self): if self._gcode_position >= len(self._gcode): return - if self._gcode_position == 100: - self._print_start_time_100 = time.time() line = self._gcode[self._gcode_position] if ";" in line: @@ -584,8 +635,18 @@ class USBPrinterOutputDevice(PrinterOutputDevice): checksum = functools.reduce(lambda x,y: x^y, map(ord, "N%d%s" % (self._gcode_position, line))) self._sendCommand("N%d%s*%d" % (self._gcode_position, line, checksum)) + + progress = (self._gcode_position / len(self._gcode)) + + elapsed_time = int(time.time() - self._print_start_time) + self.setTimeElapsed(elapsed_time) + estimated_time = self._print_estimated_time + if progress > .1: + estimated_time = self._print_estimated_time * (1-progress) + elapsed_time + self.setTimeTotal(estimated_time) + self._gcode_position += 1 - self.setProgress((self._gcode_position / len(self._gcode)) * 100) + self.setProgress(progress * 100) self.progressChanged.emit() ## Set the state of the print. @@ -600,6 +661,13 @@ class USBPrinterOutputDevice(PrinterOutputDevice): elif job_state == "abort": self.cancelPrint() + def _onJobStateChanged(self): + # clear the job name & times when printing is done or aborted + if self._job_state == "ready": + self.setJobName("") + self.setTimeElapsed(0) + self.setTimeTotal(0) + ## Set the progress of the print. # It will be normalized (based on max_progress) to range 0 - 100 def setProgress(self, progress, max_progress = 100): @@ -630,7 +698,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._is_printing = False self._is_paused = False self._updateJobState("ready") - Application.getInstance().showPrintMonitor.emit(False) + Application.getInstance().getController().setActiveStage("PrepareStage") ## Check if the process did not encounter an error yet. def hasError(self): diff --git a/plugins/USBPrinting/USBPrinterOutputDeviceManager.py b/plugins/USBPrinting/USBPrinterOutputDeviceManager.py index fe9095a08b..62412bb521 100644 --- a/plugins/USBPrinting/USBPrinterOutputDeviceManager.py +++ b/plugins/USBPrinting/USBPrinterOutputDeviceManager.py @@ -16,13 +16,11 @@ from cura.CuraApplication import CuraApplication import threading import platform -import glob import time import os.path import serial.tools.list_ports from UM.Extension import Extension -from PyQt5.QtQml import QQmlComponent, QQmlContext from PyQt5.QtCore import QUrl, QObject, pyqtSlot, pyqtProperty, pyqtSignal, Qt from UM.i18n import i18nCatalog i18n_catalog = i18nCatalog("cura") @@ -91,19 +89,16 @@ class USBPrinterOutputDeviceManager(QObject, OutputDevicePlugin, Extension): # This will create the view if its not already created. def spawnFirmwareInterface(self, serial_port): if self._firmware_view is None: - path = QUrl.fromLocalFile(os.path.join(PluginRegistry.getInstance().getPluginPath("USBPrinting"), "FirmwareUpdateWindow.qml")) - component = QQmlComponent(Application.getInstance()._engine, path) - - self._firmware_context = QQmlContext(Application.getInstance()._engine.rootContext()) - self._firmware_context.setContextProperty("manager", self) - self._firmware_view = component.create(self._firmware_context) + path = os.path.join(PluginRegistry.getInstance().getPluginPath("USBPrinting"), "FirmwareUpdateWindow.qml") + self._firmware_view = Application.getInstance().createQmlComponent(path, {"manager": self}) self._firmware_view.show() @pyqtSlot(str) def updateAllFirmware(self, file_name): if file_name.startswith("file://"): - file_name = QUrl(file_name).toLocalFile() # File dialogs prepend the path with file://, which we don't need / want + 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."), title = i18n_catalog.i18nc("@info:title", "Warning")).show() return diff --git a/plugins/UltimakerMachineActions/UM2UpgradeSelection.py b/plugins/UltimakerMachineActions/UM2UpgradeSelection.py index c84033a98e..1bf0b98217 100644 --- a/plugins/UltimakerMachineActions/UM2UpgradeSelection.py +++ b/plugins/UltimakerMachineActions/UM2UpgradeSelection.py @@ -37,8 +37,7 @@ class UM2UpgradeSelection(MachineAction): def setHasVariants(self, has_variants = True): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: - variant_container = global_container_stack.variant - variant_index = global_container_stack.getContainerIndex(variant_container) + variant_container = global_container_stack.extruders["0"].variant if has_variants: if "has_variants" in global_container_stack.getMetaData(): @@ -52,7 +51,7 @@ class UM2UpgradeSelection(MachineAction): search_criteria = { "type": "variant", "definition": "ultimaker2", "id": "*0.4*" } containers = self._container_registry.findInstanceContainers(**search_criteria) if containers: - global_container_stack.variant = containers[0] + global_container_stack.extruders["0"].variant = containers[0] else: # The metadata entry is stored in an ini, and ini files are parsed as strings only. # Because any non-empty string evaluates to a boolean True, we have to remove the entry to make it False. @@ -60,6 +59,6 @@ class UM2UpgradeSelection(MachineAction): global_container_stack.removeMetaDataEntry("has_variants") # Set the variant container to an empty variant - global_container_stack.variant = ContainerRegistry.getInstance().getEmptyInstanceContainer() + global_container_stack.extruders["0"].variant = ContainerRegistry.getInstance().getEmptyInstanceContainer() Application.getInstance().globalContainerStackChanged.emit() diff --git a/plugins/UserAgreementPlugin/UserAgreement.py b/plugins/UserAgreementPlugin/UserAgreement.py new file mode 100644 index 0000000000..915c1761fa --- /dev/null +++ b/plugins/UserAgreementPlugin/UserAgreement.py @@ -0,0 +1,48 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from UM.Extension import Extension +from UM.Preferences import Preferences +from UM.Application import Application +from UM.PluginRegistry import PluginRegistry +from UM.Logger import Logger + +from cura.CuraApplication import CuraApplication + +from PyQt5.QtCore import QObject, pyqtSlot + +import os.path + +class UserAgreement(QObject, Extension): + def __init__(self): + super(UserAgreement, self).__init__() + self._user_agreement_window = None + self._user_agreement_context = None + Application.getInstance().engineCreatedSignal.connect(self._onEngineCreated) + Preferences.getInstance().addPreference("general/accepted_user_agreement", False) + + def _onEngineCreated(self): + if not Preferences.getInstance().getValue("general/accepted_user_agreement"): + self.showUserAgreement() + + def showUserAgreement(self): + if not self._user_agreement_window: + self.createUserAgreementWindow() + + self._user_agreement_window.show() + + @pyqtSlot(bool) + def didAgree(self, user_choice): + if user_choice: + Logger.log("i", "User agreed to the user agreement") + Preferences.getInstance().setValue("general/accepted_user_agreement", True) + self._user_agreement_window.hide() + else: + Logger.log("i", "User did NOT agree to the user agreement") + Preferences.getInstance().setValue("general/accepted_user_agreement", False) + CuraApplication.getInstance().quit() + CuraApplication.getInstance().setNeedToShowUserAgreement(False) + + def createUserAgreementWindow(self): + path = os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), "UserAgreement.qml") + self._user_agreement_window = Application.getInstance().createQmlComponent(path, {"manager": self}) diff --git a/plugins/UserAgreementPlugin/UserAgreement.qml b/plugins/UserAgreementPlugin/UserAgreement.qml new file mode 100644 index 0000000000..c7f3f165e3 --- /dev/null +++ b/plugins/UserAgreementPlugin/UserAgreement.qml @@ -0,0 +1,63 @@ +// Copyright (c) 2017 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.4 + +import UM 1.3 as UM + +UM.Dialog +{ + id: baseDialog + minimumWidth: Math.floor(UM.Theme.getSize("modal_window_minimum").width * 0.75) + minimumHeight: Math.floor(UM.Theme.getSize("modal_window_minimum").height * 0.5) + width: minimumWidth + height: minimumHeight + title: catalog.i18nc("@title:window", "User Agreement") + + TextArea + { + anchors.top: parent.top + width: parent.width + anchors.bottom: buttonRow.top + text: '

DISCLAIMER BY ULTIMAKER

+

PLEASE READ THIS DISCLAIMER CAREFULLY.

+

EXCEPT WHEN OTHERWISE STATED IN WRITING, ULTIMAKER PROVIDES ANY ULTIMAKER SOFTWARE OR THIRD PARTY SOFTWARE “AS IS” WITHOUT WARRANTY OF ANY KIND. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF ULTIMAKER SOFTWARE IS WITH YOU.

+

UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, IN NO EVENT WILL ULTIMAKER BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE ANY ULTIMAKER SOFTWARE OR THIRD PARTY SOFTWARE.

+ ' + readOnly: true; + textFormat: TextEdit.RichText + } + + Item + { + id: buttonRow + anchors.bottom: parent.bottom + width: parent.width + anchors.bottomMargin: UM.Theme.getSize("default_margin").height + + UM.I18nCatalog { id: catalog; name:"cura" } + + Button + { + anchors.right: parent.right + text: catalog.i18nc("@action:button", "I understand and agree") + onClicked: { + baseDialog.accepted() + } + } + + Button + { + anchors.left: parent.left + text: catalog.i18nc("@action:button", "I don't agree") + onClicked: { + baseDialog.rejected() + } + } + } + + onAccepted: manager.didAgree(true) + onRejected: manager.didAgree(false) + onClosing: manager.didAgree(false) +} diff --git a/plugins/UserAgreementPlugin/__init__.py b/plugins/UserAgreementPlugin/__init__.py new file mode 100644 index 0000000000..88cb151f9e --- /dev/null +++ b/plugins/UserAgreementPlugin/__init__.py @@ -0,0 +1,10 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from . import UserAgreement + +def getMetaData(): + return {} + +def register(app): + return {"extension": UserAgreement.UserAgreement()} diff --git a/plugins/UserAgreementPlugin/plugin.json b/plugins/UserAgreementPlugin/plugin.json new file mode 100644 index 0000000000..aa5dbb1258 --- /dev/null +++ b/plugins/UserAgreementPlugin/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "UserAgreement", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Ask the user once if he/she agrees with our license", + "api": 4, + "i18n-catalog": "cura" +} diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py b/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py index 4316d5cafb..becf29c242 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py @@ -98,7 +98,7 @@ class Profile: config.add_section("metadata") config.set("metadata", "quality_type", "normal") #This feature doesn't exist in 2.1 yet, so we don't know the actual quality type. For now, always base it on normal. - config.set("metadata", "type", "quality_changes") + config.set("metadata", "type", "quality") if self._weight: config.set("metadata", "weight", str(self._weight)) if self._machine_variant_name: diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py new file mode 100644 index 0000000000..8c5a160ff4 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/VersionUpgrade30to31.py @@ -0,0 +1,235 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import configparser #To parse preference files. +import io #To serialise the preference files afterwards. +import os +from urllib.parse import quote_plus + +from UM.Resources import Resources +from UM.VersionUpgrade import VersionUpgrade #We're inheriting from this. + +from cura.CuraApplication import CuraApplication + + +# a list of all legacy "Not Supported" quality profiles +_OLD_NOT_SUPPORTED_PROFILES = [ + "um2p_pp_0.25_normal", + "um2p_tpu_0.8_normal", + "um3_bb0.4_ABS_Fast_Print", + "um3_bb0.4_ABS_Superdraft_Print", + "um3_bb0.4_CPEP_Fast_Print", + "um3_bb0.4_CPEP_Superdraft_Print", + "um3_bb0.4_CPE_Fast_Print", + "um3_bb0.4_CPE_Superdraft_Print", + "um3_bb0.4_Nylon_Fast_Print", + "um3_bb0.4_Nylon_Superdraft_Print", + "um3_bb0.4_PC_Fast_Print", + "um3_bb0.4_PLA_Fast_Print", + "um3_bb0.4_PLA_Superdraft_Print", + "um3_bb0.4_PP_Fast_Print", + "um3_bb0.4_PP_Superdraft_Print", + "um3_bb0.4_TPU_Fast_Print", + "um3_bb0.4_TPU_Superdraft_Print", + "um3_bb0.8_ABS_Fast_Print", + "um3_bb0.8_ABS_Superdraft_Print", + "um3_bb0.8_CPEP_Fast_Print", + "um3_bb0.8_CPEP_Superdraft_Print", + "um3_bb0.8_CPE_Fast_Print", + "um3_bb0.8_CPE_Superdraft_Print", + "um3_bb0.8_Nylon_Fast_Print", + "um3_bb0.8_Nylon_Superdraft_Print", + "um3_bb0.8_PC_Fast_Print", + "um3_bb0.8_PC_Superdraft_Print", + "um3_bb0.8_PLA_Fast_Print", + "um3_bb0.8_PLA_Superdraft_Print", + "um3_bb0.8_PP_Fast_Print", + "um3_bb0.8_PP_Superdraft_Print", + "um3_bb0.8_TPU_Fast_print", + "um3_bb0.8_TPU_Superdraft_Print", +] + + +# Some containers have their specific empty containers, those need to be set correctly. +_EMPTY_CONTAINER_DICT = { + "1": "empty_quality_changes", + "2": "empty_quality", + "3": "empty_material", + "4": "empty_variant", +} + + +class VersionUpgrade30to31(VersionUpgrade): + ## Gets the version number from a CFG file in Uranium's 3.0 format. + # + # Since the format may change, this is implemented for the 3.0 format only + # and needs to be included in the version upgrade system rather than + # globally in Uranium. + # + # \param serialised The serialised form of a CFG file. + # \return The version number stored in the CFG file. + # \raises ValueError The format of the version number in the file is + # incorrect. + # \raises KeyError The format of the file is incorrect. + def getCfgVersion(self, serialised): + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialised) + format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. + setting_version = int(parser.get("metadata", "setting_version", fallback = 0)) + return format_version * 1000000 + setting_version + + ## Upgrades a preferences file from version 3.0 to 3.1. + # + # \param serialised The serialised form of a preferences file. + # \param filename The name of the file to upgrade. + def upgradePreferences(self, serialised, filename): + parser = configparser.ConfigParser(interpolation=None) + parser.read_string(serialised) + + # Update version numbers + if "general" not in parser: + parser["general"] = {} + parser["general"]["version"] = "5" + if "metadata" not in parser: + parser["metadata"] = {} + parser["metadata"]["setting_version"] = "4" + + # Re-serialise the file. + output = io.StringIO() + parser.write(output) + return [filename], [output.getvalue()] + + ## Upgrades the given instance container file from version 3.0 to 3.1. + # + # \param serialised The serialised form of the container file. + # \param filename The name of the file to upgrade. + def upgradeInstanceContainer(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) + + # Copy global quality changes to extruder quality changes for single extrusion machines + if parser["metadata"]["type"] == "quality_changes": + all_quality_changes = self._getSingleExtrusionMachineQualityChanges(parser) + # Note that DO NOT!!! use the quality_changes returned from _getSingleExtrusionMachineQualityChanges(). + # Those are loaded from the hard drive which are original files that haven't been upgraded yet. + # NOTE 2: The number can be 0 or 1 depends on whether you are loading it from the qualities folder or + # from a project file. When you load from a project file, the custom profile may not be in cura + # yet, so you will get 0. + if len(all_quality_changes) <= 1 and not parser.has_option("metadata", "extruder"): + self._createExtruderQualityChangesForSingleExtrusionMachine(filename, parser) + + # Update version numbers + parser["general"]["version"] = "2" + parser["metadata"]["setting_version"] = "4" + + # Re-serialise the file. + output = io.StringIO() + parser.write(output) + return [filename], [output.getvalue()] + + + ## Upgrades a container stack from version 3.0 to 3.1. + # + # \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) + + # change "not supported" quality profiles to empty because they no longer exist + if parser.has_section("containers"): + if parser.has_option("containers", "2"): + quality_profile_id = parser["containers"]["2"] + if quality_profile_id in _OLD_NOT_SUPPORTED_PROFILES: + parser["containers"]["2"] = "empty_quality" + + # fix empty containers + for key, specific_empty_container in _EMPTY_CONTAINER_DICT.items(): + if parser.has_option("containers", key) and parser["containers"][key] == "empty": + parser["containers"][key] = specific_empty_container + + # 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"] = "4" + + # Re-serialise the file. + output = io.StringIO() + parser.write(output) + return [filename], [output.getvalue()] + + def _getSingleExtrusionMachineQualityChanges(self, quality_changes_container): + quality_changes_dir = Resources.getPath(CuraApplication.ResourceTypes.QualityInstanceContainer) + quality_changes_containers = [] + + for item in os.listdir(quality_changes_dir): + file_path = os.path.join(quality_changes_dir, item) + if not os.path.isfile(file_path): + continue + + parser = configparser.ConfigParser(interpolation = None) + try: + parser.read([file_path]) + except: + # skip, it is not a valid stack file + continue + + if not parser.has_option("metadata", "type"): + continue + if "quality_changes" != parser["metadata"]["type"]: + continue + + if not parser.has_option("general", "name"): + continue + if quality_changes_container["general"]["name"] != parser["general"]["name"]: + continue + + quality_changes_containers.append(parser) + + return quality_changes_containers + + def _createExtruderQualityChangesForSingleExtrusionMachine(self, filename, global_quality_changes): + suffix = "_" + quote_plus(global_quality_changes["general"]["name"].lower()) + machine_name = os.path.os.path.basename(filename).replace(".inst.cfg", "").replace(suffix, "") + + # Why is this here?! + # When we load a .curaprofile file the deserialize will trigger a version upgrade, creating a dangling file. + # This file can be recognized by it's lack of a machine name in the target filename. + # So when we detect that situation here, we don't create the file and return. + if machine_name == "": + return + + new_filename = machine_name + "_" + "fdmextruder" + suffix + + extruder_quality_changes_parser = configparser.ConfigParser(interpolation = None) + extruder_quality_changes_parser.add_section("general") + extruder_quality_changes_parser["general"]["version"] = str(2) + extruder_quality_changes_parser["general"]["name"] = global_quality_changes["general"]["name"] + extruder_quality_changes_parser["general"]["definition"] = global_quality_changes["general"]["definition"] + + extruder_quality_changes_parser.add_section("metadata") + extruder_quality_changes_parser["metadata"]["quality_type"] = global_quality_changes["metadata"]["quality_type"] + extruder_quality_changes_parser["metadata"]["type"] = global_quality_changes["metadata"]["type"] + extruder_quality_changes_parser["metadata"]["setting_version"] = str(4) + extruder_quality_changes_parser["metadata"]["extruder"] = "fdmextruder" + + extruder_quality_changes_output = io.StringIO() + extruder_quality_changes_parser.write(extruder_quality_changes_output) + extruder_quality_changes_filename = quote_plus(new_filename) + ".inst.cfg" + + quality_changes_dir = Resources.getPath(CuraApplication.ResourceTypes.QualityInstanceContainer) + + with open(os.path.join(quality_changes_dir, extruder_quality_changes_filename), "w") as f: + f.write(extruder_quality_changes_output.getvalue()) diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py b/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py new file mode 100644 index 0000000000..b4b75dddf7 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/__init__.py @@ -0,0 +1,56 @@ +# Copyright (c) 2017 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from . import VersionUpgrade30to31 + +upgrade = VersionUpgrade30to31.VersionUpgrade30to31() + +def getMetaData(): + return { + "version_upgrade": { + # From To Upgrade function + ("preferences", 5000003): ("preferences", 5000004, upgrade.upgradePreferences), + + ("machine_stack", 3000003): ("machine_stack", 3000004, upgrade.upgradeStack), + ("extruder_train", 3000003): ("extruder_train", 3000004, upgrade.upgradeStack), + + ("quality_changes", 2000003): ("quality_changes", 2000004, upgrade.upgradeInstanceContainer), + ("user", 2000003): ("user", 2000004, upgrade.upgradeInstanceContainer), + ("quality", 2000003): ("quality", 2000004, upgrade.upgradeInstanceContainer), + ("definition_changes", 2000003): ("definition_changes", 2000004, upgrade.upgradeInstanceContainer), + ("variant", 2000003): ("variant", 2000004, upgrade.upgradeInstanceContainer) + }, + "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"} + } + } + } + +def register(app): + return { "version_upgrade": upgrade } diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/plugin.json b/plugins/VersionUpgrade/VersionUpgrade30to31/plugin.json new file mode 100644 index 0000000000..d80b820976 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/plugin.json @@ -0,0 +1,8 @@ + { + "name": "Version Upgrade 3.0 to 3.1", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Upgrades configurations from Cura 3.0 to Cura 3.1.", + "api": 4, + "i18n-catalog": "cura" +} diff --git a/plugins/X3DReader/X3DReader.py b/plugins/X3DReader/X3DReader.py index e4a59dcdaa..b0b9e00a5b 100644 --- a/plugins/X3DReader/X3DReader.py +++ b/plugins/X3DReader/X3DReader.py @@ -11,7 +11,7 @@ from UM.Math.Matrix import Matrix from UM.Math.Vector import Vector from UM.Mesh.MeshBuilder import MeshBuilder from UM.Mesh.MeshReader import MeshReader -from UM.Scene.SceneNode import SceneNode +from cura.Scene.CuraSceneNode import CuraSceneNode as SceneNode MYPY = False try: @@ -19,63 +19,63 @@ try: import xml.etree.cElementTree as ET except ImportError: import xml.etree.ElementTree as ET - + # TODO: preserve the structure of scenes that contain several objects -# Use CADPart, for example, to distinguish between separate objects - +# Use CADPart, for example, to distinguish between separate objects + DEFAULT_SUBDIV = 16 # Default subdivision factor for spheres, cones, and cylinders EPSILON = 0.000001 class Shape: - + # Expects verts in MeshBuilder-ready format, as a n by 3 mdarray # with vertices stored in rows def __init__(self, verts, faces, index_base, name): self.verts = verts self.faces = faces # Those are here for debugging purposes only - self.index_base = index_base + self.index_base = index_base self.name = name - + class X3DReader(MeshReader): def __init__(self): super().__init__() self._supported_extensions = [".x3d"] self._namespaces = {} - + # Main entry point # Reads the file, returns a SceneNode (possibly with nested ones), or None def read(self, file_name): try: self.defs = {} self.shapes = [] - + tree = ET.parse(file_name) xml_root = tree.getroot() - + if xml_root.tag != "X3D": return None - scale = 1000 # Default X3D unit it one meter, while Cura's is one millimeters + scale = 1000 # Default X3D unit it one meter, while Cura's is one millimeters if xml_root[0].tag == "head": for head_node in xml_root[0]: if head_node.tag == "unit" and head_node.attrib.get("category") == "length": scale *= float(head_node.attrib["conversionFactor"]) - break + break xml_scene = xml_root[1] else: xml_scene = xml_root[0] - + if xml_scene.tag != "Scene": return None - + self.transform = Matrix() self.transform.setByScaleFactor(scale) self.index_base = 0 - + # Traverse the scene tree, populate the shapes list self.processChildNodes(xml_scene) - + if self.shapes: builder = MeshBuilder() builder.setVertices(numpy.concatenate([shape.verts for shape in self.shapes])) @@ -95,20 +95,20 @@ class X3DReader(MeshReader): else: return None - + except Exception: Logger.logException("e", "Exception in X3D reader") return None return node - + # ------------------------- XML tree traversal - + def processNode(self, xml_node): xml_node = self.resolveDefUse(xml_node) if xml_node is None: return - + tag = xml_node.tag if tag in ("Group", "StaticGroup", "CADAssembly", "CADFace", "CADLayer", "Collision"): self.processChildNodes(xml_node) @@ -120,8 +120,8 @@ class X3DReader(MeshReader): self.processTransform(xml_node) elif tag == "Shape": self.processShape(xml_node) - - + + def processShape(self, xml_node): # Find the geometry and the appearance inside the Shape geometry = appearance = None @@ -130,21 +130,21 @@ class X3DReader(MeshReader): appearance = self.resolveDefUse(sub_node) elif sub_node.tag in self.geometry_importers and not geometry: geometry = self.resolveDefUse(sub_node) - - # TODO: appearance is completely ignored. At least apply the material color... + + # TODO: appearance is completely ignored. At least apply the material color... if not geometry is None: try: - self.verts = self.faces = [] # Safeguard + self.verts = self.faces = [] # Safeguard self.geometry_importers[geometry.tag](self, geometry) m = self.transform.getData() verts = m.dot(self.verts)[:3].transpose() - + self.shapes.append(Shape(verts, self.faces, self.index_base, geometry.tag)) self.index_base += len(verts) - + except Exception: Logger.logException("e", "Exception in X3D reader while reading %s", geometry.tag) - + # Returns the referenced node if the node has USE, the same node otherwise. # May return None is USE points at a nonexistent node # In X3DOM, when both DEF and USE are in the same node, DEF is ignored. @@ -155,36 +155,36 @@ class X3DReader(MeshReader): if USE: return self.defs.get(USE, None) - DEF = node.attrib.get("DEF") + DEF = node.attrib.get("DEF") if DEF: - self.defs[DEF] = node + self.defs[DEF] = node return node - + def processChildNodes(self, node): for c in node: self.processNode(c) Job.yieldThread() - + # Since this is a grouping node, will recurse down the tree. # According to the spec, the final transform matrix is: # T * C * R * SR * S * -SR * -C # Where SR corresponds to the rotation matrix to scaleOrientation - # C and SR are rather exotic. S, slightly less so. + # C and SR are rather exotic. S, slightly less so. def processTransform(self, node): rot = readRotation(node, "rotation", (0, 0, 1, 0)) # (angle, axisVactor) tuple trans = readVector(node, "translation", (0, 0, 0)) # Vector scale = readVector(node, "scale", (1, 1, 1)) # Vector center = readVector(node, "center", (0, 0, 0)) # Vector scale_orient = readRotation(node, "scaleOrientation", (0, 0, 1, 0)) # (angle, axisVactor) tuple - - # Store the previous transform; in Cura, the default matrix multiplication is in place + + # Store the previous transform; in Cura, the default matrix multiplication is in place prev = Matrix(self.transform.getData()) # It's deep copy, I've checked - + # The rest of transform manipulation will be applied in place got_center = (center.x != 0 or center.y != 0 or center.z != 0) - + T = self.transform - if trans.x != 0 or trans.y != 0 or trans.z !=0: + if trans.x != 0 or trans.y != 0 or trans.z != 0: T.translate(trans) if got_center: T.translate(center) @@ -202,13 +202,13 @@ class X3DReader(MeshReader): T.rotateByAxis(-scale_orient[0], scale_orient[1]) if got_center: T.translate(-center) - + self.processChildNodes(node) self.transform = prev - + # ------------------------- Geometry importers # They are supposed to fill the self.verts and self.faces arrays, the caller will do the rest - + # Primitives def processGeometryBox(self, node): @@ -228,14 +228,14 @@ class X3DReader(MeshReader): self.addVertex(-dx, -dy, dz) self.addVertex(-dx, -dy, -dz) self.addVertex(dx, -dy, -dz) - + self.addQuad(0, 1, 2, 3) # +y self.addQuad(4, 0, 3, 7) # +x self.addQuad(7, 3, 2, 6) # -z self.addQuad(6, 2, 1, 5) # -x self.addQuad(5, 1, 0, 4) # +z self.addQuad(7, 6, 5, 4) # -y - + # The sphere is subdivided into nr rings and ns segments def processGeometrySphere(self, node): r = readFloat(node, "radius", 0.5) @@ -247,16 +247,16 @@ class X3DReader(MeshReader): (nr, ns) = subdiv else: nr = ns = DEFAULT_SUBDIV - + lau = pi / nr # Unit angle of latitude (rings) for the given tesselation lou = 2 * pi / ns # Unit angle of longitude (segments) - + self.reserveFaceAndVertexCount(ns*(nr*2 - 2), 2 + (nr - 1)*ns) - + # +y and -y poles self.addVertex(0, r, 0) self.addVertex(0, -r, 0) - + # The non-polar vertices go from x=0, negative z plane counterclockwise - # to -x, to +z, to +x, back to -z for ring in range(1, nr): @@ -264,12 +264,12 @@ class X3DReader(MeshReader): self.addVertex(-r*sin(lou * seg) * sin(lau * ring), r*cos(lau * ring), -r*cos(lou * seg) * sin(lau * ring)) - + vb = 2 + (nr - 2) * ns # First vertex index for the bottom cap - + # Faces go in order: top cap, sides, bottom cap. # Sides go by ring then by segment. - + # Caps # Top cap face vertices go in order: down right up # (starting from +y pole) @@ -277,7 +277,7 @@ class X3DReader(MeshReader): for seg in range(ns): self.addTri(0, seg + 2, (seg + 1) % ns + 2) self.addTri(1, vb + (seg + 1) % ns, vb + seg) - + # Sides # Side face vertices go in order: down right upleft, downright up left for ring in range(nr - 2): @@ -288,24 +288,24 @@ class X3DReader(MeshReader): for seg in range(ns): nseg = (seg + 1) % ns self.addQuad(tvb + seg, bvb + seg, bvb + nseg, tvb + nseg) - + def processGeometryCone(self, node): r = readFloat(node, "bottomRadius", 1) height = readFloat(node, "height", 2) bottom = readBoolean(node, "bottom", True) side = readBoolean(node, "side", True) n = readInt(node, "subdivision", DEFAULT_SUBDIV) - + d = height / 2 angle = 2 * pi / n - + self.reserveFaceAndVertexCount((n if side else 0) + (n-2 if bottom else 0), n+1) - + # Vertex 0 is the apex, vertices 1..n are the bottom self.addVertex(0, d, 0) for i in range(n): self.addVertex(-r * sin(angle * i), -d, -r * cos(angle * i)) - + # Side face vertices go: up down right if side: for i in range(n): @@ -313,7 +313,7 @@ class X3DReader(MeshReader): if bottom: for i in range(2, n): self.addTri(1, i, i+1) - + def processGeometryCylinder(self, node): r = readFloat(node, "radius", 1) height = readFloat(node, "height", 2) @@ -321,13 +321,13 @@ class X3DReader(MeshReader): side = readBoolean(node, "side", True) top = readBoolean(node, "top", True) n = readInt(node, "subdivision", DEFAULT_SUBDIV) - + nn = n * 2 angle = 2 * pi / n hh = height/2 - + self.reserveFaceAndVertexCount((nn if side else 0) + (n - 2 if top else 0) + (n - 2 if bottom else 0), nn) - + # The seam is at x=0, z=-r, vertices go ccw - # to pos x, to neg z, to neg x, back to neg z for i in range(n): @@ -335,18 +335,18 @@ class X3DReader(MeshReader): rc = -r * cos(angle * i) self.addVertex(rs, hh, rc) self.addVertex(rs, -hh, rc) - + if side: for i in range(n): ni = (i + 1) % n self.addQuad(ni * 2 + 1, ni * 2, i * 2, i * 2 + 1) - + for i in range(2, nn-3, 2): if top: self.addTri(0, i, i+2) if bottom: self.addTri(1, i+1, i+3) - + # Semi-primitives def processGeometryElevationGrid(self, node): @@ -356,21 +356,21 @@ class X3DReader(MeshReader): nz = readInt(node, "zDimension", 0) height = readFloatArray(node, "height", False) ccw = readBoolean(node, "ccw", True) - + if nx <= 0 or nz <= 0 or len(height) < nx*nz: return # That's weird, the wording of the standard suggests grids with zero quads are somehow valid - + self.reserveFaceAndVertexCount(2*(nx-1)*(nz-1), nx*nz) - + for z in range(nz): for x in range(nx): self.addVertex(x * dx, height[z*nx + x], z * dz) - + for z in range(1, nz): for x in range(1, nx): self.addTriFlip((z - 1)*nx + x - 1, z*nx + x, (z - 1)*nx + x, ccw) self.addTriFlip((z - 1)*nx + x - 1, z*nx + x - 1, z*nx + x, ccw) - + def processGeometryExtrusion(self, node): ccw = readBoolean(node, "ccw", True) begin_cap = readBoolean(node, "beginCap", True) @@ -384,23 +384,23 @@ class X3DReader(MeshReader): # This converts X3D's axis/angle rotation to a 3x3 numpy matrix def toRotationMatrix(rot): (x, y, z) = rot[:3] - a = rot[3] + a = rot[3] s = sin(a) c = cos(a) t = 1-c return numpy.array(( (x * x * t + c, x * y * t - z*s, x * z * t + y * s), (x * y * t + z*s, y * y * t + c, y * z * t - x * s), - (x * z * t - y * s, y * z * t + x * s, z * z * t + c))) - + (x * z * t - y * s, y * z * t + x * s, z * z * t + c))) + orient = [toRotationMatrix(orient[i:i+4]) if orient[i+3] != 0 else None for i in range(0, len(orient), 4)] - + scale = readFloatArray(node, "scale", None) if scale: scale = [numpy.array(((scale[i], 0, 0), (0, 1, 0), (0, 0, scale[i+1]))) if scale[i] != 1 or scale[i+1] != 1 else None for i in range(0, len(scale), 2)] - - + + # Special treatment for the closed spine and cross section. # Let's save some memory by not creating identical but distinct vertices; # later we'll introduce conditional logic to link the last vertex with @@ -413,14 +413,14 @@ class X3DReader(MeshReader): ncf = nc if crossClosed else nc - 1 # Face count along the cross; for closed cross, it's the same as the # respective vertex count - + spine_closed = spine[0] == spine[-1] if spine_closed: spine = spine[:-1] ns = len(spine) spine = [Vector(*s) for s in spine] nsf = ns if spine_closed else ns - 1 - + # This will be used for fallback, where the current spine point joins # two collinear spine segments. No need to recheck the case of the # closed spine/last-to-first point juncture; if there's an angle there, @@ -442,7 +442,7 @@ class X3DReader(MeshReader): if v.cross(orig_y).length() > EPSILON: # Spine at angle with global y - rotate the z accordingly a = v.cross(orig_y) # Axis of rotation to get to the Z - (x, y, z) = a.normalized().getData() + (x, y, z) = a.normalized().getData() s = a.length()/v.length() c = sqrt(1-s*s) t = 1-c @@ -452,7 +452,7 @@ class X3DReader(MeshReader): (x * z * t + y * s, y * z * t - x * s, z * z * t + c))) orig_z = Vector(*m.dot(orig_z.getData())) return orig_z - + self.reserveFaceAndVertexCount(2*nsf*ncf + (nc - 2 if begin_cap else 0) + (nc - 2 if end_cap else 0), ns*nc) z = None @@ -482,151 +482,151 @@ class X3DReader(MeshReader): y = spt - sprev # If there's more than one point in the spine, z is already set. # One point in the spline is an error anyway. - + z = z.normalized() y = y.normalized() x = y.cross(z) # Already normalized m = numpy.array(((x.x, y.x, z.x), (x.y, y.y, z.y), (x.z, y.z, z.z))) - + # Columns are the unit vectors for the xz plane for the cross-section if orient: mrot = orient[i] if len(orient) > 1 else orient[0] if not mrot is None: m = m.dot(mrot) # Tested against X3DOM, the result matches, still not sure :( - + if scale: mscale = scale[i] if len(scale) > 1 else scale[0] if not mscale is None: m = m.dot(mscale) - + # First the cross-section 2-vector is scaled, # then rotated (which may make it a 3-vector), # then applied to the xz plane unit vectors - + sptv3 = numpy.array(spt.getData()[:3]) for cpt in cross: v = sptv3 + m.dot(cpt) self.addVertex(*v) - + if begin_cap: self.addFace([x for x in range(nc - 1, -1, -1)], ccw) - + # Order of edges in the face: forward along cross, forward along spine, # backward along cross, backward along spine, flipped if now ccw. # This order is assumed later in the texture coordinate assignment; # please don't change without syncing. - + for s in range(ns - 1): for c in range(ncf): self.addQuadFlip(s * nc + c, s * nc + (c + 1) % nc, (s + 1) * nc + (c + 1) % nc, (s + 1) * nc + c, ccw) - + if spine_closed: # The faces between the last and the first spine points b = (ns - 1) * nc for c in range(ncf): self.addQuadFlip(b + c, b + (c + 1) % nc, (c + 1) % nc, c, ccw) - + if end_cap: self.addFace([(ns - 1) * nc + x for x in range(0, nc)], ccw) - + # Triangle meshes # Helper for numerous nodes with a Coordinate subnode holding vertices # That all triangle meshes and IndexedFaceSet - # num_faces can be a function, in case the face count is a function of vertex count + # num_faces can be a function, in case the face count is a function of vertex count def startCoordMesh(self, node, num_faces): ccw = readBoolean(node, "ccw", True) self.readVertices(node) # This will allocate and fill the vertex array if hasattr(num_faces, "__call__"): num_faces = num_faces(self.getVertexCount()) self.reserveFaceCount(num_faces) - + return ccw - + def processGeometryIndexedTriangleSet(self, node): index = readIntArray(node, "index", []) num_faces = len(index) // 3 ccw = int(self.startCoordMesh(node, num_faces)) - + for i in range(0, num_faces*3, 3): self.addTri(index[i + 1 - ccw], index[i + ccw], index[i+2]) - + def processGeometryIndexedTriangleStripSet(self, node): strips = readIndex(node, "index") ccw = int(self.startCoordMesh(node, sum([len(strip) - 2 for strip in strips]))) - + for strip in strips: sccw = ccw # Running CCW value, reset for each strip for i in range(len(strip) - 2): self.addTri(strip[i + 1 - sccw], strip[i + sccw], strip[i+2]) sccw = 1 - sccw - + def processGeometryIndexedTriangleFanSet(self, node): fans = readIndex(node, "index") ccw = int(self.startCoordMesh(node, sum([len(fan) - 2 for fan in fans]))) - + for fan in fans: for i in range(1, len(fan) - 1): self.addTri(fan[0], fan[i + 1 - ccw], fan[i + ccw]) - + def processGeometryTriangleSet(self, node): ccw = int(self.startCoordMesh(node, lambda num_vert: num_vert // 3)) for i in range(0, self.getVertexCount(), 3): self.addTri(i + 1 - ccw, i + ccw, i+2) - + def processGeometryTriangleStripSet(self, node): strips = readIntArray(node, "stripCount", []) ccw = int(self.startCoordMesh(node, sum([n-2 for n in strips]))) - + vb = 0 for n in strips: sccw = ccw - for i in range(n-2): + for i in range(n-2): self.addTri(vb + i + 1 - sccw, vb + i + sccw, vb + i + 2) sccw = 1 - sccw vb += n - + def processGeometryTriangleFanSet(self, node): fans = readIntArray(node, "fanCount", []) ccw = int(self.startCoordMesh(node, sum([n-2 for n in fans]))) - + vb = 0 for n in fans: - for i in range(1, n-1): + for i in range(1, n-1): self.addTri(vb, vb + i + 1 - ccw, vb + i + ccw) vb += n - + # Quad geometries from the CAD module, might be relevant for printing - + def processGeometryQuadSet(self, node): ccw = self.startCoordMesh(node, lambda num_vert: 2*(num_vert // 4)) for i in range(0, self.getVertexCount(), 4): self.addQuadFlip(i, i+1, i+2, i+3, ccw) - + def processGeometryIndexedQuadSet(self, node): index = readIntArray(node, "index", []) num_quads = len(index) // 4 ccw = self.startCoordMesh(node, num_quads*2) - + for i in range(0, num_quads*4, 4): self.addQuadFlip(index[i], index[i+1], index[i+2], index[i+3], ccw) - + # 2D polygon geometries # Won't work for now, since Cura expects every mesh to have a nontrivial convex hull # The only way around that is merging meshes. - + def processGeometryDisk2D(self, node): innerRadius = readFloat(node, "innerRadius", 0) outerRadius = readFloat(node, "outerRadius", 1) n = readInt(node, "subdivision", DEFAULT_SUBDIV) - + angle = 2 * pi / n - + self.reserveFaceAndVertexCount(n*4 if innerRadius else n-2, n*2 if innerRadius else n) - + for i in range(n): s = sin(angle * i) c = cos(angle * i) @@ -635,11 +635,11 @@ class X3DReader(MeshReader): self.addVertex(innerRadius*c, innerRadius*s, 0) ni = (i+1) % n self.addQuad(2*i, 2*ni, 2*ni+1, 2*i+1) - + if not innerRadius: for i in range(2, n): self.addTri(0, i-1, i) - + def processGeometryRectangle2D(self, node): (x, y) = readFloatArray(node, "size", (2, 2)) self.reserveFaceAndVertexCount(2, 4) @@ -648,7 +648,7 @@ class X3DReader(MeshReader): self.addVertex(x/2, y/2, 0) self.addVertex(-x/2, y/2, 0) self.addQuad(0, 1, 2, 3) - + def processGeometryTriangleSet2D(self, node): verts = readFloatArray(node, "vertices", ()) num_faces = len(verts) // 6; @@ -656,25 +656,25 @@ class X3DReader(MeshReader): self.reserveFaceAndVertexCount(num_faces, num_faces * 3) for vert in verts: self.addVertex(*vert) - + # The front face is on the +Z side, so CCW is a variable for i in range(0, num_faces*3, 3): a = Vector(*verts[i+2]) - Vector(*verts[i]) b = Vector(*verts[i+1]) - Vector(*verts[i]) self.addTriFlip(i, i+1, i+2, a.x*b.y > a.y*b.x) - + # General purpose polygon mesh def processGeometryIndexedFaceSet(self, node): faces = readIndex(node, "coordIndex") ccw = self.startCoordMesh(node, sum([len(face) - 2 for face in faces])) - + for face in faces: if len(face) == 3: self.addTriFlip(face[0], face[1], face[2], ccw) elif len(face) > 3: self.addFace(face, ccw) - + geometry_importers = { "IndexedFaceSet": processGeometryIndexedFaceSet, "IndexedTriangleSet": processGeometryIndexedTriangleSet, @@ -695,7 +695,7 @@ class X3DReader(MeshReader): "Cylinder": processGeometryCylinder, "Cone": processGeometryCone } - + # Parses the Coordinate.@point field, fills the verts array. def readVertices(self, node): for c in node: @@ -704,9 +704,9 @@ class X3DReader(MeshReader): if not c is None: pt = c.attrib.get("point") if pt: - # allow the list of float values in 'point' attribute to - # be separated by commas or whitespace as per spec of - # XML encoding of X3D + # allow the list of float values in 'point' attribute to + # be separated by commas or whitespace as per spec of + # XML encoding of X3D # Ref ISO/IEC 19776-1:2015 : Section 5.1.2 co = [float(x) for vec in pt.split(',') for x in vec.split()] num_verts = len(co) // 3 @@ -715,57 +715,57 @@ class X3DReader(MeshReader): # Group by three for i in range(num_verts): self.verts[:3,i] = co[3*i:3*i+3] - + # Mesh builder helpers - + def reserveFaceAndVertexCount(self, num_faces, num_verts): # Unlike the Cura MeshBuilder, we use 4-vectors stored as columns for easier transform self.verts = numpy.zeros((4, num_verts), dtype=numpy.float32) self.verts[3,:] = numpy.ones((num_verts), dtype=numpy.float32) self.num_verts = 0 self.reserveFaceCount(num_faces) - + def reserveFaceCount(self, num_faces): self.faces = numpy.zeros((num_faces, 3), dtype=numpy.int32) self.num_faces = 0 - + def getVertexCount(self): return self.verts.shape[1] - + def addVertex(self, x, y, z): self.verts[0, self.num_verts] = x self.verts[1, self.num_verts] = y self.verts[2, self.num_verts] = z self.num_verts += 1 - + # Indices are 0-based for this shape, but they won't be zero-based in the merged mesh def addTri(self, a, b, c): self.faces[self.num_faces, 0] = self.index_base + a self.faces[self.num_faces, 1] = self.index_base + b self.faces[self.num_faces, 2] = self.index_base + c self.num_faces += 1 - + def addTriFlip(self, a, b, c, ccw): if ccw: self.addTri(a, b, c) else: self.addTri(b, a, c) - + # Needs to be convex, but not necessaily planar # Assumed ccw, cut along the ac diagonal def addQuad(self, a, b, c, d): self.addTri(a, b, c) self.addTri(c, d, a) - + def addQuadFlip(self, a, b, c, d, ccw): if ccw: self.addTri(a, b, c) self.addTri(c, d, a) else: self.addTri(a, c, b) - self.addTri(c, a, d) - - + self.addTri(c, a, d) + + # Arbitrary polygon triangulation. # Doesn't assume convexity and doesn't check the "convex" flag in the file. # Works by the "cutting of ears" algorithm: @@ -776,13 +776,13 @@ class X3DReader(MeshReader): def addFace(self, indices, ccw): # Resolve indices to coordinates for faster math face = [Vector(data=self.verts[0:3, i]) for i in indices] - + # Need a normal to the plane so that we can know which vertices form inner angles normal = findOuterNormal(face) - + if not normal: # Couldn't find an outer edge, non-planar polygon maybe? return - + # Find the vertex with the smallest inner angle and no points inside, cut off. Repeat until done n = len(face) vi = [i for i in range(n)] # We'll be using this to kick vertices from the face @@ -807,17 +807,17 @@ class X3DReader(MeshReader): if pointInsideTriangle(vx, next, prev, nextXprev): no_points_inside = False break - + if no_points_inside: max_cos = cos i_min = i - + self.addTriFlip(indices[vi[(i_min + n - 1) % n]], indices[vi[i_min]], indices[vi[(i_min + 1) % n]], ccw) vi.pop(i_min) n -= 1 self.addTriFlip(indices[vi[0]], indices[vi[1]], indices[vi[2]], ccw) - + # ------------------------------------------------------------ # X3D field parsers # ------------------------------------------------------------ @@ -844,7 +844,7 @@ def readInt(node, attr, default): if not s: return default return int(s, 0) - + def readBoolean(node, attr, default): s = node.attrib.get(attr) if not s: @@ -873,8 +873,8 @@ def readIndex(node, attr): chunk.append(v[i]) if chunk: chunks.append(chunk) - return chunks - + return chunks + # Given a face as a sequence of vectors, returns a normal to the polygon place that forms a right triple # with a vector along the polygon sequence and a vector backwards def findOuterNormal(face): @@ -894,25 +894,25 @@ def findOuterNormal(face): if rejection.dot(prev_rejection) < -EPSILON: # points on both sides of the edge - not an outer one is_outer = False break - elif rejection.length() > prev_rejection.length(): # Pick a greater rejection for numeric stability + elif rejection.length() > prev_rejection.length(): # Pick a greater rejection for numeric stability prev_rejection = rejection - + if is_outer: # Found an outer edge, prev_rejection is the rejection inside the face. Generate a normal. return edge.cross(prev_rejection) return False -# Given two *collinear* vectors a and b, returns the coefficient that takes b to a. +# Given two *collinear* vectors a and b, returns the coefficient that takes b to a. # No error handling. -# For stability, taking the ration between the biggest coordinates would be better... +# For stability, taking the ration between the biggest coordinates would be better... def ratio(a, b): if b.x > EPSILON or b.x < -EPSILON: return a.x / b.x elif b.y > EPSILON or b.y < -EPSILON: return a.y / b.y else: - return a.z / b.z - + return a.z / b.z + def pointInsideTriangle(vx, next, prev, nextXprev): vxXprev = vx.cross(prev) r = ratio(vxXprev, nextXprev) @@ -921,4 +921,4 @@ def pointInsideTriangle(vx, next, prev, nextXprev): vxXnext = vx.cross(next); s = -ratio(vxXnext, nextXprev) return s > 0 and (s + r) < 1 - + diff --git a/plugins/XRayView/XRayView.py b/plugins/XRayView/XRayView.py index ed8d14b8b4..0c4035c62d 100644 --- a/plugins/XRayView/XRayView.py +++ b/plugins/XRayView/XRayView.py @@ -2,10 +2,13 @@ # Cura is released under the terms of the LGPLv3 or higher. import os.path +from PyQt5.QtGui import QOpenGLContext from UM.Application import Application +from UM.Logger import Logger from UM.Math.Color import Color from UM.PluginRegistry import PluginRegistry +from UM.Platform import Platform from UM.Event import Event from UM.View.View import View from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator @@ -13,6 +16,8 @@ from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator from UM.View.RenderBatch import RenderBatch from UM.View.GL.OpenGL import OpenGL +from cura.CuraApplication import CuraApplication + from . import XRayPass ## View used to display a see-through version of objects with errors highlighted. @@ -52,11 +57,29 @@ class XRayView(View): def event(self, event): if event.type == Event.ViewActivateEvent: + # FIX: on Max OS X, somehow QOpenGLContext.currentContext() can become None during View switching. + # This can happen when you do the following steps: + # 1. Start Cura + # 2. Load a model + # 3. Switch to Custom mode + # 4. Select the model and click on the per-object tool icon + # 5. Switch view to Layer view or X-Ray + # 6. Cura will very likely crash + # It seems to be a timing issue that the currentContext can somehow be empty, but I have no clue why. + # This fix tries to reschedule the view changing event call on the Qt thread again if the current OpenGL + # context is None. + if Platform.isOSX(): + if QOpenGLContext.currentContext() is None: + Logger.log("d", "current context of OpenGL is empty on Mac OS X, will try to create shaders later") + CuraApplication.getInstance().callLater(lambda e = event: self.event(e)) + return + if not self._xray_pass: # Currently the RenderPass constructor requires a size > 0 # This should be fixed in RenderPass's constructor. self._xray_pass = XRayPass.XRayPass(1, 1) - self.getRenderer().addRenderPass(self._xray_pass) + + self.getRenderer().addRenderPass(self._xray_pass) if not self._xray_composite_shader: self._xray_composite_shader = OpenGL.getInstance().createShaderProgram(os.path.join(PluginRegistry.getInstance().getPluginPath("XRayView"), "xray_composite.shader")) @@ -74,5 +97,6 @@ class XRayView(View): self._composite_pass.setCompositeShader(self._xray_composite_shader) if event.type == Event.ViewDeactivateEvent: + self.getRenderer().removeRenderPass(self._xray_pass) self._composite_pass.setLayerBindings(self._old_layer_bindings) self._composite_pass.setCompositeShader(self._old_composite_shader) diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index 86f3c87bb5..125fe1e344 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -3,7 +3,10 @@ import copy import io -from typing import List, Optional +import json #To parse the product-to-id mapping file. +import os.path #To find the product-to-id mapping. +import sys +from typing import Any, Dict, List, Optional import xml.etree.ElementTree as ET from UM.Resources import Resources @@ -14,7 +17,6 @@ import UM.Dictionary from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.ContainerRegistry import ContainerRegistry - ## Handles serializing and deserializing material containers from an XML file class XmlMaterialProfile(InstanceContainer): CurrentFdmMaterialVersion = "1.3" @@ -33,33 +35,27 @@ class XmlMaterialProfile(InstanceContainer): # # \param xml_version: The version number found in an XML file. # \return The corresponding setting_version. - def xmlVersionToSettingVersion(self, xml_version: str) -> int: + @classmethod + def xmlVersionToSettingVersion(cls, xml_version: str) -> int: if xml_version == "1.3": - return 3 + return CuraApplication.SettingVersion return 0 #Older than 1.3. def getInheritedFiles(self): return self._inherited_files - ## Overridden from InstanceContainer - def setReadOnly(self, read_only): - super().setReadOnly(read_only) - - basefile = self.getMetaDataEntry("base_file", self._id) # if basefile is self.id, this is a basefile. - for container in ContainerRegistry.getInstance().findInstanceContainers(base_file = basefile): - container._read_only = read_only # prevent loop instead of calling setReadOnly - ## Overridden from InstanceContainer # set the meta data for all machine / variant combinations def setMetaDataEntry(self, key, value): - if self.isReadOnly(): + registry = ContainerRegistry.getInstance() + if registry.isReadOnly(self.getId()): return super().setMetaDataEntry(key, value) - basefile = self.getMetaDataEntry("base_file", self._id) #if basefile is self.id, this is a basefile. + basefile = self.getMetaDataEntry("base_file", self.getId()) #if basefile is self.getId, this is a basefile. # Update all containers that share basefile - for container in ContainerRegistry.getInstance().findInstanceContainers(base_file = basefile): + for container in registry.findInstanceContainers(base_file = basefile): if container.getMetaDataEntry(key, None) != value: # Prevent recursion container.setMetaDataEntry(key, value) @@ -67,7 +63,8 @@ class XmlMaterialProfile(InstanceContainer): # without this function the setName would only set the name of the specific nozzle / material / machine combination container # The function is a bit tricky. It will not set the name of all containers if it has the correct name itself. def setName(self, new_name): - if self.isReadOnly(): + registry = ContainerRegistry.getInstance() + if registry.isReadOnly(self.getId()): return # Not only is this faster, it also prevents a major loop that causes a stack overflow. @@ -76,10 +73,10 @@ class XmlMaterialProfile(InstanceContainer): super().setName(new_name) - basefile = self.getMetaDataEntry("base_file", self._id) # if basefile is self.id, this is a basefile. + basefile = self.getMetaDataEntry("base_file", self.getId()) # if basefile is self.getId, this is a basefile. # Update the basefile as well, this is actually what we're trying to do # Update all containers that share GUID and basefile - containers = ContainerRegistry.getInstance().findInstanceContainers(base_file = basefile) + containers = registry.findInstanceContainers(base_file = basefile) for container in containers: container.setName(new_name) @@ -87,33 +84,20 @@ class XmlMaterialProfile(InstanceContainer): def setDirty(self, dirty): super().setDirty(dirty) base_file = self.getMetaDataEntry("base_file", None) - if base_file is not None and base_file != self._id: - containers = ContainerRegistry.getInstance().findContainers(id=base_file) + registry = ContainerRegistry.getInstance() + if base_file is not None and base_file != self.getId() and not registry.isReadOnly(base_file): + containers = registry.findContainers(id = base_file) if containers: - base_container = containers[0] - if not base_container.isReadOnly(): - base_container.setDirty(dirty) - - ## Overridden from InstanceContainer - # def setProperty(self, key, property_name, property_value, container = None): - # if self.isReadOnly(): - # return - # - # super().setProperty(key, property_name, property_value) - # - # basefile = self.getMetaDataEntry("base_file", self._id) #if basefile is self.id, this is a basefile. - # for container in UM.Settings.ContainerRegistry.ContainerRegistry.getInstance().findInstanceContainers(base_file = basefile): - # if not container.isReadOnly(): - # container.setDirty(True) + containers[0].setDirty(dirty) ## Overridden from InstanceContainer # base file: common settings + supported machines # machine / variant combination: only changes for itself. - def serialize(self, ignored_metadata_keys: Optional[List] = None): + def serialize(self, ignored_metadata_keys: Optional[set] = None): registry = ContainerRegistry.getInstance() base_file = self.getMetaDataEntry("base_file", "") - if base_file and self.id != base_file: + if base_file and self.getId() != base_file: # Since we create an instance of XmlMaterialProfile for each machine and nozzle in the profile, # we should only serialize the "base" material definition, since that can then take care of # serializing the machine/nozzle specific profiles. @@ -131,8 +115,8 @@ class XmlMaterialProfile(InstanceContainer): metadata = copy.deepcopy(self.getMetaData()) # setting_version is derived from the "version" tag in the schema, so don't serialize it into a file if ignored_metadata_keys is None: - ignored_metadata_keys = [] - ignored_metadata_keys = ignored_metadata_keys + ["setting_version"] + ignored_metadata_keys = set() + ignored_metadata_keys |= {"setting_version"} # remove the keys that we want to ignore in the metadata for key in ignored_metadata_keys: if key in metadata: @@ -145,6 +129,9 @@ class XmlMaterialProfile(InstanceContainer): metadata.pop("type", "") metadata.pop("base_file", "") metadata.pop("approximate_diameter", "") + metadata.pop("id", "") + metadata.pop("container_type", "") + metadata.pop("name", "") ## Begin Name Block builder.start("name") @@ -162,7 +149,7 @@ class XmlMaterialProfile(InstanceContainer): builder.end("color") builder.start("label") - builder.data(self._name) + builder.data(self.getName()) builder.end("label") builder.end("name") @@ -194,16 +181,16 @@ class XmlMaterialProfile(InstanceContainer): ## Begin Settings Block builder.start("settings") - if self.getDefinition().id == "fdmprinter": + if self.getDefinition().getId() == "fdmprinter": for instance in self.findInstances(): self._addSettingElement(builder, instance) machine_container_map = {} machine_nozzle_map = {} - all_containers = registry.findInstanceContainers(GUID = self.getMetaDataEntry("GUID"), base_file = self._id) + all_containers = registry.findInstanceContainers(GUID = self.getMetaDataEntry("GUID"), base_file = self.getId()) for container in all_containers: - definition_id = container.getDefinition().id + definition_id = container.getDefinition().getId() if definition_id == "fdmprinter": continue @@ -221,17 +208,16 @@ class XmlMaterialProfile(InstanceContainer): machine_container_map[definition_id] = container # Map machine human-readable names to IDs - product_id_map = {} - for container in registry.findDefinitionContainers(type = "machine"): - product_id_map[container.getName()] = container.getId() + product_id_map = self.getProductIdMap() for definition_id, container in machine_container_map.items(): definition = container.getDefinition() - try: - product = UM.Dictionary.findKey(product_id_map, definition_id) - except ValueError: - # An unknown product id; export it anyway - product = definition_id + + product = definition_id + for product_name, product_id_list in product_id_map.items(): + if definition_id in product_id_list: + product = product_name + break builder.start("machine") builder.start("machine_identifier", { @@ -241,7 +227,7 @@ class XmlMaterialProfile(InstanceContainer): builder.end("machine_identifier") for instance in container.findInstances(): - if self.getDefinition().id == "fdmprinter" and self.getInstance(instance.definition.key) and self.getProperty(instance.definition.key, "value") == instance.value: + if self.getDefinition().getId() == "fdmprinter" and self.getInstance(instance.definition.key) and self.getProperty(instance.definition.key, "value") == instance.value: # If the settings match that of the base profile, just skip since we inherit the base profile. continue @@ -249,11 +235,12 @@ class XmlMaterialProfile(InstanceContainer): # Find all hotend sub-profiles corresponding to this material and machine and add them to this profile. for hotend_id, hotend in machine_nozzle_map[definition_id].items(): - variant_containers = registry.findInstanceContainers(id = hotend.getMetaDataEntry("variant")) + variant_containers = registry.findInstanceContainersMetadata(id = hotend.getMetaDataEntry("variant")) if not variant_containers: continue - builder.start("hotend", {"id": variant_containers[0].getName()}) + # The hotend identifier is not the containers name, but its "name". + builder.start("hotend", {"id": variant_containers[0]["name"]}) # Compatible is a special case, as it's added as a meta data entry (instead of an instance). compatible = hotend.getMetaDataEntry("compatible") @@ -396,48 +383,55 @@ class XmlMaterialProfile(InstanceContainer): first.append(element) def clearData(self): - self._metadata = {} - self._name = "" + self._metadata = { + "id": self.getId(), + "name": "" + } self._definition = None self._instances = {} self._read_only = False self._dirty = False self._path = "" - def getConfigurationTypeFromSerialized(self, serialized: str) -> Optional[str]: + @classmethod + def getConfigurationTypeFromSerialized(cls, serialized: str) -> Optional[str]: return "materials" - def getVersionFromSerialized(self, serialized: str) -> Optional[int]: + @classmethod + def getVersionFromSerialized(cls, serialized: str) -> Optional[int]: data = ET.fromstring(serialized) - version = 1 + version = XmlMaterialProfile.Version # get setting version if "version" in data.attrib: - setting_version = self.xmlVersionToSettingVersion(data.attrib["version"]) + setting_version = cls.xmlVersionToSettingVersion(data.attrib["version"]) else: - setting_version = self.xmlVersionToSettingVersion("1.2") + setting_version = cls.xmlVersionToSettingVersion("1.2") return version * 1000000 + setting_version ## Overridden from InstanceContainer - def deserialize(self, serialized): + def deserialize(self, serialized, file_name = None): containers_to_add = [] # update the serialized data first from UM.Settings.Interfaces import ContainerInterface - serialized = ContainerInterface.deserialize(self, serialized) + serialized = ContainerInterface.deserialize(self, serialized, file_name) try: data = ET.fromstring(serialized) except: - Logger.logException("e", "An exception occured while parsing the material profile") + Logger.logException("e", "An exception occurred while parsing the material profile") return # Reset previous metadata + old_id = self.getId() self.clearData() # Ensure any previous data is gone. meta_data = {} meta_data["type"] = "material" - meta_data["base_file"] = self.id + meta_data["base_file"] = self.getId() meta_data["status"] = "unknown" # TODO: Add material verification + meta_data["id"] = old_id + meta_data["container_type"] = XmlMaterialProfile common_setting_values = {} @@ -452,8 +446,8 @@ class XmlMaterialProfile(InstanceContainer): else: meta_data["setting_version"] = self.xmlVersionToSettingVersion("1.2") #1.2 and lower didn't have that version number there yet. - metadata = data.iterfind("./um:metadata/*", self.__namespaces) - for entry in metadata: + meta_data["name"] = "Unknown Material" #In case the name tag is missing. + for entry in data.iterfind("./um:metadata/*", self.__namespaces): tag_name = _tag_without_namespace(entry) if tag_name == "name": @@ -463,9 +457,9 @@ class XmlMaterialProfile(InstanceContainer): label = entry.find("./um:label", self.__namespaces) if label is not None: - self._name = label.text + meta_data["name"] = label.text else: - self._name = self._profile_name(material.text, color.text) + meta_data["name"] = self._profile_name(material.text, color.text) meta_data["brand"] = brand.text meta_data["material"] = material.text meta_data["color_name"] = color.text @@ -497,8 +491,7 @@ class XmlMaterialProfile(InstanceContainer): meta_data["approximate_diameter"] = str(round(float(property_values.get("diameter", 2.85)))) # In mm meta_data["properties"] = property_values - - self.setDefinition(ContainerRegistry.getInstance().findDefinitionContainers(id = "fdmprinter")[0]) + meta_data["definition"] = "fdmprinter" common_compatibility = True settings = data.iterfind("./um:settings/um:setting", self.__namespaces) @@ -516,9 +509,7 @@ class XmlMaterialProfile(InstanceContainer): self._dirty = False # Map machine human-readable names to IDs - product_id_map = {} - for container in ContainerRegistry.getInstance().findDefinitionContainers(type = "machine"): - product_id_map[container.getName()] = container.getId() + product_id_map = self.getProductIdMap() machines = data.iterfind("./um:settings/um:machine", self.__namespaces) for machine in machines: @@ -540,112 +531,284 @@ class XmlMaterialProfile(InstanceContainer): identifiers = machine.iterfind("./um:machine_identifier", self.__namespaces) for identifier in identifiers: - machine_id = product_id_map.get(identifier.get("product"), None) - if machine_id is None: - # Lets try again with some naive heuristics. - machine_id = identifier.get("product").replace(" ", "").lower() + machine_id_list = product_id_map.get(identifier.get("product"), []) + if not machine_id_list: + machine_id_list = self.getPossibleDefinitionIDsFromName(identifier.get("product")) - definitions = ContainerRegistry.getInstance().findDefinitionContainers(id = machine_id) - if not definitions: - Logger.log("w", "No definition found for machine ID %s", machine_id) - continue - - definition = definitions[0] - - machine_manufacturer = identifier.get("manufacturer", definition.getMetaDataEntry("manufacturer", "Unknown")) #If the XML material doesn't specify a manufacturer, use the one in the actual printer definition. - - if machine_compatibility: - new_material_id = self.id + "_" + machine_id - - # The child or derived material container may already exist. This can happen when a material in a - # project file and the a material in Cura have the same ID. - # In the case if a derived material already exists, override that material container because if - # the data in the parent material has been changed, the derived ones should be updated too. - found_materials = ContainerRegistry.getInstance().findInstanceContainers(id = new_material_id) - is_new_material = False - if found_materials: - new_material = found_materials[0] - else: - new_material = XmlMaterialProfile(new_material_id) - is_new_material = True - - # Update the private directly, as we want to prevent the lookup that is done when using setName - new_material._name = self.getName() - new_material.setMetaData(copy.deepcopy(self.getMetaData())) - new_material.setDefinition(definition) - # Don't use setMetadata, as that overrides it for all materials with same base file - new_material.getMetaData()["compatible"] = machine_compatibility - new_material.getMetaData()["machine_manufacturer"] = machine_manufacturer - - new_material.setCachedValues(cached_machine_setting_properties) - - new_material._dirty = False - - if is_new_material: - containers_to_add.append(new_material) - - hotends = machine.iterfind("./um:hotend", self.__namespaces) - for hotend in hotends: - hotend_id = hotend.get("id") - if hotend_id is None: + for machine_id in machine_id_list: + definitions = ContainerRegistry.getInstance().findDefinitionContainersMetadata(id = machine_id) + if not definitions: + Logger.log("w", "No definition found for machine ID %s", machine_id) continue - variant_containers = ContainerRegistry.getInstance().findInstanceContainers(id = hotend_id) - if not variant_containers: - # It is not really properly defined what "ID" is so also search for variants by name. - variant_containers = ContainerRegistry.getInstance().findInstanceContainers(definition = definition.id, name = hotend_id) + Logger.log("d", "Found definition for machine ID %s", machine_id) + definition = definitions[0] - if not variant_containers: - #Logger.log("d", "No variants found with ID or name %s for machine %s", hotend_id, definition.id) - continue + machine_manufacturer = identifier.get("manufacturer", definition.get("manufacturer", "Unknown")) #If the XML material doesn't specify a manufacturer, use the one in the actual printer definition. - hotend_compatibility = machine_compatibility - hotend_setting_values = {} - settings = hotend.iterfind("./um:setting", self.__namespaces) - for entry in settings: - key = entry.get("key") - if key in self.__material_settings_setting_map: - hotend_setting_values[self.__material_settings_setting_map[key]] = entry.text - elif key in self.__unmapped_settings: - if key == "hardware compatible": - hotend_compatibility = self._parseCompatibleValue(entry.text) + if machine_compatibility: + new_material_id = self.getId() + "_" + machine_id + + # The child or derived material container may already exist. This can happen when a material in a + # project file and the a material in Cura have the same ID. + # In the case if a derived material already exists, override that material container because if + # the data in the parent material has been changed, the derived ones should be updated too. + if ContainerRegistry.getInstance().isLoaded(new_material_id): + new_material = ContainerRegistry.getInstance().findContainers(id = new_material_id)[0] + is_new_material = False else: - Logger.log("d", "Unsupported material setting %s", key) + new_material = XmlMaterialProfile(new_material_id) + is_new_material = True - new_hotend_id = self.id + "_" + machine_id + "_" + hotend_id.replace(" ", "_") + new_material.setMetaData(copy.deepcopy(self.getMetaData())) + new_material.getMetaData()["id"] = new_material_id + new_material.getMetaData()["name"] = self.getName() + new_material.setDefinition(machine_id) + # Don't use setMetadata, as that overrides it for all materials with same base file + new_material.getMetaData()["compatible"] = machine_compatibility + new_material.getMetaData()["machine_manufacturer"] = machine_manufacturer + new_material.getMetaData()["definition"] = machine_id - # Same as machine compatibility, keep the derived material containers consistent with the parent - # material - found_materials = ContainerRegistry.getInstance().findInstanceContainers(id = new_hotend_id) - is_new_material = False - if found_materials: - new_hotend_material = found_materials[0] - else: - new_hotend_material = XmlMaterialProfile(new_hotend_id) - is_new_material = True + new_material.setCachedValues(cached_machine_setting_properties) - # Update the private directly, as we want to prevent the lookup that is done when using setName - new_hotend_material._name = self.getName() - new_hotend_material.setMetaData(copy.deepcopy(self.getMetaData())) - new_hotend_material.setDefinition(definition) - new_hotend_material.addMetaDataEntry("variant", variant_containers[0].id) - # Don't use setMetadata, as that overrides it for all materials with same base file - new_hotend_material.getMetaData()["compatible"] = hotend_compatibility - new_hotend_material.getMetaData()["machine_manufacturer"] = machine_manufacturer + new_material._dirty = False - cached_hotend_setting_properties = cached_machine_setting_properties.copy() - cached_hotend_setting_properties.update(hotend_setting_values) + if is_new_material: + containers_to_add.append(new_material) - new_hotend_material.setCachedValues(cached_hotend_setting_properties) + hotends = machine.iterfind("./um:hotend", self.__namespaces) + for hotend in hotends: + hotend_id = hotend.get("id") + if hotend_id is None: + continue - new_hotend_material._dirty = False + variant_containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(id = hotend_id) + if not variant_containers: + # It is not really properly defined what "ID" is so also search for variants by name. + variant_containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(definition = machine_id, name = hotend_id) - if is_new_material: - containers_to_add.append(new_hotend_material) + if not variant_containers: + continue + + hotend_compatibility = machine_compatibility + hotend_setting_values = {} + settings = hotend.iterfind("./um:setting", self.__namespaces) + for entry in settings: + key = entry.get("key") + if key in self.__material_settings_setting_map: + hotend_setting_values[self.__material_settings_setting_map[key]] = entry.text + elif key in self.__unmapped_settings: + if key == "hardware compatible": + hotend_compatibility = self._parseCompatibleValue(entry.text) + else: + Logger.log("d", "Unsupported material setting %s", key) + + new_hotend_id = self.getId() + "_" + machine_id + "_" + hotend_id.replace(" ", "_") + + # Same as machine compatibility, keep the derived material containers consistent with the parent + # material + if ContainerRegistry.getInstance().isLoaded(new_hotend_id): + new_hotend_material = ContainerRegistry.getInstance().findContainers(id = new_hotend_id)[0] + is_new_material = False + else: + new_hotend_material = XmlMaterialProfile(new_hotend_id) + is_new_material = True + + new_hotend_material.setMetaData(copy.deepcopy(self.getMetaData())) + new_hotend_material.getMetaData()["id"] = new_hotend_id + new_hotend_material.getMetaData()["name"] = self.getName() + new_hotend_material.getMetaData()["variant"] = variant_containers[0]["id"] + new_hotend_material.setDefinition(machine_id) + # Don't use setMetadata, as that overrides it for all materials with same base file + new_hotend_material.getMetaData()["compatible"] = hotend_compatibility + new_hotend_material.getMetaData()["machine_manufacturer"] = machine_manufacturer + new_hotend_material.getMetaData()["definition"] = machine_id + + cached_hotend_setting_properties = cached_machine_setting_properties.copy() + cached_hotend_setting_properties.update(hotend_setting_values) + + new_hotend_material.setCachedValues(cached_hotend_setting_properties) + + new_hotend_material._dirty = False + + if is_new_material: + containers_to_add.append(new_hotend_material) + + # there is only one ID for a machine. Once we have reached here, it means we have already found + # a workable ID for that machine, so there is no need to continue + break for container_to_add in containers_to_add: ContainerRegistry.getInstance().addContainer(container_to_add) + @classmethod + def deserializeMetadata(cls, serialized: str, container_id: str) -> List[Dict[str, Any]]: + result_metadata = [] #All the metadata that we found except the base (because the base is returned). + + #Update the serialized data to the latest version. + serialized = cls._updateSerialized(serialized) + + base_metadata = { + "type": "material", + "status": "unknown", #TODO: Add material verification. + "container_type": XmlMaterialProfile, + "id": container_id, + "base_file": container_id + } + + try: + data = ET.fromstring(serialized) + except: + Logger.logException("e", "An exception occurred while parsing the material profile") + return [] + + #TODO: Implement the tag. It's unused at the moment though. + + if "version" in data.attrib: + base_metadata["setting_version"] = cls.xmlVersionToSettingVersion(data.attrib["version"]) + else: + base_metadata["setting_version"] = cls.xmlVersionToSettingVersion("1.2") #1.2 and lower didn't have that version number there yet. + + for entry in data.iterfind("./um:metadata/*", cls.__namespaces): + tag_name = _tag_without_namespace(entry) + + if tag_name == "name": + brand = entry.find("./um:brand", cls.__namespaces) + material = entry.find("./um:material", cls.__namespaces) + color = entry.find("./um:color", cls.__namespaces) + label = entry.find("./um:label", cls.__namespaces) + + if label is not None: + base_metadata["name"] = label.text + else: + base_metadata["name"] = cls._profile_name(material.text, color.text) + base_metadata["brand"] = brand.text + base_metadata["material"] = material.text + base_metadata["color_name"] = color.text + continue + + #Setting_version is derived from the "version" tag in the schema earlier, so don't set it here. + if tag_name == "setting_version": + continue + + base_metadata[tag_name] = entry.text + + if "description" not in base_metadata: + base_metadata["description"] = "" + if "adhesion_info" not in base_metadata: + base_metadata["adhesion_info"] = "" + + property_values = {} + properties = data.iterfind("./um:properties/*", cls.__namespaces) + for entry in properties: + tag_name = _tag_without_namespace(entry) + property_values[tag_name] = entry.text + + base_metadata["approximate_diameter"] = str(round(float(property_values.get("diameter", 2.85)))) # In mm + base_metadata["properties"] = property_values + base_metadata["definition"] = "fdmprinter" + + compatible_entries = data.iterfind("./um:settings/um:setting[@key='hardware compatible']", cls.__namespaces) + try: + common_compatibility = cls._parseCompatibleValue(next(compatible_entries).text) + except StopIteration: #No 'hardware compatible' setting. + common_compatibility = True + base_metadata["compatible"] = common_compatibility + result_metadata.append(base_metadata) + + # Map machine human-readable names to IDs + product_id_map = cls.getProductIdMap() + + for machine in data.iterfind("./um:settings/um:machine", cls.__namespaces): + machine_compatibility = common_compatibility + for entry in machine.iterfind("./um:setting", cls.__namespaces): + key = entry.get("key") + if key == "hardware compatible": + machine_compatibility = cls._parseCompatibleValue(entry.text) + + for identifier in machine.iterfind("./um:machine_identifier", cls.__namespaces): + machine_id_list = product_id_map.get(identifier.get("product"), []) + if not machine_id_list: + machine_id_list = cls.getPossibleDefinitionIDsFromName(identifier.get("product")) + + for machine_id in machine_id_list: + definition_metadata = ContainerRegistry.getInstance().findDefinitionContainersMetadata(id = machine_id) + if not definition_metadata: + Logger.log("w", "No definition found for machine ID %s", machine_id) + continue + + definition_metadata = definition_metadata[0] + + machine_manufacturer = identifier.get("manufacturer", definition_metadata.get("manufacturer", "Unknown")) #If the XML material doesn't specify a manufacturer, use the one in the actual printer definition. + + if machine_compatibility: + new_material_id = container_id + "_" + machine_id + + # The child or derived material container may already exist. This can happen when a material in a + # project file and the a material in Cura have the same ID. + # In the case if a derived material already exists, override that material container because if + # the data in the parent material has been changed, the derived ones should be updated too. + found_materials = ContainerRegistry.getInstance().findInstanceContainersMetadata(id = new_material_id) + if found_materials: + new_material_metadata = found_materials[0] + else: + new_material_metadata = {} + + new_material_metadata.update(base_metadata) + new_material_metadata["id"] = new_material_id + new_material_metadata["compatible"] = machine_compatibility + new_material_metadata["machine_manufacturer"] = machine_manufacturer + new_material_metadata["definition"] = machine_id + + if len(found_materials) == 0: #This is a new material. + result_metadata.append(new_material_metadata) + + for hotend in machine.iterfind("./um:hotend", cls.__namespaces): + hotend_id = hotend.get("id") + if hotend_id is None: + continue + + variant_containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(id = hotend_id) + if not variant_containers: + # It is not really properly defined what "ID" is so also search for variants by name. + variant_containers = ContainerRegistry.getInstance().findInstanceContainersMetadata(definition = machine_id, name = hotend_id) + + hotend_compatibility = machine_compatibility + for entry in hotend.iterfind("./um:setting", cls.__namespaces): + key = entry.get("key") + if key == "hardware compatible": + hotend_compatibility = cls._parseCompatibleValue(entry.text) + + new_hotend_id = container_id + "_" + machine_id + "_" + hotend_id.replace(" ", "_") + + # Same as machine compatibility, keep the derived material containers consistent with the parent + # material + found_materials = ContainerRegistry.getInstance().findInstanceContainersMetadata(id = new_hotend_id) + if found_materials: + new_hotend_material_metadata = found_materials[0] + else: + new_hotend_material_metadata = {} + + new_hotend_material_metadata.update(base_metadata) + if variant_containers: + new_hotend_material_metadata["variant"] = variant_containers[0]["id"] + else: + new_hotend_material_metadata["variant"] = hotend_id + _with_missing_variants.append(new_hotend_material_metadata) + new_hotend_material_metadata["compatible"] = hotend_compatibility + new_hotend_material_metadata["machine_manufacturer"] = machine_manufacturer + new_hotend_material_metadata["id"] = new_hotend_id + new_hotend_material_metadata["definition"] = machine_id + + if len(found_materials) == 0: + result_metadata.append(new_hotend_material_metadata) + + # there is only one ID for a machine. Once we have reached here, it means we have already found + # a workable ID for that machine, so there is no need to continue + break + + return result_metadata + def _addSettingElement(self, builder, instance): try: key = UM.Dictionary.findKey(self.__material_settings_setting_map, instance.definition.key) @@ -656,16 +819,58 @@ class XmlMaterialProfile(InstanceContainer): builder.data(str(instance.value)) builder.end("setting") - def _profile_name(self, material_name, color_name): + @classmethod + def _profile_name(cls, material_name, color_name): if color_name != "Generic": return "%s %s" % (color_name, material_name) else: return material_name + @classmethod + def getPossibleDefinitionIDsFromName(cls, name): + name_parts = name.lower().split(" ") + merged_name_parts = [] + for part in name_parts: + if len(part) == 0: + continue + if len(merged_name_parts) == 0: + merged_name_parts.append(part) + continue + if part.isdigit(): + # for names with digit(s) such as Ultimaker 3 Extended, we generate an ID like + # "ultimaker3_extended", ignoring the space between "Ultimaker" and "3". + merged_name_parts[-1] = merged_name_parts[-1] + part + else: + merged_name_parts.append(part) + + id_list = [name.lower().replace(" ", ""), # simply removing all spaces + name.lower().replace(" ", "_"), # simply replacing all spaces with underscores + "_".join(merged_name_parts), + ] + + return id_list + + ## Gets a mapping from product names in the XML files to their definition + # IDs. + # + # This loads the mapping from a file. + @classmethod + def getProductIdMap(cls) -> Dict[str, List[str]]: + product_to_id_file = os.path.join(os.path.dirname(sys.modules[cls.__module__].__file__), "product_to_id.json") + with open(product_to_id_file) as f: + product_to_id_map = json.load(f) + product_to_id_map = {key: [value] for key, value in product_to_id_map.items()} + return product_to_id_map + ## Parse the value of the "material compatible" property. - def _parseCompatibleValue(self, value: str): + @classmethod + def _parseCompatibleValue(cls, value: str): return value in {"yes", "unknown"} + ## Small string representation for debugging. + def __str__(self): + return "".format(my_id = self.getId(), name = self.getName(), base_file = self.getMetaDataEntry("base_file")) + # Map XML file setting names to internal names __material_settings_setting_map = { "print temperature": "default_material_print_temperature", @@ -714,4 +919,22 @@ def _indent(elem, level = 0): # We are only interested in the actual tag name, so discard everything # before the last } def _tag_without_namespace(element): - return element.tag[element.tag.rfind("}") + 1:] \ No newline at end of file + return element.tag[element.tag.rfind("}") + 1:] + +#While loading XML profiles, some of these profiles don't know what variant +#they belong to. We'd like to search by the machine ID and the variant's +#name, but we don't know the variant's ID. Not all variants have been loaded +#yet so we can't run a filter on the name and machine. The ID is unknown +#so we can't lazily load the variant either. So we have to wait until all +#the rest is loaded properly and then assign the correct variant to the +#material files that were missing it. +_with_missing_variants = [] +def _fillMissingVariants(): + registry = ContainerRegistry.getInstance() + for variant_metadata in _with_missing_variants: + variants = registry.findContainersMetadata(definition = variant_metadata["definition"], name = variant_metadata["variant"]) + if not variants: + Logger.log("w", "Could not find variant for variant-specific material {material_id}.".format(material_id = variant_metadata["id"])) + continue + variant_metadata["variant"] = variants[0]["id"] +ContainerRegistry.allMetadataLoaded.connect(_fillMissingVariants) diff --git a/plugins/XmlMaterialProfile/XmlMaterialUpgrader.py b/plugins/XmlMaterialProfile/XmlMaterialUpgrader.py index c882239dba..167a9f2849 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialUpgrader.py +++ b/plugins/XmlMaterialProfile/XmlMaterialUpgrader.py @@ -5,24 +5,16 @@ import xml.etree.ElementTree as ET from UM.VersionUpgrade import VersionUpgrade +from cura.CuraApplication import CuraApplication +from .XmlMaterialProfile import XmlMaterialProfile + class XmlMaterialUpgrader(VersionUpgrade): def getXmlVersion(self, serialized): - data = ET.fromstring(serialized) - - version = 1 - # get setting version - if "version" in data.attrib: - setting_version = self._xmlVersionToSettingVersion(data.attrib["version"]) - else: - setting_version = self._xmlVersionToSettingVersion("1.2") - - return version * 1000000 + setting_version + return XmlMaterialProfile.getVersionFromSerialized(serialized) def _xmlVersionToSettingVersion(self, xml_version: str) -> int: - if xml_version == "1.3": - return 2 - return 0 #Older than 1.3. + return XmlMaterialProfile.xmlVersionToSettingVersion(xml_version) def upgradeMaterial(self, serialised, filename): data = ET.fromstring(serialised) diff --git a/plugins/XmlMaterialProfile/__init__.py b/plugins/XmlMaterialProfile/__init__.py index 8173e9dd04..70a359ee76 100644 --- a/plugins/XmlMaterialProfile/__init__.py +++ b/plugins/XmlMaterialProfile/__init__.py @@ -19,7 +19,7 @@ def getMetaData(): "mimetype": "application/x-ultimaker-material-profile" }, "version_upgrade": { - ("materials", 1000000): ("materials", 1000003, upgrader.upgradeMaterial), + ("materials", 1000000): ("materials", 1000004, upgrader.upgradeMaterial), }, "sources": { "materials": { diff --git a/plugins/XmlMaterialProfile/product_to_id.json b/plugins/XmlMaterialProfile/product_to_id.json new file mode 100644 index 0000000000..d6b8f3bade --- /dev/null +++ b/plugins/XmlMaterialProfile/product_to_id.json @@ -0,0 +1,12 @@ +{ + "Ultimaker 2": "ultimaker2", + "Ultimaker 2 Extended": "ultimaker2_extended", + "Ultimaker 2 Extended+": "ultimaker2_extended_plus", + "Ultimaker 2 Go": "ultimaker2_go", + "Ultimaker 2+": "ultimaker2_plus", + "Ultimaker 3": "ultimaker3", + "Ultimaker 3 Extended": "ultimaker3_extended", + "Ultimaker Original": "ultimaker_original", + "Ultimaker Original+": "ultimaker_original_plus", + "IMADE3D JellyBOX": "imade3d_jellybox" +} \ No newline at end of file diff --git a/resources/definitions/101Hero.def.json b/resources/definitions/101Hero.def.json index 3d19aef626..620fcfb519 100644 --- a/resources/definitions/101Hero.def.json +++ b/resources/definitions/101Hero.def.json @@ -1,5 +1,4 @@ { - "id": "101Hero", "version": 2, "name": "101Hero", "inherits": "fdmprinter", @@ -7,10 +6,6 @@ "visible": true, "author": "rikky", "manufacturer": "101Hero", - "machine_extruder_trains": - { - "0": "fdmextruder" - }, "file_formats": "text/x-gcode", "platform": "101hero-platform.stl", "supports_usb_connection": true diff --git a/resources/definitions/3dator.def.json b/resources/definitions/3dator.def.json index b72a49a35b..2ec7119656 100644 --- a/resources/definitions/3dator.def.json +++ b/resources/definitions/3dator.def.json @@ -1,5 +1,4 @@ { - "id": "3Dator", "version": 2, "name": "3Dator", "inherits": "fdmprinter", @@ -10,11 +9,7 @@ "file_formats": "text/x-gcode", "icon": "icon_ultimaker2", "supports_usb_connection": true, - "platform": "3dator_platform.stl", - "machine_extruder_trains": - { - "0": "fdmextruder" - } + "platform": "3dator_platform.stl" }, "overrides": { @@ -29,7 +24,6 @@ "layer_height": { "default_value": 0.2 }, "speed_print": { "default_value": 50 }, "speed_infill": { "default_value": 60 }, - "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, "machine_height": { "default_value": 260 }, diff --git a/resources/definitions/abax_pri3.def.json b/resources/definitions/abax_pri3.def.json index fa826e6f94..2fa648096f 100644 --- a/resources/definitions/abax_pri3.def.json +++ b/resources/definitions/abax_pri3.def.json @@ -1,5 +1,4 @@ { - "id": "PRi3", "name": "ABAX PRi3", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/abax_pri5.def.json b/resources/definitions/abax_pri5.def.json index b5588e5c96..cbebb576b0 100644 --- a/resources/definitions/abax_pri5.def.json +++ b/resources/definitions/abax_pri5.def.json @@ -1,5 +1,4 @@ { - "id": "PRi5", "name": "ABAX PRi5", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/abax_titan.def.json b/resources/definitions/abax_titan.def.json index 53b768c93f..5f7a99d64d 100644 --- a/resources/definitions/abax_titan.def.json +++ b/resources/definitions/abax_titan.def.json @@ -1,5 +1,4 @@ { - "id": "Titan", "name": "ABAX Titan", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/alya3dp.def.json b/resources/definitions/alya3dp.def.json index 5fa6630f51..2fda102249 100644 --- a/resources/definitions/alya3dp.def.json +++ b/resources/definitions/alya3dp.def.json @@ -1,5 +1,4 @@ { - "id": "alya3dp", "name": "ALYA", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/anycubic_i3_mega.def.json b/resources/definitions/anycubic_i3_mega.def.json new file mode 100644 index 0000000000..a0bd0efb7c --- /dev/null +++ b/resources/definitions/anycubic_i3_mega.def.json @@ -0,0 +1,55 @@ +{ + "version":2, + "name":"Anycubic i3 Mega", + "inherits":"fdmprinter", + "metadata":{ + "visible":true, + "author":"TheTobby", + "manufacturer":"Anycubic", + "file_formats":"text/x-gcode", + "icon":"icon_ultimaker2", + "platform":"anycubic_i3_mega_platform.stl", + "has_materials": false, + "has_machine_quality": true, + "preferred_quality": "*normal*" + }, + + "overrides":{ + "machine_name":{ + "default_value":"Anycubic i3 Mega" + }, + "machine_heated_bed":{ + "default_value":true + }, + "machine_width":{ + "default_value":210 + }, + "machine_height":{ + "default_value":205 + }, + "machine_depth":{ + "default_value":210 + }, + "machine_center_is_zero":{ + "default_value":false + }, + "machine_nozzle_size":{ + "default_value":0.4 + }, + "material_diameter":{ + "default_value":1.75 + }, + "gantry_height":{ + "default_value":0 + }, + "machine_gcode_flavor":{ + "default_value":"RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode":{ + "default_value":"G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F{travel_speed} ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F{travel_speed}\nM117 Printing...\nG5" + }, + "machine_end_gcode":{ + "default_value":"M104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nM84 ; disable motors\nM107\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle\nto release some of the pressure\nG1 Z+0.5 E-5 ;X-20 Y-20 F{travel_speed} ;move Z up a bit and retract filament even more\nG28 X0 ;Y0 ;move X/Y to min endstops\nso the head is out of the way\nG1 Y180 F2000\nM84 ;steppers off\nG90\nM300 P300 S4000" + } + } +} diff --git a/resources/definitions/bfb.def.json b/resources/definitions/bfb.def.json index fddec169c5..7a76e231a8 100644 --- a/resources/definitions/bfb.def.json +++ b/resources/definitions/bfb.def.json @@ -1,5 +1,4 @@ { - "id": "bfb", "name": "BFB", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/bq_hephestos.def.json b/resources/definitions/bq_hephestos.def.json index 91eeecb500..0fb40a4741 100644 --- a/resources/definitions/bq_hephestos.def.json +++ b/resources/definitions/bq_hephestos.def.json @@ -1,5 +1,4 @@ { - "id": "bq_hephestos", "name": "BQ Prusa i3 Hephestos", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/bq_hephestos_2.def.json b/resources/definitions/bq_hephestos_2.def.json index 272e547af0..a3493334b6 100644 --- a/resources/definitions/bq_hephestos_2.def.json +++ b/resources/definitions/bq_hephestos_2.def.json @@ -1,5 +1,4 @@ { - "id": "bq_hephestos_2", "version": 2, "name": "BQ Hephestos 2", "inherits": "fdmprinter", diff --git a/resources/definitions/bq_hephestos_xl.def.json b/resources/definitions/bq_hephestos_xl.def.json index a5a183b1e9..75b756c71e 100644 --- a/resources/definitions/bq_hephestos_xl.def.json +++ b/resources/definitions/bq_hephestos_xl.def.json @@ -1,5 +1,4 @@ { - "id": "bq_hephestos_xl", "version": 2, "name": "BQ Prusa i3 Hephestos XL", "inherits": "fdmprinter", diff --git a/resources/definitions/bq_witbox.def.json b/resources/definitions/bq_witbox.def.json index ca14151e7a..ef4e12b704 100644 --- a/resources/definitions/bq_witbox.def.json +++ b/resources/definitions/bq_witbox.def.json @@ -1,5 +1,4 @@ { - "id": "bq_witbox", "version": 2, "name": "BQ Witbox", "inherits": "fdmprinter", diff --git a/resources/definitions/bq_witbox_2.def.json b/resources/definitions/bq_witbox_2.def.json index f634d9c9c8..ab3786ad1f 100644 --- a/resources/definitions/bq_witbox_2.def.json +++ b/resources/definitions/bq_witbox_2.def.json @@ -1,5 +1,4 @@ { - "id": "bq_witbox_2", "version": 2, "name": "BQ Witbox 2", "inherits": "fdmprinter", diff --git a/resources/definitions/builder_premium_large.def.json b/resources/definitions/builder_premium_large.def.json new file mode 100644 index 0000000000..b496dc524e --- /dev/null +++ b/resources/definitions/builder_premium_large.def.json @@ -0,0 +1,116 @@ +{ + "version": 2, + "name": "Builder Premium Large", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Builder SZ", + "manufacturer": "Builder", + "category": "Other", + "quality_definition": "builder_premium_small", + "file_formats": "text/x-gcode", + "platform": "builder_premium_platform.stl", + "platform_offset": [-126, -36, 117], + "has_machine_quality": true, + "preferred_quality": "*Normal*", + "machine_extruder_trains": + { + "0": "builder_premium_large_rear", + "1": "builder_premium_large_front" + } + }, + + + + "overrides": { + "machine_name": { "default_value": "Builder Premium Large" }, + "machine_heated_bed": { "default_value": true }, + "machine_width": { "default_value": 215 }, + "machine_height": { "default_value": 600 }, + "machine_depth": { "default_value": 205 }, + "material_diameter": { "default_value": 1.75 }, + + "infill_pattern": {"value": "'triangles'" }, + "infill_before_walls": {"value": false }, + + "default_material_print_temperature": { "value": "215" }, + "material_print_temperature_layer_0": { "value": "material_print_temperature + 5" }, + "material_standby_temperature": { "value": "material_print_temperature" }, + + "switch_extruder_retraction_speeds": {"default_value": 15 }, + "switch_extruder_retraction_speed": {"default_value": 15 }, + "switch_extruder_prime_speed": {"default_value": 15 }, + "switch_extruder_retraction_amount": {"value": 1 }, + + "speed_travel": { "value": "100" }, + "speed_layer_0": { "value": "20" }, + "speed_prime_tower": { "value": "speed_topbottom" }, + "speed_print": { "value": "40" }, + "speed_support": { "value": "speed_wall_0" }, + "speed_support_interface": { "value": "speed_topbottom" }, + "speed_topbottom": { "value": "math.ceil(speed_print * 20 / 35)" }, + "speed_wall": { "value": "math.ceil(speed_print * 30 / 40)" }, + "speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 25)" }, + "speed_wall_x": { "value": "speed_wall" }, + + "prime_tower_position_x": { "default_value": 175 }, + "prime_tower_position_y": { "default_value": 178 }, + "prime_tower_wipe_enabled": { "default_value": false }, + "prime_tower_min_volume": { "default_value": 50 }, + "dual_pre_wipe": { "default_value": false }, + + "prime_blob_enable": { "enabled": true }, + + "acceleration_enabled": { "value": "True" }, + "acceleration_layer_0": { "value": "acceleration_topbottom" }, + "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_print": { "value": "3000" }, + "acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_support_interface": { "value": "acceleration_topbottom" }, + "acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1000 / 3000)" }, + "acceleration_travel": { "value": "acceleration_print" }, + "acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 3000)" }, + "acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 1000 / 1000)" }, + + "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, + "cool_min_layer_time": { "default_value": 10 }, + + "jerk_enabled": { "value": "True" }, + "jerk_layer_0": { "value": "jerk_topbottom" }, + "jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_print": { "value": "25" }, + "jerk_support": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_support_interface": { "value": "jerk_topbottom" }, + "jerk_topbottom": { "value": "math.ceil(jerk_print * 5 / 25)" }, + "jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" }, + "jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" }, + + "wall_thickness": { "value": "1.2" }, + + "retraction_amount": { "default_value": 3 }, + "retraction_speed": { "default_value": 15 }, + "retraction_retract_speed": { "default_value": 15 }, + "retraction_prime_speed": { "default_value": 15 }, + "travel_retract_before_outer_wall": { "default_value": true }, + "skin_overlap": { "value": "15" }, + "adhesion_type": { "default_value": "skirt" }, + "machine_nozzle_heat_up_speed": { "default_value": 2 }, + "machine_nozzle_cool_down_speed": { "default_value": 2 }, + "machine_head_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, + "gantry_height": { "default_value": 55 }, + "machine_max_feedrate_x": { "default_value": 300 }, + "machine_max_feedrate_y": { "default_value": 300 }, + "machine_max_feedrate_z": { "default_value": 40 }, + "machine_max_acceleration_z": { "default_value": 500 }, + "machine_acceleration": { "default_value": 1000 }, + "machine_max_jerk_xy": { "default_value": 10 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": { + "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E15 ;extrude 15mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\nT0 ;Start with Rear Extruder\n;Put printing message on LCD screen\nM117 Printing..." + }, + "machine_end_gcode": { + "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" + }, + "machine_extruder_count": { "default_value": 2 } + } +} \ No newline at end of file diff --git a/resources/definitions/builder_premium_medium.def.json b/resources/definitions/builder_premium_medium.def.json new file mode 100644 index 0000000000..fe8a039fc4 --- /dev/null +++ b/resources/definitions/builder_premium_medium.def.json @@ -0,0 +1,116 @@ +{ + "version": 2, + "name": "Builder Premium Medium", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Builder SZ", + "manufacturer": "Builder", + "category": "Other", + "quality_definition": "builder_premium_small", + "file_formats": "text/x-gcode", + "platform": "builder_premium_platform.stl", + "platform_offset": [-126, -36, 117], + "has_machine_quality": true, + "preferred_quality": "*Normal*", + "machine_extruder_trains": + { + "0": "builder_premium_medium_rear", + "1": "builder_premium_medium_front" + } + }, + + + + "overrides": { + "machine_name": { "default_value": "Builder Premium Medium" }, + "machine_heated_bed": { "default_value": true }, + "machine_width": { "default_value": 215 }, + "machine_height": { "default_value": 400 }, + "machine_depth": { "default_value": 205 }, + "material_diameter": { "default_value": 1.75 }, + + "infill_pattern": {"value": "'triangles'" }, + "infill_before_walls": {"value": false }, + + "default_material_print_temperature": { "value": "215" }, + "material_print_temperature_layer_0": { "value": "material_print_temperature + 5" }, + "material_standby_temperature": { "value": "material_print_temperature" }, + + "switch_extruder_retraction_speeds": {"default_value": 15 }, + "switch_extruder_retraction_speed": {"default_value": 15 }, + "switch_extruder_prime_speed": {"default_value": 15 }, + "switch_extruder_retraction_amount": {"value": 1 }, + + "speed_travel": { "value": "100" }, + "speed_layer_0": { "value": "20" }, + "speed_prime_tower": { "value": "speed_topbottom" }, + "speed_print": { "value": "40" }, + "speed_support": { "value": "speed_wall_0" }, + "speed_support_interface": { "value": "speed_topbottom" }, + "speed_topbottom": { "value": "math.ceil(speed_print * 20 / 35)" }, + "speed_wall": { "value": "math.ceil(speed_print * 30 / 40)" }, + "speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 25)" }, + "speed_wall_x": { "value": "speed_wall" }, + + "prime_tower_position_x": { "default_value": 175 }, + "prime_tower_position_y": { "default_value": 178 }, + "prime_tower_wipe_enabled": { "default_value": false }, + "prime_tower_min_volume": { "default_value": 50 }, + "dual_pre_wipe": { "default_value": false }, + + "prime_blob_enable": { "enabled": true }, + + "acceleration_enabled": { "value": "True" }, + "acceleration_layer_0": { "value": "acceleration_topbottom" }, + "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_print": { "value": "3000" }, + "acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_support_interface": { "value": "acceleration_topbottom" }, + "acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1000 / 3000)" }, + "acceleration_travel": { "value": "acceleration_print" }, + "acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 3000)" }, + "acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 1000 / 1000)" }, + + "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, + "cool_min_layer_time": { "default_value": 10 }, + + "jerk_enabled": { "value": "True" }, + "jerk_layer_0": { "value": "jerk_topbottom" }, + "jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_print": { "value": "25" }, + "jerk_support": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_support_interface": { "value": "jerk_topbottom" }, + "jerk_topbottom": { "value": "math.ceil(jerk_print * 5 / 25)" }, + "jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" }, + "jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" }, + + "wall_thickness": { "value": "1.2" }, + + "retraction_amount": { "default_value": 3 }, + "retraction_speed": { "default_value": 15 }, + "retraction_retract_speed": { "default_value": 15 }, + "retraction_prime_speed": { "default_value": 15 }, + "travel_retract_before_outer_wall": { "default_value": true }, + "skin_overlap": { "value": "15" }, + "adhesion_type": { "default_value": "skirt" }, + "machine_nozzle_heat_up_speed": { "default_value": 2 }, + "machine_nozzle_cool_down_speed": { "default_value": 2 }, + "machine_head_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, + "gantry_height": { "default_value": 55 }, + "machine_max_feedrate_x": { "default_value": 300 }, + "machine_max_feedrate_y": { "default_value": 300 }, + "machine_max_feedrate_z": { "default_value": 40 }, + "machine_max_acceleration_z": { "default_value": 500 }, + "machine_acceleration": { "default_value": 1000 }, + "machine_max_jerk_xy": { "default_value": 10 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": { + "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E15 ;extrude 15mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\nT0 ;Start with Rear Extruder\n;Put printing message on LCD screen\nM117 Printing..." + }, + "machine_end_gcode": { + "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" + }, + "machine_extruder_count": { "default_value": 2 } + } +} \ No newline at end of file diff --git a/resources/definitions/builder_premium_small.def.json b/resources/definitions/builder_premium_small.def.json new file mode 100644 index 0000000000..a1660b63cf --- /dev/null +++ b/resources/definitions/builder_premium_small.def.json @@ -0,0 +1,115 @@ +{ + "version": 2, + "name": "Builder Premium Small", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Builder SZ", + "manufacturer": "Builder", + "category": "Other", + "file_formats": "text/x-gcode", + "platform": "builder_premium_platform.stl", + "platform_offset": [-126, -36, 117], + "has_machine_quality": true, + "preferred_quality": "*Normal*", + "machine_extruder_trains": + { + "0": "builder_premium_small_rear", + "1": "builder_premium_small_front" + } + }, + + + + "overrides": { + "machine_name": { "default_value": "Builder Premium Small" }, + "machine_heated_bed": { "default_value": true }, + "machine_width": { "default_value": 215 }, + "machine_height": { "default_value": 200 }, + "machine_depth": { "default_value": 205 }, + "material_diameter": { "default_value": 1.75 }, + + "infill_pattern": {"value": "'triangles'" }, + "infill_before_walls": {"value": false }, + + "default_material_print_temperature": { "value": "215" }, + "material_print_temperature_layer_0": { "value": "material_print_temperature + 5" }, + "material_standby_temperature": { "value": "material_print_temperature" }, + + "switch_extruder_retraction_speeds": {"default_value": 15 }, + "switch_extruder_retraction_speed": {"default_value": 15 }, + "switch_extruder_prime_speed": {"default_value": 15 }, + "switch_extruder_retraction_amount": {"value": 1 }, + + "speed_travel": { "value": "100" }, + "speed_layer_0": { "value": "20" }, + "speed_prime_tower": { "value": "speed_topbottom" }, + "speed_print": { "value": "40" }, + "speed_support": { "value": "speed_wall_0" }, + "speed_support_interface": { "value": "speed_topbottom" }, + "speed_topbottom": { "value": "math.ceil(speed_print * 20 / 35)" }, + "speed_wall": { "value": "math.ceil(speed_print * 30 / 40)" }, + "speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 25)" }, + "speed_wall_x": { "value": "speed_wall" }, + + "prime_tower_position_x": { "default_value": 175 }, + "prime_tower_position_y": { "default_value": 178 }, + "prime_tower_wipe_enabled": { "default_value": false }, + "prime_tower_min_volume": { "default_value": 50 }, + "dual_pre_wipe": { "default_value": false }, + + "prime_blob_enable": { "enabled": true }, + + "acceleration_enabled": { "value": "True" }, + "acceleration_layer_0": { "value": "acceleration_topbottom" }, + "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_print": { "value": "3000" }, + "acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_support_interface": { "value": "acceleration_topbottom" }, + "acceleration_topbottom": { "value": "math.ceil(acceleration_print * 1000 / 3000)" }, + "acceleration_travel": { "value": "acceleration_print" }, + "acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 3000)" }, + "acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 1000 / 1000)" }, + + "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, + "cool_min_layer_time": { "default_value": 10 }, + + "jerk_enabled": { "value": "True" }, + "jerk_layer_0": { "value": "jerk_topbottom" }, + "jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_print": { "value": "25" }, + "jerk_support": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_support_interface": { "value": "jerk_topbottom" }, + "jerk_topbottom": { "value": "math.ceil(jerk_print * 5 / 25)" }, + "jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" }, + "jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" }, + + "wall_thickness": { "value": "1.2" }, + + "retraction_amount": { "default_value": 3 }, + "retraction_speed": { "default_value": 15 }, + "retraction_retract_speed": { "default_value": 15 }, + "retraction_prime_speed": { "default_value": 15 }, + "travel_retract_before_outer_wall": { "default_value": true }, + "skin_overlap": { "value": "15" }, + "adhesion_type": { "default_value": "skirt" }, + "machine_nozzle_heat_up_speed": { "default_value": 2 }, + "machine_nozzle_cool_down_speed": { "default_value": 2 }, + "machine_head_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, + "gantry_height": { "default_value": 55 }, + "machine_max_feedrate_x": { "default_value": 300 }, + "machine_max_feedrate_y": { "default_value": 300 }, + "machine_max_feedrate_z": { "default_value": 40 }, + "machine_max_acceleration_z": { "default_value": 500 }, + "machine_acceleration": { "default_value": 1000 }, + "machine_max_jerk_xy": { "default_value": 10 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": { + "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E15 ;extrude 15mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\nT0 ;Start with Rear Extruder\n;Put printing message on LCD screen\nM117 Printing..." + }, + "machine_end_gcode": { + "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" + }, + "machine_extruder_count": { "default_value": 2 } + } +} \ No newline at end of file diff --git a/resources/definitions/cartesio.def.json b/resources/definitions/cartesio.def.json index 45b0111209..44f3153015 100644 --- a/resources/definitions/cartesio.def.json +++ b/resources/definitions/cartesio.def.json @@ -1,5 +1,4 @@ { - "id": "cartesio", "name": "Cartesio", "version": 2, "inherits": "fdmprinter", @@ -47,21 +46,24 @@ "material_bed_temp_wait": { "default_value": false }, "prime_tower_enable": { "default_value": true }, "prime_tower_wall_thickness": { "resolve": 0.7 }, - "prime_tower_position_x": { "value": "50" }, - "prime_tower_position_y": { "value": "150" }, + "prime_tower_size": { "value": 24.0 }, + "prime_tower_position_x": { "value": 125 }, + "prime_tower_position_y": { "value": 70 }, "prime_blob_enable": { "default_value": false }, "machine_max_feedrate_z": { "default_value": 20 }, "machine_disallowed_areas": { "default_value": [ [[215, 135], [-215, 135], [-215, 75], [215, 75]] ]}, "machine_start_gcode": { - "default_value": "\nM92 E159 ;2288 for V5 extruder\n\nM104 S120 T1\nM104 S120 T2\nM104 S120 T3\n\nG21\nG90\nM42 S255 P13 ;chamber lights\nM42 S255 P12 ;fume extraction\nM204 S300 ;default acceleration\nM205 X10 ;default jerk\n\nM117 Homing Y ......\nG28 Y\nM117 Homing X ......\nG28 X\nM117 Homing Z ......\nG28 Z F100\nG1 Z10 F600\nG1 X70 Y20 F9000;go to wipe point\n\nM190 S{material_bed_temperature_layer_0}\n\nM117 Heating for 50 sec.\nG4 S20\nM117 Heating for 30 sec.\nG4 S20\nM117 Heating for 10 sec.\nM300 S1200 P1000\nG4 S9\n\nM117 purging nozzle....\nT0\nG92 E0;set E\nG1 E10 F100\nG92 E0\nG1 E-1 F600\n\nM117 wiping nozzle....\nG1 X1 Y24 F3000\nG1 X70 F9000\nG1 Z10 F900\n\nM104 S21 T1\nM104 S21 T2\nM104 S21 T3\n\nM117 Printing .....\n" + "default_value": "\nM92 E159 ;2288 for V5 extruder\n\nM140 S{material_bed_temperature_layer_0}\nM104 S120 T1\nM104 S120 T2\nM104 S120 T3\n\nG21\nG90\nM42 S255 P13 ;chamber lights\nM42 S255 P12 ;fume extraction\nM204 S300 ;default acceleration\nM205 X10 ;default jerk\n\nM117 Homing Y ......\nG28 Y\nM117 Homing X ......\nG28 X\nM117 Homing Z ......\nG28 Z F100\nG1 Z10 F600\nG1 X70 Y20 F9000;go to wipe point\n\nM190 S{material_bed_temperature_layer_0}\n\nM117 Heating for 50 sec.\nG4 S20\nM117 Heating for 30 sec.\nG4 S20\nM117 Heating for 10 sec.\nM300 S1200 P1000\nG4 S9\n\nM117 purging nozzle....\nT0\nG92 E0;set E\nG1 E10 F100\nG92 E0\nG1 E-1 F600\n\nM117 wiping nozzle....\nG1 X1 Y24 F3000\nG1 X70 F9000\nG1 Z10 F900\n\nM104 S21 T1\nM104 S21 T2\nM104 S21 T3\n\nM117 Printing .....\n" }, "machine_end_gcode": { "default_value": "; -- END GCODE --\nM117 cooling down....\nM106 S255\nM140 S5\nM104 S5 T0\nM104 S5 T1\nM104 S5 T2\nM104 S5 T3\n\nG91\nG1 Z1 F900\nG90\n\nG1 X20.0 Y260.0 F6000\nG4 S7\nM84\nG4 S90\nM107\nM42 P12 S0\nM42 P13 S0\nM84\nT0\nM117 Finished.\n; -- end of GCODE --" }, "layer_height": { "maximum_value": "(0.8 * min(extruderValues('machine_nozzle_size')))" }, "layer_height_0": { "maximum_value": "(0.8 * min(extruderValues('machine_nozzle_size')))" }, + "retraction_extra_prime_amount": { "minimum_value_warning": "-2.0" }, + "optimize_wall_printing_order": { "default_value": true }, "machine_nozzle_heat_up_speed": {"default_value": 20}, "machine_nozzle_cool_down_speed": {"default_value": 20}, "machine_min_cool_heat_time_window": {"default_value": 5} diff --git a/resources/definitions/creality_cr10.def.json b/resources/definitions/creality_cr10.def.json index bacae6e2e5..7a58adcd4d 100644 --- a/resources/definitions/creality_cr10.def.json +++ b/resources/definitions/creality_cr10.def.json @@ -1,5 +1,4 @@ { - "id": "creality_cr10", "name": "Creality CR-10", "version": 2, "inherits": "fdmprinter", @@ -20,6 +19,14 @@ "machine_depth": { "default_value": 300 }, + "machine_head_polygon": { + "default_value": [ + [-30, 34], + [-30, -32], + [30, -32], + [30, 34] + ] + }, "material_diameter": { "default_value": 1.75 }, diff --git a/resources/definitions/creality_cr10s4.def.json b/resources/definitions/creality_cr10s4.def.json index 13c2e53391..cebe255705 100644 --- a/resources/definitions/creality_cr10s4.def.json +++ b/resources/definitions/creality_cr10s4.def.json @@ -1,5 +1,4 @@ { - "id": "creality_cr10s4", "name": "Creality CR-10 S4", "version": 2, "inherits": "creality_cr10", diff --git a/resources/definitions/creality_cr10s5.def.json b/resources/definitions/creality_cr10s5.def.json index 15cf0b93d9..e6aaa88b04 100644 --- a/resources/definitions/creality_cr10s5.def.json +++ b/resources/definitions/creality_cr10s5.def.json @@ -1,5 +1,4 @@ { - "id": "creality_cr10s5", "name": "Creality CR-10 S5", "version": 2, "inherits": "creality_cr10", diff --git a/resources/definitions/custom.def.json b/resources/definitions/custom.def.json index 8f15f00a0f..e973a75bbf 100644 --- a/resources/definitions/custom.def.json +++ b/resources/definitions/custom.def.json @@ -1,5 +1,4 @@ { - "id": "custom", "version": 2, "name": "Custom FDM printer", "inherits": "fdmprinter", diff --git a/resources/definitions/dagoma_discoeasy200.def.json b/resources/definitions/dagoma_discoeasy200.def.json index 8f1a792bc0..9bcc2402f2 100644 --- a/resources/definitions/dagoma_discoeasy200.def.json +++ b/resources/definitions/dagoma_discoeasy200.def.json @@ -1,5 +1,4 @@ { - "id": "Dagoma_discoeasy200", "name": "Dagoma DiscoEasy200", "version": 2, "inherits": "fdmprinter", @@ -8,7 +7,7 @@ "author": "Dagoma", "manufacturer": "Dagoma", "file_formats": "text/x-gcode", - "icon": "icon_ultimaker2.png", + "icon": "icon_discoeasy200.png", "platform": "discoeasy200.stl", "platform_offset": [ 105, -59, 280] }, @@ -30,24 +29,23 @@ }, "machine_head_with_fans_polygon": { "default_value": [ - [16, 37], - [16, -65], - [-16, -65], - [16, 37] + [17, 70], + [17, -40], + [-17, -40], + [17, 70] ] }, "gantry_height": { - "default_value": 55 - }, - "machine_gcode_flavor": { - "default_value": "RepRap" + "default_value": 10 }, "machine_start_gcode": { - "default_value": ";Gcode by Cura\nG90 ;absolute positioning\nM106 S250 ;fan on for the palpeur\nG28 X Y\nG1 X50\nM109 S180\nG28\nM104 S{print_temperature}\n;Activation palpeur\n;bloc palpeur\nG29 ;Auto level\nM107 ;start with the fan off\nG1 X100 Y20 F3000\nG1 Z0.5\nM109 S{print_temperature}\nM140 S{material_bed_temperature}\nM82 ;set extruder to absolute mode\nG92 E0 ;zero the extruded length\nG1 F200 E10 ;extrude 10mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 Z3\nG1 F3000\n" + "default_value": ";Gcode by Cura\nG90 ;absolute positioning\nM106 S250 ;fan on for the palpeur\nG28 X Y\nG1 X50\nM109 S180\nG28\nM104 S{material_print_temperature_layer_0}\n;Activation palpeur\n;bloc palpeur\nG29 ;Auto level\nM107 ;start with the fan off\nG1 X100 Y20 F3000\nG1 Z0.5\nM109 S{material_print_temperature_layer_0}\nM82 ;set extruder to absolute mode\nG92 E0 ;zero the extruded length\nG1 F200 E10 ;extrude 10mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 Z3\nG1 F6000" }, "machine_end_gcode": { - "default_value": "\nM104 S0\nM106 S255 ;start fan full power\nM140 S0 ;heated bed heater off (if you have it)\n;Home machine\nG91 ;relative positioning\nG1 E-1 F{retraction_speed} ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+3 F3000 ;move Z up a bit and retract filament even more\nG90\nG28 X Y\n;Ventilation forcee\nM107 ;stop fan\n;Shut down motor\nM84 ;shut down motors\n" + "default_value": "M104 S0\nM106 S255 ;start fan full power\nM140 S0 ;heated bed heater off (if you have it)\n;Home machine\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+3 F3000 ;move Z up a bit and retract filament even more\nG90\nG28 X Y\n;Ventilation forcee\nM107 ;stop fan\n;Shut down motor\nM84 ;shut down motors" + }, + "material_diameter": { + "default_value": 1.75 } } } - diff --git a/resources/definitions/delta_go.def.json b/resources/definitions/delta_go.def.json index 36e0787039..a6d75b2983 100644 --- a/resources/definitions/delta_go.def.json +++ b/resources/definitions/delta_go.def.json @@ -1,5 +1,4 @@ { -"id": "Delta_Go", "name": "Delta Go", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/deltabot.def.json b/resources/definitions/deltabot.def.json index cee5ab1be1..e3b676d0ec 100644 --- a/resources/definitions/deltabot.def.json +++ b/resources/definitions/deltabot.def.json @@ -1,5 +1,4 @@ { - "id": "deltabot", "name": "DeltaBot", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/deltacomb.def.json b/resources/definitions/deltacomb.def.json new file mode 100644 index 0000000000..7e6e956dbc --- /dev/null +++ b/resources/definitions/deltacomb.def.json @@ -0,0 +1,65 @@ +{ + "version": 2, + "name": "Deltacomb 3D", + "inherits": "fdmprinter", + "metadata": { + "author": "Gabriele Rossetti", + "visible": true, + "manufacturer": "Deltacomb 3D", + "category": "Other", + "file_formats": "text/x-gcode", + "icon": "icon_ultimaker2", + "platform": "deltacomb.stl", + "has_machine_quality": true + }, + + "overrides": { + "machine_heated_bed": { "default_value": false }, + "machine_width": { "default_value": 190 }, + "machine_height": { "default_value": 250 }, + "machine_depth": { "default_value": 190 }, + "machine_center_is_zero": { "default_value": true }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;Home all axes (max endstops)\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..."}, + "machine_end_gcode": { "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG28 ;Home all axes (max endstops)\nM84 ;steppers off\nG90 ;absolute positioning" }, + "machine_shape": { "default_value": "elliptic" }, + "machine_max_feedrate_x": { "default_value": 250 }, + "machine_max_feedrate_y": { "default_value": 250 }, + "machine_max_feedrate_z": { "default_value": 15 }, + "machine_max_acceleration_x": { "default_value": 10000 }, + "machine_max_acceleration_y": { "default_value": 10000 }, + "machine_max_acceleration_z": { "default_value": 50 }, + "machine_max_acceleration_e": { "default_value": 100 }, + "machine_acceleration": { "default_value": 4000 }, + "machine_max_jerk_xy": { "default_value": 25.0 }, + "machine_max_jerk_z": { "default_value": 0.4 }, + "machine_max_jerk_e": { "default_value": 1.0 }, + "retraction_hop_enabled": { "default_value": false }, + "retraction_amount" : { "default_value": 4.5 }, + "retraction_speed" : { "default_value": 40 }, + "material_diameter": { "default_value": 1.75 }, + "material_final_print_temperature": { "value": "material_print_temperature - 5" }, + "material_initial_print_temperature": { "value": "material_print_temperature" }, + "material_print_temperature_layer_0": { "value": "material_print_temperature + 5" }, + "travel_avoid_distance": { "default_value": 1, "value": 1 }, + "speed_print" : { "default_value": 70 }, + "speed_travel": { "default_value": 80, "value": 80 }, + "speed_infill": { "value": "round(speed_print * 1.05, 0)" }, + "speed_topbottom": { "value": "round(speed_print * 0.95, 0)" }, + "speed_wall": { "value": "speed_print" }, + "speed_wall_0": { "value": "round(speed_print * 0.9, 0)" }, + "speed_wall_x": { "value": "speed_wall" }, + "speed_layer_0": { "value": "min(round(speed_print * 0.75, 0), 45.0)" }, + "speed_travel_layer_0": { "value": "round(speed_travel * 0.7, 0)" }, + "skirt_brim_speed": { "value": "speed_layer_0" }, + "skirt_line_count": { "default_value": 3 }, + "skirt_brim_minimal_length": { "default_value": 150 }, + "infill_sparse_density": { "default_value": 24 }, + "top_bottom_thickness": { "default_value": 0.6 }, + "support_z_distance": { "default_value": 0.2, "value": "min(2 * layer_height, machine_nozzle_size * 0.75)" }, + "infill_before_walls" : { "default_value": false }, + "support_use_towers" : { "default_value": false } + } +} diff --git a/resources/definitions/easyarts_ares.def.json b/resources/definitions/easyarts_ares.def.json index 8d3e5338b6..982496de4c 100644 --- a/resources/definitions/easyarts_ares.def.json +++ b/resources/definitions/easyarts_ares.def.json @@ -1,5 +1,4 @@ { - "id": "easyarts_ares", "name": "EasyArts Ares", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/fabtotum.def.json b/resources/definitions/fabtotum.def.json index eb33280401..87ce11a35c 100644 --- a/resources/definitions/fabtotum.def.json +++ b/resources/definitions/fabtotum.def.json @@ -1,5 +1,4 @@ { - "id": "fabtotum", "version": 2, "name": "FABtotum Personal Fabricator", "inherits": "fdmprinter", diff --git a/resources/definitions/fdmextruder.def.json b/resources/definitions/fdmextruder.def.json index 8ed194fc2d..3a59e7df1e 100644 --- a/resources/definitions/fdmextruder.def.json +++ b/resources/definitions/fdmextruder.def.json @@ -1,5 +1,4 @@ { - "id": "fdmextruder", "name": "Extruder", "version": 2, "metadata": @@ -8,7 +7,8 @@ "author": "Ultimaker", "manufacturer": "Unknown", "setting_version": 1, - "visible": false + "visible": false, + "position": "0" }, "settings": { @@ -181,6 +181,27 @@ } } }, + "material": { + "label": "Material", + "icon": "category_material", + "description": "Material", + "type": "category", + "children": { + "material_diameter": { + "label": "Diameter", + "description": "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament.", + "unit": "mm", + "type": "float", + "default_value": 2.85, + "minimum_value": "0.0001", + "minimum_value_warning": "0.4", + "maximum_value_warning": "3.5", + "enabled": "machine_gcode_flavor != \"UltiGCode\"", + "settable_per_mesh": false, + "settable_per_extruder": true + } + } + }, "platform_adhesion": { "label": "Build Plate Adhesion", diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 22bbe93b3f..17f8b6826f 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -1,5 +1,4 @@ { - "id": "fdmprinter", "name": "FDM Printer Base Description", "version": 2, "metadata": @@ -318,6 +317,17 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, + "machine_firmware_retract": + { + "label": "Firmware Retraction", + "description": "Whether to use firmware retract commands (G10/G11) instead of using the E property in G1 commands to retract the material.", + "type": "bool", + "default_value": false, + "value": "machine_gcode_flavor == 'RepRap (Volumetric)' or machine_gcode_flavor == 'UltiGCode' or machine_gcode_flavor == 'BFB'", + "settable_per_mesh": false, + "settable_per_extruder": false, + "settable_per_meshgroup": false + }, "machine_disallowed_areas": { "label": "Disallowed areas", @@ -1208,7 +1218,8 @@ } } }, - "fill_perimeter_gaps": { + "fill_perimeter_gaps": + { "label": "Fill Gaps Between Walls", "description": "Fills the gaps between walls where no walls fit.", "type": "enum", @@ -1220,6 +1231,15 @@ "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, + "filter_out_tiny_gaps": + { + "label": "Filter Out Tiny Gaps", + "description": "Filter out tiny gaps to reduce blobs on outside of model.", + "type": "bool", + "default_value": true, + "limit_to_extruder": "wall_0_extruder_nr", + "settable_per_mesh": true + }, "fill_outline_gaps": { "label": "Print Thin Walls", "description": "Print pieces of the model which are horizontally thinner than the nozzle size.", @@ -1340,6 +1360,124 @@ "type": "int", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true + }, + "ironing_enabled": + { + "label": "Enable Ironing", + "description": "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.", + "type": "bool", + "default_value": false, + "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", + "description": "The pattern to use for ironing top surfaces.", + "type": "enum", + "options": + { + "concentric": "Concentric", + "zigzag": "Zig Zag" + }, + "default_value": "zigzag", + "enabled": "ironing_enabled", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true + }, + "ironing_line_spacing": + { + "label": "Ironing Line Spacing", + "description": "The distance between the lines of ironing.", + "type": "float", + "unit": "mm", + "default_value": 0.1, + "minimum_value": "0.001", + "maximum_value_warning": "machine_nozzle_tip_outer_diameter", + "enabled": "ironing_enabled", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true + }, + "ironing_flow": + { + "label": "Ironing Flow", + "description": "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface.", + "type": "float", + "unit": "%", + "default_value": 10.0, + "minimum_value": "0", + "maximum_value_warning": "50", + "enabled": "ironing_enabled", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true + }, + "ironing_inset": + { + "label": "Ironing Inset", + "description": "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.", + "type": "float", + "unit": "mm", + "default_value": 0.35, + "value": "wall_line_width_0 / 2", + "minimum_value_warning": "0", + "maximum_value_warning": "wall_line_width_0", + "enabled": "ironing_enabled", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true + }, + "speed_ironing": + { + "label": "Ironing Speed", + "description": "The speed at which to pass over the top surface.", + "type": "float", + "unit": "mm/s", + "default_value": 20.0, + "value": "speed_topbottom * 20 / 30", + "minimum_value": "0.001", + "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", + "maximum_value_warning": "100", + "enabled": "ironing_enabled", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true + }, + "acceleration_ironing": + { + "label": "Ironing Acceleration", + "description": "The acceleration with which ironing is performed.", + "unit": "mm/s²", + "type": "float", + "minimum_value": "0.1", + "minimum_value_warning": "100", + "maximum_value_warning": "10000", + "default_value": 3000, + "value": "acceleration_topbottom", + "enabled": "resolveOrValue('acceleration_enabled') and ironing_enabled", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true + }, + "jerk_ironing": + { + "label": "Ironing Jerk", + "description": "The maximum instantaneous velocity change while performing ironing.", + "unit": "mm/s", + "type": "float", + "minimum_value": "0", + "maximum_value_warning": "50", + "default_value": 20, + "value": "jerk_topbottom", + "enabled": "resolveOrValue('jerk_enabled') and ironing_enabled", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true } } }, @@ -1385,7 +1523,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 if infill_pattern == 'cross' or infill_pattern == 'cross_3d' 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 == 'trihexagon' 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 } @@ -1394,13 +1532,14 @@ "infill_pattern": { "label": "Infill Pattern", - "description": "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.", + "description": "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, tri-hexagon, cubic, octet, quarter cubic, cross 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.", "type": "enum", "options": { "grid": "Grid", "lines": "Lines", "triangles": "Triangles", + "trihexagon": "Tri-Hexagon", "cubic": "Cubic", "cubicsubdiv": "Cubic Subdivision", "tetrahedral": "Octet", @@ -1439,7 +1578,7 @@ "infill_offset_x": { "label": "Infill X Offset", - "description": "The infill pattern is offset this distance along the X axis.", + "description": "The infill pattern is moved this distance along the X axis.", "unit": "mm", "type": "float", "default_value": 0, @@ -1450,7 +1589,7 @@ "infill_offset_y": { "label": "Infill Y Offset", - "description": "The infill pattern is offset this distance along the Y axis.", + "description": "The infill pattern is moved this distance along the Y axis.", "unit": "mm", "type": "float", "default_value": 0, @@ -1475,7 +1614,7 @@ "infill_overlap": { "label": "Infill Overlap Percentage", - "description": "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill.", + "description": "The amount of overlap between the infill and the walls as a percentage of the infill line width. A slight overlap allows the walls to connect firmly to the infill.", "unit": "%", "type": "float", "default_value": 10, @@ -1496,7 +1635,7 @@ "default_value": 0.04, "minimum_value_warning": "-0.5 * machine_nozzle_size", "maximum_value_warning": "machine_nozzle_size", - "value": "0.5 * ( infill_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0) ) * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0", + "value": "0.5 * (infill_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0)) * infill_overlap / 100 if infill_sparse_density < 95 and infill_pattern != 'concentric' else 0", "enabled": "infill_sparse_density > 0 and infill_pattern != 'concentric'", "settable_per_mesh": true } @@ -1505,7 +1644,7 @@ "skin_overlap": { "label": "Skin Overlap Percentage", - "description": "The amount of overlap between the skin and the walls as a percentage of the line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall.", + "description": "The amount of overlap between the skin and the walls as a percentage of the skin line width. A slight overlap allows the walls to connect firmly to the skin. This is a percentage of the average line widths of the skin lines and the innermost wall.", "unit": "%", "type": "float", "default_value": 5, @@ -1526,7 +1665,7 @@ "default_value": 0.02, "minimum_value_warning": "-0.5 * machine_nozzle_size", "maximum_value_warning": "machine_nozzle_size", - "value": "0.5 * ( skin_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0) ) * skin_overlap / 100 if top_bottom_pattern != 'concentric' else 0", + "value": "0.5 * (skin_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0)) * skin_overlap / 100 if top_bottom_pattern != 'concentric' else 0", "enabled": "top_bottom_pattern != 'concentric'", "settable_per_mesh": true } @@ -1837,7 +1976,7 @@ "material_bed_temperature": { "label": "Build Plate Temperature", - "description": "The temperature used for the heated build plate. If this is 0, the bed will not heat up for this print.", + "description": "The temperature used for the heated build plate. If this is 0, the bed temperature will not be adjusted.", "unit": "°C", "type": "float", "resolve": "max(extruderValues('material_bed_temperature'))", @@ -3239,7 +3378,6 @@ "unit": "s", "type": "float", "default_value": 10, - "minimum_value": "cool_min_layer_time", "maximum_value_warning": "600", "settable_per_mesh": false, "settable_per_extruder": true @@ -3494,7 +3632,7 @@ "minimum_value_warning": "support_line_width", "default_value": 2.66, "enabled": "support_enable", - "value": "(support_line_width * 100) / support_infill_rate * (2 if support_pattern == 'grid' else (3 if support_pattern == 'triangles' else 1))", + "value": "0 if support_infill_rate == 0 else (support_line_width * 100) / support_infill_rate * (2 if support_pattern == 'grid' else (3 if support_pattern == 'triangles' else 1))", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, "settable_per_extruder": true @@ -3973,16 +4111,6 @@ "limit_to_extruder": "support_infill_extruder_nr", "enabled": "support_enable and support_use_towers", "settable_per_mesh": true - }, - "remove_empty_first_layers": - { - "label": "Remove Empty First Layers", - "description": "Remove empty layers beneath the first printed layer if they are present.", - "type": "bool", - "default_value": true, - "enabled": "not support_enable", - "settable_per_mesh": false, - "settable_per_extruder": false } } }, @@ -4141,30 +4269,6 @@ "settable_per_extruder": true, "limit_to_extruder": "adhesion_extruder_nr" }, - "z_offset_layer_0": - { - "label": "Initial Layer Z Offset", - "description": "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.", - "unit": "mm", - "type": "float", - "default_value": 0, - "minimum_value_warning": "0", - "maximum_value_warning": "layer_height_0", - "enabled": "resolveOrValue('adhesion_type') != 'raft'", - "settable_per_mesh": false, - "settable_per_extruder": false - }, - "z_offset_taper_layers": - { - "label": "Z Offset Taper Layers", - "description": "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.", - "type": "int", - "default_value": 0, - "minimum_value": "0", - "enabled": "resolveOrValue('adhesion_type') != 'raft' and z_offset_layer_0 != 0", - "settable_per_mesh": false, - "settable_per_extruder": false - }, "raft_margin": { "label": "Raft Extra Margin", @@ -4860,6 +4964,18 @@ "default_value": false, "settable_per_mesh": true }, + "meshfix_maximum_resolution": + { + "label": "Maximum Resolution", + "description": "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway.", + "type": "float", + "unit": "mm", + "default_value": 0.01, + "minimum_value": "0.001", + "minimum_value_warning": "0.005", + "maximum_value_warning": "0.1", + "settable_per_mesh": true + }, "multiple_mesh_overlap": { "label": "Merged Meshes Overlap", @@ -4893,6 +5009,16 @@ "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": true + }, + "remove_empty_first_layers": + { + "label": "Remove Empty First Layers", + "description": "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle.", + "type": "bool", + "default_value": true, + "enabled": "not support_enable", + "settable_per_mesh": false, + "settable_per_extruder": false } } }, @@ -5098,7 +5224,8 @@ "default_value": false, "settable_per_mesh": true }, - "support_skip_some_zags": { + "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", @@ -5106,35 +5233,36 @@ "enabled": "support_enable and (support_pattern == 'zigzag')", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, + "settable_per_extruder": true + }, + "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_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", + "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": "0 if support_line_distance == 0 else 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, - "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 - } - } + "settable_per_extruder": true } } }, @@ -5480,6 +5608,36 @@ } } }, + "flow_rate_max_extrusion_offset": + { + "label": "Flow rate compensation max extrusion offset", + "description": "The maximum distance in mm to compensate.", + "unit": "mm", + "type": "float", + "minimum_value": "0", + "maximum_value_warning": "10", + "default_value": 0, + "value": "0", + "enabled": true, + "settable_per_mesh": false, + "settable_per_extruder": false, + "settable_per_meshgroup": false + }, + "flow_rate_extrusion_offset_factor": + { + "label": "Flow rate compensation factor", + "description": "The multiplication factor for the flow rate -> distance translation.", + "unit": "%", + "type": "float", + "minimum_value": "0", + "maximum_value_warning": "100", + "default_value": 100, + "value": "100", + "enabled": true, + "settable_per_mesh": false, + "settable_per_extruder": false, + "settable_per_meshgroup": false + }, "wireframe_enabled": { "label": "Wire Printing", @@ -5835,123 +5993,48 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, - "ironing_enabled": + "adaptive_layer_height_enabled": { - "label": "Enable Ironing", - "description": "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.", + "label": "Use adaptive layers", + "description": "Adaptive layers computes the layer heights depending on the shape of the model.", "type": "bool", "default_value": false, - "limit_to_extruder": "top_bottom_extruder_nr", - "settable_per_mesh": true + "settable_per_mesh": false, + "settable_per_extruder": false, + "settable_per_meshgroup": false }, - "ironing_only_highest_layer": + "adaptive_layer_height_variation": { - "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", - "description": "The pattern to use for ironing top surfaces.", - "type": "enum", - "options": - { - "concentric": "Concentric", - "zigzag": "Zig Zag" - }, - "default_value": "zigzag", - "enabled": "ironing_enabled", - "limit_to_extruder": "top_bottom_extruder_nr", - "settable_per_mesh": true - }, - "ironing_line_spacing": - { - "label": "Ironing Line Spacing", - "description": "The distance between the lines of ironing.", + "label": "Adaptive layers maximum variation", + "description": "The maximum allowed height different from the base layer height in mm.", "type": "float", - "unit": "mm", + "enabled": "adaptive_layer_height_enabled", "default_value": 0.1, - "minimum_value": "0.001", - "maximum_value_warning": "machine_nozzle_tip_outer_diameter", - "enabled": "ironing_enabled", - "limit_to_extruder": "top_bottom_extruder_nr", - "settable_per_mesh": true + "settable_per_mesh": false, + "settable_per_extruder": false, + "settable_per_meshgroup": false }, - "ironing_flow": + "adaptive_layer_height_variation_step": { - "label": "Ironing Flow", - "description": "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface.", + "label": "Adaptive layers variation step size", + "description": "The difference in height of the next layer height compared to the previous one.", "type": "float", - "unit": "%", - "default_value": 10.0, - "minimum_value": "0", - "maximum_value_warning": "50", - "enabled": "ironing_enabled", - "limit_to_extruder": "top_bottom_extruder_nr", - "settable_per_mesh": true + "enabled": "adaptive_layer_height_enabled", + "default_value": 0.01, + "settable_per_mesh": false, + "settable_per_extruder": false, + "settable_per_meshgroup": false }, - "ironing_inset": + "adaptive_layer_height_threshold": { - "label": "Ironing Inset", - "description": "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.", + "label": "Adaptive layers threshold", + "description": "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer.", "type": "float", - "unit": "mm", - "default_value": 0.35, - "value": "wall_line_width_0 / 2", - "minimum_value_warning": "0", - "maximum_value_warning": "wall_line_width_0", - "enabled": "ironing_enabled", - "limit_to_extruder": "top_bottom_extruder_nr", - "settable_per_mesh": true - }, - "speed_ironing": - { - "label": "Ironing Speed", - "description": "The speed at which to pass over the top surface.", - "type": "float", - "unit": "mm/s", - "default_value": 20.0, - "value": "speed_topbottom * 20 / 30", - "minimum_value": "0.001", - "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", - "maximum_value_warning": "100", - "enabled": "ironing_enabled", - "limit_to_extruder": "top_bottom_extruder_nr", - "settable_per_mesh": true - }, - "acceleration_ironing": - { - "label": "Ironing Acceleration", - "description": "The acceleration with which ironing is performed.", - "unit": "mm/s²", - "type": "float", - "minimum_value": "0.1", - "minimum_value_warning": "100", - "maximum_value_warning": "10000", - "default_value": 3000, - "value": "acceleration_topbottom", - "enabled": "resolveOrValue('acceleration_enabled') and ironing_enabled", - "limit_to_extruder": "top_bottom_extruder_nr", - "settable_per_mesh": true - }, - "jerk_ironing": - { - "label": "Ironing Jerk", - "description": "The maximum instantaneous velocity change while performing ironing.", - "unit": "mm/s", - "type": "float", - "minimum_value": "0", - "maximum_value_warning": "50", - "default_value": 20, - "value": "jerk_topbottom", - "enabled": "resolveOrValue('jerk_enabled') and ironing_enabled", - "limit_to_extruder": "top_bottom_extruder_nr", - "settable_per_mesh": true + "enabled": "adaptive_layer_height_enabled", + "default_value": 200.0, + "settable_per_mesh": false, + "settable_per_extruder": false, + "settable_per_meshgroup": false } } }, diff --git a/resources/definitions/grr_neo.def.json b/resources/definitions/grr_neo.def.json index 42c2e75319..847f638fbd 100644 --- a/resources/definitions/grr_neo.def.json +++ b/resources/definitions/grr_neo.def.json @@ -1,5 +1,4 @@ { - "id": "grr_neo", "version": 2, "name": "German RepRap Neo", "inherits": "fdmprinter", diff --git a/resources/definitions/helloBEEprusa.def.json b/resources/definitions/helloBEEprusa.def.json index 660e182187..2699a6c7d7 100644 --- a/resources/definitions/helloBEEprusa.def.json +++ b/resources/definitions/helloBEEprusa.def.json @@ -1,5 +1,4 @@ { - "id": "BEEVERYCREATIVE-helloBEEprusa", "version": 2, "name": "Hello BEE Prusa", "inherits": "fdmprinter", diff --git a/resources/definitions/imade3d_jellybox.def.json b/resources/definitions/imade3d_jellybox.def.json index 0c0f29c070..11df730408 100644 --- a/resources/definitions/imade3d_jellybox.def.json +++ b/resources/definitions/imade3d_jellybox.def.json @@ -1,5 +1,4 @@ { - "id": "imade3d_jellybox", "version": 2, "name": "IMADE3D JellyBOX", "inherits": "fdmprinter", diff --git a/resources/definitions/innovo_inventor.def.json b/resources/definitions/innovo_inventor.def.json index 5fc6c83ca2..5d587f9b30 100644 --- a/resources/definitions/innovo_inventor.def.json +++ b/resources/definitions/innovo_inventor.def.json @@ -1,5 +1,4 @@ { - "id": "innovo-inventor", "version": 2, "name": "Innovo INVENTOR", "inherits": "fdmprinter", @@ -47,7 +46,7 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G28 ; Home extruder\nM107 ; Turn off fan\nG90 ; Absolute positioning\nM82 ; Extruder in absolute mode\nM190 S{material_bed_temperature}\nM104 T0 S{material_print_temperature}\nM109 T0 S{material_print_temperature}\nM104 T1 S{material_print_temperature}\nM109 T1 S{material_print_temperature}\nG32 S3 ; auto level\nG92 E0 ; Reset extruder position" + "default_value": "G28 ; Home extruder\nM107 ; Turn off fan\nG90 ; Absolute positioning\nM82 ; Extruder in absolute mode\nM190 S{material_bed_temperature}\nM104 T0 S{material_print_temperature}\nM109 T0 S{material_print_temperature}\nM104 T1 S{material_print_temperature}\nM109 T1 S{material_print_temperature}\n;G32 S3 ; auto level\nG92 E0 ; Reset extruder position" }, "machine_end_gcode": { "default_value": "M104 S0 ; turn off extruders\nM140 S0 ; heated bed heater off\nG91 ; relative positioning\nG1 E-2 F5000; retract 2mm\nG28 Z; move bed down\nG90 ; absolute positioning\nM84 ; disable motors" diff --git a/resources/definitions/julia.def.json b/resources/definitions/julia.def.json index fe10473596..7fdee30272 100644 --- a/resources/definitions/julia.def.json +++ b/resources/definitions/julia.def.json @@ -1,5 +1,4 @@ { - "id": "julia", "name": "Julia", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/kemiq_q2_beta.def.json b/resources/definitions/kemiq_q2_beta.def.json index d5bb8a895e..7946fbfad2 100644 --- a/resources/definitions/kemiq_q2_beta.def.json +++ b/resources/definitions/kemiq_q2_beta.def.json @@ -1,5 +1,4 @@ { - "id": "kemiq_q2_beta", "version": 2, "name": "Kemiq Q2 Beta", "inherits": "fdmprinter", diff --git a/resources/definitions/kemiq_q2_gama.def.json b/resources/definitions/kemiq_q2_gama.def.json index 1cb1b45c21..64051606f2 100644 --- a/resources/definitions/kemiq_q2_gama.def.json +++ b/resources/definitions/kemiq_q2_gama.def.json @@ -1,5 +1,4 @@ { - "id": "kemiq_q2_gama", "version": 2, "name": "Kemiq Q2 Gama", "inherits": "fdmprinter", diff --git a/resources/definitions/kossel_mini.def.json b/resources/definitions/kossel_mini.def.json index d915c148a3..df9c29b548 100644 --- a/resources/definitions/kossel_mini.def.json +++ b/resources/definitions/kossel_mini.def.json @@ -1,5 +1,4 @@ { - "id": "kossel_mini", "version": 2, "name": "Kossel Mini", "inherits": "fdmprinter", diff --git a/resources/definitions/kossel_pro.def.json b/resources/definitions/kossel_pro.def.json index 58f1c7f94e..fa0cb571fa 100644 --- a/resources/definitions/kossel_pro.def.json +++ b/resources/definitions/kossel_pro.def.json @@ -1,5 +1,4 @@ { - "id": "kossel_pro", "version": 2, "name": "Kossel Pro", "inherits": "fdmprinter", diff --git a/resources/definitions/kupido.def.json b/resources/definitions/kupido.def.json index 8dec63f6ec..b16ba62ccc 100644 --- a/resources/definitions/kupido.def.json +++ b/resources/definitions/kupido.def.json @@ -1,5 +1,4 @@ { - "id": "kupido", "name": "Kupido", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/m180.def.json b/resources/definitions/m180.def.json index 1e8ac1767b..71aa729b7e 100644 --- a/resources/definitions/m180.def.json +++ b/resources/definitions/m180.def.json @@ -1,5 +1,4 @@ { - "id": "m180", "version": 2, "name": "Malyan M180", "inherits": "fdmprinter", diff --git a/resources/definitions/makeR_pegasus.def.json b/resources/definitions/makeR_pegasus.def.json index b164b2983f..fb5a7dce75 100644 --- a/resources/definitions/makeR_pegasus.def.json +++ b/resources/definitions/makeR_pegasus.def.json @@ -1,5 +1,4 @@ { - "id": "makeR_pegasus", "version": 2, "name": "makeR Pegasus", "inherits": "fdmprinter", diff --git a/resources/definitions/makeR_prusa_tairona_i3.def.json b/resources/definitions/makeR_prusa_tairona_i3.def.json index caccb2ebe6..a82fffd254 100644 --- a/resources/definitions/makeR_prusa_tairona_i3.def.json +++ b/resources/definitions/makeR_prusa_tairona_i3.def.json @@ -1,5 +1,4 @@ { - "id": "makeR_prusa_tairona_i3", "version": 2, "name": "makeR Prusa Tairona i3", "inherits": "fdmprinter", diff --git a/resources/definitions/makeit_pro_l.def.json b/resources/definitions/makeit_pro_l.def.json index 36f7354b64..2a64a6729c 100644 --- a/resources/definitions/makeit_pro_l.def.json +++ b/resources/definitions/makeit_pro_l.def.json @@ -1,5 +1,4 @@ { - "id": "makeit_pro_l", "version": 2, "name": "MAKEiT Pro-L", "inherits": "fdmprinter", diff --git a/resources/definitions/makeit_pro_m.def.json b/resources/definitions/makeit_pro_m.def.json index f45e0b6635..43a5440165 100644 --- a/resources/definitions/makeit_pro_m.def.json +++ b/resources/definitions/makeit_pro_m.def.json @@ -1,5 +1,4 @@ { - "id": "makeit_pro_m", "version": 2, "name": "MAKEiT Pro-M", "inherits": "fdmprinter", diff --git a/resources/definitions/maker_starter.def.json b/resources/definitions/maker_starter.def.json index 8358ba0064..e7e6cb5dcd 100644 --- a/resources/definitions/maker_starter.def.json +++ b/resources/definitions/maker_starter.def.json @@ -1,5 +1,4 @@ { - "id": "maker_starter", "version": 2, "name": "3DMaker Starter", "inherits": "fdmprinter", diff --git a/resources/definitions/makerbotreplicator.def.json b/resources/definitions/makerbotreplicator.def.json index 7844976912..3d690990ce 100644 --- a/resources/definitions/makerbotreplicator.def.json +++ b/resources/definitions/makerbotreplicator.def.json @@ -1,5 +1,4 @@ { - "id": "makerbotreplicator", "name": "MakerBotReplicator", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/mankati_fullscale_xt_plus.def.json b/resources/definitions/mankati_fullscale_xt_plus.def.json index 6c3115b1dc..15ba889efc 100644 --- a/resources/definitions/mankati_fullscale_xt_plus.def.json +++ b/resources/definitions/mankati_fullscale_xt_plus.def.json @@ -1,5 +1,4 @@ { - "id": "mankati_fullscale_xt_plus", "version": 2, "name": "Mankati Fullscale XT Plus", "inherits": "fdmprinter", diff --git a/resources/definitions/mendel90.def.json b/resources/definitions/mendel90.def.json index 60f3307758..95f47d7aac 100644 --- a/resources/definitions/mendel90.def.json +++ b/resources/definitions/mendel90.def.json @@ -1,5 +1,4 @@ { - "id": "mendel90", "name": "Mendel90", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/ord.def.json b/resources/definitions/ord.def.json index d9909c4f1f..3238583ceb 100644 --- a/resources/definitions/ord.def.json +++ b/resources/definitions/ord.def.json @@ -1,5 +1,4 @@ { - "id": "ord", "name": "RoVa3D", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/peopoly_moai.def.json b/resources/definitions/peopoly_moai.def.json index 6b0e0ae547..78aca31dae 100644 --- a/resources/definitions/peopoly_moai.def.json +++ b/resources/definitions/peopoly_moai.def.json @@ -1,5 +1,4 @@ { - "id": "peopoly_moai", "version": 2, "name": "Peopoly Moai", "inherits": "fdmprinter", diff --git a/resources/definitions/printrbot_play.def.json b/resources/definitions/printrbot_play.def.json index 452b5e131f..36ef93e60c 100644 --- a/resources/definitions/printrbot_play.def.json +++ b/resources/definitions/printrbot_play.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_play", "version": 2, "name": "Printrbot Play", "inherits": "fdmprinter", diff --git a/resources/definitions/printrbot_play_heated.def.json b/resources/definitions/printrbot_play_heated.def.json index 02157a0913..9ca365a5c0 100644 --- a/resources/definitions/printrbot_play_heated.def.json +++ b/resources/definitions/printrbot_play_heated.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_play_heated", "version": 2, "name": "Printrbot Play (Heated Bed)", "inherits": "printrbot_play", diff --git a/resources/definitions/printrbot_simple.def.json b/resources/definitions/printrbot_simple.def.json index eba47c88ae..7c86617ce5 100644 --- a/resources/definitions/printrbot_simple.def.json +++ b/resources/definitions/printrbot_simple.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_simple", "version": 2, "name": "Printrbot Simple", "inherits": "fdmprinter", diff --git a/resources/definitions/printrbot_simple_extended.def.json b/resources/definitions/printrbot_simple_extended.def.json index b08e0c7d5d..95395efb23 100644 --- a/resources/definitions/printrbot_simple_extended.def.json +++ b/resources/definitions/printrbot_simple_extended.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_simple_extended", "version": 2, "name": "Printrbot Simple Metal Extended", "inherits": "fdmprinter", diff --git a/resources/definitions/prusa_i3.def.json b/resources/definitions/prusa_i3.def.json index 4f0f5b13d7..4599763397 100644 --- a/resources/definitions/prusa_i3.def.json +++ b/resources/definitions/prusa_i3.def.json @@ -1,5 +1,4 @@ { - "id": "prusa_i3", "version": 2, "name": "Prusa i3", "inherits": "fdmprinter", diff --git a/resources/definitions/prusa_i3_mk2.def.json b/resources/definitions/prusa_i3_mk2.def.json index ef3ef8159e..e58eb4d903 100644 --- a/resources/definitions/prusa_i3_mk2.def.json +++ b/resources/definitions/prusa_i3_mk2.def.json @@ -1,11 +1,10 @@ { - "id": "prusa_i3_mk2", "version": 2, "name": "Prusa i3 Mk2", "inherits": "fdmprinter", "metadata": { "visible": true, - "author": "Apsu", + "author": "Apsu, Nounours2099", "manufacturer": "Prusa Research", "file_formats": "text/x-gcode", "icon": "icon_ultimaker2", @@ -41,7 +40,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\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" + "default_value": "G21 ; set units to millimeters\nG90 ; use absolute positioning\nM82 ; absolute extrusion mode\nM104 S{material_print_temperature_layer_0} ; set extruder temp\nM140 S{material_bed_temperature_layer_0} ; set bed temp\nM190 S{material_bed_temperature_layer_0} ; wait for bed temp\nM109 S{material_print_temperature_layer_0} ; 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" diff --git a/resources/definitions/prusa_i3_xl.def.json b/resources/definitions/prusa_i3_xl.def.json index e49838c95f..b27c460554 100644 --- a/resources/definitions/prusa_i3_xl.def.json +++ b/resources/definitions/prusa_i3_xl.def.json @@ -1,5 +1,4 @@ { - "id": "prusa_i3_xl", "version": 2, "name": "Prusa i3 xl", "inherits": "fdmprinter", diff --git a/resources/definitions/punchtec_connect_xl.def.json b/resources/definitions/punchtec_connect_xl.def.json index 16ba59dcb7..02d3562b41 100644 --- a/resources/definitions/punchtec_connect_xl.def.json +++ b/resources/definitions/punchtec_connect_xl.def.json @@ -1,5 +1,4 @@ { - "id": "punchtec_connect_xl", "name": "Punchtec Connect XL", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/raise3D_N2_dual.def.json b/resources/definitions/raise3D_N2_dual.def.json index d3d8f0e651..fe0a2bf3b8 100644 --- a/resources/definitions/raise3D_N2_dual.def.json +++ b/resources/definitions/raise3D_N2_dual.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_dual", "version": 2, "name": "Raise3D N2 Dual", "inherits": "fdmprinter", @@ -33,7 +32,7 @@ }, "machine_heated_bed": { "default_value": true - }, + }, "machine_nozzle_size": { "default_value": 0.4 }, @@ -55,9 +54,6 @@ "machine_min_cool_heat_time_window": { "default_value": 3600 }, - "machine_nozzle_size": { - "default_value": 0.4 - }, "material_diameter": { "default_value": 1.75 }, diff --git a/resources/definitions/raise3D_N2_plus_dual.def.json b/resources/definitions/raise3D_N2_plus_dual.def.json index f49af40355..bddb2587e2 100644 --- a/resources/definitions/raise3D_N2_plus_dual.def.json +++ b/resources/definitions/raise3D_N2_plus_dual.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_plus_dual", "version": 2, "name": "Raise3D N2 Plus Dual", "inherits": "fdmprinter", @@ -55,9 +54,6 @@ "machine_min_cool_heat_time_window": { "default_value": 3600 }, - "machine_nozzle_size": { - "default_value": 0.4 - }, "material_diameter": { "default_value": 1.75 }, diff --git a/resources/definitions/raise3D_N2_plus_single.def.json b/resources/definitions/raise3D_N2_plus_single.def.json index 5f10666528..ffcb723a27 100644 --- a/resources/definitions/raise3D_N2_plus_single.def.json +++ b/resources/definitions/raise3D_N2_plus_single.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_plus_single", "version": 2, "name": "Raise3D N2 Plus Single", "inherits": "fdmprinter", @@ -50,9 +49,6 @@ "machine_min_cool_heat_time_window": { "default_value": 3600 }, - "machine_nozzle_size": { - "default_value": 0.4 - }, "material_diameter": { "default_value": 1.75 }, diff --git a/resources/definitions/raise3D_N2_single.def.json b/resources/definitions/raise3D_N2_single.def.json index 225794130c..1d01e479b1 100644 --- a/resources/definitions/raise3D_N2_single.def.json +++ b/resources/definitions/raise3D_N2_single.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_single", "version": 2, "name": "Raise3D N2 Single", "inherits": "fdmprinter", @@ -50,9 +49,6 @@ "machine_min_cool_heat_time_window": { "default_value": 3600 }, - "machine_nozzle_size": { - "default_value": 0.4 - }, "material_diameter": { "default_value": 1.75 }, diff --git a/resources/definitions/renkforce_rf100.def.json b/resources/definitions/renkforce_rf100.def.json index 55e764800a..6f6de81643 100644 --- a/resources/definitions/renkforce_rf100.def.json +++ b/resources/definitions/renkforce_rf100.def.json @@ -1,5 +1,4 @@ { - "id": "RF100", "version": 2, "name": "Renkforce RF100", "inherits": "fdmprinter", diff --git a/resources/definitions/rigid3d.def.json b/resources/definitions/rigid3d.def.json index 75e435f880..97b0ebd276 100644 --- a/resources/definitions/rigid3d.def.json +++ b/resources/definitions/rigid3d.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d", "name": "Rigid3D", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/rigid3d_3rdgen.def.json b/resources/definitions/rigid3d_3rdgen.def.json index 3191817ecd..46c22bfa57 100644 --- a/resources/definitions/rigid3d_3rdgen.def.json +++ b/resources/definitions/rigid3d_3rdgen.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_3rdgen", "name": "Rigid3D 3rdGen", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/rigid3d_hobby.def.json b/resources/definitions/rigid3d_hobby.def.json index 02e3cc514c..872cc3e6f4 100644 --- a/resources/definitions/rigid3d_hobby.def.json +++ b/resources/definitions/rigid3d_hobby.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_hobby", "name": "Rigid3D Hobby", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/rigid3d_zero.def.json b/resources/definitions/rigid3d_zero.def.json index 7e99112621..56fb8284c0 100644 --- a/resources/definitions/rigid3d_zero.def.json +++ b/resources/definitions/rigid3d_zero.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_zero", "name": "Rigid3D Zero", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/rigid3d_zero2.def.json b/resources/definitions/rigid3d_zero2.def.json index e2a77db895..27ceb87c29 100644 --- a/resources/definitions/rigid3d_zero2.def.json +++ b/resources/definitions/rigid3d_zero2.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_zero2", "name": "Rigid3D Zero2", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/rigidbot.def.json b/resources/definitions/rigidbot.def.json index d183554947..bed10025d7 100644 --- a/resources/definitions/rigidbot.def.json +++ b/resources/definitions/rigidbot.def.json @@ -1,5 +1,4 @@ { - "id": "rigidbot", "version": 2, "name": "RigidBot", "inherits": "fdmprinter", diff --git a/resources/definitions/rigidbot_big.def.json b/resources/definitions/rigidbot_big.def.json index 33c4fd3d27..08cf3b2ab8 100644 --- a/resources/definitions/rigidbot_big.def.json +++ b/resources/definitions/rigidbot_big.def.json @@ -1,5 +1,4 @@ { - "id": "rigidbotbig", "version": 2, "name": "RigidBotBig", "inherits": "fdmprinter", diff --git a/resources/definitions/robo_3d_r1.def.json b/resources/definitions/robo_3d_r1.def.json index 88b3fba01f..b179779c59 100644 --- a/resources/definitions/robo_3d_r1.def.json +++ b/resources/definitions/robo_3d_r1.def.json @@ -1,5 +1,4 @@ { - "id": "robo_3d_r1", "name": "Robo 3D R1", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/tam.def.json b/resources/definitions/tam.def.json index 93ebe43ea6..20bc96358d 100644 --- a/resources/definitions/tam.def.json +++ b/resources/definitions/tam.def.json @@ -1,5 +1,4 @@ { - "id": "typeamachines", "version": 2, "name": "Type A Machines Series 1 2014", "inherits": "fdmprinter", diff --git a/resources/definitions/tevo_blackwidow.def.json b/resources/definitions/tevo_blackwidow.def.json new file mode 100644 index 0000000000..9d7166f4a2 --- /dev/null +++ b/resources/definitions/tevo_blackwidow.def.json @@ -0,0 +1,54 @@ +{ + "version": 2, + "name": "Tevo Black Widow", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "TheTobby", + "manufacturer": "Tevo", + "file_formats": "text/x-gcode", + "icon": "icon_ultimaker2", + "has_materials": false, + "has_machine_quality": true, + "platform": "prusai3_platform.stl", + "preferred_quality": "*normal*" + }, + "overrides": { + "machine_name": { + "default_value": "Tevo Black Widow" + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_width": { + "default_value": 350 + }, + "machine_height": { + "default_value": 250 + }, + "machine_depth": { + "default_value": 250 + }, + "machine_center_is_zero": { + "default_value": false + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "material_diameter": { + "default_value": 1.75 + }, + "gantry_height": { + "default_value": 0 + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": { + "default_value": "M280 P0 S160 ; release BLTouch alarm (OK to send for Non BLTouch)\nM420 Z2 ; set fade leveling at 2mm for BLTouch (OK to send for Non BLTouch)\nG28 ; home all\nG29 ; probe bed\nG92 E0 ;zero the extruded length\nG1 X0.0 Y50.0 Z10.0 F3600\n; perform wipe and prime\nG1 Z0.0 F1000\nG1 Z0.2 Y70.0 E9.0 F1000.0 ; prime\nG1 Y100.0 E12.5 F1000.0 ; prime\nG92 E0 ; zero extruder again\nM117 Printing..." + }, + "machine_end_gcode": { + "default_value": "G92 E0 ; zero the extruded length again\nG1 E-1.5 F500 ; retract the filament to release some of the pressure\nM104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nG28 X0 ; home X axis\nG1 Y245 ; move Y axis to end position\nM84 ; disable motors\nM107 ; turn off fan" + } + } +} diff --git a/resources/definitions/tevo_tarantula.def.json b/resources/definitions/tevo_tarantula.def.json index 29bfae77a4..a9f9cefff2 100644 --- a/resources/definitions/tevo_tarantula.def.json +++ b/resources/definitions/tevo_tarantula.def.json @@ -1,5 +1,4 @@ { - "id": "tevo_tarantula", "version": 2, "name": "Tevo Tarantula", "inherits": "fdmprinter", @@ -67,7 +66,7 @@ "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." }, "machine_end_gcode": { - "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning\nG1 Y200 F3600 ;move baseplate to front for easier access to printed object" + "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG90 ;absolute positioning\nG1 X0 Y200 F3600 ;move extruder out of the way by moving the baseplate to the front for easier access to printed object\nM84 ;steppers off" } } } diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index 797a05e324..1ca7444d04 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_base", "version": 2, "name": "Ultimaker", "inherits": "fdmprinter", diff --git a/resources/definitions/ultimaker2.def.json b/resources/definitions/ultimaker2.def.json index 6974e61938..038071574f 100644 --- a/resources/definitions/ultimaker2.def.json +++ b/resources/definitions/ultimaker2.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2", "version": 2, "name": "Ultimaker 2", "inherits": "ultimaker", diff --git a/resources/definitions/ultimaker2_extended.def.json b/resources/definitions/ultimaker2_extended.def.json index 16f9e6f25e..94667b154d 100644 --- a/resources/definitions/ultimaker2_extended.def.json +++ b/resources/definitions/ultimaker2_extended.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_extended", "version": 2, "name": "Ultimaker 2 Extended", "inherits": "ultimaker2", diff --git a/resources/definitions/ultimaker2_extended_plus.def.json b/resources/definitions/ultimaker2_extended_plus.def.json index 525aaf5b72..adde89d858 100644 --- a/resources/definitions/ultimaker2_extended_plus.def.json +++ b/resources/definitions/ultimaker2_extended_plus.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_extended_plus", "version": 2, "name": "Ultimaker 2 Extended+", "inherits": "ultimaker2_plus", diff --git a/resources/definitions/ultimaker2_go.def.json b/resources/definitions/ultimaker2_go.def.json index 9fb94022ce..e98381a7d7 100644 --- a/resources/definitions/ultimaker2_go.def.json +++ b/resources/definitions/ultimaker2_go.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_go", "version": 2, "name": "Ultimaker 2 Go", "inherits": "ultimaker2", diff --git a/resources/definitions/ultimaker2_plus.def.json b/resources/definitions/ultimaker2_plus.def.json index 7214e6b7fe..58833904d2 100644 --- a/resources/definitions/ultimaker2_plus.def.json +++ b/resources/definitions/ultimaker2_plus.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_plus", "version": 2, "name": "Ultimaker 2+", "inherits": "ultimaker2", diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index 05e39e365c..e7b9b6255e 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker3", "version": 2, "name": "Ultimaker 3", "inherits": "ultimaker", diff --git a/resources/definitions/ultimaker3_extended.def.json b/resources/definitions/ultimaker3_extended.def.json index e47ccf4ba3..385199f4f1 100644 --- a/resources/definitions/ultimaker3_extended.def.json +++ b/resources/definitions/ultimaker3_extended.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker3_extended", "version": 2, "name": "Ultimaker 3 Extended", "inherits": "ultimaker3", diff --git a/resources/definitions/ultimaker_original.def.json b/resources/definitions/ultimaker_original.def.json index ef2f5fae5c..a0a486429b 100644 --- a/resources/definitions/ultimaker_original.def.json +++ b/resources/definitions/ultimaker_original.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_original", "version": 2, "name": "Ultimaker Original", "inherits": "ultimaker", diff --git a/resources/definitions/ultimaker_original_dual.def.json b/resources/definitions/ultimaker_original_dual.def.json index 8745434360..a1dbea6b6d 100644 --- a/resources/definitions/ultimaker_original_dual.def.json +++ b/resources/definitions/ultimaker_original_dual.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_original_dual", "version": 2, "name": "Ultimaker Original Dual Extrusion", "inherits": "ultimaker", diff --git a/resources/definitions/ultimaker_original_plus.def.json b/resources/definitions/ultimaker_original_plus.def.json index 8e401d550c..115e1e2752 100644 --- a/resources/definitions/ultimaker_original_plus.def.json +++ b/resources/definitions/ultimaker_original_plus.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_original_plus", "version": 2, "name": "Ultimaker Original+", "inherits": "ultimaker_original", diff --git a/resources/definitions/uniqbot_one.def.json b/resources/definitions/uniqbot_one.def.json index 410f7e57a6..ad14728269 100644 --- a/resources/definitions/uniqbot_one.def.json +++ b/resources/definitions/uniqbot_one.def.json @@ -1,5 +1,4 @@ { - "id": "uniqbot_one", "version": 2, "name": "Uniqbot", "inherits": "fdmprinter", diff --git a/resources/definitions/vertex_delta_k8800.def.json b/resources/definitions/vertex_delta_k8800.def.json index b832620942..736d17e17a 100644 --- a/resources/definitions/vertex_delta_k8800.def.json +++ b/resources/definitions/vertex_delta_k8800.def.json @@ -1,5 +1,4 @@ { - "id": "K8800", "name": "Vertex Delta K8800", "version": 2, "inherits": "fdmprinter", @@ -10,6 +9,9 @@ "author": "Velleman" }, "overrides": { + "material_diameter": { + "default_value": 1.75 + }, "machine_width": { "default_value": 200 }, @@ -40,7 +42,7 @@ "machine_head_shape_max_y": { "default_value": 0 }, - "machine_nozzle_gantry_distance": { + "gantry_height": { "default_value": 0 }, "machine_nozzle_offset_x_1": { diff --git a/resources/definitions/vertex_k8400.def.json b/resources/definitions/vertex_k8400.def.json index a23e1fc893..8abf9acd7f 100644 --- a/resources/definitions/vertex_k8400.def.json +++ b/resources/definitions/vertex_k8400.def.json @@ -1,5 +1,4 @@ { - "id": "vertex_k8400", "version": 2, "name": "Vertex K8400", "inherits": "fdmprinter", diff --git a/resources/definitions/vertex_k8400_dual.def.json b/resources/definitions/vertex_k8400_dual.def.json index 9e24bab5d3..fc006a1d5f 100644 --- a/resources/definitions/vertex_k8400_dual.def.json +++ b/resources/definitions/vertex_k8400_dual.def.json @@ -1,5 +1,4 @@ { - "id": "vertex_k8400_dual", "version": 2, "name": "Vertex K8400 Dual", "inherits": "fdmprinter", diff --git a/resources/definitions/zone3d_printer.def.json b/resources/definitions/zone3d_printer.def.json index a1ed56c7ef..bac8968951 100644 --- a/resources/definitions/zone3d_printer.def.json +++ b/resources/definitions/zone3d_printer.def.json @@ -1,5 +1,4 @@ { - "id": "zone3d_printer", "name": "Zone3d Printer", "version": 2, "inherits": "fdmprinter", diff --git a/resources/extruders/builder_premium_large_front.def.json b/resources/extruders/builder_premium_large_front.def.json new file mode 100644 index 0000000000..159682dc1c --- /dev/null +++ b/resources/extruders/builder_premium_large_front.def.json @@ -0,0 +1,27 @@ +{ + "id": "builder_premium_large_front", + "version": 2, + "name": "Front Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "builder_premium_large", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.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" }, + "extruder_prime_pos_abs": { "default_value": true } + } +} diff --git a/resources/extruders/builder_premium_large_rear.def.json b/resources/extruders/builder_premium_large_rear.def.json new file mode 100644 index 0000000000..5e9cc062ae --- /dev/null +++ b/resources/extruders/builder_premium_large_rear.def.json @@ -0,0 +1,27 @@ +{ + "id": "builder_premium_large_rear", + "version": 2, + "name": "Rear Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "builder_premium_large", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.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" }, + "extruder_prime_pos_abs": { "default_value": true } + } +} diff --git a/resources/extruders/builder_premium_medium_front.def.json b/resources/extruders/builder_premium_medium_front.def.json new file mode 100644 index 0000000000..9a330b4f4b --- /dev/null +++ b/resources/extruders/builder_premium_medium_front.def.json @@ -0,0 +1,27 @@ +{ + "id": "builder_premium_medium_front", + "version": 2, + "name": "Front Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "builder_premium_medium", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.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" }, + "extruder_prime_pos_abs": { "default_value": true } + } +} diff --git a/resources/extruders/builder_premium_medium_rear.def.json b/resources/extruders/builder_premium_medium_rear.def.json new file mode 100644 index 0000000000..49d4734306 --- /dev/null +++ b/resources/extruders/builder_premium_medium_rear.def.json @@ -0,0 +1,27 @@ +{ + "id": "builder_premium_medium_rear", + "version": 2, + "name": "Rear Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "builder_premium_medium", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.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" }, + "extruder_prime_pos_abs": { "default_value": true } + } +} diff --git a/resources/extruders/builder_premium_small_front.def.json b/resources/extruders/builder_premium_small_front.def.json new file mode 100644 index 0000000000..2e6293d153 --- /dev/null +++ b/resources/extruders/builder_premium_small_front.def.json @@ -0,0 +1,27 @@ +{ + "id": "builder_premium_small_front", + "version": 2, + "name": "Front Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "builder_premium_small", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.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" }, + "extruder_prime_pos_abs": { "default_value": true } + } +} diff --git a/resources/extruders/builder_premium_small_rear.def.json b/resources/extruders/builder_premium_small_rear.def.json new file mode 100644 index 0000000000..d1606cdd79 --- /dev/null +++ b/resources/extruders/builder_premium_small_rear.def.json @@ -0,0 +1,27 @@ +{ + "id": "builder_premium_small_rear", + "version": 2, + "name": "Rear Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "builder_premium_small", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0.0 }, + "machine_nozzle_offset_y": { "default_value": 0.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" }, + "extruder_prime_pos_abs": { "default_value": true } + } +} diff --git a/resources/extruders/cartesio_extruder_0.def.json b/resources/extruders/cartesio_extruder_0.def.json index f1423f3530..5558d9325e 100644 --- a/resources/extruders/cartesio_extruder_0.def.json +++ b/resources/extruders/cartesio_extruder_0.def.json @@ -1,7 +1,7 @@ { "id": "cartesio_extruder_0", "version": 2, - "name": "Extruder 0", + "name": "Extruder 1", "inherits": "fdmextruder", "metadata": { "machine": "cartesio", diff --git a/resources/extruders/cartesio_extruder_1.def.json b/resources/extruders/cartesio_extruder_1.def.json index 402553ff96..f8350f8091 100644 --- a/resources/extruders/cartesio_extruder_1.def.json +++ b/resources/extruders/cartesio_extruder_1.def.json @@ -1,7 +1,7 @@ { "id": "cartesio_extruder_1", "version": 2, - "name": "Extruder 1", + "name": "Extruder 2", "inherits": "fdmextruder", "metadata": { "machine": "cartesio", diff --git a/resources/extruders/cartesio_extruder_2.def.json b/resources/extruders/cartesio_extruder_2.def.json index e8f47772cb..bfc10e75c3 100644 --- a/resources/extruders/cartesio_extruder_2.def.json +++ b/resources/extruders/cartesio_extruder_2.def.json @@ -1,7 +1,7 @@ { "id": "cartesio_extruder_2", "version": 2, - "name": "Extruder 2", + "name": "Extruder 3", "inherits": "fdmextruder", "metadata": { "machine": "cartesio", diff --git a/resources/extruders/cartesio_extruder_3.def.json b/resources/extruders/cartesio_extruder_3.def.json index a3e435470a..f0be53e564 100644 --- a/resources/extruders/cartesio_extruder_3.def.json +++ b/resources/extruders/cartesio_extruder_3.def.json @@ -1,7 +1,7 @@ { "id": "cartesio_extruder_3", "version": 2, - "name": "Extruder 3", + "name": "Extruder 4", "inherits": "fdmextruder", "metadata": { "machine": "cartesio", diff --git a/resources/i18n/cura.pot b/resources/i18n/cura.pot index fb4b9ed0d6..be6613ebf5 100644 --- a/resources/i18n/cura.pot +++ b/resources/i18n/cura.pot @@ -6,7 +6,7 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Cura 3.0\n" +"Project-Id-Version: Cura 3.1\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" @@ -18,66 +18,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Print aborted" -msgstr "" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Blocked" -msgstr "" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Action required" -msgstr "" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Can't start print" -msgstr "" - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is not set up to host a group of Ultimaker 3 printers." -msgstr "" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label" -msgid "Finishes at: " -msgstr "" - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is the host for a group of %1 Ultimaker 3 printers." -msgstr "" - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "" - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Print finished" -msgstr "" - -#: Manually added for resources/Cura/Cura.qml -msgctxt "@title:menu menubar:toplevel" -msgid "P&lugins" -msgstr "" - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Browse plugins..." -msgstr "" - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Installed plugins..." -msgstr "" - #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" @@ -115,19 +55,17 @@ 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:428 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/3MFReader/WorkspaceDialog.qml:376 #: /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 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:253 msgctxt "@action:button" msgid "Cancel" msgstr "" @@ -154,7 +92,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@action:button" -msgid "Open Connect.." +msgid "Open Connect..." msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 @@ -162,7 +100,7 @@ msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "" @@ -197,39 +135,40 @@ msgctxt "@info:status" msgid "Connected via USB" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 msgctxt "@info:title" -msgid "Print Details" +msgid "Printer Unavailable" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 msgctxt "@info:title" msgid "USB Printing" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 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/USBPrinterOutputDevice.py:461 #: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 msgctxt "@info:title" msgid "Warning" msgstr "" @@ -293,11 +232,11 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "" #: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 msgctxt "@info:title" msgid "Error" msgstr "" @@ -346,137 +285,115 @@ msgctxt "@item:intext" msgid "Removable Drive" 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:479 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:502 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@action:button" msgid "Retry" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:375 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:385 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:371 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:392 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:384 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:405 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:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 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:392 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 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:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 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:487 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 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:649 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:666 #, python-format msgctxt "@info:status" msgid "" @@ -484,48 +401,42 @@ msgid "" "%s." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:650 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:667 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 #, 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:667 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 #, 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:676 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 #, 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:686 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 #, 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:700 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 #, 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:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:741 #, python-brace-format msgctxt "@label" msgid "" @@ -533,14 +444,12 @@ msgid "" "performed on the printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:729 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 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:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 msgctxt "@label" msgid "" "There is a mismatch between the configuration or calibration of the printer " @@ -548,68 +457,65 @@ msgid "" "that are inserted in your printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:736 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +msgctxt "@info:status" +msgid "" +"Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:status" msgid "Sending data to printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:title" msgid "Sending Data" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 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:1034 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 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:1046 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 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:1193 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 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:1195 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 msgctxt "@label" msgid "" "The PrintCores and/or materials on your printer differ from those within " @@ -617,18 +523,12 @@ msgid "" "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/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:112 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:104 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:113 #, python-brace-format msgctxt "Count is number of printers." msgid "" @@ -636,85 +536,109 @@ msgid "" "printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 #, 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:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 #, 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: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:212 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 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:425 -#, python-brace-format -msgctxt "@info:progress" -msgid "Sending {file_name} to group {cluster_name}" -msgstr "" - -#: /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:503 -msgctxt "@action:button" -msgid "Show print jobs" -msgstr "" - -#: /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:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 #, 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label" +msgid "Unknown" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#, python-brace-format +msgctxt "@info:status" +msgid "Printer '{printer_name}' has finished printing '{job_name}'." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +msgctxt "@info:status" +msgid "Print finished" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 +msgctxt "@label:status" +msgid "Action required" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +msgctxt "@action" +msgid "Connect via Network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 #, 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." +"New features are available for your {machine_name}! It is recommended to " +"update the firmware on your printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 #, 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 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 msgctxt "@action:button" -msgid "Download" +msgid "How to update" msgstr "" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 msgctxt "@info" msgid "Could not access update information." msgstr "" @@ -747,7 +671,22 @@ msgctxt "@info:status" msgid "Error while starting %s!" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Simulation view" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +msgctxt "@info:status" +msgid "Cura does not accurately display layers when Wire Printing is enabled" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:101 +msgctxt "@info:title" +msgid "Simulation View" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 msgid "Modify G-Code" msgstr "" @@ -779,21 +718,6 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 -msgctxt "@item:inlistbox" -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 "" - -#: /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" @@ -828,8 +752,9 @@ msgstr "" #: /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 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 msgctxt "@info:title" msgid "Unable to slice" msgstr "" @@ -842,26 +767,34 @@ msgid "" "errors: {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:306 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#, python-brace-format +msgctxt "@info:status" +msgid "" +"Unable to slice due to some per-model settings. The following settings have " +"errors on one or more models: {error_labels}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 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:315 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 msgctxt "@info:status" msgid "" "Nothing to slice because none of the models fit the build volume. Please " "scale or rotate models to fit." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:65 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:status" msgid "Processing Layers" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:title" msgid "Information" msgstr "" @@ -876,14 +809,41 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:475 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23 +msgid "Install" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 +msgid "" +"Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It " +"is not set to a directory." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81 +msgid "Successfully installed Siemens NX Cura plugin." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 +msgid "" +"Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 +msgid "" +"Failed to install Siemens NX plugin. Could not set environment variable " +"UGII_USER_DIR for Siemens NX." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 msgctxt "@title:tab" msgid "Recommended" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Custom" msgstr "" @@ -894,29 +854,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 msgctxt "@label" msgid "Nozzle" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 -msgctxt "@menuitem" -msgid "Browse plugins" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 msgctxt "@info:tile" msgid "Warning" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 msgctxt "@window:title" msgid "Plugin browser" msgstr "" @@ -931,18 +886,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:254 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 msgctxt "@info:status" msgid "Parsing G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 msgctxt "@info:title" msgid "G-code Details" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 msgctxt "@info:generic" msgid "" "Make sure the g-code is suitable for your printer and printer configuration " @@ -986,73 +941,78 @@ msgctxt "@action" msgid "Level build plate" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 msgctxt "@tooltip" msgid "Outer Wall" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 msgctxt "@tooltip" msgid "Inner Walls" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 msgctxt "@tooltip" msgid "Skin" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 msgctxt "@tooltip" msgid "Infill" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 msgctxt "@tooltip" msgid "Support Infill" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 msgctxt "@tooltip" msgid "Support Interface" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Support" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" msgid "Skirt" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 msgctxt "@tooltip" msgid "Travel" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Retractions" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Other" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +msgctxt "@label unknown material" +msgid "Unknown" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 msgctxt "@item:material" msgid "No material loaded" msgstr "" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 msgctxt "@item:material" msgid "Unknown material" msgstr "" @@ -1079,13 +1039,13 @@ msgid "Can't Find Location" msgstr "" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 msgctxt "@title:window" msgid "File Already Exists" msgstr "" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "" @@ -1103,14 +1063,24 @@ msgctxt "@label" msgid "Custom Material" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 +msgctxt "@menuitem" +msgid "Global" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 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/MachineManager.py:118 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1133,14 +1103,14 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format 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:150 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "" @@ -1148,21 +1118,21 @@ msgid "" "failure." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:157 msgctxt "@info:title" -msgid "Export Details" +msgid "Export succeeded" 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 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "" @@ -1170,30 +1140,30 @@ msgid "" "message>" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 #, 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:272 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 msgctxt "@label" msgid "Custom profile" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1222,42 +1192,115 @@ msgctxt "@info:title" msgid "Placing Object" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 msgctxt "@title:window" msgid "Crash Report" msgstr "" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:79 -msgctxt "@label" +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +msgctxt "@label crash message" 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" -" " +"

A fatal exception has occurred. Please send us this Crash Report to " +"fix the problem

\n" +"

Please use the \"Send report\" button to post a bug report " +"automatically to our servers

\n" +" " +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +msgctxt "@title:groupbox" +msgid "System information" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +msgctxt "@label unknown version of Cura" +msgid "Unknown" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 +#, python-brace-format +msgctxt "@label Cura version" +msgid "Cura version: {version}
" msgstr "" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -msgctxt "@action:button" -msgid "Open Web Page" +#, python-brace-format +msgctxt "@label Platform" +msgid "Platform: {platform}
" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 +#, python-brace-format +msgctxt "@label Qt version" +msgid "Qt version: {qt}
" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 +#, python-brace-format +msgctxt "@label PyQt version" +msgid "PyQt version: {pyqt}
" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 +#, python-brace-format +msgctxt "@label OpenGL" +msgid "OpenGL: {opengl}
" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#, python-brace-format +msgctxt "@label OpenGL version" +msgid "
  • OpenGL Version: {version}
  • " +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#, python-brace-format +msgctxt "@label OpenGL vendor" +msgid "
  • OpenGL Vendor: {vendor}
  • " +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#, python-brace-format +msgctxt "@label OpenGL renderer" +msgid "
  • OpenGL Renderer: {renderer}
  • " +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +msgctxt "@title:groupbox" +msgid "Exception traceback" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +msgctxt "@title:groupbox" +msgid "Logs" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +msgctxt "@title:groupbox" +msgid "User description" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +msgctxt "@action:button" +msgid "Send report" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 msgctxt "@info:progress" msgid "Loading machines..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 msgctxt "@info:progress" msgid "Loading interface..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 #, python-format msgctxt "" "@info 'width', 'depth' and 'height' are variable names that must NOT be " @@ -1265,93 +1308,98 @@ msgctxt "" msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1295 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 #, 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:1304 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1357 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "" +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +msgctxt "@info:status" +msgid "The selected model was too small to load." +msgstr "" + #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 msgctxt "@title" msgid "Machine Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:77 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:78 msgctxt "@title:tab" msgid "Printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:96 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 msgctxt "@label" msgid "Printer Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:107 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 msgctxt "@label" msgid "X (Width)" msgstr "" -#: /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: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 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 msgctxt "@label" msgid "mm" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:117 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 msgctxt "@label" msgid "Y (Depth)" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:127 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 msgctxt "@label" msgid "Z (Height)" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:139 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:140 msgctxt "@label" msgid "Build plate shape" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:148 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 msgctxt "@option:check" msgid "Origin at center" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:156 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:157 msgctxt "@option:check" msgid "Heated bed" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:167 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 msgctxt "@label" msgid "Gcode flavor" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:180 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 msgctxt "@label" msgid "Printhead Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:190 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 msgctxt "@label" msgid "X min" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 msgctxt "@tooltip" msgid "" "Distance from the left of the printhead to the center of the nozzle. Used to " @@ -1359,12 +1407,12 @@ msgid "" "\"One at a Time\"." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:200 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 msgctxt "@label" msgid "Y min" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 msgctxt "@tooltip" msgid "" "Distance from the front of the printhead to the center of the nozzle. Used " @@ -1372,12 +1420,12 @@ msgid "" "printing \"One at a Time\"." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:210 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 msgctxt "@label" msgid "X max" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 msgctxt "@tooltip" msgid "" "Distance from the right of the printhead to the center of the nozzle. Used " @@ -1385,12 +1433,12 @@ msgid "" "printing \"One at a Time\"." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:220 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 msgctxt "@label" msgid "Y max" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 msgctxt "@tooltip" msgid "" "Distance from the rear of the printhead to the center of the nozzle. Used to " @@ -1398,12 +1446,12 @@ msgid "" "\"One at a Time\"." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:233 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 msgctxt "@label" msgid "Gantry height" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 msgctxt "@tooltip" msgid "" "The height difference between the tip of the nozzle and the gantry system (X " @@ -1411,70 +1459,70 @@ msgid "" "gantry when printing \"One at a Time\"." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:254 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 msgctxt "@label" msgid "Number of Extruders" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 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:290 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 msgctxt "@label" msgid "Material diameter" msgstr "" -#: /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:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 msgctxt "@label" msgid "Nozzle size" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 msgctxt "@label" msgid "Start Gcode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:335 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 msgctxt "@label" msgid "End Gcode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:377 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 msgctxt "@label" msgid "Nozzle Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 msgctxt "@label" msgid "Nozzle offset X" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 msgctxt "@label" msgid "Nozzle offset Y" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Extruder End Gcode" msgstr "" @@ -1487,12 +1535,11 @@ 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/PostProcessingPlugin/PostProcessingPlugin.qml:445 #: /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/Preferences/MachinesPage.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 msgctxt "@action:button" msgid "Close" @@ -1544,13 +1591,11 @@ 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 " @@ -1563,20 +1608,17 @@ 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 @@ -1585,224 +1627,223 @@ msgid "Remove" msgstr "" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:194 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 msgctxt "@label" msgid "Type" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 msgctxt "@label" msgid "Ultimaker 3" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:238 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:238 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 msgctxt "@label" msgid "Firmware version" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 msgctxt "@label" msgid "Address" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:286 +msgctxt "@label" +msgid "This printer is not set up to host a group of Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:290 +msgctxt "@label" +msgid "This printer is the host for a group of %1 Ultimaker 3 printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:300 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/DiscoverUM3Action.qml:305 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /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:316 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 msgctxt "@title:window" msgid "Printer Address" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:346 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 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:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 +#: /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" +msgid "OK" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:36 +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/UM3NetworkPrinting/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 +msgctxt "@label" +msgid "Preparing to print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 +msgctxt "@label:status" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 +msgctxt "@label:status" +msgid "Available" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +msgctxt "@label:MonitorStatus" +msgid "Lost connection with the printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 +msgctxt "@label:status" +msgid "Disabled" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273 +msgctxt "@label:status" +msgid "Reserved" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:275 +msgctxt "@label:status" +msgid "Finished" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 +msgctxt "@label:status" +msgid "Paused" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 +msgctxt "@label:status" +msgid "Resuming" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 +msgctxt "@label:status" +msgid "Print aborted" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:410 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 +msgctxt "@label" +msgid "Finishes at: " +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 +msgctxt "@label" +msgid "Clear build plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:64 +msgctxt "@title" +msgid "Print jobs" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 +msgctxt "@label" +msgid "Printing" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 +msgctxt "@label" +msgid "Queued" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:171 +msgctxt "@label:title" +msgid "Printers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 +msgctxt "@action:button" +msgid "View printers" 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/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" -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" @@ -1828,13 +1869,6 @@ msgctxt "@option:curaSolidworksStlQuality" msgid "Always use Coarse quality" msgstr "" -#: /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 "" - #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 msgctxt "@title:window" msgid "Import SolidWorks File as STL..." @@ -1861,11 +1895,91 @@ msgid "Fine" msgstr "" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 msgctxt "@text:window" msgid "Remember my choice" msgstr "" +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +msgctxt "@label" +msgid "Color scheme" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +msgctxt "@label:listbox" +msgid "Material Color" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +msgctxt "@label:listbox" +msgid "Line Type" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +msgctxt "@label:listbox" +msgid "Feedrate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +msgctxt "@label:listbox" +msgid "Layer thickness" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +msgctxt "@label" +msgid "Compatibility Mode" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +msgctxt "@label" +msgid "Show Travels" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +msgctxt "@label" +msgid "Show Helpers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +msgctxt "@label" +msgid "Show Shell" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +msgctxt "@label" +msgid "Show Infill" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +msgctxt "@label" +msgid "Only Show Top Layers" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +msgctxt "@label" +msgid "Show 5 Detailed Layers On Top" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +msgctxt "@label" +msgid "Top / Bottom" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +msgctxt "@label" +msgid "Inner Wall" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +msgctxt "@label" +msgid "min" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +msgctxt "@label" +msgid "max" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 msgctxt "@title:window" msgid "Post Processing Plugin" @@ -1876,81 +1990,21 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:218 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:217 msgctxt "@action" msgid "Add a script" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:264 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:263 msgctxt "@label" msgid "Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 -msgctxt "@label" -msgid "Color scheme" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:91 -msgctxt "@label:listbox" -msgid "Material Color" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:95 -msgctxt "@label:listbox" -msgid "Line Type" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 -msgctxt "@label" -msgid "Compatibility Mode" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 -msgctxt "@label" -msgid "Show Travels" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 -msgctxt "@label" -msgid "Show Helpers" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 -msgctxt "@label" -msgid "Show Shell" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:234 -msgctxt "@label" -msgid "Show Infill" -msgstr "" - -#: /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:292 -msgctxt "@label" -msgid "Show 5 Detailed Layers On Top" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:303 -msgctxt "@label" -msgid "Top / Bottom" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 -msgctxt "@label" -msgid "Inner Wall" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" msgid "Convert Image..." @@ -2046,129 +2100,129 @@ msgctxt "@label:checkbox" msgid "Show all" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:13 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 msgctxt "@action:ComboBox option" msgid "Update existing" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:55 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 msgctxt "@action:ComboBox option" msgid "Create new" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:70 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:88 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:88 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 msgctxt "@action:label" msgid "Printer settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 msgctxt "@info:tooltip" msgid "How should the conflict in the machine be resolved?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:124 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:97 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 msgctxt "@action:label" msgid "Type" msgstr "" -#: /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 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:144 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:201 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:293 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:190 msgctxt "@action:label" msgid "Name" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:161 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:164 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:166 msgctxt "@action:label" msgid "Profile settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 msgctxt "@info:tooltip" msgid "How should the conflict in the profile be resolved?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:212 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 msgctxt "@action:label" msgid "Not in profile" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:217 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "" msgstr[1] "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:232 msgctxt "@action:label" msgid "Derivative from" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:233 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:237 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "" msgstr[1] "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:249 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:253 msgctxt "@action:label" msgid "Material settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:265 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:207 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 msgctxt "@action:label" msgid "Setting visibility" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:317 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:321 msgctxt "@action:label" msgid "Mode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:332 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:216 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:218 msgctxt "@action:label" msgid "Visible settings:" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:223 msgctxt "@action:label" msgid "%1 out of %2" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:363 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368 msgctxt "@action:warning" -msgid "Loading a project will clear all models on the buildplate" +msgid "Loading a project will clear all models on the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:381 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 msgctxt "@action:button" msgid "Open" msgstr "" @@ -2193,6 +2247,11 @@ msgctxt "@action:button" msgid "Installed" msgstr "" +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" @@ -2201,7 +2260,7 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" msgid "" -" plugin contains a license.\n" +"This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" msgstr "" @@ -2216,6 +2275,11 @@ msgctxt "@action:button" msgid "Decline" msgstr "" +#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 +msgctxt "@title:window" +msgid "User Agreement" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 msgctxt "@title" @@ -2414,30 +2478,25 @@ msgid "Printer does not accept commands" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "" -#: /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:103 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "" @@ -2653,7 +2712,7 @@ msgid "Unit" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "General" msgstr "" @@ -2900,7 +2959,7 @@ msgid "Send (anonymous) print information" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:441 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 msgctxt "@title:tab" msgid "Printers" msgstr "" @@ -2918,39 +2977,39 @@ msgctxt "@action:button" msgid "Rename" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 msgctxt "@label" msgid "Printer type:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:158 msgctxt "@label" msgid "Connection:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:166 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:164 #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 msgctxt "@info:status" msgid "The printer is not connected." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:170 msgctxt "@label" msgid "State:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Waiting for someone to clear the build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 msgctxt "@label:MonitorStatus" msgid "Waiting for a printjob" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 msgctxt "@title:tab" msgid "Profiles" msgstr "" @@ -3050,7 +3109,7 @@ msgid "Export Profile" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 msgctxt "@title:tab" msgid "Materials" msgstr "" @@ -3112,7 +3171,7 @@ msgid "Successfully exported material to %1" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 msgctxt "@title:window" msgid "Add Printer" msgstr "" @@ -3132,6 +3191,11 @@ msgctxt "@title:window" msgid "About Cura" msgstr "" +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43 +msgctxt "@label" +msgid "version: %1" +msgstr "" + #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." @@ -3224,12 +3288,17 @@ msgctxt "@label" msgid "Polygon clipping library" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 msgctxt "@label" msgid "Font" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 msgctxt "@label" msgid "SVG icons" msgstr "" @@ -3239,7 +3308,12 @@ msgctxt "@label" msgid "Profile:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 +msgctxt "@" +msgid "No Profile Available" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the " @@ -3248,32 +3322,32 @@ msgid "" "Click to open the profile manager." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 msgctxt "@label:textbox" msgid "Search..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 msgctxt "@action:menu" msgid "Hide this setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "" @@ -3326,58 +3400,77 @@ msgid "" "Click to restore the calculated value." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 msgctxt "@label:listbox" msgid "Print Setup" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 msgctxt "@tooltip" -msgid "Time information" +msgid "Time specification
    " 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 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 msgctxt "@label" +msgid "Cost specification" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +msgctxt "@label" +msgid "Total:" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +msgctxt "" +"@label Print estimates: m for meters, g for grams, %4 is currency and %3 is " +"print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 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:481 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" msgid "" "Custom Print Setup

    Print with finegrained control over every " "last bit of the slicing process." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "" @@ -3387,7 +3480,7 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" msgstr "" @@ -3416,13 +3509,13 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 msgctxt "@info:status" msgid "No printer connected" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 msgctxt "@label" msgid "Extruder" msgstr "" @@ -3439,54 +3532,54 @@ msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:188 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 msgctxt "@label" msgid "Build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 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:343 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:344 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:422 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button" msgid "Pre-heat" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 msgctxt "@tooltip of pre-heat" msgid "" "Heat the bed in advance before printing. You can continue adjusting your " @@ -3494,259 +3587,299 @@ msgid "" "when you're ready to print." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:677 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:703 +msgctxt "@label" +msgid "Printer control" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 +msgctxt "@label" +msgid "Jog Position" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735 +msgctxt "@label" +msgid "X/Y" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842 +msgctxt "@label" +msgid "Z" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 +msgctxt "@label" +msgid "Jog Distance" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018 msgctxt "@label" msgid "Active print" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 msgctxt "@label" msgid "Job Name" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 msgctxt "@label" msgid "Printing Time" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1035 msgctxt "@label" msgid "Estimated time left" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +msgctxt "@action:inmenu menubar:view" +msgid "&Reset camera position" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:115 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:171 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 msgctxt "@action:inmenu menubar:edit" msgid "Delete &Selected Model" msgid_plural "Delete &Selected Models" msgstr[0] "" msgstr[1] "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "" msgstr[1] "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "" msgstr[1] "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:222 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:228 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:265 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:346 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +msgctxt "@action:menu" +msgid "Browse plugins..." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +msgctxt "@action:menu" +msgid "Installed plugins..." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Prepare" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Cancel" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 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:593 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 msgctxt "@title:window" msgid "Open file(s)" msgstr "" @@ -3766,114 +3899,119 @@ msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 msgctxt "@title:window" -msgid "Cura" +msgid "Ultimaker Cura" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 msgctxt "@title:menu menubar:file" msgid "Save project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 msgctxt "@title:menu" msgid "&View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:167 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 msgctxt "@title:menu" msgid "&Settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 msgctxt "@title:menu" msgid "&Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 msgctxt "@title:menu" msgid "&Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:202 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +msgctxt "@title:menu menubar:toplevel" +msgid "P&lugins" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 msgctxt "@action:button" msgid "Open File" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 msgctxt "@title:tab" msgid "Settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 msgctxt "@title:window" msgid "New project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 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:694 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 msgctxt "@window:title" msgid "Install Plugin" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 msgctxt "@title:window" msgid "Open File(s)" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 msgctxt "@text:window" msgid "" "We have found one or more G-Code files within the files you have selected. " @@ -3886,90 +4024,104 @@ msgctxt "@title:window" msgid "Save Project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 msgctxt "@action:label" msgid "Extruder %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 msgctxt "@action:label" msgid "%1 & material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:242 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 msgctxt "@action:button" msgid "Save" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 msgctxt "@title:tab" msgid "Prepare" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 msgctxt "@title:tab" msgid "Monitor" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 msgctxt "@label" msgid "Layer Height" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +msgctxt "@tooltip" +msgid "" +"A custom profile is currently active. To enable the quality slider, choose a " +"default quality profile in Custom tab" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 msgctxt "@label" msgid "Print Speed" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 msgctxt "@label" msgid "Slower" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 msgctxt "@label" msgid "Faster" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +msgctxt "@tooltip" +msgid "" +"You have modified some profile settings. If you want to change these go to " +"custom mode." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 msgctxt "@label" msgid "Infill" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 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 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 msgctxt "@label" msgid "Enable gradual" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 msgctxt "@label" msgid "Generate Support" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 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 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 msgctxt "@label" msgid "Support Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 msgctxt "@label" msgid "" "Select which extruder to use for support. This will build up supporting " @@ -3977,19 +4129,19 @@ msgid "" "mid air." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:796 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 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:883 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 msgctxt "@label" msgid "" "Need help improving your prints?
    Read the Ultimaker " @@ -4008,19 +4160,19 @@ msgctxt "@title:window" msgid "Open project file" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 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 "" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:95 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@action:button" msgid "Open as project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Import models" msgstr "" @@ -4030,23 +4182,26 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 msgctxt "@label" msgid "Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 msgctxt "@label" -msgid "Check material compatibility" +msgid "Check compatibility" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." 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 @@ -4126,7 +4281,8 @@ 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 @@ -4154,11 +4310,6 @@ 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." @@ -4171,7 +4322,9 @@ 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 @@ -4179,6 +4332,16 @@ msgctxt "name" msgid "SolidWorks Integration" msgstr "" +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "" + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "" + #: PostProcessingPlugin/plugin.json msgctxt "description" msgid "Extension that allows for user created scripts for post processing" @@ -4239,16 +4402,6 @@ msgctxt "name" msgid "GCode Profile Reader" msgstr "" -#: LayerView/plugin.json -msgctxt "description" -msgid "Provides the Layer view." -msgstr "" - -#: LayerView/plugin.json -msgctxt "name" -msgid "Layer View" -msgstr "" - #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4269,6 +4422,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "" +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." +msgstr "" + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.0 to 3.1" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4329,6 +4492,16 @@ msgctxt "name" msgid "Per Model Settings Tool" msgstr "" +#: cura-siemensnx-plugin/plugin.json +msgctxt "description" +msgid "Helps you to install an 'export to Cura' button in Siemens NX." +msgstr "" + +#: cura-siemensnx-plugin/plugin.json +msgctxt "name" +msgid "Siemens NX Integration" +msgstr "" + #: 3MFReader/plugin.json msgctxt "description" msgid "Provides support for reading 3MF files." @@ -4389,9 +4562,21 @@ msgctxt "name" msgid "3MF Writer" msgstr "" +#: UserAgreementPlugin/plugin.json +msgctxt "description" +msgid "Ask the user once if he/she agrees with our license" +msgstr "" + +#: UserAgreementPlugin/plugin.json +msgctxt "name" +msgid "UserAgreement" +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 @@ -4408,4 +4593,3 @@ msgstr "" msgctxt "name" msgid "Cura Profile Reader" msgstr "" - diff --git a/resources/i18n/de_DE/cura.po b/resources/i18n/de_DE/cura.po index 6bb71a5ae0..211e75c2bc 100644 --- a/resources/i18n/de_DE/cura.po +++ b/resources/i18n/de_DE/cura.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-21 16:58+0100\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: German\n" "Language: de_DE\n" @@ -16,66 +16,6 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Print aborted" -msgstr "Drucken wurde abgebrochen" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Blocked" -msgstr "Blockiert" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Action required" -msgstr "Handlung erforderlich" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Can't start print" -msgstr "Druck startet nicht" - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is not set up to host a group of Ultimaker 3 printers." -msgstr "Dieser Drucker ist nicht eingerichtet um eine Gruppe von Ultimaker 3 Druckern anzusteuern." - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label" -msgid "Finishes at: " -msgstr "Endet um: " - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is the host for a group of %1 Ultimaker 3 printers." -msgstr "Dieser Drucker steuert eine Gruppe von %1 Ultimaker 3 Druckern an." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "Drucker '{printer_name}' hat '{job_name}' vollständig gedrückt." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Print finished" -msgstr "Druck vollendet" - -#: Manually added for resources/Cura/Cura.qml -msgctxt "@title:menu menubar:toplevel" -msgid "P&lugins" -msgstr "&Plugins" - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Browse plugins..." -msgstr "Plugins durchsuchen..." - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Installed plugins..." -msgstr "Installierte plugins..." - #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" @@ -113,19 +53,17 @@ 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 -#: /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:428 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/3MFReader/WorkspaceDialog.qml:376 #: /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 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:253 msgctxt "@action:button" msgid "Cancel" msgstr "Abbrechen" @@ -152,7 +90,7 @@ 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.." +msgid "Open Connect..." msgstr "Connect wird geöffnet ..." #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 @@ -160,7 +98,7 @@ msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "Doodle3D Connect Web-Schnittstelle öffnen" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Änderungsprotokoll anzeigen" @@ -195,37 +133,38 @@ msgctxt "@info:status" msgid "Connected via USB" msgstr "Über USB verbunden" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 msgctxt "@info:title" -msgid "Print Details" -msgstr "Druckdetails" +msgid "Printer Unavailable" +msgstr "Drucker nicht verfügbar" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 msgctxt "@info:title" msgid "USB Printing" msgstr "USB-Drucken" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 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/USBPrinterOutputDevice.py:461 #: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 msgctxt "@info:title" msgid "Warning" msgstr "Warnhinweis" @@ -289,11 +228,11 @@ 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: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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 msgctxt "@info:title" msgid "Error" msgstr "Fehler" @@ -342,346 +281,332 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Wechseldatenträger" -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Drucken über Netzwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Drücken über Netzwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 msgctxt "@info:title" msgid "Connection status" msgstr "Verbindungsstatus" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:479 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:502 msgctxt "@info:title" msgid "Connection Status" msgstr "Verbindungsstatus" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@action:button" msgid "Retry" msgstr "Erneut versuchen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Zugriffanforderung erneut senden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Zugriff auf den Drucker genehmigt" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:375 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:385 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:382 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Connected over the network." msgstr "Über Netzwerk verbunden." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:405 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:400 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 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:403 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 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:467 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 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:499 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 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:649 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:666 #, 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:650 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:667 msgctxt "@info:title" msgid "Printer Status" msgstr "Druckerstatus" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 #, 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:682 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 #, 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:692 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 #, 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:702 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 #, 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:716 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 #, 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:724 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:741 #, 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:729 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 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:730 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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:736 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Konfiguration nicht übereinstimmend" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "Das Senden neuer Aufträge ist (vorübergehend) blockiert; der vorherige Druckauftrag wird noch gesendet." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Daten werden zum Drucker gesendet" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:title" msgid "Sending Data" msgstr "Daten werden gesendet" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 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:1050 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Drucken wird abgebrochen..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 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:1062 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Drucken wird pausiert..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Drucken wird fortgesetzt..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synchronisieren Ihres Druckers" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 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:1220 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:112 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:113 #, 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 "Dieser Drucker ist der Host für eine Gruppe von {count} verbundenen Ultimaker 3-Druckern." -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 #, 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 "{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 "Das Senden neuer Aufträge ist (vorübergehend) blockiert; der vorherige Druckauftrag wird noch gesendet." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 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 "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 "{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 "{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 "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 "Öffnet die Schaltfläche für Druckaufträge in Ihrem Browser." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Es können keine Druckaufträge an die Gruppe {cluster_name} gesendet werden." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "{file_name} wurde an Gruppe {cluster_name} gesendet." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "Druckaufträge anzeigen" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "Öffnet die Schaltfläche für Druckaufträge in Ihrem Browser." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label" +msgid "Unknown" +msgstr "Unbekannt" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#, python-brace-format +msgctxt "@info:status" +msgid "Printer '{printer_name}' has finished printing '{job_name}'." +msgstr "Drucker '{printer_name}' hat '{job_name}' vollständig gedrückt." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +msgctxt "@info:status" +msgid "Print finished" +msgstr "Druck vollendet" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 +msgctxt "@label:status" +msgid "Action required" +msgstr "Handlung erforderlich" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "{file_name} wird an Gruppe {cluster_name} gesendet" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +msgctxt "@action" +msgid "Connect via Network" +msgstr "Anschluss über Netzwerk" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 #, 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 "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." +msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." +msgstr "Für Ihren {machine_name} sind neue Funktionen verfügbar! Es wird empfohlen, ein Firmware-Update für Ihren Drucker auszuführen." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" 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 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 msgctxt "@action:button" -msgid "Download" -msgstr "Download" +msgid "How to update" +msgstr "Anleitung für die Aktualisierung" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 msgctxt "@info" msgid "Could not access update information." msgstr "Zugriff auf Update-Informationen nicht möglich." @@ -711,7 +636,22 @@ msgctxt "@info:status" msgid "Error while starting %s!" msgstr "Fehler beim Starten %s!" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Simulation view" +msgstr "Simulationsansicht" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +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/SimulationView/SimulationView.py:101 +msgctxt "@info:title" +msgid "Simulation View" +msgstr "Simulationsansicht" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 msgid "Modify G-Code" msgstr "G-Code ändern" @@ -741,21 +681,6 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "G-Code-Datei" -#: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Schichtenansicht" - -#: /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 "Schichtenansicht" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -788,8 +713,9 @@ msgstr "Slicing mit dem aktuellen Material nicht möglich, da es mit der gewähl #: /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 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 msgctxt "@info:title" msgid "Unable to slice" msgstr "Slicing nicht möglich" @@ -800,23 +726,29 @@ 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:306 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" +msgstr "Aufgrund der Pro-Modell-Einstellungen ist kein Schneiden (Slicing) möglich. Die folgenden Einstellungen sind für ein oder mehrere Modelle fehlerhaft: {error_labels}" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 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:315 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 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." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:65 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:status" msgid "Processing Layers" msgstr "Schichten werden verarbeitet" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:title" msgid "Information" msgstr "Informationen" @@ -831,14 +763,36 @@ msgctxt "@info:tooltip" 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:475 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23 +msgid "Install" +msgstr "Installieren" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It is not set to a directory." +msgstr "Siemens NX Plugin-Dateien konnten nicht kopiert werden. Überprüfen Sie Ihr UGII_USER_DIR. Sie ist keinem Verzeichnis zugeordnet." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81 +msgid "Successfully installed Siemens NX Cura plugin." +msgstr "Siemens NX Cura Plugin wurde erfolgreich installiert." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgstr "Siemens NX Plugin-Dateien konnten nicht kopiert werden. Überprüfen Sie Ihr UGII_USER_DIR." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 +msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." +msgstr "Siemens NX Plugin konnte nicht installiert werden. Umgebungsvariable UGII_USER_DIR für Siemens NX konnte nicht zugewiesen werden." + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 msgctxt "@title:tab" msgid "Recommended" msgstr "Empfohlen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Custom" msgstr "Benutzerdefiniert" @@ -849,29 +803,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF-Datei" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 msgctxt "@label" msgid "Nozzle" msgstr "Düse" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 -msgctxt "@menuitem" -msgid "Browse plugins" -msgstr "Plugins durchsuchen" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "Plugin-ID von {0} wurde nicht erhalten" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 msgctxt "@info:tile" msgid "Warning" msgstr "Warnhinweis" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 msgctxt "@window:title" msgid "Plugin browser" msgstr "Plugin-Browser" @@ -886,18 +835,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G-Datei" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:254 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-Code parsen" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 msgctxt "@info:title" msgid "G-code Details" msgstr "G-Code-Details" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 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." @@ -939,73 +888,78 @@ msgctxt "@action" msgid "Level build plate" msgstr "Druckbett nivellieren" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Außenwand" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Innenwände" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 msgctxt "@tooltip" msgid "Skin" msgstr "Außenhaut" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 msgctxt "@tooltip" msgid "Infill" msgstr "Füllung" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 msgctxt "@tooltip" msgid "Support Infill" msgstr "Stützstruktur-Füllung" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 msgctxt "@tooltip" msgid "Support Interface" msgstr "Stützstruktur-Schnittstelle" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Support" msgstr "Stützstruktur" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" msgid "Skirt" msgstr "Skirt" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 msgctxt "@tooltip" msgid "Travel" msgstr "Bewegungen" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Retractions" msgstr "Einzüge" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Other" msgstr "Sonstige" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +msgctxt "@label unknown material" +msgid "Unknown" +msgstr "Unbekannt" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Vorgeschnittene Datei {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 msgctxt "@item:material" msgid "No material loaded" msgstr "Kein Material geladen" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 msgctxt "@item:material" msgid "Unknown material" msgstr "Unbekanntes Material" @@ -1032,13 +986,13 @@ msgid "Can't Find Location" msgstr "Kann Position nicht finden" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 msgctxt "@title:window" msgid "File Already Exists" msgstr "Datei bereits vorhanden" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 #, 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?" @@ -1054,12 +1008,22 @@ msgctxt "@label" msgid "Custom Material" msgstr "Benutzerdefiniertes Material" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 +msgctxt "@menuitem" +msgid "Global" +msgstr "Global" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Nicht überschrieben" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 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/MachineManager.py:118 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1080,62 +1044,62 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Änderung des Materialdurchmessers rückgängig machen" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format 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}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, python-brace-format 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" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Profil wurde nach {0} exportiert" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:157 msgctxt "@info:title" -msgid "Export Details" -msgstr "Exportdetails" +msgid "Export succeeded" +msgstr "Export erfolgreich ausgeführt" -#: /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 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 #, python-brace-format 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}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profil erfolgreich importiert {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 #, 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:272 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 msgctxt "@label" msgid "Custom profile" msgstr "Benutzerdefiniertes Profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1162,238 +1126,316 @@ msgctxt "@info:title" msgid "Placing Object" msgstr "Objekt-Platzierung" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 msgctxt "@title:window" msgid "Crash Report" msgstr "Crash-Bericht" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:79 -msgctxt "@label" +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +msgctxt "@label crash message" 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 " +"

    A fatal exception has occurred. Please send us this Crash Report to fix the problem

    \n" +"

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" +" " +msgstr "

    Ein schwerer Ausnahmefehler ist aufgetreten. Senden Sie uns diesen Absturzbericht, um das Problem zu beheben

    \n

    Verwenden Sie bitte die Schaltfläche „Bericht senden“, um den Fehlerbericht automatisch an unsere Server zu senden

    \n " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +msgctxt "@title:groupbox" +msgid "System information" +msgstr "Systeminformationen" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +msgctxt "@label unknown version of Cura" +msgid "Unknown" +msgstr "Unbekannt" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 +#, python-brace-format +msgctxt "@label Cura version" +msgid "Cura version: {version}
    " +msgstr "Cura-Version: {version}
    " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -msgctxt "@action:button" -msgid "Open Web Page" -msgstr "Webseite öffnen" +#, python-brace-format +msgctxt "@label Platform" +msgid "Platform: {platform}
    " +msgstr "Plattform: {platform}
    " -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 +#, python-brace-format +msgctxt "@label Qt version" +msgid "Qt version: {qt}
    " +msgstr "Qt-Version: {qt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 +#, python-brace-format +msgctxt "@label PyQt version" +msgid "PyQt version: {pyqt}
    " +msgstr "PyQt-Version: {pyqt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 +#, python-brace-format +msgctxt "@label OpenGL" +msgid "OpenGL: {opengl}
    " +msgstr "OpenGL: {opengl}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#, python-brace-format +msgctxt "@label OpenGL version" +msgid "
  • OpenGL Version: {version}
  • " +msgstr "
  • OpenGL-Version: {version}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#, python-brace-format +msgctxt "@label OpenGL vendor" +msgid "
  • OpenGL Vendor: {vendor}
  • " +msgstr "
  • OpenGL-Anbieter: {vendor}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#, python-brace-format +msgctxt "@label OpenGL renderer" +msgid "
  • OpenGL Renderer: {renderer}
  • " +msgstr "
  • OpenGL-Renderer: {renderer}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +msgctxt "@title:groupbox" +msgid "Exception traceback" +msgstr "Ausnahme-Rückverfolgung" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +msgctxt "@title:groupbox" +msgid "Logs" +msgstr "Protokolle" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +msgctxt "@title:groupbox" +msgid "User description" +msgstr "Benutzerbeschreibung" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +msgctxt "@action:button" +msgid "Send report" +msgstr "Bericht senden" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Geräte werden geladen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Die Szene wird eingerichtet..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Die Benutzeroberfläche wird geladen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 #, 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:1295 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 #, 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:1304 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1357 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Wenn G-Code geladen wird, kann keine weitere Datei geöffnet werden. Wichtige {0} werden übersprungen." +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +msgctxt "@info:status" +msgid "The selected model was too small to load." +msgstr "Das gewählte Modell war zu klein zum Laden." + #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 msgctxt "@title" msgid "Machine Settings" msgstr "Geräteeinstellungen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:77 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:78 msgctxt "@title:tab" msgid "Printer" msgstr "Drucker" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:96 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 msgctxt "@label" msgid "Printer Settings" msgstr "Druckereinstellungen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:107 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 msgctxt "@label" msgid "X (Width)" msgstr "X (Breite)" -#: /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: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 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:117 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Tiefe)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:127 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Höhe)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:139 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:140 msgctxt "@label" msgid "Build plate shape" msgstr "Druckbettform" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:148 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 msgctxt "@option:check" msgid "Origin at center" msgstr "Ausgang in Mitte" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:156 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:157 msgctxt "@option:check" msgid "Heated bed" msgstr "Heizbares Bett" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:167 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 msgctxt "@label" msgid "Gcode flavor" msgstr "G-Code-Variante" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:180 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 msgctxt "@label" msgid "Printhead Settings" msgstr "Druckkopfeinstellungen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:190 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 msgctxt "@label" msgid "X min" msgstr "X min." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 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 "Abstand von der linken Seite des Druckkopfes zur Düsenmitte. Wird verwendet, um Kollisionen zwischen vorherigen Drucken und dem Druckkopf während des Druckmodus „Nacheinander“ zu vermeiden." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:200 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 msgctxt "@label" msgid "Y min" msgstr "Y min." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 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 "Abstand von der Vorderseite des Druckkopfes zur Düsenmitte. Wird verwendet, um Kollisionen zwischen vorherigen Drucken und dem Druckkopf während des Druckmodus „Nacheinander“ zu vermeiden." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:210 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 msgctxt "@label" msgid "X max" msgstr "X max." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 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 "Abstand von der rechten Seite des Druckkopfes zur Düsenmitte. Wird verwendet, um Kollisionen zwischen vorherigen Drucken und dem Druckkopf während des Druckmodus „Nacheinander“ zu vermeiden." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:220 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 msgctxt "@label" msgid "Y max" msgstr "Y max." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 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 "Abstand von der Rückseite des Druckkopfes zur Düsenmitte. Wird verwendet, um Kollisionen zwischen vorherigen Drucken und dem Druckkopf während des Druckmodus „Nacheinander“ zu vermeiden." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:233 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 msgctxt "@label" msgid "Gantry height" msgstr "Brückenhöhe" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 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:254 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 msgctxt "@label" msgid "Number of Extruders" msgstr "Anzahl Extruder" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 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:290 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 msgctxt "@label" msgid "Material diameter" msgstr "Materialdurchmesser" -#: /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:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 msgctxt "@label" msgid "Nozzle size" msgstr "Düsengröße" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 msgctxt "@label" msgid "Start Gcode" msgstr "G-Code starten" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 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:335 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 msgctxt "@label" msgid "End Gcode" msgstr "G-Code beenden" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 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:377 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 msgctxt "@label" msgid "Nozzle Settings" msgstr "Düseneinstellungen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 msgctxt "@label" msgid "Nozzle offset X" msgstr "X-Versatz Düse" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Y-Versatz Düse" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "G-Code Extruder-Start" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Extruder End Gcode" msgstr "G-Code Extruder-Ende" @@ -1406,12 +1448,11 @@ 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/PostProcessingPlugin/PostProcessingPlugin.qml:445 #: /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/Preferences/MachinesPage.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 msgctxt "@action:button" msgid "Close" @@ -1463,13 +1504,11 @@ 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" @@ -1478,20 +1517,17 @@ msgid "" 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 #: /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 @@ -1500,220 +1536,221 @@ msgid "Remove" msgstr "Entfernen" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:194 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 msgctxt "@label" msgid "Type" msgstr "Typ" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 msgctxt "@label" msgid "Address" msgstr "Adresse" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:286 +msgctxt "@label" +msgid "This printer is not set up to host a group of Ultimaker 3 printers." +msgstr "Dieser Drucker ist nicht eingerichtet um eine Gruppe von Ultimaker 3 Druckern anzusteuern." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:290 +msgctxt "@label" +msgid "This printer is the host for a group of %1 Ultimaker 3 printers." +msgstr "Dieser Drucker steuert eine Gruppe von %1 Ultimaker 3 Druckern an." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:300 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/DiscoverUM3Action.qml:305 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /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:316 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 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:346 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 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:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 +#: /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" +msgid "OK" +msgstr "OK" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Drucken über Netzwerk" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Drucken" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:36 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "%1 ist nicht für das Hosten einer Gruppe verbundener Ultimaker 3-Drucker eingerichtet" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "Öffnet die Seite für Druckaufträge mit Ihrem Standard-Webbrowser." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "Druckaufträge anzeigen" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 +msgctxt "@label" +msgid "Preparing to print" +msgstr "Vorbereitung für den Druck" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 +msgctxt "@label:status" +msgid "Printing" +msgstr "Drucken" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 +msgctxt "@label:status" +msgid "Available" +msgstr "Verfügbar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 +#: /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/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 +msgctxt "@label:status" +msgid "Disabled" +msgstr "Deaktiviert" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273 +msgctxt "@label:status" +msgid "Reserved" +msgstr "Reserviert" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:275 +msgctxt "@label:status" +msgid "Finished" +msgstr "Beendet" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 +msgctxt "@label:status" +msgid "Paused" +msgstr "Pausiert" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 +msgctxt "@label:status" +msgid "Resuming" +msgstr "Wird fortgesetzt ..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 +msgctxt "@label:status" +msgid "Print aborted" +msgstr "Drucken wurde abgebrochen" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:410 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "Akzeptiert keine Druckaufträge" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 +msgctxt "@label" +msgid "Finishes at: " +msgstr "Endet um: " + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 +msgctxt "@label" +msgid "Clear build plate" +msgstr "Druckplatte räumen" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "Warten auf eine Konfigurationsänderung" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:64 +msgctxt "@title" +msgid "Print jobs" +msgstr "Druckaufträge" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 +msgctxt "@label" +msgid "Printing" +msgstr "Drucken" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 +msgctxt "@label" +msgid "Queued" +msgstr "In Warteschlange" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:171 +msgctxt "@label:title" +msgid "Printers" +msgstr "Drucker" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 +msgctxt "@action:button" +msgid "View printers" +msgstr "Drucker anzeigen" #: /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/DiscoverUM3Action.qml:284 -msgctxt "@label" -msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -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 "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 "Drucken über Netzwerk" - -#: /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 "%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 "Drucken" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 -msgctxt "@label:status" -msgid "Reserved" -msgstr "Reserviert" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 -msgctxt "@label:status" -msgid "Finished" -msgstr "Beendet" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 -msgctxt "@label:status" -msgid "Preparing" -msgstr "Vorbereitung" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 -msgctxt "@label:status" -msgid "Available" -msgstr "Verfügbar" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 -msgctxt "@label" -msgid "Completed on: " -msgstr "Fertiggestellt am: " - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 -msgctxt "@label" -msgid "Clear build plate" -msgstr "Druckplatte räumen" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 -msgctxt "@label" -msgid "Preparing to print" -msgstr "Vorbereitung für den Druck" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 -msgctxt "@label" -msgid "Not accepting print jobs" -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 "Ö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 "Druckaufträge anzeigen" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "PRINTER GROUP" -msgstr "DRUCKERGRUPPE" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 -msgctxt "@title" -msgid "Print jobs" -msgstr "Druckaufträge" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 -msgctxt "@label" -msgid "Printing" -msgstr "Drucken" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 -msgctxt "@label" -msgid "Queued" -msgstr "In Warteschlange" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 -msgctxt "@label" -msgid "Waiting for configuration change" -msgstr "Warten auf eine Konfigurationsänderung" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 -msgctxt "@label:title" -msgid "Printers" -msgstr "Drucker" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 -msgctxt "@action:button" -msgid "View printers" -msgstr "Drucker anzeigen" - #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1739,13 +1776,6 @@ msgctxt "@option:curaSolidworksStlQuality" msgid "Always use Coarse quality" msgstr "Immer Qualität „Grob“ verwenden" -#: /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..." @@ -1772,11 +1802,91 @@ msgid "Fine" msgstr "Fein" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 msgctxt "@text:window" msgid "Remember my choice" msgstr "Meine Auswahl merken" +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +msgctxt "@label" +msgid "Color scheme" +msgstr "Farbschema" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +msgctxt "@label:listbox" +msgid "Material Color" +msgstr "Materialfarbe" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +msgctxt "@label:listbox" +msgid "Line Type" +msgstr "Linientyp" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +msgctxt "@label:listbox" +msgid "Feedrate" +msgstr "Vorschub" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +msgctxt "@label:listbox" +msgid "Layer thickness" +msgstr "Schichtdicke" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +msgctxt "@label" +msgid "Compatibility Mode" +msgstr "Kompatibilitätsmodus" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +msgctxt "@label" +msgid "Show Travels" +msgstr "Bewegungen anzeigen" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +msgctxt "@label" +msgid "Show Helpers" +msgstr "Helfer anzeigen" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +msgctxt "@label" +msgid "Show Shell" +msgstr "Gehäuse anzeigen" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +msgctxt "@label" +msgid "Show Infill" +msgstr "Füllung anzeigen" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +msgctxt "@label" +msgid "Only Show Top Layers" +msgstr "Nur obere Schichten anzeigen" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +msgctxt "@label" +msgid "Show 5 Detailed Layers On Top" +msgstr "5 detaillierte Schichten oben anzeigen" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +msgctxt "@label" +msgid "Top / Bottom" +msgstr "Oben/Unten" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +msgctxt "@label" +msgid "Inner Wall" +msgstr "Innenwand" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +msgctxt "@label" +msgid "min" +msgstr "min." + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +msgctxt "@label" +msgid "max" +msgstr "max." + #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 msgctxt "@title:window" msgid "Post Processing Plugin" @@ -1787,81 +1897,21 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Skripts Nachbearbeitung" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:218 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:217 msgctxt "@action" msgid "Add a script" msgstr "Ein Skript hinzufügen" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:264 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:263 msgctxt "@label" msgid "Settings" msgstr "Einstellungen" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Aktive Skripts Nachbearbeitung ändern" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 -msgctxt "@label" -msgid "Color scheme" -msgstr "Farbschema" - -#: /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:95 -msgctxt "@label:listbox" -msgid "Line Type" -msgstr "Linientyp" - -#: /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:216 -msgctxt "@label" -msgid "Show Travels" -msgstr "Bewegungen anzeigen" - -#: /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:228 -msgctxt "@label" -msgid "Show Shell" -msgstr "Gehäuse anzeigen" - -#: /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:283 -msgctxt "@label" -msgid "Only Show Top Layers" -msgstr "Nur obere Schichten anzeigen" - -#: /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:303 -msgctxt "@label" -msgid "Top / Bottom" -msgstr "Oben/Unten" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 -msgctxt "@label" -msgid "Inner Wall" -msgstr "Innenwand" - #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" msgid "Convert Image..." @@ -1953,129 +2003,129 @@ msgctxt "@label:checkbox" msgid "Show all" msgstr "Alle anzeigen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:13 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Projekt öffnen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 msgctxt "@action:ComboBox option" msgid "Update existing" msgstr "Vorhandenes aktualisieren" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:55 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 msgctxt "@action:ComboBox option" msgid "Create new" msgstr "Neu erstellen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:70 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Zusammenfassung – Cura-Projekt" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:88 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:88 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 msgctxt "@action:label" msgid "Printer settings" msgstr "Druckereinstellungen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 msgctxt "@info:tooltip" msgid "How should the conflict in the machine be resolved?" msgstr "Wie soll der Konflikt im Gerät gelöst werden?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:124 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:97 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 msgctxt "@action:label" msgid "Type" msgstr "Typ" -#: /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 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:144 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:201 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:293 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:190 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 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:166 msgctxt "@action:label" msgid "Profile settings" msgstr "Profileinstellungen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 msgctxt "@info:tooltip" msgid "How should the conflict in the profile be resolved?" msgstr "Wie soll der Konflikt im Profil gelöst werden?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:212 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 msgctxt "@action:label" msgid "Not in profile" msgstr "Nicht im Profil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:217 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 überschreiben" msgstr[1] "%1 überschreibt" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:232 msgctxt "@action:label" msgid "Derivative from" msgstr "Ableitung von" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:233 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:237 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 überschreiben" msgstr[1] "%1, %2 überschreibt" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:249 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:253 msgctxt "@action:label" msgid "Material settings" msgstr "Materialeinstellungen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:265 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Wie soll der Konflikt im Material gelöst werden?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:207 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 msgctxt "@action:label" msgid "Setting visibility" msgstr "Sichtbarkeit einstellen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:317 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:321 msgctxt "@action:label" msgid "Mode" msgstr "Modus" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:332 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:216 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:218 msgctxt "@action:label" msgid "Visible settings:" msgstr "Sichtbare Einstellungen:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:223 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 von %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:363 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368 msgctxt "@action:warning" -msgid "Loading a project will clear all models on the buildplate" -msgstr "Das Laden eines Projekts entfernt alle Modelle von der Druckplatte" +msgid "Loading a project will clear all models on the build plate." +msgstr "Das Laden eines Projekts entfernt alle Modelle von der Druckplatte." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:381 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 msgctxt "@action:button" msgid "Open" msgstr "Öffnen" @@ -2100,6 +2150,11 @@ msgctxt "@action:button" msgid "Installed" msgstr "Installiert" +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Download" + #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" @@ -2108,10 +2163,10 @@ msgstr "Plugin für Lizenzvereinbarung" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" msgid "" -" plugin contains a license.\n" +"This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr " Das Plugin enthält eine Lizenz.\nSie müssen diese Lizenz akzeptieren, um das Plugin zu installieren.\nStimmen Sie den nachfolgenden Bedingungen zu?" +msgstr "Dieses 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" @@ -2123,6 +2178,11 @@ msgctxt "@action:button" msgid "Decline" msgstr "Ablehnen" +#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 +msgctxt "@title:window" +msgid "User Agreement" +msgstr "Benutzervereinbarung" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 msgctxt "@title" @@ -2308,30 +2368,25 @@ msgid "Printer does not accept commands" msgstr "Drucker nimmt keine Befehle an" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 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:101 -msgctxt "@label:MonitorStatus" -msgid "Lost connection with the printer" -msgstr "Verbindung zum Drucker wurde unterbrochen" - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Es wird gedruckt..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Pausiert" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Vorbereitung läuft..." @@ -2519,7 +2574,7 @@ msgstr "Sichtbarkeit einstellen" #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:44 msgctxt "@label:textbox" msgid "Check all" -msgstr "Alle prüfen" +msgstr "Alles wählen" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:40 msgctxt "@info:status" @@ -2547,7 +2602,7 @@ msgid "Unit" msgstr "Einheit" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "General" msgstr "Allgemein" @@ -2778,7 +2833,7 @@ 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:441 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 msgctxt "@title:tab" msgid "Printers" msgstr "Drucker" @@ -2796,39 +2851,39 @@ msgctxt "@action:button" msgid "Rename" msgstr "Umbenennen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 msgctxt "@label" msgid "Printer type:" msgstr "Druckertyp:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:158 msgctxt "@label" msgid "Connection:" msgstr "Verbindung:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:166 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:164 #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 msgctxt "@info:status" msgid "The printer is not connected." msgstr "Der Drucker ist nicht verbunden." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:170 msgctxt "@label" msgid "State:" msgstr "Status:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Waiting for someone to clear the build plate" msgstr "Warten auf Räumen des Druckbeets" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 msgctxt "@label:MonitorStatus" 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:445 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 msgctxt "@title:tab" msgid "Profiles" msgstr "Profile" @@ -2926,7 +2981,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:443 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 msgctxt "@title:tab" msgid "Materials" msgstr "Materialien" @@ -2984,7 +3039,7 @@ msgid "Successfully exported material to %1" msgstr "Material erfolgreich nach %1 exportiert" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 msgctxt "@title:window" msgid "Add Printer" msgstr "Drucker hinzufügen" @@ -3004,6 +3059,11 @@ msgctxt "@title:window" msgid "About Cura" msgstr "Über Cura" +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43 +msgctxt "@label" +msgid "version: %1" +msgstr "Version: %1" + #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." @@ -3096,12 +3156,17 @@ msgctxt "@label" msgid "Polygon clipping library" msgstr "Bibliothek für Polygon-Beschneidung" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Bibliothek für Python HTTP" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 msgctxt "@label" msgid "Font" msgstr "Schriftart" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 msgctxt "@label" msgid "SVG icons" msgstr "SVG-Symbole" @@ -3111,7 +3176,12 @@ msgctxt "@label" msgid "Profile:" msgstr "Profil:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 +msgctxt "@" +msgid "No Profile Available" +msgstr "Kein Profil verfügbar" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3119,32 +3189,32 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 msgctxt "@label:textbox" msgid "Search..." msgstr "Suchen..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 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:491 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Diese Einstellung ausblenden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Diese Einstellung ausblenden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Diese Einstellung weiterhin anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Sichtbarkeit der Einstellung wird konfiguriert..." @@ -3193,54 +3263,71 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Druckeinrichtung" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 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" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00 Stunden 00 Minuten" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 msgctxt "@tooltip" -msgid "Time information" -msgstr "Zeitangaben" +msgid "Time specification
    " +msgstr "Zeitangabe
    " -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 -msgctxt "@description" -msgid "Print time" -msgstr "Druckzeit" - -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 msgctxt "@label" +msgid "Cost specification" +msgstr "Kostenangabe" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1 m" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1 g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +msgctxt "@label" +msgid "Total:" +msgstr "Insgesamt:" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1m / ~ %2g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1m / ~ %2g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 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:481 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 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." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Automatisch: %1" @@ -3250,7 +3337,7 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&Ansicht" -#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" msgstr "Automatisch: %1" @@ -3279,13 +3366,13 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "&Zuletzt geöffnet" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 msgctxt "@info:status" 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 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 msgctxt "@label" msgid "Extruder" msgstr "Extruder" @@ -3300,309 +3387,349 @@ msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "Die aktuelle Temperatur dieses Extruders." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:188 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:219 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Das Material in diesem Extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 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:282 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 msgctxt "@label" msgid "Build plate" msgstr "Druckbett" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 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:343 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:344 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:422 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 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:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Abbrechen" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button" msgid "Pre-heat" msgstr "Vorheizen" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 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:677 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:703 +msgctxt "@label" +msgid "Printer control" +msgstr "Druckersteuerung" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 +msgctxt "@label" +msgid "Jog Position" +msgstr "Tippposition" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735 +msgctxt "@label" +msgid "X/Y" +msgstr "X/Y" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842 +msgctxt "@label" +msgid "Z" +msgstr "Z" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 +msgctxt "@label" +msgid "Jog Distance" +msgstr "Tippdistanz" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018 msgctxt "@label" msgid "Active print" msgstr "Aktiver Druck" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 msgctxt "@label" msgid "Job Name" msgstr "Name des Auftrags" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 msgctxt "@label" msgid "Printing Time" msgstr "Druckzeit" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1035 msgctxt "@label" msgid "Estimated time left" msgstr "Geschätzte verbleibende Zeit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Umschalten auf Vo&llbild-Modus" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Rückgängig machen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Wiederholen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Beenden" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +msgctxt "@action:inmenu menubar:view" +msgid "&Reset camera position" +msgstr "&Kameraposition zurücksetzen" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Cura konfigurieren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Drucker hinzufügen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:115 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Dr&ucker verwalten..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Materialien werden verwaltet..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&Profil mit aktuellen Einstellungen/Überschreibungen aktualisieren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Aktuelle Änderungen verwerfen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Profil von aktuellen Einstellungen/Überschreibungen erstellen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Profile verwalten..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Online-&Dokumentation anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:171 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "&Fehler melden" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "&Über..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 msgctxt "@action:inmenu menubar:edit" msgid "Delete &Selected Model" msgid_plural "Delete &Selected Models" msgstr[0] "&Ausgewähltes Modell löschen" msgstr[1] "&Ausgewählte Modelle löschen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Ausgewähltes Modell zentrieren" msgstr[1] "Ausgewählte Modelle zentrieren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Ausgewähltes Modell multiplizieren" msgstr[1] "Ausgewählte Modelle multiplizieren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Modell löschen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:222 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Modell auf Druckplatte ze&ntrieren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:228 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "Modelle &gruppieren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Gruppierung für Modelle aufheben" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "Modelle &zusammenführen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "Modell &multiplizieren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:265 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "Alle Modelle &wählen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "Druckplatte &reinigen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "Alle Modelle neu &laden" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Alle Modelle anordnen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Anordnung auswählen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Alle Modellpositionen zurücksetzen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "Alle Modell&transformationen zurücksetzen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Datei(en) öffnen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Neues Projekt..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "Engine-&Protokoll anzeigen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:346 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Konfigurationsordner anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Sichtbarkeit einstellen wird konfiguriert..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +msgctxt "@action:menu" +msgid "Browse plugins..." +msgstr "Plugins durchsuchen..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +msgctxt "@action:menu" +msgid "Installed plugins..." +msgstr "Installierte plugins..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Bitte laden Sie ein 3D-Modell" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Bereit zum Slicen (Schneiden)" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Das Slicing läuft..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Bereit zum %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Slicing nicht möglich" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Slicing ist nicht verfügbar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Vorbereiten" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Abbrechen" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 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:593 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 msgctxt "@title:window" msgid "Open file(s)" msgstr "Datei(en) öffnen" @@ -3619,112 +3746,117 @@ msgstr "Alle als Modelle importieren" #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 msgctxt "@title:window" -msgid "Cura" -msgstr "Cura" +msgid "Ultimaker Cura" +msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&Datei" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "Auswahl als Datei &speichern" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "Speichern &Als" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 msgctxt "@title:menu menubar:file" msgid "Save project" msgstr "Projekt speichern" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&Bearbeiten" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 msgctxt "@title:menu" msgid "&View" msgstr "&Ansicht" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:167 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 msgctxt "@title:menu" msgid "&Settings" msgstr "&Einstellungen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "Dr&ucker" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 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 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 msgctxt "@title:menu" msgid "&Profile" msgstr "&Profil" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Als aktiven Extruder festlegen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:202 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "Er&weiterungen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +msgctxt "@title:menu menubar:toplevel" +msgid "P&lugins" +msgstr "&Plugins" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "E&instellungen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Hilfe" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 msgctxt "@action:button" msgid "Open File" msgstr "Datei öffnen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 msgctxt "@title:tab" msgid "Settings" msgstr "Einstellungen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 msgctxt "@title:window" msgid "New project" msgstr "Neues Projekt" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 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:694 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 msgctxt "@window:title" msgid "Install Plugin" msgstr "Plugin installieren" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 msgctxt "@title:window" msgid "Open File(s)" msgstr "Datei(en) öffnen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 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." @@ -3734,102 +3866,112 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Projekt speichern" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 msgctxt "@action:label" msgid "Extruder %1" msgstr "Extruder %1" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & Material" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:242 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/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 msgctxt "@action:button" msgid "Save" msgstr "Speichern" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 msgctxt "@title:tab" msgid "Prepare" msgstr "Vorbereiten" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 msgctxt "@title:tab" msgid "Monitor" msgstr "Überwachen" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 msgctxt "@label" msgid "Layer Height" msgstr "Schichtdicke" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +msgctxt "@tooltip" +msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +msgstr "Ein benutzerdefiniertes Profil ist derzeit aktiv. Wählen Sie ein voreingestelltes Qualitätsprofil aus der Registerkarte „Benutzerdefiniert“, um den Schieberegler für Qualität zu aktivieren." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 msgctxt "@label" msgid "Print Speed" msgstr "Druckgeschwindigkeit" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 msgctxt "@label" msgid "Slower" msgstr "Langsamer" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 msgctxt "@label" msgid "Faster" msgstr "Schneller" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "Sie haben einige Profileinstellungen geändert. Wenn Sie diese ändern möchten, wechseln Sie in den Modus „Benutzerdefiniert“." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 msgctxt "@label" msgid "Infill" msgstr "Füllung" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 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:602 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 msgctxt "@label" msgid "Enable gradual" msgstr "Graduell aktivieren" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 msgctxt "@label" msgid "Generate Support" msgstr "Stützstruktur generieren" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 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:718 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 msgctxt "@label" msgid "Support Extruder" msgstr "Extruder für Stützstruktur" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 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:796 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Druckplattenhaftung" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 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:883 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 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>" @@ -3846,17 +3988,17 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Projektdatei öffnen" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 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 "Dies ist eine Cura-Projektdatei. Möchten Sie diese als Projekt öffnen oder die Modelle hieraus importieren?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:95 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@action:button" msgid "Open as project" msgstr "Als Projekt öffnen" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Import models" msgstr "Modelle importieren" @@ -3866,17 +4008,17 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Engine-Protokoll" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 msgctxt "@label" -msgid "Check material compatibility" -msgstr "Check compatibility" +msgstr "Kompatibilität prüfen" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 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." @@ -3991,11 +4133,6 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3-Netzwerkverbindung" -#: CuraPrintClusterUpload/plugin.json -msgctxt "name" -msgid "UM3 Network Connection (Cluster)" -msgstr "UM3-Netzwerkverbindung (Cluster)" - #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4016,6 +4153,16 @@ msgctxt "name" msgid "SolidWorks Integration" msgstr "SolidWorks Integration" +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Ermöglicht die Simulationsansicht." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Simulationsansicht" + #: PostProcessingPlugin/plugin.json msgctxt "description" msgid "Extension that allows for user created scripts for post processing" @@ -4076,16 +4223,6 @@ msgctxt "name" msgid "GCode Profile Reader" msgstr "G-Code-Profil-Reader" -#: LayerView/plugin.json -msgctxt "description" -msgid "Provides the Layer view." -msgstr "Bietet eine Schichtenansicht." - -#: LayerView/plugin.json -msgctxt "name" -msgid "Layer View" -msgstr "Schichtenansicht" - #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4106,6 +4243,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Upgrade von Version 2.7 auf 3.0" +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." +msgstr "Aktualisiert Konfigurationen von Cura 3.0 auf Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.0 to 3.1" +msgstr "Upgrade von Version 3.0 auf 3.1" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4166,6 +4313,16 @@ msgctxt "name" msgid "Per Model Settings Tool" msgstr "Werkzeug „Einstellungen pro Objekt“" +#: cura-siemensnx-plugin/plugin.json +msgctxt "description" +msgid "Helps you to install an 'export to Cura' button in Siemens NX." +msgstr "Unterstützt die Installation der Schaltfläche „Zu Cura exportieren“ in Siemens NX." + +#: cura-siemensnx-plugin/plugin.json +msgctxt "name" +msgid "Siemens NX Integration" +msgstr "Siemens NX Integration" + #: 3MFReader/plugin.json msgctxt "description" msgid "Provides support for reading 3MF files." @@ -4226,6 +4383,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "3MF-Writer" +#: UserAgreementPlugin/plugin.json +msgctxt "description" +msgid "Ask the user once if he/she agrees with our license" +msgstr "Den Benutzer einmalig fragen, ob er unsere Lizenz akzeptiert." + +#: UserAgreementPlugin/plugin.json +msgctxt "name" +msgid "UserAgreement" +msgstr "UserAgreement" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" @@ -4246,6 +4413,138 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura-Profil-Reader" +#~ msgctxt "@label:status" +#~ msgid "Blocked" +#~ msgstr "Blockiert" + +#~ msgctxt "@label:status" +#~ msgid "Can't start print" +#~ msgstr "Druck startet nicht" + +#~ msgctxt "@action:button" +#~ msgid "Open Connect.." +#~ msgstr "Connect wird geöffnet ..." + +#~ msgctxt "@info:title" +#~ msgid "Print Details" +#~ msgstr "Druckdetails" + +#~ 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 "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." + +msgctxt "@item:inlistbox" +msgid "Layer view" +msgstr "Schichtenansicht" + +msgctxt "@info:title" +msgid "Layer View" +msgstr "Schichtenansicht" + +#~ msgctxt "@menuitem" +#~ msgid "Browse plugins" +#~ msgstr "Plugins durchsuchen" + +#~ msgctxt "@info:title" +#~ msgid "Export Details" +#~ msgstr "Exportdetails" + +#~ 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 "" +#~ "

    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" +#~ " " + +#~ msgctxt "@action:button" +#~ msgid "Open Web Page" +#~ msgstr "Webseite öffnen" + +#~ msgctxt "@action:button" +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgctxt "@label" +#~ msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +#~ msgstr "Dieser Drucker ist nicht für das Hosten einer Gruppe verbundener Ultimaker 3-Drucker eingerichtet" + +#~ msgctxt "@label" +#~ msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +#~ msgstr "Dieser Drucker ist der Host für eine Gruppe von %1 verbundenen Ultimaker 3-Druckern" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Vorbereitung" + +#~ msgctxt "@label" +#~ msgid "Completed on: " +#~ msgstr "Fertiggestellt am: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Opens the print jobs page with your default web browser." +#~ msgstr "Öffnet die Seite für Druckaufträge mit Ihrem Standard-Webbrowser." + +#~ msgctxt "@label" +#~ msgid "PRINTER GROUP" +#~ msgstr "DRUCKERGRUPPE" + +#~ msgctxt "@action:warning" +#~ msgid "Loading a project will clear all models on the buildplate" +#~ msgstr "Das Laden eines Projekts entfernt alle Modelle von der Druckplatte" + +#~ 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 "" +#~ " Das Plugin enthält eine Lizenz.\n" +#~ "Sie müssen diese Lizenz akzeptieren, um das Plugin zu installieren.\n" +#~ "Stimmen Sie den nachfolgenden Bedingungen zu?" + +#~ msgctxt "@label" +#~ msgid "00h 00min" +#~ msgstr "00 Stunden 00 Minuten" + +#~ msgctxt "@tooltip" +#~ msgid "Time information" +#~ msgstr "Zeitangaben" + +#~ msgctxt "@description" +#~ msgid "Print time" +#~ msgstr "Druckzeit" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g / ~ %4 %3" +#~ msgstr "%1m / ~ %2g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g" +#~ msgstr "%1m / ~ %2g" + +#~ msgctxt "@title:window" +#~ msgid "Cura" +#~ msgstr "Cura" + +#~ msgctxt "@label" +#~ msgid "Check material compatibility" +#~ msgstr " distance translation." +msgstr "Der Multiplikationsfaktor für die Übersetzung Durchflussrate -> Distanz." + #: fdmprinter.def.json msgctxt "wireframe_enabled label" msgid "Wire Printing" @@ -4734,106 +4934,6 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Der Abstand zwischen der Düse und den horizontalen Abwärtslinien. Bei einem größeren Abstand haben die diagonalen Abwärtslinien einen weniger spitzen Winkel, was wiederum weniger Aufwärtsverbindungen zur nächsten Schicht zur Folge hat. Dies gilt nur für das Drucken mit Drahtstruktur." -#: fdmprinter.def.json -msgctxt "ironing_enabled label" -msgid "Enable Ironing" -msgstr "Glätten aktivieren" - -#: fdmprinter.def.json -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 "Nur oberste Schicht glätten" - -#: 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 "Führen Sie das Glätten nur für die allerletzte Schicht des Meshs aus. Dies spart Zeit, wenn die unteren Schichten keine glatte Oberflächenausführung erfordern." - -#: fdmprinter.def.json -msgctxt "ironing_pattern label" -msgid "Ironing Pattern" -msgstr "Glättungsmuster" - -#: fdmprinter.def.json -msgctxt "ironing_pattern description" -msgid "The pattern to use for ironing top surfaces." -msgstr "Das Muster, das für die Glättung der Oberflächen verwendet wird." - -#: fdmprinter.def.json -msgctxt "ironing_pattern option concentric" -msgid "Concentric" -msgstr "Konzentrisch" - -#: fdmprinter.def.json -msgctxt "ironing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Zickzack" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing label" -msgid "Ironing Line Spacing" -msgstr "Glättungslinienabstand" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing description" -msgid "The distance between the lines of ironing." -msgstr "Der Abstand zwischen den Glättungslinien." - -#: fdmprinter.def.json -msgctxt "ironing_flow label" -msgid "Ironing Flow" -msgstr "Glättungsfluss" - -#: fdmprinter.def.json -msgctxt "ironing_flow description" -msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." -msgstr "Die Materialmenge relativ zu einer normalen Außenhautlinie, um während des Glättens zu extrudieren. Indem die Düse gefüllt bleibt, können einige Spalten in der oberen Schicht gefüllt werden, allerdings führt zu viel davon zu einer übermäßigen Extrudierung und Markierungen seitlich der Oberfläche." - -#: fdmprinter.def.json -msgctxt "ironing_inset label" -msgid "Ironing Inset" -msgstr "Glättungseinsatz" - -#: fdmprinter.def.json -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" @@ -4894,13 +4994,45 @@ 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_x_extruder_nr label" +#~ msgid "Inner Walls Extruder" +#~ msgstr "Extruder Innenwände" -#~ 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, 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 "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-, Viertelwürfel-, Octahedral- und konzentrischen Muster werden in jeder Schicht vollständig gedruckt. Würfel-, Viertelwürfel- und Octahedral-Füllungen wechseln mit jeder Schicht, um eine gleichmäßigere Verteilung der Stärke in allen Richtungen zu erzielen." + +#~ 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 "Verbindet die Enden, an denen das Füllmuster auf die Innenwand trifft, mithilfe von Linien, die der Form der Innenwand folgen. Durch Aktivierung dieser Einstellung kann die Füllung besser an den Wänden haften; auch die Auswirkungen der Füllung auf die Qualität der vertikalen Flächen werden reduziert. Die Deaktivierung dieser Einstellung reduziert den Materialverbrauch." + +#~ 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.\n" +#~ "Es handelt sich dabei um den Mindestabstand. Ab diesem Abstand werden Skirt-Linien in äußerer Richtung angebracht." + +#~ msgctxt "z_offset_layer_0 label" +#~ msgid "Initial Layer Z Offset" +#~ msgstr "Z-Versatz der ersten Schicht" + +#~ 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 "Der Extruder wird um diesen Wert von der normalen Höhe der ersten Schicht versetzt. Das kann positiv (erhöht) oder negativ (abgesenkt) erfolgen. Einige Filamenttypen haften besser am Druckbett, wenn der Extruder leicht erhöht ist." + +#~ msgctxt "z_offset_taper_layers label" +#~ msgid "Z Offset Taper Layers" +#~ msgstr "Z-Versatz Kegelschichten" + +#~ 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 "Bei Nicht-Null wird der Z-Versatz auf 0 über den zahlreichen Schichten reduziert. Ein Wert von 0 bedeutet, dass der Z-Versatz über alle Schichten des Drucks hinweg konstant bleibt." + +#~ 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 "Diese Einstellung definiert, wie stark die Innenkanten des Raft-Umrisses gerundet werden. Die Innenkanten werden zu einem Halbkreis mit einem Radius entsprechend des hier definierten Werts gerundet. Diese Einstellung entfernt außerdem Löcher im Raft-Umriss, die kleiner als ein solcher Kreis sind." #~ 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." @@ -5116,4 +5248,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 f8f379d3d9..3a35477fc9 100644 --- a/resources/i18n/es_ES/cura.po +++ b/resources/i18n/es_ES/cura.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-21 16:58+0100\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -16,66 +16,6 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Print aborted" -msgstr "Impresión cancelada" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Blocked" -msgstr "Deshabilitada" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Action required" -msgstr "Acción requerida" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Can't start print" -msgstr "No se puede imprimir" - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is not set up to host a group of Ultimaker 3 printers." -msgstr "La impresora no está configurada para alojar un grupo de impresoras Ultimaker 3." - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label" -msgid "Finishes at: " -msgstr "Termina a las: " - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is the host for a group of %1 Ultimaker 3 printers." -msgstr "La impresora aloja un grupo de %1 impresoras Ultimaker 3." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "{printer_name} ha terminado de imprimir «{job_name}»." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Print finished" -msgstr "Impresión terminada" - -#: Manually added for resources/Cura/Cura.qml -msgctxt "@title:menu menubar:toplevel" -msgid "P&lugins" -msgstr "&Complementos" - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Browse plugins..." -msgstr "Examinar complementos..." - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Installed plugins..." -msgstr "Complementos instalados..." - #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" @@ -113,19 +53,17 @@ 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 -#: /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:428 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/3MFReader/WorkspaceDialog.qml:376 #: /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 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:253 msgctxt "@action:button" msgid "Cancel" msgstr "Cancelar" @@ -152,15 +90,15 @@ 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 "Abrir Connect" +msgid "Open Connect..." +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 "Abrir la interfaz web de Doodle3D Connect" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Mostrar registro de cambios" @@ -195,37 +133,38 @@ msgctxt "@info:status" msgid "Connected via USB" msgstr "Conectado mediante USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 msgctxt "@info:title" -msgid "Print Details" -msgstr "Datos de impresión" +msgid "Printer Unavailable" +msgstr "Impresora no disponible" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 msgctxt "@info:title" msgid "USB Printing" msgstr "Impresión USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 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/USBPrinterOutputDevice.py:461 #: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 msgctxt "@info:title" msgid "Warning" msgstr "Advertencia" @@ -289,11 +228,11 @@ 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: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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 msgctxt "@info:title" msgid "Error" msgstr "Error" @@ -342,346 +281,332 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Unidad extraíble" -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 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:108 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Imprime a través de la red." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 msgctxt "@info:title" msgid "Connection status" msgstr "Estado de la conexión" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:479 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:502 msgctxt "@info:title" msgid "Connection Status" msgstr "Estado de la conexión" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@action:button" msgid "Retry" msgstr "Volver a intentar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Reenvía la solicitud de acceso." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Acceso a la impresora aceptado" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:375 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:385 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:382 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Connected over the network." msgstr "Conectado a través de la red." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:405 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:400 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 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:403 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 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:467 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 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:499 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 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:649 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:666 #, 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:650 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:667 msgctxt "@info:title" msgid "Printer Status" msgstr "Estado de la impresora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 #, 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:682 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 #, 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:692 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 #, 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:702 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 #, 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:716 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 #, 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:724 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:741 #, 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:729 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 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:730 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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:736 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Configuración desajustada" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "Envío de nuevos trabajos (temporalmente) bloqueado; se sigue enviando el trabajo de impresión previo." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Enviando datos a la impresora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:title" msgid "Sending Data" msgstr "Enviando datos" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 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:1050 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Cancelando impresión..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 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:1062 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Pausando impresión..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Reanudando impresión..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Sincronizar con la impresora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 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:1220 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:112 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:113 #, 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 "La impresora aloja un grupo de {count} impresoras conectadas de Ultimaker 3." -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 #, 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 "{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 "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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 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 "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 "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 "Enviar {file_name} al grupo {cluster_name}." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 -msgctxt "@action:button" -msgid "Show print jobs" -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 "Abre la interfaz de trabajos de impresión en el navegador." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "No se puede enviar el trabajo de impresión al grupo {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "Enviar {file_name} al grupo {cluster_name}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "Mostrar trabajos de impresión" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "Abre la interfaz de trabajos de impresión en el navegador." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label" +msgid "Unknown" +msgstr "Desconocido" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#, python-brace-format +msgctxt "@info:status" +msgid "Printer '{printer_name}' has finished printing '{job_name}'." +msgstr "{printer_name} ha terminado de imprimir «{job_name}»." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +msgctxt "@info:status" +msgid "Print finished" +msgstr "Impresión terminada" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 +msgctxt "@label:status" +msgid "Action required" +msgstr "Acción requerida" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "Enviando {file_name} al grupo {cluster_name}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +msgctxt "@action" +msgid "Connect via Network" +msgstr "Conectar a través de la red" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 #, 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 "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." +msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." +msgstr "Hay nuevas funciones disponibles para {machine_name}. Se recomienda actualizar el firmware de la impresora." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Nuevo firmware de %s disponible" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 msgctxt "@action:button" -msgid "Download" -msgstr "Descargar" +msgid "How to update" +msgstr "Cómo actualizar" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 msgctxt "@info" msgid "Could not access update information." msgstr "No se pudo acceder a la información actualizada." @@ -711,7 +636,22 @@ msgctxt "@info:status" msgid "Error while starting %s!" msgstr "Error al iniciar %s" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Simulation view" +msgstr "Vista de simulación" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +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/SimulationView/SimulationView.py:101 +msgctxt "@info:title" +msgid "Simulation View" +msgstr "Vista de simulación" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 msgid "Modify G-Code" msgstr "Modificar GCode" @@ -741,21 +681,6 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "Archivo GCode" -#: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Vista de capas" - -#: /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 "Vista de capas" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -788,8 +713,9 @@ msgstr "No se puede segmentar con el material actual, ya que es incompatible con #: /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 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 msgctxt "@info:title" msgid "Unable to slice" msgstr "No se puede segmentar" @@ -800,23 +726,29 @@ 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:306 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" +msgstr "Los ajustes de algunos modelos no permiten la segmentación. Los siguientes ajustes contienen errores en uno o más modelos: {error_labels}." + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 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:315 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 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." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:65 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:status" msgid "Processing Layers" msgstr "Procesando capas" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:title" msgid "Information" msgstr "Información" @@ -831,14 +763,36 @@ msgctxt "@info:tooltip" 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:475 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23 +msgid "Install" +msgstr "Instalar" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It is not set to a directory." +msgstr "Se ha producido un error al copiar los archivos de complemento de Siemens NX. Compruebe la UGII_USER_DIR. No está asignada a ningún directorio." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81 +msgid "Successfully installed Siemens NX Cura plugin." +msgstr "El complemento Siemens NX Cura se ha instalado correctamente." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgstr "Se ha producido un error al copiar los archivos de complemento de Siemens NX. Compruebe la UGII_USER_DIR." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 +msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." +msgstr "Se ha producido un error al instalar el complemento de Siemens NX. No se pudo definir la variable de entorno UGII_USER_DIR de Siemens NX." + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 msgctxt "@title:tab" msgid "Recommended" msgstr "Recomendado" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizado" @@ -849,29 +803,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Archivo 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 msgctxt "@label" msgid "Nozzle" msgstr "Tobera" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 -msgctxt "@menuitem" -msgid "Browse plugins" -msgstr "Examinar complementos" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "No se pudo obtener la ID del complemento de {0}" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 msgctxt "@info:tile" msgid "Warning" msgstr "Advertencia" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 msgctxt "@window:title" msgid "Plugin browser" msgstr "Explorador de complementos" @@ -886,18 +835,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Archivo G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:254 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Analizar GCode" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 msgctxt "@info:title" msgid "G-code Details" msgstr "Datos de GCode" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 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." @@ -939,73 +888,78 @@ msgctxt "@action" msgid "Level build plate" msgstr "Nivelar placa de impresión" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Pared exterior" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Paredes interiores" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 msgctxt "@tooltip" msgid "Skin" msgstr "Forro" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 msgctxt "@tooltip" msgid "Infill" msgstr "Relleno" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 msgctxt "@tooltip" msgid "Support Infill" msgstr "Relleno de soporte" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 msgctxt "@tooltip" msgid "Support Interface" msgstr "Interfaz de soporte" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Support" msgstr "Soporte" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" msgid "Skirt" msgstr "Falda" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 msgctxt "@tooltip" msgid "Travel" msgstr "Desplazamiento" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Retractions" msgstr "Retracciones" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Other" msgstr "Otro" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +msgctxt "@label unknown material" +msgid "Unknown" +msgstr "Desconocido" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Archivo {0} presegmentado" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 msgctxt "@item:material" msgid "No material loaded" msgstr "No se ha cargado material." -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 msgctxt "@item:material" msgid "Unknown material" msgstr "Material desconocido" @@ -1032,13 +986,13 @@ msgid "Can't Find Location" 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 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 msgctxt "@title:window" msgid "File Already Exists" msgstr "El archivo ya existe" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 #, 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?" @@ -1054,12 +1008,22 @@ msgctxt "@label" msgid "Custom Material" msgstr "Material personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 +msgctxt "@menuitem" +msgid "Global" +msgstr "Global" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "No reemplazado" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 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/MachineManager.py:118 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1080,62 +1044,62 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Deshacer cambio del diámetro del material." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format 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}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, python-brace-format 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." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Perfil exportado a {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:157 msgctxt "@info:title" -msgid "Export Details" -msgstr "Datos de exportación" +msgid "Export succeeded" +msgstr "Exportación correcta" -#: /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 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 #, python-brace-format 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}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Perfil {0} importado correctamente" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 #, 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:272 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 msgctxt "@label" msgid "Custom profile" msgstr "Perfil personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1162,238 +1126,316 @@ msgctxt "@info:title" msgid "Placing Object" msgstr "Colocando objeto" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 msgctxt "@title:window" msgid "Crash Report" msgstr "Informe del accidente" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:79 -msgctxt "@label" +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +msgctxt "@label crash message" 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 " +"

    A fatal exception has occurred. Please send us this Crash Report to fix the problem

    \n" +"

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" +" " +msgstr "

    Se ha producido una excepción fatal. Envíenos este informe de errores para que podamos solucionar el problema.

    \n

    Utilice el botón «Enviar informe» para publicar automáticamente un informe de errores en nuestros servidores.

    \n " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +msgctxt "@title:groupbox" +msgid "System information" +msgstr "Información del sistema" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +msgctxt "@label unknown version of Cura" +msgid "Unknown" +msgstr "Desconocido" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 +#, python-brace-format +msgctxt "@label Cura version" +msgid "Cura version: {version}
    " +msgstr "Versión de Cura: {version}
    " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -msgctxt "@action:button" -msgid "Open Web Page" -msgstr "Abrir página web" +#, python-brace-format +msgctxt "@label Platform" +msgid "Platform: {platform}
    " +msgstr "Platforma: {platform}
    " -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 +#, python-brace-format +msgctxt "@label Qt version" +msgid "Qt version: {qt}
    " +msgstr "Versión de Qt: {qt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 +#, python-brace-format +msgctxt "@label PyQt version" +msgid "PyQt version: {pyqt}
    " +msgstr "Versión de PyQt: {pyqt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 +#, python-brace-format +msgctxt "@label OpenGL" +msgid "OpenGL: {opengl}
    " +msgstr "OpenGL: {opengl}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#, python-brace-format +msgctxt "@label OpenGL version" +msgid "
  • OpenGL Version: {version}
  • " +msgstr "
  • Versión de OpenGL: {version}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#, python-brace-format +msgctxt "@label OpenGL vendor" +msgid "
  • OpenGL Vendor: {vendor}
  • " +msgstr "
  • Proveedor de OpenGL: {vendor}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#, python-brace-format +msgctxt "@label OpenGL renderer" +msgid "
  • OpenGL Renderer: {renderer}
  • " +msgstr "
  • Representador de OpenGL: {renderer}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +msgctxt "@title:groupbox" +msgid "Exception traceback" +msgstr "Rastreabilidad de excepciones" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +msgctxt "@title:groupbox" +msgid "Logs" +msgstr "Registros" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +msgctxt "@title:groupbox" +msgid "User description" +msgstr "Descripción del usuario" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +msgctxt "@action:button" +msgid "Send report" +msgstr "Enviar informe" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Cargando máquinas..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Configurando escena..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Cargando interfaz..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 #, 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:1295 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 #, 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:1304 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1357 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "No se puede abrir ningún archivo si se está cargando un archivo GCode. Se omitió la importación de {0}" +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +msgctxt "@info:status" +msgid "The selected model was too small to load." +msgstr "No se puede cargar el modelo seleccionado, es demasiado pequeño." + #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 msgctxt "@title" msgid "Machine Settings" msgstr "Ajustes de la máquina" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:77 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:78 msgctxt "@title:tab" msgid "Printer" msgstr "Impresora" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:96 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 msgctxt "@label" msgid "Printer Settings" msgstr "Ajustes de la impresora" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:107 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 msgctxt "@label" msgid "X (Width)" msgstr "X (anchura)" -#: /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: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 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:117 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (profundidad)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:127 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 msgctxt "@label" msgid "Z (Height)" msgstr "Z (altura)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:139 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:140 msgctxt "@label" msgid "Build plate shape" msgstr "Forma de la placa de impresión" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:148 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 msgctxt "@option:check" msgid "Origin at center" msgstr "Origen en el centro" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:156 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:157 msgctxt "@option:check" msgid "Heated bed" msgstr "Plataforma caliente" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:167 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 msgctxt "@label" msgid "Gcode flavor" msgstr "Tipo de Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:180 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 msgctxt "@label" msgid "Printhead Settings" msgstr "Ajustes del cabezal de impresión" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:190 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 msgctxt "@label" msgid "X min" msgstr "X mín." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 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 "Distancia desde la parte izquierda del cabezal de impresión hasta el centro de la tobera. Se usa para evitar que colisionen la impresión anterior con el cabezal de impresión al imprimir «de uno en uno»." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:200 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 msgctxt "@label" msgid "Y min" msgstr "Y mín." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 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 "Distancia desde la parte frontal del cabezal de impresión hasta el centro de la tobera. Se usa para evitar que colisionen la impresión anterior con el cabezal de impresión al imprimir «de uno en uno»." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:210 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 msgctxt "@label" msgid "X max" msgstr "X máx." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 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 "Distancia desde la parte derecha del cabezal de impresión hasta el centro de la tobera. Se usa para evitar que colisionen la impresión anterior con el cabezal de impresión al imprimir «de uno en uno»." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:220 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 msgctxt "@label" msgid "Y max" msgstr "Y máx." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 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 "Distancia desde la parte trasera del cabezal de impresión hasta el centro de la tobera. Se usa para evitar que colisionen la impresión anterior con el cabezal de impresión al imprimir «de uno en uno»." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:233 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 msgctxt "@label" msgid "Gantry height" msgstr "Altura del caballete" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 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:254 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 msgctxt "@label" msgid "Number of Extruders" msgstr "Número de extrusores" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 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:290 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 msgctxt "@label" msgid "Material diameter" msgstr "Diámetro del material" -#: /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:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 msgctxt "@label" msgid "Nozzle size" msgstr "Tamaño de la tobera" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 msgctxt "@label" msgid "Start Gcode" msgstr "Iniciar GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 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:335 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 msgctxt "@label" msgid "End Gcode" msgstr "Finalizar GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 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:377 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 msgctxt "@label" msgid "Nozzle Settings" msgstr "Ajustes de la tobera" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 msgctxt "@label" msgid "Nozzle offset X" msgstr "Desplazamiento de la tobera sobre el eje X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Desplazamiento de la tobera sobre el eje Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "GCode inicial del extrusor" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Extruder End Gcode" msgstr "GCode final del extrusor" @@ -1406,12 +1448,11 @@ 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/PostProcessingPlugin/PostProcessingPlugin.qml:445 #: /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/Preferences/MachinesPage.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 msgctxt "@action:button" msgid "Close" @@ -1463,13 +1504,11 @@ 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" @@ -1478,20 +1517,17 @@ msgid "" 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 #: /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 @@ -1500,220 +1536,221 @@ msgid "Remove" msgstr "Eliminar" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:194 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 msgctxt "@label" msgid "Type" msgstr "Tipo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 msgctxt "@label" msgid "Address" msgstr "Dirección" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:286 +msgctxt "@label" +msgid "This printer is not set up to host a group of Ultimaker 3 printers." +msgstr "La impresora no está configurada para alojar un grupo de impresoras Ultimaker 3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:290 +msgctxt "@label" +msgid "This printer is the host for a group of %1 Ultimaker 3 printers." +msgstr "La impresora aloja un grupo de %1 impresoras Ultimaker 3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:300 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/DiscoverUM3Action.qml:305 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /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:316 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 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:346 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 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:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 +#: /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" +msgid "OK" msgstr "Aceptar" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Imprimir a través de la red" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Imprimir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:36 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "%1 no está configurada para alojar un grupo de impresoras conectadas de Ultimaker 3" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "Abre la página de trabajos de impresión en su navegador web por defecto." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "Ver trabajos de impresión" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 +msgctxt "@label" +msgid "Preparing to print" +msgstr "Preparando para impresión" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 +msgctxt "@label:status" +msgid "Printing" +msgstr "Imprimiendo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 +msgctxt "@label:status" +msgid "Available" +msgstr "Disponible" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 +#: /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/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 +msgctxt "@label:status" +msgid "Disabled" +msgstr "Deshabilitado" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273 +msgctxt "@label:status" +msgid "Reserved" +msgstr "Reservado" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:275 +msgctxt "@label:status" +msgid "Finished" +msgstr "Terminado" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 +msgctxt "@label:status" +msgid "Paused" +msgstr "En pausa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 +msgctxt "@label:status" +msgid "Resuming" +msgstr "Reanudando" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 +msgctxt "@label:status" +msgid "Print aborted" +msgstr "Impresión cancelada" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:410 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "No se aceptan trabajos de impresión" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 +msgctxt "@label" +msgid "Finishes at: " +msgstr "Termina a las: " + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 +msgctxt "@label" +msgid "Clear build plate" +msgstr "Borrar placa de impresión" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "Esperando a que se cambie la configuración" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:64 +msgctxt "@title" +msgid "Print jobs" +msgstr "Trabajos de impresión" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 +msgctxt "@label" +msgid "Printing" +msgstr "Imprimiendo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 +msgctxt "@label" +msgid "Queued" +msgstr "En cola" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:171 +msgctxt "@label:title" +msgid "Printers" +msgstr "Impresoras" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 +msgctxt "@action:button" +msgid "View printers" +msgstr "Ver impresoras" + #: /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/DiscoverUM3Action.qml:284 -msgctxt "@label" -msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -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 "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 "Imprimir a través de la red" - -#: /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 "%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 "Imprimiendo" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 -msgctxt "@label:status" -msgid "Reserved" -msgstr "Reservado" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 -msgctxt "@label:status" -msgid "Finished" -msgstr "Terminado" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 -msgctxt "@label:status" -msgid "Preparing" -msgstr "Preparando" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 -msgctxt "@label:status" -msgid "Available" -msgstr "Disponible" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 -msgctxt "@label" -msgid "Completed on: " -msgstr "Completado el: " - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 -msgctxt "@label" -msgid "Clear build plate" -msgstr "Borrar placa de impresión" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 -msgctxt "@label" -msgid "Preparing to print" -msgstr "Preparando para impresión" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 -msgctxt "@label" -msgid "Not accepting print jobs" -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 "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 "Ver trabajos de impresión" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "PRINTER GROUP" -msgstr "GRUPO DE IMPRESORAS" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 -msgctxt "@title" -msgid "Print jobs" -msgstr "Trabajos de impresión" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 -msgctxt "@label" -msgid "Printing" -msgstr "Imprimiendo" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 -msgctxt "@label" -msgid "Queued" -msgstr "En cola" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 -msgctxt "@label" -msgid "Waiting for configuration change" -msgstr "Esperando a que se cambie la configuración" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 -msgctxt "@label:title" -msgid "Printers" -msgstr "Impresoras" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 -msgctxt "@action:button" -msgid "View printers" -msgstr "Ver impresoras" - #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1739,13 +1776,6 @@ msgctxt "@option:curaSolidworksStlQuality" msgid "Always use Coarse quality" msgstr "Usar siempre calidad gruesa" -#: /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 "Aceptar" - #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 msgctxt "@title:window" msgid "Import SolidWorks File as STL..." @@ -1772,11 +1802,91 @@ msgid "Fine" msgstr "Fina" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 msgctxt "@text:window" msgid "Remember my choice" msgstr "Recordar mi selección" +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +msgctxt "@label" +msgid "Color scheme" +msgstr "Combinación de colores" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +msgctxt "@label:listbox" +msgid "Material Color" +msgstr "Color del material" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +msgctxt "@label:listbox" +msgid "Line Type" +msgstr "Tipo de línea" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +msgctxt "@label:listbox" +msgid "Feedrate" +msgstr "Velocidad" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +msgctxt "@label:listbox" +msgid "Layer thickness" +msgstr "Grosor de la capa" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +msgctxt "@label" +msgid "Compatibility Mode" +msgstr "Modo de compatibilidad" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +msgctxt "@label" +msgid "Show Travels" +msgstr "Mostrar desplazamientos" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +msgctxt "@label" +msgid "Show Helpers" +msgstr "Mostrar asistentes" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +msgctxt "@label" +msgid "Show Shell" +msgstr "Mostrar perímetro" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +msgctxt "@label" +msgid "Show Infill" +msgstr "Mostrar relleno" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +msgctxt "@label" +msgid "Only Show Top Layers" +msgstr "Mostrar solo capas superiores" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +msgctxt "@label" +msgid "Show 5 Detailed Layers On Top" +msgstr "Mostrar cinco capas detalladas en la parte superior" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +msgctxt "@label" +msgid "Top / Bottom" +msgstr "Superior o inferior" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +msgctxt "@label" +msgid "Inner Wall" +msgstr "Pared interior" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +msgctxt "@label" +msgid "min" +msgstr "mín." + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +msgctxt "@label" +msgid "max" +msgstr "máx." + #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 msgctxt "@title:window" msgid "Post Processing Plugin" @@ -1787,81 +1897,21 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Secuencias de comandos de posprocesamiento" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:218 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:217 msgctxt "@action" msgid "Add a script" msgstr "Añadir secuencia de comando" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:264 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:263 msgctxt "@label" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 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:76 -msgctxt "@label" -msgid "Color scheme" -msgstr "Combinación de colores" - -#: /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:95 -msgctxt "@label:listbox" -msgid "Line Type" -msgstr "Tipo de línea" - -#: /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:216 -msgctxt "@label" -msgid "Show Travels" -msgstr "Mostrar desplazamientos" - -#: /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:228 -msgctxt "@label" -msgid "Show Shell" -msgstr "Mostrar perímetro" - -#: /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:283 -msgctxt "@label" -msgid "Only Show Top Layers" -msgstr "Mostrar solo capas superiores" - -#: /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:303 -msgctxt "@label" -msgid "Top / Bottom" -msgstr "Superior o inferior" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 -msgctxt "@label" -msgid "Inner Wall" -msgstr "Pared interior" - #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" msgid "Convert Image..." @@ -1953,129 +2003,129 @@ msgctxt "@label:checkbox" msgid "Show all" msgstr "Mostrar todo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:13 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Abrir proyecto" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 msgctxt "@action:ComboBox option" msgid "Update existing" msgstr "Actualizar existente" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:55 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 msgctxt "@action:ComboBox option" msgid "Create new" msgstr "Crear nuevo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:70 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Resumen: proyecto de Cura" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:88 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:88 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 msgctxt "@action:label" msgid "Printer settings" msgstr "Ajustes de la impresora" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 msgctxt "@info:tooltip" msgid "How should the conflict in the machine be resolved?" msgstr "¿Cómo debería solucionarse el conflicto en la máquina?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:124 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:97 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 msgctxt "@action:label" msgid "Type" msgstr "Tipo" -#: /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 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:144 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:201 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:293 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:190 msgctxt "@action:label" msgid "Name" msgstr "Nombre" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:161 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:164 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:166 msgctxt "@action:label" msgid "Profile settings" msgstr "Ajustes del perfil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 msgctxt "@info:tooltip" msgid "How should the conflict in the profile be resolved?" msgstr "¿Cómo debería solucionarse el conflicto en el perfil?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:212 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 msgctxt "@action:label" msgid "Not in profile" msgstr "No está en el perfil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:217 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 sobrescrito" msgstr[1] "%1 sobrescritos" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:232 msgctxt "@action:label" msgid "Derivative from" msgstr "Derivado de" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:233 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:237 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 sobrescrito" msgstr[1] "%1, %2 sobrescritos" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:249 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:253 msgctxt "@action:label" msgid "Material settings" msgstr "Ajustes del material" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:265 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "¿Cómo debería solucionarse el conflicto en el material?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:207 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 msgctxt "@action:label" msgid "Setting visibility" msgstr "Visibilidad de los ajustes" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:317 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:321 msgctxt "@action:label" msgid "Mode" msgstr "Modo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:332 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:216 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:218 msgctxt "@action:label" msgid "Visible settings:" msgstr "Ajustes visibles:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:223 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 de un total de %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:363 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368 msgctxt "@action:warning" -msgid "Loading a project will clear all models on the buildplate" +msgid "Loading a project will clear all models on the build plate." msgstr "Si carga un proyecto, se borrarán todos los modelos de la placa de impresión." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:381 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 msgctxt "@action:button" msgid "Open" msgstr "Abrir" @@ -2100,6 +2150,11 @@ msgctxt "@action:button" msgid "Installed" msgstr "Instalado" +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Descargar" + #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" @@ -2108,10 +2163,10 @@ msgstr "Acuerdo de licencia de complemento" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" msgid "" -" plugin contains a license.\n" +"This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr " El complemento incluye una licencia.\nDebe aceptar dicha licencia para instalar el complemento.\n¿Acepta las siguientes condiciones?" +msgstr "Este complemento incluye una licencia.\nDebe aceptar dicha licencia para instalar el complemento.\n¿Acepta las condiciones que aparecen a continuación?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" @@ -2123,6 +2178,11 @@ msgctxt "@action:button" msgid "Decline" msgstr "Rechazar" +#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 +msgctxt "@title:window" +msgid "User Agreement" +msgstr "Acuerdo de usuario" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 msgctxt "@title" @@ -2308,30 +2368,25 @@ msgid "Printer does not accept commands" msgstr "La impresora no acepta comandos." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "En mantenimiento. Compruebe la impresora." -#: /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:103 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Imprimiendo..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "En pausa" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Preparando..." @@ -2547,7 +2602,7 @@ msgid "Unit" msgstr "Unidad" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "General" msgstr "General" @@ -2778,7 +2833,7 @@ 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:441 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 msgctxt "@title:tab" msgid "Printers" msgstr "Impresoras" @@ -2796,39 +2851,39 @@ msgctxt "@action:button" msgid "Rename" msgstr "Cambiar nombre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 msgctxt "@label" msgid "Printer type:" msgstr "Tipo de impresora:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:158 msgctxt "@label" msgid "Connection:" msgstr "Conexión:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:166 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:164 #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 msgctxt "@info:status" msgid "The printer is not connected." msgstr "La impresora no está conectada." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:170 msgctxt "@label" msgid "State:" msgstr "Estado:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Waiting for someone to clear the build plate" msgstr "Esperando a que alguien limpie la placa de impresión..." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 msgctxt "@label:MonitorStatus" 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:445 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 msgctxt "@title:tab" msgid "Profiles" msgstr "Perfiles" @@ -2926,7 +2981,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:443 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 msgctxt "@title:tab" msgid "Materials" msgstr "Materiales" @@ -2984,7 +3039,7 @@ msgid "Successfully exported material to %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 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 msgctxt "@title:window" msgid "Add Printer" msgstr "Agregar impresora" @@ -3004,6 +3059,11 @@ msgctxt "@title:window" msgid "About Cura" msgstr "Acerca de Cura" +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43 +msgctxt "@label" +msgid "version: %1" +msgstr "versión: %1" + #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." @@ -3096,12 +3156,17 @@ msgctxt "@label" msgid "Polygon clipping library" msgstr "Biblioteca de recorte de polígonos" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Biblioteca HTTP de Python" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 msgctxt "@label" msgid "Font" msgstr "Fuente" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 msgctxt "@label" msgid "SVG icons" msgstr "Iconos SVG" @@ -3111,7 +3176,12 @@ msgctxt "@label" msgid "Profile:" msgstr "Perfil:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 +msgctxt "@" +msgid "No Profile Available" +msgstr "No hay perfiles disponibles." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3119,32 +3189,32 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 msgctxt "@label:textbox" msgid "Search..." msgstr "Buscar..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 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:491 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ocultar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "No mostrar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Mostrar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Configurar la visibilidad de los ajustes..." @@ -3193,54 +3263,71 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Configuración de impresión" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 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" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +msgctxt "@label Hours and minutes" msgid "00h 00min" -msgstr "00h 00min" +msgstr "00 h 00 min" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 msgctxt "@tooltip" -msgid "Time information" -msgstr "Información sobre el tiempo" +msgid "Time specification
    " +msgstr "Especificación de tiempo
    " -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 -msgctxt "@description" -msgid "Print time" -msgstr "Tiempo de impresión" - -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 msgctxt "@label" +msgid "Cost specification" +msgstr "Especificación de costes" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1 m" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1 g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +msgctxt "@label" +msgid "Total:" +msgstr "Total:" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" -msgstr "%1m / ~ %2g/ ~ %4 %3" +msgstr "%1 m/~ %2 g/~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" -msgstr "%1m / ~ %2g" +msgstr "%1 m/~ %2 g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 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:481 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 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." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Automático: %1" @@ -3250,7 +3337,7 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&Ver" -#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" msgstr "Automático: %1" @@ -3279,13 +3366,13 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Abrir &reciente" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 msgctxt "@info:status" 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 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 msgctxt "@label" msgid "Extruder" msgstr "Extrusor" @@ -3300,309 +3387,349 @@ msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "Temperatura actual de este extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:188 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:219 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Material en este extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Tobera insertada en este extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 msgctxt "@label" msgid "Build plate" msgstr "Placa de impresión" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 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:343 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:344 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:422 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 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:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button" msgid "Pre-heat" msgstr "Precalentar" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 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:677 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:703 +msgctxt "@label" +msgid "Printer control" +msgstr "Control de impresoras" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 +msgctxt "@label" +msgid "Jog Position" +msgstr "Posición de desplazamiento" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735 +msgctxt "@label" +msgid "X/Y" +msgstr "X/Y" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842 +msgctxt "@label" +msgid "Z" +msgstr "Z" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 +msgctxt "@label" +msgid "Jog Distance" +msgstr "Distancia de desplazamiento" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018 msgctxt "@label" msgid "Active print" msgstr "Activar impresión" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 msgctxt "@label" msgid "Job Name" msgstr "Nombre del trabajo" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 msgctxt "@label" msgid "Printing Time" msgstr "Tiempo de impresión" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1035 msgctxt "@label" msgid "Estimated time left" msgstr "Tiempo restante estimado" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "A<ernar pantalla completa" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "Des&hacer" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Rehacer" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Salir" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +msgctxt "@action:inmenu menubar:view" +msgid "&Reset camera position" +msgstr "&Restablecer posición de la cámara" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Configurar Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Agregar impresora..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:115 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Adm&inistrar impresoras ..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Administrar materiales..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&Actualizar perfil con ajustes o sobrescrituras actuales" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Descartar cambios actuales" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Crear perfil a partir de ajustes o sobrescrituras actuales..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Administrar perfiles..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Mostrar &documentación en línea" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:171 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Informar de un &error" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "&Acerca de..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 msgctxt "@action:inmenu menubar:edit" msgid "Delete &Selected Model" msgid_plural "Delete &Selected Models" msgstr[0] "Eliminar modelo &seleccionado" msgstr[1] "Eliminar modelos &seleccionados" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Centrar modelo seleccionado" msgstr[1] "Centrar modelos seleccionados" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Multiplicar modelo seleccionado" msgstr[1] "Multiplicar modelos seleccionados" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Eliminar modelo" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:222 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Ce&ntrar modelo en plataforma" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:228 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "A&grupar modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Desagrupar modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "Co&mbinar modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Multiplicar modelo..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:265 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "&Seleccionar todos los modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "&Borrar placa de impresión" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "&Recargar todos los modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Organizar todos los modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Organizar selección" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Restablecer las posiciones de todos los modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "Restablecer las &transformaciones de todos los modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Abrir archivo(s)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Nuevo proyecto..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "&Mostrar registro del motor..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:346 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Mostrar carpeta de configuración" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurar visibilidad de los ajustes..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +msgctxt "@action:menu" +msgid "Browse plugins..." +msgstr "Examinar complementos..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +msgctxt "@action:menu" +msgid "Installed plugins..." +msgstr "Complementos instalados..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Cargue un modelo en 3D" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Preparado para segmentar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Segmentando..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Listo para %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "No se puede segmentar." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "No se puede segmentar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Preparar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 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:593 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 msgctxt "@title:window" msgid "Open file(s)" msgstr "Abrir archivo(s)" @@ -3619,112 +3746,117 @@ msgstr "Importar todos como modelos" #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 msgctxt "@title:window" -msgid "Cura" -msgstr "Cura" +msgid "Ultimaker Cura" +msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&Archivo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "Guardar &selección en archivo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "Guardar &como..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 msgctxt "@title:menu menubar:file" msgid "Save project" msgstr "Guardar proyecto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&Edición" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 msgctxt "@title:menu" msgid "&View" msgstr "&Ver" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:167 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 msgctxt "@title:menu" msgid "&Settings" msgstr "A&justes" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "&Impresora" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 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 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 msgctxt "@title:menu" msgid "&Profile" msgstr "&Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Definir como extrusor activo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:202 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "E&xtensiones" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +msgctxt "@title:menu menubar:toplevel" +msgid "P&lugins" +msgstr "&Complementos" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "Pre&ferencias" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "A&yuda" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 msgctxt "@action:button" msgid "Open File" msgstr "Abrir archivo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 msgctxt "@title:tab" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 msgctxt "@title:window" msgid "New project" msgstr "Nuevo proyecto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 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:694 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 msgctxt "@window:title" msgid "Install Plugin" msgstr "Instalar complemento" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 msgctxt "@title:window" msgid "Open File(s)" msgstr "Abrir archivo(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 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." @@ -3734,102 +3866,112 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Guardar proyecto" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 msgctxt "@action:label" msgid "Extruder %1" msgstr "Extrusor %1" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 y material" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:242 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/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 msgctxt "@action:button" msgid "Save" msgstr "Guardar" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 msgctxt "@title:tab" msgid "Prepare" msgstr "Preparar" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 msgctxt "@title:tab" msgid "Monitor" msgstr "Supervisar" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 msgctxt "@label" msgid "Layer Height" msgstr "Altura de capa" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +msgctxt "@tooltip" +msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +msgstr "Hay un perfil personalizado activado en este momento. Para habilitar el control deslizante de calidad, seleccione un perfil de calidad predeterminado en la pestaña Personalizado." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 msgctxt "@label" msgid "Print Speed" msgstr "Velocidad de impresión" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 msgctxt "@label" msgid "Slower" msgstr "Más lento" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 msgctxt "@label" msgid "Faster" msgstr "Más rápido" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "Ha modificado algunos ajustes del perfil. Si desea cambiarlos, hágalo en el modo personalizado." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 msgctxt "@label" msgid "Infill" msgstr "Relleno" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 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:602 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 msgctxt "@label" msgid "Enable gradual" msgstr "Habilitar gradual" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 msgctxt "@label" msgid "Generate Support" msgstr "Generar soporte" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 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:718 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 msgctxt "@label" msgid "Support Extruder" msgstr "Extrusor del soporte" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 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:796 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Adherencia de la placa de impresión" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 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:883 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 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" @@ -3846,17 +3988,17 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Abrir archivo de proyecto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 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 "Este es un archivo de proyecto Cura. ¿Le gustaría abrirlo como un proyecto o importar sus modelos?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:95 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@action:button" msgid "Open as project" msgstr "Abrir como proyecto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Import models" msgstr "Importar modelos" @@ -3866,17 +4008,17 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Registro del motor" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 msgctxt "@label" -msgid "Check material compatibility" -msgstr "Comprobar la compatibilidad de los materiales" +msgid "Check compatibility" +msgstr "Comprobar compatibilidad" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 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." @@ -3991,11 +4133,6 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Conexión de red UM3" -#: CuraPrintClusterUpload/plugin.json -msgctxt "name" -msgid "UM3 Network Connection (Cluster)" -msgstr "Conexión de red UM3 (grupo)" - #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4016,6 +4153,16 @@ msgctxt "name" msgid "SolidWorks Integration" msgstr "Integración con SolidWorks" +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Abre la vista de simulación." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Vista de simulación" + #: PostProcessingPlugin/plugin.json msgctxt "description" msgid "Extension that allows for user created scripts for post processing" @@ -4076,16 +4223,6 @@ msgctxt "name" msgid "GCode Profile Reader" msgstr "Lector de perfiles Gcode" -#: LayerView/plugin.json -msgctxt "description" -msgid "Provides the Layer view." -msgstr "Proporciona la vista de capas." - -#: LayerView/plugin.json -msgctxt "name" -msgid "Layer View" -msgstr "Vista de capas" - #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4106,6 +4243,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Actualización de la versión 2.7 a la 3.0" +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." +msgstr "Actualiza la configuración de Cura 3.0 a Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.0 to 3.1" +msgstr "Actualización de la versión 3.0 a la 3.1" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4166,6 +4313,16 @@ msgctxt "name" msgid "Per Model Settings Tool" msgstr "Herramienta de ajustes por modelo" +#: cura-siemensnx-plugin/plugin.json +msgctxt "description" +msgid "Helps you to install an 'export to Cura' button in Siemens NX." +msgstr "Ayuda a instalar el botón para exportar a Cura en in Siemens NX." + +#: cura-siemensnx-plugin/plugin.json +msgctxt "name" +msgid "Siemens NX Integration" +msgstr "Siemens NX Integration" + #: 3MFReader/plugin.json msgctxt "description" msgid "Provides support for reading 3MF files." @@ -4226,6 +4383,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "Escritor de 3MF" +#: UserAgreementPlugin/plugin.json +msgctxt "description" +msgid "Ask the user once if he/she agrees with our license" +msgstr "Preguntar al usuario una vez si acepta la licencia" + +#: UserAgreementPlugin/plugin.json +msgctxt "name" +msgid "UserAgreement" +msgstr "UserAgreement" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" @@ -4246,6 +4413,138 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Lector de perfiles de Cura" +#~ msgctxt "@label:status" +#~ msgid "Blocked" +#~ msgstr "Deshabilitada" + +#~ msgctxt "@label:status" +#~ msgid "Can't start print" +#~ msgstr "No se puede imprimir" + +#~ msgctxt "@action:button" +#~ msgid "Open Connect.." +#~ msgstr "Abrir Connect" + +#~ msgctxt "@info:title" +#~ msgid "Print Details" +#~ msgstr "Datos de impresión" + +#~ 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 "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." + +msgctxt "@item:inlistbox" +msgid "Layer view" +msgstr "Vista de capas" + +msgctxt "@info:title" +msgid "Layer View" +msgstr "Vista de capas" + +#~ msgctxt "@menuitem" +#~ msgid "Browse plugins" +#~ msgstr "Examinar complementos" + +#~ msgctxt "@info:title" +#~ msgid "Export Details" +#~ msgstr "Datos de exportación" + +#~ 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 "" +#~ "

    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" +#~ " " + +#~ msgctxt "@action:button" +#~ msgid "Open Web Page" +#~ msgstr "Abrir página web" + +#~ msgctxt "@action:button" +#~ msgid "Ok" +#~ msgstr "Aceptar" + +#~ msgctxt "@label" +#~ msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +#~ msgstr "La impresora no está configurada para alojar un grupo de impresoras conectadas de Ultimaker 3" + +#~ msgctxt "@label" +#~ msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +#~ msgstr "La impresora aloja un grupo de %1 impresoras conectadas de Ultimaker 3" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Preparando" + +#~ msgctxt "@label" +#~ msgid "Completed on: " +#~ msgstr "Completado el: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Opens the print jobs page with your default web browser." +#~ msgstr "Abre la página de trabajos de impresión en su navegador web por defecto." + +#~ msgctxt "@label" +#~ msgid "PRINTER GROUP" +#~ msgstr "GRUPO DE IMPRESORAS" + +#~ msgctxt "@action:warning" +#~ msgid "Loading a project will clear all models on the buildplate" +#~ msgstr "Si carga un proyecto, se borrarán todos los modelos de la placa de impresión." + +#~ 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 "" +#~ " El complemento incluye una licencia.\n" +#~ "Debe aceptar dicha licencia para instalar el complemento.\n" +#~ "¿Acepta las siguientes condiciones?" + +#~ msgctxt "@label" +#~ msgid "00h 00min" +#~ msgstr "00h 00min" + +#~ msgctxt "@tooltip" +#~ msgid "Time information" +#~ msgstr "Información sobre el tiempo" + +#~ msgctxt "@description" +#~ msgid "Print time" +#~ msgstr "Tiempo de impresión" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g / ~ %4 %3" +#~ msgstr "%1m / ~ %2g/ ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g" +#~ msgstr "%1m / ~ %2g" + +#~ msgctxt "@title:window" +#~ msgid "Cura" +#~ msgstr "Cura" + +#~ msgctxt "@label" +#~ msgid "Check material compatibility" +#~ msgstr "Comprobar la compatibilidad de los materiales" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection (Cluster)" +#~ msgstr "Conexión de red UM3 (grupo)" + +#~ msgctxt "description" +#~ msgid "Provides the Layer view." +#~ msgstr "Proporciona la vista de capas." + +msgctxt "name" +msgid "Layer View" +msgstr "Vista de capas" + #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" #~ msgstr "Rayos X" @@ -4565,9 +4864,9 @@ msgstr "Lector de perfiles de Cura" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "Proporciona asistencia para la importación de perfiles de archivos GCode." -#~ msgctxt "@label" -#~ msgid "Layer View" -#~ msgstr "Vista de capas" +msgctxt "@label" +msgid "Layer View" +msgstr "Vista de capas" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." diff --git a/resources/i18n/es_ES/fdmextruder.def.json.po b/resources/i18n/es_ES/fdmextruder.def.json.po index a435f60aae..1d0986f4e1 100644 --- a/resources/i18n/es_ES/fdmextruder.def.json.po +++ b/resources/i18n/es_ES/fdmextruder.def.json.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: Spanish\n" "Language: es_ES\n" diff --git a/resources/i18n/es_ES/fdmprinter.def.json.po b/resources/i18n/es_ES/fdmprinter.def.json.po index b472fd44a7..d3515844e3 100644 --- a/resources/i18n/es_ES/fdmprinter.def.json.po +++ b/resources/i18n/es_ES/fdmprinter.def.json.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -605,6 +605,31 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "Altura de capa inicial en mm. Una capa inicial más gruesa se adhiere a la placa de impresión con mayor facilidad." +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Tolerancia de segmentación" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Cómo segmentar capas con superficies diagonales. Las áreas de una capa se pueden crear según el punto en el que el centro de esta intersecta con la superficie (Media). Las capas también pueden tener áreas comprendidas en el volumen a lo largo de la altura de la capa (Exclusiva) o una capa puede tener áreas comprendidas en cualquier lugar de la capa (Inclusiva). Las capas exclusivas tienen un mayor nivel de detalle, mientras que las inclusivas son las que mejor se ajustan y las medias las que tardan menos en procesarse." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Media" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Exclusiva" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Inclusiva" + #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -755,6 +780,16 @@ 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" @@ -767,8 +802,8 @@ msgstr "El tren extrusor que se utiliza para imprimir la pared exterior. Se empl #: fdmprinter.def.json msgctxt "wall_x_extruder_nr label" -msgid "Inner Walls Extruder" -msgstr "Extrusor de paredes interiores" +msgid "Inner Wall Extruder" +msgstr "Extrusor de pared interior" #: fdmprinter.def.json msgctxt "wall_x_extruder_nr description" @@ -1200,6 +1235,106 @@ 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 "ironing_enabled label" +msgid "Enable Ironing" +msgstr "Habilitar alisado" + +#: fdmprinter.def.json +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 "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 "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" +msgid "Ironing Pattern" +msgstr "Patrón de alisado" + +#: fdmprinter.def.json +msgctxt "ironing_pattern description" +msgid "The pattern to use for ironing top surfaces." +msgstr "El patrón que se usará para el alisado de las superficies superiores." + +#: fdmprinter.def.json +msgctxt "ironing_pattern option concentric" +msgid "Concentric" +msgstr "Concéntrico" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Zigzag" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing label" +msgid "Ironing Line Spacing" +msgstr "Espaciado de líneas del alisado" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing description" +msgid "The distance between the lines of ironing." +msgstr "Distancia entre las líneas del alisado" + +#: fdmprinter.def.json +msgctxt "ironing_flow label" +msgid "Ironing Flow" +msgstr "Flujo de alisado" + +#: fdmprinter.def.json +msgctxt "ironing_flow description" +msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." +msgstr "Cantidad de material (relativa a la línea del forro normal) que se extruye durante el alisado. Dejar la tobera llena permite rellenar algunas grietas de la superficie, pero llenarla demasiado puede provocar la sobrextrusión y afectar a la superficie." + +#: fdmprinter.def.json +msgctxt "ironing_inset label" +msgid "Ironing Inset" +msgstr "Inserción de alisado" + +#: fdmprinter.def.json +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 "infill label" msgid "Infill" @@ -1247,8 +1382,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, 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 "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." +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, tri-hexagon, cubic, octet, quarter cubic, cross 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 "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, trihexagonal, cúbico, de octeto, cúbico bitruncado y transversal 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" @@ -1265,6 +1400,11 @@ msgctxt "infill_pattern option triangles" msgid "Triangles" msgstr "Triángulos" +#: fdmprinter.def.json +msgctxt "infill_pattern option trihexagon" +msgid "Tri-Hexagon" +msgstr "Trihexagonal" + #: fdmprinter.def.json msgctxt "infill_pattern option cubic" msgid "Cubic" @@ -1317,8 +1457,8 @@ 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 "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." +msgid "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." +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 se reduzca 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" @@ -1330,6 +1470,26 @@ msgctxt "infill_angles description" msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns)." msgstr "Una lista de los valores enteros de las direcciones de línea. Los elementos de esta lista se utilizan de forma secuencial a medida que las capas se utilizan y, cuando se alcanza el final, la lista vuelve a comenzar desde el principio. Los elementos de la lista están separados por comas y toda la lista aparece entre corchetes. El valor predeterminado es una lista vacía que utiliza los ángulos predeterminados típicos (45 y 135 grados para las líneas y los patrones en zigzag y 45 grados para el resto de patrones)." +#: fdmprinter.def.json +msgctxt "infill_offset_x label" +msgid "Infill X Offset" +msgstr "Desplazamiento del relleno sobre el eje X" + +#: fdmprinter.def.json +msgctxt "infill_offset_x description" +msgid "The infill pattern is offset this distance along the X axis." +msgstr "El patrón de relleno se desplaza esta distancia a lo largo del eje X." + +#: fdmprinter.def.json +msgctxt "infill_offset_y label" +msgid "Infill Y Offset" +msgstr "Desplazamiento del relleno sobre el eje X" + +#: fdmprinter.def.json +msgctxt "infill_offset_y description" +msgid "The infill pattern is offset this distance along the Y axis." +msgstr "El patrón de relleno se desplaza esta distancia a lo largo del eje Y." + #: fdmprinter.def.json msgctxt "sub_div_rad_add label" msgid "Cubic Subdivision Shell" @@ -1640,6 +1800,26 @@ msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Ajusta el diámetro del filamento utilizado. Este valor debe coincidir con el diámetro del filamento utilizado." +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency label" +msgid "Adhesion Tendency" +msgstr "Tendencia de adherencia" + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency description" +msgid "Surface adhesion tendency." +msgstr "Tendencia de adherencia de la superficie." + +#: fdmprinter.def.json +msgctxt "material_surface_energy label" +msgid "Surface Energy" +msgstr "Energía de la superficie" + +#: fdmprinter.def.json +msgctxt "material_surface_energy description" +msgid "Surface energy." +msgstr "Energía de la superficie." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -2830,36 +3010,6 @@ msgctxt "support_connect_zigzags description" msgid "Connect the ZigZags. This will increase the strength of the zig zag support structure." msgstr "Conectar los zigzags. Esto aumentará la resistencia de la estructura del soporte de zigzag." -#: fdmprinter.def.json -msgctxt "support_skip_some_zags label" -msgid "Break Up Support In Chunks" -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 "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 "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 "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 "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 "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" msgid "Support Density" @@ -3399,8 +3549,8 @@ msgstr "Distancia de falda" 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." +"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.\nSe trata de 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" @@ -3442,26 +3592,6 @@ 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 "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 "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 "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 "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" msgid "Raft Extra Margin" @@ -3479,7 +3609,7 @@ 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." +msgid "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." 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 @@ -3952,6 +4082,16 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Normalmente, Cura intenta coser los pequeños agujeros de la malla y eliminar las partes de una capa con grandes agujeros. Al habilitar esta opción se mantienen aquellas partes que no puedan coserse. Esta opción se debe utilizar como una opción de último recurso cuando todo lo demás falla para producir un GCode adecuado." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Resolución máxima" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "El tamaño mínimo de un segmento de línea tras la segmentación. Si se aumenta, la resolución de la malla será menor. Esto puede permitir a la impresora mantener la velocidad que necesita para procesar GCode y aumentará la velocidad de segmentación al eliminar detalles de la malla que, de todas formas, no puede procesar." + #: fdmprinter.def.json msgctxt "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -3982,6 +4122,16 @@ msgctxt "alternate_carve_order description" msgid "Switch to which mesh intersecting volumes will belong with every layer, so that the overlapping meshes become interwoven. Turning this setting off will cause one of the meshes to obtain all of the volume in the overlap, while it is removed from the other meshes." msgstr "Cambiar la malla a la que pertenecerán los volúmenes que se cruzan en cada capa, de forma que las mallas superpuestas se entrelacen. Desactivar esta opción dará lugar a que una de las mallas reciba todo el volumen de la superposición y que este se elimine de las demás mallas." +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers label" +msgid "Remove Empty First Layers" +msgstr "Eliminar primeras capas vacías" + +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers description" +msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." +msgstr "Eliminar (si las hubiera) las capas vacías por debajo de la primera capa impresa. Deshabilitar este ajuste puede hacer que aparezcan primeras capas vacías si el ajuste de tolerancia de segmentación está establecido en Exclusiva o Medio." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4187,6 +4337,36 @@ 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 "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 "support_skip_some_zags label" +msgid "Break Up Support In Chunks" +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 "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 "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 "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 "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 "Omitir una de cada N líneas de conexión para que la estructura de soporte se descomponga fácilmente." + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4477,6 +4657,26 @@ msgctxt "magic_fuzzy_skin_point_dist description" msgid "The average distance between the random points introduced on each line segment. Note that the original points of the polygon are discarded, so a high smoothness results in a reduction of the resolution. This value must be higher than half the Fuzzy Skin Thickness." msgstr "Distancia media entre los puntos aleatorios introducidos en cada segmento de línea. Tenga en cuenta que los puntos originales del polígono se descartan, así que un suavizado alto produce una reducción de la resolución. Este valor debe ser mayor que la mitad del grosor del forro difuso." +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset label" +msgid "Flow rate compensation max extrusion offset" +msgstr "Desplazamiento de extrusión máximo del factor de compensación del caudal" + +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset description" +msgid "The maximum distance in mm to compensate." +msgstr "Distancia máxima en mm que se va a compensar." + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor label" +msgid "Flow rate compensation factor" +msgstr "Factor de compensación del caudal" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor description" +msgid "The multiplication factor for the flow rate -> distance translation." +msgstr "La multiplicación factor por caudal da como resultado la conversión de distancia." + #: fdmprinter.def.json msgctxt "wireframe_enabled label" msgid "Wire Printing" @@ -4734,106 +4934,6 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Distancia entre la tobera y líneas descendentes en horizontal. Cuanto mayor sea la holgura, menos pronunciado será el ángulo de las líneas descendentes en diagonal, lo que a su vez se traduce en menos conexiones ascendentes con la siguiente capa. Solo se aplica a la impresión de alambre." -#: fdmprinter.def.json -msgctxt "ironing_enabled label" -msgid "Enable Ironing" -msgstr "Habilitar alisado" - -#: fdmprinter.def.json -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 "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 "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" -msgid "Ironing Pattern" -msgstr "Patrón de alisado" - -#: fdmprinter.def.json -msgctxt "ironing_pattern description" -msgid "The pattern to use for ironing top surfaces." -msgstr "El patrón que se usará para el alisado de las superficies superiores." - -#: fdmprinter.def.json -msgctxt "ironing_pattern option concentric" -msgid "Concentric" -msgstr "Concéntrico" - -#: fdmprinter.def.json -msgctxt "ironing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Zigzag" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing label" -msgid "Ironing Line Spacing" -msgstr "Espaciado de líneas del alisado" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing description" -msgid "The distance between the lines of ironing." -msgstr "Distancia entre las líneas del alisado" - -#: fdmprinter.def.json -msgctxt "ironing_flow label" -msgid "Ironing Flow" -msgstr "Flujo de alisado" - -#: fdmprinter.def.json -msgctxt "ironing_flow description" -msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." -msgstr "Cantidad de material (relativa a la línea del forro normal) que se extruye durante el alisado. Dejar la tobera llena permite rellenar algunas grietas de la superficie, pero llenarla demasiado puede provocar la sobrextrusión y afectar a la superficie." - -#: fdmprinter.def.json -msgctxt "ironing_inset label" -msgid "Ironing Inset" -msgstr "Inserción de alisado" - -#: fdmprinter.def.json -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" @@ -4894,13 +4994,45 @@ 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_x_extruder_nr label" +#~ msgid "Inner Walls Extruder" +#~ msgstr "Extrusor de paredes interiores" -#~ 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, 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 "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." + +#~ 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 "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." + +#~ 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." + +#~ msgctxt "z_offset_layer_0 label" +#~ msgid "Initial Layer Z Offset" +#~ msgstr "Desplazamiento Z de la capa inicial" + +#~ 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 "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." + +#~ msgctxt "z_offset_taper_layers label" +#~ msgid "Z Offset Taper Layers" +#~ msgstr "Desplazamiento Z de capas en disminución" + +#~ 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 "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." + +#~ 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 "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." #~ 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." @@ -5116,4 +5248,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/fdmextruder.def.json.pot b/resources/i18n/fdmextruder.def.json.pot index 8b67f13315..af77729254 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 3.0\n" +"Project-Id-Version: Cura 3.1\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 460e508eb9..9d5ef93fc3 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 3.0\n" +"Project-Id-Version: Cura 3.1\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" @@ -651,6 +651,38 @@ msgid "" "adhesion to the build plate easier." msgstr "" +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "" +"How to slice layers with diagonal surfaces. The areas of a layer can be " +"generated based on where the middle of the layer intersects the surface " +"(Middle). Alternatively each layer can have the areas which fall inside of " +"the volume throughout the height of the layer (Exclusive) or a layer has the " +"areas which fall inside anywhere within the layer (Inclusive). Exclusive " +"retains the most details, Inclusive makes for the best fit and Middle takes " +"the least time to process." +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "" + #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -809,6 +841,18 @@ 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" @@ -823,7 +867,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "wall_x_extruder_nr label" -msgid "Inner Walls Extruder" +msgid "Inner Wall Extruder" msgstr "" #: fdmprinter.def.json @@ -1339,6 +1383,117 @@ msgid "" "material." msgstr "" +#: fdmprinter.def.json +msgctxt "ironing_enabled label" +msgid "Enable Ironing" +msgstr "" + +#: fdmprinter.def.json +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" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_pattern description" +msgid "The pattern to use for ironing top surfaces." +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option concentric" +msgid "Concentric" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option zigzag" +msgid "Zig Zag" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing label" +msgid "Ironing Line Spacing" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing description" +msgid "The distance between the lines of ironing." +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_flow label" +msgid "Ironing Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_flow description" +msgid "" +"The amount of material, relative to a normal skin line, to extrude during " +"ironing. Keeping the nozzle filled helps filling some of the crevices of the " +"top surface, but too much results in overextrusion and blips on the side of " +"the surface." +msgstr "" + +#: fdmprinter.def.json +msgctxt "ironing_inset label" +msgid "Ironing Inset" +msgstr "" + +#: fdmprinter.def.json +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 "infill label" msgid "Infill" @@ -1392,9 +1547,10 @@ 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." +"triangle, tri-hexagon, cubic, octet, quarter cubic, cross 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 @@ -1412,6 +1568,11 @@ msgctxt "infill_pattern option triangles" msgid "Triangles" msgstr "" +#: fdmprinter.def.json +msgctxt "infill_pattern option trihexagon" +msgid "Tri-Hexagon" +msgstr "" + #: fdmprinter.def.json msgctxt "infill_pattern option cubic" msgid "Cubic" @@ -1465,9 +1626,9 @@ msgstr "" #: fdmprinter.def.json msgctxt "zig_zaggify_infill description" msgid "" -"Connect the ends where the infill pattern meets the inner wall using a lines " +"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 reduces the effects on infill on " +"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." msgstr "" @@ -1488,6 +1649,26 @@ msgid "" "lines and zig zag patterns and 45 degrees for all other patterns)." msgstr "" +#: fdmprinter.def.json +msgctxt "infill_offset_x label" +msgid "Infill X Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_offset_x description" +msgid "The infill pattern is offset this distance along the X axis." +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_offset_y label" +msgid "Infill Y Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_offset_y description" +msgid "The infill pattern is offset this distance along the Y axis." +msgstr "" + #: fdmprinter.def.json msgctxt "sub_div_rad_add label" msgid "Cubic Subdivision Shell" @@ -1875,6 +2056,26 @@ msgid "" "diameter of the used filament." msgstr "" +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency label" +msgid "Adhesion Tendency" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency description" +msgid "Surface adhesion tendency." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_surface_energy label" +msgid "Surface Energy" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_surface_energy description" +msgid "Surface energy." +msgstr "" + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -3253,42 +3454,6 @@ msgid "" "structure." msgstr "" -#: fdmprinter.def.json -msgctxt "support_skip_some_zags label" -msgid "Break Up Support In Chunks" -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 "" - -#: 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 "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 away." -msgstr "" - #: fdmprinter.def.json msgctxt "support_infill_rate label" msgid "Support Density" @@ -3913,7 +4078,7 @@ msgstr "" 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 is the minimum distance. Multiple skirt lines will extend outwards from " "this distance." msgstr "" @@ -3969,32 +4134,6 @@ 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" @@ -4016,10 +4155,10 @@ 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." +"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." msgstr "" #: fdmprinter.def.json @@ -4560,6 +4699,20 @@ msgid "" "everything else fails to produce proper GCode." msgstr "" +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "" +"The minimum size of a line segment after slicing. If you increase this, the " +"mesh will have a lower resolution. This may allow the printer to keep up " +"with the speed it has to process g-code and will increase slice speed by " +"removing details of the mesh that it can't process anyway." +msgstr "" + #: fdmprinter.def.json msgctxt "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -4598,6 +4751,19 @@ msgid "" "is removed from the other meshes." msgstr "" +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers label" +msgid "Remove Empty First Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers description" +msgid "" +"Remove empty layers beneath the first printed layer if they are present. " +"Disabling this setting can cause empty first layers if the Slicing Tolerance " +"setting is set to Exclusive or Middle." +msgstr "" + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4852,6 +5018,42 @@ msgid "" "time estimates with and without optimization." msgstr "" +#: fdmprinter.def.json +msgctxt "support_skip_some_zags label" +msgid "Break Up Support In Chunks" +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 "" + +#: 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 "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 away." +msgstr "" + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -5210,6 +5412,26 @@ msgid "" "higher than half the Fuzzy Skin Thickness." msgstr "" +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset label" +msgid "Flow rate compensation max extrusion offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset description" +msgid "The maximum distance in mm to compensate." +msgstr "" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor label" +msgid "Flow rate compensation factor" +msgstr "" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor description" +msgid "The multiplication factor for the flow rate -> distance translation." +msgstr "" + #: fdmprinter.def.json msgctxt "wireframe_enabled label" msgid "Wire Printing" @@ -5523,117 +5745,6 @@ msgid "" "applies to Wire Printing." msgstr "" -#: fdmprinter.def.json -msgctxt "ironing_enabled label" -msgid "Enable Ironing" -msgstr "" - -#: fdmprinter.def.json -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" -msgstr "" - -#: fdmprinter.def.json -msgctxt "ironing_pattern description" -msgid "The pattern to use for ironing top surfaces." -msgstr "" - -#: fdmprinter.def.json -msgctxt "ironing_pattern option concentric" -msgid "Concentric" -msgstr "" - -#: fdmprinter.def.json -msgctxt "ironing_pattern option zigzag" -msgid "Zig Zag" -msgstr "" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing label" -msgid "Ironing Line Spacing" -msgstr "" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing description" -msgid "The distance between the lines of ironing." -msgstr "" - -#: fdmprinter.def.json -msgctxt "ironing_flow label" -msgid "Ironing Flow" -msgstr "" - -#: fdmprinter.def.json -msgctxt "ironing_flow description" -msgid "" -"The amount of material, relative to a normal skin line, to extrude during " -"ironing. Keeping the nozzle filled helps filling some of the crevices of the " -"top surface, but too much results in overextrusion and blips on the side of " -"the surface." -msgstr "" - -#: fdmprinter.def.json -msgctxt "ironing_inset label" -msgid "Ironing Inset" -msgstr "" - -#: fdmprinter.def.json -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" diff --git a/resources/i18n/fi_FI/cura.po b/resources/i18n/fi_FI/cura.po index ae60ff98c6..461bfd63db 100644 --- a/resources/i18n/fi_FI/cura.po +++ b/resources/i18n/fi_FI/cura.po @@ -6,8 +6,8 @@ msgid "" 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" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-21 16:58+0100\n" "PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: Finnish\n" @@ -16,66 +16,6 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Print aborted" -msgstr "Tulostus keskeytetty" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Blocked" -msgstr "Tukossa" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Action required" -msgstr "Vaatii toimenpiteitä" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Can't start print" -msgstr "Tulostus ei käynnisty" - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is not set up to host a group of Ultimaker 3 printers." -msgstr "Tätä tulostinta ei ole määritetty Ultimaker 3 -tulostinryhmän isännäksi." - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label" -msgid "Finishes at: " -msgstr "Päättyy: " - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is the host for a group of %1 Ultimaker 3 printers." -msgstr "Tämä tulostin on {count} tulostimen Ultimaker 3 -ryhmän isäntä." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "{printer_name} on tulostanut työn '{job_name}'." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Print finished" -msgstr "Tulosta valmis" - -#: Manually added for resources/Cura/Cura.qml -msgctxt "@title:menu menubar:toplevel" -msgid "P&lugins" -msgstr "&Lisäosat" - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Browse plugins..." -msgstr "Selaa lisäosia..." - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Installed plugins..." -msgstr "Asennetut lisäoset..." - #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" @@ -113,19 +53,17 @@ 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 -#: /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:428 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/3MFReader/WorkspaceDialog.qml:376 #: /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 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:253 msgctxt "@action:button" msgid "Cancel" msgstr "Peruuta" @@ -152,15 +90,15 @@ 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 "Avaa Connect..." +msgid "Open Connect..." +msgstr "" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "Avaa Doodle3D Connect -verkkoliittymä" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Näytä muutosloki" @@ -195,37 +133,38 @@ msgctxt "@info:status" msgid "Connected via USB" msgstr "Yhdistetty USB:n kautta" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 msgctxt "@info:title" -msgid "Print Details" -msgstr "Tulostustiedot" +msgid "Printer Unavailable" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 msgctxt "@info:title" msgid "USB Printing" msgstr "USB-tulostus" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 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/USBPrinterOutputDevice.py:461 #: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 msgctxt "@info:title" msgid "Warning" msgstr "Varoitus" @@ -289,11 +228,11 @@ 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: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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 msgctxt "@info:title" msgid "Error" msgstr "Virhe" @@ -342,346 +281,332 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Siirrettävä asema" -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Tulosta verkon kautta" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Tulosta verkon kautta" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 msgctxt "@info:title" msgid "Connection status" msgstr "Yhteyden tila" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:479 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:502 msgctxt "@info:title" msgid "Connection Status" msgstr "Yhteyden tila" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@action:button" msgid "Retry" msgstr "Yritä uudelleen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Lähetä käyttöoikeuspyyntö uudelleen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Tulostimen käyttöoikeus hyväksytty" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:375 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:385 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:382 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Connected over the network." msgstr "Yhdistetty verkon kautta tulostimeen." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:405 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:400 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 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:403 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 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:467 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 msgctxt "@info:status" msgid "The connection with the network was lost." msgstr "Yhteys verkkoon menetettiin." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:499 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 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:649 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:666 #, 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:650 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:667 msgctxt "@info:title" msgid "Printer Status" msgstr "Tulostimen tila" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 #, 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:682 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 #, 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:692 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 #, 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:702 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 #, 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:716 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 #, 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:724 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:741 #, 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:729 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 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:730 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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:736 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Ristiriitainen määritys" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "Uusien töiden lähettäminen (tilapäisesti) estetty, edellistä tulostustyötä lähetetään vielä." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Lähetetään tietoja tulostimeen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:title" msgid "Sending Data" msgstr "Lähetetään tietoja" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 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:1050 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Keskeytetään tulostus..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Tulostus keskeytetty. Tarkista tulostin" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Tulostus pysäytetään..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Tulostusta jatketaan..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synkronoi tulostimen kanssa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 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:1220 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:112 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:113 #, 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 "Tämä tulostin on {count} tulostimen yhdistetyn Ultimaker 3 -ryhmän isäntä." -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "{printer_name} on tulostanut työn '{job_name}'. Nouda työ ja vahvista alustan tyhjennys." -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 #, 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 "{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 "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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 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 "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 "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 "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 "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 "Avaa tulostustöiden käyttöliittymän selaimessa." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Tulostustyön lähetys ryhmään {cluster_name} ei onnistu." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "Lähetettiin {file_name} ryhmään {cluster_name}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "Näytä tulostustyöt" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "Avaa tulostustöiden käyttöliittymän selaimessa." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label" +msgid "Unknown" +msgstr "Tuntematon" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#, python-brace-format +msgctxt "@info:status" +msgid "Printer '{printer_name}' has finished printing '{job_name}'." +msgstr "{printer_name} on tulostanut työn '{job_name}'." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +msgctxt "@info:status" +msgid "Print finished" +msgstr "Tulosta valmis" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 +msgctxt "@label:status" +msgid "Action required" +msgstr "Vaatii toimenpiteitä" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "Lähetetään tiedostoa {file_name} ryhmään {cluster_name}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +msgctxt "@action" +msgid "Connect via Network" +msgstr "Yhdistä verkon kautta" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 #, 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 "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." +msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Uusi tulostimen %s laiteohjelmisto saatavilla" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 msgctxt "@action:button" -msgid "Download" -msgstr "Lataa" +msgid "How to update" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 msgctxt "@info" msgid "Could not access update information." msgstr "Päivitystietoja ei löytynyt." @@ -711,7 +636,22 @@ msgctxt "@info:status" msgid "Error while starting %s!" msgstr "%s:n käynnistyksen aikana ilmeni virhe!" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Simulation view" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +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/SimulationView/SimulationView.py:101 +msgctxt "@info:title" +msgid "Simulation View" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 msgid "Modify G-Code" msgstr "Muokkaa GCode-arvoa" @@ -741,21 +681,6 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "GCode-tiedosto" -#: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Kerrosnäkymä" - -#: /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 "Kerrosnäkymä" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -788,8 +713,9 @@ msgstr "Viipalointi ei onnistu nykyisellä materiaalilla, sillä se ei sovellu k #: /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 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 msgctxt "@info:title" msgid "Unable to slice" msgstr "Viipalointi ei onnistu" @@ -800,23 +726,29 @@ 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:306 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 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:315 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 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." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:65 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:status" msgid "Processing Layers" msgstr "Käsitellään kerroksia" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:title" msgid "Information" msgstr "Tiedot" @@ -831,14 +763,36 @@ msgctxt "@info:tooltip" 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:475 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23 +msgid "Install" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It is not set to a directory." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81 +msgid "Successfully installed Siemens NX Cura plugin." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 +msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 msgctxt "@title:tab" msgid "Recommended" msgstr "Suositeltu" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Custom" msgstr "Mukautettu" @@ -849,29 +803,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF-tiedosto" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 msgctxt "@label" msgid "Nozzle" msgstr "Suutin" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 -msgctxt "@menuitem" -msgid "Browse plugins" -msgstr "Selaa lisäosia" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "Lisäosan tunnuksen hankkiminen epäonnistui tiedostosta {0}" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 msgctxt "@info:tile" msgid "Warning" msgstr "Varoitus" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 msgctxt "@window:title" msgid "Plugin browser" msgstr "Lisäosien selain" @@ -886,18 +835,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G File -tiedosto" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:254 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-coden jäsennys" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 msgctxt "@info:title" msgid "G-code Details" msgstr "G-coden tiedot" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 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." @@ -939,73 +888,78 @@ msgctxt "@action" msgid "Level build plate" msgstr "Tasaa alusta" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Ulkoseinämä" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Sisäseinämät" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 msgctxt "@tooltip" msgid "Skin" msgstr "Pintakalvo" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 msgctxt "@tooltip" msgid "Infill" msgstr "Täyttö" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 msgctxt "@tooltip" msgid "Support Infill" msgstr "Tuen täyttö" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 msgctxt "@tooltip" msgid "Support Interface" msgstr "Tukiliittymä" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Support" msgstr "Tuki" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" msgid "Skirt" msgstr "Helma" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 msgctxt "@tooltip" msgid "Travel" msgstr "Siirtoliike" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Retractions" msgstr "Takaisinvedot" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Other" msgstr "Muu" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +msgctxt "@label unknown material" +msgid "Unknown" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Esiviipaloitu tiedosto {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 msgctxt "@item:material" msgid "No material loaded" msgstr "Ei ladattua materiaalia" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 msgctxt "@item:material" msgid "Unknown material" msgstr "Tuntematon materiaali" @@ -1032,13 +986,13 @@ msgid "Can't Find Location" msgstr "Paikkaa ei löydy" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 msgctxt "@title:window" msgid "File Already Exists" msgstr "Tiedosto on jo olemassa" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 #, 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?" @@ -1054,12 +1008,22 @@ msgctxt "@label" msgid "Custom Material" msgstr "Mukautettu materiaali" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 +msgctxt "@menuitem" +msgid "Global" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 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/MachineManager.py:118 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1080,62 +1044,62 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Kumoa materiaalin halkaisijan muutokset." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format 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}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, python-brace-format 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ä." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Profiili viety tiedostoon {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:157 msgctxt "@info:title" -msgid "Export Details" -msgstr "Viennin tiedot" +msgid "Export succeeded" +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 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 #, python-brace-format 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}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Onnistuneesti tuotu profiili {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 #, 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:272 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 msgctxt "@label" msgid "Custom profile" msgstr "Mukautettu profiili" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Profiilista puuttuu laatutyyppi." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1162,238 +1126,316 @@ msgctxt "@info:title" msgid "Placing Object" msgstr "Sijoitetaan kappaletta" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 msgctxt "@title:window" msgid "Crash Report" msgstr "Kaatumisraportti" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:79 -msgctxt "@label" +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +msgctxt "@label crash message" 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 " +"

    A fatal exception has occurred. Please send us this Crash Report to fix the problem

    \n" +"

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" +" " +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +msgctxt "@title:groupbox" +msgid "System information" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +msgctxt "@label unknown version of Cura" +msgid "Unknown" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 +#, python-brace-format +msgctxt "@label Cura version" +msgid "Cura version: {version}
    " +msgstr "" #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -msgctxt "@action:button" -msgid "Open Web Page" -msgstr "Avaa verkkosivu" +#, python-brace-format +msgctxt "@label Platform" +msgid "Platform: {platform}
    " +msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 +#, python-brace-format +msgctxt "@label Qt version" +msgid "Qt version: {qt}
    " +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 +#, python-brace-format +msgctxt "@label PyQt version" +msgid "PyQt version: {pyqt}
    " +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 +#, python-brace-format +msgctxt "@label OpenGL" +msgid "OpenGL: {opengl}
    " +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#, python-brace-format +msgctxt "@label OpenGL version" +msgid "
  • OpenGL Version: {version}
  • " +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#, python-brace-format +msgctxt "@label OpenGL vendor" +msgid "
  • OpenGL Vendor: {vendor}
  • " +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#, python-brace-format +msgctxt "@label OpenGL renderer" +msgid "
  • OpenGL Renderer: {renderer}
  • " +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +msgctxt "@title:groupbox" +msgid "Exception traceback" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +msgctxt "@title:groupbox" +msgid "Logs" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +msgctxt "@title:groupbox" +msgid "User description" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +msgctxt "@action:button" +msgid "Send report" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Ladataan laitteita..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Asetetaan näkymää..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Ladataan käyttöliittymää..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 #, 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:1295 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 #, 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:1304 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1357 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Muita tiedostoja ei voida ladata, kun G-code latautuu. Tiedoston {0} tuonti ohitettiin." +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +msgctxt "@info:status" +msgid "The selected model was too small to load." +msgstr "" + #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 msgctxt "@title" msgid "Machine Settings" msgstr "Laitteen asetukset" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:77 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:78 msgctxt "@title:tab" msgid "Printer" msgstr "Tulostin" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:96 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 msgctxt "@label" msgid "Printer Settings" msgstr "Tulostimen asetukset" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:107 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 msgctxt "@label" msgid "X (Width)" msgstr "X (leveys)" -#: /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: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 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:117 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (syvyys)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:127 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 msgctxt "@label" msgid "Z (Height)" msgstr "Z (korkeus)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:139 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:140 msgctxt "@label" msgid "Build plate shape" msgstr "Alustan muoto" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:148 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 msgctxt "@option:check" msgid "Origin at center" msgstr "Alkukohta keskellä" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:156 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:157 msgctxt "@option:check" msgid "Heated bed" msgstr "Lämmitettävä pöytä" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:167 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 msgctxt "@label" msgid "Gcode flavor" msgstr "GCode-tyyppi" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:180 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 msgctxt "@label" msgid "Printhead Settings" msgstr "Tulostuspään asetukset" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:190 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 msgctxt "@label" msgid "X min" msgstr "X väh." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 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 "Etäisyys tulostuspään vasemmalta puolelta suuttimen keskikohtaan. Käytetään estämään aiempien tulosteiden ja tulostuspään yhteentörmäyksiä, kun tulostetaan yksi kerrallaan." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:200 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 msgctxt "@label" msgid "Y min" msgstr "Y väh." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 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 "Etäisyys tulostuspään etupuolelta suuttimen keskikohtaan. Käytetään estämään aiempien tulosteiden ja tulostuspään yhteentörmäyksiä, kun tulostetaan yksi kerrallaan." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:210 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 msgctxt "@label" msgid "X max" msgstr "X enint." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 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 "Etäisyys tulostuspään oikealta puolelta suuttimen keskikohtaan. Käytetään estämään aiempien tulosteiden ja tulostuspään yhteentörmäyksiä, kun tulostetaan yksi kerrallaan." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:220 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 msgctxt "@label" msgid "Y max" msgstr "Y enint." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 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 "Etäisyys tulostuspään takapuolelta suuttimen keskikohtaan. Käytetään estämään aiempien tulosteiden ja tulostuspään yhteentörmäyksiä, kun tulostetaan yksi kerrallaan." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:233 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 msgctxt "@label" msgid "Gantry height" msgstr "Korokkeen korkeus" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 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:254 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 msgctxt "@label" msgid "Number of Extruders" msgstr "Suulakkeiden määrä" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 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:290 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 msgctxt "@label" msgid "Material diameter" msgstr "Materiaalin halkaisija" -#: /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:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 msgctxt "@label" msgid "Nozzle size" msgstr "Suuttimen koko" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 msgctxt "@label" msgid "Start Gcode" msgstr "Aloita GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 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:335 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 msgctxt "@label" msgid "End Gcode" msgstr "Lopeta GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 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:377 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 msgctxt "@label" msgid "Nozzle Settings" msgstr "Suutinasetukset" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 msgctxt "@label" msgid "Nozzle offset X" msgstr "Suuttimen X-siirtymä" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Suuttimen Y-siirtymä" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "Suulake – aloita Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Extruder End Gcode" msgstr "Suulake – lopeta Gcode" @@ -1406,12 +1448,11 @@ 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/PostProcessingPlugin/PostProcessingPlugin.qml:445 #: /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/Preferences/MachinesPage.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 msgctxt "@action:button" msgid "Close" @@ -1463,35 +1504,33 @@ 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 @@ -1500,220 +1539,221 @@ msgid "Remove" msgstr "Poista" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:194 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 msgctxt "@label" msgid "Type" msgstr "Tyyppi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 msgctxt "@label" msgid "Address" msgstr "Osoite" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:286 +msgctxt "@label" +msgid "This printer is not set up to host a group of Ultimaker 3 printers." +msgstr "Tätä tulostinta ei ole määritetty Ultimaker 3 -tulostinryhmän isännäksi." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:290 +msgctxt "@label" +msgid "This printer is the host for a group of %1 Ultimaker 3 printers." +msgstr "Tämä tulostin on {count} tulostimen Ultimaker 3 -ryhmän isäntä." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:300 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/DiscoverUM3Action.qml:305 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /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:316 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 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:346 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 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:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 +#: /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" +msgid "OK" msgstr "OK" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Tulosta verkon kautta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Tulosta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:36 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "%1 ei ole määritetty yhdistetyn Ultimaker 3 -tulostinryhmän isännäksi" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "Näytä tulostustyöt" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 +msgctxt "@label" +msgid "Preparing to print" +msgstr "Valmistellaan tulostusta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 +msgctxt "@label:status" +msgid "Printing" +msgstr "Tulostetaan" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 +msgctxt "@label:status" +msgid "Available" +msgstr "Saatavilla" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 +#: /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/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 +msgctxt "@label:status" +msgid "Disabled" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273 +msgctxt "@label:status" +msgid "Reserved" +msgstr "Varattu" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:275 +msgctxt "@label:status" +msgid "Finished" +msgstr "Valmis" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 +msgctxt "@label:status" +msgid "Paused" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 +msgctxt "@label:status" +msgid "Resuming" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 +msgctxt "@label:status" +msgid "Print aborted" +msgstr "Tulostus keskeytetty" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:410 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "Ei hyväksy tulostustöitä" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 +msgctxt "@label" +msgid "Finishes at: " +msgstr "Päättyy: " + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 +msgctxt "@label" +msgid "Clear build plate" +msgstr "Tyhjennä alusta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "Odotetaan määrityksen muutosta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:64 +msgctxt "@title" +msgid "Print jobs" +msgstr "Tulostustyöt" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 +msgctxt "@label" +msgid "Printing" +msgstr "Tulostetaan" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 +msgctxt "@label" +msgid "Queued" +msgstr "Jonossa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:171 +msgctxt "@label:title" +msgid "Printers" +msgstr "Tulostimet" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 +msgctxt "@action:button" +msgid "View printers" +msgstr "Näytä tulostimet" + #: /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/DiscoverUM3Action.qml:284 -msgctxt "@label" -msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -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 "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 "Tulosta verkon kautta" - -#: /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 "%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 "Tulostetaan" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 -msgctxt "@label:status" -msgid "Reserved" -msgstr "Varattu" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 -msgctxt "@label:status" -msgid "Finished" -msgstr "Valmis" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 -msgctxt "@label:status" -msgid "Preparing" -msgstr "Valmistellaan" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 -msgctxt "@label:status" -msgid "Available" -msgstr "Saatavilla" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 -msgctxt "@label" -msgid "Completed on: " -msgstr "Valmistunut: " - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 -msgctxt "@label" -msgid "Clear build plate" -msgstr "Tyhjennä alusta" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 -msgctxt "@label" -msgid "Preparing to print" -msgstr "Valmistellaan tulostusta" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 -msgctxt "@label" -msgid "Not accepting print jobs" -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 "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 "Näytä tulostustyöt" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "PRINTER GROUP" -msgstr "TULOSTINRYHMÄ" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 -msgctxt "@title" -msgid "Print jobs" -msgstr "Tulostustyöt" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 -msgctxt "@label" -msgid "Printing" -msgstr "Tulostetaan" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 -msgctxt "@label" -msgid "Queued" -msgstr "Jonossa" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 -msgctxt "@label" -msgid "Waiting for configuration change" -msgstr "Odotetaan määrityksen muutosta" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 -msgctxt "@label:title" -msgid "Printers" -msgstr "Tulostimet" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 -msgctxt "@action:button" -msgid "View printers" -msgstr "Näytä tulostimet" - #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1739,13 +1779,6 @@ msgctxt "@option:curaSolidworksStlQuality" msgid "Always use Coarse quality" msgstr "Käytä aina karkeaa laatua" -#: /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..." @@ -1772,11 +1805,91 @@ msgid "Fine" msgstr "Hieno" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 msgctxt "@text:window" msgid "Remember my choice" msgstr "Muista valintani" +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +msgctxt "@label" +msgid "Color scheme" +msgstr "Värimalli" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +msgctxt "@label:listbox" +msgid "Material Color" +msgstr "Materiaalin väri" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +msgctxt "@label:listbox" +msgid "Line Type" +msgstr "Linjojen tyyppi" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +msgctxt "@label:listbox" +msgid "Feedrate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +msgctxt "@label:listbox" +msgid "Layer thickness" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +msgctxt "@label" +msgid "Compatibility Mode" +msgstr "Yhteensopivuustila" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +msgctxt "@label" +msgid "Show Travels" +msgstr "Näytä siirtoliikkeet" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +msgctxt "@label" +msgid "Show Helpers" +msgstr "Näytä avustimet" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +msgctxt "@label" +msgid "Show Shell" +msgstr "Näytä kuori" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +msgctxt "@label" +msgid "Show Infill" +msgstr "Näytä täyttö" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +msgctxt "@label" +msgid "Only Show Top Layers" +msgstr "Näytä vain yläkerrokset" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +msgctxt "@label" +msgid "Show 5 Detailed Layers On Top" +msgstr "Näytä 5 yksityiskohtaista kerrosta ylhäällä" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +msgctxt "@label" +msgid "Top / Bottom" +msgstr "Yläosa/alaosa" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +msgctxt "@label" +msgid "Inner Wall" +msgstr "Sisäseinämä" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +msgctxt "@label" +msgid "min" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +msgctxt "@label" +msgid "max" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 msgctxt "@title:window" msgid "Post Processing Plugin" @@ -1787,81 +1900,21 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Jälkikäsittelykomentosarjat" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:218 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:217 msgctxt "@action" msgid "Add a script" msgstr "Lisää komentosarja" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:264 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:263 msgctxt "@label" msgid "Settings" msgstr "Asetukset" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Muuta aktiivisia jälkikäsittelykomentosarjoja" -#: /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:91 -msgctxt "@label:listbox" -msgid "Material Color" -msgstr "Materiaalin väri" - -#: /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:135 -msgctxt "@label" -msgid "Compatibility Mode" -msgstr "Yhteensopivuustila" - -#: /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:222 -msgctxt "@label" -msgid "Show Helpers" -msgstr "Näytä avustimet" - -#: /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:234 -msgctxt "@label" -msgid "Show Infill" -msgstr "Näytä täyttö" - -#: /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: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:303 -msgctxt "@label" -msgid "Top / Bottom" -msgstr "Yläosa/alaosa" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 -msgctxt "@label" -msgid "Inner Wall" -msgstr "Sisäseinämä" - #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" msgid "Convert Image..." @@ -1953,129 +2006,129 @@ msgctxt "@label:checkbox" msgid "Show all" msgstr "Näytä kaikki" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:13 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Avaa projekti" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 msgctxt "@action:ComboBox option" msgid "Update existing" msgstr "Päivitä nykyinen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:55 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 msgctxt "@action:ComboBox option" msgid "Create new" msgstr "Luo uusi" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:70 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Yhteenveto – Cura-projekti" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:88 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:88 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 msgctxt "@action:label" msgid "Printer settings" msgstr "Tulostimen asetukset" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 msgctxt "@info:tooltip" msgid "How should the conflict in the machine be resolved?" msgstr "Miten laitteen ristiriita pitäisi ratkaista?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:124 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:97 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 msgctxt "@action:label" msgid "Type" msgstr "Tyyppi" -#: /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 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:144 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:201 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:293 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:190 msgctxt "@action:label" msgid "Name" msgstr "Nimi" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:161 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:164 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:166 msgctxt "@action:label" msgid "Profile settings" msgstr "Profiilin asetukset" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 msgctxt "@info:tooltip" msgid "How should the conflict in the profile be resolved?" msgstr "Miten profiilin ristiriita pitäisi ratkaista?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:212 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 msgctxt "@action:label" msgid "Not in profile" msgstr "Ei profiilissa" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:217 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 ohitus" msgstr[1] "%1 ohitusta" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:232 msgctxt "@action:label" msgid "Derivative from" msgstr "Johdettu seuraavista" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:233 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:237 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 ohitus" msgstr[1] "%1, %2 ohitusta" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:249 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:253 msgctxt "@action:label" msgid "Material settings" msgstr "Materiaaliasetukset" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:265 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Miten materiaalin ristiriita pitäisi ratkaista?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:207 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 msgctxt "@action:label" msgid "Setting visibility" msgstr "Asetusten näkyvyys" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:317 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:321 msgctxt "@action:label" msgid "Mode" msgstr "Tila" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:332 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:216 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:218 msgctxt "@action:label" msgid "Visible settings:" msgstr "Näkyvät asetukset:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:223 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1/%2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:363 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368 msgctxt "@action:warning" -msgid "Loading a project will clear all models on the buildplate" -msgstr "Projektin lataaminen poistaa kaikki alustalla olevat mallit" +msgid "Loading a project will clear all models on the build plate." +msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:381 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 msgctxt "@action:button" msgid "Open" msgstr "Avaa" @@ -2100,6 +2153,11 @@ msgctxt "@action:button" msgid "Installed" msgstr "Asennettu" +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Lataa" + #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" @@ -2108,10 +2166,10 @@ msgstr "Lisäosan lisenssisopimus" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" msgid "" -" plugin contains a license.\n" +"This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr " lisäosa sisältää lisenssin.\nLisenssi on hyväksyttävä lisäosan asentamista varten.\nHyväksytkö alla olevat ehdot?" +msgstr "" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" @@ -2123,6 +2181,11 @@ msgctxt "@action:button" msgid "Decline" msgstr "Hylkää" +#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 +msgctxt "@title:window" +msgid "User Agreement" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 msgctxt "@title" @@ -2308,30 +2371,25 @@ msgid "Printer does not accept commands" msgstr "Tulostin ei hyväksy komentoja" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "Huolletaan. Tarkista tulostin" -#: /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:103 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Tulostetaan..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Keskeytetty" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Valmistellaan..." @@ -2376,7 +2434,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" @@ -2547,7 +2607,7 @@ msgid "Unit" msgstr "Yksikkö" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "General" msgstr "Yleiset" @@ -2778,7 +2838,7 @@ 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:441 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 msgctxt "@title:tab" msgid "Printers" msgstr "Tulostimet" @@ -2796,39 +2856,39 @@ msgctxt "@action:button" msgid "Rename" msgstr "Nimeä uudelleen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 msgctxt "@label" msgid "Printer type:" msgstr "Tulostimen tyyppi:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:158 msgctxt "@label" msgid "Connection:" msgstr "Yhteys:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:166 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:164 #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 msgctxt "@info:status" msgid "The printer is not connected." msgstr "Tulostinta ei ole yhdistetty." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:170 msgctxt "@label" msgid "State:" msgstr "Tila:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Waiting for someone to clear the build plate" msgstr "Odotetaan tulostusalustan tyhjennystä" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 msgctxt "@label:MonitorStatus" 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:445 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 msgctxt "@title:tab" msgid "Profiles" msgstr "Profiilit" @@ -2926,7 +2986,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:443 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 msgctxt "@title:tab" msgid "Materials" msgstr "Materiaalit" @@ -2984,7 +3044,7 @@ msgid "Successfully exported material to %1" msgstr "Materiaalin vieminen onnistui kohteeseen %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 msgctxt "@title:window" msgid "Add Printer" msgstr "Lisää tulostin" @@ -3004,6 +3064,11 @@ msgctxt "@title:window" msgid "About Cura" msgstr "Tietoja Curasta" +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43 +msgctxt "@label" +msgid "version: %1" +msgstr "" + #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." @@ -3014,7 +3079,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" @@ -3096,12 +3163,17 @@ msgctxt "@label" msgid "Polygon clipping library" msgstr "Monikulmion leikkauskirjasto" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 msgctxt "@label" msgid "Font" msgstr "Fontti" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 msgctxt "@label" msgid "SVG icons" msgstr "SVG-kuvakkeet" @@ -3111,40 +3183,48 @@ msgctxt "@label" msgid "Profile:" msgstr "Profiili:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 +msgctxt "@" +msgid "No Profile Available" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 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." +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 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 msgctxt "@label:textbox" msgid "Search..." msgstr "Haku…" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Kopioi arvo kaikkiin suulakepuristimiin" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Piilota tämä asetus" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 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:505 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Pidä tämä asetus näkyvissä" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Määritä asetusten näkyvyys..." @@ -3155,7 +3235,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." @@ -3183,7 +3266,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" @@ -3191,56 +3277,78 @@ 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:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Tulostuksen asennus" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 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:326 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +msgctxt "@label Hours and minutes" msgid "00h 00min" -msgstr "00 h 00 min" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 msgctxt "@tooltip" -msgid "Time information" -msgstr "Aikatiedot" +msgid "Time specification
    " +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 -msgctxt "@description" -msgid "Print time" -msgstr "Tulostusaika" - -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 msgctxt "@label" +msgid "Cost specification" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +msgctxt "@label" +msgid "Total:" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" -msgstr "%1 m / ~ %2 g / ~ %4 %3" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" -msgstr "%1 m / ~ %2 g" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 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:481 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 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." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Automaattinen: %1" @@ -3250,7 +3358,7 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&Näytä" -#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" msgstr "Automaattinen: %1" @@ -3279,13 +3387,13 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Avaa &viimeisin" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 msgctxt "@info:status" 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 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 msgctxt "@label" msgid "Extruder" msgstr "Suulake" @@ -3300,309 +3408,349 @@ 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:187 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:188 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:219 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Tämän suulakkeen materiaali." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Tähän suulakkeeseen liitetty suutin." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 msgctxt "@label" msgid "Build plate" msgstr "Alusta" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 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:343 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:344 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:422 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 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:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Peruuta" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button" msgid "Pre-heat" msgstr "Esilämmitä" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 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:677 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:703 +msgctxt "@label" +msgid "Printer control" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 +msgctxt "@label" +msgid "Jog Position" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735 +msgctxt "@label" +msgid "X/Y" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842 +msgctxt "@label" +msgid "Z" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 +msgctxt "@label" +msgid "Jog Distance" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018 msgctxt "@label" msgid "Active print" msgstr "Aktiivinen tulostustyö" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 msgctxt "@label" msgid "Job Name" msgstr "Työn nimi" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 msgctxt "@label" msgid "Printing Time" msgstr "Tulostusaika" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1035 msgctxt "@label" msgid "Estimated time left" msgstr "Aikaa jäljellä arviolta" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Vaihda &koko näyttöön" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Kumoa" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "Tee &uudelleen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Lopeta" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +msgctxt "@action:inmenu menubar:view" +msgid "&Reset camera position" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Määritä Curan asetukset..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "L&isää tulostin..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:115 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Tulostinten &hallinta..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Hallitse materiaaleja..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&Päivitä nykyiset asetukset tai ohitukset profiiliin" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Hylkää tehdyt muutokset" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Luo profiili nykyisten asetusten tai ohitusten perusteella..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Profiilien hallinta..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Näytä sähköinen &dokumentaatio" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:171 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Ilmoita &virheestä" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "Ti&etoja..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 msgctxt "@action:inmenu menubar:edit" msgid "Delete &Selected Model" msgid_plural "Delete &Selected Models" msgstr[0] "Poista &valittu malli" msgstr[1] "Poista &valitut mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Keskitä valittu malli" msgstr[1] "Keskitä valitut mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Kerro valittu malli" msgstr[1] "Kerro valitut mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Poista malli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:222 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Ke&skitä malli alustalle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:228 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "&Ryhmittele mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Poista mallien ryhmitys" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "&Yhdistä mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Kerro malli..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:265 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "&Valitse kaikki mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "&Tyhjennä tulostusalusta" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "&Lataa kaikki mallit uudelleen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Järjestä kaikki mallit" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Järjestä valinta" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Määritä kaikkien mallien positiot uudelleen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "Määritä kaikkien mallien &muutokset uudelleen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Avaa tiedosto(t)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Uusi projekti..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "Näytä moottorin l&oki" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:346 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Näytä määrityskansio" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Määritä asetusten näkyvyys..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +msgctxt "@action:menu" +msgid "Browse plugins..." +msgstr "Selaa lisäosia..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +msgctxt "@action:menu" +msgid "Installed plugins..." +msgstr "Asennetut lisäoset..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Lataa 3D-malli" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Valmiina viipaloimaan" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Viipaloidaan..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Valmis: %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Viipalointi ei onnistu" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Viipalointi ei käytettävissä" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Valmistele" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Peruuta" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 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:593 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 msgctxt "@title:window" msgid "Open file(s)" msgstr "Avaa tiedosto(t)" @@ -3619,112 +3767,117 @@ msgstr "Tuo kaikki malleina" #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 msgctxt "@title:window" -msgid "Cura" -msgstr "Cura" +msgid "Ultimaker Cura" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&Tiedosto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "&Tallenna valinta tiedostoon" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "Tallenna &nimellä…" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 msgctxt "@title:menu menubar:file" msgid "Save project" msgstr "Tallenna projekti" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&Muokkaa" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 msgctxt "@title:menu" msgid "&View" msgstr "&Näytä" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:167 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 msgctxt "@title:menu" msgid "&Settings" msgstr "&Asetukset" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "&Tulostin" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 msgctxt "@title:menu" msgid "&Material" msgstr "&Materiaali" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 msgctxt "@title:menu" msgid "&Profile" msgstr "&Profiili" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Aseta aktiiviseksi suulakepuristimeksi" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:202 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "Laa&jennukset" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +msgctxt "@title:menu menubar:toplevel" +msgid "P&lugins" +msgstr "&Lisäosat" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "L&isäasetukset" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Ohje" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 msgctxt "@action:button" msgid "Open File" msgstr "Avaa tiedosto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 msgctxt "@title:tab" msgid "Settings" msgstr "Asetukset" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 msgctxt "@title:window" msgid "New project" msgstr "Uusi projekti" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 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:694 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 msgctxt "@window:title" msgid "Install Plugin" msgstr "Asenna laajennus" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 msgctxt "@title:window" msgid "Open File(s)" msgstr "Avaa tiedosto(t)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 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." @@ -3734,102 +3887,112 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Tallenna projekti" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 msgctxt "@action:label" msgid "Extruder %1" msgstr "Suulake %1" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & materiaali" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:242 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/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 msgctxt "@action:button" msgid "Save" msgstr "Tallenna" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 msgctxt "@title:tab" msgid "Prepare" msgstr "Valmistele" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 msgctxt "@title:tab" msgid "Monitor" msgstr "Valvo" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 msgctxt "@label" msgid "Layer Height" msgstr "Kerroksen korkeus" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +msgctxt "@tooltip" +msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 msgctxt "@label" msgid "Print Speed" msgstr "Tulostusnopeus" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 msgctxt "@label" msgid "Slower" msgstr "Hitaammin" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 msgctxt "@label" msgid "Faster" msgstr "Nopeammin" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 msgctxt "@label" msgid "Infill" msgstr "Täyttö" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 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:602 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 msgctxt "@label" msgid "Enable gradual" msgstr "Ota asteittainen käyttöön" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 msgctxt "@label" msgid "Generate Support" msgstr "Muodosta tuki" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 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:718 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 msgctxt "@label" msgid "Support Extruder" msgstr "Tuen suulake" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 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:796 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Alustan tarttuvuus" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 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:883 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 msgctxt "@label" msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" msgstr "Tarvitsetko apua tulosteiden parantamiseen?
    Lue Ultimakerin vianmääritysoppaat" @@ -3846,17 +4009,17 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Avaa projektitiedosto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 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 "Tämä on Cura-projektitiedosto. Haluatko avata sen projektina vai tuoda siinä olevat mallit?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:95 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@action:button" msgid "Open as project" msgstr "Avaa projektina" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Import models" msgstr "Tuo mallit" @@ -3866,17 +4029,17 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Moottorin loki" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 msgctxt "@label" msgid "Material" msgstr "Materiaali" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 msgctxt "@label" -msgid "Check material compatibility" -msgstr "Tarkista materiaalin yhteensopivuus" +msgid "Check compatibility" +msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Napsauta ja tarkista materiaalin yhteensopivuus sivustolla Ultimaker.com." @@ -3991,11 +4154,6 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3-verkkoyhteys" -#: CuraPrintClusterUpload/plugin.json -msgctxt "name" -msgid "UM3 Network Connection (Cluster)" -msgstr "UM3-verkkoyhteys (klusteri)" - #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4016,6 +4174,16 @@ msgctxt "name" msgid "SolidWorks Integration" msgstr "SolidWorks-integrointi" +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "" + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "" + #: PostProcessingPlugin/plugin.json msgctxt "description" msgid "Extension that allows for user created scripts for post processing" @@ -4076,16 +4244,6 @@ msgctxt "name" msgid "GCode Profile Reader" msgstr "GCode-profiilin lukija" -#: LayerView/plugin.json -msgctxt "description" -msgid "Provides the Layer view." -msgstr "Näyttää kerrosnäkymän." - -#: LayerView/plugin.json -msgctxt "name" -msgid "Layer View" -msgstr "Kerrosnäkymä" - #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4106,6 +4264,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Päivitys versiosta 2.7 versioon 3.0" +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." +msgstr "" + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.0 to 3.1" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4166,6 +4334,16 @@ msgctxt "name" msgid "Per Model Settings Tool" msgstr "Mallikohtaisten asetusten työkalu" +#: cura-siemensnx-plugin/plugin.json +msgctxt "description" +msgid "Helps you to install an 'export to Cura' button in Siemens NX." +msgstr "" + +#: cura-siemensnx-plugin/plugin.json +msgctxt "name" +msgid "Siemens NX Integration" +msgstr "" + #: 3MFReader/plugin.json msgctxt "description" msgid "Provides support for reading 3MF files." @@ -4226,6 +4404,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "3MF-kirjoitin" +#: UserAgreementPlugin/plugin.json +msgctxt "description" +msgid "Ask the user once if he/she agrees with our license" +msgstr "" + +#: UserAgreementPlugin/plugin.json +msgctxt "name" +msgid "UserAgreement" +msgstr "" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" @@ -4246,6 +4434,138 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura-profiilin lukija" +#~ msgctxt "@label:status" +#~ msgid "Blocked" +#~ msgstr "Tukossa" + +#~ msgctxt "@label:status" +#~ msgid "Can't start print" +#~ msgstr "Tulostus ei käynnisty" + +#~ msgctxt "@action:button" +#~ msgid "Open Connect.." +#~ msgstr "Avaa Connect..." + +#~ msgctxt "@info:title" +#~ msgid "Print Details" +#~ msgstr "Tulostustiedot" + +#~ 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 "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." + +#~ msgctxt "@item:inlistbox" +#~ msgid "Layer view" +#~ msgstr "Kerrosnäkymä" + +#~ msgctxt "@info:title" +#~ msgid "Layer View" +#~ msgstr "Kerrosnäkymä" + +#~ msgctxt "@menuitem" +#~ msgid "Browse plugins" +#~ msgstr "Selaa lisäosia" + +#~ msgctxt "@info:title" +#~ msgid "Export Details" +#~ msgstr "Viennin tiedot" + +#~ 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 "" +#~ "

    Tapahtui vakava poikkeus, josta palautuminen ei onnistunut!

    \n" +#~ "

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

    \n" +#~ " " + +#~ msgctxt "@action:button" +#~ msgid "Open Web Page" +#~ msgstr "Avaa verkkosivu" + +#~ msgctxt "@action:button" +#~ msgid "Ok" +#~ msgstr "OK" + +#~ msgctxt "@label" +#~ msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +#~ msgstr "Tätä tulostinta ei ole määritetty yhdistetyn Ultimaker 3 -tulostinryhmän isännäksi" + +#~ msgctxt "@label" +#~ msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +#~ msgstr "Tämä tulostin on %1 tulostimen yhdistetyn Ultimaker 3 -ryhmän isäntä" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Valmistellaan" + +#~ msgctxt "@label" +#~ msgid "Completed on: " +#~ msgstr "Valmistunut: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Opens the print jobs page with your default web browser." +#~ msgstr "Avaa tulostöiden sivun oletusselaimessa." + +#~ msgctxt "@label" +#~ msgid "PRINTER GROUP" +#~ msgstr "TULOSTINRYHMÄ" + +#~ msgctxt "@action:warning" +#~ msgid "Loading a project will clear all models on the buildplate" +#~ msgstr "Projektin lataaminen poistaa kaikki alustalla olevat mallit" + +#~ 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 "" +#~ " lisäosa sisältää lisenssin.\n" +#~ "Lisenssi on hyväksyttävä lisäosan asentamista varten.\n" +#~ "Hyväksytkö alla olevat ehdot?" + +#~ msgctxt "@label" +#~ msgid "00h 00min" +#~ msgstr "00 h 00 min" + +#~ msgctxt "@tooltip" +#~ msgid "Time information" +#~ msgstr "Aikatiedot" + +#~ msgctxt "@description" +#~ msgid "Print time" +#~ msgstr "Tulostusaika" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g / ~ %4 %3" +#~ msgstr "%1 m / ~ %2 g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g" +#~ msgstr "%1 m / ~ %2 g" + +#~ msgctxt "@title:window" +#~ msgid "Cura" +#~ msgstr "Cura" + +#~ msgctxt "@label" +#~ msgid "Check material compatibility" +#~ msgstr "Tarkista materiaalin yhteensopivuus" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection (Cluster)" +#~ msgstr "UM3-verkkoyhteys (klusteri)" + +#~ msgctxt "description" +#~ msgid "Provides the Layer view." +#~ msgstr "Näyttää kerrosnäkymän." + +#~ msgctxt "name" +#~ msgid "Layer View" +#~ msgstr "Kerrosnäkymä" + #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" #~ msgstr "Kerros" diff --git a/resources/i18n/fi_FI/fdmextruder.def.json.po b/resources/i18n/fi_FI/fdmextruder.def.json.po index ea50325417..a76ee285e0 100644 --- a/resources/i18n/fi_FI/fdmextruder.def.json.po +++ b/resources/i18n/fi_FI/fdmextruder.def.json.po @@ -6,8 +6,8 @@ msgid "" 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" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" "PO-Revision-Date: 2017-08-11 14:31+0200\n" "Last-Translator: Bothof \n" "Language-Team: Finnish\n" diff --git a/resources/i18n/fi_FI/fdmprinter.def.json.po b/resources/i18n/fi_FI/fdmprinter.def.json.po index fb73e2e39d..23ed6b0da4 100644 --- a/resources/i18n/fi_FI/fdmprinter.def.json.po +++ b/resources/i18n/fi_FI/fdmprinter.def.json.po @@ -6,8 +6,8 @@ msgid "" 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" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" "PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: Finnish\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" @@ -605,6 +609,31 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "Alkukerroksen korkeus milleinä. Paksumpi alkukerros helpottaa alustaan kiinnittymistä." +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "" + #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -755,6 +784,16 @@ 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" @@ -767,8 +806,8 @@ msgstr "Ulkoseinämän tulostukseen käytettävä suulakeryhmä. Tätä käytet #: fdmprinter.def.json msgctxt "wall_x_extruder_nr label" -msgid "Inner Walls Extruder" -msgstr "Sisäseinämien suulake" +msgid "Inner Wall Extruder" +msgstr "" #: fdmprinter.def.json msgctxt "wall_x_extruder_nr description" @@ -1200,6 +1239,106 @@ 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 "ironing_enabled label" +msgid "Enable Ironing" +msgstr "Ota silitys käyttöön" + +#: fdmprinter.def.json +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 "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 "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" +msgid "Ironing Pattern" +msgstr "Silityskuvio" + +#: fdmprinter.def.json +msgctxt "ironing_pattern description" +msgid "The pattern to use for ironing top surfaces." +msgstr "Yläpintojen silitykseen käytettävä kuvio." + +#: fdmprinter.def.json +msgctxt "ironing_pattern option concentric" +msgid "Concentric" +msgstr "Samankeskinen" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Siksak" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing label" +msgid "Ironing Line Spacing" +msgstr "Silityksen linjajako" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing description" +msgid "The distance between the lines of ironing." +msgstr "Silityslinjojen välinen etäisyys." + +#: fdmprinter.def.json +msgctxt "ironing_flow label" +msgid "Ironing Flow" +msgstr "Silitysvirtaus" + +#: fdmprinter.def.json +msgctxt "ironing_flow description" +msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." +msgstr "Silityksen aikana pursotettavan materiaalin määrä suhteessa normaaliin pintakalvon linjaan. Suuttimen pitäminen täytettynä auttaa joidenkin yläpinnan halkeamien täyttämisessä, mutta liiallinen määrä johtaa ylipursotukseen ja täpliin pinnan sivulla." + +#: fdmprinter.def.json +msgctxt "ironing_inset label" +msgid "Ironing Inset" +msgstr "Silitysliitos" + +#: fdmprinter.def.json +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 "infill label" msgid "Infill" @@ -1247,8 +1386,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, 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 "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." +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, tri-hexagon, cubic, octet, quarter cubic, cross 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" @@ -1265,6 +1404,11 @@ msgctxt "infill_pattern option triangles" msgid "Triangles" msgstr "Kolmiot" +#: fdmprinter.def.json +msgctxt "infill_pattern option trihexagon" +msgid "Tri-Hexagon" +msgstr "" + #: fdmprinter.def.json msgctxt "infill_pattern option cubic" msgid "Cubic" @@ -1317,8 +1461,8 @@ 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 "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ää." +msgid "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." +msgstr "" #: fdmprinter.def.json msgctxt "infill_angles label" @@ -1330,6 +1474,26 @@ msgctxt "infill_angles description" msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns)." msgstr "Luettelo käytettävistä linjojen kokonaislukusuunnista. Tämän luettelon elementtejä käytetään järjestyksessä kerrosten edetessä, ja kun luettelon loppu saavutetaan, aloitetaan taas alusta. Luettelon kohteet on erotettu pilkuilla, ja koko luettelo on hakasulkeiden sisällä. Oletusarvo on tyhjä luettelo, jolloin käytetään perinteisiä oletuskulmia (45 ja 135 astetta linja- ja siksak-kuvioille ja 45 astetta muille kuvioille)." +#: fdmprinter.def.json +msgctxt "infill_offset_x label" +msgid "Infill X Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_offset_x description" +msgid "The infill pattern is offset this distance along the X axis." +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_offset_y label" +msgid "Infill Y Offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_offset_y description" +msgid "The infill pattern is offset this distance along the Y axis." +msgstr "" + #: fdmprinter.def.json msgctxt "sub_div_rad_add label" msgid "Cubic Subdivision Shell" @@ -1640,6 +1804,26 @@ msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Säätää käytetyn tulostuslangan halkaisijaa. Määritä tämä arvo vastaamaan käytetyn tulostuslangan halkaisijaa." +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency label" +msgid "Adhesion Tendency" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency description" +msgid "Surface adhesion tendency." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_surface_energy label" +msgid "Surface Energy" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_surface_energy description" +msgid "Surface energy." +msgstr "" + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -2830,36 +3014,6 @@ msgctxt "support_connect_zigzags description" msgid "Connect the ZigZags. This will increase the strength of the zig zag support structure." 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 "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 "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 "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 "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 "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 "Ohita joka N. yhdistämislinja, jotta tukirakenne on helpompi rikkoa." - #: fdmprinter.def.json msgctxt "support_infill_rate label" msgid "Support Density" @@ -3399,8 +3553,8 @@ msgstr "Helman etäisyys" 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." +"This is the minimum distance. Multiple skirt lines will extend outwards from this distance." +msgstr "" #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3442,26 +3596,6 @@ 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 "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 "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 "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 "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" msgid "Raft Extra Margin" @@ -3479,8 +3613,8 @@ 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 "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ä." +msgid "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." +msgstr "" #: fdmprinter.def.json msgctxt "raft_airgap label" @@ -3952,6 +4086,16 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Normaalisti Cura yrittää silmukoida umpeen pieniä reikiä verkosta ja poistaa kerroksesta osat, joissa on isoja reikiä. Tämän vaihtoehdon käyttöönotto pitää ne osat, joita ei voida silmukoida. Tätä tulisi pitää viimeisenä vaihtoehtona, kun millään muulla ei saada aikaan kunnollista GCodea." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "" + #: fdmprinter.def.json msgctxt "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -3982,6 +4126,16 @@ msgctxt "alternate_carve_order description" msgid "Switch to which mesh intersecting volumes will belong with every layer, so that the overlapping meshes become interwoven. Turning this setting off will cause one of the meshes to obtain all of the volume in the overlap, while it is removed from the other meshes." msgstr "Määrittää, mitkä verkon leikkaustilavuudet kuuluvat jokaiseen kerrokseen, jotta limittäiset verkot yhdistetään. Jos tämä asetus poistetaan käytöstä, yksi verkoista saa kaiken tilavuuden limityksessä, ja verkko poistetaan muista verkoista." +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers label" +msgid "Remove Empty First Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers description" +msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." +msgstr "" + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4187,6 +4341,36 @@ 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 "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 "support_skip_some_zags label" +msgid "Break Up Support In Chunks" +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 "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 "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 "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 "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 "Ohita joka N. yhdistämislinja, jotta tukirakenne on helpompi rikkoa." + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4477,6 +4661,26 @@ msgctxt "magic_fuzzy_skin_point_dist description" msgid "The average distance between the random points introduced on each line segment. Note that the original points of the polygon are discarded, so a high smoothness results in a reduction of the resolution. This value must be higher than half the Fuzzy Skin Thickness." msgstr "Keskimääräinen etäisyys kunkin linjasegmentin satunnaisten pisteiden välillä. Huomaa, että alkuperäiset monikulmion pisteet poistetaan käytöstä, joten korkea sileysarvo alentaa resoluutiota. Tämän arvon täytyy olla suurempi kuin puolet karhean pintakalvon paksuudesta." +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset label" +msgid "Flow rate compensation max extrusion offset" +msgstr "" + +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset description" +msgid "The maximum distance in mm to compensate." +msgstr "" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor label" +msgid "Flow rate compensation factor" +msgstr "" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor description" +msgid "The multiplication factor for the flow rate -> distance translation." +msgstr "" + #: fdmprinter.def.json msgctxt "wireframe_enabled label" msgid "Wire Printing" @@ -4627,7 +4831,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" @@ -4734,106 +4940,6 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Suuttimen ja vaakasuoraan laskevien linjojen välinen etäisyys. Suurempi väli aiheuttaa vähemmän jyrkän kulman diagonaalisesti laskeviin linjoihin, mikä puolestaan johtaa harvempiin yläliitoksiin seuraavan kerroksen kanssa. Koskee vain rautalankamallin tulostusta." -#: fdmprinter.def.json -msgctxt "ironing_enabled label" -msgid "Enable Ironing" -msgstr "Ota silitys käyttöön" - -#: fdmprinter.def.json -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 "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 "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" -msgid "Ironing Pattern" -msgstr "Silityskuvio" - -#: fdmprinter.def.json -msgctxt "ironing_pattern description" -msgid "The pattern to use for ironing top surfaces." -msgstr "Yläpintojen silitykseen käytettävä kuvio." - -#: fdmprinter.def.json -msgctxt "ironing_pattern option concentric" -msgid "Concentric" -msgstr "Samankeskinen" - -#: fdmprinter.def.json -msgctxt "ironing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Siksak" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing label" -msgid "Ironing Line Spacing" -msgstr "Silityksen linjajako" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing description" -msgid "The distance between the lines of ironing." -msgstr "Silityslinjojen välinen etäisyys." - -#: fdmprinter.def.json -msgctxt "ironing_flow label" -msgid "Ironing Flow" -msgstr "Silitysvirtaus" - -#: fdmprinter.def.json -msgctxt "ironing_flow description" -msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." -msgstr "Silityksen aikana pursotettavan materiaalin määrä suhteessa normaaliin pintakalvon linjaan. Suuttimen pitäminen täytettynä auttaa joidenkin yläpinnan halkeamien täyttämisessä, mutta liiallinen määrä johtaa ylipursotukseen ja täpliin pinnan sivulla." - -#: fdmprinter.def.json -msgctxt "ironing_inset label" -msgid "Ironing Inset" -msgstr "Silitysliitos" - -#: fdmprinter.def.json -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" @@ -4894,13 +5000,45 @@ 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_x_extruder_nr label" +#~ msgid "Inner Walls Extruder" +#~ msgstr "Sisä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, 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 "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." + +#~ 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 "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ää." + +#~ 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." + +#~ msgctxt "z_offset_layer_0 label" +#~ msgid "Initial Layer Z Offset" +#~ msgstr "Alkukerroksen Z-siirtymä" + +#~ 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 "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." + +#~ msgctxt "z_offset_taper_layers label" +#~ msgid "Z Offset Taper Layers" +#~ msgstr "Z-siirtymän kapenevat kerrokset" + +#~ 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 "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." + +#~ 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 "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ä." #~ 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." @@ -5116,4 +5254,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 76ad2ae4a6..4db845190f 100644 --- a/resources/i18n/fr_FR/cura.po +++ b/resources/i18n/fr_FR/cura.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-21 16:58+0100\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -16,66 +16,6 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Print aborted" -msgstr "Abandon de l'impression" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Blocked" -msgstr "Bloqué" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Action required" -msgstr "Action requise" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Can't start print" -msgstr "Ne peux pas imprimer" - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is not set up to host a group of Ultimaker 3 printers." -msgstr "L'imprimante n'est pas configurée pour héberger un groupe d'imprimantes Ultimaker 3." - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label" -msgid "Finishes at: " -msgstr "Complète a: " - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is the host for a group of %1 Ultimaker 3 printers." -msgstr "L'imprimante est le patron pour un groupe de %1 imprimantes Ultimaker 3." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "{printer_name} a terminé d'imprimer '{job_name}'." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Print finished" -msgstr "Impression terminée" - -#: Manually added for resources/Cura/Cura.qml -msgctxt "@title:menu menubar:toplevel" -msgid "P&lugins" -msgstr "&Plug-ins" - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Browse plugins..." -msgstr "Parcourir les plug-ins..." - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Installed plugins..." -msgstr "Plug-ins installés..." - #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" @@ -113,19 +53,17 @@ 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 -#: /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:428 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/3MFReader/WorkspaceDialog.qml:376 #: /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 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:253 msgctxt "@action:button" msgid "Cancel" msgstr "Annuler" @@ -152,15 +90,15 @@ 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 "Ouvrir Connect" +msgid "Open Connect..." +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 "Ouvrir l'interface web Doodle3D Connecter" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Afficher le récapitulatif des changements" @@ -195,37 +133,38 @@ msgctxt "@info:status" msgid "Connected via USB" msgstr "Connecté via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 msgctxt "@info:title" -msgid "Print Details" -msgstr "Les détails d'impression" +msgid "Printer Unavailable" +msgstr "Imprimante indisponible" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 msgctxt "@info:title" msgid "USB Printing" msgstr "Impression par USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 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/USBPrinterOutputDevice.py:461 #: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 msgctxt "@info:title" msgid "Warning" msgstr "Avertissement" @@ -289,11 +228,11 @@ 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: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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 msgctxt "@info:title" msgid "Error" msgstr "Erreur" @@ -342,346 +281,332 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Lecteur amovible" -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 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:108 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Imprimer sur le réseau" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 msgctxt "@info:title" msgid "Connection status" msgstr "Statut de la connexion" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:479 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:502 msgctxt "@info:title" msgid "Connection Status" msgstr "Statut de la connexion" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@action:button" msgid "Retry" msgstr "Réessayer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Renvoyer la demande d'accès" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Accès à l'imprimante accepté" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:375 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:385 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:382 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Connected over the network." msgstr "Connecté sur le réseau." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:405 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:400 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 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:403 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 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:467 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 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:499 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 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:649 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:666 #, 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:650 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:667 msgctxt "@info:title" msgid "Printer Status" msgstr "Statut de l'imprimante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 #, 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:682 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 #, 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:692 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 #, 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:702 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 #, 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:716 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 #, 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:724 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:741 #, 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:729 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 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:730 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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:736 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Configuration différente" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +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/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Envoi des données à l'imprimante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:title" msgid "Sending Data" msgstr "Envoi des données..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 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:1050 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Abandon de l'impression..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 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:1062 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Mise en pause de l'impression..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Reprise de l'impression..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synchroniser avec votre imprimante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 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:1220 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:112 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:113 #, 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 "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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 #, 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 "{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 "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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 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 "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 "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 "{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 "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 "Ouvre l'interface d'impression des tâches dans votre navigateur." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Impossible d'envoyer la tâche d'impression vers le groupe {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "{file_name} envoyé vers le groupe {cluster_name}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "Afficher les tâches d'impression" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "Ouvre l'interface d'impression des tâches dans votre navigateur." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label" +msgid "Unknown" +msgstr "Inconnu" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#, python-brace-format +msgctxt "@info:status" +msgid "Printer '{printer_name}' has finished printing '{job_name}'." +msgstr "{printer_name} a terminé d'imprimer '{job_name}'." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +msgctxt "@info:status" +msgid "Print finished" +msgstr "Impression terminée" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 +msgctxt "@label:status" +msgid "Action required" +msgstr "Action requise" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "Envoi de {file_name} vers le groupe {cluster_name}..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +msgctxt "@action" +msgid "Connect via Network" +msgstr "Connecter via le réseau" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 #, 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 "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." +msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." +msgstr "De nouvelles fonctionnalités sont disponibles pour votre {machine_name} ! Il est recommandé de mettre à jour le firmware sur votre imprimante." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Nouveau firmware %s disponible" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 msgctxt "@action:button" -msgid "Download" -msgstr "Télécharger" +msgid "How to update" +msgstr "Comment effectuer la mise à jour" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 msgctxt "@info" msgid "Could not access update information." msgstr "Impossible d'accéder aux informations de mise à jour." @@ -711,7 +636,22 @@ msgctxt "@info:status" msgid "Error while starting %s!" msgstr "Erreur lors du lancement de %s !" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Simulation view" +msgstr "Vue simulation" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +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/SimulationView/SimulationView.py:101 +msgctxt "@info:title" +msgid "Simulation View" +msgstr "Vue simulation" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 msgid "Modify G-Code" msgstr "Modifier le G-Code" @@ -741,21 +681,6 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "Fichier GCode" -#: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Vue en couches" - -#: /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 "Vue en couches" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -788,8 +713,9 @@ msgstr "Impossible de découper le matériau actuel, car celui-ci est incompatib #: /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 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 msgctxt "@info:title" msgid "Unable to slice" msgstr "Impossible de découper" @@ -800,23 +726,29 @@ 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:306 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" +msgstr "Impossible de couper en raison de certains paramètres par modèle. Les paramètres suivants contiennent des erreurs sur un ou plusieurs modèles : {error_labels}" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 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:315 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 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." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:65 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:status" msgid "Processing Layers" msgstr "Traitement des couches" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:title" msgid "Information" msgstr "Informations" @@ -831,14 +763,36 @@ msgctxt "@info:tooltip" 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:475 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23 +msgid "Install" +msgstr "Installer" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It is not set to a directory." +msgstr "Échec de la copie des fichiers plug-ins Siemens NX. Veuillez vérifier votre UGII_USER_DIR. Il n'est pas défini sur un répertoire." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81 +msgid "Successfully installed Siemens NX Cura plugin." +msgstr "L'installation du plug-in Siemens NX Cura a réussie." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgstr "Échec de la copie des fichiers plug-ins Siemens NX. Veuillez vérifier votre UGII_USER_DIR." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 +msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." +msgstr "Échec de l'installation du plug-in Siemens NX. Impossible de définir la variable d'environnement UGII_USER_DIR pour Siemens NX." + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 msgctxt "@title:tab" msgid "Recommended" msgstr "Recommandé" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Custom" msgstr "Personnalisé" @@ -849,29 +803,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Fichier 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 msgctxt "@label" msgid "Nozzle" msgstr "Buse" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 -msgctxt "@menuitem" -msgid "Browse plugins" -msgstr "Parcourir les plug-ins" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" 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 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 msgctxt "@info:tile" msgid "Warning" msgstr "Avertissement" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 msgctxt "@window:title" msgid "Plugin browser" msgstr "Navigateur de plug-ins" @@ -886,18 +835,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Fichier G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:254 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Analyse du G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 msgctxt "@info:title" msgid "G-code Details" msgstr "Détails G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 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." @@ -939,73 +888,78 @@ msgctxt "@action" msgid "Level build plate" msgstr "Nivellement du plateau" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Paroi externe" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Parois internes" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 msgctxt "@tooltip" msgid "Skin" msgstr "Couche extérieure" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 msgctxt "@tooltip" msgid "Infill" msgstr "Remplissage" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 msgctxt "@tooltip" msgid "Support Infill" msgstr "Remplissage du support" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 msgctxt "@tooltip" msgid "Support Interface" msgstr "Interface du support" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Support" msgstr "Support" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" msgid "Skirt" msgstr "Jupe" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 msgctxt "@tooltip" msgid "Travel" msgstr "Déplacement" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Retractions" msgstr "Rétractions" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Other" msgstr "Autre" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +msgctxt "@label unknown material" +msgid "Unknown" +msgstr "Inconnu" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Fichier {0} prédécoupé" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 msgctxt "@item:material" msgid "No material loaded" msgstr "Pas de matériau chargé" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 msgctxt "@item:material" msgid "Unknown material" msgstr "Matériau inconnu" @@ -1032,13 +986,13 @@ msgid "Can't Find Location" msgstr "Impossible de trouver un emplacement" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 msgctxt "@title:window" msgid "File Already Exists" msgstr "Le fichier existe déjà" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 #, 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?" @@ -1054,12 +1008,22 @@ msgctxt "@label" msgid "Custom Material" msgstr "Matériau personnalisé" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 +msgctxt "@menuitem" +msgid "Global" +msgstr "Global" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Pas écrasé" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 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/MachineManager.py:118 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1080,62 +1044,62 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Annuler la modification du diamètre du matériau." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format 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}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, python-brace-format 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." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Profil exporté vers {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:157 msgctxt "@info:title" -msgid "Export Details" -msgstr "Exporter les détails" +msgid "Export succeeded" +msgstr "L'exportation a réussi" -#: /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 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 #, python-brace-format 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}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 #, 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:254 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 #, 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:272 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 msgctxt "@label" msgid "Custom profile" msgstr "Personnaliser le profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1162,238 +1126,316 @@ msgctxt "@info:title" msgid "Placing Object" msgstr "Placement de l'objet..." -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 msgctxt "@title:window" msgid "Crash Report" msgstr "Rapport d'incident" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:79 -msgctxt "@label" +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +msgctxt "@label crash message" 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 " +"

    A fatal exception has occurred. Please send us this Crash Report to fix the problem

    \n" +"

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" +" " +msgstr "

    Une exception fatale s'est produite. Veuillez nous envoyer ce Rapport d'incident pour résoudre le problème

    \n

    Veuillez utiliser le bouton « Envoyer rapport » pour publier automatiquement un rapport d'erreur sur nos serveurs

    \n " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +msgctxt "@title:groupbox" +msgid "System information" +msgstr "Informations système" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +msgctxt "@label unknown version of Cura" +msgid "Unknown" +msgstr "Inconnu" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 +#, python-brace-format +msgctxt "@label Cura version" +msgid "Cura version: {version}
    " +msgstr "Version Cura : {version}
    " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -msgctxt "@action:button" -msgid "Open Web Page" -msgstr "Ouvrir la page Web" +#, python-brace-format +msgctxt "@label Platform" +msgid "Platform: {platform}
    " +msgstr "Plateforme : {platform}
    " -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 +#, python-brace-format +msgctxt "@label Qt version" +msgid "Qt version: {qt}
    " +msgstr "Version Qt : {qt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 +#, python-brace-format +msgctxt "@label PyQt version" +msgid "PyQt version: {pyqt}
    " +msgstr "Version PyQt : {pyqt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 +#, python-brace-format +msgctxt "@label OpenGL" +msgid "OpenGL: {opengl}
    " +msgstr "OpenGL : {opengl}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#, python-brace-format +msgctxt "@label OpenGL version" +msgid "
  • OpenGL Version: {version}
  • " +msgstr "
  • Version OpenGL : {version}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#, python-brace-format +msgctxt "@label OpenGL vendor" +msgid "
  • OpenGL Vendor: {vendor}
  • " +msgstr "
  • Revendeur OpenGL : {vendor}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#, python-brace-format +msgctxt "@label OpenGL renderer" +msgid "
  • OpenGL Renderer: {renderer}
  • " +msgstr "
  • Moteur de rendu OpenGL : {renderer}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +msgctxt "@title:groupbox" +msgid "Exception traceback" +msgstr "Retraçage de l'exception" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +msgctxt "@title:groupbox" +msgid "Logs" +msgstr "Journaux" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +msgctxt "@title:groupbox" +msgid "User description" +msgstr "Description de l'utilisateur" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +msgctxt "@action:button" +msgid "Send report" +msgstr "Envoyer rapport" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Chargement des machines..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Préparation de la scène..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Chargement de l'interface..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 #, 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:1295 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 #, 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:1304 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1357 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Impossible d'ouvrir un autre fichier si le G-Code est en cours de chargement. Importation de {0} sautée" +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +msgctxt "@info:status" +msgid "The selected model was too small to load." +msgstr "Le modèle sélectionné était trop petit pour être chargé." + #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 msgctxt "@title" msgid "Machine Settings" msgstr "Paramètres de la machine" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:77 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:78 msgctxt "@title:tab" msgid "Printer" msgstr "Imprimante" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:96 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 msgctxt "@label" msgid "Printer Settings" msgstr "Paramètres de l'imprimante" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:107 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 msgctxt "@label" msgid "X (Width)" msgstr "X (Largeur)" -#: /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: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 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:117 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Profondeur)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:127 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Hauteur)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:139 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:140 msgctxt "@label" msgid "Build plate shape" msgstr "Forme du plateau" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:148 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 msgctxt "@option:check" msgid "Origin at center" msgstr "Origine au centre" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:156 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:157 msgctxt "@option:check" msgid "Heated bed" msgstr "Plateau chauffant" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:167 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 msgctxt "@label" msgid "Gcode flavor" msgstr "GCode Parfum" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:180 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 msgctxt "@label" msgid "Printhead Settings" msgstr "Paramètres de la tête d'impression" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:190 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 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 entre la gauche de la tête d'impression et le centre de la buse. Permet d'empêcher les collisions entre les impressions précédentes et la tête d'impression lors d'une impression « Un à la fois »." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:200 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 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 entre le devant de la tête d'impression et le centre de la buse. Permet d'empêcher les collisions entre les impressions précédentes et la tête d'impression lors d'une impression « Un à la fois »." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:210 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 msgctxt "@label" msgid "X max" msgstr "X max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 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 entre la droite de la tête d'impression et le centre de la buse. Permet d'empêcher les collisions entre les impressions précédentes et la tête d'impression lors d'une impression « Un à la fois »." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:220 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 msgctxt "@label" msgid "Y max" msgstr "Y max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 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 entre le dos de la tête d'impression et le centre de la buse. Permet d'empêcher les collisions entre les impressions précédentes et la tête d'impression lors d'une impression « Un à la fois »." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:233 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 msgctxt "@label" msgid "Gantry height" msgstr "Hauteur du portique" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 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:254 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 msgctxt "@label" msgid "Number of Extruders" msgstr "Nombre d'extrudeuses" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 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:290 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 msgctxt "@label" msgid "Material diameter" msgstr "Diamètre du matériau" -#: /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:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 msgctxt "@label" msgid "Nozzle size" msgstr "Taille de la buse" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 msgctxt "@label" msgid "Start Gcode" msgstr "Début Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 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:335 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 msgctxt "@label" msgid "End Gcode" msgstr "Fin Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 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:377 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 msgctxt "@label" msgid "Nozzle Settings" msgstr "Paramètres de la buse" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 msgctxt "@label" msgid "Nozzle offset X" msgstr "Décalage buse X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Décalage buse Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "Extrudeuse Gcode de démarrage" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Extruder End Gcode" msgstr "Extrudeuse Gcode de fin" @@ -1406,12 +1448,11 @@ 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/PostProcessingPlugin/PostProcessingPlugin.qml:445 #: /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/Preferences/MachinesPage.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 msgctxt "@action:button" msgid "Close" @@ -1463,13 +1504,11 @@ 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" @@ -1478,20 +1517,17 @@ msgid "" 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 #: /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 @@ -1500,220 +1536,221 @@ msgid "Remove" msgstr "Supprimer" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:194 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 msgctxt "@label" msgid "Type" msgstr "Type" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 msgctxt "@label" msgid "Address" msgstr "Adresse" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:286 +msgctxt "@label" +msgid "This printer is not set up to host a group of Ultimaker 3 printers." +msgstr "L'imprimante n'est pas configurée pour héberger un groupe d'imprimantes Ultimaker 3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:290 +msgctxt "@label" +msgid "This printer is the host for a group of %1 Ultimaker 3 printers." +msgstr "L'imprimante est le patron pour un groupe de %1 imprimantes Ultimaker 3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:300 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/DiscoverUM3Action.qml:305 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /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:316 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 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:346 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 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:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 +#: /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" +msgid "OK" +msgstr "OK" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Imprimer sur le réseau" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Imprimer" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:36 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "%1 n'est pas configurée pour héberger un groupe d'imprimantes connectées Ultimaker 3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "Ouvre la page des tâches d'impression avec votre navigateur web." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "Afficher les tâches d'impression" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 +msgctxt "@label" +msgid "Preparing to print" +msgstr "Préparation de l'impression..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 +msgctxt "@label:status" +msgid "Printing" +msgstr "Impression..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 +msgctxt "@label:status" +msgid "Available" +msgstr "Disponible" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 +#: /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/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 +msgctxt "@label:status" +msgid "Disabled" +msgstr "Désactivé" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273 +msgctxt "@label:status" +msgid "Reserved" +msgstr "Réservée" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:275 +msgctxt "@label:status" +msgid "Finished" +msgstr "Terminé" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 +msgctxt "@label:status" +msgid "Paused" +msgstr "En pause" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 +msgctxt "@label:status" +msgid "Resuming" +msgstr "Reprise" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 +msgctxt "@label:status" +msgid "Print aborted" +msgstr "Abandon de l'impression" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:410 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "Non acceptation des tâches d'impression" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 +msgctxt "@label" +msgid "Finishes at: " +msgstr "Complète a: " + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 +msgctxt "@label" +msgid "Clear build plate" +msgstr "Enlever les objets du plateau" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "En attente de modification de configuration" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:64 +msgctxt "@title" +msgid "Print jobs" +msgstr "Imprimer les tâches" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 +msgctxt "@label" +msgid "Printing" +msgstr "Impression..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 +msgctxt "@label" +msgid "Queued" +msgstr "Mis en file d'attente" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:171 +msgctxt "@label:title" +msgid "Printers" +msgstr "Imprimantes" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 +msgctxt "@action:button" +msgid "View printers" +msgstr "Afficher les imprimantes" #: /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/DiscoverUM3Action.qml:284 -msgctxt "@label" -msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -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 "L'imprimante est 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 "Imprimer sur le réseau" - -#: /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 "%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 "Impression..." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 -msgctxt "@label:status" -msgid "Reserved" -msgstr "Réservée" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 -msgctxt "@label:status" -msgid "Finished" -msgstr "Terminé" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 -msgctxt "@label:status" -msgid "Preparing" -msgstr "Préparation..." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 -msgctxt "@label:status" -msgid "Available" -msgstr "Disponible" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 -msgctxt "@label" -msgid "Completed on: " -msgstr "Finalisé sur : " - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 -msgctxt "@label" -msgid "Clear build plate" -msgstr "Enlever les objets du plateau" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 -msgctxt "@label" -msgid "Preparing to print" -msgstr "Préparation de l'impression..." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 -msgctxt "@label" -msgid "Not accepting print jobs" -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 "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 "Afficher les tâches d'impression" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "PRINTER GROUP" -msgstr "GROUPE D'IMPRIMANTES" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 -msgctxt "@title" -msgid "Print jobs" -msgstr "Imprimer les tâches" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 -msgctxt "@label" -msgid "Printing" -msgstr "Impression..." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 -msgctxt "@label" -msgid "Queued" -msgstr "Mis en file d'attente" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 -msgctxt "@label" -msgid "Waiting for configuration change" -msgstr "En attente de modification de configuration" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 -msgctxt "@label:title" -msgid "Printers" -msgstr "Imprimantes" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 -msgctxt "@action:button" -msgid "View printers" -msgstr "Afficher les imprimantes" - #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1739,13 +1776,6 @@ msgctxt "@option:curaSolidworksStlQuality" msgid "Always use Coarse quality" msgstr "Toujours utiliser la qualité grossière" -#: /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..." @@ -1772,11 +1802,91 @@ msgid "Fine" msgstr "Fine" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 msgctxt "@text:window" msgid "Remember my choice" msgstr "Se souvenir de mon choix" +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +msgctxt "@label" +msgid "Color scheme" +msgstr "Modèle de couleurs" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +msgctxt "@label:listbox" +msgid "Material Color" +msgstr "Couleur du matériau" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +msgctxt "@label:listbox" +msgid "Line Type" +msgstr "Type de ligne" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +msgctxt "@label:listbox" +msgid "Feedrate" +msgstr "Taux d'alimentation" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +msgctxt "@label:listbox" +msgid "Layer thickness" +msgstr "Épaisseur de la couche" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +msgctxt "@label" +msgid "Compatibility Mode" +msgstr "Mode de compatibilité" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +msgctxt "@label" +msgid "Show Travels" +msgstr "Afficher les déplacements" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +msgctxt "@label" +msgid "Show Helpers" +msgstr "Afficher les aides" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +msgctxt "@label" +msgid "Show Shell" +msgstr "Afficher la coque" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +msgctxt "@label" +msgid "Show Infill" +msgstr "Afficher le remplissage" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +msgctxt "@label" +msgid "Only Show Top Layers" +msgstr "Afficher uniquement les couches supérieures" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +msgctxt "@label" +msgid "Show 5 Detailed Layers On Top" +msgstr "Afficher 5 niveaux détaillés en haut" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +msgctxt "@label" +msgid "Top / Bottom" +msgstr "Haut / bas" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +msgctxt "@label" +msgid "Inner Wall" +msgstr "Paroi interne" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +msgctxt "@label" +msgid "min" +msgstr "min." + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +msgctxt "@label" +msgid "max" +msgstr "max." + #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 msgctxt "@title:window" msgid "Post Processing Plugin" @@ -1787,81 +1897,21 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Scripts de post-traitement" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:218 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:217 msgctxt "@action" msgid "Add a script" msgstr "Ajouter un script" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:264 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:263 msgctxt "@label" msgid "Settings" msgstr "Paramètres" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 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:76 -msgctxt "@label" -msgid "Color scheme" -msgstr "Modèle de couleurs" - -#: /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:95 -msgctxt "@label:listbox" -msgid "Line Type" -msgstr "Type de ligne" - -#: /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:216 -msgctxt "@label" -msgid "Show Travels" -msgstr "Afficher les déplacements" - -#: /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:228 -msgctxt "@label" -msgid "Show Shell" -msgstr "Afficher la coque" - -#: /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:283 -msgctxt "@label" -msgid "Only Show Top Layers" -msgstr "Afficher uniquement les couches supérieures" - -#: /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:303 -msgctxt "@label" -msgid "Top / Bottom" -msgstr "Haut / bas" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 -msgctxt "@label" -msgid "Inner Wall" -msgstr "Paroi interne" - #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" msgid "Convert Image..." @@ -1953,129 +2003,129 @@ msgctxt "@label:checkbox" msgid "Show all" msgstr "Afficher tout" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:13 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Ouvrir un projet" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 msgctxt "@action:ComboBox option" msgid "Update existing" msgstr "Mettre à jour l'existant" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:55 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 msgctxt "@action:ComboBox option" msgid "Create new" msgstr "Créer" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:70 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Résumé - Projet Cura" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:88 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:88 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 msgctxt "@action:label" msgid "Printer settings" msgstr "Paramètres de l'imprimante" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 msgctxt "@info:tooltip" msgid "How should the conflict in the machine be resolved?" msgstr "Comment le conflit de la machine doit-il être résolu ?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:124 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:97 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 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 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:144 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:201 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:293 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:190 msgctxt "@action:label" msgid "Name" msgstr "Nom" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:161 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:164 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:166 msgctxt "@action:label" msgid "Profile settings" msgstr "Paramètres de profil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 msgctxt "@info:tooltip" msgid "How should the conflict in the profile be resolved?" msgstr "Comment le conflit du profil doit-il être résolu ?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:212 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 msgctxt "@action:label" msgid "Not in profile" msgstr "Absent du profil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:217 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 écrasent" msgstr[1] "%1 écrase" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:232 msgctxt "@action:label" msgid "Derivative from" msgstr "Dérivé de" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:233 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:237 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 écrasent" msgstr[1] "%1, %2 écrase" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:249 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:253 msgctxt "@action:label" msgid "Material settings" msgstr "Paramètres du matériau" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:265 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Comment le conflit du matériau doit-il être résolu ?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:207 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 msgctxt "@action:label" msgid "Setting visibility" msgstr "Visibilité des paramètres" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:317 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:321 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 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:218 msgctxt "@action:label" msgid "Visible settings:" msgstr "Paramètres visibles :" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:223 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 sur %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:363 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368 msgctxt "@action:warning" -msgid "Loading a project will clear all models on the buildplate" -msgstr "Le chargement d'un projet effacera tous les modèles sur le plateau" +msgid "Loading a project will clear all models on the build plate." +msgstr "Le chargement d'un projet effacera tous les modèles sur le plateau." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:381 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 msgctxt "@action:button" msgid "Open" msgstr "Ouvrir" @@ -2100,6 +2150,11 @@ msgctxt "@action:button" msgid "Installed" msgstr "Installé" +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Télécharger" + #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" @@ -2108,10 +2163,10 @@ msgstr "Plug-in d'accord de licence" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" msgid "" -" plugin contains a license.\n" +"This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr " le plug-in contient une licence.\nVous devez approuver cette licence pour installer ce plug-in.\nAcceptez-vous les clauses ci-dessous ?" +msgstr "Ce 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" @@ -2123,6 +2178,11 @@ msgctxt "@action:button" msgid "Decline" msgstr "Refuser" +#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 +msgctxt "@title:window" +msgid "User Agreement" +msgstr "Accord utilisateur" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 msgctxt "@title" @@ -2308,30 +2368,25 @@ msgid "Printer does not accept commands" msgstr "L'imprimante n'accepte pas les commandes" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 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:101 -msgctxt "@label:MonitorStatus" -msgid "Lost connection with the printer" -msgstr "Connexion avec l'imprimante perdue" - #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Impression..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "En pause" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Préparation..." @@ -2547,7 +2602,7 @@ msgid "Unit" msgstr "Unité" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "General" msgstr "Général" @@ -2778,7 +2833,7 @@ 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:441 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 msgctxt "@title:tab" msgid "Printers" msgstr "Imprimantes" @@ -2796,39 +2851,39 @@ msgctxt "@action:button" msgid "Rename" msgstr "Renommer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 msgctxt "@label" msgid "Printer type:" msgstr "Type d'imprimante :" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:158 msgctxt "@label" msgid "Connection:" msgstr "Connexion :" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:166 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:164 #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 msgctxt "@info:status" msgid "The printer is not connected." msgstr "L'imprimante n'est pas connectée." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:170 msgctxt "@label" msgid "State:" msgstr "État :" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Waiting for someone to clear the build plate" msgstr "En attente du dégagement du plateau" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 msgctxt "@label:MonitorStatus" 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:445 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 msgctxt "@title:tab" msgid "Profiles" msgstr "Profils" @@ -2926,7 +2981,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:443 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 msgctxt "@title:tab" msgid "Materials" msgstr "Matériaux" @@ -2984,7 +3039,7 @@ msgid "Successfully exported material to %1" 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 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 msgctxt "@title:window" msgid "Add Printer" msgstr "Ajouter une imprimante" @@ -3004,6 +3059,11 @@ msgctxt "@title:window" msgid "About Cura" msgstr "À propos de Cura" +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43 +msgctxt "@label" +msgid "version: %1" +msgstr "version : %1" + #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." @@ -3096,12 +3156,17 @@ msgctxt "@label" msgid "Polygon clipping library" msgstr "Bibliothèque de découpe polygone" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Bibliothèque Python HTTP" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 msgctxt "@label" msgid "Font" msgstr "Police" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 msgctxt "@label" msgid "SVG icons" msgstr "Icônes SVG" @@ -3111,7 +3176,12 @@ msgctxt "@label" msgid "Profile:" msgstr "Profil :" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 +msgctxt "@" +msgid "No Profile Available" +msgstr "Aucun profil disponible" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3119,32 +3189,32 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 msgctxt "@label:textbox" msgid "Search..." msgstr "Rechercher..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 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:491 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Masquer ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Masquer ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Afficher ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Configurer la visibilité des paramètres..." @@ -3193,54 +3263,71 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Configuration de l'impression" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 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" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +msgctxt "@label Hours and minutes" msgid "00h 00min" -msgstr "00 h 00 min" +msgstr "00h 00min" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 msgctxt "@tooltip" -msgid "Time information" -msgstr "Information horaire" +msgid "Time specification
    " +msgstr "Spécification de temps
    " -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 -msgctxt "@description" -msgid "Print time" -msgstr "Imprimer l'heure" - -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 msgctxt "@label" +msgid "Cost specification" +msgstr "Spécification de coût" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1m" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +msgctxt "@label" +msgid "Total:" +msgstr "Total :" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1m / ~ %2g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1m / ~ %2g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 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:481 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 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." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Automatique : %1" @@ -3250,7 +3337,7 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&Visualisation" -#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" msgstr "Automatique : %1" @@ -3279,13 +3366,13 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Ouvrir un fichier &récent" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 msgctxt "@info:status" 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 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 msgctxt "@label" msgid "Extruder" msgstr "Extrudeuse" @@ -3300,309 +3387,349 @@ msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "Température actuelle de cet extrudeur." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:188 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:219 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Matériau dans cet extrudeur." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 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:282 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 msgctxt "@label" msgid "Build plate" msgstr "Plateau" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 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:343 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:344 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:422 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 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:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Annuler" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button" msgid "Pre-heat" msgstr "Préchauffer" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 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:677 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:703 +msgctxt "@label" +msgid "Printer control" +msgstr "Contrôle de l'imprimante" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 +msgctxt "@label" +msgid "Jog Position" +msgstr "Position de coupe" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735 +msgctxt "@label" +msgid "X/Y" +msgstr "X/Y" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842 +msgctxt "@label" +msgid "Z" +msgstr "Z" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 +msgctxt "@label" +msgid "Jog Distance" +msgstr "Distance de coupe" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018 msgctxt "@label" msgid "Active print" msgstr "Activer l'impression" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 msgctxt "@label" msgid "Job Name" msgstr "Nom de la tâche" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 msgctxt "@label" msgid "Printing Time" msgstr "Durée d'impression" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1035 msgctxt "@label" msgid "Estimated time left" msgstr "Durée restante estimée" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Passer en P&lein écran" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Annuler" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Rétablir" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Quitter" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +msgctxt "@action:inmenu menubar:view" +msgid "&Reset camera position" +msgstr "&Réinitialiser la position de la caméra" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Configurer Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Ajouter une imprimante..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:115 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Gérer les &imprimantes..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Gérer les matériaux..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&Mettre à jour le profil à l'aide des paramètres / forçages actuels" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Ignorer les modifications actuelles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Créer un profil à partir des paramètres / forçages actuels..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Gérer les profils..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Afficher la &documentation en ligne" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:171 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Notifier un &bug" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "&À propos de..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 msgctxt "@action:inmenu menubar:edit" msgid "Delete &Selected Model" msgid_plural "Delete &Selected Models" msgstr[0] "Supprimer le modèle &sélectionné" msgstr[1] "Supprimer les modèles &sélectionnés" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Centrer le modèle sélectionné" msgstr[1] "Centrer les modèles sélectionnés" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Multiplier le modèle sélectionné" msgstr[1] "Multiplier les modèles sélectionnés" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Supprimer le modèle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:222 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Ce&ntrer le modèle sur le plateau" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:228 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "&Grouper les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Dégrouper les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "&Fusionner les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Multiplier le modèle..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:265 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "&Sélectionner tous les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "&Supprimer les objets du plateau" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "Rechar&ger tous les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Réorganiser tous les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Réorganiser la sélection" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Réinitialiser toutes les positions des modèles" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "Réinitialiser tous les modèles et transformations" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Ouvrir le(s) fichier(s)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Nouveau projet..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "Afficher le &journal du moteur..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:346 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Afficher le dossier de configuration" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurer la visibilité des paramètres..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +msgctxt "@action:menu" +msgid "Browse plugins..." +msgstr "Parcourir les plug-ins..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +msgctxt "@action:menu" +msgid "Installed plugins..." +msgstr "Plug-ins installés..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Veuillez charger un modèle 3D" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Prêt à découper" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Découpe en cours..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Prêt à %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Impossible de découper" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Découpe indisponible" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Préparer" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Annuler" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 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:593 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 msgctxt "@title:window" msgid "Open file(s)" msgstr "Ouvrir le(s) fichier(s)" @@ -3619,112 +3746,117 @@ msgstr "Importer tout comme modèles" #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 msgctxt "@title:window" -msgid "Cura" -msgstr "Cura" +msgid "Ultimaker Cura" +msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&Fichier" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "Enregi&strer la sélection dans un fichier" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "Enregistrer &sous..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 msgctxt "@title:menu menubar:file" msgid "Save project" msgstr "Enregistrer le projet" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&Modifier" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 msgctxt "@title:menu" msgid "&View" msgstr "&Visualisation" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:167 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 msgctxt "@title:menu" msgid "&Settings" msgstr "&Paramètres" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "Im&primante" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 msgctxt "@title:menu" msgid "&Material" msgstr "&Matériau" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 msgctxt "@title:menu" msgid "&Profile" msgstr "&Profil" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Définir comme extrudeur actif" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:202 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "E&xtensions" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +msgctxt "@title:menu menubar:toplevel" +msgid "P&lugins" +msgstr "&Plug-ins" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "P&références" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Aide" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 msgctxt "@action:button" msgid "Open File" msgstr "Ouvrir un fichier" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 msgctxt "@title:tab" msgid "Settings" msgstr "Paramètres" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 msgctxt "@title:window" msgid "New project" msgstr "Nouveau projet" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 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:694 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 msgctxt "@window:title" msgid "Install Plugin" msgstr "Installer plug-in" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 msgctxt "@title:window" msgid "Open File(s)" msgstr "Ouvrir le(s) fichier(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 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." @@ -3734,102 +3866,112 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Enregistrer le projet" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 msgctxt "@action:label" msgid "Extruder %1" msgstr "Extrudeuse %1" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & matériau" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:242 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/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 msgctxt "@action:button" msgid "Save" msgstr "Enregistrer" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 msgctxt "@title:tab" msgid "Prepare" msgstr "Préparer" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 msgctxt "@title:tab" msgid "Monitor" msgstr "Surveiller" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 msgctxt "@label" msgid "Layer Height" msgstr "Hauteur de la couche" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +msgctxt "@tooltip" +msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +msgstr "Un profil personnalisé est actuellement actif. Pour activer le curseur de qualité, choisissez un profil de qualité par défaut dans l'onglet Personnaliser" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 msgctxt "@label" msgid "Print Speed" msgstr "Vitesse d’impression" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 msgctxt "@label" msgid "Slower" msgstr "Ralentir" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 msgctxt "@label" msgid "Faster" msgstr "Accélérer" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "Vous avez modifié certains paramètres du profil. Si vous souhaitez les modifier, allez dans le mode Personnaliser." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 msgctxt "@label" msgid "Infill" msgstr "Remplissage" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 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:602 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 msgctxt "@label" msgid "Enable gradual" msgstr "Permettre le remplissage graduel" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 msgctxt "@label" msgid "Generate Support" msgstr "Générer les supports" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 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:718 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 msgctxt "@label" msgid "Support Extruder" msgstr "Extrudeuse de soutien" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 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:796 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Adhérence au plateau" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 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:883 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 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" @@ -3846,17 +3988,17 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Ouvrir un fichier de projet" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 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 "Ceci est un fichier de projet Cura. Souhaitez-vous l'ouvrir comme projet ou en importer les modèles ?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:95 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@action:button" msgid "Open as project" msgstr "Ouvrir comme projet" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Import models" msgstr "Importer les modèles" @@ -3866,17 +4008,17 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Journal du moteur" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 msgctxt "@label" msgid "Material" msgstr "Matériau" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 msgctxt "@label" -msgid "Check material compatibility" -msgstr "Vérifier la compatibilité du matériau" +msgid "Check compatibility" +msgstr "Vérifier la compatibilité" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 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." @@ -3991,11 +4133,6 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Connexion au réseau UM3" -#: CuraPrintClusterUpload/plugin.json -msgctxt "name" -msgid "UM3 Network Connection (Cluster)" -msgstr "Connexion au réseau UM3 (Cluster)" - #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4016,6 +4153,16 @@ msgctxt "name" msgid "SolidWorks Integration" msgstr "Intégration SolidWorks" +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Fournit la Vue simulation." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Vue simulation" + #: PostProcessingPlugin/plugin.json msgctxt "description" msgid "Extension that allows for user created scripts for post processing" @@ -4076,16 +4223,6 @@ msgctxt "name" msgid "GCode Profile Reader" msgstr "Lecteur de profil GCode" -#: LayerView/plugin.json -msgctxt "description" -msgid "Provides the Layer view." -msgstr "Permet la vue en couches." - -#: LayerView/plugin.json -msgctxt "name" -msgid "Layer View" -msgstr "Vue en couches" - #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4106,6 +4243,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Mise à niveau de version, de 2.7 vers 3.0" +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." +msgstr "Met à niveau les configurations, de Cura 3.0 vers Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.0 to 3.1" +msgstr "Mise à niveau de version, de 3.0 vers 3.1" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4166,6 +4313,16 @@ msgctxt "name" msgid "Per Model Settings Tool" msgstr "Outil de paramètres par modèle" +#: cura-siemensnx-plugin/plugin.json +msgctxt "description" +msgid "Helps you to install an 'export to Cura' button in Siemens NX." +msgstr "Vous aide à installer un bouton « exporter vers Cura » dans Siemens NX." + +#: cura-siemensnx-plugin/plugin.json +msgctxt "name" +msgid "Siemens NX Integration" +msgstr "Siemens NX Integration" + #: 3MFReader/plugin.json msgctxt "description" msgid "Provides support for reading 3MF files." @@ -4226,6 +4383,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "Générateur 3MF" +#: UserAgreementPlugin/plugin.json +msgctxt "description" +msgid "Ask the user once if he/she agrees with our license" +msgstr "Demander à l'utilisateur une fois s'il appose son accord à notre licence" + +#: UserAgreementPlugin/plugin.json +msgctxt "name" +msgid "UserAgreement" +msgstr "UserAgreement" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" @@ -4246,6 +4413,138 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Lecteur de profil Cura" +#~ msgctxt "@label:status" +#~ msgid "Blocked" +#~ msgstr "Bloqué" + +#~ msgctxt "@label:status" +#~ msgid "Can't start print" +#~ msgstr "Ne peux pas imprimer" + +#~ msgctxt "@action:button" +#~ msgid "Open Connect.." +#~ msgstr "Ouvrir Connect" + +#~ msgctxt "@info:title" +#~ msgid "Print Details" +#~ msgstr "Les détails d'impression" + +#~ 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 "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." + +msgctxt "@item:inlistbox" +msgid "Layer view" +msgstr "Vue en couches" + +msgctxt "@info:title" +msgid "Layer View" +msgstr "Vue en couches" + +#~ msgctxt "@menuitem" +#~ msgid "Browse plugins" +#~ msgstr "Parcourir les plug-ins" + +#~ msgctxt "@info:title" +#~ msgid "Export Details" +#~ msgstr "Exporter les détails" + +#~ 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 "" +#~ "

    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" +#~ " " + +#~ msgctxt "@action:button" +#~ msgid "Open Web Page" +#~ msgstr "Ouvrir la page Web" + +#~ msgctxt "@action:button" +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgctxt "@label" +#~ msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +#~ msgstr "Cette imprimante n'est pas configurée pour héberger un groupe d'imprimantes connectées Ultimaker 3." + +#~ msgctxt "@label" +#~ msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +#~ msgstr "L'imprimante est configurée pour héberger un groupe de %1 imprimantes connectées Ultimaker 3." + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Préparation..." + +#~ msgctxt "@label" +#~ msgid "Completed on: " +#~ msgstr "Finalisé sur : " + +#~ msgctxt "@info:tooltip" +#~ msgid "Opens the print jobs page with your default web browser." +#~ msgstr "Ouvre la page des tâches d'impression avec votre navigateur web." + +#~ msgctxt "@label" +#~ msgid "PRINTER GROUP" +#~ msgstr "GROUPE D'IMPRIMANTES" + +#~ msgctxt "@action:warning" +#~ msgid "Loading a project will clear all models on the buildplate" +#~ msgstr "Le chargement d'un projet effacera tous les modèles sur le plateau" + +#~ 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 "" +#~ " le plug-in contient une licence.\n" +#~ "Vous devez approuver cette licence pour installer ce plug-in.\n" +#~ "Acceptez-vous les clauses ci-dessous ?" + +#~ msgctxt "@label" +#~ msgid "00h 00min" +#~ msgstr "00 h 00 min" + +#~ msgctxt "@tooltip" +#~ msgid "Time information" +#~ msgstr "Information horaire" + +#~ msgctxt "@description" +#~ msgid "Print time" +#~ msgstr "Imprimer l'heure" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g / ~ %4 %3" +#~ msgstr "%1m / ~ %2g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g" +#~ msgstr "%1m / ~ %2g" + +#~ msgctxt "@title:window" +#~ msgid "Cura" +#~ msgstr "Cura" + +#~ msgctxt "@label" +#~ msgid "Check material compatibility" +#~ msgstr "Vérifier la compatibilité du matériau" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection (Cluster)" +#~ msgstr "Connexion au réseau UM3 (Cluster)" + +#~ msgctxt "description" +#~ msgid "Provides the Layer view." +#~ msgstr "Permet la vue en couches." + +msgctxt "name" +msgid "Layer View" +msgstr "Vue en couches" + #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" #~ msgstr "Rayon-X" @@ -4565,9 +4864,9 @@ msgstr "Lecteur de profil Cura" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "Fournit la prise en charge de l'importation de profils à partir de fichiers g-code." -#~ msgctxt "@label" -#~ msgid "Layer View" -#~ msgstr "Vue en couches" +msgctxt "@label" +msgid "Layer View" +msgstr "Vue en couches" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." diff --git a/resources/i18n/fr_FR/fdmextruder.def.json.po b/resources/i18n/fr_FR/fdmextruder.def.json.po index 70279e97d9..fdec72de32 100644 --- a/resources/i18n/fr_FR/fdmextruder.def.json.po +++ b/resources/i18n/fr_FR/fdmextruder.def.json.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: French\n" "Language: fr_FR\n" diff --git a/resources/i18n/fr_FR/fdmprinter.def.json.po b/resources/i18n/fr_FR/fdmprinter.def.json.po index 0a4a135b99..0e768253dc 100644 --- a/resources/i18n/fr_FR/fdmprinter.def.json.po +++ b/resources/i18n/fr_FR/fdmprinter.def.json.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -605,6 +605,31 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "La hauteur de la couche initiale en mm. Une couche initiale plus épaisse adhère plus facilement au plateau." +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Tolérance à la découpe" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Comment découper des couches avec des surfaces diagonales. Les zones d'une couche peuvent être générées en fonction de l'endroit où le milieu de la couche croise la surface (Milieu). Alternativement, chaque couche peut posséder des zones situées à l'intérieur du volume à travers toute la hauteur de la couche (Exclusif), ou une couche peut avoir des zones situées à l'intérieur à tout endroit dans la couche (Inclusif). L'option Exclusif permet de retenir le plus de détails, Inclusif permet d'obtenir une adaptation optimale et Milieu demande le moins de temps de traitement." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Milieu" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Exclusif" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Inclusif" + #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -755,6 +780,16 @@ 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" @@ -767,8 +802,8 @@ msgstr "Le train d'extrudeuse utilisé pour l'impression des parois externes. Ce #: fdmprinter.def.json msgctxt "wall_x_extruder_nr label" -msgid "Inner Walls Extruder" -msgstr "Extrudeuse de parois internes" +msgid "Inner Wall Extruder" +msgstr "Extrudeuse de paroi interne" #: fdmprinter.def.json msgctxt "wall_x_extruder_nr description" @@ -1200,6 +1235,106 @@ 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 "ironing_enabled label" +msgid "Enable Ironing" +msgstr "Activer l'étirage" + +#: fdmprinter.def.json +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 "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 "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" +msgid "Ironing Pattern" +msgstr "Motif d'étirage" + +#: fdmprinter.def.json +msgctxt "ironing_pattern description" +msgid "The pattern to use for ironing top surfaces." +msgstr "Le motif à utiliser pour étirer les surfaces supérieures." + +#: fdmprinter.def.json +msgctxt "ironing_pattern option concentric" +msgid "Concentric" +msgstr "Concentrique" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Zig Zag" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing label" +msgid "Ironing Line Spacing" +msgstr "Interligne de l'étirage" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing description" +msgid "The distance between the lines of ironing." +msgstr "La distance entre les lignes d'étirage." + +#: fdmprinter.def.json +msgctxt "ironing_flow label" +msgid "Ironing Flow" +msgstr "Flux d'étirage" + +#: fdmprinter.def.json +msgctxt "ironing_flow description" +msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." +msgstr "La quantité de matériau, relative à une ligne de couche extérieure normale, à extruder pendant l'étirage. Le fait de garder la buse pleine aide à remplir certaines des crevasses de la surface supérieure ; mais si la quantité est trop importante, cela entraînera une surextrusion et l'apparition de coupures sur le côté de la surface." + +#: fdmprinter.def.json +msgctxt "ironing_inset label" +msgid "Ironing Inset" +msgstr "Insert d'étirage" + +#: fdmprinter.def.json +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 "infill label" msgid "Infill" @@ -1247,8 +1382,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, 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 "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." +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, tri-hexagon, cubic, octet, quarter cubic, cross 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 "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, trihexagonaux, cubiques, octaédriques, quart cubiques et concentriques sont entièrement imprimés sur chaque couche. Les remplissages cubique, quart cubique et octaédrique changent à chaque couche afin d'offrir une répartition plus égale de la solidité dans chaque direction." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1265,6 +1400,11 @@ msgctxt "infill_pattern option triangles" msgid "Triangles" msgstr "Triangles" +#: fdmprinter.def.json +msgctxt "infill_pattern option trihexagon" +msgid "Tri-Hexagon" +msgstr "Trihexagonal" + #: fdmprinter.def.json msgctxt "infill_pattern option cubic" msgid "Cubic" @@ -1317,8 +1457,8 @@ 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 "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." +msgid "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." +msgstr "Relie les extrémités où le motif de remplissage touche la paroi interne, à l'aide d'une ligne é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" @@ -1330,6 +1470,26 @@ msgctxt "infill_angles description" msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns)." msgstr "Une liste de sens de ligne (exprimés en nombres entiers) à utiliser. Les éléments de la liste sont utilisés de manière séquentielle à mesure de l'avancement des couches. La liste reprend depuis le début lorsque la fin est atteinte. Les éléments de la liste sont séparés par des virgules et la liste entière est encadrée entre crochets. La valeur par défaut est une liste vide, ce qui signifie que les angles traditionnels par défaut seront utilisés (45 et 135 degrés pour les motifs en lignes et en zig zag et 45 degrés pour tout autre motif)." +#: fdmprinter.def.json +msgctxt "infill_offset_x label" +msgid "Infill X Offset" +msgstr "Remplissage Décalage X" + +#: fdmprinter.def.json +msgctxt "infill_offset_x description" +msgid "The infill pattern is offset this distance along the X axis." +msgstr "Le motif de remplissage est décalé de cette distance sur l'axe X." + +#: fdmprinter.def.json +msgctxt "infill_offset_y label" +msgid "Infill Y Offset" +msgstr "Remplissage Décalage Y" + +#: fdmprinter.def.json +msgctxt "infill_offset_y description" +msgid "The infill pattern is offset this distance along the Y axis." +msgstr "Le motif de remplissage est décalé de cette distance sur l'axe Y." + #: fdmprinter.def.json msgctxt "sub_div_rad_add label" msgid "Cubic Subdivision Shell" @@ -1640,6 +1800,26 @@ msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Ajuste le diamètre du filament utilisé. Faites correspondre cette valeur au diamètre du filament utilisé." +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency label" +msgid "Adhesion Tendency" +msgstr "Tendance à l'adhérence" + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency description" +msgid "Surface adhesion tendency." +msgstr "Tendance à l'adhérence de la surface." + +#: fdmprinter.def.json +msgctxt "material_surface_energy label" +msgid "Surface Energy" +msgstr "Énergie de la surface" + +#: fdmprinter.def.json +msgctxt "material_surface_energy description" +msgid "Surface energy." +msgstr "Énergie de la surface." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -2830,36 +3010,6 @@ msgctxt "support_connect_zigzags description" msgid "Connect the ZigZags. This will increase the strength of the zig zag support structure." 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 "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 "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 "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 "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 "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 "Ignorer une ligne de connexion sur N pour rendre la structure de support plus facile à casser." - #: fdmprinter.def.json msgctxt "support_infill_rate label" msgid "Support Density" @@ -3399,7 +3549,7 @@ msgstr "Distance de la jupe" 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." +"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." #: fdmprinter.def.json @@ -3442,26 +3592,6 @@ 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 "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 "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 "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 "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" msgid "Raft Extra Margin" @@ -3479,7 +3609,7 @@ 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." +msgid "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." 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 @@ -3952,6 +4082,16 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Normalement, Cura essaye de raccommoder les petits trous dans le maillage et supprime les parties des couches contenant de gros trous. Activer cette option pousse Cura à garder les parties qui ne peuvent être raccommodées. Cette option doit être utilisée en dernier recours quand tout le reste échoue à produire un GCode correct." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Résolution maximum" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "Taille minimum d'un segment de ligne après découpage. Si vous augmentez cette valeur, la maille aura une résolution plus faible. Cela peut permettre à l'imprimante de suivre la vitesse à laquelle elle doit traiter le G-Code et augmentera la vitesse de découpe en enlevant des détails de la maille que l'imprimante ne peut pas traiter de toute manière." + #: fdmprinter.def.json msgctxt "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -3982,6 +4122,16 @@ msgctxt "alternate_carve_order description" msgid "Switch to which mesh intersecting volumes will belong with every layer, so that the overlapping meshes become interwoven. Turning this setting off will cause one of the meshes to obtain all of the volume in the overlap, while it is removed from the other meshes." msgstr "Passe aux volumes d'intersection de maille qui appartiennent à chaque couche, de manière à ce que les mailles qui se chevauchent soient entrelacées. Si vous désactivez ce paramètre, l'une des mailles obtiendra tout le volume dans le chevauchement tandis qu'il est retiré des autres mailles." +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers label" +msgid "Remove Empty First Layers" +msgstr "Supprimer les premières couches vides" + +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers description" +msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." +msgstr "Supprimer les couches vides sous la première couche imprimée si elles sont présentes. Le fait de désactiver ce paramètre peut entraîner l'apparition de premières couches vides si le paramètre Tolérance à la découpe est défini sur Exclusif ou Milieu." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4187,6 +4337,36 @@ 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 "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 "support_skip_some_zags label" +msgid "Break Up Support In Chunks" +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 "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 "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 "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 "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 "Ignorer une ligne de connexion sur N pour rendre la structure de support plus facile à casser." + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4477,6 +4657,26 @@ msgctxt "magic_fuzzy_skin_point_dist description" msgid "The average distance between the random points introduced on each line segment. Note that the original points of the polygon are discarded, so a high smoothness results in a reduction of the resolution. This value must be higher than half the Fuzzy Skin Thickness." msgstr "Distance moyenne entre les points ajoutés aléatoirement sur chaque segment de ligne. Il faut noter que les points originaux du polygone ne sont plus pris en compte donc un fort lissage conduira à une diminution de la résolution. Cette valeur doit être supérieure à la moitié de l'épaisseur de la couche floue." +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset label" +msgid "Flow rate compensation max extrusion offset" +msgstr "Décalage d'extrusion max. pour compensation du débit" + +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset description" +msgid "The maximum distance in mm to compensate." +msgstr "Distance de compensation maximum en mm." + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor label" +msgid "Flow rate compensation factor" +msgstr "Facteur de compensation du débit" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor description" +msgid "The multiplication factor for the flow rate -> distance translation." +msgstr "Facteur de multiplication pour le débit -> translation de la distance." + #: fdmprinter.def.json msgctxt "wireframe_enabled label" msgid "Wire Printing" @@ -4734,106 +4934,6 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Distance entre la buse et les lignes descendantes horizontalement. Un espacement plus important génère des lignes diagonalement descendantes avec un angle moins abrupt, qui génère alors des connexions moins ascendantes avec la couche suivante. Uniquement applicable à l'impression filaire." -#: fdmprinter.def.json -msgctxt "ironing_enabled label" -msgid "Enable Ironing" -msgstr "Activer l'étirage" - -#: fdmprinter.def.json -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 "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 "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" -msgid "Ironing Pattern" -msgstr "Motif d'étirage" - -#: fdmprinter.def.json -msgctxt "ironing_pattern description" -msgid "The pattern to use for ironing top surfaces." -msgstr "Le motif à utiliser pour étirer les surfaces supérieures." - -#: fdmprinter.def.json -msgctxt "ironing_pattern option concentric" -msgid "Concentric" -msgstr "Concentrique" - -#: fdmprinter.def.json -msgctxt "ironing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Zig Zag" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing label" -msgid "Ironing Line Spacing" -msgstr "Interligne de l'étirage" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing description" -msgid "The distance between the lines of ironing." -msgstr "La distance entre les lignes d'étirage." - -#: fdmprinter.def.json -msgctxt "ironing_flow label" -msgid "Ironing Flow" -msgstr "Flux d'étirage" - -#: fdmprinter.def.json -msgctxt "ironing_flow description" -msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." -msgstr "La quantité de matériau, relative à une ligne de couche extérieure normale, à extruder pendant l'étirage. Le fait de garder la buse pleine aide à remplir certaines des crevasses de la surface supérieure ; mais si la quantité est trop importante, cela entraînera une surextrusion et l'apparition de coupures sur le côté de la surface." - -#: fdmprinter.def.json -msgctxt "ironing_inset label" -msgid "Ironing Inset" -msgstr "Insert d'étirage" - -#: fdmprinter.def.json -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" @@ -4894,13 +4994,45 @@ 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_x_extruder_nr label" +#~ msgid "Inner Walls Extruder" +#~ msgstr "Extrudeuse de parois internes" -#~ 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, 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 "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." + +#~ 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 "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." + +#~ 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." + +#~ msgctxt "z_offset_layer_0 label" +#~ msgid "Initial Layer Z Offset" +#~ msgstr "Décalage en Z de la couche initiale" + +#~ 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 "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." + +#~ msgctxt "z_offset_taper_layers label" +#~ msgid "Z Offset Taper Layers" +#~ msgstr "Couches biseautées de décalage en Z" + +#~ 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 "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." + +#~ 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 "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." #~ 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." @@ -5116,4 +5248,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 7354379afa..a4c9ef40f8 100644 --- a/resources/i18n/it_IT/cura.po +++ b/resources/i18n/it_IT/cura.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-21 16:58+0100\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -16,66 +16,6 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Print aborted" -msgstr "Stampa interrotta" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Blocked" -msgstr "Ostacolato" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Action required" -msgstr "Richiede un'azione" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Can't start print" -msgstr "Impossibile avviare la stampa" - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is not set up to host a group of Ultimaker 3 printers." -msgstr "Questa stampante non è predisposta per comandare un gruppo di stampanti Ultimaker 3." - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label" -msgid "Finishes at: " -msgstr "Finisce alle: " - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is the host for a group of %1 Ultimaker 3 printers." -msgstr "Questa stampante comanda un gruppo di %1 stampanti Ultimaker 3." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "La stampante '{printer_name}' ha finito di stampare '{job_name}'." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Print finished" -msgstr "Stampa finita" - -#: Manually added for resources/Cura/Cura.qml -msgctxt "@title:menu menubar:toplevel" -msgid "P&lugins" -msgstr "&Plugin" - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Browse plugins..." -msgstr "Sfoglia plugin..." - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Installed plugins..." -msgstr "Plugin installati..." - #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" @@ -113,19 +53,17 @@ 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 -#: /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:428 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/3MFReader/WorkspaceDialog.qml:376 #: /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 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:253 msgctxt "@action:button" msgid "Cancel" msgstr "Annulla" @@ -152,15 +90,15 @@ 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 "Apri Connect.." +msgid "Open Connect..." +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 "Apri interfaccia web Doodle3D Connect" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Visualizza registro modifiche" @@ -195,37 +133,38 @@ msgctxt "@info:status" msgid "Connected via USB" msgstr "Connesso tramite USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 msgctxt "@info:title" -msgid "Print Details" -msgstr "Dettagli stampa" +msgid "Printer Unavailable" +msgstr "Stampante non disponibile" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 msgctxt "@info:title" msgid "USB Printing" msgstr "Stampa USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 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/USBPrinterOutputDevice.py:461 #: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 msgctxt "@info:title" msgid "Warning" msgstr "Avvertenza" @@ -289,11 +228,11 @@ 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: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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 msgctxt "@info:title" msgid "Error" msgstr "Errore" @@ -342,346 +281,332 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Unità rimovibile" -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Stampa sulla rete" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Stampa sulla rete" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 msgctxt "@info:title" msgid "Connection status" msgstr "Stato di connessione" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:479 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:502 msgctxt "@info:title" msgid "Connection Status" msgstr "Stato di connessione" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@action:button" msgid "Retry" msgstr "Riprova" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Invia nuovamente la richiesta di accesso" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Accesso alla stampante accettato" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:375 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:385 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:382 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Connected over the network." msgstr "Collegato alla rete." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:405 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:400 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 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:403 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 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:467 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 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:499 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 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:649 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:666 #, 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:650 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:667 msgctxt "@info:title" msgid "Printer Status" msgstr "Stato stampante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 #, 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:682 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 #, 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:692 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 #, 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:702 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 #, 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:716 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 #, 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:724 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:741 #, 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:729 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 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:730 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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:736 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Mancata corrispondenza della configurazione" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "Invio nuovi processi (temporaneamente) bloccato, invio in corso precedente processo di stampa." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Invio dati alla stampante in corso" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:title" msgid "Sending Data" msgstr "Invio dati" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 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:1050 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Interruzione stampa in corso..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Stampa interrotta. Controllare la stampante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Messa in pausa stampa..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Ripresa stampa..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Sincronizzazione con la stampante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 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:1220 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:112 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:113 #, 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 "Questa stampante fa da host per un gruppo di {count} stampanti Ultimaker 3 connesse." -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 #, 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 "{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 "Invio nuovi processi (temporaneamente) bloccato, invio in corso precedente processo di stampa." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 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 "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 "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 "Inviato {file_name} a gruppo {cluster_name}." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 -msgctxt "@action:button" -msgid "Show print jobs" -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 "Apre l'interfaccia processi di stampa sul browser." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Impossibile inviare processo di stampa a gruppo {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "Inviato {file_name} a gruppo {cluster_name}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "Mostra processi di stampa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "Apre l'interfaccia processi di stampa sul browser." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label" +msgid "Unknown" +msgstr "Sconosciuto" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#, python-brace-format +msgctxt "@info:status" +msgid "Printer '{printer_name}' has finished printing '{job_name}'." +msgstr "La stampante '{printer_name}' ha finito di stampare '{job_name}'." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +msgctxt "@info:status" +msgid "Print finished" +msgstr "Stampa finita" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 +msgctxt "@label:status" +msgid "Action required" +msgstr "Richiede un'azione" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "Invio {file_name} a gruppo {cluster_name}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +msgctxt "@action" +msgid "Connect via Network" +msgstr "Collega tramite rete" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 #, 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 "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." +msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." +msgstr "Sono disponibili nuove funzioni per la {machine_name}! Si consiglia di aggiornare il firmware sulla stampante." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Nuovo firmware %s disponibile" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 msgctxt "@action:button" -msgid "Download" -msgstr "Download" +msgid "How to update" +msgstr "Modalità di aggiornamento" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 msgctxt "@info" msgid "Could not access update information." msgstr "Non è possibile accedere alle informazioni di aggiornamento." @@ -711,7 +636,22 @@ msgctxt "@info:status" msgid "Error while starting %s!" msgstr "Errore durante l'avvio di %s!" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Simulation view" +msgstr "Vista simulazione" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +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/SimulationView/SimulationView.py:101 +msgctxt "@info:title" +msgid "Simulation View" +msgstr "Vista simulazione" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 msgid "Modify G-Code" msgstr "Modifica G-code" @@ -741,21 +681,6 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "File G-Code" -#: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Visualizzazione strato" - -#: /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 "Visualizzazione strato" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -788,8 +713,9 @@ msgstr "Impossibile eseguire il sezionamento con il materiale corrente in quanto #: /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 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 msgctxt "@info:title" msgid "Unable to slice" msgstr "Sezionamento impossibile" @@ -800,23 +726,29 @@ 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:306 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" +msgstr "Impossibile eseguire il sezionamento a causa di alcune impostazioni per modello. Le seguenti impostazioni presentano errori su uno o più modelli: {error_labels}" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 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:315 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 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à." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:65 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:status" msgid "Processing Layers" msgstr "Elaborazione dei livelli" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:title" msgid "Information" msgstr "Informazioni" @@ -831,14 +763,36 @@ msgctxt "@info:tooltip" 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:475 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23 +msgid "Install" +msgstr "Installazione" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It is not set to a directory." +msgstr "Impossibile copiare i file di plugin Siemens NX. Controllare UGII_USER_DIR. Non è assegnato ad alcuna directory." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81 +msgid "Successfully installed Siemens NX Cura plugin." +msgstr "Installato correttamente plugin Siemens NX Cura." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgstr "Impossibile copiare i file di plugin Siemens NX. Controllare UGII_USER_DIR." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 +msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." +msgstr "Impossibile installare plugin Siemens NX. Impossibile impostare la variabile di ambiente UGII_USER_DIR per Siemens NX." + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 msgctxt "@title:tab" msgid "Recommended" msgstr "Consigliata" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizzata" @@ -849,29 +803,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "File 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 msgctxt "@label" msgid "Nozzle" msgstr "Ugello" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 -msgctxt "@menuitem" -msgid "Browse plugins" -msgstr "Sfoglia plugin" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "Impossibile ottenere ID plugin da {0}" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 msgctxt "@info:tile" msgid "Warning" msgstr "Avvertenza" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 msgctxt "@window:title" msgid "Plugin browser" msgstr "Browser plugin" @@ -886,18 +835,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "File G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:254 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Parsing codice G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 msgctxt "@info:title" msgid "G-code Details" msgstr "Dettagli codice G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 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." @@ -939,73 +888,78 @@ msgctxt "@action" msgid "Level build plate" msgstr "Livella piano di stampa" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Parete esterna" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Pareti interne" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 msgctxt "@tooltip" msgid "Skin" msgstr "Rivestimento esterno" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 msgctxt "@tooltip" msgid "Infill" msgstr "Riempimento" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 msgctxt "@tooltip" msgid "Support Infill" msgstr "Riempimento del supporto" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 msgctxt "@tooltip" msgid "Support Interface" msgstr "Interfaccia supporto" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Support" msgstr "Supporto" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" msgid "Skirt" msgstr "Skirt" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 msgctxt "@tooltip" msgid "Travel" msgstr "Spostamenti" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Retractions" msgstr "Retrazioni" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Other" msgstr "Altro" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +msgctxt "@label unknown material" +msgid "Unknown" +msgstr "Sconosciuto" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "File pre-sezionato {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 msgctxt "@item:material" msgid "No material loaded" msgstr "Nessun materiale caricato" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 msgctxt "@item:material" msgid "Unknown material" msgstr "Materiale sconosciuto" @@ -1032,13 +986,13 @@ msgid "Can't Find Location" msgstr "Impossibile individuare posizione" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 msgctxt "@title:window" msgid "File Already Exists" msgstr "Il file esiste già" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 #, 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?" @@ -1054,12 +1008,22 @@ msgctxt "@label" msgid "Custom Material" msgstr "Materiale personalizzato" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 +msgctxt "@menuitem" +msgid "Global" +msgstr "Globale" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Non sottoposto a override" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 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/MachineManager.py:118 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1080,62 +1044,62 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Annulla modifica del diametro del materiale." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Impossibile esportare il profilo su {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Impossibile esportare il profilo su {0}: Rilevata anomalia durante scrittura plugin." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Profilo esportato su {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:157 msgctxt "@info:title" -msgid "Export Details" -msgstr "Dettagli esportazione" +msgid "Export succeeded" +msgstr "Esportazione riuscita" -#: /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 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" 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 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profilo importato correttamente {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 #, 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:272 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 msgctxt "@label" msgid "Custom profile" msgstr "Profilo personalizzato" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1162,238 +1126,316 @@ msgctxt "@info:title" msgid "Placing Object" msgstr "Sistemazione oggetto" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 msgctxt "@title:window" msgid "Crash Report" msgstr "Rapporto su crash" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:79 -msgctxt "@label" +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +msgctxt "@label crash message" 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 " +"

    A fatal exception has occurred. Please send us this Crash Report to fix the problem

    \n" +"

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" +" " +msgstr "

    Si è verificata un'eccezione irreversibile. Si prega di inviarci questo crash report per risolvere il problema

    \n

    Utilizzare il pulsante \"Invia report\" per inviare un report sui bug automaticamente ai nostri server

    \n " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +msgctxt "@title:groupbox" +msgid "System information" +msgstr "Informazioni di sistema" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +msgctxt "@label unknown version of Cura" +msgid "Unknown" +msgstr "Sconosciuto" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 +#, python-brace-format +msgctxt "@label Cura version" +msgid "Cura version: {version}
    " +msgstr "Versione Cura: {version}
    " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -msgctxt "@action:button" -msgid "Open Web Page" -msgstr "Apri pagina Web" +#, python-brace-format +msgctxt "@label Platform" +msgid "Platform: {platform}
    " +msgstr "Piattaforma: {platform}
    " -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 +#, python-brace-format +msgctxt "@label Qt version" +msgid "Qt version: {qt}
    " +msgstr "Versione Qt: {qt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 +#, python-brace-format +msgctxt "@label PyQt version" +msgid "PyQt version: {pyqt}
    " +msgstr "Versione PyQt: {pyqt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 +#, python-brace-format +msgctxt "@label OpenGL" +msgid "OpenGL: {opengl}
    " +msgstr "OpenGL: {opengl}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#, python-brace-format +msgctxt "@label OpenGL version" +msgid "
  • OpenGL Version: {version}
  • " +msgstr "
  • Versione OpenGL: {version}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#, python-brace-format +msgctxt "@label OpenGL vendor" +msgid "
  • OpenGL Vendor: {vendor}
  • " +msgstr "
  • Fornitore OpenGL: {vendor}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#, python-brace-format +msgctxt "@label OpenGL renderer" +msgid "
  • OpenGL Renderer: {renderer}
  • " +msgstr "
  • Renderer OpenGL: {renderer}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +msgctxt "@title:groupbox" +msgid "Exception traceback" +msgstr "Analisi eccezione" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +msgctxt "@title:groupbox" +msgid "Logs" +msgstr "Registri" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +msgctxt "@title:groupbox" +msgid "User description" +msgstr "Descrizione utente" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +msgctxt "@action:button" +msgid "Send report" +msgstr "Invia report" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Caricamento macchine in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Impostazione scena in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Caricamento interfaccia in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 #, 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:1295 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 #, 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:1304 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1357 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Impossibile aprire altri file durante il caricamento del codice G. Importazione saltata {0}" +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +msgctxt "@info:status" +msgid "The selected model was too small to load." +msgstr "Il modello selezionato è troppo piccolo per il caricamento." + #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 msgctxt "@title" msgid "Machine Settings" msgstr "Impostazioni macchina" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:77 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:78 msgctxt "@title:tab" msgid "Printer" msgstr "Stampante" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:96 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 msgctxt "@label" msgid "Printer Settings" msgstr "Impostazioni della stampante" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:107 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 msgctxt "@label" msgid "X (Width)" msgstr "X (Larghezza)" -#: /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: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 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:117 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Profondità)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:127 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Altezza)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:139 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:140 msgctxt "@label" msgid "Build plate shape" msgstr "Forma del piano di stampa" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:148 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 msgctxt "@option:check" msgid "Origin at center" msgstr "Origine al centro" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:156 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:157 msgctxt "@option:check" msgid "Heated bed" msgstr "Piano riscaldato" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:167 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 msgctxt "@label" msgid "Gcode flavor" msgstr "Versione GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:180 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 msgctxt "@label" msgid "Printhead Settings" msgstr "Impostazioni della testina di stampa" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:190 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 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 "Distanza tra il lato sinistro della testina di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testina di stampa durante la stampa \"Uno alla volta\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:200 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 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 "Distanza tra il lato anteriore della testina di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testina di stampa durante la stampa \"Uno alla volta\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:210 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 msgctxt "@label" msgid "X max" msgstr "X max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 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 "Distanza tra il lato destro della testina di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testina di stampa durante la stampa \"Uno alla volta\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:220 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 msgctxt "@label" msgid "Y max" msgstr "Y max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 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 "Distanza tra il lato posteriore della testina di stampa e il centro dell'ugello. Utilizzata per evitare collisioni tra le stampe precedenti e la testina di stampa durante la stampa \"Uno alla volta\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:233 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 msgctxt "@label" msgid "Gantry height" msgstr "Altezza gantry" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 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:254 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 msgctxt "@label" msgid "Number of Extruders" msgstr "Numero di estrusori" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 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:290 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 msgctxt "@label" msgid "Material diameter" msgstr "Diametro materiale" -#: /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:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 msgctxt "@label" msgid "Nozzle size" msgstr "Dimensione ugello" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 msgctxt "@label" msgid "Start Gcode" msgstr "Avvio GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 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:335 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 msgctxt "@label" msgid "End Gcode" msgstr "Fine GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 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:377 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 msgctxt "@label" msgid "Nozzle Settings" msgstr "Impostazioni ugello" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 msgctxt "@label" msgid "Nozzle offset X" msgstr "Scostamento X ugello" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Scostamento Y ugello" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "Codice G avvio estrusore" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Extruder End Gcode" msgstr "Codice G fine estrusore" @@ -1406,12 +1448,11 @@ 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/PostProcessingPlugin/PostProcessingPlugin.qml:445 #: /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/Preferences/MachinesPage.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 msgctxt "@action:button" msgid "Close" @@ -1463,13 +1504,11 @@ 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" @@ -1478,20 +1517,17 @@ msgid "" 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 #: /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 @@ -1500,220 +1536,221 @@ msgid "Remove" msgstr "Rimuovi" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:194 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 msgctxt "@label" msgid "Type" msgstr "Tipo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 msgctxt "@label" msgid "Address" msgstr "Indirizzo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:286 +msgctxt "@label" +msgid "This printer is not set up to host a group of Ultimaker 3 printers." +msgstr "Questa stampante non è predisposta per comandare un gruppo di stampanti Ultimaker 3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:290 +msgctxt "@label" +msgid "This printer is the host for a group of %1 Ultimaker 3 printers." +msgstr "Questa stampante comanda un gruppo di %1 stampanti Ultimaker 3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:300 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/DiscoverUM3Action.qml:305 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /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:316 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 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:346 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 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:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 +#: /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" +msgid "OK" +msgstr "OK" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Stampa sulla rete" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Stampa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:36 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "%1 non è configurata per supportare la connessione di un gruppo di stampanti Ultimaker 3" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "Apre la pagina processi di stampa con il browser web predefinito." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "Visualizza processi di stampa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 +msgctxt "@label" +msgid "Preparing to print" +msgstr "Preparazione della stampa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 +msgctxt "@label:status" +msgid "Printing" +msgstr "Stampa in corso" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 +msgctxt "@label:status" +msgid "Available" +msgstr "Disponibile" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 +#: /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/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 +msgctxt "@label:status" +msgid "Disabled" +msgstr "Disabilitato" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273 +msgctxt "@label:status" +msgid "Reserved" +msgstr "Riservato" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:275 +msgctxt "@label:status" +msgid "Finished" +msgstr "Terminato" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 +msgctxt "@label:status" +msgid "Paused" +msgstr "In pausa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 +msgctxt "@label:status" +msgid "Resuming" +msgstr "Ripresa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 +msgctxt "@label:status" +msgid "Print aborted" +msgstr "Stampa interrotta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:410 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "Mancata accettazione processi di stampa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 +msgctxt "@label" +msgid "Finishes at: " +msgstr "Finisce alle: " + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 +msgctxt "@label" +msgid "Clear build plate" +msgstr "Cancellare piano di stampa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "In attesa di modifica configurazione" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:64 +msgctxt "@title" +msgid "Print jobs" +msgstr "Processi di stampa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 +msgctxt "@label" +msgid "Printing" +msgstr "Stampa in corso" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 +msgctxt "@label" +msgid "Queued" +msgstr "Coda di stampa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:171 +msgctxt "@label:title" +msgid "Printers" +msgstr "Stampanti" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 +msgctxt "@action:button" +msgid "View printers" +msgstr "Visualizza stampanti" #: /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/DiscoverUM3Action.qml:284 -msgctxt "@label" -msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -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 "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 "Stampa sulla rete" - -#: /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 "%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 "Stampa in corso" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 -msgctxt "@label:status" -msgid "Reserved" -msgstr "Riservato" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 -msgctxt "@label:status" -msgid "Finished" -msgstr "Terminato" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 -msgctxt "@label:status" -msgid "Preparing" -msgstr "Preparazione in corso" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 -msgctxt "@label:status" -msgid "Available" -msgstr "Disponibile" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 -msgctxt "@label" -msgid "Completed on: " -msgstr "Completato su: " - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 -msgctxt "@label" -msgid "Clear build plate" -msgstr "Cancellare piano di stampa" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 -msgctxt "@label" -msgid "Preparing to print" -msgstr "Preparazione della stampa" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 -msgctxt "@label" -msgid "Not accepting print jobs" -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 "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 "Visualizza processi di stampa" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "PRINTER GROUP" -msgstr "GRUPPO STAMPANTI" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 -msgctxt "@title" -msgid "Print jobs" -msgstr "Processi di stampa" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 -msgctxt "@label" -msgid "Printing" -msgstr "Stampa in corso" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 -msgctxt "@label" -msgid "Queued" -msgstr "Coda di stampa" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 -msgctxt "@label" -msgid "Waiting for configuration change" -msgstr "In attesa di modifica configurazione" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 -msgctxt "@label:title" -msgid "Printers" -msgstr "Stampanti" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 -msgctxt "@action:button" -msgid "View printers" -msgstr "Visualizza stampanti" - #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1739,13 +1776,6 @@ msgctxt "@option:curaSolidworksStlQuality" msgid "Always use Coarse quality" msgstr "Utilizza sempre la qualità Grossolana" -#: /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..." @@ -1772,11 +1802,91 @@ msgid "Fine" msgstr "Fine" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 msgctxt "@text:window" msgid "Remember my choice" msgstr "Ricorda la scelta" +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +msgctxt "@label" +msgid "Color scheme" +msgstr "Schema colori" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +msgctxt "@label:listbox" +msgid "Material Color" +msgstr "Colore materiale" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +msgctxt "@label:listbox" +msgid "Line Type" +msgstr "Tipo di linea" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +msgctxt "@label:listbox" +msgid "Feedrate" +msgstr "Velocità" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +msgctxt "@label:listbox" +msgid "Layer thickness" +msgstr "Spessore strato" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +msgctxt "@label" +msgid "Compatibility Mode" +msgstr "Modalità di compatibilità" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +msgctxt "@label" +msgid "Show Travels" +msgstr "Mostra spostamenti" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +msgctxt "@label" +msgid "Show Helpers" +msgstr "Mostra helper" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +msgctxt "@label" +msgid "Show Shell" +msgstr "Mostra guscio" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +msgctxt "@label" +msgid "Show Infill" +msgstr "Mostra riempimento" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +msgctxt "@label" +msgid "Only Show Top Layers" +msgstr "Mostra solo strati superiori" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +msgctxt "@label" +msgid "Show 5 Detailed Layers On Top" +msgstr "Mostra 5 strati superiori in dettaglio" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +msgctxt "@label" +msgid "Top / Bottom" +msgstr "Superiore / Inferiore" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +msgctxt "@label" +msgid "Inner Wall" +msgstr "Parete interna" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +msgctxt "@label" +msgid "min" +msgstr "min." + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +msgctxt "@label" +msgid "max" +msgstr "max." + #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 msgctxt "@title:window" msgid "Post Processing Plugin" @@ -1787,81 +1897,21 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Script di post-elaborazione" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:218 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:217 msgctxt "@action" msgid "Add a script" msgstr "Aggiungi uno script" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:264 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:263 msgctxt "@label" msgid "Settings" msgstr "Impostazioni" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Modifica script di post-elaborazione attivi" -#: /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:91 -msgctxt "@label:listbox" -msgid "Material Color" -msgstr "Colore materiale" - -#: /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:135 -msgctxt "@label" -msgid "Compatibility Mode" -msgstr "Modalità di compatibilità" - -#: /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:222 -msgctxt "@label" -msgid "Show Helpers" -msgstr "Mostra helper" - -#: /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:234 -msgctxt "@label" -msgid "Show Infill" -msgstr "Mostra riempimento" - -#: /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: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:303 -msgctxt "@label" -msgid "Top / Bottom" -msgstr "Superiore / Inferiore" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 -msgctxt "@label" -msgid "Inner Wall" -msgstr "Parete interna" - #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" msgid "Convert Image..." @@ -1953,129 +2003,129 @@ msgctxt "@label:checkbox" msgid "Show all" msgstr "Mostra tutto" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:13 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Apri progetto" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 msgctxt "@action:ComboBox option" msgid "Update existing" msgstr "Aggiorna esistente" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:55 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 msgctxt "@action:ComboBox option" msgid "Create new" msgstr "Crea nuovo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:70 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Riepilogo - Progetto Cura" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:88 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:88 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 msgctxt "@action:label" msgid "Printer settings" msgstr "Impostazioni della stampante" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 msgctxt "@info:tooltip" msgid "How should the conflict in the machine be resolved?" msgstr "Come può essere risolto il conflitto nella macchina?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:124 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:97 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 msgctxt "@action:label" msgid "Type" msgstr "Tipo" -#: /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 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:144 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:201 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:293 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:190 msgctxt "@action:label" msgid "Name" msgstr "Nome" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:161 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:164 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:166 msgctxt "@action:label" msgid "Profile settings" msgstr "Impostazioni profilo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 msgctxt "@info:tooltip" msgid "How should the conflict in the profile be resolved?" msgstr "Come può essere risolto il conflitto nel profilo?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:212 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 msgctxt "@action:label" msgid "Not in profile" msgstr "Non nel profilo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:217 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 override" msgstr[1] "%1 override" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:232 msgctxt "@action:label" msgid "Derivative from" msgstr "Derivato da" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:233 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:237 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 override" msgstr[1] "%1, %2 override" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:249 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:253 msgctxt "@action:label" msgid "Material settings" msgstr "Impostazioni materiale" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:265 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Come può essere risolto il conflitto nel materiale?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:207 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 msgctxt "@action:label" msgid "Setting visibility" msgstr "Impostazione visibilità" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:317 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:321 msgctxt "@action:label" msgid "Mode" msgstr "Modalità" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:332 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:216 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:218 msgctxt "@action:label" msgid "Visible settings:" msgstr "Impostazioni visibili:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:223 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 su %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:363 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368 msgctxt "@action:warning" -msgid "Loading a project will clear all models on the buildplate" -msgstr "Il caricamento di un modello annulla tutti i modelli sul piano di stampa" +msgid "Loading a project will clear all models on the build plate." +msgstr "Il caricamento di un progetto annulla tutti i modelli sul piano di stampa." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:381 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 msgctxt "@action:button" msgid "Open" msgstr "Apri" @@ -2100,6 +2150,11 @@ msgctxt "@action:button" msgid "Installed" msgstr "Installa" +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Download" + #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" @@ -2108,10 +2163,10 @@ msgstr "Accordo di licenza plugin" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" msgid "" -" plugin contains a license.\n" +"This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr " I plugin contengono una licenza.\nÈ necessario accettare questa licenza per poter installare il plugin.\nAccetti i termini sotto riportati?" +msgstr "Questo plugin contiene 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" @@ -2123,6 +2178,11 @@ msgctxt "@action:button" msgid "Decline" msgstr "Non accetto" +#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 +msgctxt "@title:window" +msgid "User Agreement" +msgstr "Contratto di licenza" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 msgctxt "@title" @@ -2308,30 +2368,25 @@ msgid "Printer does not accept commands" msgstr "La stampante non accetta comandi" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "In manutenzione. Controllare la stampante" -#: /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:103 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Stampa in corso..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "In pausa" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Preparazione in corso..." @@ -2547,7 +2602,7 @@ msgid "Unit" msgstr "Unità" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "General" msgstr "Generale" @@ -2778,7 +2833,7 @@ 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:441 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 msgctxt "@title:tab" msgid "Printers" msgstr "Stampanti" @@ -2796,39 +2851,39 @@ msgctxt "@action:button" msgid "Rename" msgstr "Rinomina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 msgctxt "@label" msgid "Printer type:" msgstr "Tipo di stampante:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:158 msgctxt "@label" msgid "Connection:" msgstr "Collegamento:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:166 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:164 #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 msgctxt "@info:status" msgid "The printer is not connected." msgstr "La stampante non è collegata." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:170 msgctxt "@label" msgid "State:" msgstr "Stato:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Waiting for someone to clear the build plate" msgstr "In attesa di qualcuno che cancelli il piano di stampa" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 msgctxt "@label:MonitorStatus" 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:445 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 msgctxt "@title:tab" msgid "Profiles" msgstr "Profili" @@ -2926,7 +2981,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:443 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 msgctxt "@title:tab" msgid "Materials" msgstr "Materiali" @@ -2984,7 +3039,7 @@ msgid "Successfully exported material to %1" msgstr "Materiale esportato correttamente su %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 msgctxt "@title:window" msgid "Add Printer" msgstr "Aggiungi stampante" @@ -3004,6 +3059,11 @@ msgctxt "@title:window" msgid "About Cura" msgstr "Informazioni su Cura" +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43 +msgctxt "@label" +msgid "version: %1" +msgstr "versione: %1" + #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." @@ -3096,12 +3156,17 @@ msgctxt "@label" msgid "Polygon clipping library" msgstr "Libreria ritaglio poligono" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Libreria Python HTTP" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 msgctxt "@label" msgid "Font" msgstr "Font" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 msgctxt "@label" msgid "SVG icons" msgstr "Icone SVG" @@ -3111,7 +3176,12 @@ msgctxt "@label" msgid "Profile:" msgstr "Profilo:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 +msgctxt "@" +msgid "No Profile Available" +msgstr "Nessun profilo disponibile" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3119,32 +3189,32 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 msgctxt "@label:textbox" msgid "Search..." msgstr "Ricerca..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 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:491 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Nascondi questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Nascondi questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Mantieni visibile questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Configurazione visibilità delle impostazioni in corso..." @@ -3193,54 +3263,71 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Impostazione di stampa" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 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" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00h 00min" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 msgctxt "@tooltip" -msgid "Time information" -msgstr "Informazioni su tempo" +msgid "Time specification
    " +msgstr "Indicazione del tempo
    " -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 -msgctxt "@description" -msgid "Print time" -msgstr "Tempo di stampa" - -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 msgctxt "@label" +msgid "Cost specification" +msgstr "Indicazione di costo" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1m" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +msgctxt "@label" +msgid "Total:" +msgstr "Totale:" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1m / ~ %2g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1m / ~ %2g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 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:481 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 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." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Automatico: %1" @@ -3250,7 +3337,7 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&Visualizza" -#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" msgstr "Automatico: %1" @@ -3279,13 +3366,13 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Ap&ri recenti" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 msgctxt "@info:status" 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 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 msgctxt "@label" msgid "Extruder" msgstr "Estrusore" @@ -3300,309 +3387,349 @@ msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "La temperatura corrente di questo estrusore." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:188 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:219 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Il materiale di questo estrusore." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "L’ugello inserito in questo estrusore." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 msgctxt "@label" msgid "Build plate" msgstr "Piano di stampa" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 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:343 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:344 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:422 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 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:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Annulla" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button" msgid "Pre-heat" msgstr "Pre-riscaldo" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 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:677 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:703 +msgctxt "@label" +msgid "Printer control" +msgstr "Comando stampante" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 +msgctxt "@label" +msgid "Jog Position" +msgstr "Posizione Jog" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735 +msgctxt "@label" +msgid "X/Y" +msgstr "X/Y" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842 +msgctxt "@label" +msgid "Z" +msgstr "Z" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 +msgctxt "@label" +msgid "Jog Distance" +msgstr "Distanza Jog" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018 msgctxt "@label" msgid "Active print" msgstr "Stampa attiva" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 msgctxt "@label" msgid "Job Name" msgstr "Nome del processo" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 msgctxt "@label" msgid "Printing Time" msgstr "Tempo di stampa" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1035 msgctxt "@label" msgid "Estimated time left" msgstr "Tempo residuo stimato" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Att&iva/disattiva schermo intero" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Annulla" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "Ri&peti" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "E&sci" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +msgctxt "@action:inmenu menubar:view" +msgid "&Reset camera position" +msgstr "&Ripristina la posizione della telecamera" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Configura Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "A&ggiungi stampante..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:115 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "&Gestione stampanti..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Gestione materiali..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&Aggiorna il profilo con le impostazioni/esclusioni correnti" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Elimina le modifiche correnti" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Crea profilo dalle impostazioni/esclusioni correnti..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Gestione profili..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Mostra documentazione &online" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:171 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Se&gnala un errore" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "I&nformazioni..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 msgctxt "@action:inmenu menubar:edit" msgid "Delete &Selected Model" msgid_plural "Delete &Selected Models" msgstr[0] "Cancella &modello selezionato" msgstr[1] "Cancella modelli &selezionati" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Centra modello selezionato" msgstr[1] "Centra modelli selezionati" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Moltiplica modello selezionato" msgstr[1] "Moltiplica modelli selezionati" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Elimina modello" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:222 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "C&entra modello su piattaforma" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:228 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "&Raggruppa modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Separa modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "&Unisci modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "Mo<iplica modello" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:265 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "Sel&eziona tutti i modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "&Cancellare piano di stampa" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "R&icarica tutti i modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Sistema tutti i modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Sistema selezione" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Reimposta tutte le posizioni dei modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "Reimposta tutte le &trasformazioni dei modelli" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Apri file..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Nuovo Progetto..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "M&ostra log motore..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:346 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Mostra cartella di configurazione" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configura visibilità delle impostazioni..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +msgctxt "@action:menu" +msgid "Browse plugins..." +msgstr "Sfoglia plugin..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +msgctxt "@action:menu" +msgid "Installed plugins..." +msgstr "Plugin installati..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Caricare un modello 3D" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Pronto per il sezionamento" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Sezionamento in corso..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Pronto a %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Sezionamento impossibile" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Sezionamento non disponibile" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Prepara" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Annulla" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 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:593 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 msgctxt "@title:window" msgid "Open file(s)" msgstr "Apri file" @@ -3619,112 +3746,117 @@ msgstr "Importa tutto come modelli" #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 msgctxt "@title:window" -msgid "Cura" -msgstr "Cura" +msgid "Ultimaker Cura" +msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&File" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "&Salva selezione su file" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "Salva &come..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 msgctxt "@title:menu menubar:file" msgid "Save project" msgstr "Salva progetto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&Modifica" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 msgctxt "@title:menu" msgid "&View" msgstr "&Visualizza" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:167 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 msgctxt "@title:menu" msgid "&Settings" msgstr "&Impostazioni" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "S&tampante" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 msgctxt "@title:menu" msgid "&Material" msgstr "Ma&teriale" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 msgctxt "@title:menu" msgid "&Profile" msgstr "&Profilo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Imposta come estrusore attivo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:202 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "Es&tensioni" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +msgctxt "@title:menu menubar:toplevel" +msgid "P&lugins" +msgstr "&Plugin" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "P&referenze" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Help" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 msgctxt "@action:button" msgid "Open File" msgstr "Apri file" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 msgctxt "@title:tab" msgid "Settings" msgstr "Impostazioni" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 msgctxt "@title:window" msgid "New project" msgstr "Nuovo progetto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 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:694 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 msgctxt "@window:title" msgid "Install Plugin" msgstr "Installa plugin" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 msgctxt "@title:window" msgid "Open File(s)" msgstr "Apri file" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 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. " @@ -3734,102 +3866,112 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Salva progetto" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 msgctxt "@action:label" msgid "Extruder %1" msgstr "Estrusore %1" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & materiale" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:242 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/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 msgctxt "@action:button" msgid "Save" msgstr "Salva" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 msgctxt "@title:tab" msgid "Prepare" msgstr "Prepara" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 msgctxt "@title:tab" msgid "Monitor" msgstr "Controlla" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 msgctxt "@label" msgid "Layer Height" msgstr "Altezza dello strato" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +msgctxt "@tooltip" +msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +msgstr "Un profilo personalizzato è attualmente attivo. Per attivare il cursore qualità, selezionare un profilo di qualità predefinito nella scheda Personalizza" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 msgctxt "@label" msgid "Print Speed" msgstr "Velocità di stampa" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 msgctxt "@label" msgid "Slower" msgstr "Più lenta" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 msgctxt "@label" msgid "Faster" msgstr "Più veloce" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "Sono state modificate alcune impostazioni del profilo. Per modificarle, andare alla modalità personalizzata." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 msgctxt "@label" msgid "Infill" msgstr "Riempimento" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 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:602 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 msgctxt "@label" msgid "Enable gradual" msgstr "Consenti variazione graduale" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 msgctxt "@label" msgid "Generate Support" msgstr "Generazione supporto" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 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:718 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 msgctxt "@label" msgid "Support Extruder" msgstr "Estrusore del supporto" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 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:796 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Adesione piano di stampa" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 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:883 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 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" @@ -3846,17 +3988,17 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Apri file progetto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 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 "Questo è un file progetto Cura. Vuoi aprirlo come progetto o importarne i modelli?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:95 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@action:button" msgid "Open as project" msgstr "Apri come progetto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Import models" msgstr "Importa i modelli" @@ -3866,17 +4008,17 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Log motore" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 msgctxt "@label" msgid "Material" msgstr "Materiale" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 msgctxt "@label" -msgid "Check material compatibility" -msgstr "Controllo compatibilità materiale" +msgid "Check compatibility" +msgstr "Controllo compatibilità" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Fai clic per verificare la compatibilità del materiale su Ultimaker.com." @@ -3991,11 +4133,6 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Connessione di rete UM3" -#: CuraPrintClusterUpload/plugin.json -msgctxt "name" -msgid "UM3 Network Connection (Cluster)" -msgstr "Connessione di rete UM3 (Cluster)" - #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4016,6 +4153,16 @@ msgctxt "name" msgid "SolidWorks Integration" msgstr "Integrazione SolidWorks" +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Fornisce la vista di simulazione." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Vista simulazione" + #: PostProcessingPlugin/plugin.json msgctxt "description" msgid "Extension that allows for user created scripts for post processing" @@ -4076,16 +4223,6 @@ msgctxt "name" msgid "GCode Profile Reader" msgstr "Lettore profilo GCode" -#: LayerView/plugin.json -msgctxt "description" -msgid "Provides the Layer view." -msgstr "Fornisce la visualizzazione degli strati." - -#: LayerView/plugin.json -msgctxt "name" -msgid "Layer View" -msgstr "Visualizzazione strato" - #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4106,6 +4243,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Aggiornamento della versione da 2.7 a 3.0" +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." +msgstr "Aggiorna le configurazioni da Cura 3.0 a Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.0 to 3.1" +msgstr "Aggiornamento della versione da 3.0 a 3.1" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4166,6 +4313,16 @@ msgctxt "name" msgid "Per Model Settings Tool" msgstr "Utilità impostazioni per modello" +#: cura-siemensnx-plugin/plugin.json +msgctxt "description" +msgid "Helps you to install an 'export to Cura' button in Siemens NX." +msgstr "Consente di installare un pulsante 'Esporta in Cura' in Siemens NX." + +#: cura-siemensnx-plugin/plugin.json +msgctxt "name" +msgid "Siemens NX Integration" +msgstr "Integrazione Siemens NX" + #: 3MFReader/plugin.json msgctxt "description" msgid "Provides support for reading 3MF files." @@ -4226,6 +4383,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "Writer 3MF" +#: UserAgreementPlugin/plugin.json +msgctxt "description" +msgid "Ask the user once if he/she agrees with our license" +msgstr "Chiedere una volta all'utente se accetta la nostra licenza" + +#: UserAgreementPlugin/plugin.json +msgctxt "name" +msgid "UserAgreement" +msgstr "Contratto di licenza" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" @@ -4246,6 +4413,138 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Lettore profilo Cura" +#~ msgctxt "@label:status" +#~ msgid "Blocked" +#~ msgstr "Ostacolato" + +#~ msgctxt "@label:status" +#~ msgid "Can't start print" +#~ msgstr "Impossibile avviare la stampa" + +#~ msgctxt "@action:button" +#~ msgid "Open Connect.." +#~ msgstr "Apri Connect.." + +#~ msgctxt "@info:title" +#~ msgid "Print Details" +#~ msgstr "Dettagli stampa" + +#~ 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 "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." + +msgctxt "@item:inlistbox" +msgid "Layer view" +msgstr "Visualizzazione strato" + +msgctxt "@info:title" +msgid "Layer View" +msgstr "Visualizzazione strato" + +#~ msgctxt "@menuitem" +#~ msgid "Browse plugins" +#~ msgstr "Sfoglia plugin" + +#~ msgctxt "@info:title" +#~ msgid "Export Details" +#~ msgstr "Dettagli esportazione" + +#~ 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 "" +#~ "

    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" +#~ " " + +#~ msgctxt "@action:button" +#~ msgid "Open Web Page" +#~ msgstr "Apri pagina Web" + +#~ msgctxt "@action:button" +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgctxt "@label" +#~ msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +#~ msgstr "Questa stampante non è configurata per supportare la connessione di un gruppo di stampanti Ultimaker 3" + +#~ msgctxt "@label" +#~ msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +#~ msgstr "Questa stampante fa da host per un gruppo di %1 stampanti Ultimaker 3 connesse" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Preparazione in corso" + +#~ msgctxt "@label" +#~ msgid "Completed on: " +#~ msgstr "Completato su: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Opens the print jobs page with your default web browser." +#~ msgstr "Apre la pagina processi di stampa con il browser web predefinito." + +#~ msgctxt "@label" +#~ msgid "PRINTER GROUP" +#~ msgstr "GRUPPO STAMPANTI" + +#~ msgctxt "@action:warning" +#~ msgid "Loading a project will clear all models on the buildplate" +#~ msgstr "Il caricamento di un modello annulla tutti i modelli sul piano di stampa" + +#~ 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 "" +#~ " I plugin contengono una licenza.\n" +#~ "È necessario accettare questa licenza per poter installare il plugin.\n" +#~ "Accetti i termini sotto riportati?" + +#~ msgctxt "@label" +#~ msgid "00h 00min" +#~ msgstr "00h 00min" + +#~ msgctxt "@tooltip" +#~ msgid "Time information" +#~ msgstr "Informazioni su tempo" + +#~ msgctxt "@description" +#~ msgid "Print time" +#~ msgstr "Tempo di stampa" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g / ~ %4 %3" +#~ msgstr "%1m / ~ %2g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g" +#~ msgstr "%1m / ~ %2g" + +#~ msgctxt "@title:window" +#~ msgid "Cura" +#~ msgstr "Cura" + +#~ msgctxt "@label" +#~ msgid "Check material compatibility" +#~ msgstr "Controllo compatibilità materiale" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection (Cluster)" +#~ msgstr "Connessione di rete UM3 (Cluster)" + +#~ msgctxt "description" +#~ msgid "Provides the Layer view." +#~ msgstr "Fornisce la visualizzazione degli strati." + +msgctxt "name" +msgid "Layer View" +msgstr "Visualizzazione strato" + #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" #~ msgstr "Raggi X" @@ -4565,9 +4864,9 @@ msgstr "Lettore profilo Cura" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "Fornisce supporto per l'importazione di profili da file G-Code." -#~ msgctxt "@label" -#~ msgid "Layer View" -#~ msgstr "Visualizzazione strato" +msgctxt "@label" +msgid "Layer View" +msgstr "Visualizzazione strato" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." diff --git a/resources/i18n/it_IT/fdmextruder.def.json.po b/resources/i18n/it_IT/fdmextruder.def.json.po index 75d0d77472..ec3c8051cf 100644 --- a/resources/i18n/it_IT/fdmextruder.def.json.po +++ b/resources/i18n/it_IT/fdmextruder.def.json.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: Italian\n" "Language: it_IT\n" diff --git a/resources/i18n/it_IT/fdmprinter.def.json.po b/resources/i18n/it_IT/fdmprinter.def.json.po index d618ecfeac..5fb7743130 100644 --- a/resources/i18n/it_IT/fdmprinter.def.json.po +++ b/resources/i18n/it_IT/fdmprinter.def.json.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -605,6 +605,31 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "Indica l’altezza dello strato iniziale in mm. Uno strato iniziale più spesso facilita l’adesione al piano di stampa." +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Tolleranza di sezionamento" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Modalità di sezionamento di strati con superfici diagonali. Le aree di uno strato possono essere generate in base al punto in cui la parte intermedia dello strato interseca la superficie (intermedia). In alternativa le aree di ciascuno strato possono ricadere all'interno del volume per tutta l'altezza dello strato (Esclusiva) ovvero possono cadere in qualsiasi punto all'interno dello strato (Inclusiva). La tolleranza esclusiva mantiene il maggior numero di dettagli, la tolleranza inclusiva è la più idonea, mentre la tolleranza intermedia richiede il minor tempo di processo." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Intermedia" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Esclusiva" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Inclusiva" + #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -755,6 +780,16 @@ 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" @@ -767,7 +802,7 @@ msgstr "Treno estrusore utilizzato per stampare la parete esterna. Si utilizza n #: fdmprinter.def.json msgctxt "wall_x_extruder_nr label" -msgid "Inner Walls Extruder" +msgid "Inner Wall Extruder" msgstr "Estrusore parete interna" #: fdmprinter.def.json @@ -1200,6 +1235,106 @@ 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 "ironing_enabled label" +msgid "Enable Ironing" +msgstr "Abilita stiratura" + +#: fdmprinter.def.json +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 "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 "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" +msgid "Ironing Pattern" +msgstr "Configurazione di stiratura" + +#: fdmprinter.def.json +msgctxt "ironing_pattern description" +msgid "The pattern to use for ironing top surfaces." +msgstr "Configurazione utilizzata per la stiratura della superficie superiore." + +#: fdmprinter.def.json +msgctxt "ironing_pattern option concentric" +msgid "Concentric" +msgstr "Concentrica" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Zig Zag" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing label" +msgid "Ironing Line Spacing" +msgstr "Spaziatura delle linee di stiratura" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing description" +msgid "The distance between the lines of ironing." +msgstr "Distanza tra le linee di stiratura." + +#: fdmprinter.def.json +msgctxt "ironing_flow label" +msgid "Ironing Flow" +msgstr "Flusso di stiratura" + +#: fdmprinter.def.json +msgctxt "ironing_flow description" +msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." +msgstr "Quantità di materiale, relativo ad una normale linea del rivestimento, da estrudere durante la stiratura. Mantenere l'ugello pieno aiuta a riempire alcune delle fessure presenti sulla superficie superiore, ma una quantità eccessiva comporta un'estrusione eccessiva con conseguente puntinatura sui lati della superficie." + +#: fdmprinter.def.json +msgctxt "ironing_inset label" +msgid "Ironing Inset" +msgstr "Inserto di stiratura" + +#: fdmprinter.def.json +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 "infill label" msgid "Infill" @@ -1247,8 +1382,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, 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 "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." +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, tri-hexagon, cubic, octet, quarter cubic, cross 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 "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, a triangolo, tri-esagonali, cubiche, ottagonali, a quarto di cubo, incrociate e concentriche sono stampate completamente su ogni strato. Le configurazioni cubiche, a quarto di cubo e ottagonali variano per ciascuno strato per garantire una più uniforme distribuzione della forza in ogni direzione." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1265,6 +1400,11 @@ msgctxt "infill_pattern option triangles" msgid "Triangles" msgstr "Triangoli" +#: fdmprinter.def.json +msgctxt "infill_pattern option trihexagon" +msgid "Tri-Hexagon" +msgstr "Tri-esagonale" + #: fdmprinter.def.json msgctxt "infill_pattern option cubic" msgid "Cubic" @@ -1317,8 +1457,8 @@ 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 "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." +msgid "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." +msgstr "Collegare le estremità nel punto in cui il riempimento incontra la parete interna utilizzando una linea che segue la forma della parete interna. L'abilitazione di questa impostazione può far meglio aderire il riempimento alle pareti riducendo nel contempo gli effetti del riempimento sulla qualità delle superfici verticali. La disabilitazione di questa impostazione consente di ridurre la quantità di materiale utilizzato." #: fdmprinter.def.json msgctxt "infill_angles label" @@ -1330,6 +1470,26 @@ msgctxt "infill_angles description" msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns)." msgstr "Un elenco di direzioni linee intere. Gli elementi dall’elenco sono utilizzati in sequenza con il progredire degli strati e, al raggiungimento della fine dell’elenco, la sequenza ricomincia dall’inizio. Le voci elencate sono separate da virgole e l’intero elenco è racchiuso tra parentesi quadre. L’elenco predefinito è vuoto, vale a dire che utilizza i valori angolari predefiniti (45 e 135 gradi per le linee e la configurazione zig zag e 45 gradi per tutte le altre configurazioni)." +#: fdmprinter.def.json +msgctxt "infill_offset_x label" +msgid "Infill X Offset" +msgstr "Offset X riempimento" + +#: fdmprinter.def.json +msgctxt "infill_offset_x description" +msgid "The infill pattern is offset this distance along the X axis." +msgstr "Il riempimento si scosta di questa distanza lungo l'asse X." + +#: fdmprinter.def.json +msgctxt "infill_offset_y label" +msgid "Infill Y Offset" +msgstr "Offset Y riempimento" + +#: fdmprinter.def.json +msgctxt "infill_offset_y description" +msgid "The infill pattern is offset this distance along the Y axis." +msgstr "Il riempimento si scosta di questa distanza lungo l'asse Y." + #: fdmprinter.def.json msgctxt "sub_div_rad_add label" msgid "Cubic Subdivision Shell" @@ -1640,6 +1800,26 @@ msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Regolare il diametro del filamento utilizzato. Abbinare questo valore al diametro del filamento utilizzato." +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency label" +msgid "Adhesion Tendency" +msgstr "Tendenza di adesione" + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency description" +msgid "Surface adhesion tendency." +msgstr "Tendenza di adesione superficiale." + +#: fdmprinter.def.json +msgctxt "material_surface_energy label" +msgid "Surface Energy" +msgstr "Energia superficiale" + +#: fdmprinter.def.json +msgctxt "material_surface_energy description" +msgid "Surface energy." +msgstr "Energia superficiale." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -2830,36 +3010,6 @@ msgctxt "support_connect_zigzags description" msgid "Connect the ZigZags. This will increase the strength of the zig zag support structure." msgstr "Collega i ZigZag. Questo aumenta la forza della struttura di supporto a zig zag." -#: fdmprinter.def.json -msgctxt "support_skip_some_zags label" -msgid "Break Up Support In Chunks" -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 "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 "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 "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 "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 "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" msgid "Support Density" @@ -3399,8 +3549,8 @@ msgstr "Distanza dello skirt" 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." +"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." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3442,26 +3592,6 @@ 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 "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 "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 "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 "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" msgid "Raft Extra Margin" @@ -3479,7 +3609,7 @@ 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." +msgid "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." 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 @@ -3952,6 +4082,16 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Di norma Cura cerca di \"ricucire\" piccoli fori nella maglia e di rimuovere le parti di uno strato che presentano grossi fori. Abilitando questa opzione, Cura mantiene quelle parti che non possono essere 'ricucite'. Questa opzione deve essere utilizzata come ultima risorsa quando non sia stato possibile produrre un corretto GCode in nessun altro modo." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Risoluzione massima" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "La dimensione minima di un segmento di linea dopo il sezionamento. Se tale dimensione aumenta, la maglia avrà una risoluzione inferiore. Questo può consentire alla stampante di mantenere la velocità per processare il g-code ed aumenterà la velocità di sezionamento eliminando i dettagli della maglia che non è comunque in grado di processare." + #: fdmprinter.def.json msgctxt "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -3982,6 +4122,16 @@ msgctxt "alternate_carve_order description" msgid "Switch to which mesh intersecting volumes will belong with every layer, so that the overlapping meshes become interwoven. Turning this setting off will cause one of the meshes to obtain all of the volume in the overlap, while it is removed from the other meshes." msgstr "Selezionare quali volumi di intersezione maglie appartengono a ciascuno strato, in modo che le maglie sovrapposte diventino interconnesse. Disattivando questa funzione una delle maglie ottiene tutto il volume della sovrapposizione, che viene rimosso dalle altre maglie." +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers label" +msgid "Remove Empty First Layers" +msgstr "Rimuovere i primi strati vuoti" + +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers description" +msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." +msgstr "Rimuovere gli strati vuoti sotto il primo strato stampato, se presenti. La disabilitazione di questa impostazione può provocare la presenza di primi strati vuoti, se l'impostazione di Tolleranza di sezionamento è impostata su Esclusiva o Intermedia." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4187,6 +4337,36 @@ 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 "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 "support_skip_some_zags label" +msgid "Break Up Support In Chunks" +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 "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 "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 "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 "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 "Salto di una ogni N linee di collegamento per rendere la struttura del supporto più facile da rompere." + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4477,6 +4657,26 @@ msgctxt "magic_fuzzy_skin_point_dist description" msgid "The average distance between the random points introduced on each line segment. Note that the original points of the polygon are discarded, so a high smoothness results in a reduction of the resolution. This value must be higher than half the Fuzzy Skin Thickness." msgstr "Indica la distanza media tra i punti casuali introdotti su ciascun segmento di linea. Si noti che i punti originali del poligono vengono scartati, perciò un elevato livello di regolarità si traduce in una riduzione della risoluzione. Questo valore deve essere superiore alla metà dello spessore del rivestimento incoerente (fuzzy)." +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset label" +msgid "Flow rate compensation max extrusion offset" +msgstr "Offset massimo dell'estrusione di compensazione del flusso" + +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset description" +msgid "The maximum distance in mm to compensate." +msgstr "La massima distanza in mm da compensare." + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor label" +msgid "Flow rate compensation factor" +msgstr "Fattore di compensazione del flusso" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor description" +msgid "The multiplication factor for the flow rate -> distance translation." +msgstr "Il fattore di moltiplicazione per il flusso -> traslazione distanza." + #: fdmprinter.def.json msgctxt "wireframe_enabled label" msgid "Wire Printing" @@ -4734,106 +4934,6 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Indica la distanza tra l'ugello e le linee diagonali verso il basso. Un maggior gioco risulta in linee diagonali verso il basso con un minor angolo di inclinazione, cosa che a sua volta si traduce in meno collegamenti verso l'alto con lo strato successivo. Applicabile solo alla funzione Wire Printing." -#: fdmprinter.def.json -msgctxt "ironing_enabled label" -msgid "Enable Ironing" -msgstr "Abilita stiratura" - -#: fdmprinter.def.json -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 "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 "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" -msgid "Ironing Pattern" -msgstr "Configurazione di stiratura" - -#: fdmprinter.def.json -msgctxt "ironing_pattern description" -msgid "The pattern to use for ironing top surfaces." -msgstr "Configurazione utilizzata per la stiratura della superficie superiore." - -#: fdmprinter.def.json -msgctxt "ironing_pattern option concentric" -msgid "Concentric" -msgstr "Concentrica" - -#: fdmprinter.def.json -msgctxt "ironing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Zig Zag" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing label" -msgid "Ironing Line Spacing" -msgstr "Spaziatura delle linee di stiratura" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing description" -msgid "The distance between the lines of ironing." -msgstr "Distanza tra le linee di stiratura." - -#: fdmprinter.def.json -msgctxt "ironing_flow label" -msgid "Ironing Flow" -msgstr "Flusso di stiratura" - -#: fdmprinter.def.json -msgctxt "ironing_flow description" -msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." -msgstr "Quantità di materiale, relativo ad una normale linea del rivestimento, da estrudere durante la stiratura. Mantenere l'ugello pieno aiuta a riempire alcune delle fessure presenti sulla superficie superiore, ma una quantità eccessiva comporta un'estrusione eccessiva con conseguente puntinatura sui lati della superficie." - -#: fdmprinter.def.json -msgctxt "ironing_inset label" -msgid "Ironing Inset" -msgstr "Inserto di stiratura" - -#: fdmprinter.def.json -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" @@ -4894,13 +4994,45 @@ 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_x_extruder_nr label" +#~ msgid "Inner Walls Extruder" +#~ msgstr "Estrusore parete interna" -#~ 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, 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 "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." + +#~ 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 "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." + +#~ 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." + +#~ msgctxt "z_offset_layer_0 label" +#~ msgid "Initial Layer Z Offset" +#~ msgstr "Scostamento Z strato iniziale" + +#~ 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 "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." + +#~ msgctxt "z_offset_taper_layers label" +#~ msgid "Z Offset Taper Layers" +#~ msgstr "Scostamento Z strati di rastremazione" + +#~ 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 "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." + +#~ 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 "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." #~ 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." @@ -5116,4 +5248,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 new file mode 100644 index 0000000000..01b39b3229 --- /dev/null +++ b/resources/i18n/ja_JP/cura.po @@ -0,0 +1,4555 @@ +# 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 3.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-21 16:58+0100\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" +"Last-Translator: \n" +"Language-Team: TEAM\n" +"Language: xx_XX\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 1.8.7.1\n" + +#: /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 view" +msgstr "透視ビューイング" + +#: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 +msgctxt "@item:inlistbox" +msgid "X3D File" +msgstr "X3Dファイル" + +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/__init__.py:16 +msgctxt "@item:inlistbox" +msgid "GCode File" +msgstr "GCodeファイル" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 +msgctxt "@action:button" +msgid "Print with Doodle3D WiFi-Box" +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 "Doodle3D WiFi-Boxでプリント" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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:376 +#: /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:253 +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 "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 "Doodle3D Connectにデータを送れませんでした。他のジョブはまだアクティブですか?" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +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 "Doodle3D Connectにファイル送信完了" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect..." +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 "Doodle3D Connect web interfaceを開く" + +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +msgctxt "@item:inmenu" +msgid "Show Changelog" +msgstr "Changelogの表示" + +#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:20 +#, fuzzy +msgctxt "@item:inmenu" +msgid "Flatten active settings" +msgstr "アクティブ設定を平らにします。" + +#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:32 +#, fuzzy +msgctxt "@info:status" +msgid "Profile has been flattened & activated." +msgstr "プロファイルが平らになり、アクティベートされました。" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 +msgctxt "@item:inmenu" +msgid "USB printing" +msgstr "USBプリンティング" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print via USB" +msgstr "USBを使ってプリントする" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +msgctxt "@info:tooltip" +msgid "Print via USB" +msgstr "USBを使ってプリントする" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +msgctxt "@info:status" +msgid "Connected via USB" +msgstr "USBにて接続する" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +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:154 +msgctxt "@info:title" +msgid "Printer Unavailable" +msgstr "プリンターが利用できません" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +msgctxt "@info:status" +msgid "This printer does not support USB printing because it uses UltiGCode flavor." +msgstr "UltiGCodeを使用中のため、USBからのプリントができません。" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "USBプリント" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +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:461 +#: /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:945 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +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." +msgstr "プリンターが未接続のため、ファームウェアをアップデートできません。" + +#: /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 "プリンター(%s)に必要なファームウェアを探せませんでした。" + +#: /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'." +msgid "Save to Removable Drive" +msgstr "リムーバブルドライブに保存" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:24 +#, python-brace-format +msgctxt "@item:inlistbox" +msgid "Save to Removable Drive {0}" +msgstr "リムーバブルドライブ{0}に保存" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +#, python-brace-format +msgctxt "@info:progress Don't translate the XML tags !" +msgid "Saving to Removable Drive {0}" +msgstr "リムーバブルドライブ{0}に保存中" + +#: /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 Don't translate the XML tags or !" +msgid "Could not save to {0}: {1}" +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 "デバイス{device}に書き出すためのファイル名が見つかりませんでした。" + +#: /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:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +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: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." +msgstr "{0}取り出し失敗。他のプログラムがデバイスを使用しているため。" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/WindowsRemovableDrivePlugin.py:68 +msgctxt "@item:intext" +msgid "Removable Drive" +msgstr "リムーバブルドライブ" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "ネットワーク上のプリント" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "ネットワークのプリント" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +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:159 +msgctxt "@info:title" +msgid "Connection status" +msgstr "コネクションのステータス" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +msgctxt "@info:status" +msgid "" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:479 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:502 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "コネクションステータス" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +msgctxt "@action:button" +msgid "Retry" +msgstr "再試行" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +msgctxt "@info:tooltip" +msgid "Re-send the access request" +msgstr "アクセスリクエストを再送信" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +msgctxt "@info:status" +msgid "Access to the printer accepted" +msgstr "プリンターへのアクセスが承認されました。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +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:165 +#: /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 "アクセスのリクエスト" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 +#: /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 "アクセスのリクエスト送信" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:385 +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:392 +msgctxt "@info:status" +msgid "Connected over the network." +msgstr "ネットワーク上で接続" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:405 +msgctxt "@info:status" +msgid "Connected over the network. No access to control the printer." +msgstr "ネットワーク上で接続。プリントを操作するアクセス権がありません。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 +msgctxt "@info:status" +msgid "Access request was denied on the printer." +msgstr "プリンターへのアクセス権" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 +msgctxt "@info:status" +msgid "Access request failed due to a timeout." +msgstr "時間制限によりアクセスが却下されました。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 +msgctxt "@info:status" +msgid "The connection with the network was lost." +msgstr "ネットワークへの接続が切断されました。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 +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:666 +#, 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:667 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "プリンターのステータス" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#, 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:699 +#, 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:709 +#, python-brace-format +msgctxt "@label" +msgid "Not enough material for spool {0}." +msgstr "フィラメント{0}の残量が足りません。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#, python-brace-format +msgctxt "@label" +msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" +msgstr "異なるプリントコアが入っています(Cura:{0}, プリンター{1})エクストルーダー{2}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#, 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:741 +#, 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:746 +msgctxt "@label" +msgid "Are you sure you wish to print with the selected configuration?" +msgstr "選択された構成にてプリントを開始してもいいですか。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 +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の構成にミスマッチがあります。プリンターに設置されたプリントコア及びフィラメントを元にCuraをスライスすることで最良の印刷結果を出すことができます。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 +msgctxt "@window:title" +msgid "Mismatched configuration" +msgstr "ミスマッチの構成" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "新しいデータの送信 (temporarily) をブロックします、前のプリントジョブが送信中です。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +msgctxt "@info:status" +msgid "Sending data to printer" +msgstr "プリンターにプリントデータを送信中" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +msgctxt "@info:title" +msgid "Sending Data" +msgstr "プリントデータを送信中" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +msgctxt "@info:status" +msgid "Unable to send data to printer. Is another job still active?" +msgstr "データをプリンターに送ることができません。他のプリントジョブは進行中ですか?" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 +msgctxt "@label:MonitorStatus" +msgid "Aborting print..." +msgstr "プリントを停止します…" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +msgctxt "@label:MonitorStatus" +msgid "Print aborted. Please check the printer" +msgstr "プリントを中止しました。プリンターを確認してください。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +msgctxt "@label:MonitorStatus" +msgid "Pausing print..." +msgstr "プリントを一時停止します…" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +msgctxt "@label:MonitorStatus" +msgid "Resuming print..." +msgstr "プリント再開します…" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +msgctxt "@window:title" +msgid "Sync with your printer" +msgstr "プリンターと同期する" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +msgctxt "@label" +msgid "Would you like to use your current printer configuration in Cura?" +msgstr "Curaで設定しているプリンタ構成を使用されますか?" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 +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/NetworkClusterPrinterOutputDevice.py:112 +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." +msgstr "このプリンターは、繋がっているUltimaker3プリンターをホストするために設定されていません。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:113 +#, 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 "このプリンターは{count}繋がっているUltimaker3プリンターのグループのホストプリンターです。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 +#, python-brace-format +msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." +msgstr "{printer_name}は ‘{job_name}’印刷を終了しました。造形物を確認し、ビルドプレートから取り出してください。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#, 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 "{printer_name} は '{job_name}'.を印刷予定です。印刷を開始するためにジョブに合わせた構成に変更してください。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +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 "新しいプリントジョブをお送りできません。この3Dプリンターは繋がっているUltimaker3のグループをホストするために設定されていません。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "プリントジョブをグループに送ることができません。{cluster_name}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "グループに送信完了{file_name} {cluster_name}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "プリントジョブを見る" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "プリントジョブのインターフェイスをブラウザーで開く" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label" +msgid "Unknown" +msgstr "不明" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#, python-brace-format +msgctxt "@info:status" +msgid "Printer '{printer_name}' has finished printing '{job_name}'." +msgstr "プリンター’{printer_name}’が’{job_name}’のプリントを終了しました。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +msgctxt "@info:status" +msgid "Print finished" +msgstr "プリント終了" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 +msgctxt "@label:status" +msgid "Action required" +msgstr "アクションが必要です。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "グループに送信中{file_name} {cluster_name}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +msgctxt "@action" +msgid "Connect via Network" +msgstr "ネットワーク上にて接続" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#, python-brace-format +msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." +msgstr "{machine_name} で利用可能な新しい機能があります。プリンターのファームウェアをアップデートしてください。" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "新しい利用可能な%sファームウェアのアップデートがあります。" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +msgctxt "@action:button" +msgid "How to update" +msgstr "アップデートの仕方" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +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 "ソリッドワークスのファイルを開く際にエラーが発生しました!ソリッドワークスで、問題なく開くことができるか確認してください。" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +msgctxt "@item:inlistbox" +msgid "SolidWorks part file" +msgstr "ソリッドワークスパートファイル" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +msgctxt "@item:inlistbox" +msgid "SolidWorks assembly file" +msgstr "ソリッドワークスアセンブリーファイル" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +msgid "Configure" +msgstr "構成" + +#: /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/SimulationView/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Simulation view" +msgstr "シミュレーションビュー" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +msgctxt "@info:status" +msgid "Cura does not accurately display layers when Wire Printing is enabled" +msgstr "Curaはワイヤープリンティング設定中には正確にレイヤーを表示しません。" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:101 +msgctxt "@info:title" +msgid "Simulation View" +msgstr "シミュレーションビュー" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +msgid "Modify G-Code" +msgstr "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が非特定なスライスされた数字を集めました。プレファレンス内で無効にできます。" + +#: /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 "却下する" + +#: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Cura 15.04 profiles" +msgstr "Cura 15.04 プロファイル" + +#: /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ファイル" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "JPG Image" +msgstr "JPG画像" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:18 +msgctxt "@item:inlistbox" +msgid "JPEG Image" +msgstr "JPEG画像" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:22 +msgctxt "@item:inlistbox" +msgid "PNG Image" +msgstr "PNG画像" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:26 +msgctxt "@item:inlistbox" +msgid "BMP Image" +msgstr "BMP画像" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:30 +msgctxt "@item:inlistbox" +msgid "GIF Image" +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 "選ばれたプリンターまたは選ばれたプリント構成が異なるため進行中の材料にてスライスを完了できません。" + +#: /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:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +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:318 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" +msgstr "モデル別の設定があるためスライスできません。1つまたは複数のモデルで以下の設定にエラーが発生しました:{error_labels}" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +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:335 +msgctxt "@info:status" +msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +msgstr "モデルのデータがビルトボリュームに入っていないためスライスできるものがありません。スケールやローテーションにて合うように設定してください。" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +msgctxt "@info:status" +msgid "Processing Layers" +msgstr "レイヤーを処理しています。" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +msgctxt "@info:title" +msgid "Information" +msgstr "インフォメーション" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 +msgctxt "@label" +msgid "Per Model Settings" +msgstr "各モデル設定" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:15 +msgctxt "@info:tooltip" +msgid "Configure Per Model Settings" +msgstr "各モデル構成設定" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23 +msgid "Install" +msgstr "インストール" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It is not set to a directory." +msgstr "Siemens NXプラグインファイルのコピーに失敗しました。UGII_USER_DIRを確認してください。ディレクトリに割り当てられていません。" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81 +msgid "Successfully installed Siemens NX Cura plugin." +msgstr "Siemens NX Curaプラグインを正常にインストールしました。" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgstr "Siemens NXプラグインファイルのコピーに失敗しました。UGII_USER_DIRを確認してください。" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 +msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." +msgstr "Siemens NXプラグインのインストールに失敗しました。Siemens NX用の環境変数UGII_USER_DIRが設定できませんでした。" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +msgctxt "@title:tab" +msgid "Recommended" +msgstr "推奨" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +msgctxt "@title:tab" +msgid "Custom" +msgstr "カスタム" + +#: /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 ファイル" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +msgctxt "@label" +msgid "Nozzle" +msgstr "ノズル" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "{0}からプラグインIDを取得することに失敗しました。" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +msgctxt "@info:tile" +msgid "Warning" +msgstr "警告" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +msgctxt "@window:title" +msgid "Plugin browser" +msgstr "プラグインブラウザー" + +#: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Solid view" +msgstr "ソリッドビュー" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 +msgctxt "@item:inlistbox" +msgid "G File" +msgstr "Gファイル" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +msgctxt "@info:status" +msgid "Parsing G-code" +msgstr "G-codeを解析" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "G-codeの詳細" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +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の表示が適切でない場合があります。" + +#: /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プロファイル" + +#: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 +msgctxt "@item:inlistbox" +msgid "3MF file" +msgstr "3MFファイル" + +#: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:38 +msgctxt "@item:inlistbox" +msgid "Cura Project 3MF file" +msgstr "Curaが3MF fileを算出します。" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 +msgctxt "@action" +msgid "Select upgrades" +msgstr "アップグレードを選択する" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.py:12 +msgctxt "@action" +msgid "Upgrade Firmware" +msgstr "ファームウェアをアップグレード" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 +msgctxt "@action" +msgid "Checkup" +msgstr "チェックアップ" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:15 +msgctxt "@action" +msgid "Level build plate" +msgstr "ビルドプレートを調整する" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "アウターウォール" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "インナーウォール" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Skin" +msgstr "スキン" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Infill" +msgstr "インフィル" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "サポートイルフィル" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "サポートインターフェイス" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Support" +msgstr "サポート" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "スカート" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Travel" +msgstr "移動" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "退却" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +msgctxt "@tooltip" +msgid "Other" +msgstr "他" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +msgctxt "@label unknown material" +msgid "Unknown" +msgstr "不明" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "スライス前ファイル {0}" + +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +msgctxt "@item:material" +msgid "No material loaded" +msgstr "フィラメントがロードされていません。" + +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +msgctxt "@item:material" +msgid "Unknown material" +msgstr "未確認のフィラメント" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "造形物のために新しい位置を探索中" + +#: /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/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:113 +msgctxt "@title:window" +msgid "File Already Exists" +msgstr "すでに存在するファイルです。" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#, 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 "{0} は既に存在します。ファイルを上書きしますか?" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 +msgctxt "@label" +msgid "Custom" +msgstr "カスタム" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +msgctxt "@label" +msgid "Custom Material" +msgstr "カスタムフィラメント" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 +msgctxt "@menuitem" +msgid "Global" +msgstr "グローバル" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "上書きできません" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +msgctxt "@info:status" +msgid "The selected material is incompatible with the selected machine or configuration." +msgstr "選択されたフィラメントはプリンターとそのプリント構成に適応しておりません。" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /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." +msgstr "選択したフィラメントの直径が、現在選択中のプリンターに適応していません。" + +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:25 +msgctxt "@action:button" +msgid "Undo" +msgstr "取り消す" + +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:25 +msgctxt "@action" +msgid "Undo changing the material diameter." +msgstr "フィラメント直径を変更を取り消す" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "Failed to export profile to {0}: {1}" +msgstr "{0}にプロファイルを書き出すのに失敗しました: {1}" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tag !" +msgid "Failed to export profile to {0}: Writer plugin reported failure." +msgstr " {0}にプロファイルを書き出すことに失敗しました。:ライタープラグイン失敗の報告" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tag !" +msgid "Exported profile to {0}" +msgstr "{0}にプロファイルを書き出しました。" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:157 +msgctxt "@info:title" +msgid "Export succeeded" +msgstr "書き出し完了" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "Failed to import profile from {0}: {1}" +msgstr "{0}: {1}からプロファイルを取り込むことに失敗しました。" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#, python-brace-format +msgctxt "@info:status" +msgid "Successfully imported profile {0}" +msgstr "プロファイル {0}の取り込み完了" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 +#, 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:274 +msgctxt "@label" +msgid "Custom profile" +msgstr "カスタムプロファイル" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +msgctxt "@info:status" +msgid "Profile is missing a quality type." +msgstr "プロファイルはクオリティータイプが不足しています。" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#, 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: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:80 +msgctxt "@title:window" +msgid "Crash Report" +msgstr "クラッシュ報告" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +msgctxt "@label crash message" +msgid "" +"

    A fatal exception has occurred. Please send us this Crash Report to fix the problem

    \n" +"

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" +" " +msgstr "

    致命的な例外が発生しました。問題解決のためこのクラッシュレポートを送信してください

    \n

    「レポート送信」ボタンを使用してバグレポートが自動的にサーバーに送られるようにしてください

    \n " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +msgctxt "@title:groupbox" +msgid "System information" +msgstr "システム情報" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +msgctxt "@label unknown version of Cura" +msgid "Unknown" +msgstr "不明" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 +#, python-brace-format +msgctxt "@label Cura version" +msgid "Cura version: {version}
    " +msgstr "Curaバージョン: {version}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 +#, python-brace-format +msgctxt "@label Platform" +msgid "Platform: {platform}
    " +msgstr "プラットフォーム: {platform}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 +#, python-brace-format +msgctxt "@label Qt version" +msgid "Qt version: {qt}
    " +msgstr "Qtバージョン: {qt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 +#, python-brace-format +msgctxt "@label PyQt version" +msgid "PyQt version: {pyqt}
    " +msgstr "PyQtバージョン: {pyqt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 +#, python-brace-format +msgctxt "@label OpenGL" +msgid "OpenGL: {opengl}
    " +msgstr "OpenGL: {opengl}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#, python-brace-format +msgctxt "@label OpenGL version" +msgid "
  • OpenGL Version: {version}
  • " +msgstr "
  • OpenGLバージョン: {version}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#, python-brace-format +msgctxt "@label OpenGL vendor" +msgid "
  • OpenGL Vendor: {vendor}
  • " +msgstr "
  • OpenGLベンダー: {vendor}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#, python-brace-format +msgctxt "@label OpenGL renderer" +msgid "
  • OpenGL Renderer: {renderer}
  • " +msgstr "
  • OpenGLレンダラー: {renderer}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +msgctxt "@title:groupbox" +msgid "Exception traceback" +msgstr "例外トレースバック" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +msgctxt "@title:groupbox" +msgid "Logs" +msgstr "ログ" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +msgctxt "@title:groupbox" +msgid "User description" +msgstr "ユーザー詳細" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +msgctxt "@action:button" +msgid "Send report" +msgstr "レポート送信" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +msgctxt "@info:progress" +msgid "Loading machines..." +msgstr "プリンターを読み込み中…" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +msgctxt "@info:progress" +msgid "Setting up scene..." +msgstr "シーンをセットアップ中…" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +msgctxt "@info:progress" +msgid "Loading interface..." +msgstr "インターフェイスを読み込み中…" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#, 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:1348 +#, 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:1357 +#, python-brace-format +msgctxt "@info:status" +msgid "Can't open any other file if G-code is loading. Skipped importing {0}" +msgstr "G-codeを読み込み中は他のファイルを開くことができません。{0}の取り込みをスキップしました。" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +msgctxt "@info:status" +msgid "The selected model was too small to load." +msgstr "選択したモデルは読み込むのに小さすぎます。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 +msgctxt "@title" +msgid "Machine Settings" +msgstr "プリンターの設定" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:78 +msgctxt "@title:tab" +msgid "Printer" +msgstr "プリンター" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 +msgctxt "@label" +msgid "Printer Settings" +msgstr "プリンターの設定" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 +msgctxt "@label" +msgid "X (Width)" +msgstr "X(幅)" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +msgctxt "@label" +msgid "mm" +msgstr "mm" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 +msgctxt "@label" +msgid "Y (Depth)" +msgstr "Y (奥行き)" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 +msgctxt "@label" +msgid "Z (Height)" +msgstr "Z (高さ)" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:140 +msgctxt "@label" +msgid "Build plate shape" +msgstr "ビルドプレート形" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 +msgctxt "@option:check" +msgid "Origin at center" +msgstr "センターを出します。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:157 +msgctxt "@option:check" +msgid "Heated bed" +msgstr "ヒーテッドドベッド" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 +msgctxt "@label" +msgid "Gcode flavor" +msgstr "Gcodeフレーバー" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 +msgctxt "@label" +msgid "Printhead Settings" +msgstr "プリントヘッド設定" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 +msgctxt "@label" +msgid "X min" +msgstr "X分" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 +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 "プリントヘッド左側からノズルの中心までの距離。印刷時に前の造形物とプリントヘッドとの衝突を避けるために “1プリントづつ”印刷を使用。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 +msgctxt "@label" +msgid "Y min" +msgstr "Y分" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 +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 "プリントヘッド前部からノズルの中心までの距離。印刷時に前の造形物とプリントヘッドとの衝突を避けるために “1プリントづつ”印刷を使用。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +msgctxt "@label" +msgid "X max" +msgstr "最大X" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 +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 "プリントヘッド右側からノズルの中心までの距離。印刷時に前の造形物とプリントヘッドとの衝突を避けるために “1プリントづつ”印刷を使用。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 +msgctxt "@label" +msgid "Y max" +msgstr "最大Y" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 +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 "プリントヘッド後部からノズルの中心までの距離。印刷時に前の造形物とプリントヘッドとの衝突を避けるために “1プリントづつ”印刷を使用。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 +msgctxt "@label" +msgid "Gantry height" +msgstr "ガントリーの高さ" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +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軸)ノズルの先端とガントリーシステムの高さに相違があります。印刷時に前の造形物とプリントヘッドとの衝突を避けるために “1プリントづつ”印刷を使用。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +msgctxt "@label" +msgid "Number of Extruders" +msgstr "エクストルーダーの数" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +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:291 +msgctxt "@label" +msgid "Material diameter" +msgstr "フィラメント直径" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +msgctxt "@label" +msgid "Nozzle size" +msgstr "ノズルサイズ" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +msgctxt "@label" +msgid "Start Gcode" +msgstr "G-codeをスタートします。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +msgctxt "@tooltip" +msgid "Gcode commands to be executed at the very start." +msgstr "G-codeが最初に起動するようにします。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +msgctxt "@label" +msgid "End Gcode" +msgstr "G-codeを終了" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +msgctxt "@tooltip" +msgid "Gcode commands to be executed at the very end." +msgstr "G-codeが最後にに起動するようにします。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +msgctxt "@label" +msgid "Nozzle Settings" +msgstr "ノズル設定" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +msgctxt "@label" +msgid "Nozzle offset X" +msgstr "ノズルオフセットX" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +msgctxt "@label" +msgid "Nozzle offset Y" +msgstr "ノズルオフセットY" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +msgctxt "@label" +msgid "Extruder Start Gcode" +msgstr "エクストルーダーがGcodeを開始します。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +msgctxt "@label" +msgid "Extruder End Gcode" +msgstr "エクストルーダーがGcodeを終了します。" + +#: /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:445 +#: /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:123 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 +msgctxt "@action:button" +msgid "Close" +msgstr "やめる" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:22 +msgctxt "@title:window" +msgid "Firmware Update" +msgstr "ファームウェアアップデート" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:42 +msgctxt "@label" +msgid "Firmware update completed." +msgstr "ファームウェアアップデート完了" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:47 +msgctxt "@label" +msgid "Starting firmware update, this may take a while." +msgstr "ファームウェアアップデートを開始します、時間が少しかかるかもしれません。" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:52 +msgctxt "@label" +msgid "Updating firmware." +msgstr "ファームウェアアップデート中" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:61 +msgctxt "@label" +msgid "Firmware update failed due to an unknown error." +msgstr "不特定なエラーの発生によりファームウェアアップデート失敗しました。" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:64 +msgctxt "@label" +msgid "Firmware update failed due to an communication error." +msgstr "コミュニケーションエラーによりファームウェアアップデート失敗しました。" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:67 +msgctxt "@label" +msgid "Firmware update failed due to an input/output error." +msgstr "インプット/アウトプットエラーによりファームウェアアップデート失敗しました。" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:70 +msgctxt "@label" +msgid "Firmware update failed due to missing firmware." +msgstr "ファームウェアが見つからず、ファームウェアアップデート失敗しました。" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:73 +msgctxt "@label" +msgid "Unknown error code: %1" +msgstr "不特定エラーコード: %1" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +msgctxt "@title:window" +msgid "Connect to Networked Printer" +msgstr "ネットワーク上で繋がったプリンターに接続" + +#: /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 "ネットワーク接続にて直接プリントするためには、必ずケーブルまたはWifiネットワークにて繋がっていることを確認してください。Curaをプリンターに接続していない場合でも、USBメモリを使って直接プリンターにg-codeファイルをトランスファーできます。" + +#: /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 "追加" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +msgctxt "@action:button" +msgid "Edit" +msgstr "編集" + +#: /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 "取り除く" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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:194 +msgctxt "@label" +msgid "If your printer is not listed, read the network printing troubleshooting guide" +msgstr "お持ちのプリンターがリストにない場合、ネットワーク・プリンティング・トラブルシューティング・ガイドを読んでください。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 +msgctxt "@label" +msgid "Type" +msgstr "タイプ" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 +msgctxt "@label" +msgid "Ultimaker 3" +msgstr "Ultimaker3" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 +msgctxt "@label" +msgid "Ultimaker 3 Extended" +msgstr "Ultimaker 3 Extended" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 +msgctxt "@label" +msgid "Firmware version" +msgstr "ファームウェアバージョン" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 +msgctxt "@label" +msgid "Address" +msgstr "アドレス" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:286 +msgctxt "@label" +msgid "This printer is not set up to host a group of Ultimaker 3 printers." +msgstr "Ultimaker3のグループをホストするために設定されていません。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:290 +msgctxt "@label" +msgid "This printer is the host for a group of %1 Ultimaker 3 printers." +msgstr "このプリンターはUltimaker3 %1グループのホストプリンターです。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:300 +msgctxt "@label" +msgid "The printer at this address has not yet responded." +msgstr "このアドレスのプリンターは応答していません。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +msgctxt "@action:button" +msgid "Connect" +msgstr "接続" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 +msgctxt "@title:window" +msgid "Printer Address" +msgstr "プリンターアドレス" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 +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:379 +#: /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/UM3NetworkPrinting/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "ネットワーク上のプリント" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "プリント" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:36 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "%1は、繋がっているUltimaker3プリンターのグループをホストするために設定されていません。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "デフォルトのウェブブラウザで印刷ジョブページを開きます。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "プリントジョブを見る" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 +msgctxt "@label" +msgid "Preparing to print" +msgstr "プリントの準備をする" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 +msgctxt "@label:status" +msgid "Printing" +msgstr "プリント中" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 +msgctxt "@label:status" +msgid "Available" +msgstr "利用可能" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +msgctxt "@label:MonitorStatus" +msgid "Lost connection with the printer" +msgstr "プリンターへの接続が切断されました。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 +msgctxt "@label:status" +msgid "Disabled" +msgstr "無効" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273 +msgctxt "@label:status" +msgid "Reserved" +msgstr "予約済み" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:275 +msgctxt "@label:status" +msgid "Finished" +msgstr "終了" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 +msgctxt "@label:status" +msgid "Paused" +msgstr "一時停止" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 +msgctxt "@label:status" +msgid "Resuming" +msgstr "再開" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 +msgctxt "@label:status" +msgid "Print aborted" +msgstr "プリント中止" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:410 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "プリントデータを確認できない" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 +msgctxt "@label" +msgid "Finishes at: " +msgstr "この層で終了します:" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 +msgctxt "@label" +msgid "Clear build plate" +msgstr "ビルドプレートをクリアにする" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "プリント構成の変更を待っている" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:64 +msgctxt "@title" +msgid "Print jobs" +msgstr "プリントジョブ" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 +msgctxt "@label" +msgid "Printing" +msgstr "プリント中" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 +msgctxt "@label" +msgid "Queued" +msgstr "順番を待つ" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:171 +msgctxt "@label:title" +msgid "Printers" +msgstr "複数のプリンター" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 +msgctxt "@action:button" +msgid "View printers" +msgstr "複数のプリンターをみる" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +msgctxt "@info:tooltip" +msgid "Connect to a printer" +msgstr "プリンターにつなぐ" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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 +msgctxt "@action:button" +msgid "Activate Configuration" +msgstr "プリント構成をアクティベートする" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +msgctxt "@title:window" +msgid "Cura SolidWorks Plugin Configuration" +msgstr "Curaソリッドワークスプラグインコンフィグレーション" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +msgctxt "@action:label" +msgid "Default quality of the exported STL:" +msgstr "書き出されたSTLのクオリティーデフォルト" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Always ask" +msgstr "毎回確認" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Always use Fine quality" +msgstr "常にファインクオリティーを使用する" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Always use Coarse quality" +msgstr "常に粗めのクオリティーを使用する" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 +msgctxt "@title:window" +msgid "Import SolidWorks File as STL..." +msgstr "ソリッドワークスのファイルをSTLとして取り込む" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 +msgctxt "@info:tooltip" +msgid "Quality of the Exported STL" +msgstr "書き出されたSTLのクオリティー" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 +msgctxt "@action:label" +msgid "Quality" +msgstr "クオリティー" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Coarse" +msgstr "粗い" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Fine" +msgstr "ファイン" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "選択を記憶させる" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +msgctxt "@label" +msgid "Color scheme" +msgstr "カラースキーム" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +msgctxt "@label:listbox" +msgid "Material Color" +msgstr "フィラメントの色" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +msgctxt "@label:listbox" +msgid "Line Type" +msgstr "ラインタイプ" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +msgctxt "@label:listbox" +msgid "Feedrate" +msgstr "送り速度" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +msgctxt "@label:listbox" +msgid "Layer thickness" +msgstr "レイヤーの厚さ" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +msgctxt "@label" +msgid "Compatibility Mode" +msgstr "コンパティビリティモード" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +msgctxt "@label" +msgid "Show Travels" +msgstr "移動を表示する" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +msgctxt "@label" +msgid "Show Helpers" +msgstr "ヘルプを表示する" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +msgctxt "@label" +msgid "Show Shell" +msgstr "シェルを表示する" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +msgctxt "@label" +msgid "Show Infill" +msgstr "インフィルを表示する" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +msgctxt "@label" +msgid "Only Show Top Layers" +msgstr "トップのレイヤーを表示する" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +msgctxt "@label" +msgid "Show 5 Detailed Layers On Top" +msgstr "トップの5レイヤーの詳細を表示する" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +msgctxt "@label" +msgid "Top / Bottom" +msgstr "トップ/ボトム" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +msgctxt "@label" +msgid "Inner Wall" +msgstr "インナーウォール" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +msgctxt "@label" +msgid "min" +msgstr "最小" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +msgctxt "@label" +msgid "max" +msgstr "最大" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 +msgctxt "@title:window" +msgid "Post Processing Plugin" +msgstr "プラグイン処理後" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:49 +msgctxt "@label" +msgid "Post Processing Scripts" +msgstr "スクリプトの処理後" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:217 +msgctxt "@action" +msgid "Add a script" +msgstr "スクリプトを加える" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:263 +msgctxt "@label" +msgid "Settings" +msgstr "設定" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +msgctxt "@info:tooltip" +msgid "Change active post-processing scripts" +msgstr "処理したスクリプトを変更する" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 +msgctxt "@title:window" +msgid "Convert Image..." +msgstr "画像を変換する…" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:33 +msgctxt "@info:tooltip" +msgid "The maximum distance of each pixel from \"Base.\"" +msgstr "“ベース”から各ピクセルへの最大距離" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:38 +msgctxt "@action:label" +msgid "Height (mm)" +msgstr "高さ(mm)" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:56 +msgctxt "@info:tooltip" +msgid "The base height from the build plate in millimeters." +msgstr "ミリメートルでビルドプレートからベースの高さ" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:61 +msgctxt "@action:label" +msgid "Base (mm)" +msgstr "ベース(mm)" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:79 +msgctxt "@info:tooltip" +msgid "The width in millimeters on the build plate." +msgstr "ビルドプレート上の幅ミリメートル" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:84 +msgctxt "@action:label" +msgid "Width (mm)" +msgstr "幅(mm)" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:103 +msgctxt "@info:tooltip" +msgid "The depth in millimeters on the build plate" +msgstr "ビルドプレート上の奥行きミリメートル" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:108 +msgctxt "@action:label" +msgid "Depth (mm)" +msgstr "深さ(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 "デフォルトで、白ピクセルはメッシュの高いポイントを表し、黒ピクセルはメッシュの低いポイントを表します。このオプションをリバースするために変更し、黒ピクセルがメッシュの高いポイントを表し、白ピクセルがメッシュの低いポイントを表すようにする。" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "薄いほうを高く" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Darker is higher" +msgstr "暗いほうを高く" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 +msgctxt "@info:tooltip" +msgid "The amount of smoothing to apply to the image." +msgstr "画像に適応したスムージング量" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:154 +msgctxt "@action:label" +msgid "Smoothing" +msgstr "スムージング" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +msgctxt "@action:button" +msgid "Select settings" +msgstr "設定を選択する" + +#: /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: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:296 +msgctxt "@label:checkbox" +msgid "Show all" +msgstr "すべて表示する" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 +msgctxt "@title:window" +msgid "Open Project" +msgstr "プロジェクトを開く" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 +msgctxt "@action:ComboBox option" +msgid "Update existing" +msgstr "existingをアップデートする" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "新しいものを作成する" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +msgctxt "@action:title" +msgid "Summary - Cura Project" +msgstr "サマリーCuraプロジェクト" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 +msgctxt "@action:label" +msgid "Printer settings" +msgstr "プリンターの設定" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 +msgctxt "@info:tooltip" +msgid "How should the conflict in the machine be resolved?" +msgstr "このプリンターの問題をどのように解決すればいいか?" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 +msgctxt "@action:label" +msgid "Type" +msgstr "タイプ" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:144 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:201 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:293 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:190 +msgctxt "@action:label" +msgid "Name" +msgstr "ネーム" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:166 +msgctxt "@action:label" +msgid "Profile settings" +msgstr "プロファイル設定" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 +msgctxt "@info:tooltip" +msgid "How should the conflict in the profile be resolved?" +msgstr "このプロファイルの問題をどのように解決すればいいか?" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 +msgctxt "@action:label" +msgid "Not in profile" +msgstr "プロファイル内にない" + +# Can’t edit the Japanese text +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 +msgctxt "@action:label" +msgid "%1 override" +msgid_plural "%1 overrides" +msgstr[0] "%1個の設定を上書き" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:232 +msgctxt "@action:label" +msgid "Derivative from" +msgstr "次から引き出す" + +# can’t inset the japanese text +# %1: print quality profile name +# %2: number of overridden ssettings +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:237 +msgctxt "@action:label" +msgid "%1, %2 override" +msgid_plural "%1, %2 overrides" +msgstr[0] "%2の%1個の設定を上書き" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:253 +msgctxt "@action:label" +msgid "Material settings" +msgstr "フィラメント設定" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 +msgctxt "@info:tooltip" +msgid "How should the conflict in the material be resolved?" +msgstr "このフィラメントの問題をどのように解決すればいいか?" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +msgctxt "@action:label" +msgid "Setting visibility" +msgstr "視野設定" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:321 +msgctxt "@action:label" +msgid "Mode" +msgstr "モード" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:218 +msgctxt "@action:label" +msgid "Visible settings:" +msgstr "ビジブル設定:" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:223 +msgctxt "@action:label" +msgid "%1 out of %2" +msgstr "%2のうち%1" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368 +msgctxt "@action:warning" +msgid "Loading a project will clear all models on the build plate." +msgstr "プロジェクトを読み込むとビルドプレート上のすべてのモデルがクリアされます。" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 +msgctxt "@action:button" +msgid "Open" +msgstr "開く" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:11 +msgctxt "@title:window" +msgid "Find & Update plugins" +msgstr "探す&アップデートプラグイン" + +#: /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:145 +msgctxt "@action:button" +msgid "Upgrade" +msgstr "アップグレード" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +msgctxt "@action:button" +msgid "Installed" +msgstr "インストールした" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "ダウンロード" + +#: /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 "" +"This plugin contains a license.\n" +"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 "承認する" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" +msgstr "拒否する" + +#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 +msgctxt "@title:window" +msgid "User Agreement" +msgstr "ユーザー用使用許諾契約" + +#: /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 "プリンターアップグレードを選択する" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:37 +msgctxt "@label" +msgid "Please select any upgrades made to this Ultimaker 2." +msgstr "このUltimaker2に施したアップグレードを選択してください。" + +#: /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 "ビルドプレートのレベリング" + +#: /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 "プリントの成功率を上げるために、ビルドプレートを今調整できます。’次のポジションに移動’をクリックすると" + +#: /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 "すべてのポジションに;" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +msgctxt "@action:button" +msgid "Start Build Plate Leveling" +msgstr "ビルドプレートのレベリングを開始する" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +msgctxt "@action:button" +msgid "Move to Next Position" +msgstr "次のポジションに移動" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:27 +msgctxt "@title" +msgid "Upgrade Firmware" +msgstr "ファームウェアをアップグレード" + +#: /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 "ファームウェアとは直接お持ちの3Dプリンターを動かすソフトウェアです。このファームウェアはステップモーターを操作し、温度を管理し、プリンターとして成すべき点を補います。" + +#: /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 "配達時のファームウェアで動かすことはできますが、新しいバージョンの方がより改善され、便利なフィーチャーがついてきます。" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:62 +msgctxt "@action:button" +msgid "Automatically upgrade Firmware" +msgstr "自動でファームウェアをアップグレード" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:72 +msgctxt "@action:button" +msgid "Upload custom Firmware" +msgstr "カスタムファームウェアをアップロードする" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:83 +msgctxt "@title:window" +msgid "Select custom firmware" +msgstr "カスタムファームウェアを選択する。" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +msgctxt "@label" +msgid "Please select any upgrades made to this Ultimaker Original" +msgstr "このUltimaker Originalに施されたアップグレートを選択する" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +msgctxt "@label" +msgid "Heated Build Plate (official kit or self-built)" +msgstr "ヒーティッドビルドプレート(オフィシャルキットまたはセルフビルド)" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 +msgctxt "@title" +msgid "Check Printer" +msgstr "プリンターチェック" + +#: /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 "お持ちのUltimkaerにてサニティーチェックを数回行うことは推奨します。もしプリンター機能に問題ない場合はこの項目をスキップしてください。" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 +msgctxt "@action:button" +msgid "Start Printer Check" +msgstr "プリンターチェックを開始する" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 +msgctxt "@label" +msgid "Connection: " +msgstr "コネクション:" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 +msgctxt "@info:status" +msgid "Connected" +msgstr "接続済" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 +msgctxt "@info:status" +msgid "Not connected" +msgstr "プリンターにつながっていません。" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 +#, fuzzy +msgctxt "@label" +msgid "Min endstop X: " +msgstr "エンドストップ 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 "作品" + +#: /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 "チェックされていません。" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 +#, fuzzy +msgctxt "@label" +msgid "Min endstop Y: " +msgstr "エンドストップ Y:" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 +#, fuzzy +msgctxt "@label" +msgid "Min endstop Z: " +msgstr "エンドストップ Z:" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 +msgctxt "@label" +msgid "Nozzle temperature check: " +msgstr "ノズル温度チェック:" + +#: /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 "ヒーティングストップ" + +#: /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 "ヒーティング開始" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 +msgctxt "@label" +msgid "Build plate temperature check:" +msgstr "ビルドプレートの温度チェック:" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 +msgctxt "@info:status" +msgid "Checked" +msgstr "チェック済" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 +msgctxt "@label" +msgid "Everything is in order! You're done with your CheckUp." +msgstr "すべてに異常はありません。チェックアップを終了しました。" + +#: /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:90 +msgctxt "@label:MonitorStatus" +msgid "Printer does not accept commands" +msgstr "今プリンタはコマンドを処理できません。" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 +msgctxt "@label:MonitorStatus" +msgid "In maintenance. Please check the printer" +msgstr "メンテナンス。プリンターをチェックしてください。" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 +msgctxt "@label:MonitorStatus" +msgid "Printing..." +msgstr "プリント中" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 +msgctxt "@label:MonitorStatus" +msgid "Paused" +msgstr "一時停止しました" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 +msgctxt "@label:MonitorStatus" +msgid "Preparing..." +msgstr "準備中" + +#: /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:237 +msgctxt "@label:" +msgid "Resume" +msgstr "再開" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +msgctxt "@label:" +msgid "Pause" +msgstr "一時停止" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +msgctxt "@label:" +msgid "Abort Print" +msgstr "プリント中止" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +msgctxt "@window:title" +msgid "Abort print" +msgstr "プリント中止" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +msgctxt "@label" +msgid "Are you sure you want to abort the print?" +msgstr "本当にプリントを中止してもいいですか。" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "変更を取り消すか保存するか" + +#: /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 "プロファイル設定をカスタマイズしました。この設定をキープしますか、キャンセルしますか。" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "プロファイル設定" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "デフォルト" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "カスタマイズ" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 +#: /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: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:595 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "キープし、再度確認しない。" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "取り消す" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "キープする" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "新しいプロファイルを作る" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:44 +msgctxt "@title" +msgid "Information" +msgstr "インフォメーション" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:68 +msgctxt "@label" +msgid "Display Name" +msgstr "ディスプレイ名" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:78 +msgctxt "@label" +msgid "Brand" +msgstr "ブランド" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +msgctxt "@label" +msgid "Material Type" +msgstr "フィラメントタイプ" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +msgctxt "@label" +msgid "Color" +msgstr "色" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +msgctxt "@label" +msgid "Properties" +msgstr "プロパティ" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +msgctxt "@label" +msgid "Density" +msgstr "密度" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +msgctxt "@label" +msgid "Diameter" +msgstr "直径" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +msgctxt "@label" +msgid "Filament Cost" +msgstr "フィラメントコスト" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +msgctxt "@label" +msgid "Filament weight" +msgstr "フィラメントの重さ" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +msgctxt "@label" +msgid "Filament length" +msgstr "フィラメントの長さ" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +msgctxt "@label" +msgid "Cost per Meter" +msgstr "毎メーターコスト" + +#: /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 "このフィラメントは %1にリンクすプロパティーを共有する。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:248 +msgctxt "@label" +msgid "Unlink Material" +msgstr "フィラメントをリンクを外す" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +msgctxt "@label" +msgid "Description" +msgstr "記述" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +msgctxt "@label" +msgid "Adhesion Information" +msgstr "接着のインフォメーション" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +msgctxt "@label" +msgid "Print settings" +msgstr "プリント設定" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:14 +msgctxt "@title:tab" +msgid "Setting Visibility" +msgstr "視野設定" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:44 +msgctxt "@label:textbox" +msgid "Check all" +msgstr "すべて確認する" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:40 +msgctxt "@info:status" +msgid "Calculated" +msgstr "計算された" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:53 +msgctxt "@title:column" +msgid "Setting" +msgstr "設定" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +msgctxt "@title:column" +msgid "Profile" +msgstr "プロファイル" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +msgctxt "@title:column" +msgid "Current" +msgstr "現在" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +msgctxt "@title:column" +msgid "Unit" +msgstr "ユニット" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +msgctxt "@title:tab" +msgid "General" +msgstr "一般" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:128 +msgctxt "@label" +msgid "Interface" +msgstr "インターフェイス" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:139 +msgctxt "@label" +msgid "Language:" +msgstr "言語:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +msgctxt "@label" +msgid "Currency:" +msgstr "通貨:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +msgctxt "@label" +msgid "Theme:" +msgstr "テーマ:" + +#: /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:296 +msgctxt "@info:tooltip" +msgid "Slice automatically when changing settings." +msgstr "セッティングを変更すると自動にスライスします。" + +#: /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:318 +msgctxt "@label" +msgid "Viewport behavior" +msgstr "ビューポイント機能" + +#: /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:335 +msgctxt "@option:check" +msgid "Display overhang" +msgstr "ディスプレイオーバーハング" + +#: /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:347 +msgctxt "@action:button" +msgid "Center camera when item is selected" +msgstr "アイテムを選択するとカメラが中心にきます" + +#: /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:361 +msgctxt "@action:button" +msgid "Invert the direction of camera zoom." +msgstr "カメラのズーム方向を反転する" + +#: /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:375 +msgctxt "@action:button" +msgid "Zoom toward mouse direction" +msgstr "マウスの方向にズームする" + +#: /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:389 +msgctxt "@option:check" +msgid "Ensure models are kept apart" +msgstr "モデルの距離が離れているように確認する" + +#: /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:402 +msgctxt "@option:check" +msgid "Automatically drop models to the build plate" +msgstr "自動的にモデルをビルドプレートに落とす" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 +msgctxt "@info:tooltip" +msgid "Show caution message in gcode reader." +msgstr "gcodeリーダーに注意メッセージを表示する" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +msgctxt "@option:check" +msgid "Caution message in gcode reader" +msgstr "gcodeリーダーの注意メッセージ" + +#: /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:435 +msgctxt "@option:check" +msgid "Force layer view compatibility mode (restart required)" +msgstr "レイヤービューコンパティビリティモードを強制する。(再起動が必要)" + +#: /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: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:462 +msgctxt "@option:check" +msgid "Scale large models" +msgstr "大きなモデルをスケールする" + +#: /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:476 +msgctxt "@option:check" +msgid "Scale extremely small models" +msgstr "極端に小さなモデルをスケールアップする" + +#: /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:490 +msgctxt "@option:check" +msgid "Add machine prefix to job name" +msgstr "プリンターの敬称をジョブネームに加える" + +#: /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:503 +msgctxt "@option:check" +msgid "Show summary dialog when saving project" +msgstr "プロジェクトを保存時にダイアログサマリーを表示する" + +#: /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:520 +msgctxt "@window:text" +msgid "Default behavior when opening a project file: " +msgstr "プロジェクトファイル開く際のデフォルト機能:" + +#: /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:534 +msgctxt "@option:openProject" +msgid "Always open as a project" +msgstr "常にプロジェクトとして開く" + +#: /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: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:580 +msgctxt "@label" +msgid "Override Profile" +msgstr "プロファイルを無効にする" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +msgctxt "@label" +msgid "Privacy" +msgstr "プライバシー" + +#: /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:641 +msgctxt "@option:check" +msgid "Check for updates on start" +msgstr "スタート時にアップデートあるかどうかのチェック" + +#: /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: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:444 +msgctxt "@title:tab" +msgid "Printers" +msgstr "プリンター" + +#: /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 "アクティベート" + +#: /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 "名を変える" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 +msgctxt "@label" +msgid "Printer type:" +msgstr "プリンタータイプ:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:158 +msgctxt "@label" +msgid "Connection:" +msgstr "コネクション:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:164 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "このプリンターはつながっていません。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:170 +msgctxt "@label" +msgid "State:" +msgstr "ステート:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 +msgctxt "@label:MonitorStatus" +msgid "Waiting for someone to clear the build plate" +msgstr "ビルドプレートの掃除を待つ" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 +msgctxt "@label:MonitorStatus" +msgid "Waiting for a printjob" +msgstr "プリントジョブの待機中" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +msgctxt "@title:tab" +msgid "Profiles" +msgstr "プロファイル" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:29 +msgctxt "@label" +msgid "Protected profiles" +msgstr "保護されたプロファイル" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:29 +msgctxt "@label" +msgid "Custom profiles" +msgstr "カスタムプロファイル" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:64 +msgctxt "@label" +msgid "Create" +msgstr "作成する" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:80 +msgctxt "@label" +msgid "Duplicate" +msgstr "複製" + +#: /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 "取り込む" + +#: /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 "書き出す" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:126 +msgctxt "@label %1 is printer name" +msgid "Printer: %1" +msgstr "プリンター: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:165 +msgctxt "@action:button" +msgid "Update profile with current settings/overrides" +msgstr "プロファイルを現在のセッティング/" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:173 +msgctxt "@action:button" +msgid "Discard current changes" +msgstr "今の変更を破棄する" + +#: /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 "このプロファイルはプリンターによりデフォルトを使用、従いこのプロファイルはセッティング/書き換えが以下のリストにありません。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:197 +msgctxt "@action:label" +msgid "Your current settings match the selected profile." +msgstr "設定は選択したプロファイルにマッチしています。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:215 +msgctxt "@title:tab" +msgid "Global Settings" +msgstr "グローバル設定" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:258 +msgctxt "@title:window" +msgid "Rename Profile" +msgstr "プロファイル名を変える" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:271 +msgctxt "@title:window" +msgid "Create Profile" +msgstr "プロファイルを作る" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:285 +msgctxt "@title:window" +msgid "Duplicate Profile" +msgstr "プロファイルを複製する" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:299 +msgctxt "@window:title" +msgid "Import Profile" +msgstr "プロファイルを取り込む" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:307 +msgctxt "@title:window" +msgid "Import Profile" +msgstr "プロファイルを取り込む" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:335 +msgctxt "@title:window" +msgid "Export Profile" +msgstr "プロファイルを書き出す" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +msgctxt "@title:tab" +msgid "Materials" +msgstr "マテリアル" + +#: /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 "プリンター: %1, %2: %3" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:120 +msgctxt "@action:label %1 is printer name" +msgid "Printer: %1" +msgstr "プリンター:%1" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +msgctxt "@action:button" +msgid "Create" +msgstr "作成する" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +msgctxt "@action:button" +msgid "Duplicate" +msgstr "複製" + +#: /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 "フィラメントを取り込む" + +#: /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 " %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 "フィラメント%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 "フィラメントを書き出す" + +#: /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 "フィラメントの書き出しに失敗しました %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 "フィラメントの%1への書き出しが完了ました。" + +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +msgctxt "@title:window" +msgid "Add Printer" +msgstr "プリンターを追加する" + +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +msgctxt "@label" +msgid "Printer Name:" +msgstr "プリンター名:" + +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +msgctxt "@action:button" +msgid "Add Printer" +msgstr "プリンターについて" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "Curaについて" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43 +msgctxt "@label" +msgid "version: %1" +msgstr "バージョン: %1" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "熱溶解積層型3Dプリンティングのエンドtoエンドソリューション" + +#: /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はUltimakerB.Vのコミュニティの協力によって開発され、Curaはオープンソースで使えることを誇りに思います:" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "グラフィックユーザーインターフェイス" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:119 +msgctxt "@label" +msgid "Application framework" +msgstr "アプリケーションフレームワーク" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:120 +msgctxt "@label" +msgid "GCode generator" +msgstr "Gcodeジェネレーター" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:121 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "インタープロセスコミュニケーションライブラリー" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:123 +msgctxt "@label" +msgid "Programming language" +msgstr "プログラミング用語" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:124 +msgctxt "@label" +msgid "GUI framework" +msgstr "GUIフレームワーク" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:125 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "GUIフレームワークバインディング" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:126 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "C/C++ バインディングライブラリー" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:127 +msgctxt "@label" +msgid "Data interchange format" +msgstr "データインターフェイスフォーマット" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:128 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "サイエンスコンピューティングを操作するためのライブラリーサポート" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:129 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "ファターマスを操作するためのライブラリーサポート" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:130 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "STLファイルを操作するためのライブラリーサポート" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:131 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "3MFファイルを操作するためのライブラリーサポート" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 +msgctxt "@label" +msgid "Serial communication library" +msgstr "シリアルコミュニケーションライブラリー" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "ZeroConfディスカバリーライブラリー" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "ポリゴンクリッピングライブラリー" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Python HTTPライブラリー" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 +msgctxt "@label" +msgid "Font" +msgstr "フォント" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 +msgctxt "@label" +msgid "SVG icons" +msgstr "SVGアイコン" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +msgctxt "@label" +msgid "Profile:" +msgstr "プロファイル:" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 +msgctxt "@" +msgid "No Profile Available" +msgstr "利用可能なプロファイルがありません" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +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プロファイルマネージャーをクリックして開いてください。" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +msgctxt "@label:textbox" +msgid "Search..." +msgstr "検索…" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +msgctxt "@action:menu" +msgid "Copy value to all extruders" +msgstr "すべてのエクストルーダーの値をコピーする" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 +msgctxt "@action:menu" +msgid "Hide this setting" +msgstr "この設定を非表示にする" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +msgctxt "@action:menu" +msgid "Don't show this setting" +msgstr "この設定を表示しない" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +msgctxt "@action:menu" +msgid "Keep this setting visible" +msgstr "常に見えるように設定する" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +msgctxt "@action:menu" +msgid "Configure setting visiblity..." +msgstr "視野のセッティングを構成する" + +#: /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 "いくらかの非表示設定は通常の計算された値と異なる値を使用します。\n表示されるようにクリックしてください。" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +msgctxt "@label Header for list of settings." +msgid "Affects" +msgstr "影響" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +msgctxt "@label Header for list of settings." +msgid "Affected By" +msgstr "次によって影響を受ける" + +#: /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 "この設定は常に全てのエクストルーダーに共有されています。ここですべてのエクストルーダーの数値を変更できます。" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:160 +msgctxt "@label" +msgid "The value is resolved from per-extruder values " +msgstr "この値は各エクストルーダーの値から取得します。" + +#: /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 "この設定にプロファイルと異なった値があります。\nプロファイルの値を戻すためにクリックしてください。" + +#: /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 "このセッティングは通常計算されます、今は絶対値に固定されています。\n計算された値に変更するためにクリックを押してください。" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +msgctxt "@label:listbox" +msgid "Print Setup" +msgstr "プリントセットアップ" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +msgctxt "@label:listbox" +msgid "" +"Print Setup disabled\n" +"G-code files cannot be modified" +msgstr "プリントセットアップが無効\nG-codeファイルを修正することができません。" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +msgctxt "@label Hours and minutes" +msgid "00h 00min" +msgstr "00時間 00分" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +msgctxt "@tooltip" +msgid "Time specification
    " +msgstr "時間仕様
    " + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +msgctxt "@label" +msgid "Cost specification" +msgstr "コスト仕様" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1m" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +msgctxt "@label" +msgid "Total:" +msgstr "合計:" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "%1m / ~ %2g / ~ %4 %3" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +msgctxt "@label Print estimates: m for meters, g for grams" +msgid "%1m / ~ %2g" +msgstr "%1m / ~ %2g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +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:591 +msgctxt "@tooltip" +msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." +msgstr "カスタムプリントセットアップ

    スライス処理のきめ細かなコントロールにてプリントする" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +msgctxt "@title:menuitem %1 is the automatically selected material" +msgid "Automatic: %1" +msgstr "自動選択: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "&ビュー" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 +msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" +msgid "Automatic: %1" +msgstr "自動選択: %1" + +# can’t enter japanese texts +#: /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] "選択したモデルで印刷:" + +# can’t eneter japanese texts +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +msgctxt "@title:window" +msgid "Multiply Selected Model" +msgid_plural "Multiply Selected Models" +msgstr[0] "選択した複数のモデル" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:108 +msgctxt "@label" +msgid "Number of Copies" +msgstr "コピーの数" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +msgctxt "@title:menu menubar:file" +msgid "Open &Recent" +msgstr "最近開いたファイルを開く" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 +msgctxt "@info:status" +msgid "No printer connected" +msgstr "接続中のプリンターはありません。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +msgctxt "@label" +msgid "Extruder" +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 "ホットエンドの目標温度。ホットエンドはこの温度に向けて上がったり下がったりします。これが0の場合、ホットエンドの加熱はオフになっています。" + +#: /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:188 +msgctxt "@tooltip" +msgid "The colour of the material in this extruder." +msgstr "エクストルーダーのマテリアルの色" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 +msgctxt "@tooltip" +msgid "The material in this extruder." +msgstr "エクストルーダー入ったフィラメント" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 +msgctxt "@tooltip" +msgid "The nozzle inserted in this extruder." +msgstr "ノズルが入ったエクストルーダー" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 +msgctxt "@label" +msgid "Build plate" +msgstr "ビルドプレート" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 +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:344 +msgctxt "@tooltip" +msgid "The current temperature of the heated bed." +msgstr "現在のヒーティッドベッドの温度" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 +msgctxt "@tooltip of temperature input" +msgid "The temperature to pre-heat the bed to." +msgstr "ベッドのプリヒート温度" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 +msgctxt "@button Cancel pre-heating" +msgid "Cancel" +msgstr "キャンセル" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 +msgctxt "@button" +msgid "Pre-heat" +msgstr "プレヒート" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 +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:703 +msgctxt "@label" +msgid "Printer control" +msgstr "プリンターコントロール" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 +msgctxt "@label" +msgid "Jog Position" +msgstr "ジョグの位置" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735 +msgctxt "@label" +msgid "X/Y" +msgstr "X/Y" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842 +msgctxt "@label" +msgid "Z" +msgstr "Z" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 +msgctxt "@label" +msgid "Jog Distance" +msgstr "ジョグの距離" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018 +msgctxt "@label" +msgid "Active print" +msgstr "プリントをアクティベートする" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 +msgctxt "@label" +msgid "Job Name" +msgstr "ジョブネーム" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 +msgctxt "@label" +msgid "Printing Time" +msgstr "プリント時間" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1035 +msgctxt "@label" +msgid "Estimated time left" +msgstr "残り時間" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +msgctxt "@action:inmenu" +msgid "Toggle Fu&ll Screen" +msgstr "留め金 フルスクリーン" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +msgctxt "@action:inmenu menubar:edit" +msgid "&Undo" +msgstr "&取り消す" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +msgctxt "@action:inmenu menubar:edit" +msgid "&Redo" +msgstr "&やりなおす" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +msgctxt "@action:inmenu menubar:file" +msgid "&Quit" +msgstr "&やめる" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +msgctxt "@action:inmenu menubar:view" +msgid "&Reset camera position" +msgstr "&カメラ位置のリセット" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu" +msgid "Configure Cura..." +msgstr "Curaを構成する…" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:printer" +msgid "&Add Printer..." +msgstr "&プリンターを追加する" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +msgctxt "@action:inmenu menubar:printer" +msgid "Manage Pr&inters..." +msgstr "プリンターを管理する" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +msgctxt "@action:inmenu" +msgid "Manage Materials..." +msgstr "フィラメントを管理する" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:profile" +msgid "&Update profile with current settings/overrides" +msgstr "&現在の設定/無効にプロファイルをアップデートする" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +msgctxt "@action:inmenu menubar:profile" +msgid "&Discard current changes" +msgstr "&変更を破棄する" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +msgctxt "@action:inmenu menubar:profile" +msgid "&Create profile from current settings/overrides..." +msgstr "&今の設定/無効からプロファイルを作成する…" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 +msgctxt "@action:inmenu menubar:profile" +msgid "Manage Profiles..." +msgstr "プロファイルを管理する" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +msgctxt "@action:inmenu menubar:help" +msgid "Show Online &Documentation" +msgstr "オンラインドキュメントを表示する" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +msgctxt "@action:inmenu menubar:help" +msgid "Report a &Bug" +msgstr "報告&バグ" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +msgctxt "@action:inmenu menubar:help" +msgid "&About..." +msgstr "アバウト..." + +# can’t enter japanese text +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +msgctxt "@action:inmenu menubar:edit" +msgid "Delete &Selected Model" +msgid_plural "Delete &Selected Models" +msgstr[0] "&選択したモデルを削除" + +# can’t enter japanese text +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 +msgctxt "@action:inmenu menubar:edit" +msgid "Center Selected Model" +msgid_plural "Center Selected Models" +msgstr[0] "選択したモデルを中央に移動" + +# can’t edit japanese text +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 +msgctxt "@action:inmenu menubar:edit" +msgid "Multiply Selected Model" +msgid_plural "Multiply Selected Models" +msgstr[0] "選択した複数のモデル" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +msgctxt "@action:inmenu" +msgid "Delete Model" +msgstr "モデルを消去する" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +msgctxt "@action:inmenu" +msgid "Ce&nter Model on Platform" +msgstr "プラットホームの中心にモデルを配置" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +msgctxt "@action:inmenu menubar:edit" +msgid "&Group Models" +msgstr "&モデルグループ" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +msgctxt "@action:inmenu menubar:edit" +msgid "Ungroup Models" +msgstr "モデルを非グループ化" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +msgctxt "@action:inmenu menubar:edit" +msgid "&Merge Models" +msgstr "&モデルの合体" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +msgctxt "@action:inmenu" +msgid "&Multiply Model..." +msgstr "&モデルを増倍する…" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +msgctxt "@action:inmenu menubar:edit" +msgid "&Select All Models" +msgstr "&すべてのモデル選択" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +msgctxt "@action:inmenu menubar:edit" +msgid "&Clear Build Plate" +msgstr "&ビルドプレート上のクリア" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +msgctxt "@action:inmenu menubar:file" +msgid "Re&load All Models" +msgstr "すべてのモデルを読み込む" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models" +msgstr "すべてのモデルをアレンジする" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange Selection" +msgstr "選択をアレンジする" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +msgctxt "@action:inmenu menubar:edit" +msgid "Reset All Model Positions" +msgstr "すべてのモデルのポジションをリセットする" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 +msgctxt "@action:inmenu menubar:edit" +msgid "Reset All Model &Transformations" +msgstr "すべてのモデル&変更点をリセットする" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 +msgctxt "@action:inmenu menubar:file" +msgid "&Open File(s)..." +msgstr "&ファイルを開く(s)…" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +msgctxt "@action:inmenu menubar:file" +msgid "&New Project..." +msgstr "&新しいプロジェクト…" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +msgctxt "@action:inmenu menubar:help" +msgid "Show Engine &Log..." +msgstr "エンジン&ログを表示する" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +msgctxt "@action:inmenu menubar:help" +msgid "Show Configuration Folder" +msgstr "コンフィグレーションのフォルダーを表示する" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +msgctxt "@action:menu" +msgid "Configure setting visibility..." +msgstr "視野のセッティングを構成する" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +msgctxt "@action:menu" +msgid "Browse plugins..." +msgstr "プラグインをみる" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +msgctxt "@action:menu" +msgid "Installed plugins..." +msgstr "インストールされたプラグイン" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +msgctxt "@label:PrintjobStatus" +msgid "Please load a 3D model" +msgstr "3Dモデルをロードしてください。" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +msgctxt "@label:PrintjobStatus" +msgid "Ready to slice" +msgstr "スライスの準備ができました。" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "スライス中…" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +msgctxt "@label:PrintjobStatus %1 is target operation" +msgid "Ready to %1" +msgstr "%1の準備完了" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +msgctxt "@label:PrintjobStatus" +msgid "Unable to Slice" +msgstr "スライスできません。" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +msgctxt "@label:PrintjobStatus" +msgid "Slicing unavailable" +msgstr "スライスが利用不可能" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +msgctxt "@label:Printjob" +msgid "Prepare" +msgstr "準備する" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +msgctxt "@label:Printjob" +msgid "Cancel" +msgstr "キャンセル" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +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:620 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "ファイルを開く(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 "選択したファイルの中に複数のプロジェクトが存在します。1ファイルのみ一度に開けます。ファイルからモデルを先に取り込むことをお勧めします。続けますか?" + +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "すべてをモデルとして取り入れる" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +msgctxt "@title:window" +msgid "Ultimaker Cura" +msgstr "Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "&ファイル" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +msgctxt "@action:inmenu menubar:file" +msgid "&Save Selection to File" +msgstr "&ファイルに選択したものを保存" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +msgctxt "@title:menu menubar:file" +msgid "Save &As..." +msgstr "名前をつけて保存" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +msgctxt "@title:menu menubar:file" +msgid "Save project" +msgstr "プロジェクトを保存" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "&編集" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +msgctxt "@title:menu" +msgid "&View" +msgstr "&ビュー" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +msgctxt "@title:menu" +msgid "&Settings" +msgstr "&設定" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +msgctxt "@title:menu menubar:toplevel" +msgid "&Printer" +msgstr "&プリンター" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +msgctxt "@title:menu" +msgid "&Material" +msgstr "&フィラメント" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +msgctxt "@title:menu" +msgid "&Profile" +msgstr "&プロファイル" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "アクティブエクストルーダーとしてセットする" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "拡張子" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +msgctxt "@title:menu menubar:toplevel" +msgid "P&lugins" +msgstr "プラグイン" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "プレファレンス" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "ヘルプ" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +msgctxt "@action:button" +msgid "Open File" +msgstr "ファイルを開く" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +msgctxt "@title:tab" +msgid "Settings" +msgstr "設定" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +msgctxt "@title:window" +msgid "New project" +msgstr "新しいプロジェクト…" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +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:721 +msgctxt "@window:title" +msgid "Install Plugin" +msgstr "プラグインをインストール" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +msgctxt "@title:window" +msgid "Open File(s)" +msgstr "ファイルを開く(s)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +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が存在します。1つのG-codeのみ一度に開けます。G-codeファイルを開く場合は、1点のみ選んでください。" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +msgctxt "@title:window" +msgid "Save Project" +msgstr "プロジェクトを保存" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "エクストルーダー%1" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1とフィラメント" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:242 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "保存中のプロジェクトサマリーを非表示にする" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "保存" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 +msgctxt "@title:tab" +msgid "Prepare" +msgstr "準備する" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 +msgctxt "@title:tab" +msgid "Monitor" +msgstr "モニター" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +msgctxt "@label" +msgid "Layer Height" +msgstr "レイヤーの高さ" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +msgctxt "@tooltip" +msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +msgstr "カスタムプロファイルが有効になっています。品質スライダーを有効にするには、カスタムタブでデフォルトの品質プロファイルを選択してください" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +msgctxt "@label" +msgid "Print Speed" +msgstr "プリントスピード" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +msgctxt "@label" +msgid "Slower" +msgstr "ゆっくり" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +msgctxt "@label" +msgid "Faster" +msgstr "早く" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "プロファイルの設定がいくつか変更されました。変更を有効にするにはカスタムモードに移動してください。" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +msgctxt "@label" +msgid "Infill" +msgstr "インフィル" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "グラデュアルインフィルはトップに向かうに従ってインフィルの量を増やします。" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +msgctxt "@label" +msgid "Enable gradual" +msgstr "グラデュアルを有効にする" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +msgctxt "@label" +msgid "Generate Support" +msgstr "サポートを生成します。" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +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:764 +msgctxt "@label" +msgid "Support Extruder" +msgstr "サポートエクストルーダー" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +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:839 +msgctxt "@label" +msgid "Build Plate Adhesion" +msgstr "ビルドプレートの接着" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +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:934 +msgctxt "@label" +msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" +msgstr "プリントにヘルプが必要ですか?
    Ultimakerトラブルシューティングガイドを読んでください。" + +# can’t enter japanese +#: /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] "選択したモデルを%1で印刷する" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +msgctxt "@title:window" +msgid "Open project file" +msgstr "プロジェクトを開く" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +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 "これはCuraのプロジェクトファイルです。プロジェクトとしてあけますか、それともモデルのみ取り込みますか?" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@action:button" +msgid "Open as project" +msgstr "プロジェクトを開く" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +msgctxt "@action:button" +msgid "Import models" +msgstr "モデルを取り込む" + +#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 +msgctxt "@title:window" +msgid "Engine Log" +msgstr "エンジンログ" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +msgctxt "@label" +msgid "Material" +msgstr "フィラメント" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +msgctxt "@label" +msgid "Check compatibility" +msgstr "互換性の確認" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +msgctxt "@tooltip" +msgid "Click to check the material compatibility on Ultimaker.com." +msgstr "Ultimaker.comにてマテリアルのコンパティビリティを調べるためにクリック" + +#: MachineSettingsAction/plugin.json +msgctxt "description" +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" +msgstr "プリンターの設定を変更(印刷ボリューム、ノズルサイズ、その他)" + +#: MachineSettingsAction/plugin.json +msgctxt "name" +msgid "Machine Settings action" +msgstr "プリンターの設定アクション" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "透視ビューイング" + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "透視ビュー" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "X3Dファイルを読むこむためのサポートを供給する" + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "X3Dリーダー" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes GCode to a file." +msgstr "ファイルにGCodeを書く" + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "GCode Writer" +msgstr "GCodeライター" + +#: cura-god-mode-plugin/src/GodMode/plugin.json +msgctxt "description" +msgid "Dump the contents of all settings to a HTML file." +msgstr "HTMLファイルに設定内容を放置する" + +#: cura-god-mode-plugin/src/GodMode/plugin.json +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 "G-codeを承認し、Doodle3D WiFi-ボックスにWifi上にて送る" + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "Doodle3D WiFi-Box" + +#: ChangeLogPlugin/plugin.json +msgctxt "description" +msgid "Shows changes since latest checked version." +msgstr "最新の更新バージョンの変更点を表示する" + +#: ChangeLogPlugin/plugin.json +msgctxt "name" +msgid "Changelog" +msgstr "Changelog" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattend quality changes profile." +msgstr "プロファイルを変更するフラットエンドクオリティーを作成する" + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile flatener" +msgstr "プロファイルフラットナー" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "G-codeを承認し、プリンターに送信する。またプラグインはファームウェアをアップデートできます。" + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "USBプリンティング" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "取り外し可能なドライブホットプラギング及びサポートの書き出しの供給" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +msgstr "取り外し可能なドライブアウトプットデバイスプラグイン" + +#: UM3NetworkPrinting/plugin.json +msgctxt "description" +msgid "Manages network connections to Ultimaker 3 printers" +msgstr "Ultimaker3のプリンターのネットワーク接続を管理する。" + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "UM3ネットワークコネクション" + +#: 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" +msgstr "ソリッドワークスにて特定のファイルを開くことが可能です。その後変換され、Curaに取り込めます。" + +#: CuraSolidWorksPlugin/plugin.json +msgctxt "name" +msgid "SolidWorks Integration" +msgstr "ソリッドワークスインタグレーション" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "シミュレーションビューを提供します。" + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "シミュレーションビュー" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "後処理のためにユーザーが作成したスクリプト用拡張子" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "後処理" + +#: AutoSave/plugin.json +msgctxt "description" +msgid "Automatically saves Preferences, Machines and Profiles after changes." +msgstr "変更後プリンターやプロファイルプレファレンスを自動的に保存します、" + +#: AutoSave/plugin.json +msgctxt "name" +msgid "Auto Save" +msgstr "自動保存" + +#: SliceInfoPlugin/plugin.json +msgctxt "description" +msgid "Submits anonymous slice info. Can be disabled through preferences." +msgstr "不特定なスライス情報を提出。プレファレンスの中で無効になる可能性もある。" + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "スライスインフォメーション" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "XMLベースフィラメントのプロファイルを読み書きするための機能を供給する。" + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "フィラメントプロファイル" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "レガシーCura Versionsからプロファイルを取り込むためのサポートを供給する" + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "レガシーCuraプロファイルリーダー" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "g-codeファイルからプロファイルを読み込むサポートを供給する。" + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "GCode Profile Reader" +msgstr "GCodeプロファイルリーダー" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "Cura 2.5 からCura 2.6のコンフィグレーションアップグレート" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +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 "Cura 2.7からCura 3.0のコンフィグレーションアップグレート" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "2.7から3.0にバージョンアップグレート" + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." +msgstr "Cura 3.0からCura 3.1のコンフィグレーションアップグレート" + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.0 to 3.1" +msgstr "3.0から3.1にバージョンアップグレート" + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." +msgstr "Cura 2.6 からCura 2.7のコンフィグレーションアップグレート" + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "2.6から2.7にバージョンアップグレート" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "Cura 2.1 からCura 2.2のコンフィグレーションアップグレート" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "2.1 から2.2にバージョンアップグレート" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "Cura 2.2 からCura 2.4のコンフィグレーションアップグレート" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "2.2 から2.4にバージョンアップグレート" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "2Dの画像ファイルからプリント可能なジオメトリーを生成を可能にする" + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "画像リーダー" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "CuraEngineスライシングバックエンドにリンクを供給する" + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "Curaエンジンバックエンド" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "各モデル設定を与える" + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "各モデル設定ツール" + +#: cura-siemensnx-plugin/plugin.json +msgctxt "description" +msgid "Helps you to install an 'export to Cura' button in Siemens NX." +msgstr "Siemens NXの「Curaにエクスポート」ボタンをインストールできるようにします。" + +#: cura-siemensnx-plugin/plugin.json +msgctxt "name" +msgid "Siemens NX Integration" +msgstr "Siemens NX Integration" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "3MFファイルを読むこむためのサポートを供給する" + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "3MFリーダー" + +#: PluginBrowser/plugin.json +msgctxt "description" +msgid "Find, manage and install new plugins." +msgstr "探す、新しいプラグインを管理、インストール" + +#: PluginBrowser/plugin.json +msgctxt "name" +msgid "Plugin Browser" +msgstr "プラグインブラウザー" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "ノーマルなソリットメッシュビューを供給する" + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "ソリッドビュー" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "G-codeファイルの読み込み、表示を許可する" + +#: GCodeReader/plugin.json +msgctxt "name" +msgid "G-code Reader" +msgstr "G-codeリーダー" + +#: CuraProfileWriter/plugin.json +msgctxt "description" +msgid "Provides support for exporting Cura profiles." +msgstr "Curaプロファイルを書き出すためのサポートを供給する" + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Curaプロファイルライター" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "3MFファイルを読むこむためのサポートを供給する" + +#: 3MFWriter/plugin.json +msgctxt "name" +msgid "3MF Writer" +msgstr "3MFリーダー" + +#: UserAgreementPlugin/plugin.json +msgctxt "description" +msgid "Ask the user once if he/she agrees with our license" +msgstr "ライセンスに同意するかどうかユーザーに1回だけ確認する" + +#: UserAgreementPlugin/plugin.json +msgctxt "name" +msgid "UserAgreement" +msgstr "UserAgreement" + +#: UltimakerMachineActions/plugin.json +msgctxt "description" +msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" +msgstr "Ultimakerのプリンターのアクションを供給する(ベッドレベリングウィザード、アップグレードの選択、他)" + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Ultimkerプリンターのアクション" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "Curaプロファイルを取り込むためのサポートを供給する" + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Curaプロファイルリーダー" + +#~ msgctxt "@label:status" +#~ msgid "Blocked" +#~ msgstr "ブロックされました" + +#~ msgctxt "@label:status" +#~ msgid "Can't start print" +#~ msgstr "プリントを開始できません。" + +#~ msgctxt "@action:button" +#~ msgid "Open Connect.." +#~ msgstr "Connect..を開く" + +#~ msgctxt "@info:title" +#~ msgid "Print Details" +#~ msgstr "プリント詳細" + +#~ 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 "{machine_name}が最新の機能を得るために、定期的にファームウェアをアップデートすることをお勧めします。{machine_name}(ネットワーク上で接続)またはUSBにて行ってください。 " + +msgctxt "@item:inlistbox" +msgid "Layer view" +msgstr "レイヤービュー" + +msgctxt "@info:title" +msgid "Layer View" +msgstr "レイヤービュー" + +#~ msgctxt "@menuitem" +#~ msgid "Browse plugins" +#~ msgstr "プラグインを見る" + +#~ msgctxt "@info:title" +#~ msgid "Export Details" +#~ msgstr "詳細を書き出す" + +#~ 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 "" +#~ "

    不可解なエラーが発生しリカバリーできませんでした。

    \n" +#~ "

    この情報をバグとして報告してください。 http://github.com/Ultimaker/Cura/issues

    \n" +#~ " " + +#~ msgctxt "@action:button" +#~ msgid "Open Web Page" +#~ msgstr "ウェブページを開く" + +#~ msgctxt "@action:button" +#~ msgid "Ok" +#~ msgstr "OK" + +#~ msgctxt "@label" +#~ msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +#~ msgstr "このプリンターは、繋がっているUltimaker3プリンターをホストするために設定されていません。" + +#~ msgctxt "@label" +#~ msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +#~ msgstr "このプリンターは繋がっているUltimaker3プリンターの%1グループのホストです。" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "準備中" + +#~ msgctxt "@label" +#~ msgid "Completed on: " +#~ msgstr "完了:" + +#~ msgctxt "@info:tooltip" +#~ msgid "Opens the print jobs page with your default web browser." +#~ msgstr "デフォルトのウェブブラウザーにてプリントジョブを開く" + +#~ msgctxt "@label" +#~ msgid "PRINTER GROUP" +#~ msgstr "プリンターグループ" + +#~ msgctxt "@action:warning" +#~ msgid "Loading a project will clear all models on the buildplate" +#~ msgstr "プロジェクトを入れることでビルド上のモデルがすべて消滅します。" + +#~ 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 "" +#~ "プラグインがライセンスを保持しています。\n" +#~ "このライセンスを承認しプラグインをインストールしてください。\n" +#~ "下記項目に賛成しますか?" + +#~ msgctxt "@label" +#~ msgid "00h 00min" +#~ msgstr "00h 00min" + +#~ msgctxt "@tooltip" +#~ msgid "Time information" +#~ msgstr "Time information" + +#~ msgctxt "@description" +#~ msgid "Print time" +#~ msgstr "プリント時間" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g / ~ %4 %3" +#~ msgstr "%1分 / ~ %2g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g" +#~ msgstr "%1分/ ~ %2g" + +#~ msgctxt "@title:window" +#~ msgid "Cura" +#~ msgstr "Cura" + +#~ msgctxt "@label" +#~ msgid "Check material compatibility" +#~ msgstr "マテリアルのコンパティビリティを確認" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection (Cluster)" +#~ msgstr "UM3 ネットワークコネクション(クラスター)" + +#~ msgctxt "description" +#~ msgid "Provides the Layer view." +#~ msgstr "レイヤービューを供給する" + +msgctxt "name" +msgid "Layer View" +msgstr "レイヤービュー" diff --git a/resources/i18n/ja_JP/fdmextruder.def.json.po b/resources/i18n/ja_JP/fdmextruder.def.json.po index e1afc955f2..d1ff38fcf2 100644 --- a/resources/i18n/ja_JP/fdmextruder.def.json.po +++ b/resources/i18n/ja_JP/fdmextruder.def.json.po @@ -2,13 +2,13 @@ # 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 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-10-02 17:55+0900\n" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Brule\n" "Language-Team: Brule\n" "Language: ja_JP\n" @@ -195,4 +195,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/ja_JP/fdmprinter.def.json.po b/resources/i18n/ja_JP/fdmprinter.def.json.po index aab090bb15..56ba768bc9 100644 --- a/resources/i18n/ja_JP/fdmprinter.def.json.po +++ b/resources/i18n/ja_JP/fdmprinter.def.json.po @@ -2,13 +2,13 @@ # 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 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-10-04 14:30+0900\n" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Brule\n" "Language-Team: Brule\n" "Language: ja_JP\n" @@ -21,9 +21,9 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_settings label" msgid "Machine" -msgstr "" -#msgstr "プリンター" +msgstr "プリンター" +# msgstr "プリンター" #: fdmprinter.def.json msgctxt "machine_settings description" msgid "Machine specific settings" @@ -32,9 +32,9 @@ msgstr "プリンター詳細設定" #: fdmprinter.def.json msgctxt "machine_name label" msgid "Machine Type" -msgstr "" -#msgstr "プリンタータイプ" +msgstr "プリンターのタイプ" +# msgstr "プリンタータイプ" #: fdmprinter.def.json msgctxt "machine_name description" msgid "The name of your 3D printer model." @@ -43,9 +43,9 @@ msgstr "3Dプリンターの機種名" #: fdmprinter.def.json msgctxt "machine_show_variants label" msgid "Show Machine Variants" -msgstr "" -#msgstr "プリンターのバリエーションを表示する" +msgstr "プリンターのバリエーションの表示" +# msgstr "プリンターのバリエーションを表示する" #: fdmprinter.def.json msgctxt "machine_show_variants description" msgid "Whether to show the different variants of this machine, which are described in separate json files." @@ -54,39 +54,35 @@ msgstr "このプリンターのバリエーションを表示するかどうか #: fdmprinter.def.json msgctxt "machine_start_gcode label" msgid "Start GCode" -msgstr "" -#msgstr "GCodeを開始する" +msgstr "GCode開始" +# msgstr "GCodeを開始する" #: fdmprinter.def.json msgctxt "machine_start_gcode description" msgid "" "Gcode commands to be executed at the very start - separated by \n" "." -msgstr "" -"Gcodeのコマンドは −で始まり\n" -"で区切られます。" +msgstr "Gcodeのコマンドは −で始まり\nで区切られます。" #: fdmprinter.def.json msgctxt "machine_end_gcode label" msgid "End GCode" -msgstr "" -#msgstr "GCodeを終了する" +msgstr "GCode終了" +# msgstr "GCodeを終了する" #: fdmprinter.def.json msgctxt "machine_end_gcode description" msgid "" "Gcode commands to be executed at the very end - separated by \n" "." -msgstr "" -"Gcodeのコマンドは −で始まり\n" -"で区切られます。" +msgstr "Gcodeのコマンドは −で始まり\nで区切られます。" #: fdmprinter.def.json msgctxt "material_guid label" msgid "Material GUID" -msgstr "" -#msgstr "マテリアルGUID" +msgstr "マテリアルGUID" +# msgstr "マテリアルGUID" #: fdmprinter.def.json msgctxt "material_guid description" msgid "GUID of the material. This is set automatically. " @@ -95,9 +91,9 @@ msgstr "マテリアルのGUID。これは自動的に設定されます。" #: fdmprinter.def.json msgctxt "material_bed_temp_wait label" msgid "Wait for Build Plate Heatup" -msgstr "" -#msgstr "ビルドプレート加熱の待機" +msgstr "ビルドプレート加熱待ち時間" +# msgstr "ビルドプレート加熱の待機" #: fdmprinter.def.json msgctxt "material_bed_temp_wait description" msgid "Whether to insert a command to wait until the build plate temperature is reached at the start." @@ -106,9 +102,9 @@ msgstr "開始時にビルドプレートが温度に達するまで待つコマ #: fdmprinter.def.json msgctxt "material_print_temp_wait label" msgid "Wait for Nozzle Heatup" -msgstr "" -#msgstr "ノズル加熱の待機" +msgstr "ノズル加熱待ち時間" +# msgstr "ノズル加熱の待機" #: fdmprinter.def.json msgctxt "material_print_temp_wait description" msgid "Whether to wait until the nozzle temperature is reached at the start." @@ -117,9 +113,9 @@ msgstr "開始時にノズルの温度が達するまで待つかどうか。" #: fdmprinter.def.json msgctxt "material_print_temp_prepend label" msgid "Include Material Temperatures" -msgstr "" -#msgstr "マテリアル温度を含む" +msgstr "マテリアル温度を含む" +# msgstr "マテリアル温度を含む" #: fdmprinter.def.json msgctxt "material_print_temp_prepend description" msgid "Whether to include nozzle temperature commands at the start of the gcode. When the start_gcode already contains nozzle temperature commands Cura frontend will automatically disable this setting." @@ -128,9 +124,9 @@ msgstr "GCodeの開始時にノズル温度設定を含めるかどうか。 既 #: fdmprinter.def.json msgctxt "material_bed_temp_prepend label" msgid "Include Build Plate Temperature" -msgstr "" -#msgstr "ビルドプレートの温度を含める" +msgstr "ビルドプレート温度を含む" +# msgstr "ビルドプレートの温度を含める" #: fdmprinter.def.json msgctxt "material_bed_temp_prepend description" msgid "Whether to include build plate temperature commands at the start of the gcode. When the start_gcode already contains build plate temperature commands Cura frontend will automatically disable this setting." @@ -139,9 +135,9 @@ msgstr "GCodeの開始時にビルドプレート温度設定を含めるかど #: fdmprinter.def.json msgctxt "machine_width label" msgid "Machine Width" -msgstr "" -#msgstr "プリンターの幅" +msgstr "プリンターの幅" +# msgstr "プリンターの幅" #: fdmprinter.def.json msgctxt "machine_width description" msgid "The width (X-direction) of the printable area." @@ -150,9 +146,9 @@ msgstr "造形可能領域の幅(X方向)。" #: fdmprinter.def.json msgctxt "machine_depth label" msgid "Machine Depth" -msgstr "" -#msgstr "プリンターの奥行き" +msgstr "プリンターの奥行" +# msgstr "プリンターの奥行き" #: fdmprinter.def.json msgctxt "machine_depth description" msgid "The depth (Y-direction) of the printable area." @@ -161,9 +157,9 @@ msgstr "造形可能領域の幅(Y方向)。" #: fdmprinter.def.json msgctxt "machine_shape label" msgid "Build Plate Shape" -msgstr "" -#msgstr "ビルドプレートの形" +msgstr "ビルドプレートの形状" +# msgstr "ビルドプレートの形" #: fdmprinter.def.json msgctxt "machine_shape description" msgid "The shape of the build plate without taking unprintable areas into account." @@ -172,21 +168,21 @@ msgstr "造形不可領域を考慮しないビルドプレートの形状。" #: fdmprinter.def.json msgctxt "machine_shape option rectangular" msgid "Rectangular" -msgstr "" -#msgstr "長方形" +msgstr "長方形" +# msgstr "長方形" #: fdmprinter.def.json msgctxt "machine_shape option elliptic" msgid "Elliptic" -msgstr "" -#msgstr "楕円形" +msgstr "楕円形" +# msgstr "楕円形" #: fdmprinter.def.json msgctxt "machine_height label" msgid "Machine Height" -msgstr "" -#msgstr "プリンターの高さ" +msgstr "プリンターの高さ" +# msgstr "プリンターの高さ" #: fdmprinter.def.json msgctxt "machine_height description" msgid "The height (Z-direction) of the printable area." @@ -195,9 +191,9 @@ msgstr "造形可能領域の幅(Z方向)。" #: fdmprinter.def.json msgctxt "machine_heated_bed label" msgid "Has Heated Build Plate" -msgstr "" -#msgstr "加熱したビルドプレート" +msgstr "加熱式ビルドプレートあり" +# msgstr "加熱したビルドプレート" #: fdmprinter.def.json msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." @@ -206,9 +202,9 @@ msgstr "プリンターに加熱式ビルドプレートが付属しているか #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" -msgstr "" -#msgstr "センター原点" +msgstr "中心位置" +# msgstr "センター原点" #: fdmprinter.def.json msgctxt "machine_center_is_zero description" msgid "Whether the X/Y coordinates of the zero position of the printer is at the center of the printable area." @@ -217,9 +213,9 @@ msgstr "プリンタのゼロポジションのX / Y座標が印刷可能領域 #: fdmprinter.def.json msgctxt "machine_extruder_count label" msgid "Number of Extruders" -msgstr "" -#msgstr "エクストルーダーの数" +msgstr "エクストルーダーの数" +# msgstr "エクストルーダーの数" #: fdmprinter.def.json msgctxt "machine_extruder_count description" msgid "Number of extruder trains. An extruder train is the combination of a feeder, bowden tube, and nozzle." @@ -228,9 +224,9 @@ msgstr "エクストルーダーの数。エクストルーダーの単位は、 #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" msgid "Outer nozzle diameter" -msgstr "" -#msgstr "ノズル外径" +msgstr "ノズル外径" +# msgstr "ノズル外径" #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter description" msgid "The outer diameter of the tip of the nozzle." @@ -239,9 +235,9 @@ msgstr "ノズルの外径。" #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" msgid "Nozzle length" -msgstr "" -#msgstr "ノズルの長さ" +msgstr "ノズル長さ" +# msgstr "ノズルの長さ" #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance description" msgid "The height difference between the tip of the nozzle and the lowest part of the print head." @@ -250,9 +246,9 @@ msgstr "ノズル先端とプリントヘッドの最下部との高さの差。 #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" msgid "Nozzle angle" -msgstr "" -#msgstr "ノズル角度" +msgstr "ノズル角度" +# msgstr "ノズル角度" #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle description" msgid "The angle between the horizontal plane and the conical part right above the tip of the nozzle." @@ -261,9 +257,9 @@ msgstr "水平面とノズル直上の円錐部分との間の角度。" #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" msgid "Heat zone length" -msgstr "" -#msgstr "加熱範囲" +msgstr "ノズル加熱長さ" +# msgstr "加熱範囲" #: fdmprinter.def.json msgctxt "machine_heat_zone_length description" msgid "The distance from the tip of the nozzle in which heat from the nozzle is transferred to the filament." @@ -272,7 +268,7 @@ msgstr "ノズルからの熱がフィラメントに伝達される距離。" #: fdmprinter.def.json msgctxt "machine_filament_park_distance label" msgid "Filament Park Distance" -msgstr "" +msgstr "フィラメント留め位置" #: fdmprinter.def.json msgctxt "machine_filament_park_distance description" @@ -282,7 +278,7 @@ msgstr "エクストルーダーが使用していない時、フィラメント #: fdmprinter.def.json msgctxt "machine_nozzle_temp_enabled label" msgid "Enable Nozzle Temperature Control" -msgstr "" +msgstr "ノズルの温度管理を有効にする" #: fdmprinter.def.json msgctxt "machine_nozzle_temp_enabled description" @@ -292,7 +288,7 @@ msgstr "Curaから温度を制御するかどうか。これをオフにして #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" msgid "Heat up speed" -msgstr "" +msgstr "加熱速度" #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed description" @@ -302,7 +298,7 @@ msgstr "ノズルが加熱する速度(℃/ s)は、通常の印刷時温度 #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" msgid "Cool down speed" -msgstr "" +msgstr "冷却速度" #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed description" @@ -312,7 +308,7 @@ msgstr "ノズルが冷却される速度(℃/ s)は、通常の印刷温度 #: fdmprinter.def.json msgctxt "machine_min_cool_heat_time_window label" msgid "Minimal Time Standby Temperature" -msgstr "" +msgstr "スタンバイ温度までの最短時間" #: fdmprinter.def.json msgctxt "machine_min_cool_heat_time_window description" @@ -322,7 +318,7 @@ msgstr "ノズルが冷却される前にエクストルーダーが静止しな #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" msgid "Gcode flavour" -msgstr "" +msgstr "Gcodeフレーバー" #: fdmprinter.def.json msgctxt "machine_gcode_flavor description" @@ -332,60 +328,60 @@ msgstr "生成するGコードの種類" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option RepRap (Marlin/Sprinter)" msgid "Marlin" -msgstr "" -#msgstr "Marlin" +msgstr "Marlin" +# msgstr "Marlin" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option RepRap (Volumetric)" msgid "Marlin (Volumetric)" -msgstr "" +msgstr "Marlin (Volumetric)" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option RepRap (RepRap)" msgid "RepRap" -msgstr "" -#msgstr "RepRap" +msgstr "RepRap" +# msgstr "RepRap" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option UltiGCode" msgid "Ultimaker 2" -msgstr "" -#msgstr "Ultimaker 2" +msgstr "Ultimaker 2" +# msgstr "Ultimaker 2" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option Griffin" msgid "Griffin" -msgstr "" -#msgstr "Griffin" +msgstr "Griffin" +# msgstr "Griffin" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option Makerbot" msgid "Makerbot" -msgstr "" -#msgstr "Makerbot" +msgstr "Makerbot" +# msgstr "Makerbot" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option BFB" msgid "Bits from Bytes" -msgstr "" -#msgstr "Bits from Bytes" +msgstr "Bits from Bytes" +# msgstr "Bits from Bytes" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option MACH3" msgid "Mach3" -msgstr "" -#msgstr "Mach3" +msgstr "Mach3" +# msgstr "Mach3" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" -msgstr "" -#msgstr "Repetier" +msgstr "Repetier" +# msgstr "Repetier" #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" msgid "Disallowed areas" -msgstr "" +msgstr "拒否エリア" #: fdmprinter.def.json msgctxt "machine_disallowed_areas description" @@ -395,7 +391,7 @@ msgstr "プリントヘッドの領域を持つポリゴンのリストは入力 #: fdmprinter.def.json msgctxt "nozzle_disallowed_areas label" msgid "Nozzle Disallowed Areas" -msgstr "" +msgstr "ノズル拒否エリア" #: fdmprinter.def.json msgctxt "nozzle_disallowed_areas description" @@ -405,7 +401,7 @@ msgstr "ノズルが入ることができない領域を持つポリゴンのリ #: fdmprinter.def.json msgctxt "machine_head_polygon label" msgid "Machine head polygon" -msgstr "" +msgstr "プリントヘッドポリゴン" #: fdmprinter.def.json msgctxt "machine_head_polygon description" @@ -415,7 +411,7 @@ msgstr "プリントヘッドの2Dシルエット(ファンキャップは除 #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" msgid "Machine head & Fan polygon" -msgstr "" +msgstr "プリントヘッドとファンポリゴン" #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon description" @@ -425,7 +421,7 @@ msgstr "プリントヘッドの2Dシルエット(ファンキャップが含 #: fdmprinter.def.json msgctxt "gantry_height label" msgid "Gantry height" -msgstr "" +msgstr "ガントリー高さ" #: fdmprinter.def.json msgctxt "gantry_height description" @@ -435,9 +431,9 @@ msgstr "ノズルの先端とガントリーシステムの高さの差(X軸 #: fdmprinter.def.json msgctxt "machine_nozzle_id label" msgid "Nozzle ID" -msgstr "" -#msgstr "ノズル ID" +msgstr "ノズルID" +# msgstr "ノズル ID" #: fdmprinter.def.json msgctxt "machine_nozzle_id description" msgid "The nozzle ID for an extruder train, such as \"AA 0.4\" and \"BB 0.8\"." @@ -446,7 +442,7 @@ msgstr "\"AA 0.4\"や\"BB 0.8\"などのノズルID" #: fdmprinter.def.json msgctxt "machine_nozzle_size label" msgid "Nozzle Diameter" -msgstr "" +msgstr "ノズル内径" #: fdmprinter.def.json msgctxt "machine_nozzle_size description" @@ -456,7 +452,7 @@ msgstr "ノズルの内径。標準以外のノズルを使用する場合は、 #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" msgid "Offset With Extruder" -msgstr "" +msgstr "エクストルーダーのオフセット" #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords description" @@ -466,7 +462,7 @@ msgstr "エクストルーダーのオフセットを座標システムに適用 #: fdmprinter.def.json msgctxt "extruder_prime_pos_z label" msgid "Extruder Prime Z Position" -msgstr "" +msgstr "エクストルーダーのZ座標" #: fdmprinter.def.json msgctxt "extruder_prime_pos_z description" @@ -476,7 +472,7 @@ msgstr "印刷開始時にノズルがポジションを確認するZ座標。" #: fdmprinter.def.json msgctxt "extruder_prime_pos_abs label" msgid "Absolute Extruder Prime Position" -msgstr "" +msgstr "エクストルーダーの絶対位置" #: fdmprinter.def.json msgctxt "extruder_prime_pos_abs description" @@ -486,7 +482,7 @@ msgstr "最後のヘッドの既知位置からではなく、エクストルー #: fdmprinter.def.json msgctxt "machine_max_feedrate_x label" msgid "Maximum Speed X" -msgstr "" +msgstr "最大速度X" #: fdmprinter.def.json msgctxt "machine_max_feedrate_x description" @@ -496,7 +492,7 @@ msgstr "X方向のモーターの最大速度。" #: fdmprinter.def.json msgctxt "machine_max_feedrate_y label" msgid "Maximum Speed Y" -msgstr "" +msgstr "最大速度Y" #: fdmprinter.def.json msgctxt "machine_max_feedrate_y description" @@ -506,7 +502,7 @@ msgstr "Y方向のモーターの最大速度。" #: fdmprinter.def.json msgctxt "machine_max_feedrate_z label" msgid "Maximum Speed Z" -msgstr "" +msgstr "最大速度Z" #: fdmprinter.def.json msgctxt "machine_max_feedrate_z description" @@ -516,7 +512,7 @@ msgstr "Z方向のモーターの最大速度。" #: fdmprinter.def.json msgctxt "machine_max_feedrate_e label" msgid "Maximum Feedrate" -msgstr "" +msgstr "最大送り速度" #: fdmprinter.def.json msgctxt "machine_max_feedrate_e description" @@ -526,7 +522,7 @@ msgstr "フィラメントの最大速度。" #: fdmprinter.def.json msgctxt "machine_max_acceleration_x label" msgid "Maximum Acceleration X" -msgstr "" +msgstr "最大加速度X" #: fdmprinter.def.json msgctxt "machine_max_acceleration_x description" @@ -536,7 +532,7 @@ msgstr "X方向のモーターの最大速度。" #: fdmprinter.def.json msgctxt "machine_max_acceleration_y label" msgid "Maximum Acceleration Y" -msgstr "" +msgstr "最大加速度Y" #: fdmprinter.def.json msgctxt "machine_max_acceleration_y description" @@ -546,7 +542,7 @@ msgstr "Y方向のモーターの最大加速度。" #: fdmprinter.def.json msgctxt "machine_max_acceleration_z label" msgid "Maximum Acceleration Z" -msgstr "" +msgstr "最大加速度Z" #: fdmprinter.def.json msgctxt "machine_max_acceleration_z description" @@ -556,7 +552,7 @@ msgstr "Z方向のモーターの最大加速度。" #: fdmprinter.def.json msgctxt "machine_max_acceleration_e label" msgid "Maximum Filament Acceleration" -msgstr "" +msgstr "フィラメント最大加速度" #: fdmprinter.def.json msgctxt "machine_max_acceleration_e description" @@ -566,7 +562,7 @@ msgstr "フィラメントのモーターの最大加速度。" #: fdmprinter.def.json msgctxt "machine_acceleration label" msgid "Default Acceleration" -msgstr "" +msgstr "デフォルト加速度" #: fdmprinter.def.json msgctxt "machine_acceleration description" @@ -576,7 +572,7 @@ msgstr "プリントヘッド移動のデフォルトの加速度。" #: fdmprinter.def.json msgctxt "machine_max_jerk_xy label" msgid "Default X-Y Jerk" -msgstr "" +msgstr "X-Yデフォルトジャーク" #: fdmprinter.def.json msgctxt "machine_max_jerk_xy description" @@ -586,7 +582,7 @@ msgstr "水平面内での移動のデフォルトジャーク。" #: fdmprinter.def.json msgctxt "machine_max_jerk_z label" msgid "Default Z Jerk" -msgstr "" +msgstr "Zデフォルトジャーク" #: fdmprinter.def.json msgctxt "machine_max_jerk_z description" @@ -596,7 +592,7 @@ msgstr "Z方向のモーターのデフォルトジャーク。" #: fdmprinter.def.json msgctxt "machine_max_jerk_e label" msgid "Default Filament Jerk" -msgstr "" +msgstr "フィラメントデフォルトジャーク" #: fdmprinter.def.json msgctxt "machine_max_jerk_e description" @@ -606,7 +602,7 @@ msgstr "フィラメントのモーターのデフォルトジャーク。" #: fdmprinter.def.json msgctxt "machine_minimum_feedrate label" msgid "Minimum Feedrate" -msgstr "" +msgstr "最小送り速度" #: fdmprinter.def.json msgctxt "machine_minimum_feedrate description" @@ -616,9 +612,9 @@ msgstr "プリントヘッドの最小移動速度。" #: fdmprinter.def.json msgctxt "resolution label" msgid "Quality" -msgstr "" -#msgstr "品質" +msgstr "品質" +# msgstr "品質" #: fdmprinter.def.json msgctxt "resolution description" msgid "All settings that influence the resolution of the print. These settings have a large impact on the quality (and print time)" @@ -627,9 +623,9 @@ msgstr "プリントの解像度に影響を与えるすべての設定。これ #: fdmprinter.def.json msgctxt "layer_height label" msgid "Layer Height" -msgstr "" -#msgstr "積層ピッチ" +msgstr "レイヤー高さ" +# msgstr "積層ピッチ" #: fdmprinter.def.json msgctxt "layer_height description" msgid "The height of each layer in mm. Higher values produce faster prints in lower resolution, lower values produce slower prints in higher resolution." @@ -638,17 +634,42 @@ msgstr "各レイヤーの高さ(mm)。値を大きくすると早く印刷 #: fdmprinter.def.json msgctxt "layer_height_0 label" msgid "Initial Layer Height" -msgstr "" +msgstr "初期レイヤー高さ" #: fdmprinter.def.json msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "初期レイヤーの高さ(mm)。厚い初期層はビルドプレートへの接着を容易にする。" +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "スライス公差" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "表面を斜めにスライスする方法を指定します。レイヤーの領域は、レイヤーの中央がサーフェス(中央)と交差する位置に基づいて生成できます。また、各層は、レイヤーの高さを通してボリュームの内側に収まる領域を持つ(排他)か、またはレイヤー内の任意の場所内に収まる領域を持っています(包括)。排他は最も細かく、包括は最もフィットし、中間は時間がかかります。" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "中間" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "排他" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "包括" + #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" -msgstr "" +msgstr "ライン幅" #: fdmprinter.def.json msgctxt "line_width description" @@ -658,7 +679,7 @@ msgstr "1ラインの幅。一般に、各ラインの幅は、ノズルの幅 #: fdmprinter.def.json msgctxt "wall_line_width label" msgid "Wall Line Width" -msgstr "" +msgstr "ウォールライン幅" #: fdmprinter.def.json msgctxt "wall_line_width description" @@ -668,7 +689,7 @@ msgstr "ウォールラインの幅。" #: fdmprinter.def.json msgctxt "wall_line_width_0 label" msgid "Outer Wall Line Width" -msgstr "" +msgstr "外側ウォールライン幅" #: fdmprinter.def.json msgctxt "wall_line_width_0 description" @@ -678,7 +699,7 @@ msgstr "最も外側のウォールラインの幅。この値を下げると、 #: fdmprinter.def.json msgctxt "wall_line_width_x label" msgid "Inner Wall(s) Line Width" -msgstr "" +msgstr "内側ウォールライン幅" #: fdmprinter.def.json msgctxt "wall_line_width_x description" @@ -688,9 +709,9 @@ msgstr "一番外側のウォールラインを除くすべてのウォールラ #: fdmprinter.def.json msgctxt "roofing_line_width label" msgid "Top Surface Skin Line Width" -msgstr "" -#msgstr "上表面スキンの線幅" +msgstr "最上面のライン幅" +# msgstr "上表面スキンの線幅" #: fdmprinter.def.json msgctxt "roofing_line_width description" msgid "Width of a single line of the areas at the top of the print." @@ -699,7 +720,7 @@ msgstr "プリントの上部の 線の幅。" #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" -msgstr "" +msgstr "上下面ライン幅" #: fdmprinter.def.json msgctxt "skin_line_width description" @@ -709,7 +730,7 @@ msgstr "上辺/底辺線のライン幅。" #: fdmprinter.def.json msgctxt "infill_line_width label" msgid "Infill Line Width" -msgstr "" +msgstr "インフィルラインの幅" #: fdmprinter.def.json msgctxt "infill_line_width description" @@ -719,7 +740,7 @@ msgstr "インフィル線の幅。" #: fdmprinter.def.json msgctxt "skirt_brim_line_width label" msgid "Skirt/Brim Line Width" -msgstr "" +msgstr "スカート/ブリムラインの幅" #: fdmprinter.def.json msgctxt "skirt_brim_line_width description" @@ -729,7 +750,7 @@ msgstr "単一のスカートまたはブリムラインの幅。" #: fdmprinter.def.json msgctxt "support_line_width label" msgid "Support Line Width" -msgstr "" +msgstr "サポートライン幅" #: fdmprinter.def.json msgctxt "support_line_width description" @@ -739,7 +760,7 @@ msgstr "単一のサポート構造のライン幅。" #: fdmprinter.def.json msgctxt "support_interface_line_width label" msgid "Support Interface Line Width" -msgstr "" +msgstr "サポート面のライン幅" #: fdmprinter.def.json msgctxt "support_interface_line_width description" @@ -749,9 +770,9 @@ msgstr "サポートのルーフ、フロアのライン幅" #: fdmprinter.def.json msgctxt "support_roof_line_width label" msgid "Support Roof Line Width" -msgstr "" -#msgstr "サポートルーフライン幅" +msgstr "サポートルーフのライン幅" +# msgstr "サポートルーフライン幅" #: fdmprinter.def.json msgctxt "support_roof_line_width description" msgid "Width of a single support roof line." @@ -760,9 +781,9 @@ msgstr "サポートルーフのライン一幅。" #: fdmprinter.def.json msgctxt "support_bottom_line_width label" msgid "Support Floor Line Width" -msgstr "" -#msgstr "サポートフロアライン幅" +msgstr "サポートフロアのライン幅" +# msgstr "サポートフロアライン幅" #: fdmprinter.def.json msgctxt "support_bottom_line_width description" msgid "Width of a single support floor line." @@ -771,7 +792,7 @@ msgstr "サポートのフロアのラインの一幅。" #: fdmprinter.def.json msgctxt "prime_tower_line_width label" msgid "Prime Tower Line Width" -msgstr "" +msgstr "プライムタワーのライン幅" #: fdmprinter.def.json msgctxt "prime_tower_line_width description" @@ -781,9 +802,9 @@ msgstr "単一のプライムタワーラインの幅。" #: fdmprinter.def.json msgctxt "initial_layer_line_width_factor label" msgid "Initial Layer Line Width" -msgstr "" -#msgstr "初期レイヤー線幅" +msgstr "初期レイヤーのライン幅" +# msgstr "初期レイヤー線幅" #: fdmprinter.def.json msgctxt "initial_layer_line_width_factor description" msgid "Multiplier of the line width on the first layer. Increasing this could improve bed adhesion." @@ -792,20 +813,30 @@ msgstr "最初のレイヤーに線幅の乗数です。この値を増やすと #: fdmprinter.def.json msgctxt "shell label" msgid "Shell" -msgstr "" -#msgstr "外郭" +msgstr "外郭" +# msgstr "外郭" #: fdmprinter.def.json 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" -msgstr "" -#msgstr "外側印刷用エクストルーダー" +msgstr "外壁用エクストルーダー" +# msgstr "外側印刷用エクストルーダー" #: fdmprinter.def.json msgctxt "wall_0_extruder_nr description" msgid "The extruder train used for printing the outer wall. This is used in multi-extrusion." @@ -813,10 +844,10 @@ msgstr "外壁印刷用のエクストルーダー。デュアルノズル印刷 #: fdmprinter.def.json msgctxt "wall_x_extruder_nr label" -msgid "Inner Walls Extruder" -msgstr "" -#msgstr "内側用エクストルーダー" +msgid "Inner Wall Extruder" +msgstr "内壁用エクストルーダー" +# msgstr "内側用エクストルーダー" #: fdmprinter.def.json msgctxt "wall_x_extruder_nr description" msgid "The extruder train used for printing the inner walls. This is used in multi-extrusion." @@ -825,7 +856,7 @@ msgstr "内壁印刷用のエクストルーダー。デュアルノズル印刷 #: fdmprinter.def.json msgctxt "wall_thickness label" msgid "Wall Thickness" -msgstr "" +msgstr "壁の厚さ" #: fdmprinter.def.json msgctxt "wall_thickness description" @@ -835,9 +866,9 @@ msgstr "壁の厚さ。この値をラインの幅で割ることで壁の数が #: fdmprinter.def.json msgctxt "wall_line_count label" msgid "Wall Line Count" -msgstr "" -#msgstr "壁の線本数" +msgstr "ウォールライン数" +# msgstr "壁の線本数" #: fdmprinter.def.json msgctxt "wall_line_count description" msgid "The number of walls. When calculated by the wall thickness, this value is rounded to a whole number." @@ -846,9 +877,9 @@ msgstr "ウォールの数。厚さから計算された場合、この値は整 #: fdmprinter.def.json msgctxt "wall_0_wipe_dist label" msgid "Outer Wall Wipe Distance" -msgstr "" -#msgstr "外壁のワイピング距離" +msgstr "外壁移動距離" +# msgstr "外壁のワイピング距離" #: fdmprinter.def.json msgctxt "wall_0_wipe_dist description" msgid "Distance of a travel move inserted after the outer wall, to hide the Z seam better." @@ -857,9 +888,9 @@ msgstr "外壁の後に挿入された移動の距離はZシームをよりよ #: fdmprinter.def.json msgctxt "roofing_extruder_nr label" msgid "Top Surface Skin Extruder" -msgstr "" -#msgstr "上層表面スキンエクストルーダー" +msgstr "上部表面用エクストルーダー" +# msgstr "上層表面スキンエクストルーダー" #: fdmprinter.def.json msgctxt "roofing_extruder_nr description" msgid "The extruder train used for printing the top most skin. This is used in multi-extrusion." @@ -868,9 +899,9 @@ msgstr "上部の表面印刷用のエクストルーダー。デュアルノズ #: fdmprinter.def.json msgctxt "roofing_layer_count label" msgid "Top Surface Skin Layers" -msgstr "" -#msgstr "上の表皮層" +msgstr "上部表面レイヤー" +# msgstr "上の表皮層" #: fdmprinter.def.json msgctxt "roofing_layer_count description" msgid "The number of top most skin layers. Usually only one top most layer is sufficient to generate higher quality top surfaces." @@ -879,9 +910,9 @@ msgstr "上部表面のレイヤー数。通常一層で綺麗に出来上がり #: fdmprinter.def.json msgctxt "roofing_pattern label" msgid "Top Surface Skin Pattern" -msgstr "" -#msgstr "上層表面スキンパターン" +msgstr "上部表面パターン" +# msgstr "上層表面スキンパターン" #: fdmprinter.def.json msgctxt "roofing_pattern description" msgid "The pattern of the top most layers." @@ -890,27 +921,27 @@ msgstr "上層のパターン" #: fdmprinter.def.json msgctxt "roofing_pattern option lines" msgid "Lines" -msgstr "" -#msgstr "線" +msgstr "直線" +# msgstr "線" #: fdmprinter.def.json msgctxt "roofing_pattern option concentric" msgid "Concentric" -msgstr "" -#msgstr "同心" +msgstr "同心円" +# msgstr "同心" #: fdmprinter.def.json msgctxt "roofing_pattern option zigzag" msgid "Zig Zag" -msgstr "" -#msgstr "ジグザグ" +msgstr "ジグザグ" +# msgstr "ジグザグ" #: fdmprinter.def.json msgctxt "roofing_angles label" msgid "Top Surface Skin Line Directions" -msgstr "" -#msgstr "上層表面スキンラインの方向" +msgstr "最上面のラインの向き" +# msgstr "上層表面スキンラインの方向" #: fdmprinter.def.json msgctxt "roofing_angles description" msgid "A list of integer line directions to use when the top surface skin layers use the lines or zig zag pattern. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees)." @@ -919,9 +950,9 @@ msgstr "トップ表面層に縦かジグザグパターンを利用する時に #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" msgid "Top/Bottom Extruder" -msgstr "" -#msgstr "トップ/ボトムエクストルーダー" +msgstr "上部/底面エクストルーダー" +# msgstr "トップ/ボトムエクストルーダー" #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr description" msgid "The extruder train used for printing the top and bottom skin. This is used in multi-extrusion." @@ -930,7 +961,7 @@ msgstr "上部と下部の表面を印刷する時に使われるエクストル #: fdmprinter.def.json msgctxt "top_bottom_thickness label" msgid "Top/Bottom Thickness" -msgstr "" +msgstr "上部/底面の厚さ" #: fdmprinter.def.json msgctxt "top_bottom_thickness description" @@ -940,7 +971,7 @@ msgstr "プリント時の最上面、最底面の厚み。これを積層ピッ #: fdmprinter.def.json msgctxt "top_thickness label" msgid "Top Thickness" -msgstr "" +msgstr "上部厚さ" #: fdmprinter.def.json msgctxt "top_thickness description" @@ -950,7 +981,7 @@ msgstr "プリント時の最上面の厚み。これを積層ピッチで割っ #: fdmprinter.def.json msgctxt "top_layers label" msgid "Top Layers" -msgstr "" +msgstr "上部レイヤー" #: fdmprinter.def.json msgctxt "top_layers description" @@ -960,7 +991,7 @@ msgstr "最上面のレイヤー数。トップの厚さを計算する場合、 #: fdmprinter.def.json msgctxt "bottom_thickness label" msgid "Bottom Thickness" -msgstr "" +msgstr "底面厚さ" #: fdmprinter.def.json msgctxt "bottom_thickness description" @@ -970,7 +1001,7 @@ msgstr "プリント時の最底面の厚み。これを積層ピッチで割っ #: fdmprinter.def.json msgctxt "bottom_layers label" msgid "Bottom Layers" -msgstr "" +msgstr "底面レイヤー" #: fdmprinter.def.json msgctxt "bottom_layers description" @@ -980,7 +1011,7 @@ msgstr "最底面のレイヤー数。下の厚さで計算すると、この値 #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" -msgstr "" +msgstr "上層/底層パターン" #: fdmprinter.def.json msgctxt "top_bottom_pattern description" @@ -990,23 +1021,23 @@ msgstr "上層/底層のパターン。" #: fdmprinter.def.json msgctxt "top_bottom_pattern option lines" msgid "Lines" -msgstr "" +msgstr "直線" #: fdmprinter.def.json msgctxt "top_bottom_pattern option concentric" msgid "Concentric" -msgstr "" -#msgstr "同心" +msgstr "同心円" +# msgstr "同心" #: fdmprinter.def.json msgctxt "top_bottom_pattern option zigzag" msgid "Zig Zag" -msgstr "" +msgstr "ジグザグ" #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 label" msgid "Bottom Pattern Initial Layer" -msgstr "" +msgstr "底層初期レイヤー" #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 description" @@ -1016,22 +1047,22 @@ msgstr "第1層のプリントの底部のパターン。" #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 option lines" msgid "Lines" -msgstr "" +msgstr "直線" #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 option concentric" msgid "Concentric" -msgstr "" +msgstr "同心円" #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 option zigzag" msgid "Zig Zag" -msgstr "" +msgstr "ジグザグ" #: fdmprinter.def.json msgctxt "skin_angles label" msgid "Top/Bottom Line Directions" -msgstr "" +msgstr "上層/底層ラインの向き" #: fdmprinter.def.json msgctxt "skin_angles description" @@ -1041,7 +1072,7 @@ msgstr "上/下のレイヤーが線またはジグザグパターンを使う #: fdmprinter.def.json msgctxt "wall_0_inset label" msgid "Outer Wall Inset" -msgstr "" +msgstr "外壁はめ込み" #: fdmprinter.def.json msgctxt "wall_0_inset description" @@ -1051,7 +1082,7 @@ msgstr "外壁の経路にはめ込む。外壁がノズルよりも小さく、 #: fdmprinter.def.json msgctxt "outer_inset_first label" msgid "Outer Before Inner Walls" -msgstr "" +msgstr "外壁優先" #: fdmprinter.def.json msgctxt "outer_inset_first description" @@ -1061,7 +1092,7 @@ msgstr "有効にすると、壁は外側から内側に順番に印刷します #: fdmprinter.def.json msgctxt "alternate_extra_perimeter label" msgid "Alternate Extra Wall" -msgstr "" +msgstr "代替予備壁" #: fdmprinter.def.json msgctxt "alternate_extra_perimeter description" @@ -1071,7 +1102,7 @@ msgstr "すべてのレイヤーごとに予備の壁を印刷します。この #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_enabled label" msgid "Compensate Wall Overlaps" -msgstr "" +msgstr "壁補正" #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_enabled description" @@ -1081,7 +1112,7 @@ msgstr "すでに壁が設置されている部品の壁の流れを補正しま #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_0_enabled label" msgid "Compensate Outer Wall Overlaps" -msgstr "" +msgstr "外壁補正" #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_0_enabled description" @@ -1091,7 +1122,7 @@ msgstr "すでに壁が設置されている場所にプリントされている #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_x_enabled label" msgid "Compensate Inner Wall Overlaps" -msgstr "" +msgstr "内壁補正" #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_x_enabled description" @@ -1101,7 +1132,7 @@ msgstr "すでに壁が設置されている場所にプリントされている #: fdmprinter.def.json msgctxt "fill_perimeter_gaps label" msgid "Fill Gaps Between Walls" -msgstr "" +msgstr "隙間充填" #: fdmprinter.def.json msgctxt "fill_perimeter_gaps description" @@ -1111,19 +1142,19 @@ msgstr "壁が入らない壁の隙間を埋める。" #: fdmprinter.def.json msgctxt "fill_perimeter_gaps option nowhere" msgid "Nowhere" -msgstr "" +msgstr "対象外" #: fdmprinter.def.json msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" -msgstr "" +msgstr "全対象" #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" -msgstr "" -#msgstr "薄い壁をプリントする" +msgstr "薄壁印刷" +# msgstr "薄い壁をプリントする" #: fdmprinter.def.json msgctxt "fill_outline_gaps description" msgid "Print pieces of the model which are horizontally thinner than the nozzle size." @@ -1132,7 +1163,7 @@ msgstr "ノズルサイズよりも細い壁を作ります" #: fdmprinter.def.json msgctxt "xy_offset label" msgid "Horizontal Expansion" -msgstr "" +msgstr "水平展開" #: fdmprinter.def.json msgctxt "xy_offset description" @@ -1142,9 +1173,9 @@ msgstr "各レイヤーのすべてのポリゴンに適用されるオフセッ #: fdmprinter.def.json msgctxt "xy_offset_layer_0 label" msgid "Initial Layer Horizontal Expansion" -msgstr "" -#msgstr "初期レイヤー水平方向への展開" +msgstr "初期層水平展開" +# msgstr "初期レイヤー水平方向への展開" #: fdmprinter.def.json msgctxt "xy_offset_layer_0 description" msgid "Amount of offset applied to all polygons in the first layer. A negative value can compensate for squishing of the first layer known as \"elephant's foot\"." @@ -1153,7 +1184,7 @@ msgstr "最初のレイヤーのポリゴンに適用されるオフセットの #: fdmprinter.def.json msgctxt "z_seam_type label" msgid "Z Seam Alignment" -msgstr "" +msgstr "Zシーム合わせ" #: fdmprinter.def.json msgctxt "z_seam_type description" @@ -1163,40 +1194,38 @@ msgstr "レイヤーの経路始点。連続するレイヤー経路が同じポ #: fdmprinter.def.json msgctxt "z_seam_type option back" msgid "User Specified" -msgstr "" +msgstr "ユーザー指定" #: fdmprinter.def.json msgctxt "z_seam_type option shortest" msgid "Shortest" -msgstr "" +msgstr "最短" #: fdmprinter.def.json msgctxt "z_seam_type option random" msgid "Random" -msgstr "" +msgstr "ランダム" #: fdmprinter.def.json msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" -msgstr "" -#msgstr "最も鋭利な角" +msgstr "鋭い角" +# msgstr "最も鋭利な角" #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" -msgstr "" +msgstr "ZシームX" #: fdmprinter.def.json msgctxt "z_seam_x description" msgid "The X coordinate of the position near where to start printing each part in a layer." -msgstr "" -"レイヤー内の各印刷を開始するX座\n" -"標の位置。" +msgstr "レイヤー内の各印刷を開始するX座\n標の位置。" #: fdmprinter.def.json msgctxt "z_seam_y label" msgid "Z Seam Y" -msgstr "" +msgstr "ZシームY" #: fdmprinter.def.json msgctxt "z_seam_y description" @@ -1206,9 +1235,9 @@ msgstr "レイヤー内の各パーツの印刷を開始する場所の近くの #: fdmprinter.def.json msgctxt "z_seam_corner label" msgid "Seam Corner Preference" -msgstr "" -#msgstr "薄層のプレファレンス" +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." @@ -1217,33 +1246,33 @@ msgstr "モデル輪郭のコーナーがシーム(縫い目)の位置に影 #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" msgid "None" -msgstr "" -#msgstr "なし" +msgstr "なし" +# msgstr "なし" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_inner" msgid "Hide Seam" -msgstr "" -#msgstr "シームを非表示にする" +msgstr "シーム非表示" +# msgstr "シームを非表示にする" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_outer" msgid "Expose Seam" -msgstr "" -#msgstr "シームを表示する" +msgstr "シーム表示" +# msgstr "シームを表示する" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" -msgstr "" -#msgstr "シームを非表示または表示する" +msgstr "シーム表示/非表示" +# msgstr "シームを非表示または表示する" #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" -msgstr "" -#msgstr "Zシーム関連" +msgstr "相対Zシーム" +# msgstr "Zシーム関連" #: fdmprinter.def.json msgctxt "z_seam_relative description" msgid "When enabled, the z seam coordinates are relative to each part's centre. When disabled, the coordinates define an absolute position on the build plate." @@ -1252,9 +1281,9 @@ msgstr "有効時は、Zシームは各パーツの真ん中に設定されま #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" msgid "Ignore Small Z Gaps" -msgstr "" -#msgstr "小さなZギャップを無視する" +msgstr "小さいZギャップは無視" +# msgstr "小さなZギャップを無視する" #: fdmprinter.def.json 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." @@ -1263,20 +1292,131 @@ msgstr "モデルに垂直方向のギャップが小さくある場合、これ #: fdmprinter.def.json msgctxt "skin_outline_count label" msgid "Extra Skin Wall Count" -msgstr "" -#msgstr "余分な肌壁の本数" +msgstr "外側表面の数" +# 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 "上部/下部パターンの最も外側の部分を同心円の線で置き換えます。 1つまたは2つの線を使用すると、トップ部分の造形が改善されます。" +#: fdmprinter.def.json +msgctxt "ironing_enabled label" +msgid "Enable Ironing" +msgstr "アイロン有効" + +# msgstr "アイロンを有効にする" +#: fdmprinter.def.json +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 "最上層のみアイロン" + +# 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" +msgstr "アイロンパターン" + +# msgstr "アイロン時のパターン" +#: fdmprinter.def.json +msgctxt "ironing_pattern description" +msgid "The pattern to use for ironing top surfaces." +msgstr "アイロンのパターン" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option concentric" +msgid "Concentric" +msgstr "同心円" + +# msgstr "同心" +#: fdmprinter.def.json +msgctxt "ironing_pattern option zigzag" +msgid "Zig Zag" +msgstr "ジグザグ" + +# msgstr "ジグザグ" +#: fdmprinter.def.json +msgctxt "ironing_line_spacing label" +msgid "Ironing Line Spacing" +msgstr "アイロン線のスペース" + +# msgstr "アイロンラインの線隔" +#: fdmprinter.def.json +msgctxt "ironing_line_spacing description" +msgid "The distance between the lines of ironing." +msgstr "アイロンライン同士の距離" + +#: fdmprinter.def.json +msgctxt "ironing_flow label" +msgid "Ironing Flow" +msgstr "アイロンフロー" + +# msgstr "アイロン時のフロー" +#: fdmprinter.def.json +msgctxt "ironing_flow description" +msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." +msgstr "アイロン時にノズルから出しておくフィラメントの量。多少出しておくと裂け目を綺麗にします。ただ出し過ぎると吐出過多になり、端が荒れます。" + +#: fdmprinter.def.json +msgctxt "ironing_inset label" +msgid "Ironing Inset" +msgstr "アイロンインセット" + +# msgstr "アイロンを挿入する" +#: fdmprinter.def.json +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 "アイロン速度" + +# 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 "アイロン加速度" + +# 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 "アイロンジャーク" + +# msgstr "ジャークをアイロンする" +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "アイロン時の最大加速度" + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" -msgstr "" -#msgstr "インフィル" +msgstr "インフィル" +# msgstr "インフィル" #: fdmprinter.def.json msgctxt "infill description" msgid "Infill" @@ -1285,9 +1425,9 @@ msgstr "インフィル" #: fdmprinter.def.json msgctxt "infill_extruder_nr label" msgid "Infill Extruder" -msgstr "" -#msgstr "インフィルエクストルーダー" +msgstr "インフィルエクストルーダー" +# msgstr "インフィルエクストルーダー" #: fdmprinter.def.json msgctxt "infill_extruder_nr description" msgid "The extruder train used for printing infill. This is used in multi-extrusion." @@ -1296,7 +1436,7 @@ msgstr "インフィル造形時に使われるExtruder。デュアルノズル #: fdmprinter.def.json msgctxt "infill_sparse_density label" msgid "Infill Density" -msgstr "" +msgstr "インフィル密度" #: fdmprinter.def.json msgctxt "infill_sparse_density description" @@ -1306,7 +1446,7 @@ msgstr "プリントのインフィルの密度を調整します。" #: fdmprinter.def.json msgctxt "infill_line_distance label" msgid "Infill Line Distance" -msgstr "" +msgstr "インフィルライン距離" #: fdmprinter.def.json msgctxt "infill_line_distance description" @@ -1316,104 +1456,128 @@ msgstr "造形されたインフィルラインの距離。この設定は、イ #: fdmprinter.def.json msgctxt "infill_pattern label" msgid "Infill Pattern" -msgstr "" +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 "印刷物のインフィルのパターン。線とジグザグのインフィルはレイヤーごとに交互に方向を変え、材料費を削減します。グリッド、三角形、キュービック、オクテット、クォーターキュービック、同心円のパターンは、すべてのレイヤーにて完全に印刷されます。キュービック、クォーターキュービック、オクテットのインフィルは各レイヤーごとに変化し、各方向の強度が均等になるように分布します。" +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, tri-hexagon, cubic, octet, quarter cubic, cross 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" msgid "Grid" -msgstr "" +msgstr "グリッド" #: fdmprinter.def.json msgctxt "infill_pattern option lines" msgid "Lines" -msgstr "" +msgstr "ライン" #: fdmprinter.def.json msgctxt "infill_pattern option triangles" msgid "Triangles" -msgstr "" +msgstr "トライアングル" + +#: fdmprinter.def.json +msgctxt "infill_pattern option trihexagon" +msgid "Tri-Hexagon" +msgstr "トライヘキサゴン" #: fdmprinter.def.json msgctxt "infill_pattern option cubic" msgid "Cubic" -msgstr "" +msgstr "キュービック" #: fdmprinter.def.json msgctxt "infill_pattern option cubicsubdiv" msgid "Cubic Subdivision" -msgstr "" +msgstr "キュービックサブディビジョン" #: fdmprinter.def.json msgctxt "infill_pattern option tetrahedral" msgid "Octet" -msgstr "" -#msgstr "オクテット" +msgstr "オクテット" +# msgstr "オクテット" #: fdmprinter.def.json msgctxt "infill_pattern option quarter_cubic" msgid "Quarter Cubic" -msgstr "" -#msgstr "クォーターキュービック" +msgstr "クォーターキュービック" +# msgstr "クォーターキュービック" #: fdmprinter.def.json msgctxt "infill_pattern option concentric" msgid "Concentric" -msgstr "" -#msgstr "同心円" +msgstr "同心円" +# msgstr "同心円" #: fdmprinter.def.json msgctxt "infill_pattern option concentric_3d" msgid "Concentric 3D" -msgstr "" +msgstr "3D同心円" #: fdmprinter.def.json msgctxt "infill_pattern option zigzag" msgid "Zig Zag" -msgstr "" +msgstr "ジグザグ" #: fdmprinter.def.json msgctxt "infill_pattern option cross" msgid "Cross" -msgstr "" -#msgstr "クロス" +msgstr "クロス" +# msgstr "クロス" #: fdmprinter.def.json msgctxt "infill_pattern option cross_3d" msgid "Cross 3D" -msgstr "" -#msgstr "クロス3D" +msgstr "3Dクロス" +# msgstr "クロス3D" #: fdmprinter.def.json msgctxt "zig_zaggify_infill label" msgid "Connect Infill Lines" -msgstr "" -#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 "内壁の形状に沿った線を使用して、インフィルのパターンが内壁と接する端を接続します。この設定を有効にすると、インフィルを壁面に密着させることができ、充填材が垂直面の品質に与える影響を低減できます。この設定を無効にすると、使用される材料の量が減ります。" +msgid "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." +msgstr "内壁の形状に沿ったラインを使用してインフィルパターンと内壁が合うところで接合します。この設定を有効にすると、インフィルが壁により密着するようになり、垂直面の品質に対するインフィルの影響が軽減します。この設定を無効にすると、材料の使用量が減ります。" #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" -msgstr "" -#msgstr "インフィルラインの方向" +msgstr "インフィルラインの向き" +# msgstr "インフィルラインの方向" #: fdmprinter.def.json msgctxt "infill_angles description" msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns)." msgstr "使用する整数線の方向のリスト。リストの要素は、レイヤの層に合わせて順番に使用され、リストの末尾に達すると、最初から再び開始されます。リスト項目はコンマで区切られ、リスト全体は大括弧で囲まれています。デフォルトは空のリストです。これは、従来のデフォルト角度(線とジグザグのパターンでは45と135度、他のすべてのパターンでは45度)を使用することを意味します。" +#: fdmprinter.def.json +msgctxt "infill_offset_x label" +msgid "Infill X Offset" +msgstr "インフィルXオフセット" + +#: fdmprinter.def.json +msgctxt "infill_offset_x description" +msgid "The infill pattern is offset this distance along the X axis." +msgstr "インフィルパターンはX軸に沿ってこの距離を移動します。" + +#: fdmprinter.def.json +msgctxt "infill_offset_y label" +msgid "Infill Y Offset" +msgstr "インフィルYオフセット" + +#: fdmprinter.def.json +msgctxt "infill_offset_y description" +msgid "The infill pattern is offset this distance along the Y axis." +msgstr "インフィルパターンはY軸に沿ってこの距離を移動します。" + #: fdmprinter.def.json msgctxt "sub_div_rad_add label" msgid "Cubic Subdivision Shell" -msgstr "" +msgstr "キュービックサブディビジョンシェル" #: fdmprinter.def.json msgctxt "sub_div_rad_add description" @@ -1423,9 +1587,9 @@ msgstr "この立方体を細分するかどうかを決定するために、各 #: fdmprinter.def.json msgctxt "infill_overlap label" msgid "Infill Overlap Percentage" -msgstr "" -#msgstr "インフィルのオーバーラップ率" +msgstr "インフィル公差量" +# msgstr "インフィルのオーバーラップ率" #: fdmprinter.def.json msgctxt "infill_overlap description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." @@ -1434,9 +1598,9 @@ msgstr "インフィルと壁が交差する量、わずかな交差によって #: fdmprinter.def.json msgctxt "infill_overlap_mm label" msgid "Infill Overlap" -msgstr "" -#msgstr "インフィルのオーバーラップ" +msgstr "インフィル公差" +# msgstr "インフィルのオーバーラップ" #: fdmprinter.def.json msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." @@ -1445,7 +1609,7 @@ msgstr "インフィルと壁が交差する量、わずかな交差によって #: fdmprinter.def.json msgctxt "skin_overlap label" msgid "Skin Overlap Percentage" -msgstr "" +msgstr "表面公差量" #: fdmprinter.def.json msgctxt "skin_overlap description" @@ -1455,9 +1619,9 @@ msgstr "表面と壁の交わる量。ラインの幅の%で設定。少しの #: fdmprinter.def.json msgctxt "skin_overlap_mm label" msgid "Skin Overlap" -msgstr "" -#msgstr "スキンオーバーラップ" +msgstr "表面公差" +# msgstr "スキンオーバーラップ" #: fdmprinter.def.json msgctxt "skin_overlap_mm description" msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." @@ -1466,9 +1630,9 @@ msgstr "スキンと壁の間の交差した量 わずかなオーバーラッ #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" -msgstr "" -#msgstr "インフィルWipe距離" +msgstr "インフィル移動距離" +# msgstr "インフィルWipe距離" #: fdmprinter.def.json msgctxt "infill_wipe_dist description" msgid "Distance of a travel move inserted after every infill line, to make the infill stick to the walls better. This option is similar to infill overlap, but without extrusion and only on one end of the infill line." @@ -1477,7 +1641,7 @@ msgstr "インフィルラインごとに挿入された移動距離は壁のイ #: fdmprinter.def.json msgctxt "infill_sparse_thickness label" msgid "Infill Layer Thickness" -msgstr "" +msgstr "インフィル層の厚さ" #: fdmprinter.def.json msgctxt "infill_sparse_thickness description" @@ -1487,7 +1651,7 @@ msgstr "インフィルマテリアルの層ごとの厚さ。この値は常に #: fdmprinter.def.json msgctxt "gradual_infill_steps label" msgid "Gradual Infill Steps" -msgstr "" +msgstr "インフィル半減回数" #: fdmprinter.def.json msgctxt "gradual_infill_steps description" @@ -1497,7 +1661,7 @@ msgstr "天井面の表面に近づく際にインフィル密度が半減する #: fdmprinter.def.json msgctxt "gradual_infill_step_height label" msgid "Gradual Infill Step Height" -msgstr "" +msgstr "インフィル半減高さ" #: fdmprinter.def.json msgctxt "gradual_infill_step_height description" @@ -1507,19 +1671,17 @@ msgstr "密度が半分に切り替わる前の所定のインフィルの高さ #: fdmprinter.def.json msgctxt "infill_before_walls label" msgid "Infill Before Walls" -msgstr "" +msgstr "インフィル優先" #: fdmprinter.def.json msgctxt "infill_before_walls description" msgid "Print the infill before printing the walls. Printing the walls first may lead to more accurate walls, but overhangs print worse. Printing the infill first leads to sturdier walls, but the infill pattern might sometimes show through the surface." -msgstr "" -"壁より前にインフィルをプリントします はじめに壁をプリントするとより精密な壁になりますが、オーバーハングのプリントは悪化します\n" -"はじめにインフィルをプリントすると丈夫な壁になりますが、インフィルの模様が時折表面から透けて表れます" +msgstr "壁より前にインフィルをプリントします はじめに壁をプリントするとより精密な壁になりますが、オーバーハングのプリントは悪化します\nはじめにインフィルをプリントすると丈夫な壁になりますが、インフィルの模様が時折表面から透けて表れます" #: fdmprinter.def.json msgctxt "min_infill_area label" msgid "Minimum Infill Area" -msgstr "" +msgstr "最小インフィル領域" #: fdmprinter.def.json msgctxt "min_infill_area description" @@ -1529,9 +1691,9 @@ msgstr "これより小さいインフィルの領域を生成しないでくだ #: fdmprinter.def.json msgctxt "skin_preshrink label" msgid "Skin Removal Width" -msgstr "" -#msgstr "スキン除去幅" +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." @@ -1540,9 +1702,9 @@ msgstr "取り除くスキンエリアの最大幅。この値より小さいす #: fdmprinter.def.json msgctxt "top_skin_preshrink label" msgid "Top Skin Removal Width" -msgstr "" -#msgstr "トップスキン除去幅" +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." @@ -1551,9 +1713,9 @@ msgstr "取り除くスキンエリアの最大幅。この値より小さいす #: fdmprinter.def.json msgctxt "bottom_skin_preshrink label" msgid "Bottom Skin Removal Width" -msgstr "" -#msgstr "ボトムのスキン除去幅" +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." @@ -1562,7 +1724,7 @@ msgstr "取り除くスキンエリアの最大幅。この値より小さいす #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" msgid "Skin Expand Distance" -msgstr "" +msgstr "表面展開距離" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" @@ -1572,9 +1734,9 @@ msgstr "スキンがインフィルまで到達する距離です。高い数値 #: fdmprinter.def.json msgctxt "top_skin_expand_distance label" msgid "Top Skin Expand Distance" -msgstr "" -#msgstr "トップのスキンの展開距離" +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." @@ -1583,9 +1745,9 @@ msgstr "スキンがインフィルまで到達する距離です。高い数値 #: fdmprinter.def.json msgctxt "bottom_skin_expand_distance label" msgid "Bottom Skin Expand Distance" -msgstr "" -#msgstr "ボトムのスキンの展開距離" +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." @@ -1594,7 +1756,7 @@ msgstr "スキンがインフィルまで到達する距離です。高い数値 #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" msgid "Maximum Skin Angle for Expansion" -msgstr "" +msgstr "表面展開最大角" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion description" @@ -1604,7 +1766,7 @@ msgstr "この設定より大きい角を持つオブジェクトの上部また #: fdmprinter.def.json msgctxt "min_skin_width_for_expansion label" msgid "Minimum Skin Width for Expansion" -msgstr "" +msgstr "表面展開最小角" #: fdmprinter.def.json msgctxt "min_skin_width_for_expansion description" @@ -1614,7 +1776,7 @@ msgstr "これより狭いスキン領域は展開されません。モデル表 #: fdmprinter.def.json msgctxt "material label" msgid "Material" -msgstr "" +msgstr "マテリアル" #: fdmprinter.def.json msgctxt "material description" @@ -1624,7 +1786,7 @@ msgstr "マテリアル" #: fdmprinter.def.json msgctxt "material_flow_dependent_temperature label" msgid "Auto Temperature" -msgstr "" +msgstr "自動温度" #: fdmprinter.def.json msgctxt "material_flow_dependent_temperature description" @@ -1634,7 +1796,7 @@ msgstr "その画層の平均流速で自動的にレイヤーごとに温度を #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" -msgstr "" +msgstr "デフォルト印刷温度" #: fdmprinter.def.json msgctxt "default_material_print_temperature description" @@ -1644,7 +1806,7 @@ msgstr "印刷中のデフォルトの温度。これはマテリアルの基本 #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" -msgstr "" +msgstr "印刷温度" #: fdmprinter.def.json msgctxt "material_print_temperature description" @@ -1654,7 +1816,7 @@ msgstr "印刷中の温度。" #: fdmprinter.def.json msgctxt "material_print_temperature_layer_0 label" msgid "Printing Temperature Initial Layer" -msgstr "" +msgstr "初期レイヤー印刷温度" #: fdmprinter.def.json msgctxt "material_print_temperature_layer_0 description" @@ -1664,7 +1826,7 @@ msgstr "最初のレイヤーを印刷する温度。初期レイヤーのみ特 #: fdmprinter.def.json msgctxt "material_initial_print_temperature label" msgid "Initial Printing Temperature" -msgstr "" +msgstr "初期印刷温度" #: fdmprinter.def.json msgctxt "material_initial_print_temperature description" @@ -1674,7 +1836,7 @@ msgstr "加熱中、印刷を開始することができる最低の温度。" #: fdmprinter.def.json msgctxt "material_final_print_temperature label" msgid "Final Printing Temperature" -msgstr "" +msgstr "最終印刷温度" #: fdmprinter.def.json msgctxt "material_final_print_temperature description" @@ -1684,7 +1846,7 @@ msgstr "印刷終了直前に冷却を開始する温度。" #: fdmprinter.def.json msgctxt "material_flow_temp_graph label" msgid "Flow Temperature Graph" -msgstr "" +msgstr "フロー温度グラフ" #: fdmprinter.def.json msgctxt "material_flow_temp_graph description" @@ -1694,7 +1856,7 @@ msgstr "マテリアルフロー(毎秒 3mm) と温度 (° c) をリンクしま #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" -msgstr "" +msgstr "押出クールダウン速度修飾子" #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed description" @@ -1704,7 +1866,7 @@ msgstr "印刷中にノズルが冷える際の速度。同じ値が、加熱す #: fdmprinter.def.json msgctxt "material_bed_temperature label" msgid "Build Plate Temperature" -msgstr "" +msgstr "ビルドプレート温度" #: fdmprinter.def.json msgctxt "material_bed_temperature description" @@ -1714,7 +1876,7 @@ msgstr "加熱式ビルドプレート温度。これが 0 の場合、ベッド #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 label" msgid "Build Plate Temperature Initial Layer" -msgstr "" +msgstr "初期レイヤーのビルドプレート温度" #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 description" @@ -1724,17 +1886,37 @@ msgstr "最初のレイヤー印刷時のビルドプレートの温度。" #: fdmprinter.def.json msgctxt "material_diameter label" msgid "Diameter" -msgstr "" +msgstr "直径" #: fdmprinter.def.json msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "使用するフィラメントの太さの調整 この値を使用するフィラメントの太さと一致させてください。" +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency label" +msgid "Adhesion Tendency" +msgstr "接着傾向" + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency description" +msgid "Surface adhesion tendency." +msgstr "表面の接着傾向。" + +#: fdmprinter.def.json +msgctxt "material_surface_energy label" +msgid "Surface Energy" +msgstr "表面エネルギー" + +#: fdmprinter.def.json +msgctxt "material_surface_energy description" +msgid "Surface energy." +msgstr "表面エネルギー。" + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" -msgstr "" +msgstr "フロー" #: fdmprinter.def.json msgctxt "material_flow description" @@ -1744,7 +1926,7 @@ msgstr "流れの補修: 押出されるマテリアルの量は、この値か #: fdmprinter.def.json msgctxt "retraction_enable label" msgid "Enable Retraction" -msgstr "" +msgstr "引き戻し有効" #: fdmprinter.def.json msgctxt "retraction_enable description" @@ -1754,7 +1936,7 @@ msgstr "ノズルが印刷しないで良い領域を移動する際にフィラ #: fdmprinter.def.json msgctxt "retract_at_layer_change label" msgid "Retract at Layer Change" -msgstr "" +msgstr "レイヤー変更時に引き戻す" #: fdmprinter.def.json msgctxt "retract_at_layer_change description" @@ -1764,7 +1946,7 @@ msgstr "ノズルは次の層に移動するときフィラメントを引き戻 #: fdmprinter.def.json msgctxt "retraction_amount label" msgid "Retraction Distance" -msgstr "" +msgstr "引き戻し距離" #: fdmprinter.def.json msgctxt "retraction_amount description" @@ -1774,7 +1956,7 @@ msgstr "引き戻されるマテリアルの長さ" #: fdmprinter.def.json msgctxt "retraction_speed label" msgid "Retraction Speed" -msgstr "" +msgstr "引き戻し速度" #: fdmprinter.def.json #, fuzzy @@ -1785,7 +1967,7 @@ msgstr "フィラメントが引き戻される時のスピード" #: fdmprinter.def.json msgctxt "retraction_retract_speed label" msgid "Retraction Retract Speed" -msgstr "" +msgstr "引き戻し速度の取り消し" #: fdmprinter.def.json #, fuzzy @@ -1796,7 +1978,7 @@ msgstr "フィラメントが引き戻される時のスピード" #: fdmprinter.def.json msgctxt "retraction_prime_speed label" msgid "Retraction Prime Speed" -msgstr "" +msgstr "押し戻し速度の取り消し" #: fdmprinter.def.json #, fuzzy @@ -1807,7 +1989,7 @@ msgstr "フィラメントが引き戻される時のスピード" #: fdmprinter.def.json msgctxt "retraction_extra_prime_amount label" msgid "Retraction Extra Prime Amount" -msgstr "" +msgstr "余分な押し戻し量の引き戻し" #: fdmprinter.def.json msgctxt "retraction_extra_prime_amount description" @@ -1817,7 +1999,7 @@ msgstr "マテリアルによっては、移動中に滲み出てきてしまう #: fdmprinter.def.json msgctxt "retraction_min_travel label" msgid "Retraction Minimum Travel" -msgstr "" +msgstr "引き戻し最小移動距離" #: fdmprinter.def.json msgctxt "retraction_min_travel description" @@ -1827,7 +2009,7 @@ msgstr "フィラメントを引き戻す際に必要な最小移動距離。こ #: fdmprinter.def.json msgctxt "retraction_count_max label" msgid "Maximum Retraction Count" -msgstr "" +msgstr "最大引き戻し回数" #: fdmprinter.def.json msgctxt "retraction_count_max description" @@ -1837,7 +2019,7 @@ msgstr "この設定は、決められた距離の中で起こる引き戻しの #: fdmprinter.def.json msgctxt "retraction_extrusion_window label" msgid "Minimum Extrusion Distance Window" -msgstr "" +msgstr "最小抽出距離範囲" #: fdmprinter.def.json msgctxt "retraction_extrusion_window description" @@ -1847,7 +2029,7 @@ msgstr "最大の引き戻し回数。この値は引き戻す距離と同じで #: fdmprinter.def.json msgctxt "material_standby_temperature label" msgid "Standby Temperature" -msgstr "" +msgstr "スタンバイ温度" #: fdmprinter.def.json msgctxt "material_standby_temperature description" @@ -1857,7 +2039,7 @@ msgstr "印刷していないノズルの温度(もう一方のノズルが印 #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount label" msgid "Nozzle Switch Retraction Distance" -msgstr "" +msgstr "ノズルスイッチ引き戻し距離" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" @@ -1867,7 +2049,7 @@ msgstr "引き込み量:引き込みを行わない場合は0に設定しま #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" msgid "Nozzle Switch Retraction Speed" -msgstr "" +msgstr "ノズルスイッチ引き戻し速度" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds description" @@ -1877,7 +2059,7 @@ msgstr "フィラメントを引き戻す速度。速度が早い程良いが早 #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speed label" msgid "Nozzle Switch Retract Speed" -msgstr "" +msgstr "ノズルスイッチ引き込み速度" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speed description" @@ -1887,7 +2069,7 @@ msgstr "ノズル切り替え中のフィラメントの引き込み速度。" #: fdmprinter.def.json msgctxt "switch_extruder_prime_speed label" msgid "Nozzle Switch Prime Speed" -msgstr "" +msgstr "ノズルスイッチ押し戻し速度" #: fdmprinter.def.json msgctxt "switch_extruder_prime_speed description" @@ -1897,7 +2079,7 @@ msgstr "ノズル スイッチ後にフィラメントが押し戻される速 #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" -msgstr "" +msgstr "スピード" #: fdmprinter.def.json msgctxt "speed description" @@ -1907,7 +2089,7 @@ msgstr "スピード" #: fdmprinter.def.json msgctxt "speed_print label" msgid "Print Speed" -msgstr "" +msgstr "印刷速度" #: fdmprinter.def.json msgctxt "speed_print description" @@ -1917,7 +2099,7 @@ msgstr "印刷スピード" #: fdmprinter.def.json msgctxt "speed_infill label" msgid "Infill Speed" -msgstr "" +msgstr "インフィル速度" #: fdmprinter.def.json msgctxt "speed_infill description" @@ -1927,7 +2109,7 @@ msgstr "インフィルを印刷する速度" #: fdmprinter.def.json msgctxt "speed_wall label" msgid "Wall Speed" -msgstr "" +msgstr "ウォール速度" #: fdmprinter.def.json msgctxt "speed_wall description" @@ -1937,7 +2119,7 @@ msgstr "ウォールを印刷する速度" #: fdmprinter.def.json msgctxt "speed_wall_0 label" msgid "Outer Wall Speed" -msgstr "" +msgstr "外壁速度" #: fdmprinter.def.json msgctxt "speed_wall_0 description" @@ -1947,7 +2129,7 @@ msgstr "最も外側のウォールをプリントする速度。外側の壁を #: fdmprinter.def.json msgctxt "speed_wall_x label" msgid "Inner Wall Speed" -msgstr "" +msgstr "内壁速度" #: fdmprinter.def.json msgctxt "speed_wall_x description" @@ -1957,9 +2139,9 @@ msgstr "内側のウォールをプリントする速度 外壁より内壁を #: fdmprinter.def.json msgctxt "speed_roofing label" msgid "Top Surface Skin Speed" -msgstr "" -#msgstr "トップサーフェススキンの速度" +msgstr "最上面速度" +# msgstr "トップサーフェススキンの速度" #: fdmprinter.def.json msgctxt "speed_roofing description" msgid "The speed at which top surface skin layers are printed." @@ -1968,7 +2150,7 @@ msgstr "上部表面プリント時の速度" #: fdmprinter.def.json msgctxt "speed_topbottom label" msgid "Top/Bottom Speed" -msgstr "" +msgstr "上面/底面速度" #: fdmprinter.def.json msgctxt "speed_topbottom description" @@ -1978,7 +2160,7 @@ msgstr "トップ/ボトムのレイヤーのプリント速度" #: fdmprinter.def.json msgctxt "speed_support label" msgid "Support Speed" -msgstr "" +msgstr "サポート速度" #: fdmprinter.def.json msgctxt "speed_support description" @@ -1988,7 +2170,7 @@ msgstr "サポート材をプリントする速度です。高速でサポート #: fdmprinter.def.json msgctxt "speed_support_infill label" msgid "Support Infill Speed" -msgstr "" +msgstr "サポートインフィル速度" #: fdmprinter.def.json msgctxt "speed_support_infill description" @@ -1998,7 +2180,7 @@ msgstr "サポート材のインフィルをプリントする速度 低速で #: fdmprinter.def.json msgctxt "speed_support_interface label" msgid "Support Interface Speed" -msgstr "" +msgstr "サポートインタフェース速度" #: fdmprinter.def.json msgctxt "speed_support_interface description" @@ -2008,9 +2190,9 @@ msgstr "ルーフとフロアのサポート材をプリントする速度。低 #: fdmprinter.def.json msgctxt "speed_support_roof label" msgid "Support Roof Speed" -msgstr "" -#msgstr "サポートルーフの速度" +msgstr "サポートルーフ速度" +# msgstr "サポートルーフの速度" #: fdmprinter.def.json msgctxt "speed_support_roof description" msgid "The speed at which the roofs of support are printed. Printing them at lower speeds can improve overhang quality." @@ -2019,9 +2201,9 @@ msgstr "ルーフとフロアのサポート材をプリントする速度 こ #: fdmprinter.def.json msgctxt "speed_support_bottom label" msgid "Support Floor Speed" -msgstr "" -#msgstr "サポートフロアの速度" +msgstr "サポートフロア速度" +# msgstr "サポートフロアの速度" #: fdmprinter.def.json msgctxt "speed_support_bottom description" msgid "The speed at which the floor of support is printed. Printing it at lower speed can improve adhesion of support on top of your model." @@ -2030,7 +2212,7 @@ msgstr "フロアのサポートがプリントされる速度。低速で印刷 #: fdmprinter.def.json msgctxt "speed_prime_tower label" msgid "Prime Tower Speed" -msgstr "" +msgstr "プライムタワー印刷速度" #: fdmprinter.def.json msgctxt "speed_prime_tower description" @@ -2040,7 +2222,7 @@ msgstr "プライムタワーをプリントする速度です。異なるフィ #: fdmprinter.def.json msgctxt "speed_travel label" msgid "Travel Speed" -msgstr "" +msgstr "移動速度" #: fdmprinter.def.json msgctxt "speed_travel description" @@ -2050,7 +2232,7 @@ msgstr "移動中のスピード" #: fdmprinter.def.json msgctxt "speed_layer_0 label" msgid "Initial Layer Speed" -msgstr "" +msgstr "初期レイヤー速度" #: fdmprinter.def.json msgctxt "speed_layer_0 description" @@ -2060,7 +2242,7 @@ msgstr "一層目での速度。ビルトプレートへの接着を向上する #: fdmprinter.def.json msgctxt "speed_print_layer_0 label" msgid "Initial Layer Print Speed" -msgstr "" +msgstr "初期レイヤー印刷速度" #: fdmprinter.def.json msgctxt "speed_print_layer_0 description" @@ -2070,7 +2252,7 @@ msgstr "一層目をプリントする速度 ビルトプレートへの接着 #: fdmprinter.def.json msgctxt "speed_travel_layer_0 label" msgid "Initial Layer Travel Speed" -msgstr "" +msgstr "初期レイヤー移動速度" #: fdmprinter.def.json msgctxt "speed_travel_layer_0 description" @@ -2080,7 +2262,7 @@ msgstr "最初のレイヤーを印刷する際のトラベルスピード。低 #: fdmprinter.def.json msgctxt "skirt_brim_speed label" msgid "Skirt/Brim Speed" -msgstr "" +msgstr "スカート/ブリム速度" #: fdmprinter.def.json msgctxt "skirt_brim_speed description" @@ -2090,7 +2272,7 @@ msgstr "スカートとブリムのプリント速度 通常は一層目のス #: fdmprinter.def.json msgctxt "max_feedrate_z_override label" msgid "Maximum Z Speed" -msgstr "" +msgstr "最大Z速度" #: fdmprinter.def.json msgctxt "max_feedrate_z_override description" @@ -2100,7 +2282,7 @@ msgstr "ビルトプレートが移動する最高速度 この値を0に設 #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" msgid "Number of Slower Layers" -msgstr "" +msgstr "遅いレイヤーの数" #: fdmprinter.def.json msgctxt "speed_slowdown_layers description" @@ -2110,7 +2292,7 @@ msgstr "最初の数層は印刷失敗の可能性を軽減させるために、 #: fdmprinter.def.json msgctxt "speed_equalize_flow_enabled label" msgid "Equalize Filament Flow" -msgstr "" +msgstr "フィラメント均一速度" #: fdmprinter.def.json msgctxt "speed_equalize_flow_enabled description" @@ -2120,7 +2302,7 @@ msgstr "通常より細いラインを高速プリントするので、時間当 #: fdmprinter.def.json msgctxt "speed_equalize_flow_max label" msgid "Maximum Speed for Flow Equalization" -msgstr "" +msgstr "均一フローの最大速度" #: fdmprinter.def.json msgctxt "speed_equalize_flow_max description" @@ -2130,7 +2312,7 @@ msgstr "吐出を均一にするための調整時の最高スピード" #: fdmprinter.def.json msgctxt "acceleration_enabled label" msgid "Enable Acceleration Control" -msgstr "" +msgstr "加速度制御を有効にする" #: fdmprinter.def.json msgctxt "acceleration_enabled description" @@ -2140,7 +2322,7 @@ msgstr "プリントヘッドのスピード調整の有効化 加速度の増 #: fdmprinter.def.json msgctxt "acceleration_print label" msgid "Print Acceleration" -msgstr "" +msgstr "印刷加速度" #: fdmprinter.def.json msgctxt "acceleration_print description" @@ -2150,7 +2332,7 @@ msgstr "印刷の加速スピードです。" #: fdmprinter.def.json msgctxt "acceleration_infill label" msgid "Infill Acceleration" -msgstr "" +msgstr "インフィル加速度" #: fdmprinter.def.json msgctxt "acceleration_infill description" @@ -2160,7 +2342,7 @@ msgstr "インフィルの印刷の加速スピード。" #: fdmprinter.def.json msgctxt "acceleration_wall label" msgid "Wall Acceleration" -msgstr "" +msgstr "ウォール加速度" #: fdmprinter.def.json msgctxt "acceleration_wall description" @@ -2170,7 +2352,7 @@ msgstr "ウォールをプリントする際の加速度。" #: fdmprinter.def.json msgctxt "acceleration_wall_0 label" msgid "Outer Wall Acceleration" -msgstr "" +msgstr "外壁加速度" #: fdmprinter.def.json msgctxt "acceleration_wall_0 description" @@ -2180,7 +2362,7 @@ msgstr "最も外側の壁をプリントする際の加速度" #: fdmprinter.def.json msgctxt "acceleration_wall_x label" msgid "Inner Wall Acceleration" -msgstr "" +msgstr "内壁加速度" #: fdmprinter.def.json msgctxt "acceleration_wall_x description" @@ -2190,9 +2372,9 @@ msgstr "内側のウォールがが出力される際のスピード。" #: fdmprinter.def.json msgctxt "acceleration_roofing label" msgid "Top Surface Skin Acceleration" -msgstr "" -#msgstr "トップ表面スキンの加速度" +msgstr "最上面加速度" +# msgstr "トップ表面スキンの加速度" #: fdmprinter.def.json msgctxt "acceleration_roofing description" msgid "The acceleration with which top surface skin layers are printed." @@ -2201,7 +2383,7 @@ msgstr "上部表面プリント時の加速度" #: fdmprinter.def.json msgctxt "acceleration_topbottom label" msgid "Top/Bottom Acceleration" -msgstr "" +msgstr "上面/底面加速度" #: fdmprinter.def.json msgctxt "acceleration_topbottom description" @@ -2211,7 +2393,7 @@ msgstr "トップとボトムのレイヤーの印刷加速度。" #: fdmprinter.def.json msgctxt "acceleration_support label" msgid "Support Acceleration" -msgstr "" +msgstr "サポート加速度" #: fdmprinter.def.json msgctxt "acceleration_support description" @@ -2221,7 +2403,7 @@ msgstr "サポート材プリント時の加速スピード" #: fdmprinter.def.json msgctxt "acceleration_support_infill label" msgid "Support Infill Acceleration" -msgstr "" +msgstr "サポートインフィル加速度" #: fdmprinter.def.json msgctxt "acceleration_support_infill description" @@ -2231,7 +2413,7 @@ msgstr "インフィルのサポート材のプリント時の加速度。" #: fdmprinter.def.json msgctxt "acceleration_support_interface label" msgid "Support Interface Acceleration" -msgstr "" +msgstr "サポートインタフェース加速度" #: fdmprinter.def.json msgctxt "acceleration_support_interface description" @@ -2241,9 +2423,9 @@ msgstr "サポートの上面と下面が印刷される加速度。低加速度 #: fdmprinter.def.json msgctxt "acceleration_support_roof label" msgid "Support Roof Acceleration" -msgstr "" -#msgstr "サポートルーフの加速度" +msgstr "サポートルーフ加速度" +# msgstr "サポートルーフの加速度" #: fdmprinter.def.json msgctxt "acceleration_support_roof description" msgid "The acceleration with which the roofs of support are printed. Printing them at lower acceleration can improve overhang quality." @@ -2252,9 +2434,9 @@ msgstr "サポートの上面がプリントされる加速度、低加速度で #: fdmprinter.def.json msgctxt "acceleration_support_bottom label" msgid "Support Floor Acceleration" -msgstr "" -#msgstr "サポートフロアの加速度" +msgstr "サポートフロア加速度" +# msgstr "サポートフロアの加速度" #: fdmprinter.def.json msgctxt "acceleration_support_bottom description" msgid "The acceleration with which the floors of support are printed. Printing them at lower acceleration can improve adhesion of support on top of your model." @@ -2263,7 +2445,7 @@ msgstr "サポートのフロアが印刷される加速度。より低い加速 #: fdmprinter.def.json msgctxt "acceleration_prime_tower label" msgid "Prime Tower Acceleration" -msgstr "" +msgstr "プライムタワー加速度" #: fdmprinter.def.json msgctxt "acceleration_prime_tower description" @@ -2273,7 +2455,7 @@ msgstr "プライムタワーの印刷時のスピード。" #: fdmprinter.def.json msgctxt "acceleration_travel label" msgid "Travel Acceleration" -msgstr "" +msgstr "移動か速度" #: fdmprinter.def.json msgctxt "acceleration_travel description" @@ -2283,7 +2465,7 @@ msgstr "移動中の加速度。" #: fdmprinter.def.json msgctxt "acceleration_layer_0 label" msgid "Initial Layer Acceleration" -msgstr "" +msgstr "初期レイヤー加速度" #: fdmprinter.def.json msgctxt "acceleration_layer_0 description" @@ -2293,7 +2475,7 @@ msgstr "初期レイヤーの加速度。" #: fdmprinter.def.json msgctxt "acceleration_print_layer_0 label" msgid "Initial Layer Print Acceleration" -msgstr "" +msgstr "初期レイヤー印刷加速度" #: fdmprinter.def.json msgctxt "acceleration_print_layer_0 description" @@ -2303,7 +2485,7 @@ msgstr "初期レイヤーの印刷中の加速度。" #: fdmprinter.def.json msgctxt "acceleration_travel_layer_0 label" msgid "Initial Layer Travel Acceleration" -msgstr "" +msgstr "初期レイヤー移動加速度" #: fdmprinter.def.json msgctxt "acceleration_travel_layer_0 description" @@ -2313,7 +2495,7 @@ msgstr "最初のレイヤー時の加速度" #: fdmprinter.def.json msgctxt "acceleration_skirt_brim label" msgid "Skirt/Brim Acceleration" -msgstr "" +msgstr "スカート/ブリム加速度" #: fdmprinter.def.json msgctxt "acceleration_skirt_brim description" @@ -2323,7 +2505,7 @@ msgstr "スカートとブリム印刷時の加速度。通常、初期レイヤ #: fdmprinter.def.json msgctxt "jerk_enabled label" msgid "Enable Jerk Control" -msgstr "" +msgstr "ジャーク制御を有効にする" #: fdmprinter.def.json msgctxt "jerk_enabled description" @@ -2333,7 +2515,7 @@ msgstr "X または Y 軸の速度が変更する際、プリントヘッドの #: fdmprinter.def.json msgctxt "jerk_print label" msgid "Print Jerk" -msgstr "" +msgstr "印刷ジャーク" #: fdmprinter.def.json msgctxt "jerk_print description" @@ -2343,7 +2525,7 @@ msgstr "プリントヘッドの最大瞬間速度の変更。" #: fdmprinter.def.json msgctxt "jerk_infill label" msgid "Infill Jerk" -msgstr "" +msgstr "インフィルジャーク" #: fdmprinter.def.json msgctxt "jerk_infill description" @@ -2353,7 +2535,7 @@ msgstr "インフィルの印刷時の瞬間速度の変更。" #: fdmprinter.def.json msgctxt "jerk_wall label" msgid "Wall Jerk" -msgstr "" +msgstr "ウォールジャーク" #: fdmprinter.def.json msgctxt "jerk_wall description" @@ -2363,7 +2545,7 @@ msgstr "ウォールのプリント時の最大瞬間速度を変更。" #: fdmprinter.def.json msgctxt "jerk_wall_0 label" msgid "Outer Wall Jerk" -msgstr "" +msgstr "外壁ジャーク" #: fdmprinter.def.json msgctxt "jerk_wall_0 description" @@ -2373,7 +2555,7 @@ msgstr "外側のウォールが出力される際の最大瞬間速度の変更 #: fdmprinter.def.json msgctxt "jerk_wall_x label" msgid "Inner Wall Jerk" -msgstr "" +msgstr "内壁ジャーク" #: fdmprinter.def.json msgctxt "jerk_wall_x description" @@ -2383,9 +2565,9 @@ msgstr "内側のウォールがプリントされれう際の最大瞬間速度 #: fdmprinter.def.json msgctxt "jerk_roofing label" msgid "Top Surface Skin Jerk" -msgstr "" -#msgstr "トップサーフェススキンジャーク" +msgstr "最上面ジャーク" +# msgstr "トップサーフェススキンジャーク" #: fdmprinter.def.json msgctxt "jerk_roofing description" msgid "The maximum instantaneous velocity change with which top surface skin layers are printed." @@ -2394,7 +2576,7 @@ msgstr "上部表面プリント時の最大加速度" #: fdmprinter.def.json msgctxt "jerk_topbottom label" msgid "Top/Bottom Jerk" -msgstr "" +msgstr "上面/下面ジャーク" #: fdmprinter.def.json msgctxt "jerk_topbottom description" @@ -2404,7 +2586,7 @@ msgstr "トップとボトムのレイヤーを印刷する際の最大瞬間速 #: fdmprinter.def.json msgctxt "jerk_support label" msgid "Support Jerk" -msgstr "" +msgstr "サポートジャーク" #: fdmprinter.def.json msgctxt "jerk_support description" @@ -2414,7 +2596,7 @@ msgstr "サポート材の印刷時の最大瞬間速度の変更。" #: fdmprinter.def.json msgctxt "jerk_support_infill label" msgid "Support Infill Jerk" -msgstr "" +msgstr "サポートインフィルジャーク" #: fdmprinter.def.json msgctxt "jerk_support_infill description" @@ -2424,7 +2606,7 @@ msgstr "サポート材の印刷時、最大瞬間速度の変更。" #: fdmprinter.def.json msgctxt "jerk_support_interface label" msgid "Support Interface Jerk" -msgstr "" +msgstr "サポートインタフェースジャーク" #: fdmprinter.def.json msgctxt "jerk_support_interface description" @@ -2434,9 +2616,9 @@ msgstr "どのルーフとフロアのサポート部分を印刷するかによ #: fdmprinter.def.json msgctxt "jerk_support_roof label" msgid "Support Roof Jerk" -msgstr "" -#msgstr "サポートルーフのジャーク" +msgstr "サポートルーフジャーク" +# msgstr "サポートルーフのジャーク" #: fdmprinter.def.json msgctxt "jerk_support_roof description" msgid "The maximum instantaneous velocity change with which the roofs of support are printed." @@ -2445,9 +2627,9 @@ msgstr "どのサポートのルーフ部分を印刷するかによって最大 #: fdmprinter.def.json msgctxt "jerk_support_bottom label" msgid "Support Floor Jerk" -msgstr "" -#msgstr "サポートフロアのジャーク" +msgstr "サポートフロアジャーク" +# msgstr "サポートフロアのジャーク" #: fdmprinter.def.json msgctxt "jerk_support_bottom description" msgid "The maximum instantaneous velocity change with which the floors of support are printed." @@ -2456,7 +2638,7 @@ msgstr "どのサポートのフロア部分を印刷するかによって最大 #: fdmprinter.def.json msgctxt "jerk_prime_tower label" msgid "Prime Tower Jerk" -msgstr "" +msgstr "プライムタワージャーク" #: fdmprinter.def.json msgctxt "jerk_prime_tower description" @@ -2466,7 +2648,7 @@ msgstr "プライムタワーがプリントされる際の最大瞬間速度を #: fdmprinter.def.json msgctxt "jerk_travel label" msgid "Travel Jerk" -msgstr "" +msgstr "移動ジャーク" #: fdmprinter.def.json msgctxt "jerk_travel description" @@ -2476,7 +2658,7 @@ msgstr "移動する際の最大瞬時速度の変更。" #: fdmprinter.def.json msgctxt "jerk_layer_0 label" msgid "Initial Layer Jerk" -msgstr "" +msgstr "初期レイヤージャーク" #: fdmprinter.def.json msgctxt "jerk_layer_0 description" @@ -2486,7 +2668,7 @@ msgstr "初期レイヤーの最大瞬時速度の変更。" #: fdmprinter.def.json msgctxt "jerk_print_layer_0 label" msgid "Initial Layer Print Jerk" -msgstr "" +msgstr "初期レイヤー印刷ジャーク" #: fdmprinter.def.json msgctxt "jerk_print_layer_0 description" @@ -2496,7 +2678,7 @@ msgstr "初期レイヤー印刷中の最大瞬時速度の変化。" #: fdmprinter.def.json msgctxt "jerk_travel_layer_0 label" msgid "Initial Layer Travel Jerk" -msgstr "" +msgstr "初期レイヤー移動ジャーク" #: fdmprinter.def.json msgctxt "jerk_travel_layer_0 description" @@ -2506,7 +2688,7 @@ msgstr "移動加速度は最初のレイヤーに適用されます。" #: fdmprinter.def.json msgctxt "jerk_skirt_brim label" msgid "Skirt/Brim Jerk" -msgstr "" +msgstr "スカート/ブリムジャーク" #: fdmprinter.def.json msgctxt "jerk_skirt_brim description" @@ -2516,7 +2698,7 @@ msgstr "スカートとブリムがプリントされる最大瞬時速度の変 #: fdmprinter.def.json msgctxt "travel label" msgid "Travel" -msgstr "" +msgstr "移動" #: fdmprinter.def.json msgctxt "travel description" @@ -2526,7 +2708,7 @@ msgstr "移動" #: fdmprinter.def.json msgctxt "retraction_combing label" msgid "Combing Mode" -msgstr "" +msgstr "コーミングモード" #: fdmprinter.def.json msgctxt "retraction_combing description" @@ -2536,22 +2718,22 @@ msgstr "コーミングは、走行時にすでに印刷された領域内にノ #: fdmprinter.def.json msgctxt "retraction_combing option off" msgid "Off" -msgstr "" +msgstr "オフ" #: fdmprinter.def.json msgctxt "retraction_combing option all" msgid "All" -msgstr "" +msgstr "すべて" #: fdmprinter.def.json msgctxt "retraction_combing option noskin" msgid "No Skin" -msgstr "" +msgstr "表面なし" #: fdmprinter.def.json msgctxt "travel_retract_before_outer_wall label" msgid "Retract Before Outer Wall" -msgstr "" +msgstr "外壁の前に引き戻す" #: fdmprinter.def.json msgctxt "travel_retract_before_outer_wall description" @@ -2561,7 +2743,7 @@ msgstr "移動して外側のウォールをプリントする際、毎回引き #: fdmprinter.def.json msgctxt "travel_avoid_other_parts label" msgid "Avoid Printed Parts When Traveling" -msgstr "" +msgstr "移動は印刷したパーツを回避する" #: fdmprinter.def.json msgctxt "travel_avoid_other_parts description" @@ -2571,7 +2753,7 @@ msgstr "ノズルは、移動時に既に印刷されたパーツを避けます #: fdmprinter.def.json msgctxt "travel_avoid_distance label" msgid "Travel Avoid Distance" -msgstr "" +msgstr "移動回避距離" #: fdmprinter.def.json msgctxt "travel_avoid_distance description" @@ -2581,7 +2763,7 @@ msgstr "ノズルが既に印刷された部分を移動する際の間隔" #: fdmprinter.def.json msgctxt "start_layers_at_same_position label" msgid "Start Layers with the Same Part" -msgstr "" +msgstr "同じパーツでレイヤーを開始する" #: fdmprinter.def.json #, fuzzy @@ -2592,7 +2774,7 @@ msgstr "各レイヤーの印刷は決まった場所近い距離のポイント #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" -msgstr "" +msgstr "レイヤー始点X" #: fdmprinter.def.json msgctxt "layer_start_x description" @@ -2602,7 +2784,7 @@ msgstr "各レイヤーのプリントを開始する部分をしめすX座標 #: fdmprinter.def.json msgctxt "layer_start_y label" msgid "Layer Start Y" -msgstr "" +msgstr "レイヤー始点Y" #: fdmprinter.def.json msgctxt "layer_start_y description" @@ -2612,7 +2794,7 @@ msgstr "各レイヤーのプリントを開始する部分をしめすY座標 #: fdmprinter.def.json msgctxt "retraction_hop_enabled label" msgid "Z Hop When Retracted" -msgstr "" +msgstr "引き戻し時のZホップ" #: fdmprinter.def.json msgctxt "retraction_hop_enabled description" @@ -2622,7 +2804,7 @@ msgstr "引き戻しが完了すると、ビルドプレートが下降してノ #: fdmprinter.def.json msgctxt "retraction_hop_only_when_collides label" msgid "Z Hop Only Over Printed Parts" -msgstr "" +msgstr "印刷パーツに対するZホップ" #: fdmprinter.def.json msgctxt "retraction_hop_only_when_collides description" @@ -2632,7 +2814,7 @@ msgstr "走行時に印刷部品への衝突を避けるため、水平移動で #: fdmprinter.def.json msgctxt "retraction_hop label" msgid "Z Hop Height" -msgstr "" +msgstr "Zホップ高さ" #: fdmprinter.def.json msgctxt "retraction_hop description" @@ -2642,7 +2824,7 @@ msgstr "Zホップを実行するときの高さ。" #: fdmprinter.def.json msgctxt "retraction_hop_after_extruder_switch label" msgid "Z Hop After Extruder Switch" -msgstr "" +msgstr "エクストルーダースイッチ後のZホップ" #: fdmprinter.def.json msgctxt "retraction_hop_after_extruder_switch description" @@ -2652,7 +2834,7 @@ msgstr "マシーンが1つのエクストルーダーからもう一つのエ #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" -msgstr "" +msgstr "冷却" #: fdmprinter.def.json msgctxt "cooling description" @@ -2662,7 +2844,7 @@ msgstr "冷却" #: fdmprinter.def.json msgctxt "cool_fan_enabled label" msgid "Enable Print Cooling" -msgstr "" +msgstr "印刷中の冷却を有効にする" #: fdmprinter.def.json msgctxt "cool_fan_enabled description" @@ -2672,7 +2854,7 @@ msgstr "印刷中の冷却ファンを有効にします。ファンは、短い #: fdmprinter.def.json msgctxt "cool_fan_speed label" msgid "Fan Speed" -msgstr "" +msgstr "ファン速度" #: fdmprinter.def.json msgctxt "cool_fan_speed description" @@ -2682,7 +2864,7 @@ msgstr "冷却ファンが回転する速度。" #: fdmprinter.def.json msgctxt "cool_fan_speed_min label" msgid "Regular Fan Speed" -msgstr "" +msgstr "標準ファン速度" #: fdmprinter.def.json #, fuzzy @@ -2693,7 +2875,7 @@ msgstr "しきい値に達する前のファンの回転スピード。プリン #: fdmprinter.def.json msgctxt "cool_fan_speed_max label" msgid "Maximum Fan Speed" -msgstr "" +msgstr "最大ファン速度" #: fdmprinter.def.json msgctxt "cool_fan_speed_max description" @@ -2703,7 +2885,7 @@ msgstr "最小積層時間でファンが回転する速度。しきい値に達 #: fdmprinter.def.json msgctxt "cool_min_layer_time_fan_speed_max label" msgid "Regular/Maximum Fan Speed Threshold" -msgstr "" +msgstr "標準/最大ファン速度のしきい値" #: fdmprinter.def.json msgctxt "cool_min_layer_time_fan_speed_max description" @@ -2713,7 +2895,7 @@ msgstr "通常速度と最速の間でしきい値を設定する積層時間。 #: fdmprinter.def.json msgctxt "cool_fan_speed_0 label" msgid "Initial Fan Speed" -msgstr "" +msgstr "初期ファン速度" #: fdmprinter.def.json #, fuzzy @@ -2724,7 +2906,7 @@ msgstr "プリント開始時にファンが回転する速度。後続のレイ #: fdmprinter.def.json msgctxt "cool_fan_full_at_height label" msgid "Regular Fan Speed at Height" -msgstr "" +msgstr "標準ファン速度時の高さ" #: fdmprinter.def.json msgctxt "cool_fan_full_at_height description" @@ -2734,7 +2916,7 @@ msgstr "通常速度でファンが回転するときの高さ。ここより下 #: fdmprinter.def.json msgctxt "cool_fan_full_layer label" msgid "Regular Fan Speed at Layer" -msgstr "" +msgstr "標準ファン速度時のレイヤー" #: fdmprinter.def.json msgctxt "cool_fan_full_layer description" @@ -2744,7 +2926,7 @@ msgstr "ファンが通常の速度で回転する時のレイヤー。通常速 #: fdmprinter.def.json msgctxt "cool_min_layer_time label" msgid "Minimum Layer Time" -msgstr "" +msgstr "最小レイヤー時間" #: fdmprinter.def.json msgctxt "cool_min_layer_time description" @@ -2754,7 +2936,7 @@ msgstr "一つのレイヤーに最低限費やす時間。1つの層に必ず #: fdmprinter.def.json msgctxt "cool_min_speed label" msgid "Minimum Speed" -msgstr "" +msgstr "最低速度" #: fdmprinter.def.json msgctxt "cool_min_speed description" @@ -2764,7 +2946,7 @@ msgstr "最遅印刷速度。印刷の速度が遅すぎると、ノズル内の #: fdmprinter.def.json msgctxt "cool_lift_head label" msgid "Lift Head" -msgstr "" +msgstr "ヘッド持ち上げ" #: fdmprinter.def.json msgctxt "cool_lift_head description" @@ -2774,7 +2956,7 @@ msgstr "レイヤーの最小プリント時間より早く印刷が終わった #: fdmprinter.def.json msgctxt "support label" msgid "Support" -msgstr "" +msgstr "サポート" #: fdmprinter.def.json msgctxt "support description" @@ -2784,9 +2966,9 @@ msgstr "サポート" #: fdmprinter.def.json msgctxt "support_enable label" msgid "Generate Support" -msgstr "" -#msgstr "サポートを生成します。" +msgstr "サポート開始" +# msgstr "サポートを生成します。" #: fdmprinter.def.json msgctxt "support_enable description" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." @@ -2795,7 +2977,7 @@ msgstr "オーバーハングするモデルのサポートパーツの構造を #: fdmprinter.def.json msgctxt "support_extruder_nr label" msgid "Support Extruder" -msgstr "" +msgstr "サポート用エクストルーダー" #: fdmprinter.def.json msgctxt "support_extruder_nr description" @@ -2805,7 +2987,7 @@ msgstr "サポート材を印刷するためのエクストルーダー。複数 #: fdmprinter.def.json msgctxt "support_infill_extruder_nr label" msgid "Support Infill Extruder" -msgstr "" +msgstr "サポート用インフィルエクストルーダー" #: fdmprinter.def.json msgctxt "support_infill_extruder_nr description" @@ -2815,7 +2997,7 @@ msgstr "サポート材のインフィルを印刷に使用するためのエク #: fdmprinter.def.json msgctxt "support_extruder_nr_layer_0 label" msgid "First Layer Support Extruder" -msgstr "" +msgstr "最初のレイヤー用サポートエクストルーダー" #: fdmprinter.def.json msgctxt "support_extruder_nr_layer_0 description" @@ -2825,7 +3007,7 @@ msgstr "サポートのインフィルの最初の層を印刷に使用するエ #: fdmprinter.def.json msgctxt "support_interface_extruder_nr label" msgid "Support Interface Extruder" -msgstr "" +msgstr "サポートインタフェースエクストルーダー" #: fdmprinter.def.json msgctxt "support_interface_extruder_nr description" @@ -2835,9 +3017,9 @@ msgstr "サポートのルーフおよび底面を印刷するために使用す #: fdmprinter.def.json msgctxt "support_roof_extruder_nr label" msgid "Support Roof Extruder" -msgstr "" -#msgstr "サポートルーフエクストルーダー" +msgstr "サポートルーフエクストルーダー" +# msgstr "サポートルーフエクストルーダー" #: fdmprinter.def.json msgctxt "support_roof_extruder_nr description" msgid "The extruder train to use for printing the roofs of the support. This is used in multi-extrusion." @@ -2846,9 +3028,9 @@ msgstr "サポートのルーフ面をプリントする際のエクストルー #: fdmprinter.def.json msgctxt "support_bottom_extruder_nr label" msgid "Support Floor Extruder" -msgstr "" -#msgstr "サポートフロアエクストルーダー" +msgstr "サポートフロアエクストルーダー" +# msgstr "サポートフロアエクストルーダー" #: fdmprinter.def.json msgctxt "support_bottom_extruder_nr description" msgid "The extruder train to use for printing the floors of the support. This is used in multi-extrusion." @@ -2857,7 +3039,7 @@ msgstr "サポートのフロア面をプリントする際に使用するエク #: fdmprinter.def.json msgctxt "support_type label" msgid "Support Placement" -msgstr "" +msgstr "サポート配置" #: fdmprinter.def.json msgctxt "support_type description" @@ -2867,17 +3049,17 @@ msgstr "サポート材の配置を調整します。配置はTouching Buildplat #: fdmprinter.def.json msgctxt "support_type option buildplate" msgid "Touching Buildplate" -msgstr "" +msgstr "ビルドプレートにタッチ" #: fdmprinter.def.json msgctxt "support_type option everywhere" msgid "Everywhere" -msgstr "" +msgstr "全対象" #: fdmprinter.def.json msgctxt "support_angle label" msgid "Support Overhang Angle" -msgstr "" +msgstr "サポートオーバーハング角度" #: fdmprinter.def.json msgctxt "support_angle description" @@ -2887,7 +3069,7 @@ msgstr "サポート材がつくオーバーハングの最小角度。0° の #: fdmprinter.def.json msgctxt "support_pattern label" msgid "Support Pattern" -msgstr "" +msgstr "サポートパターン" #: fdmprinter.def.json msgctxt "support_pattern description" @@ -2897,86 +3079,53 @@ msgstr "サポート材の形。サポート材の除去の方法を頑丈また #: fdmprinter.def.json msgctxt "support_pattern option lines" msgid "Lines" -msgstr "" +msgstr "ライン" #: fdmprinter.def.json msgctxt "support_pattern option grid" msgid "Grid" -msgstr "" +msgstr "グリッド" #: fdmprinter.def.json msgctxt "support_pattern option triangles" msgid "Triangles" -msgstr "" +msgstr "トライアングル" #: fdmprinter.def.json msgctxt "support_pattern option concentric" msgid "Concentric" -msgstr "" +msgstr "同心円" #: fdmprinter.def.json msgctxt "support_pattern option concentric_3d" msgid "Concentric 3D" -msgstr "" +msgstr "3D同心円" #: fdmprinter.def.json msgctxt "support_pattern option zigzag" msgid "Zig Zag" -msgstr "" +msgstr "ジグザグ" #: fdmprinter.def.json msgctxt "support_pattern option cross" msgid "Cross" -msgstr "" -#msgstr "クロス" +msgstr "クロス" +# msgstr "クロス" #: fdmprinter.def.json msgctxt "support_connect_zigzags label" msgid "Connect Support ZigZags" -msgstr "" +msgstr "サポートジグザグ接続" #: fdmprinter.def.json msgctxt "support_connect_zigzags description" msgid "Connect the ZigZags. This will increase the strength of the zig zag support structure." 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 "サポートラインの接続部分をスキップし、サポート材部分を壊れやすくします。この設定はジグザクのサポートインフィル材のパターンにて適用できます。" - -#: 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 "サポート毎行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 "毎行Nミリ時に、サポートの接続をわざとスキップし、後のサポート材の構造をもろくし、壊れやすくする。" - #: fdmprinter.def.json msgctxt "support_infill_rate label" msgid "Support Density" -msgstr "" +msgstr "サポート密度" #: fdmprinter.def.json msgctxt "support_infill_rate description" @@ -2986,7 +3135,7 @@ msgstr "サポート材の密度を調整します。大きな値ではオーバ #: fdmprinter.def.json msgctxt "support_line_distance label" msgid "Support Line Distance" -msgstr "" +msgstr "サポートライン距離" #: fdmprinter.def.json msgctxt "support_line_distance description" @@ -2996,7 +3145,7 @@ msgstr "印刷されたサポート材の間隔。この設定は、サポート #: fdmprinter.def.json msgctxt "support_z_distance label" msgid "Support Z Distance" -msgstr "" +msgstr "サポートZ距離" #: fdmprinter.def.json msgctxt "support_z_distance description" @@ -3006,7 +3155,7 @@ msgstr "サポート材のトップ/ボトム部分と印刷物との距離。 #: fdmprinter.def.json msgctxt "support_top_distance label" msgid "Support Top Distance" -msgstr "" +msgstr "サポート上部距離" #: fdmprinter.def.json msgctxt "support_top_distance description" @@ -3016,7 +3165,7 @@ msgstr "サポートの上部から印刷物までの距離。" #: fdmprinter.def.json msgctxt "support_bottom_distance label" msgid "Support Bottom Distance" -msgstr "" +msgstr "サポート底部距離" #: fdmprinter.def.json msgctxt "support_bottom_distance description" @@ -3026,7 +3175,7 @@ msgstr "印刷物とサポート材底部までの距離。" #: fdmprinter.def.json msgctxt "support_xy_distance label" msgid "Support X/Y Distance" -msgstr "" +msgstr "サポートX/Y距離" #: fdmprinter.def.json msgctxt "support_xy_distance description" @@ -3036,7 +3185,7 @@ msgstr "印刷物からX/Y方向へのサポート材との距離" #: fdmprinter.def.json msgctxt "support_xy_overrides_z label" msgid "Support Distance Priority" -msgstr "" +msgstr "サポート距離優先順位" #: fdmprinter.def.json msgctxt "support_xy_overrides_z description" @@ -3046,17 +3195,17 @@ msgstr "X /Y方向のサポートの距離がZ方向のサポートの距離を #: fdmprinter.def.json msgctxt "support_xy_overrides_z option xy_overrides_z" msgid "X/Y overrides Z" -msgstr "" +msgstr "X/YがZを上書き" #: fdmprinter.def.json msgctxt "support_xy_overrides_z option z_overrides_xy" msgid "Z overrides X/Y" -msgstr "" +msgstr "ZがX/Yを上書き" #: fdmprinter.def.json msgctxt "support_xy_distance_overhang label" msgid "Minimum Support X/Y Distance" -msgstr "" +msgstr "最小サポートX/Y距離" #: fdmprinter.def.json msgctxt "support_xy_distance_overhang description" @@ -3066,7 +3215,7 @@ msgstr "X/Y方向におけるオーバーハングからサポートまでの距 #: fdmprinter.def.json msgctxt "support_bottom_stair_step_height label" msgid "Support Stair Step Height" -msgstr "" +msgstr "サポート階段高さ" #: fdmprinter.def.json msgctxt "support_bottom_stair_step_height description" @@ -3076,9 +3225,9 @@ msgstr "モデルにのっている階段状のサポートの底のステップ #: fdmprinter.def.json msgctxt "support_bottom_stair_step_width label" msgid "Support Stair Step Maximum Width" -msgstr "" -#msgstr "階段状ステップサポートの最大幅" +msgstr "サポート階段最大幅" +# msgstr "階段状ステップサポートの最大幅" #: fdmprinter.def.json msgctxt "support_bottom_stair_step_width description" msgid "The maximum width of the steps of the stair-like bottom of support resting on the model. A low value makes the support harder to remove, but too high values can lead to unstable support structures." @@ -3087,7 +3236,7 @@ msgstr "モデルにのっている階段のような下部のサポートのス #: fdmprinter.def.json msgctxt "support_join_distance label" msgid "Support Join Distance" -msgstr "" +msgstr "サポート接合距離" #: fdmprinter.def.json msgctxt "support_join_distance description" @@ -3097,7 +3246,7 @@ msgstr "X/Y方向のサポート構造間の最大距離。別の構造がこの #: fdmprinter.def.json msgctxt "support_offset label" msgid "Support Horizontal Expansion" -msgstr "" +msgstr "サポート水平展開" #: fdmprinter.def.json msgctxt "support_offset description" @@ -3107,9 +3256,9 @@ msgstr "各レイヤーのサポート用ポリゴンに適用されるオフセ #: fdmprinter.def.json msgctxt "support_infill_sparse_thickness label" msgid "Support Infill Layer Thickness" -msgstr "" -#msgstr "サポートインフィルのレイヤーの厚さ" +msgstr "サポートインフィルレイヤー厚さ" +# msgstr "サポートインフィルのレイヤーの厚さ" #: fdmprinter.def.json msgctxt "support_infill_sparse_thickness description" msgid "The thickness per layer of support infill material. This value should always be a multiple of the layer height and is otherwise rounded." @@ -3118,9 +3267,9 @@ msgstr "サポートのインフィルの厚さ。この値はレイヤーの倍 #: fdmprinter.def.json msgctxt "gradual_support_infill_steps label" msgid "Gradual Support Infill Steps" -msgstr "" -#msgstr "段階的なサポート インフィルステップ" +msgstr "サポートインフィル半減回数" +# msgstr "段階的なサポート インフィルステップ" #: fdmprinter.def.json msgctxt "gradual_support_infill_steps description" msgid "Number of times to reduce the support infill density by half when getting further below top surfaces. Areas which are closer to top surfaces get a higher density, up to the Support Infill Density." @@ -3129,9 +3278,9 @@ msgstr "天井面より下に遠ざかる際にサポートのインフィル密 #: fdmprinter.def.json msgctxt "gradual_support_infill_step_height label" msgid "Gradual Support Infill Step Height" -msgstr "" -#msgstr "段階的なサポート インフィル ステップの高さ" +msgstr "サポートインフィル半減前の高さ" +# msgstr "段階的なサポート インフィル ステップの高さ" #: fdmprinter.def.json msgctxt "gradual_support_infill_step_height description" msgid "The height of support infill of a given density before switching to half the density." @@ -3140,7 +3289,7 @@ msgstr "密度が半分に切り替える前の所定のサポートのインフ #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" -msgstr "" +msgstr "サポートインタフェースを有効にする" #: fdmprinter.def.json msgctxt "support_interface_enable description" @@ -3150,9 +3299,9 @@ msgstr "モデルとサポートの間に密なインターフェースを生成 #: fdmprinter.def.json msgctxt "support_roof_enable label" msgid "Enable Support Roof" -msgstr "" -#msgstr "サポートルーフの有効化" +msgstr "サポートルーフを有効にする" +# msgstr "サポートルーフの有効化" #: fdmprinter.def.json msgctxt "support_roof_enable description" msgid "Generate a dense slab of material between the top of support and the model. This will create a skin between the model and support." @@ -3161,9 +3310,9 @@ msgstr "サポートの上部とモデルの間に高密度の厚板を形成し #: fdmprinter.def.json msgctxt "support_bottom_enable label" msgid "Enable Support Floor" -msgstr "" -#msgstr "サポートフロアを有効にします。" +msgstr "サポートフロアを有効にする" +# msgstr "サポートフロアを有効にします。" #: fdmprinter.def.json msgctxt "support_bottom_enable description" msgid "Generate a dense slab of material between the bottom of the support and the model. This will create a skin between the model and support." @@ -3172,7 +3321,7 @@ msgstr "サポートの上部とモデルの間に高密度の厚板を形成し #: fdmprinter.def.json msgctxt "support_interface_height label" msgid "Support Interface Thickness" -msgstr "" +msgstr "サポートインタフェース厚さ" #: fdmprinter.def.json msgctxt "support_interface_height description" @@ -3182,7 +3331,7 @@ msgstr "底面または上部のモデルと接触するサポートのインタ #: fdmprinter.def.json msgctxt "support_roof_height label" msgid "Support Roof Thickness" -msgstr "" +msgstr "サポートルーフ厚さ" #: fdmprinter.def.json msgctxt "support_roof_height description" @@ -3192,9 +3341,9 @@ msgstr "サポートのルーフの厚さ。これは、モデルの下につく #: fdmprinter.def.json msgctxt "support_bottom_height label" msgid "Support Floor Thickness" -msgstr "" -#msgstr "サポートのフロアの厚み" +msgstr "サポートフロア厚さ" +# msgstr "サポートのフロアの厚み" #: fdmprinter.def.json msgctxt "support_bottom_height description" msgid "The thickness of the support floors. This controls the number of dense layers that are printed on top of places of a model on which support rests." @@ -3203,7 +3352,7 @@ msgstr "サポート材の底部の厚さ。これは、サポートが置かれ #: fdmprinter.def.json msgctxt "support_interface_skip_height label" msgid "Support Interface Resolution" -msgstr "" +msgstr "サポートインタフェース解像度" #: fdmprinter.def.json msgctxt "support_interface_skip_height description" @@ -3213,7 +3362,7 @@ msgstr "サポートの上下にモデルがあるかどうか確認するには #: fdmprinter.def.json msgctxt "support_interface_density label" msgid "Support Interface Density" -msgstr "" +msgstr "サポートインタフェース密度" #: fdmprinter.def.json msgctxt "support_interface_density description" @@ -3223,9 +3372,9 @@ msgstr "サポート材のルーフとフロアの密度を調整します 大 #: fdmprinter.def.json msgctxt "support_roof_density label" msgid "Support Roof Density" -msgstr "" -#msgstr "サポートルーフの密度" +msgstr "サポートルーフ密度" +# msgstr "サポートルーフの密度" #: fdmprinter.def.json msgctxt "support_roof_density description" msgid "The density of the roofs of the support structure. A higher value results in better overhangs, but the supports are harder to remove." @@ -3234,9 +3383,9 @@ msgstr "サポート材のルーフの部分の密度を調整します 大き #: fdmprinter.def.json msgctxt "support_roof_line_distance label" msgid "Support Roof Line Distance" -msgstr "" -#msgstr "サポートルーフライン距離" +msgstr "サポートルーフライン距離" +# msgstr "サポートルーフライン距離" #: fdmprinter.def.json msgctxt "support_roof_line_distance description" msgid "Distance between the printed support roof lines. This setting is calculated by the Support Roof Density, but can be adjusted separately." @@ -3245,9 +3394,9 @@ msgstr "印刷されたサポートルーフ線間の距離。この設定は、 #: fdmprinter.def.json msgctxt "support_bottom_density label" msgid "Support Floor Density" -msgstr "" -#msgstr "サポートフロア密度" +msgstr "サポートフロア密度" +# msgstr "サポートフロア密度" #: fdmprinter.def.json msgctxt "support_bottom_density description" msgid "The density of the floors of the support structure. A higher value results in better adhesion of the support on top of the model." @@ -3256,7 +3405,7 @@ msgstr "サポート構造のフロアの密度です。高い値は、サポー #: fdmprinter.def.json msgctxt "support_bottom_line_distance label" msgid "Support Floor Line Distance" -msgstr "" +msgstr "サポートフロアライン距離" #: fdmprinter.def.json msgctxt "support_bottom_line_distance description" @@ -3266,7 +3415,7 @@ msgstr "印刷されたサポートのフロアのライン間の距離。この #: fdmprinter.def.json msgctxt "support_interface_pattern label" msgid "Support Interface Pattern" -msgstr "" +msgstr "サポートインタフェースパターン" #: fdmprinter.def.json msgctxt "support_interface_pattern description" @@ -3276,39 +3425,39 @@ msgstr "モデルとサポートのインタフェースが印刷されるパタ #: fdmprinter.def.json msgctxt "support_interface_pattern option lines" msgid "Lines" -msgstr "" +msgstr "ライン" #: fdmprinter.def.json msgctxt "support_interface_pattern option grid" msgid "Grid" -msgstr "" +msgstr "グリッド" #: fdmprinter.def.json msgctxt "support_interface_pattern option triangles" msgid "Triangles" -msgstr "" +msgstr "トライアングル" #: fdmprinter.def.json msgctxt "support_interface_pattern option concentric" msgid "Concentric" -msgstr "" +msgstr "同心円" #: fdmprinter.def.json msgctxt "support_interface_pattern option concentric_3d" msgid "Concentric 3D" -msgstr "" +msgstr "3D同心円" #: fdmprinter.def.json msgctxt "support_interface_pattern option zigzag" msgid "Zig Zag" -msgstr "" +msgstr "ジグザグ" #: fdmprinter.def.json msgctxt "support_roof_pattern label" msgid "Support Roof Pattern" -msgstr "" -#msgstr "ルーフのサポートのパターン" +msgstr "サポートルーフパターン" +# msgstr "ルーフのサポートのパターン" #: fdmprinter.def.json msgctxt "support_roof_pattern description" msgid "The pattern with which the roofs of the support are printed." @@ -3317,45 +3466,45 @@ msgstr "サポートのルーフが印刷されるパターン" #: fdmprinter.def.json msgctxt "support_roof_pattern option lines" msgid "Lines" -msgstr "" -#msgstr "線" +msgstr "ライン" +# msgstr "線" #: fdmprinter.def.json msgctxt "support_roof_pattern option grid" msgid "Grid" -msgstr "" -#msgstr "グリッド" +msgstr "グリッド" +# msgstr "グリッド" #: fdmprinter.def.json msgctxt "support_roof_pattern option triangles" msgid "Triangles" -msgstr "" -#msgstr "三角形" +msgstr "トライアングル" +# msgstr "三角形" #: fdmprinter.def.json msgctxt "support_roof_pattern option concentric" msgid "Concentric" -msgstr "" -#msgstr "同心" +msgstr "同心円" +# msgstr "同心" #: fdmprinter.def.json msgctxt "support_roof_pattern option concentric_3d" msgid "Concentric 3D" -msgstr "" -#msgstr "同心3D" +msgstr "3D同心円" +# msgstr "同心3D" #: fdmprinter.def.json msgctxt "support_roof_pattern option zigzag" msgid "Zig Zag" -msgstr "" -#msgstr "ジグザグ" +msgstr "ジグザグ" +# msgstr "ジグザグ" #: fdmprinter.def.json msgctxt "support_bottom_pattern label" msgid "Support Floor Pattern" -msgstr "" -#msgstr "サポートフロアパターン" +msgstr "サポートフロアパターン" +# msgstr "サポートフロアパターン" #: fdmprinter.def.json msgctxt "support_bottom_pattern description" msgid "The pattern with which the floors of the support are printed." @@ -3364,43 +3513,43 @@ msgstr "サポートのフロアが印刷されるパターン。" #: fdmprinter.def.json msgctxt "support_bottom_pattern option lines" msgid "Lines" -msgstr "" -#msgstr "線" +msgstr "ライン" +# msgstr "線" #: fdmprinter.def.json msgctxt "support_bottom_pattern option grid" msgid "Grid" -msgstr "" -#msgstr "グリッド" +msgstr "グリッド" +# msgstr "グリッド" #: fdmprinter.def.json msgctxt "support_bottom_pattern option triangles" msgid "Triangles" -msgstr "" -#msgstr "三角形" +msgstr "トライアングル" +# msgstr "三角形" #: fdmprinter.def.json msgctxt "support_bottom_pattern option concentric" msgid "Concentric" -msgstr "" -#msgstr "同心円" +msgstr "同心円" +# msgstr "同心円" #: fdmprinter.def.json msgctxt "support_bottom_pattern option concentric_3d" msgid "Concentric 3D" -msgstr "" -#msgstr "コンセントリック3D" +msgstr "3D同心円" +# msgstr "コンセントリック3D" #: fdmprinter.def.json msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" -msgstr "" -#msgstr "ジグザグ" +msgstr "ジグザグ" +# msgstr "ジグザグ" #: fdmprinter.def.json msgctxt "support_use_towers label" msgid "Use Towers" -msgstr "" +msgstr "使用タワー" #: fdmprinter.def.json msgctxt "support_use_towers description" @@ -3410,7 +3559,7 @@ msgstr "特殊なタワーを使用して、小さなオーバーハングして #: fdmprinter.def.json msgctxt "support_tower_diameter label" msgid "Tower Diameter" -msgstr "" +msgstr "タワー直径" #: fdmprinter.def.json msgctxt "support_tower_diameter description" @@ -3420,7 +3569,7 @@ msgstr "特別な塔の直径。" #: fdmprinter.def.json msgctxt "support_minimal_diameter label" msgid "Minimum Diameter" -msgstr "" +msgstr "最小直径" #: fdmprinter.def.json msgctxt "support_minimal_diameter description" @@ -3430,7 +3579,7 @@ msgstr "特殊なサポート塔によって支持される小さな領域のX / #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" msgid "Tower Roof Angle" -msgstr "" +msgstr "タワールーフ角度" #: fdmprinter.def.json msgctxt "support_tower_roof_angle description" @@ -3440,7 +3589,7 @@ msgstr "タワーの屋上の角度。値が高いほど尖った屋根が得ら #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" -msgstr "" +msgstr "ビルドプレート密着性" #: fdmprinter.def.json msgctxt "platform_adhesion description" @@ -3450,9 +3599,9 @@ msgstr "密着性" #: fdmprinter.def.json msgctxt "prime_blob_enable label" msgid "Enable Prime Blob" -msgstr "" -#msgstr "プライムブロブを有効にする" +msgstr "プライムボルブを有効にする" +# msgstr "プライムブロブを有効にする" #: fdmprinter.def.json msgctxt "prime_blob_enable description" msgid "Whether to prime the filament with a blob before printing. Turning this setting on will ensure that the extruder will have material ready at the nozzle before printing. Printing Brim or Skirt can act like priming too, in which case turning this setting off saves some time." @@ -3461,7 +3610,7 @@ msgstr "印刷する前にフィラメントの小さな塊を作るかどうか #: fdmprinter.def.json msgctxt "extruder_prime_pos_x label" msgid "Extruder Prime X Position" -msgstr "" +msgstr "エクストルーダープライムX位置" #: fdmprinter.def.json msgctxt "extruder_prime_pos_x description" @@ -3471,7 +3620,7 @@ msgstr "プリント開始時のノズルの位置を表すX座標。" #: fdmprinter.def.json msgctxt "extruder_prime_pos_y label" msgid "Extruder Prime Y Position" -msgstr "" +msgstr "エクストルーダープライムY位置" #: fdmprinter.def.json msgctxt "extruder_prime_pos_y description" @@ -3481,7 +3630,7 @@ msgstr "プリント開始時にノズル位置を表すY座標。" #: fdmprinter.def.json msgctxt "adhesion_type label" msgid "Build Plate Adhesion Type" -msgstr "" +msgstr "ビルドプレート接着タイプ" #: fdmprinter.def.json msgctxt "adhesion_type description" @@ -3491,31 +3640,31 @@ msgstr "エクストルーダーとビルドプレートへの接着両方を改 #: fdmprinter.def.json msgctxt "adhesion_type option skirt" msgid "Skirt" -msgstr "" -#msgstr "スカート" +msgstr "スカート" +# msgstr "スカート" #: fdmprinter.def.json msgctxt "adhesion_type option brim" msgid "Brim" -msgstr "" -#msgstr "ブリム" +msgstr "ブリム" +# msgstr "ブリム" #: fdmprinter.def.json msgctxt "adhesion_type option raft" msgid "Raft" -msgstr "" -#msgstr "ラフト" +msgstr "ラフト" +# msgstr "ラフト" #: fdmprinter.def.json msgctxt "adhesion_type option none" msgid "None" -msgstr "" -#msgstr "なし" +msgstr "なし" +# msgstr "なし" #: fdmprinter.def.json msgctxt "adhesion_extruder_nr label" msgid "Build Plate Adhesion Extruder" -msgstr "" +msgstr "ビルドプレート接着エクストルーダー" #: fdmprinter.def.json msgctxt "adhesion_extruder_nr description" @@ -3525,7 +3674,7 @@ msgstr "スカート/ブリム/ラフトをプリントする際のエクスト #: fdmprinter.def.json msgctxt "skirt_line_count label" msgid "Skirt Line Count" -msgstr "" +msgstr "スカートライン数" #: fdmprinter.def.json msgctxt "skirt_line_count description" @@ -3535,19 +3684,19 @@ msgstr "複数のスカートラインを使用すると、小さなモデル形 #: fdmprinter.def.json msgctxt "skirt_gap label" msgid "Skirt Distance" -msgstr "" +msgstr "スカート距離" #: fdmprinter.def.json 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 "スカートとプリントの最初のレイヤーの間の水平距離。これが最小距離であり、複数のスカートラインがこの距離から外側に延びている。" +"This is the minimum distance. Multiple skirt lines will extend outwards from this distance." +msgstr "スカートと印刷の最初の層の間の水平距離。\nこれは最小距離です。複数のスカートラインがこの距離から外側に展開されます。" #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" msgid "Skirt/Brim Minimum Length" -msgstr "" +msgstr "スカート/ブリム最小長さ" #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length description" @@ -3557,7 +3706,7 @@ msgstr "スカートまたはブリム最短の長さ。この長さにすべて #: fdmprinter.def.json msgctxt "brim_width label" msgid "Brim Width" -msgstr "" +msgstr "ブリム幅" #: fdmprinter.def.json msgctxt "brim_width description" @@ -3567,7 +3716,7 @@ msgstr "モデルから最外線のブリムまでの距離。大きなブリム #: fdmprinter.def.json msgctxt "brim_line_count label" msgid "Brim Line Count" -msgstr "" +msgstr "ブリムライン数" #: fdmprinter.def.json msgctxt "brim_line_count description" @@ -3577,39 +3726,17 @@ msgstr "ブリムに使用される線数。ブリムの線数は、ビルドプ #: fdmprinter.def.json msgctxt "brim_outside_only label" msgid "Brim Only on Outside" -msgstr "" +msgstr "外側にブリムのみ印刷" #: fdmprinter.def.json 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 "" -#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 "エクストルーダーは、最初のレイヤーの通常の高さからこの値でオフセットされます。それは、正 (上昇) または負 (低下)。エクストルーダーを少しだけ上昇させた方が、フィラメントによってはビルドプレートに付着しやすくなります。" - -#: 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 "0 以外の場合、Z オフセットは多くのレイヤーを介して 0 に減らされます。0 の値は そのZ オフセットがプリント中すべてのレイヤーにてコンスタントを維持することを意味します。" - #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" -msgstr "" +msgstr "ラフトの余分なマージン" #: fdmprinter.def.json msgctxt "raft_margin description" @@ -3619,18 +3746,17 @@ msgstr "ラフトが有効になっている場合、モデルの周りに余分 #: fdmprinter.def.json msgctxt "raft_smoothing label" msgid "Raft Smoothing" -msgstr "" -#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 "この設定は、ラフトのアウトラインの内側の角が丸みを帯びているかを制御します。内側のコーナーは、与えられた値と等しい半径の半円に丸められています。この設定では、円よりも小さいラフトアウトラインの穴は削除されます。" +msgid "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." +msgstr "この設定は、ラフトの輪郭の内側の角がどの程度丸められるかを制御します。内側の角は、ここで指定した値と等しい半径の半円に丸められます。この設定は、そのような円よりも小さいラフトの輪郭の穴を削除します。" #: fdmprinter.def.json msgctxt "raft_airgap label" msgid "Raft Air Gap" -msgstr "" +msgstr "ラフト間のラップ" #: fdmprinter.def.json msgctxt "raft_airgap description" @@ -3640,7 +3766,7 @@ msgstr "モデルの第一層のラフトと最終ラフト層の隙間。この #: fdmprinter.def.json msgctxt "layer_0_z_overlap label" msgid "Initial Layer Z Overlap" -msgstr "" +msgstr "初期レイヤーZのオーバーラップ" #: fdmprinter.def.json msgctxt "layer_0_z_overlap description" @@ -3650,7 +3776,7 @@ msgstr "エアギャップ内で失われたフィラメントを補うために #: fdmprinter.def.json msgctxt "raft_surface_layers label" msgid "Raft Top Layers" -msgstr "" +msgstr "ラフト最上層" #: fdmprinter.def.json msgctxt "raft_surface_layers description" @@ -3660,7 +3786,7 @@ msgstr "第2ラフト層の上の最上層の数。これらは、モデルが #: fdmprinter.def.json msgctxt "raft_surface_thickness label" msgid "Raft Top Layer Thickness" -msgstr "" +msgstr "ラフト最上層厚さ" #: fdmprinter.def.json msgctxt "raft_surface_thickness description" @@ -3670,7 +3796,7 @@ msgstr "トップラフト層の層厚。" #: fdmprinter.def.json msgctxt "raft_surface_line_width label" msgid "Raft Top Line Width" -msgstr "" +msgstr "ラフト最上ライン幅" #: fdmprinter.def.json msgctxt "raft_surface_line_width description" @@ -3680,7 +3806,7 @@ msgstr "ラフトの上面の線の幅。これらは細い線で、ラフトの #: fdmprinter.def.json msgctxt "raft_surface_line_spacing label" msgid "Raft Top Spacing" -msgstr "" +msgstr "ラフト最上面スペース" #: fdmprinter.def.json msgctxt "raft_surface_line_spacing description" @@ -3690,7 +3816,7 @@ msgstr "上のラフト層とラフト線の間の距離。間隔は線の幅と #: fdmprinter.def.json msgctxt "raft_interface_thickness label" msgid "Raft Middle Thickness" -msgstr "" +msgstr "ラフト中央厚さ" #: fdmprinter.def.json msgctxt "raft_interface_thickness description" @@ -3700,7 +3826,7 @@ msgstr "中間のラフト層の層の厚さ。" #: fdmprinter.def.json msgctxt "raft_interface_line_width label" msgid "Raft Middle Line Width" -msgstr "" +msgstr "ラフト中央ライン幅" #: fdmprinter.def.json msgctxt "raft_interface_line_width description" @@ -3710,7 +3836,7 @@ msgstr "中間ラフト層の線の幅。第2層をより押し出すと、ラ #: fdmprinter.def.json msgctxt "raft_interface_line_spacing label" msgid "Raft Middle Spacing" -msgstr "" +msgstr "ラフト中間スペース" #: fdmprinter.def.json msgctxt "raft_interface_line_spacing description" @@ -3720,7 +3846,7 @@ msgstr "中間ラフト層とラフト線の間の距離。中央の間隔はか #: fdmprinter.def.json msgctxt "raft_base_thickness label" msgid "Raft Base Thickness" -msgstr "" +msgstr "ラフトベース厚さ" #: fdmprinter.def.json msgctxt "raft_base_thickness description" @@ -3730,7 +3856,7 @@ msgstr "ベースラフト層の層厚さ。プリンタのビルドプレート #: fdmprinter.def.json msgctxt "raft_base_line_width label" msgid "Raft Base Line Width" -msgstr "" +msgstr "ラフトベースライン幅" #: fdmprinter.def.json msgctxt "raft_base_line_width description" @@ -3740,7 +3866,7 @@ msgstr "ベースラフト層の線幅。ビルドプレートの接着のため #: fdmprinter.def.json msgctxt "raft_base_line_spacing label" msgid "Raft Line Spacing" -msgstr "" +msgstr "ラフトラインスペース" #: fdmprinter.def.json msgctxt "raft_base_line_spacing description" @@ -3750,7 +3876,7 @@ msgstr "ベースラフト層のラフトライン間の距離。広い間隔は #: fdmprinter.def.json msgctxt "raft_speed label" msgid "Raft Print Speed" -msgstr "" +msgstr "ラフト印刷速度" #: fdmprinter.def.json msgctxt "raft_speed description" @@ -3760,7 +3886,7 @@ msgstr "ラフトが印刷される速度。" #: fdmprinter.def.json msgctxt "raft_surface_speed label" msgid "Raft Top Print Speed" -msgstr "" +msgstr "ラフト上層印刷速度" #: fdmprinter.def.json msgctxt "raft_surface_speed description" @@ -3770,7 +3896,7 @@ msgstr "トップラフト層が印刷される速度。この値はノズルが #: fdmprinter.def.json msgctxt "raft_interface_speed label" msgid "Raft Middle Print Speed" -msgstr "" +msgstr "ラフト中間印刷速度" #: fdmprinter.def.json msgctxt "raft_interface_speed description" @@ -3780,7 +3906,7 @@ msgstr "ミドルラフト層が印刷される速度。ノズルから出てく #: fdmprinter.def.json msgctxt "raft_base_speed label" msgid "Raft Base Print Speed" -msgstr "" +msgstr "ラフトベース印刷速度" #: fdmprinter.def.json msgctxt "raft_base_speed description" @@ -3790,7 +3916,7 @@ msgstr "ベースラフト層が印刷される速度。これは、ノズルか #: fdmprinter.def.json msgctxt "raft_acceleration label" msgid "Raft Print Acceleration" -msgstr "" +msgstr "ラフト印刷加速度" #: fdmprinter.def.json msgctxt "raft_acceleration description" @@ -3800,7 +3926,7 @@ msgstr "ラフト印刷時の加速度。" #: fdmprinter.def.json msgctxt "raft_surface_acceleration label" msgid "Raft Top Print Acceleration" -msgstr "" +msgstr "ラフト上層層印刷加速度" #: fdmprinter.def.json msgctxt "raft_surface_acceleration description" @@ -3810,7 +3936,7 @@ msgstr "ラフトのトップ印刷時の加速度" #: fdmprinter.def.json msgctxt "raft_interface_acceleration label" msgid "Raft Middle Print Acceleration" -msgstr "" +msgstr "ラフト中間層印刷加速度" #: fdmprinter.def.json msgctxt "raft_interface_acceleration description" @@ -3820,7 +3946,7 @@ msgstr "ラフトの中間層印刷時の加速度" #: fdmprinter.def.json msgctxt "raft_base_acceleration label" msgid "Raft Base Print Acceleration" -msgstr "" +msgstr "ラフトベース印刷加速度" #: fdmprinter.def.json msgctxt "raft_base_acceleration description" @@ -3830,7 +3956,7 @@ msgstr "ラフトの底面印刷時の加速度" #: fdmprinter.def.json msgctxt "raft_jerk label" msgid "Raft Print Jerk" -msgstr "" +msgstr "ラフト印刷ジャーク" #: fdmprinter.def.json msgctxt "raft_jerk description" @@ -3840,7 +3966,7 @@ msgstr "ラフトが印刷時のジャーク。" #: fdmprinter.def.json msgctxt "raft_surface_jerk label" msgid "Raft Top Print Jerk" -msgstr "" +msgstr "ラフト上層印刷ジャーク" #: fdmprinter.def.json msgctxt "raft_surface_jerk description" @@ -3850,7 +3976,7 @@ msgstr "トップラフト層印刷時のジャーク" #: fdmprinter.def.json msgctxt "raft_interface_jerk label" msgid "Raft Middle Print Jerk" -msgstr "" +msgstr "ラフト中間層印刷ジャーク" #: fdmprinter.def.json msgctxt "raft_interface_jerk description" @@ -3860,7 +3986,7 @@ msgstr "ミドルラフト層印刷時のジャーク" #: fdmprinter.def.json msgctxt "raft_base_jerk label" msgid "Raft Base Print Jerk" -msgstr "" +msgstr "ラフトベース印刷ジャーク" #: fdmprinter.def.json msgctxt "raft_base_jerk description" @@ -3870,7 +3996,7 @@ msgstr "ベースラフト層印刷時のジャーク" #: fdmprinter.def.json msgctxt "raft_fan_speed label" msgid "Raft Fan Speed" -msgstr "" +msgstr "ラフトファン速度" #: fdmprinter.def.json msgctxt "raft_fan_speed description" @@ -3880,7 +4006,7 @@ msgstr "ラフト印刷時のファンの速度。" #: fdmprinter.def.json msgctxt "raft_surface_fan_speed label" msgid "Raft Top Fan Speed" -msgstr "" +msgstr "ラフト上層ファン速度" #: fdmprinter.def.json msgctxt "raft_surface_fan_speed description" @@ -3890,7 +4016,7 @@ msgstr "トップラフト印刷時のファンの速度。" #: fdmprinter.def.json msgctxt "raft_interface_fan_speed label" msgid "Raft Middle Fan Speed" -msgstr "" +msgstr "ラフト中間層ファン速度" #: fdmprinter.def.json msgctxt "raft_interface_fan_speed description" @@ -3900,7 +4026,7 @@ msgstr "ミドルラフト印刷時のファンの速度。" #: fdmprinter.def.json msgctxt "raft_base_fan_speed label" msgid "Raft Base Fan Speed" -msgstr "" +msgstr "ラフトベースファン速度" #: fdmprinter.def.json msgctxt "raft_base_fan_speed description" @@ -3910,7 +4036,7 @@ msgstr "ベースラフト層印刷時のファン速度" #: fdmprinter.def.json msgctxt "dual label" msgid "Dual Extrusion" -msgstr "" +msgstr "デュアルエクストルーダー" #: fdmprinter.def.json msgctxt "dual description" @@ -3920,7 +4046,7 @@ msgstr "デュアルエクストルーダーで印刷するための設定" #: fdmprinter.def.json msgctxt "prime_tower_enable label" msgid "Enable Prime Tower" -msgstr "" +msgstr "プライムタワーを有効にする" #: fdmprinter.def.json msgctxt "prime_tower_enable description" @@ -3930,7 +4056,7 @@ msgstr "印刷物の横にタワーを造形して、ノズル交換後にフィ #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" -msgstr "" +msgstr "プライムタワーのサイズ" #: fdmprinter.def.json msgctxt "prime_tower_size description" @@ -3940,7 +4066,7 @@ msgstr "プライムタワーの幅。" #: fdmprinter.def.json msgctxt "prime_tower_min_volume label" msgid "Prime Tower Minimum Volume" -msgstr "" +msgstr "プライムタワー最小容積" #: fdmprinter.def.json msgctxt "prime_tower_min_volume description" @@ -3950,7 +4076,7 @@ msgstr "プライムタワーの各層の最小容積" #: fdmprinter.def.json msgctxt "prime_tower_wall_thickness label" msgid "Prime Tower Thickness" -msgstr "" +msgstr "プライムタワーの厚さ" #: fdmprinter.def.json msgctxt "prime_tower_wall_thickness description" @@ -3960,7 +4086,7 @@ msgstr "中空プライムタワーの厚さ。プライムタワーの半分を #: fdmprinter.def.json msgctxt "prime_tower_position_x label" msgid "Prime Tower X Position" -msgstr "" +msgstr "プライムタワーX位置" #: fdmprinter.def.json msgctxt "prime_tower_position_x description" @@ -3970,7 +4096,7 @@ msgstr "プライムタワーの位置のx座標。" #: fdmprinter.def.json msgctxt "prime_tower_position_y label" msgid "Prime Tower Y Position" -msgstr "" +msgstr "プライムタワーY位置" #: fdmprinter.def.json msgctxt "prime_tower_position_y description" @@ -3980,7 +4106,7 @@ msgstr "プライムタワーの位置のy座標。" #: fdmprinter.def.json msgctxt "prime_tower_flow label" msgid "Prime Tower Flow" -msgstr "" +msgstr "プライムタワーのフロー" #: fdmprinter.def.json msgctxt "prime_tower_flow description" @@ -3990,7 +4116,7 @@ msgstr "吐出量: マテリアルの吐出量はこの値の乗算で計算さ #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" -msgstr "" +msgstr "プライムタワーノズル拭き取り" #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled description" @@ -4000,7 +4126,7 @@ msgstr "1本のノズルでプライムタワーを印刷した後、もう片 #: fdmprinter.def.json msgctxt "dual_pre_wipe label" msgid "Wipe Nozzle After Switch" -msgstr "" +msgstr "スイッチ後のノズル拭き取り" #: fdmprinter.def.json msgctxt "dual_pre_wipe description" @@ -4010,9 +4136,9 @@ msgstr "エクストルーダーを切り替えた後、最初に印刷したも #: fdmprinter.def.json msgctxt "prime_tower_purge_volume label" msgid "Prime Tower Purge Volume" -msgstr "" -#msgstr "プライムタワーのパージ時のボリューム" +msgstr "プライムタワーのパージ量" +# msgstr "プライムタワーのパージ時のボリューム" #: fdmprinter.def.json msgctxt "prime_tower_purge_volume description" msgid "Amount of filament to be purged when wiping on the prime tower. Purging is useful for compensating the filament lost by oozing during inactivity of the nozzle." @@ -4021,7 +4147,7 @@ msgstr "プライムタワーの上を拭くときにパージするフィラメ #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" -msgstr "" +msgstr "Ooze Shieldを有効にする" #: fdmprinter.def.json msgctxt "ooze_shield_enabled description" @@ -4031,7 +4157,7 @@ msgstr "モデルの周りに壁(ooze shield)を作る。これを生成す #: fdmprinter.def.json msgctxt "ooze_shield_angle label" msgid "Ooze Shield Angle" -msgstr "" +msgstr "Ooze Shield角度" #: fdmprinter.def.json msgctxt "ooze_shield_angle description" @@ -4041,7 +4167,7 @@ msgstr "壁(ooze shield)作成時の最大の角度。 0度は垂直であ #: fdmprinter.def.json msgctxt "ooze_shield_dist label" msgid "Ooze Shield Distance" -msgstr "" +msgstr "Ooze Shield距離" #: fdmprinter.def.json msgctxt "ooze_shield_dist description" @@ -4051,7 +4177,7 @@ msgstr "壁(ooze shield)の造形物からの距離" #: fdmprinter.def.json msgctxt "meshfix label" msgid "Mesh Fixes" -msgstr "" +msgstr "メッシュ修正" #: fdmprinter.def.json msgctxt "meshfix description" @@ -4061,7 +4187,7 @@ msgstr "カテゴリー_メッシュ修正" #: fdmprinter.def.json msgctxt "meshfix_union_all label" msgid "Union Overlapping Volumes" -msgstr "" +msgstr "重複量" #: fdmprinter.def.json msgctxt "meshfix_union_all description" @@ -4071,7 +4197,7 @@ msgstr "メッシュ内の重なり合うボリュームから生じる内部ジ #: fdmprinter.def.json msgctxt "meshfix_union_all_remove_holes label" msgid "Remove All Holes" -msgstr "" +msgstr "全穴除去" #: fdmprinter.def.json msgctxt "meshfix_union_all_remove_holes description" @@ -4081,7 +4207,7 @@ msgstr "各レイヤーの穴を消し、外形のみを保持します。これ #: fdmprinter.def.json msgctxt "meshfix_extensive_stitching label" msgid "Extensive Stitching" -msgstr "" +msgstr "強めのスティッチング" #: fdmprinter.def.json msgctxt "meshfix_extensive_stitching description" @@ -4091,17 +4217,27 @@ msgstr "強めのスティッチングは、穴をメッシュで塞いでデー #: fdmprinter.def.json msgctxt "meshfix_keep_open_polygons label" msgid "Keep Disconnected Faces" -msgstr "" +msgstr "スティッチできない部分を保持" #: fdmprinter.def.json msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "通常、Curaはメッシュ内の小さな穴をスティッチし、大きな穴のあるレイヤーの部分を削除しようとします。このオプションを有効にすると、スティッチできない部分が保持されます。このオプションは、他のすべてが適切なGCodeを生成できない場合の最後の手段として使用する必要があります。" +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "最大解像度" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "スライス後の線分の最小サイズ。これを増やすと、メッシュの解像度が低くなります。これにより、プリンタが g コードの処理速度に追いつくことができ、処理できないメッシュの詳細を取り除いてスライス速度を速めます。" + #: fdmprinter.def.json msgctxt "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" -msgstr "" +msgstr "重複メッシュのマージ" #: fdmprinter.def.json msgctxt "multiple_mesh_overlap description" @@ -4111,7 +4247,7 @@ msgstr "触れているメッシュを少し重ねてください。これによ #: fdmprinter.def.json msgctxt "carve_multiple_volumes label" msgid "Remove Mesh Intersection" -msgstr "" +msgstr "重複メッシュの削除" #: fdmprinter.def.json msgctxt "carve_multiple_volumes description" @@ -4121,17 +4257,27 @@ msgstr "複数のメッシュが重なっている領域を削除します。こ #: fdmprinter.def.json msgctxt "alternate_carve_order label" msgid "Alternate Mesh Removal" -msgstr "" +msgstr "代替メッシュの削除" #: fdmprinter.def.json msgctxt "alternate_carve_order description" msgid "Switch to which mesh intersecting volumes will belong with every layer, so that the overlapping meshes become interwoven. Turning this setting off will cause one of the meshes to obtain all of the volume in the overlap, while it is removed from the other meshes." msgstr "交差するメッシュがどのレイヤーに属しているかを切り替えることで、オーバーラップしているメッシュを絡み合うようにします。この設定をオフにすると、一方のメッシュはオーバーラップ内のすべてのボリュームを取得し、他方のメッシュは他から削除されます。" +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers label" +msgid "Remove Empty First Layers" +msgstr "空の最初のメッシュの削除" + +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers description" +msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." +msgstr "最初に印刷したレイヤーの下に空のレイヤーがある場合は取り除きます。この設定を無効にすると、スライストレランスが「排他」または「中間」に設定されている場合に最初のレイヤーが空になる原因になります。" + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" -msgstr "" +msgstr "特別モード" #: fdmprinter.def.json msgctxt "blackmagic description" @@ -4141,7 +4287,7 @@ msgstr "カテゴリー_ブラックマジック" #: fdmprinter.def.json msgctxt "print_sequence label" msgid "Print Sequence" -msgstr "" +msgstr "印刷頻度" #: fdmprinter.def.json msgctxt "print_sequence description" @@ -4151,17 +4297,17 @@ msgstr "すべてのモデルをレイヤーごとに印刷するか、1つの #: fdmprinter.def.json msgctxt "print_sequence option all_at_once" msgid "All at Once" -msgstr "" +msgstr "一度にすべて" #: fdmprinter.def.json msgctxt "print_sequence option one_at_a_time" msgid "One at a Time" -msgstr "" +msgstr "1つずつ" #: fdmprinter.def.json msgctxt "infill_mesh label" msgid "Infill Mesh" -msgstr "" +msgstr "インフィルメッシュ" #: fdmprinter.def.json msgctxt "infill_mesh description" @@ -4171,7 +4317,7 @@ msgstr "このメッシュを使用して、重なる他のメッシュのイン #: fdmprinter.def.json msgctxt "infill_mesh_order label" msgid "Infill Mesh Order" -msgstr "" +msgstr "インフィルメッシュの順序" #: fdmprinter.def.json msgctxt "infill_mesh_order description" @@ -4181,9 +4327,9 @@ msgstr "他のインフィルメッシュのインフィル内にあるインフ #: fdmprinter.def.json msgctxt "cutting_mesh label" msgid "Cutting Mesh" -msgstr "" -#msgstr "メッシュの切断" +msgstr "メッシュ切断" +# msgstr "メッシュの切断" #: fdmprinter.def.json msgctxt "cutting_mesh description" msgid "Limit the volume of this mesh to within other meshes. You can use this to make certain areas of one mesh print with different settings and with a whole different extruder." @@ -4192,9 +4338,9 @@ msgstr "このメッシュの大きさをを他のメッシュ内に制限しま #: fdmprinter.def.json msgctxt "mold_enabled label" msgid "Mold" -msgstr "" -#msgstr "モールド" +msgstr "型" +# msgstr "モールド" #: fdmprinter.def.json msgctxt "mold_enabled description" msgid "Print models as a mold, which can be cast in order to get a model which resembles the models on the build plate." @@ -4203,9 +4349,9 @@ msgstr "型を取るため印刷し、ビルドプレート上の同じような #: fdmprinter.def.json msgctxt "mold_width label" msgid "Minimal Mold Width" -msgstr "" -#msgstr "最小のモールド幅" +msgstr "最小型幅" +# msgstr "最小のモールド幅" #: fdmprinter.def.json msgctxt "mold_width description" msgid "The minimal distance between the ouside of the mold and the outside of the model." @@ -4214,9 +4360,9 @@ msgstr "型用とモデルの外側の最短距離。" #: fdmprinter.def.json msgctxt "mold_roof_height label" msgid "Mold Roof Height" -msgstr "" -#msgstr "モールドの屋根の高さ" +msgstr "型ルーフ高さ" +# msgstr "モールドの屋根の高さ" #: fdmprinter.def.json msgctxt "mold_roof_height description" msgid "The height above horizontal parts in your model which to print mold." @@ -4225,9 +4371,9 @@ msgstr "型を印刷するためのモデルの水平部分上の高さ。" #: fdmprinter.def.json msgctxt "mold_angle label" msgid "Mold Angle" -msgstr "" -#msgstr "モールドの角度" +msgstr "型角度" +# msgstr "モールドの角度" #: fdmprinter.def.json msgctxt "mold_angle description" msgid "The angle of overhang of the outer walls created for the mold. 0° will make the outer shell of the mold vertical, while 90° will make the outside of the model follow the contour of the model." @@ -4236,7 +4382,7 @@ msgstr "型の外側の壁のオーバーハングの角度です。0度にす #: fdmprinter.def.json msgctxt "support_mesh label" msgid "Support Mesh" -msgstr "" +msgstr "サポートメッシュ" #: fdmprinter.def.json msgctxt "support_mesh description" @@ -4246,9 +4392,9 @@ msgstr "このメッシュを使用してサポート領域を指定します。 #: fdmprinter.def.json msgctxt "support_mesh_drop_down label" msgid "Drop Down Support Mesh" -msgstr "" -#msgstr "ドロップダウンサポートメッシュ" +msgstr "サポートメッシュの下処理" +# msgstr "ドロップダウンサポートメッシュ" #: fdmprinter.def.json msgctxt "support_mesh_drop_down description" msgid "Make support everywhere below the support mesh, so that there's no overhang in the support mesh." @@ -4257,7 +4403,7 @@ msgstr "サポートメッシュの下のサポート材を全箇所に作りま #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" -msgstr "" +msgstr "メッシュオーバーハング例外" #: fdmprinter.def.json msgctxt "anti_overhang_mesh description" @@ -4267,7 +4413,7 @@ msgstr "このメッシュを使用して、モデルのどの部分をオーバ #: fdmprinter.def.json msgctxt "magic_mesh_surface_mode label" msgid "Surface Mode" -msgstr "" +msgstr "表面モード" #: fdmprinter.def.json msgctxt "magic_mesh_surface_mode description" @@ -4277,22 +4423,22 @@ msgstr "モデルを表面のみ、ボリューム、または緩い表面のボ #: fdmprinter.def.json msgctxt "magic_mesh_surface_mode option normal" msgid "Normal" -msgstr "" +msgstr "標準" #: fdmprinter.def.json msgctxt "magic_mesh_surface_mode option surface" msgid "Surface" -msgstr "" +msgstr "表面" #: fdmprinter.def.json msgctxt "magic_mesh_surface_mode option both" msgid "Both" -msgstr "" +msgstr "両方" #: fdmprinter.def.json msgctxt "magic_spiralize label" msgid "Spiralize Outer Contour" -msgstr "" +msgstr "滑らかな外側輪郭" #: fdmprinter.def.json msgctxt "magic_spiralize description" @@ -4302,9 +4448,9 @@ msgstr "Z軸の外側のエッジの動きを滑らかにします。全体の #: fdmprinter.def.json msgctxt "smooth_spiralized_contours label" msgid "Smooth Spiralized Contours" -msgstr "" -#msgstr "滑らかならせん状の輪郭" +msgstr "滑らかな輪郭" +# msgstr "滑らかならせん状の輪郭" #: fdmprinter.def.json 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." @@ -4313,9 +4459,9 @@ msgstr "らせん状の輪郭を滑らかにしてZシームの視認性を低 #: fdmprinter.def.json msgctxt "relative_extrusion label" msgid "Relative Extrusion" -msgstr "" -#msgstr "相対エクストルージョン" +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." @@ -4324,7 +4470,7 @@ msgstr "絶対押出ではなく、相対押出を使用します。相対Eス #: fdmprinter.def.json msgctxt "experimental label" msgid "Experimental" -msgstr "" +msgstr "実験" #: fdmprinter.def.json msgctxt "experimental description" @@ -4334,18 +4480,51 @@ msgstr "実験的" #: fdmprinter.def.json msgctxt "optimize_wall_printing_order label" msgid "Optimize Wall Printing Order" -msgstr "" -#msgstr "壁のプリントの順番を最適化する" +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 "撤回と移動距離を減らすために、壁のプリント順序を最適化します。ほとんどの部品がこの設定を有効にしている方が良い印刷結果につながりますが、実際には時間がかかることがありますので、最適化の有無に関わらず印刷時間を比較してください。" +#: 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 "サポートラインの接続部分をスキップし、サポート材部分を壊れやすくします。この設定はジグザクのサポートインフィル材のパターンにて適用できます。" + +#: 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 "サポート毎行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 "毎行Nミリ時に、サポートの接続をわざとスキップし、後のサポート材の構造をもろくし、壊れやすくする。" + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" -msgstr "" +msgstr "ドラフトシールドを有効にする" #: fdmprinter.def.json msgctxt "draft_shield_enabled description" @@ -4355,7 +4534,7 @@ msgstr "これにより、モデルの周囲に壁ができ、熱を閉じ込め #: fdmprinter.def.json msgctxt "draft_shield_dist label" msgid "Draft Shield X/Y Distance" -msgstr "" +msgstr "ドラフトシールドとX/Yの距離" #: fdmprinter.def.json msgctxt "draft_shield_dist description" @@ -4365,7 +4544,7 @@ msgstr "ドラフトシールドと造形物のX / Y方向の距離" #: fdmprinter.def.json msgctxt "draft_shield_height_limitation label" msgid "Draft Shield Limitation" -msgstr "" +msgstr "ドラフトシールドの制限" #: fdmprinter.def.json msgctxt "draft_shield_height_limitation description" @@ -4375,17 +4554,17 @@ msgstr "ドラフトシールドの高さを設定します。ドラフトシー #: fdmprinter.def.json msgctxt "draft_shield_height_limitation option full" msgid "Full" -msgstr "" +msgstr "制限なし" #: fdmprinter.def.json msgctxt "draft_shield_height_limitation option limited" msgid "Limited" -msgstr "" +msgstr "制限あり" #: fdmprinter.def.json msgctxt "draft_shield_height label" msgid "Draft Shield Height" -msgstr "" +msgstr "ドラフトシールドの高さ" #: fdmprinter.def.json msgctxt "draft_shield_height description" @@ -4395,7 +4574,7 @@ msgstr "ドラフトシールドの高さ制限。この高さを超えるとド #: fdmprinter.def.json msgctxt "conical_overhang_enabled label" msgid "Make Overhang Printable" -msgstr "" +msgstr "オーバーハング印刷可能" #: fdmprinter.def.json msgctxt "conical_overhang_enabled description" @@ -4405,7 +4584,7 @@ msgstr "最小限のサポートが必要となるように印刷モデルのジ #: fdmprinter.def.json msgctxt "conical_overhang_angle label" msgid "Maximum Model Angle" -msgstr "" +msgstr "最大モデル角度" #: fdmprinter.def.json msgctxt "conical_overhang_angle description" @@ -4415,7 +4594,7 @@ msgstr "印刷可能になったオーバーハングの最大角度。 0°の #: fdmprinter.def.json msgctxt "coasting_enable label" msgid "Enable Coasting" -msgstr "" +msgstr "コースティングを有効にする" #: fdmprinter.def.json msgctxt "coasting_enable description" @@ -4425,7 +4604,7 @@ msgstr "コースティングは、それぞれの造形ラインの最後の部 #: fdmprinter.def.json msgctxt "coasting_volume label" msgid "Coasting Volume" -msgstr "" +msgstr "コースティングのボリューム" #: fdmprinter.def.json msgctxt "coasting_volume description" @@ -4435,7 +4614,7 @@ msgstr "はみ出るフィラメントのボリューム。この値は、一般 #: fdmprinter.def.json msgctxt "coasting_min_volume label" msgid "Minimum Volume Before Coasting" -msgstr "" +msgstr "コースティング前の最小ボリューム" #: fdmprinter.def.json msgctxt "coasting_min_volume description" @@ -4445,7 +4624,7 @@ msgstr "コースティングに必要な最小の容積。より小さい押出 #: fdmprinter.def.json msgctxt "coasting_speed label" msgid "Coasting Speed" -msgstr "" +msgstr "コースティング速度" #: fdmprinter.def.json msgctxt "coasting_speed description" @@ -4455,7 +4634,7 @@ msgstr "コースティング中の移動速度。印刷時の経路の速度設 #: fdmprinter.def.json msgctxt "skin_alternate_rotation label" msgid "Alternate Skin Rotation" -msgstr "" +msgstr "レイヤー回転変更" #: fdmprinter.def.json msgctxt "skin_alternate_rotation description" @@ -4465,9 +4644,9 @@ msgstr "トップ/ボトムのレイヤーが印刷される方向を変更し #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" -msgstr "" -#msgstr "クロス3Dポケットサイズ" +msgstr "3Dクロスポケットのサイズ" +# 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." @@ -4476,9 +4655,9 @@ msgstr "四方でクロス3Dパターンが交差するポケットの大きさ #: fdmprinter.def.json msgctxt "cross_infill_apply_pockets_alternatingly label" msgid "Alternate Cross 3D Pockets" -msgstr "" -#msgstr "クロス3Dポケットと交差させる" +msgstr "3Dクロスポケットの変更" +# 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." @@ -4487,9 +4666,9 @@ msgstr "四方がクロスする、クロス3Dパターン交差時には半分 #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" msgid "Spaghetti Infill" -msgstr "" -#msgstr "スパゲッティ・インフィル" +msgstr "スパゲッティインフィル" +# msgstr "スパゲッティ・インフィル" #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled description" msgid "Print the infill every so often, so that the filament will curl up chaotically inside the object. This reduces print time, but the behaviour is rather unpredictable." @@ -4498,9 +4677,9 @@ msgstr "時々インフィルを印刷してください、オブジェクト内 #: fdmprinter.def.json msgctxt "spaghetti_infill_stepped label" msgid "Spaghetti Infill Stepping" -msgstr "" -#msgstr "スパゲッティのインフィルステッピング" +msgstr "スパゲッティインフィルの手順" +# msgstr "スパゲッティのインフィルステッピング" #: fdmprinter.def.json msgctxt "spaghetti_infill_stepped description" msgid "Whether to print spaghetti infill in steps or extrude all the infill filament at the end of the print." @@ -4509,9 +4688,9 @@ msgstr "スパゲッティインフィルをプリントするか印刷の最後 #: fdmprinter.def.json msgctxt "spaghetti_max_infill_angle label" msgid "Spaghetti Maximum Infill Angle" -msgstr "" -#msgstr "スパゲッティの最大のインフィルの角度" +msgstr "スパゲッティインフィル最大角度" +# msgstr "スパゲッティの最大のインフィルの角度" #: fdmprinter.def.json msgctxt "spaghetti_max_infill_angle description" msgid "The maximum angle w.r.t. the Z axis of the inside of the print for areas which are to be filled with spaghetti infill afterwards. Lowering this value causes more angled parts in your model to be filled on each layer." @@ -4520,9 +4699,9 @@ msgstr "最大角度 w.r.t.-印刷範囲内がスパゲッティ・インフィ #: fdmprinter.def.json msgctxt "spaghetti_max_height label" msgid "Spaghetti Infill Maximum Height" -msgstr "" -#msgstr "スパゲッティインフィルの最大高さ" +msgstr "スパゲッティインフィル最大高さ" +# msgstr "スパゲッティインフィルの最大高さ" #: fdmprinter.def.json msgctxt "spaghetti_max_height description" msgid "The maximum height of inside space which can be combined and filled from the top." @@ -4531,9 +4710,9 @@ msgstr "内部空間の上から結合して埋め込むことができる最大 #: fdmprinter.def.json msgctxt "spaghetti_inset label" msgid "Spaghetti Inset" -msgstr "" -#msgstr "スパゲティをセットする" +msgstr "スパゲッティインフィルのオフセット" +# msgstr "スパゲティをセットする" #: fdmprinter.def.json msgctxt "spaghetti_inset description" msgid "The offset from the walls from where the spaghetti infill will be printed." @@ -4542,9 +4721,9 @@ msgstr "スパゲッティ・インフィルがプリントされる壁からの #: fdmprinter.def.json msgctxt "spaghetti_flow label" msgid "Spaghetti Flow" -msgstr "" -#msgstr "スパゲッティのフロー" +msgstr "スパゲッティインフィルフロー" +# msgstr "スパゲッティのフロー" #: fdmprinter.def.json msgctxt "spaghetti_flow description" msgid "Adjusts the density of the spaghetti infill. Note that the Infill Density only controls the line spacing of the filling pattern, not the amount of extrusion for spaghetti infill." @@ -4553,9 +4732,9 @@ msgstr "スパゲッティ・インフィルの密度を調整します。イン #: fdmprinter.def.json msgctxt "spaghetti_infill_extra_volume label" msgid "Spaghetti Infill Extra Volume" -msgstr "" -#msgstr "スパゲッティ・インフィルの余分量" +msgstr "スパゲッティインフィル余剰調整" +# msgstr "スパゲッティ・インフィルの余分量" #: fdmprinter.def.json msgctxt "spaghetti_infill_extra_volume description" msgid "A correction term to adjust the total volume being extruded each time when filling spaghetti." @@ -4564,7 +4743,7 @@ msgstr "スパゲッティをプリントする際に毎回行なう吐出量の #: fdmprinter.def.json msgctxt "support_conical_enabled label" msgid "Enable Conical Support" -msgstr "" +msgstr "円錐サポートを有効にする" #: fdmprinter.def.json msgctxt "support_conical_enabled description" @@ -4574,7 +4753,7 @@ msgstr "実験的機能:オーバーハング部分よりも底面のサポー #: fdmprinter.def.json msgctxt "support_conical_angle label" msgid "Conical Support Angle" -msgstr "" +msgstr "円錐サポートの角度" #: fdmprinter.def.json msgctxt "support_conical_angle description" @@ -4584,7 +4763,7 @@ msgstr "円錐形のサポートの傾きの角度。 0度は垂直であり、9 #: fdmprinter.def.json msgctxt "support_conical_min_width label" msgid "Conical Support Minimum Width" -msgstr "" +msgstr "円錐サポートの最大幅" #: fdmprinter.def.json msgctxt "support_conical_min_width description" @@ -4594,7 +4773,7 @@ msgstr "円錐形のサポート領域のベースが縮小される最小幅。 #: fdmprinter.def.json msgctxt "infill_hollow label" msgid "Hollow Out Objects" -msgstr "" +msgstr "オブジェクトの空洞化" #: fdmprinter.def.json msgctxt "infill_hollow description" @@ -4604,7 +4783,7 @@ msgstr "すべてのインフィルを取り除き、オブジェクトの内部 #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_enabled label" msgid "Fuzzy Skin" -msgstr "" +msgstr "ファジースキン" #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_enabled description" @@ -4614,7 +4793,7 @@ msgstr "外壁を印刷する際に振動が起こり、表面が粗くてぼや #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_thickness label" msgid "Fuzzy Skin Thickness" -msgstr "" +msgstr "ファジースキンの厚さ" #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_thickness description" @@ -4624,7 +4803,7 @@ msgstr "振動が起こる幅。内壁は変更されていないので、これ #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_point_density label" msgid "Fuzzy Skin Density" -msgstr "" +msgstr "ファジースキンの密度" #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_point_density description" @@ -4634,17 +4813,37 @@ msgstr "レイヤー内の各ポリゴンに導入されたポイントの平均 #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_point_dist label" msgid "Fuzzy Skin Point Distance" -msgstr "" +msgstr "ファジースキン点間距離" #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_point_dist description" msgid "The average distance between the random points introduced on each line segment. Note that the original points of the polygon are discarded, so a high smoothness results in a reduction of the resolution. This value must be higher than half the Fuzzy Skin Thickness." msgstr "各線分に導入されたランダム点間の平均距離。ポリゴンの元の点は破棄されるので、積層の値を低くすることで、なめらかな仕上がりになります。この値は、ファジースキンの厚さの半分よりも大きくなければなりません。" +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset label" +msgid "Flow rate compensation max extrusion offset" +msgstr "流量補正時の最大抽出オフセット" + +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset description" +msgid "The maximum distance in mm to compensate." +msgstr "補正の最大距離をミリ単位で指定します。" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor label" +msgid "Flow rate compensation factor" +msgstr "流量補正要因" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor description" +msgid "The multiplication factor for the flow rate -> distance translation." +msgstr "流量を距離に変換する際の要因。" + #: fdmprinter.def.json msgctxt "wireframe_enabled label" msgid "Wire Printing" -msgstr "" +msgstr "ワイヤ印刷" #: fdmprinter.def.json msgctxt "wireframe_enabled description" @@ -4654,7 +4853,7 @@ msgstr "薄い空気中に印刷し、疎なウエブ構造で外面のみを印 #: fdmprinter.def.json msgctxt "wireframe_height label" msgid "WP Connection Height" -msgstr "" +msgstr "WPの高さ" #: fdmprinter.def.json msgctxt "wireframe_height description" @@ -4664,7 +4863,7 @@ msgstr "2つの水平なパーツ間の、上向きおよび斜め下向きの #: fdmprinter.def.json msgctxt "wireframe_roof_inset label" msgid "WP Roof Inset Distance" -msgstr "" +msgstr "WPルーフ距離のオフセット" #: fdmprinter.def.json msgctxt "wireframe_roof_inset description" @@ -4674,7 +4873,7 @@ msgstr "ルーフから内側に輪郭を描くときの距離。ワイヤ印刷 #: fdmprinter.def.json msgctxt "wireframe_printspeed label" msgid "WP Speed" -msgstr "" +msgstr "WP速度" #: fdmprinter.def.json msgctxt "wireframe_printspeed description" @@ -4684,7 +4883,7 @@ msgstr "マテリアルを押し出すときにノズルが動く速度。ワイ #: fdmprinter.def.json msgctxt "wireframe_printspeed_bottom label" msgid "WP Bottom Printing Speed" -msgstr "" +msgstr "WP底面印字速度" #: fdmprinter.def.json msgctxt "wireframe_printspeed_bottom description" @@ -4694,7 +4893,7 @@ msgstr "ブルドプラットフォームに接触する第1層の印刷速度 #: fdmprinter.def.json msgctxt "wireframe_printspeed_up label" msgid "WP Upward Printing Speed" -msgstr "" +msgstr "WP上向き印字速度" #: fdmprinter.def.json msgctxt "wireframe_printspeed_up description" @@ -4704,7 +4903,7 @@ msgstr "薄い空気の中で上向きに線を印刷する速度。ワイヤ印 #: fdmprinter.def.json msgctxt "wireframe_printspeed_down label" msgid "WP Downward Printing Speed" -msgstr "" +msgstr "WP下向き印字速度" #: fdmprinter.def.json msgctxt "wireframe_printspeed_down description" @@ -4714,7 +4913,7 @@ msgstr "斜め下方に線を印刷する速度。ワイヤ印刷のみに適用 #: fdmprinter.def.json msgctxt "wireframe_printspeed_flat label" msgid "WP Horizontal Printing Speed" -msgstr "" +msgstr "WP水平印字速度" #: fdmprinter.def.json msgctxt "wireframe_printspeed_flat description" @@ -4724,7 +4923,7 @@ msgstr "モデルの水平輪郭を印刷する速度。ワイヤ印刷のみに #: fdmprinter.def.json msgctxt "wireframe_flow label" msgid "WP Flow" -msgstr "" +msgstr "WPフロー" #: fdmprinter.def.json msgctxt "wireframe_flow description" @@ -4734,7 +4933,7 @@ msgstr "流れ補正:押出されたマテリアルの量はこの値の乗算 #: fdmprinter.def.json msgctxt "wireframe_flow_connection label" msgid "WP Connection Flow" -msgstr "" +msgstr "WP接続フロー" #: fdmprinter.def.json msgctxt "wireframe_flow_connection description" @@ -4744,7 +4943,7 @@ msgstr "上下に動くときの吐出補正。ワイヤ印刷のみに適用さ #: fdmprinter.def.json msgctxt "wireframe_flow_flat label" msgid "WP Flat Flow" -msgstr "" +msgstr "WPフラットフロー" #: fdmprinter.def.json msgctxt "wireframe_flow_flat description" @@ -4754,7 +4953,7 @@ msgstr "フラットラインを印刷する際の吐出補正。ワイヤ印刷 #: fdmprinter.def.json msgctxt "wireframe_top_delay label" msgid "WP Top Delay" -msgstr "" +msgstr "WP上面遅延" #: fdmprinter.def.json msgctxt "wireframe_top_delay description" @@ -4764,7 +4963,7 @@ msgstr "上向きの線が硬くなるように、上向きの動きの後の時 #: fdmprinter.def.json msgctxt "wireframe_bottom_delay label" msgid "WP Bottom Delay" -msgstr "" +msgstr "WP底面遅延" #: fdmprinter.def.json msgctxt "wireframe_bottom_delay description" @@ -4774,7 +4973,7 @@ msgstr "下降後の遅延時間。ワイヤ印刷のみに適用されます。 #: fdmprinter.def.json msgctxt "wireframe_flat_delay label" msgid "WP Flat Delay" -msgstr "" +msgstr "WP水平遅延" #: fdmprinter.def.json msgctxt "wireframe_flat_delay description" @@ -4784,7 +4983,7 @@ msgstr "2つの水平セグメント間の遅延時間。このような遅延 #: fdmprinter.def.json msgctxt "wireframe_up_half_speed label" msgid "WP Ease Upward" -msgstr "" +msgstr "WP低速移動距離" #: fdmprinter.def.json msgctxt "wireframe_up_half_speed description" @@ -4796,7 +4995,7 @@ msgstr "半分の速度で押出される上方への移動距離。過度にマ #: fdmprinter.def.json msgctxt "wireframe_top_jump label" msgid "WP Knot Size" -msgstr "" +msgstr "WPノットサイズ" #: fdmprinter.def.json msgctxt "wireframe_top_jump description" @@ -4806,7 +5005,7 @@ msgstr "上向きの線の上端に小さな結び目を作成し、連続する #: fdmprinter.def.json msgctxt "wireframe_fall_down label" msgid "WP Fall Down" -msgstr "" +msgstr "WP落下距離" #: fdmprinter.def.json msgctxt "wireframe_fall_down description" @@ -4816,7 +5015,7 @@ msgstr "上向き押出後にマテリアルが落下する距離。この距離 #: fdmprinter.def.json msgctxt "wireframe_drag_along label" msgid "WP Drag Along" -msgstr "" +msgstr "WP引きづり距離" #: fdmprinter.def.json msgctxt "wireframe_drag_along description" @@ -4826,7 +5025,7 @@ msgstr "斜め下方への押出に伴い上向き押出しているマテリア #: fdmprinter.def.json msgctxt "wireframe_strategy label" msgid "WP Strategy" -msgstr "" +msgstr "WPストラテジー" #: fdmprinter.def.json msgctxt "wireframe_strategy description" @@ -4836,22 +5035,22 @@ msgstr "各接続ポイントで2つの連続したレイヤーが密着して #: fdmprinter.def.json msgctxt "wireframe_strategy option compensate" msgid "Compensate" -msgstr "" +msgstr "補正" #: fdmprinter.def.json msgctxt "wireframe_strategy option knot" msgid "Knot" -msgstr "" +msgstr "ノット" #: fdmprinter.def.json msgctxt "wireframe_strategy option retract" msgid "Retract" -msgstr "" +msgstr "引き戻し" #: fdmprinter.def.json msgctxt "wireframe_straight_before_down label" msgid "WP Straighten Downward Lines" -msgstr "" +msgstr "WP下向き直線ライン" #: fdmprinter.def.json msgctxt "wireframe_straight_before_down description" @@ -4861,7 +5060,7 @@ msgstr "水平方向の直線部分で覆われた斜めに下降線の割合で #: fdmprinter.def.json msgctxt "wireframe_roof_fall_down label" msgid "WP Roof Fall Down" -msgstr "" +msgstr "WPルーフ落下距離" #: fdmprinter.def.json msgctxt "wireframe_roof_fall_down description" @@ -4871,7 +5070,7 @@ msgstr "水平ルーフが ”薄い空気”に印刷され落ちる距離。 #: fdmprinter.def.json msgctxt "wireframe_roof_drag_along label" msgid "WP Roof Drag Along" -msgstr "" +msgstr "WPルーフ引きずり距離" #: fdmprinter.def.json msgctxt "wireframe_roof_drag_along description" @@ -4881,7 +5080,7 @@ msgstr "ルーフの外側の輪郭に戻る際に引きずる内側ラインの #: fdmprinter.def.json msgctxt "wireframe_roof_outer_delay label" msgid "WP Roof Outer Delay" -msgstr "" +msgstr "WPルーフ外側処理時間" #: fdmprinter.def.json msgctxt "wireframe_roof_outer_delay description" @@ -4891,128 +5090,17 @@ msgstr "トップレイヤーにある穴の外側に掛ける時間。長い時 #: fdmprinter.def.json msgctxt "wireframe_nozzle_clearance label" msgid "WP Nozzle Clearance" -msgstr "" +msgstr "WPノズル隙間" #: fdmprinter.def.json msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "ノズルと水平方向に下向きの線間の距離。大きな隙間がある場合、急な角度で斜め下方線となり、次の層が上方接続しずらくなる。ワイヤ印刷にのみ適用されます。" -#: fdmprinter.def.json -msgctxt "ironing_enabled label" -msgid "Enable Ironing" -msgstr "" -#msgstr "アイロンを有効にする" - -#: fdmprinter.def.json -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 "" -#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" -msgstr "" -#msgstr "アイロン時のパターン" - -#: fdmprinter.def.json -msgctxt "ironing_pattern description" -msgid "The pattern to use for ironing top surfaces." -msgstr "アイロンのパターン" - -#: fdmprinter.def.json -msgctxt "ironing_pattern option concentric" -msgid "Concentric" -msgstr "" -#msgstr "同心" - -#: fdmprinter.def.json -msgctxt "ironing_pattern option zigzag" -msgid "Zig Zag" -msgstr "" -#msgstr "ジグザグ" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing label" -msgid "Ironing Line Spacing" -msgstr "" -#msgstr "アイロンラインの線隔" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing description" -msgid "The distance between the lines of ironing." -msgstr "アイロンライン同士の距離" - -#: fdmprinter.def.json -msgctxt "ironing_flow label" -msgid "Ironing Flow" -msgstr "" -#msgstr "アイロン時のフロー" - -#: fdmprinter.def.json -msgctxt "ironing_flow description" -msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." -msgstr "アイロン時にノズルから出しておくフィラメントの量。多少出しておくと裂け目を綺麗にします。ただ出し過ぎると吐出過多になり、端が荒れます。" - -#: fdmprinter.def.json -msgctxt "ironing_inset label" -msgid "Ironing Inset" -msgstr "" -#msgstr "アイロンを挿入する" - -#: fdmprinter.def.json -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 "" -#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 "" -#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 "" -#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" -msgstr "" +msgstr "コマンドライン設定" #: fdmprinter.def.json msgctxt "command_line_settings description" @@ -5022,17 +5110,17 @@ msgstr "CuraエンジンがCuraフロントエンドから呼び出されない #: fdmprinter.def.json msgctxt "center_object label" msgid "Center object" -msgstr "" +msgstr "オブジェクト中心配置" #: fdmprinter.def.json msgctxt "center_object description" msgid "Whether to center the object on the middle of the build platform (0,0), instead of using the coordinate system in which the object was saved." -msgstr "オブジェクトが保存された座標系を使用する代わりにビルドプラットフォームの中間(0,0)にオブジェクトを配置するかどうか。" +msgstr "オブジェクトが保存された座標系を使用する代わりにビルドプラットフォームの中間(0,0)にオブジェクトを配置するかどうか。" #: fdmprinter.def.json msgctxt "mesh_position_x label" msgid "Mesh position x" -msgstr "" +msgstr "メッシュ位置X" #: fdmprinter.def.json msgctxt "mesh_position_x description" @@ -5042,7 +5130,7 @@ msgstr "オブジェクトの x 方向に適用されたオフセット。" #: fdmprinter.def.json msgctxt "mesh_position_y label" msgid "Mesh position y" -msgstr "" +msgstr "メッシュ位置Y" #: fdmprinter.def.json msgctxt "mesh_position_y description" @@ -5052,7 +5140,7 @@ msgstr "オブジェクトのY 方向適用されたオフセット。" #: fdmprinter.def.json msgctxt "mesh_position_z label" msgid "Mesh position z" -msgstr "" +msgstr "メッシュ位置Z" #: fdmprinter.def.json msgctxt "mesh_position_z description" @@ -5062,29 +5150,47 @@ msgstr "オブジェクトの z 方向に適用されたオフセット。この #: fdmprinter.def.json msgctxt "mesh_rotation_matrix label" msgid "Mesh Rotation Matrix" -msgstr "" +msgstr "メッシュ回転マトリックス" #: fdmprinter.def.json 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, 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 "インフィルの線をつなげる" +#~ 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 "内壁の形状に沿った線を使用して、インフィルのパターンが内壁と接する端を接続します。この設定を有効にすると、インフィルを壁面に密着させることができ、充填材が垂直面の品質に与える影響を低減できます。この設定を無効にすると、使用される材料の量が減ります。" + +#~ 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 "スカートとプリントの最初のレイヤーの間の水平距離。これが最小距離であり、複数のスカートラインがこの距離から外側に延びている。" + +# msgstr "初期レイヤーのZオフセット" +#~ 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 "Z オフセット テーパーレイヤー" +#~ 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 "0 以外の場合、Z オフセットは多くのレイヤーを介して 0 に減らされます。0 の値は そのZ オフセットがプリント中すべてのレイヤーにてコンスタントを維持することを意味します。" + +# msgstr "ラフトスムージング" +#~ 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 "この設定は、ラフトのアウトラインの内側の角が丸みを帯びているかを制御します。内側のコーナーは、与えられた値と等しい半径の半円に丸められています。この設定では、円よりも小さいラフトアウトラインの穴は削除されます。" #~ 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 "平らな面の上部または底部のスキン部の及びその領域を展開します。既定では、スキンインフィルの周りの壁の線で停止しますが、これはインフィル密度が低いときに現れる穴につながることがあります。この設定は、次の層の面材が皮膚にかかっているので、壁の線を超えてスキンを拡張します。" @@ -5157,10 +5263,6 @@ msgstr "ファイルから読み込むときに、モデルに適用するトラ #~ msgid "RepRap (Marlin/Sprinter)" #~ msgstr "RepRap (Marlin/Sprinter)" -#~ msgctxt "machine_gcode_flavor option RepRap (Volumatric)" -#~ msgid "RepRap (Volumetric)" -#~ msgstr "" - #~ 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 "水平方向の外壁厚さ この値をウォールライン幅で割ることで、ウォール数を定義します。" @@ -5173,26 +5275,14 @@ msgstr "ファイルから読み込むときに、モデルに適用するトラ #~ msgid "Width of a single support interface line." #~ msgstr "単一のサポートインタフェースラインの幅。" -#~ msgctxt "sub_div_rad_mult label" -#~ msgid "Cubic Subdivision Radius" -#~ msgstr "" - #~ msgctxt "sub_div_rad_mult description" #~ msgid "A multiplier on the radius from the center of each cube to check for the boundary of the model, as to decide whether this cube should be subdivided. Larger values lead to more subdivisions, i.e. more small cubes." #~ msgstr "各立方体の中心からの半径上の乗数で、モデルの境界をチェックし、この立方体を細分するかどうかを決定します。値を大きくすると細分化が増えます。つまり、より小さなキューブになります。" -#~ msgctxt "expand_upper_skins label" -#~ msgid "Expand Upper Skins" -#~ msgstr "" - #~ msgctxt "expand_upper_skins description" #~ msgid "Expand upper skin areas (areas with air above) so that they support infill above." #~ msgstr "上部のインフィルをサポートするので、スキン面 (上記の空気を含んだ領域) を展開します。" -#~ msgctxt "expand_lower_skins label" -#~ msgid "Expand Lower Skins" -#~ msgstr "" - #~ msgctxt "expand_lower_skins description" #~ msgid "Expand lower skin areas (areas with air below) so that they are anchored by the infill layers above and below." #~ msgstr "彼らは上と下の面材のレイヤーによって固定されますので、低い肌の部分 (空気を含んだ領域) を展開します。" @@ -5209,10 +5299,6 @@ msgstr "ファイルから読み込むときに、モデルに適用するトラ #~ msgid "The maximum instantaneous velocity change with which the roofs and bottoms of support are printed." #~ msgstr "サポート材の屋根とボトムのプリント時、最大瞬間速度の変更。" -#~ msgctxt "support_enable label" -#~ msgid "Enable Support" -#~ msgstr "" - #~ msgctxt "support_enable description" #~ msgid "Enable support structures. These structures support parts of the model with severe overhangs." #~ msgstr "サポート材を印刷可能にします。これは、モデル上のオーバーハング部分にサポート材を構築します。" @@ -5225,10 +5311,6 @@ msgstr "ファイルから読み込むときに、モデルに適用するトラ #~ msgid "The height of the steps of the stair-like bottom of support resting on the model. A low value makes the support harder to remove, but too high values can lead to unstable support structures." #~ msgstr "モデルにかかる階段形サポートの下部の高さです。低い値のサポートの除去は難しく、高すぎる値は不安定なサポート構造につながります。" -#~ msgctxt "support_bottom_height label" -#~ msgid "Support Bottom Thickness" -#~ msgstr "" - #~ msgctxt "support_bottom_height description" #~ msgid "The thickness of the support bottoms. This controls the number of dense layers are printed on top of places of a model on which support rests." #~ msgstr "サポート材の底部の厚さ。これは、サモデルの上に印刷されるサポートの積層密度を制御します。" @@ -5241,10 +5323,6 @@ msgstr "ファイルから読み込むときに、モデルに適用するトラ #~ msgid "Adjusts the density of the roofs and bottoms of the support structure. A higher value results in better overhangs, but the supports are harder to remove." #~ msgstr "サポート材の屋根と底部の密度を調整します 大きな値ではオーバーハングでの成功率があがりますが、サポート材が除去しにくくなります" -#~ msgctxt "support_interface_line_distance label" -#~ msgid "Support Interface Line Distance" -#~ msgstr "" - #~ msgctxt "support_interface_line_distance description" #~ msgid "Distance between the printed support interface lines. This setting is calculated by the Support Interface Density, but can be adjusted separately." #~ msgstr "印刷されたサポートインタフェースラインの間隔。この設定はSupport Interface Densityで計算されますが、個別に調整することができます。" diff --git a/resources/i18n/ko_KR/cura.po b/resources/i18n/ko_KR/cura.po new file mode 100644 index 0000000000..a72274dc2c --- /dev/null +++ b/resources/i18n/ko_KR/cura.po @@ -0,0 +1,4539 @@ +# 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 3.1\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-11-21 16:58+0100\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" +"Last-Translator: Brule\n" +"Language-Team: Brule\n" +"Language: ko_KR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.0.4\n" + +#: /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 view" +msgstr "X 선보기" + +#: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 +msgctxt "@item:inlistbox" +msgid "X3D File" +msgstr "X3D 파일" + +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/__init__.py:16 +msgctxt "@item:inlistbox" +msgid "GCode File" +msgstr "GCode 파일" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 +msgctxt "@action:button" +msgid "Print with Doodle3D WiFi-Box" +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 "Doodle3D WiFi-Box로 인쇄" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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:376 +#: /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:253 +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 "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 "Doodle3D Connect에 데이터를 보낼 수 없습니다. 다른 작업이 진행중ㅇ가요?" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +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 "Doodle3D Connect에 파일 전송" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect..." +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 "Doodle3D Connect 웹 인터페이스 열기" + +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +msgctxt "@item:inmenu" +msgid "Show Changelog" +msgstr "변경 내역 표시" + +#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:20 +msgctxt "@item:inmenu" +msgid "Flatten active settings" +msgstr "활성 설정 병합" + +#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:32 +msgctxt "@info:status" +msgid "Profile has been flattened & activated." +msgstr "프로필이 병합되고 활성화되었습니다." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 +msgctxt "@item:inmenu" +msgid "USB printing" +msgstr "USB 인쇄" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print via USB" +msgstr "USB를 통해 인쇄" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +msgctxt "@info:tooltip" +msgid "Print via USB" +msgstr "USB를 통해 인쇄" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +msgctxt "@info:status" +msgid "Connected via USB" +msgstr "USB를 통해 연결" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +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:154 +msgctxt "@info:title" +msgid "Printer Unavailable" +msgstr "프린터 사용 불가" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +msgctxt "@info:status" +msgid "This printer does not support USB printing because it uses UltiGCode flavor." +msgstr "이 프린터는 UltiGCode flavor를 사용하기 때문에 USB 인쇄를 지원하지 않습니다." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "USB 인쇄" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +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:461 +#: /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:945 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +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." +msgstr "프린터가 연결되어 있지 않으므로 펌웨어를 업데이트 할 수 없습니다." + +#: /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 "프린터에 필요한 펌웨어를 찾을 수 없습니다." + +#: /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'." +msgid "Save to Removable Drive" +msgstr "이동식 드라이브에 저장" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:24 +#, python-brace-format +msgctxt "@item:inlistbox" +msgid "Save to Removable Drive {0}" +msgstr "이동식 드라이브에 저장" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +#, python-brace-format +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 Don't translate the XML tags or !" +msgid "Could not save to {0}: {1}" +msgstr "?에 저장할 수 없습니다" + +#: /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 "장치에 쓸 때 파일 이름을 찾을 수 없습니다." + +#: /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:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +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: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." +msgstr "배출하지 못했습니다. 다른 프로그램이 드라이브를 사용 중일 수 있습니다." + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/WindowsRemovableDrivePlugin.py:68 +msgctxt "@item:intext" +msgid "Removable Drive" +msgstr "이동식 드라이브" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "네트워크를 통해 인쇄" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "네트워크를 통해 인쇄" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +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:159 +msgctxt "@info:title" +msgid "Connection status" +msgstr "연결 상태" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +msgctxt "@info:status" +msgid "" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:479 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:502 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "연결 상태" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +msgctxt "@action:button" +msgid "Retry" +msgstr "재시도" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +msgctxt "@info:tooltip" +msgid "Re-send the access request" +msgstr "접근 요청 다시 보내기" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +msgctxt "@info:status" +msgid "Access to the printer accepted" +msgstr "허용 된 프린터에 대한 접근 허용" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +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:165 +#: /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 "접근 요청" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 +#: /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 "프린터에 접근 요청 보내기" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:385 +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:392 +msgctxt "@info:status" +msgid "Connected over the network." +msgstr "네트워크를 통해 연결되었습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:405 +msgctxt "@info:status" +msgid "Connected over the network. No access to control the printer." +msgstr "네트워크를 통해 연결되었습니다. 프린터를 제어 할 수있는 권한이 없습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 +msgctxt "@info:status" +msgid "Access request was denied on the printer." +msgstr "접근 요청이 프린터에서 거부되었습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 +msgctxt "@info:status" +msgid "Access request failed due to a timeout." +msgstr "접근 요청이 시간 초과로 인해 실패했습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 +msgctxt "@info:status" +msgid "The connection with the network was lost." +msgstr "네트워크 연결이 끊어졌습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 +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:666 +#, 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:667 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "프린터 상태" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to start a new print job. No Printcore loaded in slot {0}" +msgstr "새 인쇄 작업을 시작할 수 없습니다. 슬롯 {0}에로드 된 Printcore가 없습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#, 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:709 +#, python-brace-format +msgctxt "@label" +msgid "Not enough material for spool {0}." +msgstr "스풀 {0}의 재료가 충분하지 않습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#, python-brace-format +msgctxt "@label" +msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" +msgstr "압출기 {2}에 대해 선택된 다른 PrintCore (Cura : {0}, Printer : {1})" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#, python-brace-format +msgctxt "@label" +msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +msgstr "압출기 {2}에 대해 선택된 다른 재료 (Cura : {0}, Printer : {1})" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:741 +#, python-brace-format +msgctxt "@label" +msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." +msgstr "PrintCore가 올바르게 조정되지 않았습니다. XY 교정은 프린터에서 수행해야합니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +msgctxt "@label" +msgid "Are you sure you wish to print with the selected configuration?" +msgstr "선택한 구성으로 인쇄 하시겠습니까?" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 +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의 구성 또는 교정간에 불일치가 있습니다. 최상의 결과를 얻으려면 프린터에 삽입 된 PrintCores 및 재료를 항상 슬라이스하십시오." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 +msgctxt "@window:title" +msgid "Mismatched configuration" +msgstr "일치하지 않는 구성" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "새 작업 전송 (일시적)이 차단되어 이전 인쇄 작업을 계속 보냅니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +msgctxt "@info:status" +msgid "Sending data to printer" +msgstr "프린터로 데이터 보내기" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +msgctxt "@info:title" +msgid "Sending Data" +msgstr "데이터 전송 중" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +msgctxt "@info:status" +msgid "Unable to send data to printer. Is another job still active?" +msgstr "프린터로 데이터를 보낼 수 없습니다. 다른 작업이 여전히 작동중인가요?" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 +msgctxt "@label:MonitorStatus" +msgid "Aborting print..." +msgstr "인쇄 중단 중 ..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +msgctxt "@label:MonitorStatus" +msgid "Print aborted. Please check the printer" +msgstr "인쇄가 중단되었습니다. 프린터를 확인하십시오" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +msgctxt "@label:MonitorStatus" +msgid "Pausing print..." +msgstr "인쇄 일시 중지 중 ..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +msgctxt "@label:MonitorStatus" +msgid "Resuming print..." +msgstr "인쇄 재개 중 ..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +msgctxt "@window:title" +msgid "Sync with your printer" +msgstr "프린터와 동기화" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +msgctxt "@label" +msgid "Would you like to use your current printer configuration in Cura?" +msgstr "Cura에서 현재 프린터 구성을 사용 하시겠습니까?" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 +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 "프린터의 PrintCores 및 / 또는 자료는 현재 프로젝트 내의 자료와 다릅니다. 최상의 결과를 얻으려면 프린터에 삽입 된 PrintCores 및 재료를 항상 슬라이스하십시오." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:112 +msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." +msgstr "이 프린터는 연결된 Ultimaker 3 프린터 그룹을 호스트하도록 설정되어 있지 않습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:113 +#, 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 "이 프린터는 연결된 Ultimaker 3 프린터 그룹을 호스트하도록 설정되어 있지 않습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 +#, 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/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#, 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/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +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 "새로운 인쇄 작업을 보낼 수 없습니다 :이 3D 프린터는 아직 연결된 Ultimaker 3 프린터 그룹을 호스트하도록 설정되지 않았습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "{cluster_name} 그룹에 인쇄 작업을 보낼 수 없습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "파일이름을 cluster_name 그룹에 보냈습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "인쇄 작업 표시" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "브라우저에서 인쇄 작업 인터페이스를 엽니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label" +msgid "Unknown" +msgstr "알 수 없는" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#, fuzzy, python-brace-format +msgctxt "@info:status" +msgid "Printer '{printer_name}' has finished printing '{job_name}'." +msgstr "프린터가 인쇄를 완료했습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +msgctxt "@info:status" +msgid "Print finished" +msgstr "프린트가 완료됐습니다" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 +msgctxt "@label:status" +msgid "Action required" +msgstr "필요한 조치" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "{filename} {file_name} 을 {cluster_name} 그룹에 보냄" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +msgctxt "@action" +msgid "Connect via Network" +msgstr "네트워크를 통해 연결" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#, python-brace-format +msgctxt "@info Don't translate {machine_name}, since it gets replaced by a printer name!" +msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." +msgstr "{machine_name}의 새로운 기능을 사용할 수 있습니다! 프린터의 펌웨어를 업데이트하는 것이 좋습니다." + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#, 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:66 +msgctxt "@action:button" +msgid "How to update" +msgstr "업데이트 방법" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +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에서 파일을 열 수 있는지 확인하십시오" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +msgctxt "@item:inlistbox" +msgid "SolidWorks part file" +msgstr "SolidWorks 파트 파일" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +msgctxt "@item:inlistbox" +msgid "SolidWorks assembly file" +msgstr "SolidWorks 어셈블리 파일" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +msgid "Configure" +msgstr "구성" + +#: /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/SimulationView/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Simulation view" +msgstr "시뮬레이션 보기" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +msgctxt "@info:status" +msgid "Cura does not accurately display layers when Wire Printing is enabled" +msgstr "와이어 인쇄가 활성화되어있을 때 Cura는 레이어를 정확하게 표시하지 않습니다" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:101 +msgctxt "@info:title" +msgid "Simulation View" +msgstr "시뮬레이션 보기" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +msgid "Modify G-Code" +msgstr "G 코드 수정" + +#: /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는 익명의 슬라이싱 통계를 수집합니다. 환경 설정에서 이 기능을 비활성화 할 수 있습니다." + +#: /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 "버리다" + +#: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Cura 15.04 profiles" +msgstr "Cura 15.04 프로필" + +#: /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 파일" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "JPG Image" +msgstr "JPG 이미지" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:18 +msgctxt "@item:inlistbox" +msgid "JPEG Image" +msgstr "JPEG 이미지" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:22 +msgctxt "@item:inlistbox" +msgid "PNG Image" +msgstr "PNG 이미지" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:26 +msgctxt "@item:inlistbox" +msgid "BMP Image" +msgstr "BMP 이미지" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:30 +msgctxt "@item:inlistbox" +msgid "GIF Image" +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 "선택한 소재 또는 구성과 호환되지 않기 때문에 현재 소재로 슬라이스 할 수 없습니다." + +#: /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:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +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:318 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" +msgstr "일부 모델별 설정으로 인해 슬라이스할 수 없습니다. 하나 이상의 모델에서 다음 설정에 오류가 있습니다. {error_labels}" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +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:335 +msgctxt "@info:status" +msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." +msgstr "어떤 모델도 빌드 볼륨에 맞지 않으므로 슬라이스 할 수 없습니다. 크기에 맞게 모형을 회전하거나 회전하십시오." + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +msgctxt "@info:status" +msgid "Processing Layers" +msgstr "레이어 처리 중" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +msgctxt "@info:title" +msgid "Information" +msgstr "정보" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 +msgctxt "@label" +msgid "Per Model Settings" +msgstr "모델 별 설정" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:15 +msgctxt "@info:tooltip" +msgid "Configure Per Model Settings" +msgstr "모델 별 설정 구성" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23 +msgid "Install" +msgstr "설치" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It is not set to a directory." +msgstr "Siemens NX 플러그인 파일을 복사하지 못했습니다. UGII_USER_DIR을 확인하십시오. 디렉터리에 할당되지 않았습니다." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81 +msgid "Successfully installed Siemens NX Cura plugin." +msgstr "Siemens NX Cura 플러그인을 성공적으로 설치했습니다." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgstr "Siemens NX 플러그인 파일을 복사하지 못했습니다. UGII_USER_DIR을 확인하십시오." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 +msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." +msgstr "Siemens NX 플러그인을 설치하지 못했습니다. Siemens NX의 환경 변수 UGII_USER_DIR을 설정할 수 없습니다." + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +msgctxt "@title:tab" +msgid "Recommended" +msgstr "추천" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +msgctxt "@title:tab" +msgid "Custom" +msgstr "관습" + +#: /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 파일" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +msgctxt "@label" +msgid "Nozzle" +msgstr "노즐" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "?에서 플러그인 ID를 가져 오는 데 실패했습니다" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +msgctxt "@info:tile" +msgid "Warning" +msgstr "경고" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +msgctxt "@window:title" +msgid "Plugin browser" +msgstr "플러그인 브라우저" + +#: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Solid view" +msgstr "단색보기" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 +msgctxt "@item:inlistbox" +msgid "G File" +msgstr "G파일" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +msgctxt "@info:status" +msgid "Parsing G-code" +msgstr "G 코드 파싱" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "G 코드 세부 정보" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +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 코드가 프린터 및 프린터 구성에 적합한 지 확인하십시오. g 코드 표현이 정확하지 않을 수 있습니다." + +#: /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 프로필" + +#: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 +msgctxt "@item:inlistbox" +msgid "3MF file" +msgstr "3MF 파일" + +#: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:38 +msgctxt "@item:inlistbox" +msgid "Cura Project 3MF file" +msgstr "Cura Project 3MF 파일" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 +msgctxt "@action" +msgid "Select upgrades" +msgstr "업그레이드 선택" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.py:12 +msgctxt "@action" +msgid "Upgrade Firmware" +msgstr "업그레이드 펌웨어" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 +msgctxt "@action" +msgid "Checkup" +msgstr "대조" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:15 +msgctxt "@action" +msgid "Level build plate" +msgstr "레벨 빌드 플레이트" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "외벽" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "내벽" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Skin" +msgstr "외판" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Infill" +msgstr "빈 공간 채우기" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "빈 공간 채우기 지지" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "지원 인터페이스" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Support" +msgstr "지지물" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "둘러싸다" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Travel" +msgstr "움직여 가다" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "취소" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +msgctxt "@tooltip" +msgid "Other" +msgstr "다른" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +msgctxt "@label unknown material" +msgid "Unknown" +msgstr "알 수 없음" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "미리 잘라낸 파일 {0}" + +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +msgctxt "@item:material" +msgid "No material loaded" +msgstr "로드 된 자료 없음" + +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +msgctxt "@item:material" +msgid "Unknown material" +msgstr "알 수없는 자료" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "객체의 새 위치 삽입" + +#: /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/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:113 +msgctxt "@title:window" +msgid "File Already Exists" +msgstr "파일이 이미 있습니다" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#, 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 "파일이 이미 있습니다. 덮어 쓰시겠습니까?" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 +msgctxt "@label" +msgid "Custom" +msgstr "맞춤" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +msgctxt "@label" +msgid "Custom Material" +msgstr "맞춤 소재" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 +msgctxt "@menuitem" +msgid "Global" +msgstr "전역" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "재정의되지 않음" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +msgctxt "@info:status" +msgid "The selected material is incompatible with the selected machine or configuration." +msgstr "선택한 재료가 선택한 기계 또는 구성과 호환되지 않습니다." + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /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." +msgstr "선택한 재료 직경으로 인해 재료가 현재 프린터와 호환되지 않습니다." + +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:25 +msgctxt "@action:button" +msgid "Undo" +msgstr "풀어 놓다" + +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:25 +msgctxt "@action" +msgid "Undo changing the material diameter." +msgstr "재료 직경 변경을 취소하십시오." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#, python-brace-format +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:151 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tag !" +msgid "Failed to export profile to {0}: Writer plugin reported failure." +msgstr "프로필을 ?로 내보내지 못했습니다. Writer 플러그인이 오류를 보고했습니다." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tag !" +msgid "Exported profile to {0}" +msgstr "프로파일을 ?에 내보냅니다" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:157 +msgctxt "@info:title" +msgid "Export succeeded" +msgstr "내보내기 완료" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#, python-brace-format +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:216 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#, python-brace-format +msgctxt "@info:status" +msgid "Successfully imported profile {0}" +msgstr "프로필 {0}을 (를) 성공적으로 가져 왔습니다." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 +#, 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:274 +msgctxt "@label" +msgid "Custom profile" +msgstr "사용자 정의 프로필" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +msgctxt "@info:status" +msgid "Profile is missing a quality type." +msgstr "프로필에 품질 유형이 누락되었습니다." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#, 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: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:80 +msgctxt "@title:window" +msgid "Crash Report" +msgstr "오류 보고서" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +msgctxt "@label crash message" +msgid "" +"

    A fatal exception has occurred. Please send us this Crash Report to fix the problem

    \n" +"

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" +" " +msgstr "

    치명적인 예외가 발생했습니다. 문제를 해결할 수 있도록 이 충돌 보고서를 보내주십시오.

    \n

    \"보고서 전송\" 버튼을 사용하면 버그 보고서가 서버에 자동으로 보고됩니다.

    \n " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +msgctxt "@title:groupbox" +msgid "System information" +msgstr "시스템 정보" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +msgctxt "@label unknown version of Cura" +msgid "Unknown" +msgstr "알 수 없음" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 +#, python-brace-format +msgctxt "@label Cura version" +msgid "Cura version: {version}
    " +msgstr "Cura 버전: {version}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 +#, python-brace-format +msgctxt "@label Platform" +msgid "Platform: {platform}
    " +msgstr "플랫폼: {platform}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 +#, python-brace-format +msgctxt "@label Qt version" +msgid "Qt version: {qt}
    " +msgstr "Qt 버전: {qt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 +#, python-brace-format +msgctxt "@label PyQt version" +msgid "PyQt version: {pyqt}
    " +msgstr "PyQt 버전: {pyqt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 +#, python-brace-format +msgctxt "@label OpenGL" +msgid "OpenGL: {opengl}
    " +msgstr "OpenGL: {opengl}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#, python-brace-format +msgctxt "@label OpenGL version" +msgid "
  • OpenGL Version: {version}
  • " +msgstr "
  • OpenGL 버전: {version}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#, python-brace-format +msgctxt "@label OpenGL vendor" +msgid "
  • OpenGL Vendor: {vendor}
  • " +msgstr "
  • OpenGL 공급업체: {vendor}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#, python-brace-format +msgctxt "@label OpenGL renderer" +msgid "
  • OpenGL Renderer: {renderer}
  • " +msgstr "
  • OpenGL Renderer: {renderer}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +msgctxt "@title:groupbox" +msgid "Exception traceback" +msgstr "예외 역추적" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +msgctxt "@title:groupbox" +msgid "Logs" +msgstr "로그" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +msgctxt "@title:groupbox" +msgid "User description" +msgstr "사용자 설명" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +msgctxt "@action:button" +msgid "Send report" +msgstr "보고서 전송" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +msgctxt "@info:progress" +msgid "Loading machines..." +msgstr "기계로드 중 ..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +msgctxt "@info:progress" +msgid "Setting up scene..." +msgstr "장면 설정 중 ..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +msgctxt "@info:progress" +msgid "Loading interface..." +msgstr "인터페이스로드 중 ..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#, 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 "% (너비) .1f x % (깊이) .1f x % (높이) .1f mm" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 +#, python-brace-format +msgctxt "@info:status" +msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" +msgstr "한 번에 하나의 G 코드 파일만 로드 할 수 있습니다. 가져 오기를 건너 뛰었습니다." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1357 +#, python-brace-format +msgctxt "@info:status" +msgid "Can't open any other file if G-code is loading. Skipped importing {0}" +msgstr "G 코드가 로드되어 있으면 다른 파일을 열 수 없습니다. 가져 오기를 건너 뛰었습니다." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +msgctxt "@info:status" +msgid "The selected model was too small to load." +msgstr "선택한 모델이 너무 작아서 로드할 수 없습니다." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 +msgctxt "@title" +msgid "Machine Settings" +msgstr "기계 설정" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:78 +msgctxt "@title:tab" +msgid "Printer" +msgstr "프린터" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 +msgctxt "@label" +msgid "Printer Settings" +msgstr "프린터 설정" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 +msgctxt "@label" +msgid "X (Width)" +msgstr "X (너비)" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +msgctxt "@label" +msgid "mm" +msgstr "mm" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 +msgctxt "@label" +msgid "Y (Depth)" +msgstr "Y (깊이)" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 +msgctxt "@label" +msgid "Z (Height)" +msgstr "Z (높이)" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:140 +msgctxt "@label" +msgid "Build plate shape" +msgstr "판 모양 만들기" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 +msgctxt "@option:check" +msgid "Origin at center" +msgstr "센터 원점" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:157 +msgctxt "@option:check" +msgid "Heated bed" +msgstr "가열된 베드" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 +msgctxt "@label" +msgid "Gcode flavor" +msgstr "Gcode 플레이버" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 +msgctxt "@label" +msgid "Printhead Settings" +msgstr "프린트 헤드 설정" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 +msgctxt "@label" +msgid "X min" +msgstr "X 최소값" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 +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 "프린트 헤드 왼쪽에서 노즐 중심까지의 거리. \"한 번에 한 장\"을 인쇄 할 때 이전 인쇄물과 인쇄 헤드 사이의 색상을 방지하는 데 사용됩니다." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 +msgctxt "@label" +msgid "Y min" +msgstr "Y 최소값" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 +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 "프린트 헤드 전면에서 노즐 중앙까지의 거리. \"한 번에 한 장\"을 인쇄 할 때 이전 인쇄물과 인쇄 헤드 사이의 색상을 방지하는 데 사용됩니다." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +msgctxt "@label" +msgid "X max" +msgstr "X 최대값" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 +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 "프린트 헤드의 오른쪽에서 노즐 중앙까지의 거리. \"한 번에 한 장\"을 인쇄 할 때 이전 인쇄물과 인쇄 헤드 사이의 색상을 방지하는 데 사용됩니다." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 +msgctxt "@label" +msgid "Y max" +msgstr "Y 최대가" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 +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 "프린트 헤드의 뒤쪽에서 노즐 중심까지의 거리. \"한 번에 한 장\"을 인쇄 할 때 이전 인쇄물과 인쇄 헤드 사이의 색상을 방지하는 데 사용됩니다." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 +msgctxt "@label" +msgid "Gantry height" +msgstr "갠트리 높이" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +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:255 +msgctxt "@label" +msgid "Number of Extruders" +msgstr "압출기의 수" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +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:291 +msgctxt "@label" +msgid "Material diameter" +msgstr "재료 직경" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +msgctxt "@label" +msgid "Nozzle size" +msgstr "노즐 크기" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +msgctxt "@label" +msgid "Start Gcode" +msgstr "Gcode 시작" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +msgctxt "@tooltip" +msgid "Gcode commands to be executed at the very start." +msgstr "시작시 Gcode 명령이 실행됩니다." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +msgctxt "@label" +msgid "End Gcode" +msgstr "Gcode 끝내기" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +msgctxt "@tooltip" +msgid "Gcode commands to be executed at the very end." +msgstr "Gcode 명령어가 맨 마지막에 실행됩니다." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +msgctxt "@label" +msgid "Nozzle Settings" +msgstr "노즐 설정" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +msgctxt "@label" +msgid "Nozzle offset X" +msgstr "노즐 오프셋 X" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +msgctxt "@label" +msgid "Nozzle offset Y" +msgstr "노즐 오프셋 Y" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +msgctxt "@label" +msgid "Extruder Start Gcode" +msgstr "압출기 시작 Gcode" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +msgctxt "@label" +msgid "Extruder End Gcode" +msgstr "압출기 종료 Gcode" + +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 +msgctxt "@label" +msgid "Changelog" +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/PostProcessingPlugin/PostProcessingPlugin.qml:445 +#: /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:123 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 +msgctxt "@action:button" +msgid "Close" +msgstr "닫기" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:22 +msgctxt "@title:window" +msgid "Firmware Update" +msgstr "펌웨어 업데이트" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:42 +msgctxt "@label" +msgid "Firmware update completed." +msgstr "펌웨어 업데이트가 완료되었습니다." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:47 +msgctxt "@label" +msgid "Starting firmware update, this may take a while." +msgstr "펌웨어 업데이트를 시작하는 데 시간이 걸릴 수 있습니다." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:52 +msgctxt "@label" +msgid "Updating firmware." +msgstr "펌웨어 업데이트 중." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:61 +msgctxt "@label" +msgid "Firmware update failed due to an unknown error." +msgstr "알 수없는 오류로 인해 펌웨어 업데이트에 실패했습니다." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:64 +msgctxt "@label" +msgid "Firmware update failed due to an communication error." +msgstr "통신 오류로 인해 펌웨어 업데이트에 실패했습니다." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:67 +msgctxt "@label" +msgid "Firmware update failed due to an input/output error." +msgstr "입 / 출력 오류로 인해 펌웨어 업데이트에 실패했습니다." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:70 +msgctxt "@label" +msgid "Firmware update failed due to missing firmware." +msgstr "펌웨어 누락으로 인해 펌웨어 업데이트에 실패했습니다." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:73 +msgctxt "@label" +msgid "Unknown error code: %1" +msgstr "알 수없는 오류 코드 : % 1" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +msgctxt "@title:window" +msgid "Connect to Networked Printer" +msgstr "네트워크 프린터에 연결" + +#: /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 ":네트워크를 통해 프린터로 직접 인쇄하려면 네트워크 케이블을 사용하거나 프린터를 WIFI 네트워크에 연결하여 프린터가 네트워크에 연결되어 있는지 확인하십시오. Cura를 프린터에 연결하지 않은 경우에도 USB 드라이브를 사용하여 g 코드 파일을 프린터로 전송할 수 있습니다\n\n아래 목록에서 프린터를 선택하십시오" + +#: /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 "추가" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +msgctxt "@action:button" +msgid "Edit" +msgstr "편집" + +#: /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 "제거" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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:194 +msgctxt "@label" +msgid "If your printer is not listed, read the network printing troubleshooting guide" +msgstr "프린터가 목록에 없으면 네트워크 인쇄 문제 해결 가이드를 읽어보십시오" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 +msgctxt "@label" +msgid "Type" +msgstr "유형" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 +msgctxt "@label" +msgid "Ultimaker 3" +msgstr "얼티메이커 3" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 +msgctxt "@label" +msgid "Ultimaker 3 Extended" +msgstr "얼티메이커 3 확장판" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 +msgctxt "@label" +msgid "Firmware version" +msgstr "펌웨어 버전" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 +msgctxt "@label" +msgid "Address" +msgstr "주소" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:286 +msgctxt "@label" +msgid "This printer is not set up to host a group of Ultimaker 3 printers." +msgstr "이 프린터는 Ultimaker 3 프린터 그룹을 호스트하도록 설정되지 않았습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:290 +msgctxt "@label" +msgid "This printer is the host for a group of %1 Ultimaker 3 printers." +msgstr "이 프린터는 1% Ultimaker 3 프린터 그룹의 호스트입니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:300 +msgctxt "@label" +msgid "The printer at this address has not yet responded." +msgstr "이 주소의 프린터가 아직 응답하지 않았습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +msgctxt "@action:button" +msgid "Connect" +msgstr "연결" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 +msgctxt "@title:window" +msgid "Printer Address" +msgstr "프린터 주소" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 +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:379 +#: /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 "승인" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "네트워크를 통해 인쇄" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "인쇄" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:36 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "?은 연결된 Ultimaker 3에 연결된 프린터 그룹을 호스트하도록 설정되지 않았습니다" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "인쇄 작업 페이지를 기본 웹 브라우저로 엽니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "인쇄 작업보기" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 +msgctxt "@label" +msgid "Preparing to print" +msgstr "인쇄 준비" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 +msgctxt "@label:status" +msgid "Printing" +msgstr "인쇄" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 +msgctxt "@label:status" +msgid "Available" +msgstr "유효한" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +msgctxt "@label:MonitorStatus" +msgid "Lost connection with the printer" +msgstr "프린터와의 연결이 끊어졌습니다" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 +msgctxt "@label:status" +msgid "Disabled" +msgstr "해제됨" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273 +msgctxt "@label:status" +msgid "Reserved" +msgstr "예약된" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:275 +msgctxt "@label:status" +msgid "Finished" +msgstr "끝마친" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 +msgctxt "@label:status" +msgid "Paused" +msgstr "일시 중지됨" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 +msgctxt "@label:status" +msgid "Resuming" +msgstr "다시 시작" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 +msgctxt "@label:status" +msgid "Print aborted" +msgstr "프린트 정지" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:410 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "인쇄 작업을 수락하지 않음" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 +msgctxt "@label" +msgid "Finishes at: " +msgstr "종료시간 : " + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 +msgctxt "@label" +msgid "Clear build plate" +msgstr "클리어 빌드 플레이트" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "구성 변경 대기" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:64 +msgctxt "@title" +msgid "Print jobs" +msgstr "인쇄 작업" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 +msgctxt "@label" +msgid "Printing" +msgstr "인쇄" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 +msgctxt "@label" +msgid "Queued" +msgstr "대기 중" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:171 +msgctxt "@label:title" +msgid "Printers" +msgstr "프린터" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 +msgctxt "@action:button" +msgid "View printers" +msgstr "프린터보기" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +msgctxt "@info:tooltip" +msgid "Connect to a printer" +msgstr "프린터에 연결" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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 +msgctxt "@action:button" +msgid "Activate Configuration" +msgstr "구성 활성화" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +msgctxt "@title:window" +msgid "Cura SolidWorks Plugin Configuration" +msgstr "Cura SolidWorks Plugin 설정" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +msgctxt "@action:label" +msgid "Default quality of the exported STL:" +msgstr "내 보낸 STL의 기본 품질 :" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Always ask" +msgstr "항상 물어보다" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Always use Fine quality" +msgstr "항상 좋은 품질을 사용하십시오" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Always use Coarse quality" +msgstr "거친 품질을 항상 사용하십시오" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 +msgctxt "@title:window" +msgid "Import SolidWorks File as STL..." +msgstr "SolidWorks 파일을 STL로 가져 오기 ..." + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 +msgctxt "@info:tooltip" +msgid "Quality of the Exported STL" +msgstr "내보낸 STL의 품질" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 +msgctxt "@action:label" +msgid "Quality" +msgstr "품질" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Coarse" +msgstr "결이 거친" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Fine" +msgstr "우수한" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "내 선택을 기억하라" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +msgctxt "@label" +msgid "Color scheme" +msgstr "색 구성표" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +msgctxt "@label:listbox" +msgid "Material Color" +msgstr "재질 색상" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +msgctxt "@label:listbox" +msgid "Line Type" +msgstr "라인 유형" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +msgctxt "@label:listbox" +msgid "Feedrate" +msgstr "이송 속도" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +msgctxt "@label:listbox" +msgid "Layer thickness" +msgstr "레이어 두께" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +msgctxt "@label" +msgid "Compatibility Mode" +msgstr "호환 모드" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +msgctxt "@label" +msgid "Show Travels" +msgstr "이동 표시" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +msgctxt "@label" +msgid "Show Helpers" +msgstr "도움말 보이기" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +msgctxt "@label" +msgid "Show Shell" +msgstr "셸 표시" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +msgctxt "@label" +msgid "Show Infill" +msgstr "충전물 표시" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +msgctxt "@label" +msgid "Only Show Top Layers" +msgstr "상단 레이어 만 표시" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +msgctxt "@label" +msgid "Show 5 Detailed Layers On Top" +msgstr "상단에 5 개의 세부 레이어 표시" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +msgctxt "@label" +msgid "Top / Bottom" +msgstr "위 / 아래" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +msgctxt "@label" +msgid "Inner Wall" +msgstr "내벽" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +msgctxt "@label" +msgid "min" +msgstr "최소" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +msgctxt "@label" +msgid "max" +msgstr "최대" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 +msgctxt "@title:window" +msgid "Post Processing Plugin" +msgstr "사후 처리 플러그인" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:49 +msgctxt "@label" +msgid "Post Processing Scripts" +msgstr "사후 처리 스크립트" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:217 +msgctxt "@action" +msgid "Add a script" +msgstr "스크립트 추가" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:263 +msgctxt "@label" +msgid "Settings" +msgstr "설정" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +msgctxt "@info:tooltip" +msgid "Change active post-processing scripts" +msgstr "활성 사후 처리 스크립트 변경" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 +msgctxt "@title:window" +msgid "Convert Image..." +msgstr "이미지 변환 ..." + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:33 +msgctxt "@info:tooltip" +msgid "The maximum distance of each pixel from \"Base.\"" +msgstr "\"Base\"에서 각 픽셀까지의 최대 거리입니다" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:38 +msgctxt "@action:label" +msgid "Height (mm)" +msgstr "높이 (mm)" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:56 +msgctxt "@info:tooltip" +msgid "The base height from the build plate in millimeters." +msgstr "밀리미터 단위의 빌드 플레이트에서 기저부 높이." + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:61 +msgctxt "@action:label" +msgid "Base (mm)" +msgstr "바다 (mm)" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:79 +msgctxt "@info:tooltip" +msgid "The width in millimeters on the build plate." +msgstr "빌드 플레이트의 폭 (밀리미터)." + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:84 +msgctxt "@action:label" +msgid "Width (mm)" +msgstr "너비 (mm)" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:103 +msgctxt "@info:tooltip" +msgid "The depth in millimeters on the build plate" +msgstr "빌드 플레이트의 깊이 (밀리미터)" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:108 +msgctxt "@action:label" +msgid "Depth (mm)" +msgstr "깊이 (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 "기본적으로 흰색 픽셀은 메쉬에서 높은 점을 나타내고 검정색 픽셀은 메쉬에서 낮은 점을 나타냅니다. 이 옵션을 변경하면 검은 픽셀이 메쉬의 높은 점을 나타내고 흰색 픽셀은 메쉬의 낮은 점을 나타냅니다." + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "환하다" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Darker is higher" +msgstr "어둡다" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 +msgctxt "@info:tooltip" +msgid "The amount of smoothing to apply to the image." +msgstr "이미지를 부드럽게 적용 할 정도입니다." + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:154 +msgctxt "@action:label" +msgid "Smoothing" +msgstr "부드럽게하기" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +msgctxt "@action:button" +msgid "Select settings" +msgstr "설정 선택" + +#: /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: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:296 +msgctxt "@label:checkbox" +msgid "Show all" +msgstr "모두 보이기" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 +msgctxt "@title:window" +msgid "Open Project" +msgstr "프로젝트 열기" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 +msgctxt "@action:ComboBox option" +msgid "Update existing" +msgstr "기존 업데이트" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "새로 만들기" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +msgctxt "@action:title" +msgid "Summary - Cura Project" +msgstr "요약 - Cura 프로젝트" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 +msgctxt "@action:label" +msgid "Printer settings" +msgstr "프린터 설정" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 +msgctxt "@info:tooltip" +msgid "How should the conflict in the machine be resolved?" +msgstr "기계의 충돌을 어떻게 해결해야합니까?" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 +msgctxt "@action:label" +msgid "Type" +msgstr "유형" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:144 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:201 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:293 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:190 +msgctxt "@action:label" +msgid "Name" +msgstr "이름" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:166 +msgctxt "@action:label" +msgid "Profile settings" +msgstr "프로필 설정" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 +msgctxt "@info:tooltip" +msgid "How should the conflict in the profile be resolved?" +msgstr "프로필의 충돌을 어떻게 해결해야합니까?" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 +msgctxt "@action:label" +msgid "Not in profile" +msgstr "프로필에 없음" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 +msgctxt "@action:label" +msgid "%1 override" +msgid_plural "%1 overrides" +msgstr[0] "무시하다" +msgstr[1] "무시하다" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:232 +msgctxt "@action:label" +msgid "Derivative from" +msgstr "파생 상품" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:237 +msgctxt "@action:label" +msgid "%1, %2 override" +msgid_plural "%1, %2 overrides" +msgstr[0] "무시하다" +msgstr[1] "무시하다" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:253 +msgctxt "@action:label" +msgid "Material settings" +msgstr "재질 설정" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 +msgctxt "@info:tooltip" +msgid "How should the conflict in the material be resolved?" +msgstr "자료의 충돌은 어떻게 해결되어야합니까?" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +msgctxt "@action:label" +msgid "Setting visibility" +msgstr "가시성 설정" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:321 +msgctxt "@action:label" +msgid "Mode" +msgstr "종류" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:218 +msgctxt "@action:label" +msgid "Visible settings:" +msgstr "표시 설정 :" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:223 +msgctxt "@action:label" +msgid "%1 out of %2" +msgstr "%1/%2" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368 +msgctxt "@action:warning" +msgid "Loading a project will clear all models on the build plate." +msgstr "프로젝트를 로드하면 빌드 플레이트의 모든 모델이 지워집니다." + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 +msgctxt "@action:button" +msgid "Open" +msgstr "열다" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:11 +msgctxt "@title:window" +msgid "Find & Update plugins" +msgstr "플러그인 찾기 및 업데이트" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:27 +msgctxt "@label" +msgid "Here you can find a list of Third Party plugins." +msgstr "여기서 제 3 자 플러그인 목록을 찾을 수 있습니다." + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 +msgctxt "@action:button" +msgid "Upgrade" +msgstr "업그레이드" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +msgctxt "@action:button" +msgid "Installed" +msgstr "설치됨" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "다운로드" + +#: /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 "" +"This plugin contains a license.\n" +"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 "동의" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" +msgstr "거절" + +#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 +msgctxt "@title:window" +msgid "User Agreement" +msgstr "사용자 계약" + +#: /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 "프린터 업그레이드 선택" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:37 +msgctxt "@label" +msgid "Please select any upgrades made to this Ultimaker 2." +msgstr "이 Ultimaker 2 업그레이드를 선택하십시오." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:45 +msgctxt "@label" +msgid "Olsson Block" +msgstr "올손 블록" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +msgctxt "@title" +msgid "Build Plate Leveling" +msgstr "빌드 플레이트 평준화" + +#: /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 "지문이 크게 나오지 않도록 빌드 플레이트를 조정할 수 있습니다. '다음 위치로 이동'을 클릭하면 노즐이 조정할 수있는 다른 위치로 이동합니다." + +#: /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 "모든 자리를 위해; 노즐 아래에 종이 한 장을 넣고 인쇄 빌드 플레이트 높이를 조정하십시오. 인쇄물 받침판 높이는 용지의 끝 부분이 용지를 살짝 쥐었을 때의 높이입니다." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +msgctxt "@action:button" +msgid "Start Build Plate Leveling" +msgstr "Build Plate Leveling 시작하기" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +msgctxt "@action:button" +msgid "Move to Next Position" +msgstr "다음 위치로 이동" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:27 +msgctxt "@title" +msgid "Upgrade Firmware" +msgstr "펌웨어 업그레이드" + +#: /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 "펌웨어는 3D 프린터에서 직접 실행되는 소프트웨어입니다. 이 펌웨어는 스텝 모터를 제어하고 온도를 조절하며 궁극적으로 프린터를 작동시킵니다." + +#: /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 "새 프린터와 함께 제공되는 펌웨어는 작동하지만 새 버전은 더 많은 기능과 향상된 기능을 제공하는 경향이 있습니다." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:62 +msgctxt "@action:button" +msgid "Automatically upgrade Firmware" +msgstr "펌웨어 자동 업그레이드" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:72 +msgctxt "@action:button" +msgid "Upload custom Firmware" +msgstr "맞춤 펌웨어 업로드" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:83 +msgctxt "@title:window" +msgid "Select custom firmware" +msgstr "사용자 정의 펌웨어 선택" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +msgctxt "@label" +msgid "Please select any upgrades made to this Ultimaker Original" +msgstr "이 Ultimaker Original로 업그레이드 한 항목을 선택하십시오" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +msgctxt "@label" +msgid "Heated Build Plate (official kit or self-built)" +msgstr "가열 된 빌드 플레이트 (공식 키트 또는 자체 조립식)" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 +msgctxt "@title" +msgid "Check Printer" +msgstr "프린터 확인" + +#: /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 "Ultimaker에서 몇 가지 분별 검사를 하는 것이 좋습니다. 기계가 작동하는지 알면 이 단계를 건너 뛸 수 있습니다" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 +msgctxt "@action:button" +msgid "Start Printer Check" +msgstr "프린터 확인 시작" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 +msgctxt "@label" +msgid "Connection: " +msgstr "연결 " + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 +msgctxt "@info:status" +msgid "Connected" +msgstr "연결됨" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 +msgctxt "@info:status" +msgid "Not connected" +msgstr "연결되지 않은" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 +msgctxt "@label" +msgid "Min endstop X: " +msgstr "최소 엔드 스톱 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 "작업" + +#: /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 "확인되지 않음" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 +msgctxt "@label" +msgid "Min endstop Y: " +msgstr "최소 엔드 스톱 Y " + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 +msgctxt "@label" +msgid "Min endstop Z: " +msgstr "최소 엔드 스톱 Z " + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 +msgctxt "@label" +msgid "Nozzle temperature check: " +msgstr "노즐 온도 확인 " + +#: /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 "난방 장치 중지" + +#: /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 "난방 시작" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 +msgctxt "@label" +msgid "Build plate temperature check:" +msgstr "빌드 플레이트 온도 확인 :" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 +msgctxt "@info:status" +msgid "Checked" +msgstr "체크 됨" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 +msgctxt "@label" +msgid "Everything is in order! You're done with your CheckUp." +msgstr "당신의 점검으로 모든 것이 순조롭게 끝났습니다." + +#: /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:90 +msgctxt "@label:MonitorStatus" +msgid "Printer does not accept commands" +msgstr "프린터가 명령을 받아들이지 않습니다" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 +msgctxt "@label:MonitorStatus" +msgid "In maintenance. Please check the printer" +msgstr "유지 보수 중. 프린터를 확인하십시오" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 +msgctxt "@label:MonitorStatus" +msgid "Printing..." +msgstr "인쇄..." + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 +msgctxt "@label:MonitorStatus" +msgid "Paused" +msgstr "일시 중지됨" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 +msgctxt "@label:MonitorStatus" +msgid "Preparing..." +msgstr "준비 중 ..." + +#: /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:237 +msgctxt "@label:" +msgid "Resume" +msgstr "다시 시작하다" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +msgctxt "@label:" +msgid "Pause" +msgstr "중지" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +msgctxt "@label:" +msgid "Abort Print" +msgstr "인쇄 중단" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +msgctxt "@window:title" +msgid "Abort print" +msgstr "인쇄 중단" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +msgctxt "@label" +msgid "Are you sure you want to abort the print?" +msgstr "인쇄를 중단 하시겠습니까?" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "변경 사항 삭제 또는 유지" + +#: /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 "일부 프로필 설정을 사용자 지정했습니다.\n이러한 설정을 유지하거나 삭제 하시겠습니까?" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "프로필 설정" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "기본값" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "맞춤형" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 +#: /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: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:595 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "계속하고 다시 묻지 마라" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "폐기하다" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "유지하다" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "새 프로필 만들기" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:44 +msgctxt "@title" +msgid "Information" +msgstr "정보" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:68 +msgctxt "@label" +msgid "Display Name" +msgstr "표시 이름" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:78 +msgctxt "@label" +msgid "Brand" +msgstr "상표" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +msgctxt "@label" +msgid "Material Type" +msgstr "자재 유형" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +msgctxt "@label" +msgid "Color" +msgstr "색깔" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +msgctxt "@label" +msgid "Properties" +msgstr "속성" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +msgctxt "@label" +msgid "Density" +msgstr "밀도" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +msgctxt "@label" +msgid "Diameter" +msgstr "직경" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +msgctxt "@label" +msgid "Filament Cost" +msgstr "필라멘트 비용" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +msgctxt "@label" +msgid "Filament weight" +msgstr "필라멘트 무게" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +msgctxt "@label" +msgid "Filament length" +msgstr "필라멘트 길이" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +msgctxt "@label" +msgid "Cost per Meter" +msgstr "미터 당 비용" + +#: /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 "이 자료는 ?에 연결되어 있으며 일부 속성을 공유합니다." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:248 +msgctxt "@label" +msgid "Unlink Material" +msgstr "재질 연결 해제" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +msgctxt "@label" +msgid "Description" +msgstr "기술" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +msgctxt "@label" +msgid "Adhesion Information" +msgstr "접착 정보" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +msgctxt "@label" +msgid "Print settings" +msgstr "인쇄 설정" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:14 +msgctxt "@title:tab" +msgid "Setting Visibility" +msgstr "공개 설정하기" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:44 +msgctxt "@label:textbox" +msgid "Check all" +msgstr "모두 확인" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:40 +msgctxt "@info:status" +msgid "Calculated" +msgstr "계획된" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:53 +msgctxt "@title:column" +msgid "Setting" +msgstr "설정" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +msgctxt "@title:column" +msgid "Profile" +msgstr "윤곽" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +msgctxt "@title:column" +msgid "Current" +msgstr "흐름" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +msgctxt "@title:column" +msgid "Unit" +msgstr "단위" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +msgctxt "@title:tab" +msgid "General" +msgstr "일반" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:128 +msgctxt "@label" +msgid "Interface" +msgstr "인터페이스" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:139 +msgctxt "@label" +msgid "Language:" +msgstr "언어:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +msgctxt "@label" +msgid "Currency:" +msgstr "통화:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +msgctxt "@label" +msgid "Theme:" +msgstr "테마:" + +#: /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:296 +msgctxt "@info:tooltip" +msgid "Slice automatically when changing settings." +msgstr "설정을 변경할 때 자동으로 슬라이스합니다." + +#: /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:318 +msgctxt "@label" +msgid "Viewport behavior" +msgstr "뷰포트 동작" + +#: /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:335 +msgctxt "@option:check" +msgid "Display overhang" +msgstr "오버행 표시" + +#: /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:347 +msgctxt "@action:button" +msgid "Center camera when item is selected" +msgstr "항목을 선택하면 중앙 카메라" + +#: /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:361 +msgctxt "@action:button" +msgid "Invert the direction of camera zoom." +msgstr "카메라 줌의 방향을 반전시킵니다." + +#: /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:375 +msgctxt "@action:button" +msgid "Zoom toward mouse direction" +msgstr "마우스 방향으로 확대 / 축소" + +#: /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:389 +msgctxt "@option:check" +msgid "Ensure models are kept apart" +msgstr "모델이 분리되어 있는지 확인하십시오" + +#: /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:402 +msgctxt "@option:check" +msgid "Automatically drop models to the build plate" +msgstr "모델을 빌드 플레이트에 자동으로 놓기" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 +msgctxt "@info:tooltip" +msgid "Show caution message in gcode reader." +msgstr "gcode 리더에 주의 메시지를 표시하십시오" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +msgctxt "@option:check" +msgid "Caution message in gcode reader" +msgstr "gcode 리더의 주의 메시지" + +#: /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:435 +msgctxt "@option:check" +msgid "Force layer view compatibility mode (restart required)" +msgstr "강제 레이어보기 호환성 모드 (다시 시작해야 함)" + +#: /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: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:462 +msgctxt "@option:check" +msgid "Scale large models" +msgstr "대형 모델 확장" + +#: /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:476 +msgctxt "@option:check" +msgid "Scale extremely small models" +msgstr "매우 작은 모델의 크기 조정" + +#: /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:490 +msgctxt "@option:check" +msgid "Add machine prefix to job name" +msgstr "작업 이름에 기계 접두어 추가" + +#: /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:503 +msgctxt "@option:check" +msgid "Show summary dialog when saving project" +msgstr "프로젝트 저장시 요약 대화 상자 표시" + +#: /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:520 +msgctxt "@window:text" +msgid "Default behavior when opening a project file: " +msgstr "프로젝트 파일을 열 때 기본 동작 " + +#: /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:534 +msgctxt "@option:openProject" +msgid "Always open as a project" +msgstr "항상 프로젝트로 여십시오" + +#: /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: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:580 +msgctxt "@label" +msgid "Override Profile" +msgstr "프로필 재정의" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +msgctxt "@label" +msgid "Privacy" +msgstr "은둔" + +#: /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:641 +msgctxt "@option:check" +msgid "Check for updates on start" +msgstr "시작시 업데이트 확인" + +#: /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: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:444 +msgctxt "@title:tab" +msgid "Printers" +msgstr "프린터" + +#: /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 "활성화" + +#: /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 "이름 바꾸기" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 +msgctxt "@label" +msgid "Printer type:" +msgstr "프린터 유형 :" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:158 +msgctxt "@label" +msgid "Connection:" +msgstr "연결:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:164 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "프린터가 연결되어 있지 않습니다." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:170 +msgctxt "@label" +msgid "State:" +msgstr "상태:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 +msgctxt "@label:MonitorStatus" +msgid "Waiting for someone to clear the build plate" +msgstr "누군가가 빌드 플레이트를 지울 때까지 기다리는 중입니다" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 +msgctxt "@label:MonitorStatus" +msgid "Waiting for a printjob" +msgstr "인쇄거리를 기다리는 중" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +msgctxt "@title:tab" +msgid "Profiles" +msgstr "프로필" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:29 +msgctxt "@label" +msgid "Protected profiles" +msgstr "보호 된 프로필" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:29 +msgctxt "@label" +msgid "Custom profiles" +msgstr "사용자 정의 프로파일" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:64 +msgctxt "@label" +msgid "Create" +msgstr "창조하다" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:80 +msgctxt "@label" +msgid "Duplicate" +msgstr "복제" + +#: /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 "가져오다" + +#: /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 "내보내다" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:126 +msgctxt "@label %1 is printer name" +msgid "Printer: %1" +msgstr "프린터" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:165 +msgctxt "@action:button" +msgid "Update profile with current settings/overrides" +msgstr "현재 설정 / 재정의 프로필 업데이트" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:173 +msgctxt "@action:button" +msgid "Discard current changes" +msgstr "현재 변경 사항 삭제" + +#: /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 "이 프로필은 프린터에서 지정한 기본값을 사용하므로 아래 목록에 아무런 설정 / 재정의가 없습니다." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:197 +msgctxt "@action:label" +msgid "Your current settings match the selected profile." +msgstr "현재 설정이 선택한 프로필과 일치합니다." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:215 +msgctxt "@title:tab" +msgid "Global Settings" +msgstr "전역 설정" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:258 +msgctxt "@title:window" +msgid "Rename Profile" +msgstr "프로필 이름 바꾸기" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:271 +msgctxt "@title:window" +msgid "Create Profile" +msgstr "프로필 작성" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:285 +msgctxt "@title:window" +msgid "Duplicate Profile" +msgstr "중복 프로필" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:299 +msgctxt "@window:title" +msgid "Import Profile" +msgstr "프로필 가져 오기" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:307 +msgctxt "@title:window" +msgid "Import Profile" +msgstr "프로필 가져 오기" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:335 +msgctxt "@title:window" +msgid "Export Profile" +msgstr "프로필 내보내기" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +msgctxt "@title:tab" +msgid "Materials" +msgstr "자재" + +#: /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 "프린터" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:120 +msgctxt "@action:label %1 is printer name" +msgid "Printer: %1" +msgstr "프린터" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +msgctxt "@action:button" +msgid "Create" +msgstr "창조하다" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +msgctxt "@action:button" +msgid "Duplicate" +msgstr "복제" + +#: /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 "재료 가져 오기" + +#: /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 "자재를 가져올 수 없습니다" + +#: /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 "자재를 성공적으로 가져왔습니다" + +#: /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 "자재 내보내기" + +#: /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 "자재를 내보내는데 실패했습니다" + +#: /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 "자재를 성공적으로 내보냈습니다" + +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +msgctxt "@title:window" +msgid "Add Printer" +msgstr "프린터 추가" + +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +msgctxt "@label" +msgid "Printer Name:" +msgstr "프린터 이름 :" + +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +msgctxt "@action:button" +msgid "Add Printer" +msgstr "프린터 추가" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "Cura 소개" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43 +msgctxt "@label" +msgid "version: %1" +msgstr "버전: %1" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "3D 인쇄를 위해 필라멘트를 한줄로 용" + +#: /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는 커뮤니티와 공동으로 Ultimaker B.V.에 의해 개발되었습니다\nCura는 다음 오픈 소스 프로젝트를 자랑스럽게 사용합니다" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "그래픽 사용자 인터페이스" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:119 +msgctxt "@label" +msgid "Application framework" +msgstr "애플리케이션 프레임 워크" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:120 +msgctxt "@label" +msgid "GCode generator" +msgstr "GCode 생성기" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:121 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "프로세스간 통신 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:123 +msgctxt "@label" +msgid "Programming language" +msgstr "프로그래밍 언어" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:124 +msgctxt "@label" +msgid "GUI framework" +msgstr "GUI 프레임 워크" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:125 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "GUI 프레임 워크 바인딩" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:126 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "C / C ++ 바인딩 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:127 +msgctxt "@label" +msgid "Data interchange format" +msgstr "데이터 교환 형식" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:128 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "과학 컴퓨팅을위한 지원 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:129 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "더 빠른 수학을 위한 지원 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:130 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "STL 파일 처리를 위한 지원 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:131 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "3MF 파일 처리를 위한 지원 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 +msgctxt "@label" +msgid "Serial communication library" +msgstr "직렬 통신 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "ZeroConf 발견 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "다각형 클리핑 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Python HTTP 라이브러리" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 +msgctxt "@label" +msgid "Font" +msgstr "폰트" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 +msgctxt "@label" +msgid "SVG icons" +msgstr "SVG 아이콘" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +msgctxt "@label" +msgid "Profile:" +msgstr "윤곽:" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 +msgctxt "@" +msgid "No Profile Available" +msgstr "프로필을 사용할 수 없음" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +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:152 +msgctxt "@label:textbox" +msgid "Search..." +msgstr "찾다..." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +msgctxt "@action:menu" +msgid "Copy value to all extruders" +msgstr "모든 압출기에 값 복사" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 +msgctxt "@action:menu" +msgid "Hide this setting" +msgstr "이 설정 숨기기" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +msgctxt "@action:menu" +msgid "Don't show this setting" +msgstr "이 설정을 표시하지 않음" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +msgctxt "@action:menu" +msgid "Keep this setting visible" +msgstr "이 설정을 계속 표시하십시오" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +msgctxt "@action:menu" +msgid "Configure setting visiblity..." +msgstr "설정 표시 설정 ..." + +#: /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 "일부 숨겨진 설정은 정상 계산 값과 다른 값을 사용합니다.\n\n이 설정을 표시하려면 클릭하십시오." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +msgctxt "@label Header for list of settings." +msgid "Affects" +msgstr "영향" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +msgctxt "@label Header for list of settings." +msgid "Affected By" +msgstr "영향을 받다" + +#: /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 "이 설정은 항상 모든 압출기간에 공유됩니다. 여기에서 변경하면 모든 압출기의 값이 변경됩니다" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:160 +msgctxt "@label" +msgid "The value is resolved from per-extruder values " +msgstr "이 값은 압출기 값마다 결정됩니다 " + +#: /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 "이 설정에는 프로필과 다른 값이 있습니다.\n\n프로필 값을 복원하려면 클릭하십시오." + +#: /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 "이 설정은 일반적으로 계산되지만 현재는 절대 값이 설정되어 있습니다.\n\n계산 된 값을 복원하려면 클릭하십시오." + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +msgctxt "@label:listbox" +msgid "Print Setup" +msgstr "인쇄 설정" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +msgctxt "@label:listbox" +msgid "" +"Print Setup disabled\n" +"G-code files cannot be modified" +msgstr "인쇄 설정 사용 안 함\nG 코드 파일은 수정할 수 없습니다" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +msgctxt "@label Hours and minutes" +msgid "00h 00min" +msgstr "00h 00min" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +msgctxt "@tooltip" +msgid "Time specification
    " +msgstr "시간 사양
    " + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +msgctxt "@label" +msgid "Cost specification" +msgstr "비용 사양" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1m" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +msgctxt "@label" +msgid "Total:" +msgstr "총계:" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "%1m / ~ %2g / ~ %4 %3" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +msgctxt "@label Print estimates: m for meters, g for grams" +msgid "%1m / ~ %2g" +msgstr "%1m / ~ %2g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +msgctxt "@tooltip" +msgid "Recommended Print Setup

    Print with the recommended settings for the selected printer, material and quality." +msgstr "권장 인쇄 설정\n선택한 프린터, 재질 및 품질에 대한 권장 설정으로 인쇄하십시오." + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 +msgctxt "@tooltip" +msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." +msgstr "사용자 정의 인쇄 설정\n마지막 스플 라이스 프로세스의 모든 비트를 미세하게 제어하여 인쇄하십시오." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +msgctxt "@title:menuitem %1 is the automatically selected material" +msgid "Automatic: %1" +msgstr "자동" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "조망" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 +msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" +msgid "Automatic: %1" +msgstr "자동" + +#: /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] "선택된 모델 인쇄 :" +msgstr[1] "선택된 모델ㄷ 인쇄 :" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +msgctxt "@title:window" +msgid "Multiply Selected Model" +msgid_plural "Multiply Selected Models" +msgstr[0] "선택한 모델 곱하기" +msgstr[1] "선택한 모델ㄷ 곱하기" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:108 +msgctxt "@label" +msgid "Number of Copies" +msgstr "매수" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +msgctxt "@title:menu menubar:file" +msgid "Open &Recent" +msgstr "열기 및 최근" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 +msgctxt "@info:status" +msgid "No printer connected" +msgstr "연결된 프린터 없음" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +msgctxt "@label" +msgid "Extruder" +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 "핫 엔드의 목표 온도입니다. 핫 엔드는 이 온도를 향해 가열되거나 냉각됩니다. 이 값이 0이면 온열 가열이 꺼집니다." + +#: /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:188 +msgctxt "@tooltip" +msgid "The colour of the material in this extruder." +msgstr "이 압출기의 재료 색." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 +msgctxt "@tooltip" +msgid "The material in this extruder." +msgstr "이 압출기의 재료." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 +msgctxt "@tooltip" +msgid "The nozzle inserted in this extruder." +msgstr "이 압출기에 삽입 된 노즐." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 +msgctxt "@label" +msgid "Build plate" +msgstr "빌드 플레이트" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 +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:344 +msgctxt "@tooltip" +msgid "The current temperature of the heated bed." +msgstr "가열 된 베드의 현재 온도." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 +msgctxt "@tooltip of temperature input" +msgid "The temperature to pre-heat the bed to." +msgstr "베드를 예열하기위한 온도." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 +msgctxt "@button Cancel pre-heating" +msgid "Cancel" +msgstr "취소" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 +msgctxt "@button" +msgid "Pre-heat" +msgstr "예열" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 +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:703 +msgctxt "@label" +msgid "Printer control" +msgstr "프린터 제어" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 +msgctxt "@label" +msgid "Jog Position" +msgstr "조그 위치" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735 +msgctxt "@label" +msgid "X/Y" +msgstr "X/Y" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842 +msgctxt "@label" +msgid "Z" +msgstr "Z" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 +msgctxt "@label" +msgid "Jog Distance" +msgstr "조그 거리" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018 +msgctxt "@label" +msgid "Active print" +msgstr "인쇄 활성" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 +msgctxt "@label" +msgid "Job Name" +msgstr "작업 이름" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 +msgctxt "@label" +msgid "Printing Time" +msgstr "인쇄 시간" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1035 +msgctxt "@label" +msgid "Estimated time left" +msgstr "예상 남은 시간" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +msgctxt "@action:inmenu" +msgid "Toggle Fu&ll Screen" +msgstr "Fu & ll 화면 토글" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +msgctxt "@action:inmenu menubar:edit" +msgid "&Undo" +msgstr "풀어 놓다" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +msgctxt "@action:inmenu menubar:edit" +msgid "&Redo" +msgstr "다시하다" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +msgctxt "@action:inmenu menubar:file" +msgid "&Quit" +msgstr "그만두다" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +msgctxt "@action:inmenu menubar:view" +msgid "&Reset camera position" +msgstr "카메라 위치 재설정(&R)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu" +msgid "Configure Cura..." +msgstr "Cura 구성 ..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:printer" +msgid "&Add Printer..." +msgstr "프린터 추가 ..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +msgctxt "@action:inmenu menubar:printer" +msgid "Manage Pr&inters..." +msgstr "프린터 관리 ..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +msgctxt "@action:inmenu" +msgid "Manage Materials..." +msgstr "자료 관리 ..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:profile" +msgid "&Update profile with current settings/overrides" +msgstr "현재 설정 / 재정의로 프로필 업데이트" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +msgctxt "@action:inmenu menubar:profile" +msgid "&Discard current changes" +msgstr "현재 변경 사항 무시" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +msgctxt "@action:inmenu menubar:profile" +msgid "&Create profile from current settings/overrides..." +msgstr "현재 설정 / 재정의 프로필 작성" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 +msgctxt "@action:inmenu menubar:profile" +msgid "Manage Profiles..." +msgstr "프로필 관리 ..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +msgctxt "@action:inmenu menubar:help" +msgid "Show Online &Documentation" +msgstr "온라인 및 문서 표시" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +msgctxt "@action:inmenu menubar:help" +msgid "Report a &Bug" +msgstr "버그보고" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +msgctxt "@action:inmenu menubar:help" +msgid "&About..." +msgstr "대략..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +msgctxt "@action:inmenu menubar:edit" +msgid "Delete &Selected Model" +msgid_plural "Delete &Selected Models" +msgstr[0] "선택한 모델 삭제 및 선택" +msgstr[1] "선택한 모델들 삭제 및 선택" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 +msgctxt "@action:inmenu menubar:edit" +msgid "Center Selected Model" +msgid_plural "Center Selected Models" +msgstr[0] "선택한 모델 중심" +msgstr[1] "선택한 모델들 중심" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 +msgctxt "@action:inmenu menubar:edit" +msgid "Multiply Selected Model" +msgid_plural "Multiply Selected Models" +msgstr[0] "선택한 모델 곱하기" +msgstr[1] "선택한 모델ㄷ 곱하기" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +msgctxt "@action:inmenu" +msgid "Delete Model" +msgstr "모델 삭제" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +msgctxt "@action:inmenu" +msgid "Ce&nter Model on Platform" +msgstr "플랫폼에 대한 모델" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +msgctxt "@action:inmenu menubar:edit" +msgid "&Group Models" +msgstr "그룹 모델" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +msgctxt "@action:inmenu menubar:edit" +msgid "Ungroup Models" +msgstr "모델 그룹 해제" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +msgctxt "@action:inmenu menubar:edit" +msgid "&Merge Models" +msgstr "모델 합치기" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +msgctxt "@action:inmenu" +msgid "&Multiply Model..." +msgstr "모델 곱하기" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +msgctxt "@action:inmenu menubar:edit" +msgid "&Select All Models" +msgstr "모든 모델 선택" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +msgctxt "@action:inmenu menubar:edit" +msgid "&Clear Build Plate" +msgstr "빌드 플레이트 지우기" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +msgctxt "@action:inmenu menubar:file" +msgid "Re&load All Models" +msgstr "모든 모델 새로고치" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models" +msgstr "모든 모델 정렬" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange Selection" +msgstr "선택 정렬" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +msgctxt "@action:inmenu menubar:edit" +msgid "Reset All Model Positions" +msgstr "모든 모델 위치 재설정" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 +msgctxt "@action:inmenu menubar:edit" +msgid "Reset All Model &Transformations" +msgstr "모든 모델 및 변환 재설정" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 +msgctxt "@action:inmenu menubar:file" +msgid "&Open File(s)..." +msgstr "파일 열기" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +msgctxt "@action:inmenu menubar:file" +msgid "&New Project..." +msgstr "새 프로젝트..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +msgctxt "@action:inmenu menubar:help" +msgid "Show Engine &Log..." +msgstr "엔진 및 로그 표시" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +msgctxt "@action:inmenu menubar:help" +msgid "Show Configuration Folder" +msgstr "구성 폴더 표시" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +msgctxt "@action:menu" +msgid "Configure setting visibility..." +msgstr "설정 표시 설정 ..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +msgctxt "@action:menu" +msgid "Browse plugins..." +msgstr "플러그인 찾아보기 ..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +msgctxt "@action:menu" +msgid "Installed plugins..." +msgstr "설치된 플러그인 ..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +msgctxt "@label:PrintjobStatus" +msgid "Please load a 3D model" +msgstr "3D 모델을 로드하십시오" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +msgctxt "@label:PrintjobStatus" +msgid "Ready to slice" +msgstr "슬라이스 준비 완료" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "슬라이싱 ..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +msgctxt "@label:PrintjobStatus %1 is target operation" +msgid "Ready to %1" +msgstr "준비 완료" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +msgctxt "@label:PrintjobStatus" +msgid "Unable to Slice" +msgstr "슬라이스 할 수 없음" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +msgctxt "@label:PrintjobStatus" +msgid "Slicing unavailable" +msgstr "슬라이스 사용 불가" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +msgctxt "@label:Printjob" +msgid "Prepare" +msgstr "준비하다" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +msgctxt "@label:Printjob" +msgid "Cancel" +msgstr "취소하다" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +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:620 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "열린 파일" + +#: /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 "선택한 파일 내에 하나 이상의 프로젝트 파일이 있습니다. 한 번에 하나의 프로젝트 파일 만 열 수 있습니다. 해당 파일에서 모델 만 가져 오기를 권장합니다. 계속 하시겠습니까?" + +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "모델로 모두 가져 오기" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +msgctxt "@title:window" +msgid "Ultimaker Cura" +msgstr "Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "파일" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +msgctxt "@action:inmenu menubar:file" +msgid "&Save Selection to File" +msgstr "선택 사항을 파일에 저장" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +msgctxt "@title:menu menubar:file" +msgid "Save &As..." +msgstr "다른 이름으로 저장..." + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +msgctxt "@title:menu menubar:file" +msgid "Save project" +msgstr "프로젝트 저장" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "편집하다" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +msgctxt "@title:menu" +msgid "&View" +msgstr "조망" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +msgctxt "@title:menu" +msgid "&Settings" +msgstr "설정" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +msgctxt "@title:menu menubar:toplevel" +msgid "&Printer" +msgstr "프린터" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +msgctxt "@title:menu" +msgid "&Material" +msgstr "자재" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +msgctxt "@title:menu" +msgid "&Profile" +msgstr "윤곽" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "활성 압출기로 설정" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "확장 프로그램" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +msgctxt "@title:menu menubar:toplevel" +msgid "P&lugins" +msgstr "플러그인" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "환경 설정" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "도움" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +msgctxt "@action:button" +msgid "Open File" +msgstr "파일 열기" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +msgctxt "@title:tab" +msgid "Settings" +msgstr "설정" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +msgctxt "@title:window" +msgid "New project" +msgstr "새 프로젝트" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +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:721 +msgctxt "@window:title" +msgid "Install Plugin" +msgstr "플러그인 설치" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +msgctxt "@title:window" +msgid "Open File(s)" +msgstr "파일 열기" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +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 코드 파일이 있습니다. 한 번에 하나의 G 코드 파일 만 열 수 있습니다. G 코드 파일을 열려면 하나만 선택하십시오." + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +msgctxt "@title:window" +msgid "Save Project" +msgstr "프로젝트 저장" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "압출기" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "자재" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:242 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "프로젝트 요약을 다시 저장하지 마십시오" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "저장하다" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 +msgctxt "@title:tab" +msgid "Prepare" +msgstr "준비하다" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 +msgctxt "@title:tab" +msgid "Monitor" +msgstr "감시 장치" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +msgctxt "@label" +msgid "Layer Height" +msgstr "층 높이" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +msgctxt "@tooltip" +msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +msgstr "사용자 지정 프로필이 현재 활성 상태입니다. 품질 슬라이더를 실행하려면 사용자 지정 탭에서 기본 품질 프로필을 선택하십시오." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +msgctxt "@label" +msgid "Print Speed" +msgstr "인쇄 속도" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +msgctxt "@label" +msgid "Slower" +msgstr "천천히" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +msgctxt "@label" +msgid "Faster" +msgstr "빨리" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "일부 프로필 설정을 수정했습니다. 이러한 설정을 변경하려면 사용자 지정 모드로 이동하십시오." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +msgctxt "@label" +msgid "Infill" +msgstr "빈 공간 채우기" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +msgctxt "@label" +msgid "Gradual infill will gradually increase the amount of infill towards the top." +msgstr "점차적인 빈 공간 채우기는 점차적으로 빈 공간 채우기의 양을 증가시킵니다." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +msgctxt "@label" +msgid "Enable gradual" +msgstr "점진적으로 사용" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +msgctxt "@label" +msgid "Generate Support" +msgstr "지지물 생성" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +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:764 +msgctxt "@label" +msgid "Support Extruder" +msgstr "압출기 지지물" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +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:839 +msgctxt "@label" +msgid "Build Plate Adhesion" +msgstr "플레이트 접착력 강화" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +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 "테두리 또는 raft 인쇄를 사용합니다. 이렇게하면 개체 주변이나 아래에 평평한 영역이 추가되어 나중에 쉽게자를 수 있습니다." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +msgctxt "@label" +msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" +msgstr "인쇄물 개선에 도움이 필요하십니까?\nUltimaker 문제 해결 가이드 읽기" + +#: /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] "선택한 모델을 ?로 인쇄하십시오" +msgstr[1] "선택한 모델들을 ?로 인쇄하십시오" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +msgctxt "@title:window" +msgid "Open project file" +msgstr "프로젝트 파일 열기" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +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 "이 파일은 Cura 프로젝트 파일입니다. 프로젝트로 열거나 모델을 가져 오시겠습니까?" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@action:button" +msgid "Open as project" +msgstr "프로젝트로 열기" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +msgctxt "@action:button" +msgid "Import models" +msgstr "모델 가져 오기" + +#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 +msgctxt "@title:window" +msgid "Engine Log" +msgstr "엔진 로그" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +msgctxt "@label" +msgid "Material" +msgstr "자재" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +msgctxt "@label" +msgid "Check compatibility" +msgstr "호환성 확인" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +msgctxt "@tooltip" +msgid "Click to check the material compatibility on Ultimaker.com." +msgstr "Ultimaker.com의 재질 호환성을 확인하려면 클릭하십시오." + +#: MachineSettingsAction/plugin.json +msgctxt "description" +msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc)" +msgstr "기계 설정 (예 : 빌드 볼륨, 노즐 크기 등)을 변경하는 방법을 제공합니다." + +#: MachineSettingsAction/plugin.json +msgctxt "name" +msgid "Machine Settings action" +msgstr "컴퓨터 설정 작업" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "X 선보기를 제공합니다." + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "엑스레이 보기" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "X3D 파일을 읽을 수 있도록 지원합니다." + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "X3D 리더" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes GCode to a file." +msgstr "GCode를 파일에 씁니다." + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "GCode Writer" +msgstr "GCode 작성자" + +#: cura-god-mode-plugin/src/GodMode/plugin.json +msgctxt "description" +msgid "Dump the contents of all settings to a HTML file." +msgstr "모든 설정의 내용을 HTML 파일로 덤프하십시오." + +#: cura-god-mode-plugin/src/GodMode/plugin.json +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 "G 코드를 받아 들여 WiFi를 통해 Doodle3D WiFi-Box로 보냅니다." + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "Doodle 3D WiFi-Box" + +#: ChangeLogPlugin/plugin.json +msgctxt "description" +msgid "Shows changes since latest checked version." +msgstr "최신 체크 버전 이후로 변경 사항을 표시합니다." + +#: ChangeLogPlugin/plugin.json +msgctxt "name" +msgid "Changelog" +msgstr "변경 내역" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattend quality changes profile." +msgstr "평평한 품질 변경 프로필을 만듭니다." + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile flatener" +msgstr "프로필 플래트너" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "G 코드를 승인하고 프린터로 보냅니다. 플러그인은 또한 펌웨어를 업데이트 할 수 있습니다." + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "USB 인쇄" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "이동식 드라이브 핫 플러그 및 쓰기 지원을 제공합니다." + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +msgstr "이동식 드라이브 출력 장치 플러그인" + +#: UM3NetworkPrinting/plugin.json +msgctxt "description" +msgid "Manages network connections to Ultimaker 3 printers" +msgstr "Ultimaker 3 프린터에 대한 네트워크 연결을 관리합니다" + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "UM3 네트워크 연결" + +#: 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" +msgstr "SolidWorks 자체를 통해 특정 파일을 열 수 있습니다. 이것들은 변환되어 Cura에 로드됩니다" + +#: CuraSolidWorksPlugin/plugin.json +msgctxt "name" +msgid "SolidWorks Integration" +msgstr "SolidWorks 통합" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "시뮬레이션 보기를 제공합니다." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "시뮬레이션 보기" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "후 처리를 위해 사용자가 만든 스크립트를 허용하는 확장 프로그램" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "후 처리" + +#: AutoSave/plugin.json +msgctxt "description" +msgid "Automatically saves Preferences, Machines and Profiles after changes." +msgstr "변경 후 환경 설정, 기계 및 프로파일을 자동으로 저장합니다." + +#: AutoSave/plugin.json +msgctxt "name" +msgid "Auto Save" +msgstr "자동 저장" + +#: SliceInfoPlugin/plugin.json +msgctxt "description" +msgid "Submits anonymous slice info. Can be disabled through preferences." +msgstr "익명의 조각 정보를 제출하십시오. 환경 설정을 통해 비활성화 할 수 있습니다." + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "슬라이스 정보" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "XML 기반 머티리얼 프로파일을 읽고 쓸 수있는 기능을 제공합니다." + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "재료 프로파일" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "레거시 Cura 버전에서 프로파일 가져 오기를 지원합니다." + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "레거시 Cura 프로필 리더" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "g-code 파일에서 프로파일 가져 오기를 지원합니다." + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "GCode Profile Reader" +msgstr "GCode 프로필 리더" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "Cura 2.5에서 Cura 2.6으로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +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 "Cura 2.7에서 Cura 3.0으로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "버전 업그레이드 2.7에서 3.0" + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." +msgstr "Cura 3.0에서 Cura 3.1로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.0 to 3.1" +msgstr "3.0에서 3.1로 버전 업그레이드" + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." +msgstr "Cura 2.6에서 Cura 2.7로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "버전 업그레이드 2.6에서 2.7" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "Cura 2.1에서 Cura 2.2로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "버전 업그레이드 2.1에서 2.2" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "Cura 2.2에서 Cura 2.4로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "버전 업그레이드 2.2에서 2.4" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "2D 이미지 파일에서 인쇄 가능한 지오메트리를 생성 할 수 있습니다." + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "이미지 리더" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "CuraEngine 슬라이스 백엔드 링크를 제공합니다." + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "CuraEngine 백엔드" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "모델 별 설정을 제공합니다." + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "모델 별 설정 도구" + +#: cura-siemensnx-plugin/plugin.json +msgctxt "description" +msgid "Helps you to install an 'export to Cura' button in Siemens NX." +msgstr "Siemens NX에서 'Cura로 내보내기' 버튼을 설치할 수 있습니다." + +#: cura-siemensnx-plugin/plugin.json +msgctxt "name" +msgid "Siemens NX Integration" +msgstr "Siemens NX Integration" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "3MF 파일 읽기 지원." + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "3MF 판독기" + +#: PluginBrowser/plugin.json +msgctxt "description" +msgid "Find, manage and install new plugins." +msgstr "새 플러그인을 찾고, 관리하고 설치하십시오." + +#: PluginBrowser/plugin.json +msgctxt "name" +msgid "Plugin Browser" +msgstr "플러그인 브라우저" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "일반 솔리드 메쉬보기를 제공합니다." + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "솔리드 뷰" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "G 코드 파일을 로드하고 표시 할 수 있습니다." + +#: GCodeReader/plugin.json +msgctxt "name" +msgid "G-code Reader" +msgstr "G 코드 판독기" + +#: CuraProfileWriter/plugin.json +msgctxt "description" +msgid "Provides support for exporting Cura profiles." +msgstr "Cura 프로파일 내보내기 지원을 제공합니다." + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Cura 프로필 작성자" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "3MF 파일 작성 지원을 제공합니다." + +#: 3MFWriter/plugin.json +msgctxt "name" +msgid "3MF Writer" +msgstr "3MF 기록기" + +#: UserAgreementPlugin/plugin.json +msgctxt "description" +msgid "Ask the user once if he/she agrees with our license" +msgstr "사용자에게 라이선스에 동의하는지 한 번 묻습니다." + +#: UserAgreementPlugin/plugin.json +msgctxt "name" +msgid "UserAgreement" +msgstr "사용자 계약" + +#: UltimakerMachineActions/plugin.json +msgctxt "description" +msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" +msgstr "Ultimaker 기계에 대한 기계 작동 제공(예 : 침대 수평 조정 마법사, 업그레이드 선택 등)" + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Ultimaker 기계 동작" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "Cura 프로파일 가져 오기 지원을 제공합니다." + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Cura 프로필 판독기" + +#~ msgctxt "@label:status" +#~ msgid "Blocked" +#~ msgstr "막힘" + +#~ msgctxt "@label:status" +#~ msgid "Can't start print" +#~ msgstr "인쇄를 시작할 수 없습니다" + +#~ msgctxt "@action:button" +#~ msgid "Open Connect.." +#~ msgstr "열기 연결 .." + +#~ msgctxt "@info:title" +#~ msgid "Print Details" +#~ msgstr "인쇄 세부 정보" + +#~ 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 "{machine_name}에 최신 기능이 탑재되어 있는지 확인하려면 정기적으로 펌웨어를 업데이트하는 것이 좋습니다. 이 작업은 {machine_name} (네트워크에 연결된 경우) 또는 USB를 통해 수행 할 수 있습니다." + +msgctxt "@item:inlistbox" +msgid "Layer view" +msgstr "레이어 보기" + +msgctxt "@info:title" +msgid "Layer View" +msgstr "레이어 보기" + +#~ msgctxt "@menuitem" +#~ msgid "Browse plugins" +#~ msgstr "플러그인 찾아보기" + +#~ msgctxt "@info:title" +#~ msgid "Export Details" +#~ msgstr "세부 정보 내보내기" + +#~ 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 "" +#~ "복구 할 수없는 치명적인 예외가 발생했습니다!\n" +#~ "http://github.com/Ultimaker/Cura/issues에 버그 보고서를 게시하십시오. " + +#~ msgctxt "@action:button" +#~ msgid "Open Web Page" +#~ msgstr "웹 페이지 열기" + +#~ msgctxt "@action:button" +#~ msgid "Ok" +#~ msgstr "승인" + +#~ msgctxt "@label" +#~ msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +#~ msgstr "이 프린터는 Ultimaker 3 프린터에 연결된 그룹을 호스트하도록 설정되지 않았습니다" + +#~ msgctxt "@label" +#~ msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +#~ msgstr "이 프린터는 Ultimaker 3에 연결된 프린터 그룹의 호스트입니다" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "준비중인" + +#~ msgctxt "@label" +#~ msgid "Completed on: " +#~ msgstr "완료일 " + +#~ msgctxt "@info:tooltip" +#~ msgid "Opens the print jobs page with your default web browser." +#~ msgstr "기본 웹 브라우저로 인쇄 작업 페이지를 엽니다." + +#~ msgctxt "@label" +#~ msgid "PRINTER GROUP" +#~ msgstr "프린터 그룹" + +#~ msgctxt "@action:warning" +#~ msgid "Loading a project will clear all models on the buildplate" +#~ msgstr "프로젝트를 로드하면 빌드 플레이트의 모든 모델이 지워집니다" + +#~ 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 "" +#~ "플러그인에는 라이센스가 포함되어 있습니다.\n" +#~ "이 플러그인을 설치하려면이 라이센스를 수락해야합니다.\n" +#~ "아래 약관에 동의하십니까?" + +#~ msgctxt "@label" +#~ msgid "00h 00min" +#~ msgstr "00시간 00 분" + +#~ msgctxt "@tooltip" +#~ msgid "Time information" +#~ msgstr "시간 정보" + +#~ msgctxt "@description" +#~ msgid "Print time" +#~ msgstr "인쇄 시간" + +#~ msgctxt "@title:window" +#~ msgid "Cura" +#~ msgstr "큐라" + +#~ msgctxt "@label" +#~ msgid "Check material compatibility" +#~ msgstr "재질 호환성 확인" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection (Cluster)" +#~ msgstr "UM3 네트워크 연결 (클러스터)" + +#~ msgctxt "description" +#~ msgid "Provides the Layer view." +#~ msgstr "레이어 보기를 제공합니다." + +msgctxt "name" +msgid "Layer View" +msgstr "레이어보기" diff --git a/resources/i18n/ko_KR/fdmextruder.def.json.po b/resources/i18n/ko_KR/fdmextruder.def.json.po index a6635e1d78..2d9cffc0dc 100644 --- a/resources/i18n/ko_KR/fdmextruder.def.json.po +++ b/resources/i18n/ko_KR/fdmextruder.def.json.po @@ -2,13 +2,13 @@ # 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 3.0\n" +"Project-Id-Version: Cura 3.1\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-20 14:31+0900\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Brule\n" "Language-Team: Brule\n" "Language: ko_KR\n" @@ -41,7 +41,7 @@ msgstr "인쇄에 사용되는 압출기 트레인. 이것은 다중 압출에 #: fdmextruder.def.json msgctxt "machine_nozzle_id label" msgid "Nozzle ID" -msgstr "" +msgstr "노즐 ID" #: fdmextruder.def.json msgctxt "machine_nozzle_id description" @@ -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/ko_KR/fdmprinter.def.json.po b/resources/i18n/ko_KR/fdmprinter.def.json.po index b943c854d0..0af3a1bb27 100644 --- a/resources/i18n/ko_KR/fdmprinter.def.json.po +++ b/resources/i18n/ko_KR/fdmprinter.def.json.po @@ -2,13 +2,13 @@ # 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 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-21 14:58+0900\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Brule\n" "Language-Team: Brule\n" "Language: ko_KR\n" @@ -16,12 +16,12 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.0.3\n" +"X-Generator: Poedit 2.0.4\n" #: fdmprinter.def.json msgctxt "machine_settings label" msgid "Machine" -msgstr "" +msgstr "기계" #: fdmprinter.def.json msgctxt "machine_settings description" @@ -31,7 +31,7 @@ msgstr "기계 별 설정 " #: fdmprinter.def.json msgctxt "machine_name label" msgid "Machine Type" -msgstr "" +msgstr "기계 유형" #: fdmprinter.def.json msgctxt "machine_name description" @@ -41,7 +41,7 @@ msgstr "3D 프린터 모델의 이름입니다. " #: fdmprinter.def.json msgctxt "machine_show_variants label" msgid "Show Machine Variants" -msgstr "" +msgstr "기계 변형 표시" #: fdmprinter.def.json msgctxt "machine_show_variants description" @@ -51,7 +51,7 @@ msgstr "별도의 json 파일에 설명 된이 기계의 다양한 변형을 표 #: fdmprinter.def.json msgctxt "machine_start_gcode label" msgid "Start GCode" -msgstr "" +msgstr "GCode 시작" #: fdmprinter.def.json msgctxt "machine_start_gcode description" @@ -63,7 +63,7 @@ msgstr "G 시작과 동시에 실행될 코드 명령어 " #: fdmprinter.def.json msgctxt "machine_end_gcode label" msgid "End GCode" -msgstr "" +msgstr "GCode 종료" #: fdmprinter.def.json msgctxt "machine_end_gcode description" @@ -75,7 +75,7 @@ msgstr "G 맨 마지막에 실행될 코드 명령 " #: fdmprinter.def.json msgctxt "material_guid label" msgid "Material GUID" -msgstr "" +msgstr "재료 GUID" #: fdmprinter.def.json msgctxt "material_guid description" @@ -85,7 +85,7 @@ msgstr "재료의 GUID. 자동으로 설정됩니다. " #: fdmprinter.def.json msgctxt "material_bed_temp_wait label" msgid "Wait for Build Plate Heatup" -msgstr "" +msgstr "Build Plate Heat Up을 기다리십시오" #: fdmprinter.def.json msgctxt "material_bed_temp_wait description" @@ -95,7 +95,7 @@ msgstr "시작 시, 빌드 플레이트 온도에 도달 할 때까지 대기하 #: fdmprinter.def.json msgctxt "material_print_temp_wait label" msgid "Wait for Nozzle Heatup" -msgstr "" +msgstr "노즐 가열 기다리기" #: fdmprinter.def.json msgctxt "material_print_temp_wait description" @@ -105,7 +105,7 @@ msgstr "시작 시, 노즐 온도에 도달 할 때까지 대기할지 여부 " #: fdmprinter.def.json msgctxt "material_print_temp_prepend label" msgid "Include Material Temperatures" -msgstr "" +msgstr "재료 온도 포함" #: fdmprinter.def.json msgctxt "material_print_temp_prepend description" @@ -115,7 +115,7 @@ msgstr "gcode의 시작 부분에 노즐 온도 명령을 포함할지 여부. s #: fdmprinter.def.json msgctxt "material_bed_temp_prepend label" msgid "Include Build Plate Temperature" -msgstr "" +msgstr "빌드 플레이트 온도 포함" #: fdmprinter.def.json msgctxt "material_bed_temp_prepend description" @@ -125,7 +125,7 @@ msgstr "gcode가 시작될 때 빌드 플레이트 온도 명령을 포함할지 #: fdmprinter.def.json msgctxt "machine_width label" msgid "Machine Width" -msgstr "" +msgstr "기계 너비" #: fdmprinter.def.json msgctxt "machine_width description" @@ -135,7 +135,7 @@ msgstr "인쇄 가능 영역의 폭 (X 방향) " #: fdmprinter.def.json msgctxt "machine_depth label" msgid "Machine Depth" -msgstr "" +msgstr "기계 깊이" #: fdmprinter.def.json msgctxt "machine_depth description" @@ -145,7 +145,7 @@ msgstr "인쇄 가능 영역의 깊이 (Y 방향) " #: fdmprinter.def.json msgctxt "machine_shape label" msgid "Build Plate Shape" -msgstr "" +msgstr "판 모양 만들기" #: fdmprinter.def.json msgctxt "machine_shape description" @@ -155,17 +155,17 @@ msgstr "인쇄 할 수없는 영역을 고려하지 않고 빌드 플레이트 #: fdmprinter.def.json msgctxt "machine_shape option rectangular" msgid "Rectangular" -msgstr "" +msgstr "직사각형" #: fdmprinter.def.json msgctxt "machine_shape option elliptic" msgid "Elliptic" -msgstr "" +msgstr "타원" #: fdmprinter.def.json msgctxt "machine_height label" msgid "Machine Height" -msgstr "" +msgstr "기계 높이" #: fdmprinter.def.json msgctxt "machine_height description" @@ -175,7 +175,7 @@ msgstr "인쇄 가능 영역의 높이 (Z 방향)입니다. " #: fdmprinter.def.json msgctxt "machine_heated_bed label" msgid "Has Heated Build Plate" -msgstr "" +msgstr "가열된 빌드 플레이트가 있음" #: fdmprinter.def.json msgctxt "machine_heated_bed description" @@ -185,7 +185,7 @@ msgstr "기계에 가열 된 빌드 플레이트가 있는지 여부 " #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" -msgstr "" +msgstr "센터 원점" #: fdmprinter.def.json msgctxt "machine_center_is_zero description" @@ -195,7 +195,7 @@ msgstr "프린터의 \"0\" 위치의 X / Y 좌표가 인쇄 가능 영역의 중 #: fdmprinter.def.json msgctxt "machine_extruder_count label" msgid "Number of Extruders" -msgstr "" +msgstr "압출기의 수" #: fdmprinter.def.json msgctxt "machine_extruder_count description" @@ -205,7 +205,7 @@ msgstr "압출기 열차의 수. 압출기 트레인은 피더, 보우 덴 튜 #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter label" msgid "Outer nozzle diameter" -msgstr "" +msgstr "외부 노즐 지름" #: fdmprinter.def.json msgctxt "machine_nozzle_tip_outer_diameter description" @@ -215,7 +215,7 @@ msgstr "노즐 끝의 외경 " #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance label" msgid "Nozzle length" -msgstr "" +msgstr "노즐 길이" #: fdmprinter.def.json msgctxt "machine_nozzle_head_distance description" @@ -225,7 +225,7 @@ msgstr "노즐의 끝과 프린트 헤드의 가장 낮은 부분 사이의 높 #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle label" msgid "Nozzle angle" -msgstr "" +msgstr "노즐 각도" #: fdmprinter.def.json msgctxt "machine_nozzle_expansion_angle description" @@ -235,7 +235,7 @@ msgstr "노즐 끝 바로 위의 수평면과 원뿔 부분 사이의 각도입 #: fdmprinter.def.json msgctxt "machine_heat_zone_length label" msgid "Heat zone length" -msgstr "" +msgstr "가열 영역 길이" #: fdmprinter.def.json msgctxt "machine_heat_zone_length description" @@ -245,7 +245,7 @@ msgstr "노즐의 열이 필라멘트로 전달되는 노즐의 끝에서부터 #: fdmprinter.def.json msgctxt "machine_filament_park_distance label" msgid "Filament Park Distance" -msgstr "" +msgstr "필라멘트 park 거리" #: fdmprinter.def.json msgctxt "machine_filament_park_distance description" @@ -255,7 +255,7 @@ msgstr "압출기가 더 이상 사용되지 않을 때 필라멘트를 파킹 #: fdmprinter.def.json msgctxt "machine_nozzle_temp_enabled label" msgid "Enable Nozzle Temperature Control" -msgstr "" +msgstr "노즐 온도 조절 가능" #: fdmprinter.def.json msgctxt "machine_nozzle_temp_enabled description" @@ -265,7 +265,7 @@ msgstr "Cura에서 온도를 제어할지 여부. Cura 외부에서 노즐 온 #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed label" msgid "Heat up speed" -msgstr "" +msgstr "가열 속도" #: fdmprinter.def.json msgctxt "machine_nozzle_heat_up_speed description" @@ -275,7 +275,7 @@ msgstr "노즐이 가열되는 속도 (° C / s)는 일반적인 인쇄 온도 #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed label" msgid "Cool down speed" -msgstr "" +msgstr "냉각 속도" #: fdmprinter.def.json msgctxt "machine_nozzle_cool_down_speed description" @@ -285,7 +285,7 @@ msgstr "노즐이 냉각되는 속도 (° C / s)는 일반적인 인쇄 온도 #: fdmprinter.def.json msgctxt "machine_min_cool_heat_time_window label" msgid "Minimal Time Standby Temperature" -msgstr "" +msgstr "최소 대기 시간" #: fdmprinter.def.json msgctxt "machine_min_cool_heat_time_window description" @@ -295,7 +295,7 @@ msgstr "노즐이 냉각되기 전에 압출기가 비활성이어야하는 최 #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" msgid "Gcode flavour" -msgstr "" +msgstr "Gcode flavour" #: fdmprinter.def.json msgctxt "machine_gcode_flavor description" @@ -305,52 +305,52 @@ msgstr "생성 될 gcode 유형입니다. " #: fdmprinter.def.json msgctxt "machine_gcode_flavor option RepRap (Marlin/Sprinter)" msgid "Marlin" -msgstr "" +msgstr "Marlin" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option RepRap (Volumetric)" msgid "Marlin (Volumetric)" -msgstr "" +msgstr "Marlin(부피 측정법)" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option RepRap (RepRap)" msgid "RepRap" -msgstr "" +msgstr "RepRap" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option UltiGCode" msgid "Ultimaker 2" -msgstr "" +msgstr "Ultimaker 2" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option Griffin" msgid "Griffin" -msgstr "" +msgstr "그리핀" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option Makerbot" msgid "Makerbot" -msgstr "" +msgstr "Makerbot" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option BFB" msgid "Bits from Bytes" -msgstr "" +msgstr "바이트 수" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option MACH3" msgid "Mach3" -msgstr "" +msgstr "마하 3" #: fdmprinter.def.json msgctxt "machine_gcode_flavor option Repetier" msgid "Repetier" -msgstr "" +msgstr "반복기" #: fdmprinter.def.json msgctxt "machine_disallowed_areas label" msgid "Disallowed areas" -msgstr "" +msgstr "허용되지 않는 지역" #: fdmprinter.def.json msgctxt "machine_disallowed_areas description" @@ -360,7 +360,7 @@ msgstr "인쇄 헤드가있는 영역이있는 다각형 목록입니다. " #: fdmprinter.def.json msgctxt "nozzle_disallowed_areas label" msgid "Nozzle Disallowed Areas" -msgstr "" +msgstr "노즐 금지 구역" #: fdmprinter.def.json msgctxt "nozzle_disallowed_areas description" @@ -370,7 +370,7 @@ msgstr "노즐이 들어갈 수없는 영역이있는 다각형 목록입니다. #: fdmprinter.def.json msgctxt "machine_head_polygon label" msgid "Machine head polygon" -msgstr "" +msgstr "머신 헤드 폴리곤" #: fdmprinter.def.json msgctxt "machine_head_polygon description" @@ -380,7 +380,7 @@ msgstr "프린트 헤드의 2D 실루엣 (팬 캡 제외). " #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon label" msgid "Machine head & Fan polygon" -msgstr "" +msgstr "머신 헤드 및 팬 폴리곤" #: fdmprinter.def.json msgctxt "machine_head_with_fans_polygon description" @@ -390,7 +390,7 @@ msgstr "프린트 헤드의 2D 실루엣 (팬 뚜껑 포함). " #: fdmprinter.def.json msgctxt "gantry_height label" msgid "Gantry height" -msgstr "" +msgstr "갠트리 높이" #: fdmprinter.def.json msgctxt "gantry_height description" @@ -400,7 +400,7 @@ msgstr "노즐 끝과 갠트리 시스템 사이의 높이 차이 (X 및 Y 축). #: fdmprinter.def.json msgctxt "machine_nozzle_id label" msgid "Nozzle ID" -msgstr "" +msgstr "노즐 ID" #: fdmprinter.def.json msgctxt "machine_nozzle_id description" @@ -410,7 +410,7 @@ msgstr "\"AA 0.4\"및 \"BB 0.8\"과 같은 압출기 트레인의 노즐 ID. " #: fdmprinter.def.json msgctxt "machine_nozzle_size label" msgid "Nozzle Diameter" -msgstr "" +msgstr "노즐 지름" #: fdmprinter.def.json msgctxt "machine_nozzle_size description" @@ -420,7 +420,7 @@ msgstr "노즐의 내경. 비표준 노즐 크기를 사용할 때이 설정을 #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords label" msgid "Offset With Extruder" -msgstr "" +msgstr "압출기로 오프셋" #: fdmprinter.def.json msgctxt "machine_use_extruder_offset_to_offset_coords description" @@ -430,7 +430,7 @@ msgstr "압출기 오프셋을 좌표계에 적용하십시오. " #: fdmprinter.def.json msgctxt "extruder_prime_pos_z label" msgid "Extruder Prime Z Position" -msgstr "" +msgstr "압출기 프라임 Z 포지션" #: fdmprinter.def.json msgctxt "extruder_prime_pos_z description" @@ -440,7 +440,7 @@ msgstr "인쇄가 시작될 때 노즐이 끝나는 위치의 Z 좌표입니다. #: fdmprinter.def.json msgctxt "extruder_prime_pos_abs label" msgid "Absolute Extruder Prime Position" -msgstr "" +msgstr "독립 압출 기 프라임 포지션" #: fdmprinter.def.json msgctxt "extruder_prime_pos_abs description" @@ -450,7 +450,7 @@ msgstr "헤드의 마지막으로 알려진 위치에 상대적이 아닌 압출 #: fdmprinter.def.json msgctxt "machine_max_feedrate_x label" msgid "Maximum Speed X" -msgstr "" +msgstr "최대 속도 X" #: fdmprinter.def.json msgctxt "machine_max_feedrate_x description" @@ -460,7 +460,7 @@ msgstr "X 방향의 모터 최대 속도입니다." #: fdmprinter.def.json msgctxt "machine_max_feedrate_y label" msgid "Maximum Speed Y" -msgstr "" +msgstr "최대 속도 Y" #: fdmprinter.def.json msgctxt "machine_max_feedrate_y description" @@ -470,7 +470,7 @@ msgstr "Y 방향 모터의 최대 속도입니다." #: fdmprinter.def.json msgctxt "machine_max_feedrate_z label" msgid "Maximum Speed Z" -msgstr "" +msgstr "최대 속도 Z" #: fdmprinter.def.json msgctxt "machine_max_feedrate_z description" @@ -480,7 +480,7 @@ msgstr "Z 방향의 모터 최대 속도입니다. " #: fdmprinter.def.json msgctxt "machine_max_feedrate_e label" msgid "Maximum Feedrate" -msgstr "" +msgstr "최대 이송 속도" #: fdmprinter.def.json msgctxt "machine_max_feedrate_e description" @@ -490,7 +490,7 @@ msgstr "필라멘트의 최대 속도. " #: fdmprinter.def.json msgctxt "machine_max_acceleration_x label" msgid "Maximum Acceleration X" -msgstr "" +msgstr "최대 가속도 X" #: fdmprinter.def.json msgctxt "machine_max_acceleration_x description" @@ -500,7 +500,7 @@ msgstr "X 방향 모터의 최대 가속도. " #: fdmprinter.def.json msgctxt "machine_max_acceleration_y label" msgid "Maximum Acceleration Y" -msgstr "" +msgstr "최대 가속도 Y" #: fdmprinter.def.json msgctxt "machine_max_acceleration_y description" @@ -510,7 +510,7 @@ msgstr "Y 방향 모터의 최대 가속도. " #: fdmprinter.def.json msgctxt "machine_max_acceleration_z label" msgid "Maximum Acceleration Z" -msgstr "" +msgstr "최대 가속도 Z" #: fdmprinter.def.json msgctxt "machine_max_acceleration_z description" @@ -520,7 +520,7 @@ msgstr "Z 방향 모터의 최대 가속도. " #: fdmprinter.def.json msgctxt "machine_max_acceleration_e label" msgid "Maximum Filament Acceleration" -msgstr "" +msgstr "최대 필라멘트 가속도" #: fdmprinter.def.json msgctxt "machine_max_acceleration_e description" @@ -530,7 +530,7 @@ msgstr "필라멘트의 모터에 대한 최대 가속도. " #: fdmprinter.def.json msgctxt "machine_acceleration label" msgid "Default Acceleration" -msgstr "" +msgstr "기본 가속도" #: fdmprinter.def.json msgctxt "machine_acceleration description" @@ -540,7 +540,7 @@ msgstr "프린트 헤드 이동의 기본 가속. " #: fdmprinter.def.json msgctxt "machine_max_jerk_xy label" msgid "Default X-Y Jerk" -msgstr "" +msgstr "기본 X-Y 저크" #: fdmprinter.def.json msgctxt "machine_max_jerk_xy description" @@ -550,7 +550,7 @@ msgstr "수평면에서의 이동을위한 기본 저크. " #: fdmprinter.def.json msgctxt "machine_max_jerk_z label" msgid "Default Z Jerk" -msgstr "" +msgstr "기본 Z Jerk" #: fdmprinter.def.json msgctxt "machine_max_jerk_z description" @@ -560,7 +560,7 @@ msgstr "Z 방향 모터의 기본 저크. " #: fdmprinter.def.json msgctxt "machine_max_jerk_e label" msgid "Default Filament Jerk" -msgstr "" +msgstr "기본 필라멘트 저크" #: fdmprinter.def.json msgctxt "machine_max_jerk_e description" @@ -570,7 +570,7 @@ msgstr "필라멘트 모터의 기본 저크. " #: fdmprinter.def.json msgctxt "machine_minimum_feedrate label" msgid "Minimum Feedrate" -msgstr "" +msgstr "최소 이송 속도" #: fdmprinter.def.json msgctxt "machine_minimum_feedrate description" @@ -580,7 +580,7 @@ msgstr "프린트 헤드의 최소 이동 속도. " #: fdmprinter.def.json msgctxt "resolution label" msgid "Quality" -msgstr "" +msgstr "품질" #: fdmprinter.def.json msgctxt "resolution description" @@ -590,7 +590,7 @@ msgstr "인쇄물의 해상도에 영향을 미치는 모든 설정. 이러한 #: fdmprinter.def.json msgctxt "layer_height label" msgid "Layer Height" -msgstr "" +msgstr "층 높이" #: fdmprinter.def.json msgctxt "layer_height description" @@ -600,17 +600,42 @@ msgstr "각 층의 높이 (mm)입니다. 값이 높을수록 해상도가 낮을 #: fdmprinter.def.json msgctxt "layer_height_0 label" msgid "Initial Layer Height" -msgstr "" +msgstr "초기 레이어 높이" #: fdmprinter.def.json msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "초기 레이어의 높이 (mm)입니다. 두꺼운 초기 레이어는 빌드 플레이트에 쉽게 접착합니다. " +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "슬라이싱 허용 오차" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "레이어를 대각선 서피스로 슬라이스하는 방법 레이어 영역은 레이어의 중앙이 서피스와 교차하는 부분(중간)을 기준으로 생성됩니다. 또는 각 레이어에 레이어의 높이 전체의 볼륨에 들어가는 영역(배타)이나 레이어 안의 어느 지점에 들어가는 영역(중복)이 있을 수 있습니다. 배타는 가장 많은 디테일을 포함하고, 중복은 베스트 피트를 만들 수 있으며, 중간은 처리 시간이 가장 짧습니다." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "중간" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "배타" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "중복" + #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" -msgstr "" +msgstr "선의 폭" #: fdmprinter.def.json msgctxt "line_width description" @@ -620,7 +645,7 @@ msgstr "한 줄의 너비. 일반적으로 각 라인의 너비는 노즐 폭과 #: fdmprinter.def.json msgctxt "wall_line_width label" msgid "Wall Line Width" -msgstr "" +msgstr "벽 선 너비" #: fdmprinter.def.json msgctxt "wall_line_width description" @@ -630,7 +655,7 @@ msgstr "단일 벽 선의 너비입니다. " #: fdmprinter.def.json msgctxt "wall_line_width_0 label" msgid "Outer Wall Line Width" -msgstr "" +msgstr "바깥 선 선폭" #: fdmprinter.def.json msgctxt "wall_line_width_0 description" @@ -640,7 +665,7 @@ msgstr "가장 바깥 쪽 벽 선의 너비. 이 값을 낮춤으로써 높은 #: fdmprinter.def.json msgctxt "wall_line_width_x label" msgid "Inner Wall(s) Line Width" -msgstr "" +msgstr "내부 벽 선 너비" #: fdmprinter.def.json msgctxt "wall_line_width_x description" @@ -650,7 +675,7 @@ msgstr "가장 바깥 쪽 벽 선을 제외한 모든 벽 선에 대해 단일 #: fdmprinter.def.json msgctxt "roofing_line_width label" msgid "Top Surface Skin Line Width" -msgstr "" +msgstr "상단 표면 스킨 선 너비" #: fdmprinter.def.json msgctxt "roofing_line_width description" @@ -660,7 +685,7 @@ msgstr "인쇄 상단 부분의 한 줄 너비. " #: fdmprinter.def.json msgctxt "skin_line_width label" msgid "Top/Bottom Line Width" -msgstr "" +msgstr "상단 / 하단 라인 폭" #: fdmprinter.def.json msgctxt "skin_line_width description" @@ -670,7 +695,7 @@ msgstr "단일 위쪽 / 아래쪽 선의 너비입니다. " #: fdmprinter.def.json msgctxt "infill_line_width label" msgid "Infill Line Width" -msgstr "" +msgstr "Infill 선 폭" #: fdmprinter.def.json msgctxt "infill_line_width description" @@ -680,7 +705,7 @@ msgstr "단일 infill 라인의 너비. " #: fdmprinter.def.json msgctxt "skirt_brim_line_width label" msgid "Skirt/Brim Line Width" -msgstr "" +msgstr "Skirt/Brim 선 너비" #: fdmprinter.def.json msgctxt "skirt_brim_line_width description" @@ -690,7 +715,7 @@ msgstr "단일 스커트 또는 고리 선의 너비. " #: fdmprinter.def.json msgctxt "support_line_width label" msgid "Support Line Width" -msgstr "" +msgstr "지지대 선 너비" #: fdmprinter.def.json msgctxt "support_line_width description" @@ -700,7 +725,7 @@ msgstr "단일 지원 구조 선의 너비입니다. " #: fdmprinter.def.json msgctxt "support_interface_line_width label" msgid "Support Interface Line Width" -msgstr "" +msgstr "지지대 인터페이스 선 너비" #: fdmprinter.def.json msgctxt "support_interface_line_width description" @@ -710,7 +735,7 @@ msgstr "지붕 또는 바닥을지지하는 한 줄의 폭. " #: fdmprinter.def.json msgctxt "support_roof_line_width label" msgid "Support Roof Line Width" -msgstr "" +msgstr "지지대 위쪽 선 너비" #: fdmprinter.def.json msgctxt "support_roof_line_width description" @@ -720,7 +745,7 @@ msgstr "단일 지원 지붕 선의 너비. " #: fdmprinter.def.json msgctxt "support_bottom_line_width label" msgid "Support Floor Line Width" -msgstr "" +msgstr "지지대 바닥 선 너비" #: fdmprinter.def.json msgctxt "support_bottom_line_width description" @@ -730,7 +755,7 @@ msgstr "단일 지원 플로어 라인의 너비. " #: fdmprinter.def.json msgctxt "prime_tower_line_width label" msgid "Prime Tower Line Width" -msgstr "" +msgstr "프라임 타워 라인 폭" #: fdmprinter.def.json msgctxt "prime_tower_line_width description" @@ -740,7 +765,7 @@ msgstr "단일 주요 타워 선의 너비. " #: fdmprinter.def.json msgctxt "initial_layer_line_width_factor label" msgid "Initial Layer Line Width" -msgstr "" +msgstr "초기 레이어 선 너비" #: fdmprinter.def.json msgctxt "initial_layer_line_width_factor description" @@ -750,17 +775,27 @@ msgstr "첫 번째 레이어의 선 너비 승수입니다. 이것을 늘리면 #: fdmprinter.def.json msgctxt "shell label" msgid "Shell" -msgstr "" +msgstr "내관" #: fdmprinter.def.json msgctxt "shell description" msgid "Shell" -msgstr "겉면 " +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" -msgstr "" +msgstr "외벽 압출기" #: fdmprinter.def.json msgctxt "wall_0_extruder_nr description" @@ -769,8 +804,8 @@ msgstr "외벽 인쇄에 사용되는 압출기 트레인. 이것은 다중 압 #: fdmprinter.def.json msgctxt "wall_x_extruder_nr label" -msgid "Inner Walls Extruder" -msgstr "" +msgid "Inner Wall Extruder" +msgstr "내벽 압출기" #: fdmprinter.def.json msgctxt "wall_x_extruder_nr description" @@ -780,7 +815,7 @@ msgstr "내벽 인쇄에 사용되는 압출기 트레인. 이것은 다중 압 #: fdmprinter.def.json msgctxt "wall_thickness label" msgid "Wall Thickness" -msgstr "" +msgstr "벽 두께" #: fdmprinter.def.json msgctxt "wall_thickness description" @@ -790,7 +825,7 @@ msgstr "가로 방향의 벽 두께입니다. 이 값을 벽 선 너비로 나 #: fdmprinter.def.json msgctxt "wall_line_count label" msgid "Wall Line Count" -msgstr "" +msgstr "벽 선 조사" #: fdmprinter.def.json msgctxt "wall_line_count description" @@ -800,7 +835,7 @@ msgstr "벽의 수. 벽 두께로 계산할 때이 값은 정수로 반올림됩 #: fdmprinter.def.json msgctxt "wall_0_wipe_dist label" msgid "Outer Wall Wipe Distance" -msgstr "" +msgstr "외벽 Wipe 거리" #: fdmprinter.def.json msgctxt "wall_0_wipe_dist description" @@ -810,7 +845,7 @@ msgstr "바깥 쪽 벽 뒤에 삽입 된 이동 거리. Z 솔기를 더 잘 숨 #: fdmprinter.def.json msgctxt "roofing_extruder_nr label" msgid "Top Surface Skin Extruder" -msgstr "" +msgstr "상단 표면 피부 압출기" #: fdmprinter.def.json msgctxt "roofing_extruder_nr description" @@ -820,7 +855,7 @@ msgstr "압출기 트레인은 최상층의 스킨을 인쇄하는 데 사용됩 #: fdmprinter.def.json msgctxt "roofing_layer_count label" msgid "Top Surface Skin Layers" -msgstr "" +msgstr "상단 표면 스킨 레이어" #: fdmprinter.def.json msgctxt "roofing_layer_count description" @@ -830,7 +865,7 @@ msgstr "최상층의 스킨 층의 수. 일반적으로 고품질 맨 위 표면 #: fdmprinter.def.json msgctxt "roofing_pattern label" msgid "Top Surface Skin Pattern" -msgstr "" +msgstr "탑 표면 스킨 패턴" #: fdmprinter.def.json msgctxt "roofing_pattern description" @@ -840,22 +875,22 @@ msgstr "최상위 레이어의 패턴입니다. " #: fdmprinter.def.json msgctxt "roofing_pattern option lines" msgid "Lines" -msgstr "" +msgstr "윤곽" #: fdmprinter.def.json msgctxt "roofing_pattern option concentric" msgid "Concentric" -msgstr "" +msgstr "동심원의" #: fdmprinter.def.json msgctxt "roofing_pattern option zigzag" msgid "Zig Zag" -msgstr "" +msgstr "지그재그" #: fdmprinter.def.json msgctxt "roofing_angles label" msgid "Top Surface Skin Line Directions" -msgstr "" +msgstr "상단 표면 스킨 라인 방향" #: fdmprinter.def.json msgctxt "roofing_angles description" @@ -865,7 +900,7 @@ msgstr "상단 표면 스킨 층이 선 또는 지그재그 패턴을 사용할 #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr label" msgid "Top/Bottom Extruder" -msgstr "" +msgstr "상단 / 하단 압출기" #: fdmprinter.def.json msgctxt "top_bottom_extruder_nr description" @@ -875,7 +910,7 @@ msgstr "상단 및 하단 스킨 인쇄에 사용되는 압출기 트레인. 이 #: fdmprinter.def.json msgctxt "top_bottom_thickness label" msgid "Top/Bottom Thickness" -msgstr "" +msgstr "상단 / 하단 두께" #: fdmprinter.def.json msgctxt "top_bottom_thickness description" @@ -885,7 +920,7 @@ msgstr "인쇄물의 상단 / 하단 레이어의 두께. 이 값을 레이어 #: fdmprinter.def.json msgctxt "top_thickness label" msgid "Top Thickness" -msgstr "" +msgstr "탑 두께" #: fdmprinter.def.json msgctxt "top_thickness description" @@ -895,7 +930,7 @@ msgstr "인쇄물의 상단 레이어의 두께입니다. 이 값을 레이어 #: fdmprinter.def.json msgctxt "top_layers label" msgid "Top Layers" -msgstr "" +msgstr "상단 레이어" #: fdmprinter.def.json msgctxt "top_layers description" @@ -905,7 +940,7 @@ msgstr "인쇄물의 상단 레이어의 두께입니다. 이 값과 레이어 #: fdmprinter.def.json msgctxt "bottom_thickness label" msgid "Bottom Thickness" -msgstr "" +msgstr "바닥 두께" #: fdmprinter.def.json msgctxt "bottom_thickness description" @@ -915,7 +950,7 @@ msgstr "인쇄물의 아래쪽 레이어의 두께입니다. 이 값을 레이 #: fdmprinter.def.json msgctxt "bottom_layers label" msgid "Bottom Layers" -msgstr "" +msgstr "하단 레이어" #: fdmprinter.def.json msgctxt "bottom_layers description" @@ -925,7 +960,7 @@ msgstr "아래층의 수. 바닥 두께로 계산할 때이 값은 정수로 반 #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" -msgstr "" +msgstr "상단 / 하단 패턴" #: fdmprinter.def.json msgctxt "top_bottom_pattern description" @@ -935,22 +970,22 @@ msgstr "상단 / 하단 레이어의 패턴. " #: fdmprinter.def.json msgctxt "top_bottom_pattern option lines" msgid "Lines" -msgstr "" +msgstr "윤곽" #: fdmprinter.def.json msgctxt "top_bottom_pattern option concentric" msgid "Concentric" -msgstr "" +msgstr "동심원의" #: fdmprinter.def.json msgctxt "top_bottom_pattern option zigzag" msgid "Zig Zag" -msgstr "" +msgstr "지그재그" #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 label" msgid "Bottom Pattern Initial Layer" -msgstr "" +msgstr "하단 패턴 초기 레이어" #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 description" @@ -960,22 +995,22 @@ msgstr "첫 번째 레이어의 인쇄 아래쪽에있는 패턴입니다. " #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 option lines" msgid "Lines" -msgstr "" +msgstr "윤곽" #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 option concentric" msgid "Concentric" -msgstr "" +msgstr "동심원의" #: fdmprinter.def.json msgctxt "top_bottom_pattern_0 option zigzag" msgid "Zig Zag" -msgstr "" +msgstr "지그재그" #: fdmprinter.def.json msgctxt "skin_angles label" msgid "Top/Bottom Line Directions" -msgstr "" +msgstr "상단 / 하단 라인 길 찾기" #: fdmprinter.def.json msgctxt "skin_angles description" @@ -985,7 +1020,7 @@ msgstr "상단 / 하단 레이어가 선 또는 지그재그 패턴을 사용할 #: fdmprinter.def.json msgctxt "wall_0_inset label" msgid "Outer Wall Inset" -msgstr "" +msgstr "외벽 삽입" #: fdmprinter.def.json msgctxt "wall_0_inset description" @@ -995,7 +1030,7 @@ msgstr "외벽의 경로에 삽입이 적용됩니다. 외벽이 노즐보다 #: fdmprinter.def.json msgctxt "outer_inset_first label" msgid "Outer Before Inner Walls" -msgstr "" +msgstr "내벽 앞부분 바깥 쪽" #: fdmprinter.def.json msgctxt "outer_inset_first description" @@ -1005,7 +1040,7 @@ msgstr "사용 가능한 경우 외부에서 내부로 벽을 인쇄합니다. #: fdmprinter.def.json msgctxt "alternate_extra_perimeter label" msgid "Alternate Extra Wall" -msgstr "" +msgstr "대체 여분 벽" #: fdmprinter.def.json msgctxt "alternate_extra_perimeter description" @@ -1015,7 +1050,7 @@ msgstr "다른 모든 레이어에 여분의 벽을 인쇄합니다. 이렇게 #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_enabled label" msgid "Compensate Wall Overlaps" -msgstr "" +msgstr "벽 겹침 보정" #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_enabled description" @@ -1025,7 +1060,7 @@ msgstr "이미 벽이있는 곳에 인쇄중인 벽의 부분에 대한 흐름 #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_0_enabled label" msgid "Compensate Outer Wall Overlaps" -msgstr "" +msgstr "외벽 겹침 보정" #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_0_enabled description" @@ -1035,7 +1070,7 @@ msgstr "이미 벽이있는 곳에 인쇄되는 외벽 부분에 대한 흐름 #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_x_enabled label" msgid "Compensate Inner Wall Overlaps" -msgstr "" +msgstr "내부 벽 겹침 보정" #: fdmprinter.def.json msgctxt "travel_compensate_overlapping_walls_x_enabled description" @@ -1045,7 +1080,7 @@ msgstr "이미 벽이있는 곳에 인쇄되는 내부 벽 부분에 대한 흐 #: fdmprinter.def.json msgctxt "fill_perimeter_gaps label" msgid "Fill Gaps Between Walls" -msgstr "" +msgstr "벽 사이의 간격 채우기" #: fdmprinter.def.json msgctxt "fill_perimeter_gaps description" @@ -1055,17 +1090,17 @@ msgstr "벽이 딱 맞지 않는 벽 사이의 간격을 채 웁니다. " #: fdmprinter.def.json msgctxt "fill_perimeter_gaps option nowhere" msgid "Nowhere" -msgstr "" +msgstr "아무데도" #: fdmprinter.def.json msgctxt "fill_perimeter_gaps option everywhere" msgid "Everywhere" -msgstr "" +msgstr "어디에나" #: fdmprinter.def.json msgctxt "fill_outline_gaps label" msgid "Print Thin Walls" -msgstr "" +msgstr "얇은 벽 인쇄" #: fdmprinter.def.json msgctxt "fill_outline_gaps description" @@ -1075,7 +1110,7 @@ msgstr "노즐 크기보다 수평으로 더 얇은 모델 조각을 인쇄하 #: fdmprinter.def.json msgctxt "xy_offset label" msgid "Horizontal Expansion" -msgstr "" +msgstr "수평 확장" #: fdmprinter.def.json msgctxt "xy_offset description" @@ -1085,7 +1120,7 @@ msgstr "각 레이어의 모든 다각형에 적용된 오프셋의 양입니다 #: fdmprinter.def.json msgctxt "xy_offset_layer_0 label" msgid "Initial Layer Horizontal Expansion" -msgstr "" +msgstr "초기 레이어 수평 확장" #: fdmprinter.def.json msgctxt "xy_offset_layer_0 description" @@ -1095,7 +1130,7 @@ msgstr "첫 번째 레이어의 모든 다각형에 적용된 오프셋의 양 #: fdmprinter.def.json msgctxt "z_seam_type label" msgid "Z Seam Alignment" -msgstr "" +msgstr "Z Seam Alignment" #: fdmprinter.def.json msgctxt "z_seam_type description" @@ -1105,27 +1140,27 @@ msgstr "레이어의 각 패스의 시작점입니다. 연속 레이어의 패 #: fdmprinter.def.json msgctxt "z_seam_type option back" msgid "User Specified" -msgstr "" +msgstr "사용자 지정" #: fdmprinter.def.json msgctxt "z_seam_type option shortest" msgid "Shortest" -msgstr "" +msgstr "최단" #: fdmprinter.def.json msgctxt "z_seam_type option random" msgid "Random" -msgstr "" +msgstr "랜덤" #: fdmprinter.def.json msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" -msgstr "" +msgstr "날카로운 모서리" #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" -msgstr "" +msgstr "Z 경계선 X" #: fdmprinter.def.json msgctxt "z_seam_x description" @@ -1135,7 +1170,7 @@ msgstr "레이어의 각 파트 인쇄를 시작할 위치 근처의 X 좌표입 #: fdmprinter.def.json msgctxt "z_seam_y label" msgid "Z Seam Y" -msgstr "" +msgstr "Z 경계선 Y" #: fdmprinter.def.json msgctxt "z_seam_y description" @@ -1145,37 +1180,37 @@ msgstr "레이어의 각 부분을 인쇄 할 위치 근처의 위치에 대한 #: 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" msgid "Z Seam Relative" -msgstr "" +msgstr "Z 관련있는 경계선" #: fdmprinter.def.json msgctxt "z_seam_relative description" @@ -1185,7 +1220,7 @@ msgstr "활성화 된 경우 z 심 좌표는 각 부품의 중심을 기준으 #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" msgid "Ignore Small Z Gaps" -msgstr "" +msgstr "작은 Z 간격 무시" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" @@ -1195,17 +1230,117 @@ msgstr "모델에 수직 간격이 작 으면이 좁은 공간에서 상단 및 #: fdmprinter.def.json msgctxt "skin_outline_count label" msgid "Extra Skin Wall Count" -msgstr "" +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 "ironing_enabled label" +msgid "Enable Ironing" +msgstr "다림질 사용" + +#: fdmprinter.def.json +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" +msgstr "다림질 패턴" + +#: fdmprinter.def.json +msgctxt "ironing_pattern description" +msgid "The pattern to use for ironing top surfaces." +msgstr "윗면을 다림질 할 때 사용하는 패턴. " + +#: fdmprinter.def.json +msgctxt "ironing_pattern option concentric" +msgid "Concentric" +msgstr "동심원의" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option zigzag" +msgid "Zig Zag" +msgstr "지그재그" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing label" +msgid "Ironing Line Spacing" +msgstr "다림질 라인 간격" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing description" +msgid "The distance between the lines of ironing." +msgstr "다림질 라인 사이의 거리. " + +#: fdmprinter.def.json +msgctxt "ironing_flow label" +msgid "Ironing Flow" +msgstr "다림질 과정" + +#: fdmprinter.def.json +msgctxt "ironing_flow description" +msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." +msgstr "다림질하는 동안 보통의 피부 라인을 기준으로 한 재료의 양. 노즐을 가득 채우면 윗면의 틈새가 채워지지만 표면의 과도한 돌출과 틈이 너무 많이 생깁니다. " + +#: fdmprinter.def.json +msgctxt "ironing_inset label" +msgid "Ironing Inset" +msgstr "다림질 삽입" + +#: fdmprinter.def.json +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 "다림질 Jerk" + +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "다림질을하는 동안 최대 순간 속도 변화. " + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" -msgstr "" +msgstr "충진" #: fdmprinter.def.json msgctxt "infill description" @@ -1215,7 +1350,7 @@ msgstr "충진 " #: fdmprinter.def.json msgctxt "infill_extruder_nr label" msgid "Infill Extruder" -msgstr "" +msgstr "충진 압출기" #: fdmprinter.def.json msgctxt "infill_extruder_nr description" @@ -1225,17 +1360,17 @@ msgstr "충진용 인쇄에 사용되는 압출기 트레인. 이것은 다중 #: fdmprinter.def.json msgctxt "infill_sparse_density label" msgid "Infill Density" -msgstr "" +msgstr "충진 밀도" #: fdmprinter.def.json msgctxt "infill_sparse_density description" msgid "Adjusts the density of infill of the print." -msgstr "인쇄물의 충진율를 조절합니다." +msgstr "인쇄물의 충진을 조절합니다." #: fdmprinter.def.json msgctxt "infill_line_distance label" msgid "Infill Line Distance" -msgstr "" +msgstr "충진 선간 거리" #: fdmprinter.def.json msgctxt "infill_line_distance description" @@ -1245,97 +1380,122 @@ msgstr "인쇄 된 충진 선 사이의 거리. 이 설정은 충전 밀도 및 #: fdmprinter.def.json msgctxt "infill_pattern label" msgid "Infill Pattern" -msgstr "" +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 "인쇄물의 충진재 패턴. 라인과 지그재그는 대체 층의 스필 방향을 바꾸어 재료비를 줄입니다. 그리드, 삼각형, 큐빅, 옥텟, 쿼터 큐빅 및 동심원 패턴이 모든 레이어에 완전히 인쇄됩니다. 큐빅, 쿼터 큐빅 및 옥 테트 필은 각 레이어에 따라 변경되어 각 방향에 대해보다 균등 한 강도 분포를 제공합니다. " +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, tri-hexagon, cubic, octet, quarter cubic, cross 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 "프린트 충진 재료의 패턴입니다. 선과 갈지자형 충진이 레이어를 하나 걸러서 방향을 바꾸므로 재료비가 절감됩니다. 격자, 삼각형, 삼육각형, 입방체, 옥텟, 4분 입방체, 십자, 동심원 패턴이 레이어마다 완전히 인쇄됩니다. 입방체, 4분 입방체, 옥텟 충진이 레이어마다 변경되므로 각 방향으로 힘이 더 균등하게 분산됩니다." #: fdmprinter.def.json msgctxt "infill_pattern option grid" msgid "Grid" -msgstr "" +msgstr "그리드" #: fdmprinter.def.json msgctxt "infill_pattern option lines" msgid "Lines" -msgstr "" +msgstr "윤곽" #: fdmprinter.def.json msgctxt "infill_pattern option triangles" msgid "Triangles" -msgstr "" +msgstr "삼각형" + +#: fdmprinter.def.json +msgctxt "infill_pattern option trihexagon" +msgid "Tri-Hexagon" +msgstr "삼육각형" #: fdmprinter.def.json msgctxt "infill_pattern option cubic" msgid "Cubic" -msgstr "" +msgstr "입방체" #: fdmprinter.def.json msgctxt "infill_pattern option cubicsubdiv" msgid "Cubic Subdivision" -msgstr "" +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" msgid "Concentric" -msgstr "" +msgstr "동심원의" #: fdmprinter.def.json msgctxt "infill_pattern option concentric_3d" msgid "Concentric 3D" -msgstr "" +msgstr "동심원 3D" #: fdmprinter.def.json msgctxt "infill_pattern option zigzag" msgid "Zig Zag" -msgstr "" +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 "내부 벽의 모양을 따르는 선을 사용하여 충전 패턴이 내부 벽과 만나는 끝을 연결하십시오. 이 설정을 사용하면 벽에 충전재가 잘 밀착되고 수직 표면의 품질에 영향을 줄 수 있습니다. 이 설정을 사용하지 않으면 사용되는 재료의 양이 줄어 듭니다. " +msgid "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." +msgstr "내벽의 형태를 따라가는 선을 사용하여 충진 패턴과 내벽이 만나는 끝을 연결합니다. 이 설정을 사용하면 충진이 벽에 더 잘 점착되어 충진이 수직 서피스의 품질에 미치는 영향을 줄일 수 있습니다. 이 설정을 해제하면 사용되는 재료의 양이 줄어듭니다." #: fdmprinter.def.json msgctxt "infill_angles label" msgid "Infill Line Directions" -msgstr "" +msgstr "충진 선 방향" #: fdmprinter.def.json msgctxt "infill_angles description" msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns)." msgstr "사용할 정수선 방향 목록. 목록의 요소는 레이어가 진행됨에 따라 순차적으로 사용되며 목록의 끝에 도달하면 처음부터 다시 시작됩니다. 목록 항목은 쉼표로 구분되며 전체 목록은 대괄호 안에 들어 있습니다. 기본값은 전통적인 기본 각도 (선 및 지그재그 패턴의 경우 45 및 135도, 다른 모든 패턴의 경우 45도)를 사용한다는 의미의 빈 목록입니다. " +#: fdmprinter.def.json +msgctxt "infill_offset_x label" +msgid "Infill X Offset" +msgstr "충진 X 오프셋" + +#: fdmprinter.def.json +msgctxt "infill_offset_x description" +msgid "The infill pattern is offset this distance along the X axis." +msgstr "충진 패턴이 X축을 따라 이 거리만큼 이동합니다." + +#: fdmprinter.def.json +msgctxt "infill_offset_y label" +msgid "Infill Y Offset" +msgstr "충진 Y 오프셋" + +#: fdmprinter.def.json +msgctxt "infill_offset_y description" +msgid "The infill pattern is offset this distance along the Y axis." +msgstr "충진 패턴이 Y축을 따라 이 거리만큼 이동합니다." + #: fdmprinter.def.json msgctxt "sub_div_rad_add label" msgid "Cubic Subdivision Shell" -msgstr "" +msgstr "입방 세분 내관" #: fdmprinter.def.json msgctxt "sub_div_rad_add description" @@ -1345,7 +1505,7 @@ msgstr "모델의 경계를 확인하기 위해 각 큐브의 중심에서 반 #: fdmprinter.def.json msgctxt "infill_overlap label" msgid "Infill Overlap Percentage" -msgstr "" +msgstr "충진 오버랩 비율" #: fdmprinter.def.json msgctxt "infill_overlap description" @@ -1355,7 +1515,7 @@ msgstr "충진재와 벽 사이의 겹침 정도. 약간 겹치면 벽이 충전 #: fdmprinter.def.json msgctxt "infill_overlap_mm label" msgid "Infill Overlap" -msgstr "" +msgstr "충진 오버랩" #: fdmprinter.def.json msgctxt "infill_overlap_mm description" @@ -1365,7 +1525,7 @@ msgstr "충진재와 벽 사이의 겹침 정도. 약간 겹치면 벽이 충전 #: fdmprinter.def.json msgctxt "skin_overlap label" msgid "Skin Overlap Percentage" -msgstr "" +msgstr "피부 겹침 비율" #: fdmprinter.def.json msgctxt "skin_overlap description" @@ -1375,7 +1535,7 @@ msgstr "선 두께의 백분율로 스킨과 벽 사이의 겹치는 정도입 #: fdmprinter.def.json msgctxt "skin_overlap_mm label" msgid "Skin Overlap" -msgstr "" +msgstr "피부 겹침" #: fdmprinter.def.json msgctxt "skin_overlap_mm description" @@ -1385,7 +1545,7 @@ msgstr "피부와 벽 사이의 겹침 정도입니다. 약간 겹치면 벽이 #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" -msgstr "" +msgstr "충진 Wipe 거리" #: fdmprinter.def.json msgctxt "infill_wipe_dist description" @@ -1395,7 +1555,7 @@ msgstr "각 충진 라인 다음에 삽입 된 이동 이동 거리. infill 스 #: fdmprinter.def.json msgctxt "infill_sparse_thickness label" msgid "Infill Layer Thickness" -msgstr "" +msgstr "충진 층 두께" #: fdmprinter.def.json msgctxt "infill_sparse_thickness description" @@ -1405,7 +1565,7 @@ msgstr "충진물 층의 두께. 이 값은 항상 레이어 높이의 배수 #: fdmprinter.def.json msgctxt "gradual_infill_steps label" msgid "Gradual Infill Steps" -msgstr "" +msgstr "점진적인 충진 단계" #: fdmprinter.def.json msgctxt "gradual_infill_steps description" @@ -1415,7 +1575,7 @@ msgstr "상면 아래로 갈 때 충진 밀도를 반으로 줄이는 횟수입 #: fdmprinter.def.json msgctxt "gradual_infill_step_height label" msgid "Gradual Infill Step Height" -msgstr "" +msgstr "점진적인 충진 단계 높이" #: fdmprinter.def.json msgctxt "gradual_infill_step_height description" @@ -1425,7 +1585,7 @@ msgstr "밀도의 절반으로 전환하기 전에 주어진 밀도의 infill #: fdmprinter.def.json msgctxt "infill_before_walls label" msgid "Infill Before Walls" -msgstr "" +msgstr "벽 앞에 충진" #: fdmprinter.def.json msgctxt "infill_before_walls description" @@ -1435,7 +1595,7 @@ msgstr "벽을 인쇄하기 전에 충진물을 인쇄하십시오. 벽을 먼 #: fdmprinter.def.json msgctxt "min_infill_area label" msgid "Minimum Infill Area" -msgstr "" +msgstr "최소 충진 지역" #: fdmprinter.def.json msgctxt "min_infill_area description" @@ -1445,7 +1605,7 @@ msgstr "이보다 작은 충진물 영역을 생성하지 마십시오 (대신 #: fdmprinter.def.json msgctxt "skin_preshrink label" msgid "Skin Removal Width" -msgstr "" +msgstr "피부 제거 폭" #: fdmprinter.def.json msgctxt "skin_preshrink description" @@ -1455,7 +1615,7 @@ msgstr "제거 할 외부스킨 영역의 가장 큰 너비. 이 값보다 작 #: fdmprinter.def.json msgctxt "top_skin_preshrink label" msgid "Top Skin Removal Width" -msgstr "" +msgstr "상단 피부 제거 폭" #: fdmprinter.def.json msgctxt "top_skin_preshrink description" @@ -1465,7 +1625,7 @@ msgstr "제거 할 상단 스킨 영역의 가장 큰 너비. 이 값보다 작 #: fdmprinter.def.json msgctxt "bottom_skin_preshrink label" msgid "Bottom Skin Removal Width" -msgstr "" +msgstr "밑면 피부 제거 폭" #: fdmprinter.def.json msgctxt "bottom_skin_preshrink description" @@ -1475,7 +1635,7 @@ msgstr "제거 할 바닥 스킨 영역의 최대 너비. 이 값보다 작은 #: fdmprinter.def.json msgctxt "expand_skins_expand_distance label" msgid "Skin Expand Distance" -msgstr "" +msgstr "피부 확장 거리" #: fdmprinter.def.json msgctxt "expand_skins_expand_distance description" @@ -1485,7 +1645,7 @@ msgstr "스킨이 infill로 확장되는 거리입니다. 값이 높을수록 #: 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" @@ -1495,7 +1655,7 @@ msgstr "상단 스킨의 거리가 infill로 확장됩니다. 값이 높을수 #: 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" @@ -1505,7 +1665,7 @@ msgstr "바닥 스킨의 거리가 infill로 확장됩니다. 값이 높을수 #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion label" msgid "Maximum Skin Angle for Expansion" -msgstr "" +msgstr "확장을 위한 최대 피부 각" #: fdmprinter.def.json msgctxt "max_skin_angle_for_expansion description" @@ -1515,7 +1675,7 @@ msgstr "이 설정보다 큰 각도로 객체의 상단 및 또는 하단 표면 #: fdmprinter.def.json msgctxt "min_skin_width_for_expansion label" msgid "Minimum Skin Width for Expansion" -msgstr "" +msgstr "확장을 위한 최소 피부 폭" #: fdmprinter.def.json msgctxt "min_skin_width_for_expansion description" @@ -1525,7 +1685,7 @@ msgstr "이보다 좁은 스킨 영역은 확장되지 않습니다. 이렇게 #: fdmprinter.def.json msgctxt "material label" msgid "Material" -msgstr "" +msgstr "자재" #: fdmprinter.def.json msgctxt "material description" @@ -1535,7 +1695,7 @@ msgstr "재료 " #: fdmprinter.def.json msgctxt "material_flow_dependent_temperature label" msgid "Auto Temperature" -msgstr "" +msgstr "자동 온도" #: fdmprinter.def.json msgctxt "material_flow_dependent_temperature description" @@ -1545,7 +1705,7 @@ msgstr "해당 레이어의 평균 유속으로 각 레이어의 온도를 자 #: fdmprinter.def.json msgctxt "default_material_print_temperature label" msgid "Default Printing Temperature" -msgstr "" +msgstr "기본 인쇄 온도" #: fdmprinter.def.json msgctxt "default_material_print_temperature description" @@ -1555,7 +1715,7 @@ msgstr "인쇄에 사용되는 기본 온도입니다. 이것은 재료의 \"기 #: fdmprinter.def.json msgctxt "material_print_temperature label" msgid "Printing Temperature" -msgstr "" +msgstr "인쇄 온도" #: fdmprinter.def.json msgctxt "material_print_temperature description" @@ -1565,7 +1725,7 @@ msgstr "인쇄에 사용되는 온도. " #: fdmprinter.def.json msgctxt "material_print_temperature_layer_0 label" msgid "Printing Temperature Initial Layer" -msgstr "" +msgstr "인쇄 온도 초기 레이어" #: fdmprinter.def.json msgctxt "material_print_temperature_layer_0 description" @@ -1575,7 +1735,7 @@ msgstr "첫 번째 레이어 인쇄에 사용되는 온도입니다. 초기 레 #: fdmprinter.def.json msgctxt "material_initial_print_temperature label" msgid "Initial Printing Temperature" -msgstr "" +msgstr "초기 인쇄 온도" #: fdmprinter.def.json msgctxt "material_initial_print_temperature description" @@ -1585,7 +1745,7 @@ msgstr "인쇄가 이미 시작될 수있는 인쇄 온도까지 가열하는 #: fdmprinter.def.json msgctxt "material_final_print_temperature label" msgid "Final Printing Temperature" -msgstr "" +msgstr "최종 인쇄 온도" #: fdmprinter.def.json msgctxt "material_final_print_temperature description" @@ -1595,7 +1755,7 @@ msgstr "인쇄 종료 직전에 이미 냉각이 시작될 온도입니다. " #: fdmprinter.def.json msgctxt "material_flow_temp_graph label" msgid "Flow Temperature Graph" -msgstr "" +msgstr "유동 온도 그래프" #: fdmprinter.def.json msgctxt "material_flow_temp_graph description" @@ -1605,7 +1765,7 @@ msgstr "데이터 흐름 (mm3 / 초) - 온도 (섭씨). " #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed label" msgid "Extrusion Cool Down Speed Modifier" -msgstr "" +msgstr "압출 냉각 속도 조절기" #: fdmprinter.def.json msgctxt "material_extrusion_cool_down_speed description" @@ -1615,7 +1775,7 @@ msgstr "압출하는 동안 노즐이 냉각되는 추가 속도. 압출하는 #: fdmprinter.def.json msgctxt "material_bed_temperature label" msgid "Build Plate Temperature" -msgstr "" +msgstr "빌드 플레이트 온도" #: fdmprinter.def.json msgctxt "material_bed_temperature description" @@ -1625,7 +1785,7 @@ msgstr "가열 된 빌드 플레이트에 사용되는 온도. 이 값이 0이 #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 label" msgid "Build Plate Temperature Initial Layer" -msgstr "" +msgstr "빌드 플레이트 온도 초기 레이어" #: fdmprinter.def.json msgctxt "material_bed_temperature_layer_0 description" @@ -1635,17 +1795,37 @@ msgstr "첫 번째 레이어에서 가열 된 빌드 플레이트에 사용되 #: fdmprinter.def.json msgctxt "material_diameter label" msgid "Diameter" -msgstr "" +msgstr "직경" #: fdmprinter.def.json msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "사용 된 필라멘트의 직경을 조정합니다. 이 값을 사용 필라멘트의 직경과 일치시킵니다. " +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency label" +msgid "Adhesion Tendency" +msgstr "점착 기질" + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency description" +msgid "Surface adhesion tendency." +msgstr "서피스의 점착 기질입니다." + +#: fdmprinter.def.json +msgctxt "material_surface_energy label" +msgid "Surface Energy" +msgstr "서피스 에너지" + +#: fdmprinter.def.json +msgctxt "material_surface_energy description" +msgid "Surface energy." +msgstr "서피스의 에너지입니다." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" -msgstr "" +msgstr "공급량" #: fdmprinter.def.json msgctxt "material_flow description" @@ -1655,7 +1835,7 @@ msgstr "유량 보상 : 압출 된 재료의 양에이 값을 곱합니다. " #: fdmprinter.def.json msgctxt "retraction_enable label" msgid "Enable Retraction" -msgstr "" +msgstr "후퇴 가능" #: fdmprinter.def.json msgctxt "retraction_enable description" @@ -1665,7 +1845,7 @@ msgstr "노즐이 인쇄되지 않은 영역 위로 움직일 때 필라멘트 #: fdmprinter.def.json msgctxt "retract_at_layer_change label" msgid "Retract at Layer Change" -msgstr "" +msgstr "레이어 변경시 취소" #: fdmprinter.def.json msgctxt "retract_at_layer_change description" @@ -1675,7 +1855,7 @@ msgstr "노즐이 다음 층으로 이동할 때 필라멘트를 후퇴시킵니 #: fdmprinter.def.json msgctxt "retraction_amount label" msgid "Retraction Distance" -msgstr "" +msgstr "후퇴 거리" #: fdmprinter.def.json msgctxt "retraction_amount description" @@ -1685,7 +1865,7 @@ msgstr "후퇴 이동 중에 수축 된 재료의 길이입니다. " #: fdmprinter.def.json msgctxt "retraction_speed label" msgid "Retraction Speed" -msgstr "" +msgstr "후퇴 속도" #: fdmprinter.def.json msgctxt "retraction_speed description" @@ -1695,7 +1875,7 @@ msgstr "후퇴 이동 중에 필라멘트가 수축되고 프라이밍되는 속 #: fdmprinter.def.json msgctxt "retraction_retract_speed label" msgid "Retraction Retract Speed" -msgstr "" +msgstr "후퇴 속도" #: fdmprinter.def.json msgctxt "retraction_retract_speed description" @@ -1705,7 +1885,7 @@ msgstr "후퇴 이동 중에 필라멘트가 후퇴하는 속도입니다. " #: fdmprinter.def.json msgctxt "retraction_prime_speed label" msgid "Retraction Prime Speed" -msgstr "" +msgstr "후퇴 초기 속도" #: fdmprinter.def.json msgctxt "retraction_prime_speed description" @@ -1715,7 +1895,7 @@ msgstr "후퇴 이동 중에 필라멘트가 프라이밍되는 속도입니다. #: fdmprinter.def.json msgctxt "retraction_extra_prime_amount label" msgid "Retraction Extra Prime Amount" -msgstr "" +msgstr "후퇴 Extra 초기 속도" #: fdmprinter.def.json msgctxt "retraction_extra_prime_amount description" @@ -1725,7 +1905,7 @@ msgstr "여행 중에 이동할 수있는 물질이 있습니다.이 물질은 #: fdmprinter.def.json msgctxt "retraction_min_travel label" msgid "Retraction Minimum Travel" -msgstr "" +msgstr "후퇴 최소 움직임" #: fdmprinter.def.json msgctxt "retraction_min_travel description" @@ -1735,7 +1915,7 @@ msgstr "수축이 일어나기 위해 필요한 최소한의 이동 거리. 이 #: fdmprinter.def.json msgctxt "retraction_count_max label" msgid "Maximum Retraction Count" -msgstr "" +msgstr "최대 후퇴 수" #: fdmprinter.def.json msgctxt "retraction_count_max description" @@ -1745,7 +1925,7 @@ msgstr "이 설정은 최소 돌출 거리 창 내에서 발생하는 후퇴 수 #: fdmprinter.def.json msgctxt "retraction_extrusion_window label" msgid "Minimum Extrusion Distance Window" -msgstr "" +msgstr "최소 돌출 거리 창" #: fdmprinter.def.json msgctxt "retraction_extrusion_window description" @@ -1755,7 +1935,7 @@ msgstr "최대 후퇴 횟수가 시행되는 창입니다. 이 값은 수축 거 #: fdmprinter.def.json msgctxt "material_standby_temperature label" msgid "Standby Temperature" -msgstr "" +msgstr "대기 온도" #: fdmprinter.def.json msgctxt "material_standby_temperature description" @@ -1765,7 +1945,7 @@ msgstr "다른 노즐이 현재 인쇄에 사용되는 경우의 노즐 온도. #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount label" msgid "Nozzle Switch Retraction Distance" -msgstr "" +msgstr "노즐 스위치 후퇴 거리" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_amount description" @@ -1775,7 +1955,7 @@ msgstr "수축 양 : 수축이 전혀없는 경우 0으로 설정합니다. 일 #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds label" msgid "Nozzle Switch Retraction Speed" -msgstr "" +msgstr "노즐 스위치 후퇴 속도" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speeds description" @@ -1785,7 +1965,7 @@ msgstr "필라멘트가 수축되는 속도입니다. 후퇴 속도가 빠르면 #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speed label" msgid "Nozzle Switch Retract Speed" -msgstr "" +msgstr "노즐 스위치 후퇴 속도" #: fdmprinter.def.json msgctxt "switch_extruder_retraction_speed description" @@ -1795,7 +1975,7 @@ msgstr "노즐 스위치가 들어갈 때 필라멘트가 후퇴하는 속도. " #: fdmprinter.def.json msgctxt "switch_extruder_prime_speed label" msgid "Nozzle Switch Prime Speed" -msgstr "" +msgstr "노즐 스위치 프라임 속도" #: fdmprinter.def.json msgctxt "switch_extruder_prime_speed description" @@ -1805,7 +1985,7 @@ msgstr "노즐 스위치 수축 후 필라멘트가 뒤로 밀리는 속도. " #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" -msgstr "" +msgstr "속도" #: fdmprinter.def.json msgctxt "speed description" @@ -1815,7 +1995,7 @@ msgstr "속도 " #: fdmprinter.def.json msgctxt "speed_print label" msgid "Print Speed" -msgstr "" +msgstr "인쇄 속도" #: fdmprinter.def.json msgctxt "speed_print description" @@ -1825,7 +2005,7 @@ msgstr "인쇄 속도. " #: fdmprinter.def.json msgctxt "speed_infill label" msgid "Infill Speed" -msgstr "" +msgstr "충진 속도" #: fdmprinter.def.json msgctxt "speed_infill description" @@ -1835,7 +2015,7 @@ msgstr "충진물이 인쇄되는 속도. " #: fdmprinter.def.json msgctxt "speed_wall label" msgid "Wall Speed" -msgstr "" +msgstr "벽 속도" #: fdmprinter.def.json msgctxt "speed_wall description" @@ -1845,7 +2025,7 @@ msgstr "벽이 인쇄되는 속도입니다. " #: fdmprinter.def.json msgctxt "speed_wall_0 label" msgid "Outer Wall Speed" -msgstr "" +msgstr "외벽 속도" #: fdmprinter.def.json msgctxt "speed_wall_0 description" @@ -1855,7 +2035,7 @@ msgstr "가장 바깥 쪽 벽이 인쇄되는 속도입니다. 외벽을 더 낮 #: fdmprinter.def.json msgctxt "speed_wall_x label" msgid "Inner Wall Speed" -msgstr "" +msgstr "내벽 속도" #: fdmprinter.def.json msgctxt "speed_wall_x description" @@ -1865,7 +2045,7 @@ msgstr "모든 내부 벽이 인쇄되는 속도입니다. 내벽을 외벽보 #: fdmprinter.def.json msgctxt "speed_roofing label" msgid "Top Surface Skin Speed" -msgstr "" +msgstr "상단 표면 피부 속도" #: fdmprinter.def.json msgctxt "speed_roofing description" @@ -1875,7 +2055,7 @@ msgstr "상단 표면 스킨 층이 인쇄되는 속도." #: fdmprinter.def.json msgctxt "speed_topbottom label" msgid "Top/Bottom Speed" -msgstr "" +msgstr "상단 / 하단 속도" #: fdmprinter.def.json msgctxt "speed_topbottom description" @@ -1885,7 +2065,7 @@ msgstr "위쪽 / 아래쪽 레이어가 인쇄되는 속도입니다. " #: fdmprinter.def.json msgctxt "speed_support label" msgid "Support Speed" -msgstr "" +msgstr "지지물 속도" #: fdmprinter.def.json msgctxt "speed_support description" @@ -1895,7 +2075,7 @@ msgstr "지지 구조가 인쇄되는 속도입니다. 고속 인쇄 지원은 #: fdmprinter.def.json msgctxt "speed_support_infill label" msgid "Support Infill Speed" -msgstr "" +msgstr "지지물 충진 속도" #: fdmprinter.def.json msgctxt "speed_support_infill description" @@ -1905,7 +2085,7 @@ msgstr "지지대의 충전물이 인쇄되는 속도. infill을 저속으로 #: fdmprinter.def.json msgctxt "speed_support_interface label" msgid "Support Interface Speed" -msgstr "" +msgstr "지지물 인터페이스 속도" #: fdmprinter.def.json msgctxt "speed_support_interface description" @@ -1915,7 +2095,7 @@ msgstr "지지대의 지붕과 바닥이 인쇄되는 속도. 인쇄 속도를 #: fdmprinter.def.json msgctxt "speed_support_roof label" msgid "Support Roof Speed" -msgstr "" +msgstr "지지물 상단 속도" #: fdmprinter.def.json msgctxt "speed_support_roof description" @@ -1925,7 +2105,7 @@ msgstr "지지대의 지붕이 인쇄되는 속도입니다. 인쇄 속도를 #: fdmprinter.def.json msgctxt "speed_support_bottom label" msgid "Support Floor Speed" -msgstr "" +msgstr "지지물 바닥 속도" #: fdmprinter.def.json msgctxt "speed_support_bottom description" @@ -1935,7 +2115,7 @@ msgstr "지지대 바닥 인쇄 속도. 더 낮은 속도로 인쇄하면 모델 #: fdmprinter.def.json msgctxt "speed_prime_tower label" msgid "Prime Tower Speed" -msgstr "" +msgstr "프라임 타워 속도" #: fdmprinter.def.json msgctxt "speed_prime_tower description" @@ -1945,7 +2125,7 @@ msgstr "프라임 타워가 인쇄되는 속도. 프라임 타워를 더 천천 #: fdmprinter.def.json msgctxt "speed_travel label" msgid "Travel Speed" -msgstr "" +msgstr "움직임 속도" #: fdmprinter.def.json msgctxt "speed_travel description" @@ -1955,7 +2135,7 @@ msgstr "움직일때의 이동 속도." #: fdmprinter.def.json msgctxt "speed_layer_0 label" msgid "Initial Layer Speed" -msgstr "" +msgstr "초기 레이어 속도" #: fdmprinter.def.json msgctxt "speed_layer_0 description" @@ -1965,7 +2145,7 @@ msgstr "초기 레이어의 속도입니다. 빌드 플레이트에 대한 접 #: fdmprinter.def.json msgctxt "speed_print_layer_0 label" msgid "Initial Layer Print Speed" -msgstr "" +msgstr "초기 레이어 인쇄 속도" #: fdmprinter.def.json msgctxt "speed_print_layer_0 description" @@ -1975,7 +2155,7 @@ msgstr "초기 레이어의 인쇄 속도입니다. 빌드 플레이트에 대 #: fdmprinter.def.json msgctxt "speed_travel_layer_0 label" msgid "Initial Layer Travel Speed" -msgstr "" +msgstr "초기 레이어 이동 속도" #: fdmprinter.def.json msgctxt "speed_travel_layer_0 description" @@ -1985,7 +2165,7 @@ msgstr "이동 속도는 초기 레이어에서 이동합니다. 이전에 인 #: fdmprinter.def.json msgctxt "skirt_brim_speed label" msgid "Skirt/Brim Speed" -msgstr "" +msgstr "Skirt/Brim 속도" #: fdmprinter.def.json msgctxt "skirt_brim_speed description" @@ -1995,7 +2175,7 @@ msgstr "스커트와 가장자리가 인쇄되는 속도입니다. 일반적으 #: fdmprinter.def.json msgctxt "max_feedrate_z_override label" msgid "Maximum Z Speed" -msgstr "" +msgstr "최대 Z 속도" #: fdmprinter.def.json msgctxt "max_feedrate_z_override description" @@ -2005,7 +2185,7 @@ msgstr "빌드 플레이트가 움직이는 최대 속도. 이 값을 0으로 #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" msgid "Number of Slower Layers" -msgstr "" +msgstr "느린 레이어 수" #: fdmprinter.def.json msgctxt "speed_slowdown_layers description" @@ -2015,7 +2195,7 @@ msgstr "처음 몇 개의 레이어는 모델의 나머지 부분보다 느리 #: fdmprinter.def.json msgctxt "speed_equalize_flow_enabled label" msgid "Equalize Filament Flow" -msgstr "" +msgstr "필라멘트 흐름 균일화" #: fdmprinter.def.json msgctxt "speed_equalize_flow_enabled description" @@ -2025,7 +2205,7 @@ msgstr "일반 라인보다 얇게 인쇄하여 초당 압출되는 재료의 #: fdmprinter.def.json msgctxt "speed_equalize_flow_max label" msgid "Maximum Speed for Flow Equalization" -msgstr "" +msgstr "유량 균등화를위한 최대 속도" #: fdmprinter.def.json msgctxt "speed_equalize_flow_max description" @@ -2035,7 +2215,7 @@ msgstr "인쇄 속도를 조정할 때 최대 인쇄 속도로 흐름을 균등 #: fdmprinter.def.json msgctxt "acceleration_enabled label" msgid "Enable Acceleration Control" -msgstr "" +msgstr "가속 제어 사용" #: fdmprinter.def.json msgctxt "acceleration_enabled description" @@ -2045,7 +2225,7 @@ msgstr "프린트 헤드 가속도를 조정할 수 있습니다. 가속도를 #: fdmprinter.def.json msgctxt "acceleration_print label" msgid "Print Acceleration" -msgstr "" +msgstr "인쇄 가속도" #: fdmprinter.def.json msgctxt "acceleration_print description" @@ -2055,7 +2235,7 @@ msgstr "인쇄 속도가 빨라집니다. " #: fdmprinter.def.json msgctxt "acceleration_infill label" msgid "Infill Acceleration" -msgstr "" +msgstr "충진 가속도" #: fdmprinter.def.json msgctxt "acceleration_infill description" @@ -2065,7 +2245,7 @@ msgstr "충진물이 인쇄되는 가속도. " #: fdmprinter.def.json msgctxt "acceleration_wall label" msgid "Wall Acceleration" -msgstr "" +msgstr "벽 가속도" #: fdmprinter.def.json msgctxt "acceleration_wall description" @@ -2075,7 +2255,7 @@ msgstr "벽이 가속되는 가속도. " #: fdmprinter.def.json msgctxt "acceleration_wall_0 label" msgid "Outer Wall Acceleration" -msgstr "" +msgstr "외벽 가속도" #: fdmprinter.def.json msgctxt "acceleration_wall_0 description" @@ -2085,7 +2265,7 @@ msgstr "가장 바깥 쪽 벽이 인쇄되는 가속도입니다. " #: fdmprinter.def.json msgctxt "acceleration_wall_x label" msgid "Inner Wall Acceleration" -msgstr "" +msgstr "내벽 가속도" #: fdmprinter.def.json msgctxt "acceleration_wall_x description" @@ -2095,7 +2275,7 @@ msgstr "모든 내부 벽이 인쇄되는 가속도입니다. " #: fdmprinter.def.json msgctxt "acceleration_roofing label" msgid "Top Surface Skin Acceleration" -msgstr "" +msgstr "상단 표면 피부 가속도" #: fdmprinter.def.json msgctxt "acceleration_roofing description" @@ -2105,7 +2285,7 @@ msgstr "상단 표면 스킨 층이 인쇄되는 가속도. " #: fdmprinter.def.json msgctxt "acceleration_topbottom label" msgid "Top/Bottom Acceleration" -msgstr "" +msgstr "상단 / 하단 가속도" #: fdmprinter.def.json msgctxt "acceleration_topbottom description" @@ -2115,7 +2295,7 @@ msgstr "위쪽 / 아래쪽 레이어가 인쇄되는 가속도입니다. " #: fdmprinter.def.json msgctxt "acceleration_support label" msgid "Support Acceleration" -msgstr "" +msgstr "지지물 가속도" #: fdmprinter.def.json msgctxt "acceleration_support description" @@ -2125,7 +2305,7 @@ msgstr "지지 구조가 인쇄되는 가속도. " #: fdmprinter.def.json msgctxt "acceleration_support_infill label" msgid "Support Infill Acceleration" -msgstr "" +msgstr "지지물 충진 가속도" #: fdmprinter.def.json msgctxt "acceleration_support_infill description" @@ -2135,7 +2315,7 @@ msgstr "지지대의 충전물이 인쇄되는 가속도. " #: fdmprinter.def.json msgctxt "acceleration_support_interface label" msgid "Support Interface Acceleration" -msgstr "" +msgstr "지지물 인터페이스 가속도" #: fdmprinter.def.json msgctxt "acceleration_support_interface description" @@ -2145,7 +2325,7 @@ msgstr "지지대의 지붕과 바닥이 인쇄되는 가속도. 낮은 가속 #: fdmprinter.def.json msgctxt "acceleration_support_roof label" msgid "Support Roof Acceleration" -msgstr "" +msgstr "지지물 상단 가속도" #: fdmprinter.def.json msgctxt "acceleration_support_roof description" @@ -2155,7 +2335,7 @@ msgstr "지지대의 지붕이 인쇄되는 가속도. 낮은 가속도로 인 #: fdmprinter.def.json msgctxt "acceleration_support_bottom label" msgid "Support Floor Acceleration" -msgstr "" +msgstr "지지대 바닥 가속도" #: fdmprinter.def.json msgctxt "acceleration_support_bottom description" @@ -2165,7 +2345,7 @@ msgstr "지면의 가속도가 인쇄됩니다. 보다 낮은 가속도로 인 #: fdmprinter.def.json msgctxt "acceleration_prime_tower label" msgid "Prime Tower Acceleration" -msgstr "" +msgstr "프라임 타워 가속" #: fdmprinter.def.json msgctxt "acceleration_prime_tower description" @@ -2175,7 +2355,7 @@ msgstr "프라임 타워가 인쇄되는 가속도. " #: fdmprinter.def.json msgctxt "acceleration_travel label" msgid "Travel Acceleration" -msgstr "" +msgstr "움직임 가속" #: fdmprinter.def.json msgctxt "acceleration_travel description" @@ -2185,7 +2365,7 @@ msgstr "여행이 움직이는 가속도가 만들어집니다. " #: fdmprinter.def.json msgctxt "acceleration_layer_0 label" msgid "Initial Layer Acceleration" -msgstr "" +msgstr "초기 레이어 가속" #: fdmprinter.def.json msgctxt "acceleration_layer_0 description" @@ -2195,7 +2375,7 @@ msgstr "초기 레이어의 가속도입니다. " #: fdmprinter.def.json msgctxt "acceleration_print_layer_0 label" msgid "Initial Layer Print Acceleration" -msgstr "" +msgstr "초기 레이어 인쇄 가속" #: fdmprinter.def.json msgctxt "acceleration_print_layer_0 description" @@ -2205,7 +2385,7 @@ msgstr "초기 레이어 인쇄 중 가속도. " #: fdmprinter.def.json msgctxt "acceleration_travel_layer_0 label" msgid "Initial Layer Travel Acceleration" -msgstr "" +msgstr "초기 레이어 움직임 가속도" #: fdmprinter.def.json msgctxt "acceleration_travel_layer_0 description" @@ -2215,7 +2395,7 @@ msgstr "이동 가속도는 초기 레이어에서 이동합니다. " #: fdmprinter.def.json msgctxt "acceleration_skirt_brim label" msgid "Skirt/Brim Acceleration" -msgstr "" +msgstr "Skirt/Brim 가속도" #: fdmprinter.def.json msgctxt "acceleration_skirt_brim description" @@ -2225,7 +2405,7 @@ msgstr "치마와 가장자리가 인쇄되는 가속도. 일반적으로 이것 #: fdmprinter.def.json msgctxt "jerk_enabled label" msgid "Enable Jerk Control" -msgstr "" +msgstr "저크 컨트롤 사용" #: fdmprinter.def.json msgctxt "jerk_enabled description" @@ -2235,7 +2415,7 @@ msgstr "X 또는 Y 축의 속도가 변경 될 때 프린트 헤드의 속도를 #: fdmprinter.def.json msgctxt "jerk_print label" msgid "Print Jerk" -msgstr "" +msgstr "Jerk 인쇄" #: fdmprinter.def.json msgctxt "jerk_print description" @@ -2245,7 +2425,7 @@ msgstr "프린트 헤드의 최대 순간 속도 변화. " #: fdmprinter.def.json msgctxt "jerk_infill label" msgid "Infill Jerk" -msgstr "" +msgstr "Jerk 충진" #: fdmprinter.def.json msgctxt "jerk_infill description" @@ -2255,7 +2435,7 @@ msgstr "충진물이 인쇄되는 최대 순간 속도 변화. " #: fdmprinter.def.json msgctxt "jerk_wall label" msgid "Wall Jerk" -msgstr "" +msgstr "벽 Jerk" #: fdmprinter.def.json msgctxt "jerk_wall description" @@ -2265,7 +2445,7 @@ msgstr "벽이 인쇄되는 최대 순간 속도 변화. " #: fdmprinter.def.json msgctxt "jerk_wall_0 label" msgid "Outer Wall Jerk" -msgstr "" +msgstr "외벽 Jerk" #: fdmprinter.def.json msgctxt "jerk_wall_0 description" @@ -2275,7 +2455,7 @@ msgstr "가장 바깥 쪽 벽이 인쇄되는 최대 순간 속도 변화. " #: fdmprinter.def.json msgctxt "jerk_wall_x label" msgid "Inner Wall Jerk" -msgstr "" +msgstr "내벽 Jerk" #: fdmprinter.def.json msgctxt "jerk_wall_x description" @@ -2285,7 +2465,7 @@ msgstr "모든 내부 벽이 인쇄되는 최대 순간 속도 변화. " #: fdmprinter.def.json msgctxt "jerk_roofing label" msgid "Top Surface Skin Jerk" -msgstr "" +msgstr "피부 윗 표면 Jerk" #: fdmprinter.def.json msgctxt "jerk_roofing description" @@ -2295,7 +2475,7 @@ msgstr "상단 표면 스킨 층이 인쇄되는 최대 순간 속도 변화. " #: fdmprinter.def.json msgctxt "jerk_topbottom label" msgid "Top/Bottom Jerk" -msgstr "" +msgstr "위 / 아래 Jerk" #: fdmprinter.def.json msgctxt "jerk_topbottom description" @@ -2305,7 +2485,7 @@ msgstr "상단 / 하단 레이어가 인쇄되는 최대 순간 속도 변화. " #: fdmprinter.def.json msgctxt "jerk_support label" msgid "Support Jerk" -msgstr "" +msgstr "지지대 Jerk" #: fdmprinter.def.json msgctxt "jerk_support description" @@ -2315,7 +2495,7 @@ msgstr "지지 구조가 인쇄되는 최대 순간 속도 변화. " #: fdmprinter.def.json msgctxt "jerk_support_infill label" msgid "Support Infill Jerk" -msgstr "" +msgstr "지지대 충진 Jerk" #: fdmprinter.def.json msgctxt "jerk_support_infill description" @@ -2325,7 +2505,7 @@ msgstr "지지대가 채워지는 최대 순간 속도 변화. " #: fdmprinter.def.json msgctxt "jerk_support_interface label" msgid "Support Interface Jerk" -msgstr "" +msgstr "지원 인터페이스 Jerk" #: fdmprinter.def.json msgctxt "jerk_support_interface description" @@ -2335,7 +2515,7 @@ msgstr "지지대의 지붕과 바닥이 인쇄되는 최대 순간 속도 변 #: fdmprinter.def.json msgctxt "jerk_support_roof label" msgid "Support Roof Jerk" -msgstr "" +msgstr "지지대 위 Jerk" #: fdmprinter.def.json msgctxt "jerk_support_roof description" @@ -2345,7 +2525,7 @@ msgstr "지지대의 지붕이 인쇄되는 최대 순간 속도 변화. " #: fdmprinter.def.json msgctxt "jerk_support_bottom label" msgid "Support Floor Jerk" -msgstr "" +msgstr "지지대 바닥 Jerk" #: fdmprinter.def.json msgctxt "jerk_support_bottom description" @@ -2355,7 +2535,7 @@ msgstr "지지대의 바닥이 인쇄되는 최대 순간 속도 변화. " #: fdmprinter.def.json msgctxt "jerk_prime_tower label" msgid "Prime Tower Jerk" -msgstr "" +msgstr "프라임 타워 Jerk" #: fdmprinter.def.json msgctxt "jerk_prime_tower description" @@ -2365,7 +2545,7 @@ msgstr "프라임 타워가 인쇄되는 최대 순간 속도 변화. " #: fdmprinter.def.json msgctxt "jerk_travel label" msgid "Travel Jerk" -msgstr "" +msgstr "움직임 Jerk" #: fdmprinter.def.json msgctxt "jerk_travel description" @@ -2375,7 +2555,7 @@ msgstr "이동이 이동하는 최대 순간 속도 변화. " #: fdmprinter.def.json msgctxt "jerk_layer_0 label" msgid "Initial Layer Jerk" -msgstr "" +msgstr "초기 레이어 Jerk" #: fdmprinter.def.json msgctxt "jerk_layer_0 description" @@ -2385,7 +2565,7 @@ msgstr "초기 레이어의 인쇄 최대 순간 속도 변화. " #: fdmprinter.def.json msgctxt "jerk_print_layer_0 label" msgid "Initial Layer Print Jerk" -msgstr "" +msgstr "초기 레이어 인쇄 Jerk" #: fdmprinter.def.json msgctxt "jerk_print_layer_0 description" @@ -2395,7 +2575,7 @@ msgstr "초기 층의 인쇄 중 최대 순간 속도 변화. " #: fdmprinter.def.json msgctxt "jerk_travel_layer_0 label" msgid "Initial Layer Travel Jerk" -msgstr "" +msgstr "초기 레이어 움직임 Jerk" #: fdmprinter.def.json msgctxt "jerk_travel_layer_0 description" @@ -2405,7 +2585,7 @@ msgstr "이동 가속도는 초기 레이어에서 이동합니다. " #: fdmprinter.def.json msgctxt "jerk_skirt_brim label" msgid "Skirt/Brim Jerk" -msgstr "" +msgstr "Skirt/Brim Jerk" #: fdmprinter.def.json msgctxt "jerk_skirt_brim description" @@ -2415,7 +2595,7 @@ msgstr "스커트와 고리가 인쇄되는 최대 순간 속도 변화. " #: fdmprinter.def.json msgctxt "travel label" msgid "Travel" -msgstr "" +msgstr "움직임" #: fdmprinter.def.json msgctxt "travel description" @@ -2425,7 +2605,7 @@ msgstr "이동 " #: fdmprinter.def.json msgctxt "retraction_combing label" msgid "Combing Mode" -msgstr "" +msgstr "Combing 모드" #: fdmprinter.def.json msgctxt "retraction_combing description" @@ -2435,22 +2615,22 @@ msgstr "빗질은 여행 할 때 이미 인쇄 된 영역 내에 노즐을 유 #: fdmprinter.def.json msgctxt "retraction_combing option off" msgid "Off" -msgstr "" +msgstr "끄다" #: fdmprinter.def.json msgctxt "retraction_combing option all" msgid "All" -msgstr "" +msgstr "모두" #: fdmprinter.def.json msgctxt "retraction_combing option noskin" msgid "No Skin" -msgstr "" +msgstr "피부가 없다" #: fdmprinter.def.json msgctxt "travel_retract_before_outer_wall label" msgid "Retract Before Outer Wall" -msgstr "" +msgstr "외벽 전에 철회" #: fdmprinter.def.json msgctxt "travel_retract_before_outer_wall description" @@ -2460,7 +2640,7 @@ msgstr "외벽을 시작하기 위해 이동할 때 항상 후퇴합니다. " #: fdmprinter.def.json msgctxt "travel_avoid_other_parts label" msgid "Avoid Printed Parts When Traveling" -msgstr "" +msgstr "움직일 때 인쇄 부품 피하십시오" #: fdmprinter.def.json msgctxt "travel_avoid_other_parts description" @@ -2470,7 +2650,7 @@ msgstr "노즐은 여행 할 때 이미 인쇄 된 부품을 피합니다. 이 #: fdmprinter.def.json msgctxt "travel_avoid_distance label" msgid "Travel Avoid Distance" -msgstr "" +msgstr "움직일 때 피하기 거리" #: fdmprinter.def.json msgctxt "travel_avoid_distance description" @@ -2480,7 +2660,7 @@ msgstr "이동 중에 피할 때 노즐과 이미 인쇄 된 부분 사이의 #: fdmprinter.def.json msgctxt "start_layers_at_same_position label" msgid "Start Layers with the Same Part" -msgstr "" +msgstr "같은 부분으로 레이어 시작" #: fdmprinter.def.json msgctxt "start_layers_at_same_position description" @@ -2490,7 +2670,7 @@ msgstr "각 레이어에서 같은 지점 근처에 개체를 인쇄하는 것 #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" -msgstr "" +msgstr "레이어 시작 X" #: fdmprinter.def.json msgctxt "layer_start_x description" @@ -2500,7 +2680,7 @@ msgstr "각 레이어의 인쇄를 시작할 부분을 찾을 위치 근처의 X #: fdmprinter.def.json msgctxt "layer_start_y label" msgid "Layer Start Y" -msgstr "" +msgstr "레이어 시작 Y" #: fdmprinter.def.json msgctxt "layer_start_y description" @@ -2510,7 +2690,7 @@ msgstr "각 레이어 인쇄를 시작할 부분을 찾을 위치 근처의 위 #: fdmprinter.def.json msgctxt "retraction_hop_enabled label" msgid "Z Hop When Retracted" -msgstr "" +msgstr "철회했을 때의 Z 홉" #: fdmprinter.def.json msgctxt "retraction_hop_enabled description" @@ -2520,7 +2700,7 @@ msgstr "수축이 완료 될 때마다 빌드 플레이트가 내려져 노즐 #: fdmprinter.def.json msgctxt "retraction_hop_only_when_collides label" msgid "Z Hop Only Over Printed Parts" -msgstr "" +msgstr "인쇄 된 부분에만 Z 홉" #: fdmprinter.def.json msgctxt "retraction_hop_only_when_collides description" @@ -2530,7 +2710,7 @@ msgstr "이동 시, 인쇄물을 피함으로써 수평 이동으로 피할 수 #: fdmprinter.def.json msgctxt "retraction_hop label" msgid "Z Hop Height" -msgstr "" +msgstr "Z 홉 높이" #: fdmprinter.def.json msgctxt "retraction_hop description" @@ -2540,7 +2720,7 @@ msgstr "Z 홉을 수행 할 때의 높이 차이. " #: fdmprinter.def.json msgctxt "retraction_hop_after_extruder_switch label" msgid "Z Hop After Extruder Switch" -msgstr "" +msgstr "압출기 스위치 후 Z 홉" #: fdmprinter.def.json msgctxt "retraction_hop_after_extruder_switch description" @@ -2550,7 +2730,7 @@ msgstr "기계가 하나의 압출기에서 다른 압출기로 전환 된 후, #: fdmprinter.def.json msgctxt "cooling label" msgid "Cooling" -msgstr "" +msgstr "냉각" #: fdmprinter.def.json msgctxt "cooling description" @@ -2560,7 +2740,7 @@ msgstr "냉각 " #: fdmprinter.def.json msgctxt "cool_fan_enabled label" msgid "Enable Print Cooling" -msgstr "" +msgstr "인쇄 냉각 사용" #: fdmprinter.def.json msgctxt "cool_fan_enabled description" @@ -2570,7 +2750,7 @@ msgstr "인쇄 중에 인쇄 냉각 팬을 활성화합니다. 팬은 짧은 레 #: fdmprinter.def.json msgctxt "cool_fan_speed label" msgid "Fan Speed" -msgstr "" +msgstr "팬 속도" #: fdmprinter.def.json msgctxt "cool_fan_speed description" @@ -2580,7 +2760,7 @@ msgstr "인쇄 냉각 팬이 회전하는 속도입니다. " #: fdmprinter.def.json msgctxt "cool_fan_speed_min label" msgid "Regular Fan Speed" -msgstr "" +msgstr "정규 팬 속도" #: fdmprinter.def.json msgctxt "cool_fan_speed_min description" @@ -2590,7 +2770,7 @@ msgstr "팬이 임계 값에 도달하기 전에 회전하는 속도입니다. #: fdmprinter.def.json msgctxt "cool_fan_speed_max label" msgid "Maximum Fan Speed" -msgstr "" +msgstr "최대 팬 속도" #: fdmprinter.def.json msgctxt "cool_fan_speed_max description" @@ -2600,7 +2780,7 @@ msgstr "최소 레이어 시간에 팬이 회전하는 속도입니다. 임계 #: fdmprinter.def.json msgctxt "cool_min_layer_time_fan_speed_max label" msgid "Regular/Maximum Fan Speed Threshold" -msgstr "" +msgstr "일반 / 최대 팬 속도 임계 값" #: fdmprinter.def.json msgctxt "cool_min_layer_time_fan_speed_max description" @@ -2610,7 +2790,7 @@ msgstr "정규 팬 속도와 최대 팬 속도 사이의 임계 값을 설정하 #: fdmprinter.def.json msgctxt "cool_fan_speed_0 label" msgid "Initial Fan Speed" -msgstr "" +msgstr "초기 팬 속도" #: fdmprinter.def.json msgctxt "cool_fan_speed_0 description" @@ -2620,7 +2800,7 @@ msgstr "인쇄 시작시 팬이 회전하는 속도입니다. 후속 레이어 #: fdmprinter.def.json msgctxt "cool_fan_full_at_height label" msgid "Regular Fan Speed at Height" -msgstr "" +msgstr "정규 팬 속도 at Height" #: fdmprinter.def.json msgctxt "cool_fan_full_at_height description" @@ -2630,7 +2810,7 @@ msgstr "일반 팬 속도로 팬이 회전하는 높이입니다. 아래의 레 #: fdmprinter.def.json msgctxt "cool_fan_full_layer label" msgid "Regular Fan Speed at Layer" -msgstr "" +msgstr "레이어의 일반 팬 속도" #: fdmprinter.def.json msgctxt "cool_fan_full_layer description" @@ -2640,7 +2820,7 @@ msgstr "팬이 일반 팬 속도로 회전하는 레이어입니다. 높이의 #: fdmprinter.def.json msgctxt "cool_min_layer_time label" msgid "Minimum Layer Time" -msgstr "" +msgstr "최소 레이어 시간" #: fdmprinter.def.json msgctxt "cool_min_layer_time description" @@ -2650,7 +2830,7 @@ msgstr "레이어에 소요 된 최소 시간입니다. 이렇게하면 프린 #: fdmprinter.def.json msgctxt "cool_min_speed label" msgid "Minimum Speed" -msgstr "" +msgstr "최저 속도" #: fdmprinter.def.json msgctxt "cool_min_speed description" @@ -2660,7 +2840,7 @@ msgstr "최소 레이어 시간으로 인해 속도가 느려지 긴하지만 #: fdmprinter.def.json msgctxt "cool_lift_head label" msgid "Lift Head" -msgstr "" +msgstr "리프트 헤드" #: fdmprinter.def.json msgctxt "cool_lift_head description" @@ -2670,7 +2850,7 @@ msgstr "최소한의 레이어 시간으로 인해 최소 속도에 도달하면 #: fdmprinter.def.json msgctxt "support label" msgid "Support" -msgstr "" +msgstr "지지대" #: fdmprinter.def.json msgctxt "support description" @@ -2680,7 +2860,7 @@ msgstr "지지구조 " #: fdmprinter.def.json msgctxt "support_enable label" msgid "Generate Support" -msgstr "" +msgstr "지지대 생성" #: fdmprinter.def.json msgctxt "support_enable description" @@ -2690,7 +2870,7 @@ msgstr "돌출부가있는 모델 부분을 지원하는 구조를 생성합니 #: fdmprinter.def.json msgctxt "support_extruder_nr label" msgid "Support Extruder" -msgstr "" +msgstr "지지대 압출기" #: fdmprinter.def.json msgctxt "support_extruder_nr description" @@ -2700,7 +2880,7 @@ msgstr "지지체 인쇄에 사용할 압출기 트레인. 이것은 다중 압 #: fdmprinter.def.json msgctxt "support_infill_extruder_nr label" msgid "Support Infill Extruder" -msgstr "" +msgstr "지지대 충진 압출기" #: fdmprinter.def.json msgctxt "support_infill_extruder_nr description" @@ -2710,7 +2890,7 @@ msgstr "지지대의 충전물을 인쇄하는 데 사용할 압출기 트레인 #: fdmprinter.def.json msgctxt "support_extruder_nr_layer_0 label" msgid "First Layer Support Extruder" -msgstr "" +msgstr "첫 번째 레이어 지지대 압출기" #: fdmprinter.def.json msgctxt "support_extruder_nr_layer_0 description" @@ -2720,7 +2900,7 @@ msgstr "제 1 층의 지지체 충전 용 인쇄에 사용되는 압출기 트 #: fdmprinter.def.json msgctxt "support_interface_extruder_nr label" msgid "Support Interface Extruder" -msgstr "" +msgstr "지지대 인터페이스 압출기" #: fdmprinter.def.json msgctxt "support_interface_extruder_nr description" @@ -2730,7 +2910,7 @@ msgstr "지지대의 지붕과 바닥을 인쇄 할 때 사용하는 압출기 #: fdmprinter.def.json msgctxt "support_roof_extruder_nr label" msgid "Support Roof Extruder" -msgstr "" +msgstr "지지대 지붕 압출기" #: fdmprinter.def.json msgctxt "support_roof_extruder_nr description" @@ -2740,7 +2920,7 @@ msgstr "지지대의 지붕을 인쇄 할 때 사용하는 압출기 트레인. #: fdmprinter.def.json msgctxt "support_bottom_extruder_nr label" msgid "Support Floor Extruder" -msgstr "" +msgstr "지지대 바닥 압출기" #: fdmprinter.def.json msgctxt "support_bottom_extruder_nr description" @@ -2750,7 +2930,7 @@ msgstr "지지대의 바닥을 인쇄하는 데 사용할 압출기 트레인. #: fdmprinter.def.json msgctxt "support_type label" msgid "Support Placement" -msgstr "" +msgstr "지지대 배치" #: fdmprinter.def.json msgctxt "support_type description" @@ -2760,17 +2940,17 @@ msgstr "지지 구조의 배치를 조정합니다. 배치는 빌드 플레이 #: fdmprinter.def.json msgctxt "support_type option buildplate" msgid "Touching Buildplate" -msgstr "" +msgstr "빌드 플레이트 만지기" #: fdmprinter.def.json msgctxt "support_type option everywhere" msgid "Everywhere" -msgstr "" +msgstr "어디에나" #: fdmprinter.def.json msgctxt "support_angle label" msgid "Support Overhang Angle" -msgstr "" +msgstr "오버행 각도 지원" #: fdmprinter.def.json msgctxt "support_angle description" @@ -2780,7 +2960,7 @@ msgstr "지원이 추가 된 오버행 각도의 최소값입니다. 0 °의 값 #: fdmprinter.def.json msgctxt "support_pattern label" msgid "Support Pattern" -msgstr "" +msgstr "지지대 패턴" #: fdmprinter.def.json msgctxt "support_pattern description" @@ -2790,82 +2970,52 @@ msgstr "프린트의지지 구조의 패턴. 사용 가능한 여러 가지 옵 #: fdmprinter.def.json msgctxt "support_pattern option lines" msgid "Lines" -msgstr "" +msgstr "윤곽" #: fdmprinter.def.json msgctxt "support_pattern option grid" msgid "Grid" -msgstr "" +msgstr "격자" #: fdmprinter.def.json msgctxt "support_pattern option triangles" msgid "Triangles" -msgstr "" +msgstr "삼각형" #: fdmprinter.def.json msgctxt "support_pattern option concentric" msgid "Concentric" -msgstr "" +msgstr "동심원의" #: fdmprinter.def.json msgctxt "support_pattern option concentric_3d" msgid "Concentric 3D" -msgstr "" +msgstr "동심원 3D" #: fdmprinter.def.json msgctxt "support_pattern option zigzag" msgid "Zig Zag" -msgstr "" +msgstr "지그재그" #: fdmprinter.def.json msgctxt "support_pattern option cross" msgid "Cross" -msgstr "" +msgstr "십자" #: fdmprinter.def.json msgctxt "support_connect_zigzags label" msgid "Connect Support ZigZags" -msgstr "" +msgstr "ZigZags 지지대 연결" #: fdmprinter.def.json msgctxt "support_connect_zigzags description" msgid "Connect the ZigZags. This will increase the strength of the zig zag support structure." msgstr "지그재그를 연결하십시오. 이것은 지그재그지지 구조의 강도를 증가시킵니다. " -#: fdmprinter.def.json -msgctxt "support_skip_some_zags label" -msgid "Break Up Support In Chunks" -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 "지원 구조가 쉽게 끊어 지도록 지원 라인 연결을 건너 뛰십시오. 이 설정은 지그재그 지원 충전 패턴에 적용됩니다. " - -#: 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 "지지 구조를 쉽게 분리 할 수 있도록 N 밀리미터마다 지지선 사이를 연결하십시오. " - -#: fdmprinter.def.json -msgctxt "support_zag_skip_count label" -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 away." -msgstr "지원 구조를 쉽게 깨뜨릴 수 있도록 모든 N 개의 연결 라인을 건너 뜁니다. " - #: fdmprinter.def.json msgctxt "support_infill_rate label" msgid "Support Density" -msgstr "" +msgstr "지지대 밀도" #: fdmprinter.def.json msgctxt "support_infill_rate description" @@ -2875,7 +3025,7 @@ msgstr "지지 구조의 밀도를 조정합니다. 값이 높을수록 오버 #: fdmprinter.def.json msgctxt "support_line_distance label" msgid "Support Line Distance" -msgstr "" +msgstr "지지대 선 거리" #: fdmprinter.def.json msgctxt "support_line_distance description" @@ -2885,7 +3035,7 @@ msgstr "인쇄 된지지 구조 선 사이의 거리. 이 설정은 지원 밀 #: fdmprinter.def.json msgctxt "support_z_distance label" msgid "Support Z Distance" -msgstr "" +msgstr "지지대 Z 거리" #: fdmprinter.def.json msgctxt "support_z_distance description" @@ -2895,7 +3045,7 @@ msgstr "지지 구조의 위 / 아래에서 인쇄까지의 거리. 이 틈새 #: fdmprinter.def.json msgctxt "support_top_distance label" msgid "Support Top Distance" -msgstr "" +msgstr "지지대 상단 거리" #: fdmprinter.def.json msgctxt "support_top_distance description" @@ -2905,7 +3055,7 @@ msgstr "지원 상단에서 인쇄까지의 거리. " #: fdmprinter.def.json msgctxt "support_bottom_distance label" msgid "Support Bottom Distance" -msgstr "" +msgstr "지지대 최저 거리" #: fdmprinter.def.json msgctxt "support_bottom_distance description" @@ -2915,7 +3065,7 @@ msgstr "인쇄물에서 지지대의 바닥까지의 거리. " #: fdmprinter.def.json msgctxt "support_xy_distance label" msgid "Support X/Y Distance" -msgstr "" +msgstr "X / Y 지지대 거리" #: fdmprinter.def.json msgctxt "support_xy_distance description" @@ -2925,7 +3075,7 @@ msgstr "X / Y 방향에서 인쇄물로부터지지 구조까지의 거리. " #: fdmprinter.def.json msgctxt "support_xy_overrides_z label" msgid "Support Distance Priority" -msgstr "" +msgstr "지지대 거리 우선 순위" #: fdmprinter.def.json msgctxt "support_xy_overrides_z description" @@ -2935,17 +3085,17 @@ msgstr "지원 X / Y 거리가지지 Z 거리를 무시하는지 여부를 나 #: fdmprinter.def.json msgctxt "support_xy_overrides_z option xy_overrides_z" msgid "X/Y overrides Z" -msgstr "" +msgstr "X / Y가 Z를 무시합니다." #: fdmprinter.def.json msgctxt "support_xy_overrides_z option z_overrides_xy" msgid "Z overrides X/Y" -msgstr "" +msgstr "Z가 X / Y를 무시합니다." #: fdmprinter.def.json msgctxt "support_xy_distance_overhang label" msgid "Minimum Support X/Y Distance" -msgstr "" +msgstr "최소 지지대 X / Y 거리" #: fdmprinter.def.json msgctxt "support_xy_distance_overhang description" @@ -2955,7 +3105,7 @@ msgstr "X / Y 방향에서 오버행으로부터지지 구조까지의 거리. " #: fdmprinter.def.json msgctxt "support_bottom_stair_step_height label" msgid "Support Stair Step Height" -msgstr "" +msgstr "계단 Step Height 지지대" #: fdmprinter.def.json msgctxt "support_bottom_stair_step_height description" @@ -2965,7 +3115,7 @@ msgstr "모델에있는 지지대의 계단 모양 바닥의 계단 높이. 값 #: fdmprinter.def.json msgctxt "support_bottom_stair_step_width label" msgid "Support Stair Step Maximum Width" -msgstr "" +msgstr "지원 계단 스텝 최대 폭" #: fdmprinter.def.json msgctxt "support_bottom_stair_step_width description" @@ -2975,7 +3125,7 @@ msgstr "모델에있는 지지대의 계단 모양 바닥의 최대 폭. 값이 #: fdmprinter.def.json msgctxt "support_join_distance label" msgid "Support Join Distance" -msgstr "" +msgstr "지지대 Join 거리" #: fdmprinter.def.json msgctxt "support_join_distance description" @@ -2985,7 +3135,7 @@ msgstr "X / Y 방향으로지지 구조물 사이의 최대 거리. 별도의 #: fdmprinter.def.json msgctxt "support_offset label" msgid "Support Horizontal Expansion" -msgstr "" +msgstr "수평 확장 지지대" #: fdmprinter.def.json msgctxt "support_offset description" @@ -2995,7 +3145,7 @@ msgstr "각 레이어의 모든 지원 다각형에 적용된 오프셋의 양 #: fdmprinter.def.json msgctxt "support_infill_sparse_thickness label" msgid "Support Infill Layer Thickness" -msgstr "" +msgstr "지지대 충진 레이어 두께" #: fdmprinter.def.json msgctxt "support_infill_sparse_thickness description" @@ -3005,7 +3155,7 @@ msgstr "충전재 층의 두께. 이 값은 항상 레이어 높이의 배수 #: fdmprinter.def.json msgctxt "gradual_support_infill_steps label" msgid "Gradual Support Infill Steps" -msgstr "" +msgstr "점진적 지지대 충진 단계" #: fdmprinter.def.json msgctxt "gradual_support_infill_steps description" @@ -3015,7 +3165,7 @@ msgstr "상단 표면 아래로 올라갈 때 지원 충전 밀도를 반으로 #: fdmprinter.def.json msgctxt "gradual_support_infill_step_height label" msgid "Gradual Support Infill Step Height" -msgstr "" +msgstr "점진적 지지대 충진 스텝 높이" #: fdmprinter.def.json msgctxt "gradual_support_infill_step_height description" @@ -3025,7 +3175,7 @@ msgstr "밀도의 절반으로 전환하기 전에 주어진 밀도의 지지체 #: fdmprinter.def.json msgctxt "support_interface_enable label" msgid "Enable Support Interface" -msgstr "" +msgstr "지지대 인터페이스 사용" #: fdmprinter.def.json msgctxt "support_interface_enable description" @@ -3035,7 +3185,7 @@ msgstr "모델과 지원 사이에 조밀 한 인터페이스를 생성하십시 #: fdmprinter.def.json msgctxt "support_roof_enable label" msgid "Enable Support Roof" -msgstr "" +msgstr "지지대 지붕 활성화" #: fdmprinter.def.json msgctxt "support_roof_enable description" @@ -3045,7 +3195,7 @@ msgstr "지지대 상단과 모델 사이에 조밀 한 슬래브를 생성하 #: fdmprinter.def.json msgctxt "support_bottom_enable label" msgid "Enable Support Floor" -msgstr "" +msgstr "지지대 바닥 사용" #: fdmprinter.def.json msgctxt "support_bottom_enable description" @@ -3055,7 +3205,7 @@ msgstr "지지대 바닥과 모델 사이에 조밀 한 슬래브를 생성하 #: fdmprinter.def.json msgctxt "support_interface_height label" msgid "Support Interface Thickness" -msgstr "" +msgstr "지지대 인터페이스 두께" #: fdmprinter.def.json msgctxt "support_interface_height description" @@ -3065,7 +3215,7 @@ msgstr "밑면 또는 상단의 모델과 접촉하는 지지점의 인터페이 #: fdmprinter.def.json msgctxt "support_roof_height label" msgid "Support Roof Thickness" -msgstr "" +msgstr "지지대 지붕 두께" #: fdmprinter.def.json msgctxt "support_roof_height description" @@ -3075,7 +3225,7 @@ msgstr "받침 지붕의 두께. 이것은 모델이 놓이는 받침대 상단 #: fdmprinter.def.json msgctxt "support_bottom_height label" msgid "Support Floor Thickness" -msgstr "" +msgstr "지지대 바닥 두께" #: fdmprinter.def.json msgctxt "support_bottom_height description" @@ -3085,7 +3235,7 @@ msgstr "지지 층의 두께. 이것은 지지대가 놓여있는 모델의 상 #: fdmprinter.def.json msgctxt "support_interface_skip_height label" msgid "Support Interface Resolution" -msgstr "" +msgstr "지지대 인터페이스 해상도" #: fdmprinter.def.json msgctxt "support_interface_skip_height description" @@ -3095,7 +3245,7 @@ msgstr "지원 모델의 위와 아래에 모델이 있는지 확인하려면 #: fdmprinter.def.json msgctxt "support_interface_density label" msgid "Support Interface Density" -msgstr "" +msgstr "지지대 인터페이스 밀도" #: fdmprinter.def.json msgctxt "support_interface_density description" @@ -3105,7 +3255,7 @@ msgstr "지지 구조의 지붕 및 바닥 밀도를 조정합니다. 값이 높 #: fdmprinter.def.json msgctxt "support_roof_density label" msgid "Support Roof Density" -msgstr "" +msgstr "지지대 지붕 밀도" #: fdmprinter.def.json msgctxt "support_roof_density description" @@ -3115,7 +3265,7 @@ msgstr "지지 구조의 지붕의 밀도. 값이 높을수록 오버행이 좋 #: fdmprinter.def.json msgctxt "support_roof_line_distance label" msgid "Support Roof Line Distance" -msgstr "" +msgstr "지지대 지붕 선 거리" #: fdmprinter.def.json msgctxt "support_roof_line_distance description" @@ -3125,7 +3275,7 @@ msgstr "인쇄 된 지붕 루프 사이의 거리. 이 설정은지지 지붕 #: fdmprinter.def.json msgctxt "support_bottom_density label" msgid "Support Floor Density" -msgstr "" +msgstr "지지대 바닥 밀도" #: fdmprinter.def.json msgctxt "support_bottom_density description" @@ -3135,7 +3285,7 @@ msgstr "지지 구조체의 바닥 밀도. 값이 높을수록 지지대가 모 #: fdmprinter.def.json msgctxt "support_bottom_line_distance label" msgid "Support Floor Line Distance" -msgstr "" +msgstr "지지대 바닥 선 거리" #: fdmprinter.def.json msgctxt "support_bottom_line_distance description" @@ -3145,7 +3295,7 @@ msgstr "인쇄 된지지 플로어 사이의 거리. 이 설정은 Support Floor #: fdmprinter.def.json msgctxt "support_interface_pattern label" msgid "Support Interface Pattern" -msgstr "" +msgstr "지지대 인터페이스 패턴" #: fdmprinter.def.json msgctxt "support_interface_pattern description" @@ -3155,37 +3305,37 @@ msgstr "모델과 지원 인터페이스를 인쇄하는 패턴입니다. " #: fdmprinter.def.json msgctxt "support_interface_pattern option lines" msgid "Lines" -msgstr "" +msgstr "윤곽" #: fdmprinter.def.json msgctxt "support_interface_pattern option grid" msgid "Grid" -msgstr "" +msgstr "그리드" #: fdmprinter.def.json msgctxt "support_interface_pattern option triangles" msgid "Triangles" -msgstr "" +msgstr "삼각형" #: fdmprinter.def.json msgctxt "support_interface_pattern option concentric" msgid "Concentric" -msgstr "" +msgstr "동심원의" #: fdmprinter.def.json msgctxt "support_interface_pattern option concentric_3d" msgid "Concentric 3D" -msgstr "" +msgstr "동심원 3D" #: fdmprinter.def.json msgctxt "support_interface_pattern option zigzag" msgid "Zig Zag" -msgstr "" +msgstr "지그재그" #: fdmprinter.def.json msgctxt "support_roof_pattern label" msgid "Support Roof Pattern" -msgstr "" +msgstr "지지대 지붕 패턴" #: fdmprinter.def.json msgctxt "support_roof_pattern description" @@ -3195,37 +3345,37 @@ msgstr "지지대의 지붕이 인쇄되는 패턴. " #: fdmprinter.def.json msgctxt "support_roof_pattern option lines" msgid "Lines" -msgstr "" +msgstr "윤곽" #: fdmprinter.def.json msgctxt "support_roof_pattern option grid" msgid "Grid" -msgstr "" +msgstr "그리드" #: fdmprinter.def.json msgctxt "support_roof_pattern option triangles" msgid "Triangles" -msgstr "" +msgstr "삼각형" #: fdmprinter.def.json msgctxt "support_roof_pattern option concentric" msgid "Concentric" -msgstr "" +msgstr "동심원의" #: fdmprinter.def.json msgctxt "support_roof_pattern option concentric_3d" msgid "Concentric 3D" -msgstr "" +msgstr "동심원의 3D" #: fdmprinter.def.json msgctxt "support_roof_pattern option zigzag" msgid "Zig Zag" -msgstr "" +msgstr "지그재그" #: fdmprinter.def.json msgctxt "support_bottom_pattern label" msgid "Support Floor Pattern" -msgstr "" +msgstr "지지대 바닥 패턴" #: fdmprinter.def.json msgctxt "support_bottom_pattern description" @@ -3235,37 +3385,37 @@ msgstr "받침대의 바닥이 인쇄되는 패턴. " #: fdmprinter.def.json msgctxt "support_bottom_pattern option lines" msgid "Lines" -msgstr "" +msgstr "윤곽" #: fdmprinter.def.json msgctxt "support_bottom_pattern option grid" msgid "Grid" -msgstr "" +msgstr "그리드" #: fdmprinter.def.json msgctxt "support_bottom_pattern option triangles" msgid "Triangles" -msgstr "" +msgstr "삼각형" #: fdmprinter.def.json msgctxt "support_bottom_pattern option concentric" msgid "Concentric" -msgstr "" +msgstr "동심원의" #: fdmprinter.def.json msgctxt "support_bottom_pattern option concentric_3d" msgid "Concentric 3D" -msgstr "" +msgstr "동심원 3D" #: fdmprinter.def.json msgctxt "support_bottom_pattern option zigzag" msgid "Zig Zag" -msgstr "" +msgstr "지그재그" #: fdmprinter.def.json msgctxt "support_use_towers label" msgid "Use Towers" -msgstr "" +msgstr "탑 사용" #: fdmprinter.def.json msgctxt "support_use_towers description" @@ -3275,7 +3425,7 @@ msgstr "작은 돌출 부분을 지원하기 위해 특수한 탑을 사용하 #: fdmprinter.def.json msgctxt "support_tower_diameter label" msgid "Tower Diameter" -msgstr "" +msgstr "타워 지름" #: fdmprinter.def.json msgctxt "support_tower_diameter description" @@ -3285,7 +3435,7 @@ msgstr "특수 타워의 지름. " #: fdmprinter.def.json msgctxt "support_minimal_diameter label" msgid "Minimum Diameter" -msgstr "" +msgstr "최소 지름" #: fdmprinter.def.json msgctxt "support_minimal_diameter description" @@ -3295,7 +3445,7 @@ msgstr "특수 지지대에 의해지지 될 작은 영역의 X / Y 방향의 #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" msgid "Tower Roof Angle" -msgstr "" +msgstr "타워 지붕 각도" #: fdmprinter.def.json msgctxt "support_tower_roof_angle description" @@ -3305,7 +3455,7 @@ msgstr "타워 옥상의 각도입니다. 높은 값을 지정하면 뾰족한 #: fdmprinter.def.json msgctxt "platform_adhesion label" msgid "Build Plate Adhesion" -msgstr "" +msgstr "플레이트 접착력 강화" #: fdmprinter.def.json msgctxt "platform_adhesion description" @@ -3315,7 +3465,7 @@ msgstr "부착 " #: fdmprinter.def.json msgctxt "prime_blob_enable label" msgid "Enable Prime Blob" -msgstr "" +msgstr "프라임 블롭 활성화" #: fdmprinter.def.json msgctxt "prime_blob_enable description" @@ -3325,7 +3475,7 @@ msgstr "인쇄하기 전에 얼룩으로 필라멘트를 프라이밍할지 여 #: fdmprinter.def.json msgctxt "extruder_prime_pos_x label" msgid "Extruder Prime X Position" -msgstr "" +msgstr "압출기 프라임 X 위치" #: fdmprinter.def.json msgctxt "extruder_prime_pos_x description" @@ -3335,7 +3485,7 @@ msgstr "인쇄가 시작될 때 노즐이 끝내는 위치의 X 좌표입니다. #: fdmprinter.def.json msgctxt "extruder_prime_pos_y label" msgid "Extruder Prime Y Position" -msgstr "" +msgstr "압출기 프라임 Y 위치" #: fdmprinter.def.json msgctxt "extruder_prime_pos_y description" @@ -3345,7 +3495,7 @@ msgstr "인쇄가 시작될 때 노즐이 끝내는 위치의 Y 좌표입니다. #: fdmprinter.def.json msgctxt "adhesion_type label" msgid "Build Plate Adhesion Type" -msgstr "" +msgstr "빌드 플레이트 접착 유형" #: fdmprinter.def.json msgctxt "adhesion_type description" @@ -3355,27 +3505,27 @@ msgstr "귀하의 압출 및 빌드 플레이트에 대한 접착력을 향상 #: fdmprinter.def.json msgctxt "adhesion_type option skirt" msgid "Skirt" -msgstr "" +msgstr " Skirt" #: fdmprinter.def.json msgctxt "adhesion_type option brim" msgid "Brim" -msgstr "" +msgstr "Brim" #: fdmprinter.def.json msgctxt "adhesion_type option raft" msgid "Raft" -msgstr "" +msgstr "Raft" #: fdmprinter.def.json msgctxt "adhesion_type option none" msgid "None" -msgstr "" +msgstr "None" #: fdmprinter.def.json msgctxt "adhesion_extruder_nr label" msgid "Build Plate Adhesion Extruder" -msgstr "" +msgstr "빌드 플레이트 접착 압출기" #: fdmprinter.def.json msgctxt "adhesion_extruder_nr description" @@ -3385,7 +3535,7 @@ msgstr "스커트 / 가장자리 / 래프트 인쇄에 사용하는 압출기 #: fdmprinter.def.json msgctxt "skirt_line_count label" msgid "Skirt Line Count" -msgstr "" +msgstr "Skirt 선 수" #: fdmprinter.def.json msgctxt "skirt_line_count description" @@ -3395,19 +3545,19 @@ msgstr "여러 개의 스커트 라인을 사용하여 작은 모델에 더 잘 #: fdmprinter.def.json msgctxt "skirt_gap label" msgid "Skirt Distance" -msgstr "" +msgstr "Skirt 거리" #: fdmprinter.def.json 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 "스커트와 인쇄물의 첫 번째 레이어 사이의 수평 거리입니다. 이것은 최소 거리이며, 여러 스커트 라인이이 거리에서 바깥쪽으로 확장됩니다. " +"This is the minimum distance. Multiple skirt lines will extend outwards from this distance." +msgstr "프린트의 스커트와 첫 번째 레이어 사이의 수직 거리입니다.\n이는 최소 거리입니다. 여러 개의 스커트 선이 이 거리에서 바깥쪽으로 연장됩니다." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" msgid "Skirt/Brim Minimum Length" -msgstr "" +msgstr "Skirt/Brim 최소 길이" #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length description" @@ -3417,7 +3567,7 @@ msgstr "스커트 또는 고리의 최소 길이. 이 길이에 모든 스커트 #: fdmprinter.def.json msgctxt "brim_width label" msgid "Brim Width" -msgstr "" +msgstr "브림 너비" #: fdmprinter.def.json msgctxt "brim_width description" @@ -3427,7 +3577,7 @@ msgstr "모델에서 가장 바깥 쪽 가장자리까지의 거리입니다. #: fdmprinter.def.json msgctxt "brim_line_count label" msgid "Brim Line Count" -msgstr "" +msgstr "Brim 선 수" #: fdmprinter.def.json msgctxt "brim_line_count description" @@ -3437,37 +3587,17 @@ msgstr "가장자리에 사용되는 선의 수입니다. 더 많은 브림 선 #: fdmprinter.def.json msgctxt "brim_outside_only label" msgid "Brim Only on Outside" -msgstr "" +msgstr "밖에서 만 Brim" #: fdmprinter.def.json 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 "압출기는이 양만큼 제 1 층의 정상 높이로부터 오프셋된다. 양수 (양수) 또는 음수 (양수) 일 수 있습니다. 압출기를 약간 올리면 일부 필라멘트 유형이 빌드 플레이트에 잘 밀착됩니다. " - -#: 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 "0이 아니면 Z 오프셋은 많은 레이어에서 0으로 줄어 듭니다. 값 0은 인쇄물의 모든 레이어에 대해 Z 오프셋이 일정하게 유지됨을 의미합니다. " - #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" -msgstr "" +msgstr "Raft 여분 여백" #: fdmprinter.def.json msgctxt "raft_margin description" @@ -3477,17 +3607,17 @@ msgstr "래프트가 활성화 된 경우 래프트가 주어진 모델 주변 #: 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 "이 설정은 뗏목 윤곽의 내부 모서리가 둥근 정도를 제어합니다. 안쪽 모서리는 여기에 주어진 값과 같은 반경을 가진 반원으로 반올림됩니다. 이 설정은 또한 뗏목 외곽선에서 그러한 원보다 작은 구멍을 제거합니다. " +msgid "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." +msgstr "이 설정은 래프트 윤곽의 안쪽 구석의 곡률을 제어합니다. 안쪽 구석이 여기에 지정된 값과 동일한 반경으로 반원 모양으로 휘어집니다. 또한 이 설정을 사용하면 래프트 윤곽에서 그러한 원보다 작은 구멍이 제거됩니다." #: fdmprinter.def.json msgctxt "raft_airgap label" msgid "Raft Air Gap" -msgstr "" +msgstr "Raft 에어 갭" #: fdmprinter.def.json msgctxt "raft_airgap description" @@ -3497,7 +3627,7 @@ msgstr "최종 래프트 층과 모델의 첫 번째 층 사이의 틈새. 래 #: fdmprinter.def.json msgctxt "layer_0_z_overlap label" msgid "Initial Layer Z Overlap" -msgstr "" +msgstr "초기 레이어 Z 겹침" #: fdmprinter.def.json msgctxt "layer_0_z_overlap description" @@ -3507,7 +3637,7 @@ msgstr "에어 갭에서 손실 된 필라멘트를 보완하기 위해 Z 방향 #: fdmprinter.def.json msgctxt "raft_surface_layers label" msgid "Raft Top Layers" -msgstr "" +msgstr "Raft 탑 레이어" #: fdmprinter.def.json msgctxt "raft_surface_layers description" @@ -3517,7 +3647,7 @@ msgstr "두 번째 래프트 레이어 맨 위에있는 최상위 레이어의 #: fdmprinter.def.json msgctxt "raft_surface_thickness label" msgid "Raft Top Layer Thickness" -msgstr "" +msgstr "Raft 상단 레이어 두께" #: fdmprinter.def.json msgctxt "raft_surface_thickness description" @@ -3527,7 +3657,7 @@ msgstr "상단 래프트 레이어의 레이어 두께. " #: fdmprinter.def.json msgctxt "raft_surface_line_width label" msgid "Raft Top Line Width" -msgstr "" +msgstr "raft 상단 선 너비" #: fdmprinter.def.json msgctxt "raft_surface_line_width description" @@ -3537,7 +3667,7 @@ msgstr "래프트의 윗면에있는 선의 폭. 래프트의 상단이 매끄 #: fdmprinter.def.json msgctxt "raft_surface_line_spacing label" msgid "Raft Top Spacing" -msgstr "" +msgstr "Raft 상단 간격" #: fdmprinter.def.json msgctxt "raft_surface_line_spacing description" @@ -3547,7 +3677,7 @@ msgstr "상단 래프트 레이어에 대한 래프트 사이의 거리. 간격 #: fdmprinter.def.json msgctxt "raft_interface_thickness label" msgid "Raft Middle Thickness" -msgstr "" +msgstr "Raft 중간 두께" #: fdmprinter.def.json msgctxt "raft_interface_thickness description" @@ -3557,7 +3687,7 @@ msgstr "중간 래프트 층의 층 두께. " #: fdmprinter.def.json msgctxt "raft_interface_line_width label" msgid "Raft Middle Line Width" -msgstr "" +msgstr "Raft 중간 선 너비" #: fdmprinter.def.json msgctxt "raft_interface_line_width description" @@ -3567,7 +3697,7 @@ msgstr "중간 래프트 층의 선폭. 두 번째 레이어를 더 돌출 시 #: fdmprinter.def.json msgctxt "raft_interface_line_spacing label" msgid "Raft Middle Spacing" -msgstr "" +msgstr "Raft 중간 간격" #: fdmprinter.def.json msgctxt "raft_interface_line_spacing description" @@ -3577,7 +3707,7 @@ msgstr "중간 래프트 층에 대한 래프트 사이의 거리. 중간 틈새 #: fdmprinter.def.json msgctxt "raft_base_thickness label" msgid "Raft Base Thickness" -msgstr "" +msgstr "Raft 기준 두께" #: fdmprinter.def.json msgctxt "raft_base_thickness description" @@ -3587,7 +3717,7 @@ msgstr "기본 래프트 레이어의 레이어 두께. 이것은 프린터 빌 #: fdmprinter.def.json msgctxt "raft_base_line_width label" msgid "Raft Base Line Width" -msgstr "" +msgstr "Raft 기준 선 너비" #: fdmprinter.def.json msgctxt "raft_base_line_width description" @@ -3597,7 +3727,7 @@ msgstr "기본 래프트 층에있는 선의 너비. 이것은 빌드 플레이 #: fdmprinter.def.json msgctxt "raft_base_line_spacing label" msgid "Raft Line Spacing" -msgstr "" +msgstr "Raft 선 간격" #: fdmprinter.def.json msgctxt "raft_base_line_spacing description" @@ -3607,7 +3737,7 @@ msgstr "기본 래프트 층에 대한 래프트 사이의 거리. 넓은 간격 #: fdmprinter.def.json msgctxt "raft_speed label" msgid "Raft Print Speed" -msgstr "" +msgstr "Raft 인쇄 속도" #: fdmprinter.def.json msgctxt "raft_speed description" @@ -3617,7 +3747,7 @@ msgstr "래프트가 인쇄되는 속도. " #: fdmprinter.def.json msgctxt "raft_surface_speed label" msgid "Raft Top Print Speed" -msgstr "" +msgstr "Raft 상단 인쇄 속도" #: fdmprinter.def.json msgctxt "raft_surface_speed description" @@ -3627,7 +3757,7 @@ msgstr "상단 래프트 레이어가 인쇄되는 속도입니다. 이 노즐 #: fdmprinter.def.json msgctxt "raft_interface_speed label" msgid "Raft Middle Print Speed" -msgstr "" +msgstr "Raft 중앙 인쇄 속도" #: fdmprinter.def.json msgctxt "raft_interface_speed description" @@ -3637,7 +3767,7 @@ msgstr "중간 래프트 층이 인쇄되는 속도. 이것은 노즐에서 나 #: fdmprinter.def.json msgctxt "raft_base_speed label" msgid "Raft Base Print Speed" -msgstr "" +msgstr "Raft 기본 인쇄 속도" #: fdmprinter.def.json msgctxt "raft_base_speed description" @@ -3647,7 +3777,7 @@ msgstr "기본 래프트 레이어가 인쇄되는 속도입니다. 이것은 #: fdmprinter.def.json msgctxt "raft_acceleration label" msgid "Raft Print Acceleration" -msgstr "" +msgstr "Raft 인쇄 가속도" #: fdmprinter.def.json msgctxt "raft_acceleration description" @@ -3657,7 +3787,7 @@ msgstr "래프트가 인쇄되는 가속도. " #: fdmprinter.def.json msgctxt "raft_surface_acceleration label" msgid "Raft Top Print Acceleration" -msgstr "" +msgstr "Raft 상단 인쇄 가속도" #: fdmprinter.def.json msgctxt "raft_surface_acceleration description" @@ -3667,7 +3797,7 @@ msgstr "상단 래프트 레이어가 인쇄되는 가속도입니다. " #: fdmprinter.def.json msgctxt "raft_interface_acceleration label" msgid "Raft Middle Print Acceleration" -msgstr "" +msgstr "Raft 중앙 인쇄 가속도" #: fdmprinter.def.json msgctxt "raft_interface_acceleration description" @@ -3677,7 +3807,7 @@ msgstr "중간 래프트 층이 인쇄되는 가속도. " #: fdmprinter.def.json msgctxt "raft_base_acceleration label" msgid "Raft Base Print Acceleration" -msgstr "" +msgstr "Raft 기본 인쇄 가속도" #: fdmprinter.def.json msgctxt "raft_base_acceleration description" @@ -3687,7 +3817,7 @@ msgstr "기본 래프트 레이어가 인쇄되는 가속도입니다. " #: fdmprinter.def.json msgctxt "raft_jerk label" msgid "Raft Print Jerk" -msgstr "" +msgstr "Raft 인쇄 Jerk" #: fdmprinter.def.json msgctxt "raft_jerk description" @@ -3697,7 +3827,7 @@ msgstr "래프트와 함께 인쇄되는 저크. " #: fdmprinter.def.json msgctxt "raft_surface_jerk label" msgid "Raft Top Print Jerk" -msgstr "" +msgstr "Raft 상단 인쇄 Jerk" #: fdmprinter.def.json msgctxt "raft_surface_jerk description" @@ -3707,7 +3837,7 @@ msgstr "상단 래프트 레이어가 인쇄되는 저크. " #: fdmprinter.def.json msgctxt "raft_interface_jerk label" msgid "Raft Middle Print Jerk" -msgstr "" +msgstr "Raft 중앙 인쇄 Jerk" #: fdmprinter.def.json msgctxt "raft_interface_jerk description" @@ -3717,7 +3847,7 @@ msgstr "중간 래프트 층이 인쇄되는 저크. " #: fdmprinter.def.json msgctxt "raft_base_jerk label" msgid "Raft Base Print Jerk" -msgstr "" +msgstr "Raft 기본 인쇄 Jerk" #: fdmprinter.def.json msgctxt "raft_base_jerk description" @@ -3727,7 +3857,7 @@ msgstr "기본 래프트 레이어가 인쇄되는 저크. " #: fdmprinter.def.json msgctxt "raft_fan_speed label" msgid "Raft Fan Speed" -msgstr "" +msgstr "Raft 팬 속도" #: fdmprinter.def.json msgctxt "raft_fan_speed description" @@ -3737,7 +3867,7 @@ msgstr "래프트의 팬 속도. " #: fdmprinter.def.json msgctxt "raft_surface_fan_speed label" msgid "Raft Top Fan Speed" -msgstr "" +msgstr "Raft 상단 팬 속도" #: fdmprinter.def.json msgctxt "raft_surface_fan_speed description" @@ -3747,7 +3877,7 @@ msgstr "상단 래프트 레이어의 팬 속도입니다. " #: fdmprinter.def.json msgctxt "raft_interface_fan_speed label" msgid "Raft Middle Fan Speed" -msgstr "" +msgstr "Raft 중앙 팬 속도" #: fdmprinter.def.json msgctxt "raft_interface_fan_speed description" @@ -3757,7 +3887,7 @@ msgstr "중간 래프트 레이어의 팬 속도입니다. " #: fdmprinter.def.json msgctxt "raft_base_fan_speed label" msgid "Raft Base Fan Speed" -msgstr "" +msgstr "Raft 기본 팬 속도" #: fdmprinter.def.json msgctxt "raft_base_fan_speed description" @@ -3767,7 +3897,7 @@ msgstr "기본 래프트 레이어의 팬 속도입니다. " #: fdmprinter.def.json msgctxt "dual label" msgid "Dual Extrusion" -msgstr "" +msgstr "이중 압출" #: fdmprinter.def.json msgctxt "dual description" @@ -3777,7 +3907,7 @@ msgstr "여러 압출기로 인쇄 할 때 사용되는 설정입니다. " #: fdmprinter.def.json msgctxt "prime_tower_enable label" msgid "Enable Prime Tower" -msgstr "" +msgstr "프라임 타워 사용" #: fdmprinter.def.json msgctxt "prime_tower_enable description" @@ -3787,7 +3917,7 @@ msgstr "각 노즐을 교체 한 후에 재료를 프라이밍(Priming)하는 #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" -msgstr "" +msgstr "프라임 타워 사이즈" #: fdmprinter.def.json msgctxt "prime_tower_size description" @@ -3797,7 +3927,7 @@ msgstr "프라임 타워의 너비." #: fdmprinter.def.json msgctxt "prime_tower_min_volume label" msgid "Prime Tower Minimum Volume" -msgstr "" +msgstr "프라임 타워 최소 볼륨" #: fdmprinter.def.json msgctxt "prime_tower_min_volume description" @@ -3807,7 +3937,7 @@ msgstr "충분한 재료를 퍼지하기 위해 프라임 타워 각 층의 최 #: fdmprinter.def.json msgctxt "prime_tower_wall_thickness label" msgid "Prime Tower Thickness" -msgstr "" +msgstr "프라임 타워 두께" #: fdmprinter.def.json msgctxt "prime_tower_wall_thickness description" @@ -3817,7 +3947,7 @@ msgstr "속이 빈 프라임 타워의 두께. 프라임 타워의 최소 볼륨 #: fdmprinter.def.json msgctxt "prime_tower_position_x label" msgid "Prime Tower X Position" -msgstr "" +msgstr "프라임 타워 X 위치" #: fdmprinter.def.json msgctxt "prime_tower_position_x description" @@ -3827,7 +3957,7 @@ msgstr "프라임 타워 위치의 x 좌표입니다. " #: fdmprinter.def.json msgctxt "prime_tower_position_y label" msgid "Prime Tower Y Position" -msgstr "" +msgstr "프라임 타워 Y 위치" #: fdmprinter.def.json msgctxt "prime_tower_position_y description" @@ -3837,7 +3967,7 @@ msgstr "프라임 타워 위치의 y 좌표입니다. " #: fdmprinter.def.json msgctxt "prime_tower_flow label" msgid "Prime Tower Flow" -msgstr "" +msgstr "프라임 타워 공급량" #: fdmprinter.def.json msgctxt "prime_tower_flow description" @@ -3847,7 +3977,7 @@ msgstr "유량 보상 : 압출 된 재료의 양에이 값을 곱합니다. " #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" -msgstr "" +msgstr "프라임 타워의 비활성 노즐 닦아 내기" #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled description" @@ -3857,7 +3987,7 @@ msgstr "하나의 노즐로 프라임 타워를 인쇄 한 후, 다른 타워의 #: fdmprinter.def.json msgctxt "dual_pre_wipe label" msgid "Wipe Nozzle After Switch" -msgstr "" +msgstr "스위치 후 노즐 닦기" #: fdmprinter.def.json msgctxt "dual_pre_wipe description" @@ -3867,7 +3997,7 @@ msgstr "압출기를 전환 한 후, 인쇄 된 첫 번째 것을 노즐에서 #: fdmprinter.def.json msgctxt "prime_tower_purge_volume label" msgid "Prime Tower Purge Volume" -msgstr "" +msgstr "프라임 타워 퍼지 볼륨" #: fdmprinter.def.json msgctxt "prime_tower_purge_volume description" @@ -3877,7 +4007,7 @@ msgstr "프라임 타워에서 닦을 때 제거 할 필라멘트의 양. 퍼지 #: fdmprinter.def.json msgctxt "ooze_shield_enabled label" msgid "Enable Ooze Shield" -msgstr "" +msgstr "Ooze Shield 사용" #: fdmprinter.def.json msgctxt "ooze_shield_enabled description" @@ -3887,7 +4017,7 @@ msgstr "외장 방음 장치를 사용하십시오. 이렇게하면 첫 번째 #: fdmprinter.def.json msgctxt "ooze_shield_angle label" msgid "Ooze Shield Angle" -msgstr "" +msgstr "Ooze Shield 각" #: fdmprinter.def.json msgctxt "ooze_shield_angle description" @@ -3897,7 +4027,7 @@ msgstr "방패망의 한 부분이 가질 최대 각도입니다. \"0\"도가 #: fdmprinter.def.json msgctxt "ooze_shield_dist label" msgid "Ooze Shield Distance" -msgstr "" +msgstr "Ooze Shield 거리" #: fdmprinter.def.json msgctxt "ooze_shield_dist description" @@ -3907,7 +4037,7 @@ msgstr "X / Y 방향으로 인쇄물에서 방패망까지의 거리. " #: fdmprinter.def.json msgctxt "meshfix label" msgid "Mesh Fixes" -msgstr "" +msgstr "메쉬 수정" #: fdmprinter.def.json msgctxt "meshfix description" @@ -3917,7 +4047,7 @@ msgstr "카테고리 수정 " #: fdmprinter.def.json msgctxt "meshfix_union_all label" msgid "Union Overlapping Volumes" -msgstr "" +msgstr "유니언 오버랩 볼륨" #: fdmprinter.def.json msgctxt "meshfix_union_all description" @@ -3927,7 +4057,7 @@ msgstr "메쉬 내의 겹치는 볼륨으로 인해 발생하는 내부 지오 #: fdmprinter.def.json msgctxt "meshfix_union_all_remove_holes label" msgid "Remove All Holes" -msgstr "" +msgstr "모든 구멍을 제거하십시오" #: fdmprinter.def.json msgctxt "meshfix_union_all_remove_holes description" @@ -3937,7 +4067,7 @@ msgstr "각 레이어의 구멍을 제거하고 바깥 쪽 모양 만 유지합 #: fdmprinter.def.json msgctxt "meshfix_extensive_stitching label" msgid "Extensive Stitching" -msgstr "" +msgstr "광범위한 스티칭" #: fdmprinter.def.json msgctxt "meshfix_extensive_stitching description" @@ -3947,17 +4077,27 @@ msgstr "광범위한 스티칭은 다각형을 만지면서 구멍을 닫음으 #: fdmprinter.def.json msgctxt "meshfix_keep_open_polygons label" msgid "Keep Disconnected Faces" -msgstr "" +msgstr "끊긴 면 유지" #: fdmprinter.def.json msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "일반적으로 큐라(Cura)는 메쉬의 작은 구멍을 꿰매 붙이고 큰 구멍이있는 레이어의 부분을 제거하려고합니다. 이 옵션을 활성화하면 스티칭 할 수없는 파트가 유지됩니다. 이 옵션은 다른 모든 것이 올바른 GCode를 생성하지 못할 때 최후의 수단으로 사용해야합니다. " +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "최대 해상도" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "슬라이딩 후의 선분의 최소 크기입니다. 이 값을 높이면 메쉬의 해상도가 낮아집니다. 그러면 프린터가 G 코드를 처리하는 데 필요한 속도를 유지할 수 있으며 처리할 수 없는 메쉬의 디테일이 제거되므로 슬라이드 속도가 높아집니다." + #: fdmprinter.def.json msgctxt "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" -msgstr "" +msgstr "Merged Meshes 중복" #: fdmprinter.def.json msgctxt "multiple_mesh_overlap description" @@ -3967,7 +4107,7 @@ msgstr "서로 닿는 메쉬가 조금 겹치게 만듭니다. 이것은 그들 #: fdmprinter.def.json msgctxt "carve_multiple_volumes label" msgid "Remove Mesh Intersection" -msgstr "" +msgstr "메쉬 교차 제거" #: fdmprinter.def.json msgctxt "carve_multiple_volumes description" @@ -3977,17 +4117,27 @@ msgstr "여러 메시가 서로 겹치는 영역을 제거하십시오. 병합 #: fdmprinter.def.json msgctxt "alternate_carve_order label" msgid "Alternate Mesh Removal" -msgstr "" +msgstr "대체 메쉬 제거" #: fdmprinter.def.json msgctxt "alternate_carve_order description" msgid "Switch to which mesh intersecting volumes will belong with every layer, so that the overlapping meshes become interwoven. Turning this setting off will cause one of the meshes to obtain all of the volume in the overlap, while it is removed from the other meshes." msgstr "교차하는 메쉬로 교차하는 볼륨으로 전환하면 겹치는 메쉬가 서로 얽 히게됩니다. 이 설정을 해제하면 메시 중 하나가 다른 메시에서 제거되는 동안 오버랩의 모든 볼륨을 가져옵니다. " +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers label" +msgid "Remove Empty First Layers" +msgstr "비어 있는 첫 번째 레이어 제거" + +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers description" +msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." +msgstr "첫 번째로 인쇄된 레이어 바로 아래의 비어 있는 레이어를 제거합니다(있는 경우). 이 설정을 해제하면 슬라이딩 허용 오차 설정을 배타 또는 중간으로 설정할 경우 첫 번째 레이어가 비어 있게 될 수 있습니다." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" -msgstr "" +msgstr "특수 모드" #: fdmprinter.def.json msgctxt "blackmagic description" @@ -3997,7 +4147,7 @@ msgstr "블랙매직 카테고리 " #: fdmprinter.def.json msgctxt "print_sequence label" msgid "Print Sequence" -msgstr "" +msgstr "인쇄 순서" #: fdmprinter.def.json msgctxt "print_sequence description" @@ -4007,17 +4157,17 @@ msgstr "한 번에 한 레이어 씩 모든 모델을 인쇄할지 또는 한 #: fdmprinter.def.json msgctxt "print_sequence option all_at_once" msgid "All at Once" -msgstr "" +msgstr "한꺼번에" #: fdmprinter.def.json msgctxt "print_sequence option one_at_a_time" msgid "One at a Time" -msgstr "" +msgstr "한번에 한" #: fdmprinter.def.json msgctxt "infill_mesh label" msgid "Infill Mesh" -msgstr "" +msgstr "충진 메쉬" #: fdmprinter.def.json msgctxt "infill_mesh description" @@ -4027,7 +4177,7 @@ msgstr "관련 메쉬를 사용하여 겹치는 다른 메쉬의 충진율을 #: fdmprinter.def.json msgctxt "infill_mesh_order label" msgid "Infill Mesh Order" -msgstr "" +msgstr "추이니 메쉬 주문" #: fdmprinter.def.json msgctxt "infill_mesh_order description" @@ -4037,7 +4187,7 @@ msgstr "어떤 충진 메쉬가 다른 충진 메쉬의 충진 내부에 있는 #: fdmprinter.def.json msgctxt "cutting_mesh label" msgid "Cutting Mesh" -msgstr "" +msgstr "커팅 메쉬" #: fdmprinter.def.json msgctxt "cutting_mesh description" @@ -4047,7 +4197,7 @@ msgstr "이 메쉬의 볼륨을 다른 메쉬 내로 제한하십시오. 이 기 #: fdmprinter.def.json msgctxt "mold_enabled label" msgid "Mold" -msgstr "" +msgstr "금형" #: fdmprinter.def.json msgctxt "mold_enabled description" @@ -4057,7 +4207,7 @@ msgstr "모형을 모형으로 인쇄하여 모형에 모형과 유사한 모형 #: fdmprinter.def.json msgctxt "mold_width label" msgid "Minimal Mold Width" -msgstr "" +msgstr "최소 금형 너비" #: fdmprinter.def.json msgctxt "mold_width description" @@ -4067,7 +4217,7 @@ msgstr "몰드의 바깥 쪽과 모델의 바깥 쪽 사이의 최소 거리입 #: fdmprinter.def.json msgctxt "mold_roof_height label" msgid "Mold Roof Height" -msgstr "" +msgstr "금형 지붕 높이" #: fdmprinter.def.json msgctxt "mold_roof_height description" @@ -4077,7 +4227,7 @@ msgstr "모델의 수평 부분 위의 높이로 금형을 인쇄합니다. " #: fdmprinter.def.json msgctxt "mold_angle label" msgid "Mold Angle" -msgstr "" +msgstr "금형 각도" #: fdmprinter.def.json msgctxt "mold_angle description" @@ -4087,7 +4237,7 @@ msgstr "몰드에 대해 생성 된 외벽의 돌출 각도입니다. \"0\"도 #: fdmprinter.def.json msgctxt "support_mesh label" msgid "Support Mesh" -msgstr "" +msgstr "지지대 메쉬" #: fdmprinter.def.json msgctxt "support_mesh description" @@ -4097,7 +4247,7 @@ msgstr "본 메시를 사용하여 지원 영역을 지정하십시오. 이것 #: fdmprinter.def.json msgctxt "support_mesh_drop_down label" msgid "Drop Down Support Mesh" -msgstr "" +msgstr "드롭 다운 지지대 메쉬" #: fdmprinter.def.json msgctxt "support_mesh_drop_down description" @@ -4107,7 +4257,7 @@ msgstr "지지 메쉬 아래의 모든 부분을 지원하여지지 메쉬에 #: fdmprinter.def.json msgctxt "anti_overhang_mesh label" msgid "Anti Overhang Mesh" -msgstr "" +msgstr "안티 오버행 메쉬" #: fdmprinter.def.json msgctxt "anti_overhang_mesh description" @@ -4117,7 +4267,7 @@ msgstr "본 메쉬를 사용하여 모델에서 돌출부로 감지 할 부분 #: fdmprinter.def.json msgctxt "magic_mesh_surface_mode label" msgid "Surface Mode" -msgstr "" +msgstr "표면 모드" #: fdmprinter.def.json msgctxt "magic_mesh_surface_mode description" @@ -4127,22 +4277,22 @@ msgstr "모델을 표면 만, 볼륨 또는 느슨한 표면이있는 볼륨으 #: fdmprinter.def.json msgctxt "magic_mesh_surface_mode option normal" msgid "Normal" -msgstr "" +msgstr "표준" #: fdmprinter.def.json msgctxt "magic_mesh_surface_mode option surface" msgid "Surface" -msgstr "" +msgstr "표면" #: fdmprinter.def.json msgctxt "magic_mesh_surface_mode option both" msgid "Both" -msgstr "" +msgstr "양자 모두" #: fdmprinter.def.json msgctxt "magic_spiralize label" msgid "Spiralize Outer Contour" -msgstr "" +msgstr "외부 윤곽선을 나선형으로 만듭니다." #: fdmprinter.def.json msgctxt "magic_spiralize description" @@ -4152,7 +4302,7 @@ msgstr "스파이럴 라이즈는 바깥 쪽 가장자리의 Z 이동을 부드 #: fdmprinter.def.json msgctxt "smooth_spiralized_contours label" msgid "Smooth Spiralized Contours" -msgstr "" +msgstr "부드러운 나선형 윤곽" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" @@ -4162,7 +4312,7 @@ msgstr "나선형 윤곽선을 부드럽게하여 Z 솔기의 가시성을 줄 #: fdmprinter.def.json msgctxt "relative_extrusion label" msgid "Relative Extrusion" -msgstr "" +msgstr "상대 압출" #: fdmprinter.def.json msgctxt "relative_extrusion description" @@ -4172,7 +4322,7 @@ msgstr "절대 돌출보다는 상대적 돌출을 사용하십시오. 상대적 #: fdmprinter.def.json msgctxt "experimental label" msgid "Experimental" -msgstr "" +msgstr "실험적" #: fdmprinter.def.json msgctxt "experimental description" @@ -4182,17 +4332,47 @@ 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 "수축 및 이동 거리를 줄이도록 벽이 인쇄되는 순서를 최적화하십시오. 대부분의 부품은이 기능을 사용하면 도움이되지만, 실제로는 시간이 오래 걸릴 수 있으므로, 최적화 여부에 관계없이 인쇄 시간을 비교하십시오. " +#: fdmprinter.def.json +msgctxt "support_skip_some_zags label" +msgid "Break Up Support In Chunks" +msgstr "Chunk에서 지지대 중단" + +#: 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 "지원 구조가 쉽게 끊어 지도록 지원 라인 연결을 건너 뛰십시오. 이 설정은 지그재그 지원 충전 패턴에 적용됩니다. " + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "지지대 Chunk 크기" + +#: 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 "지지 구조를 쉽게 분리 할 수 있도록 N 밀리미터마다 지지선 사이를 연결하십시오. " + +#: fdmprinter.def.json +msgctxt "support_zag_skip_count label" +msgid "Support Chunk Line Count" +msgstr "Chunk 라인 카운트 지지대" + +#: 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 "지원 구조를 쉽게 깨뜨릴 수 있도록 모든 N 개의 연결 라인을 건너 뜁니다. " + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" -msgstr "" +msgstr "드래프트 쉴드 사용" #: fdmprinter.def.json msgctxt "draft_shield_enabled description" @@ -4202,7 +4382,7 @@ msgstr "이렇게하면 모델 주위에 벽이 생겨 외부 공기 흐름을 #: fdmprinter.def.json msgctxt "draft_shield_dist label" msgid "Draft Shield X/Y Distance" -msgstr "" +msgstr "드래프트 쉴드 X / Y 거리" #: fdmprinter.def.json msgctxt "draft_shield_dist description" @@ -4212,7 +4392,7 @@ msgstr "X / Y 방향으로 인쇄에서 드래프트 쉴드까지의 거리입 #: fdmprinter.def.json msgctxt "draft_shield_height_limitation label" msgid "Draft Shield Limitation" -msgstr "" +msgstr "드래프트 쉴드 제한" #: fdmprinter.def.json msgctxt "draft_shield_height_limitation description" @@ -4222,17 +4402,17 @@ msgstr "드래프트 쉴드의 높이를 설정하십시오. 모델의 전체 #: fdmprinter.def.json msgctxt "draft_shield_height_limitation option full" msgid "Full" -msgstr "" +msgstr "가득찬" #: fdmprinter.def.json msgctxt "draft_shield_height_limitation option limited" msgid "Limited" -msgstr "" +msgstr "제한된" #: fdmprinter.def.json msgctxt "draft_shield_height label" msgid "Draft Shield Height" -msgstr "" +msgstr "드래프트 쉴드 높이" #: fdmprinter.def.json msgctxt "draft_shield_height description" @@ -4242,7 +4422,7 @@ msgstr "드래프트 쉴드의 높이 제한. 이 높이 이상에서는 드래 #: fdmprinter.def.json msgctxt "conical_overhang_enabled label" msgid "Make Overhang Printable" -msgstr "" +msgstr "오버행 인쇄 가능" #: fdmprinter.def.json msgctxt "conical_overhang_enabled description" @@ -4252,7 +4432,7 @@ msgstr "최소 지원이 필요하도록 인쇄 된 모델의 형상을 변경 #: fdmprinter.def.json msgctxt "conical_overhang_angle label" msgid "Maximum Model Angle" -msgstr "" +msgstr "최대 모델 각도" #: fdmprinter.def.json msgctxt "conical_overhang_angle description" @@ -4262,7 +4442,7 @@ msgstr "오버행 각도가 인쇄 가능하게 된 후 최대 각도. \"0\"도 #: fdmprinter.def.json msgctxt "coasting_enable label" msgid "Enable Coasting" -msgstr "" +msgstr "Coasting 사용하기" #: fdmprinter.def.json msgctxt "coasting_enable description" @@ -4272,7 +4452,7 @@ msgstr "코스팅(Coasting)은 돌출 경로의 마지막 부분을 이동 경 #: fdmprinter.def.json msgctxt "coasting_volume label" msgid "Coasting Volume" -msgstr "" +msgstr "Coasting 양" #: fdmprinter.def.json msgctxt "coasting_volume description" @@ -4282,7 +4462,7 @@ msgstr "그렇지 않으면 볼륨이 흘러 나옵니다. 이 값은 일반적 #: fdmprinter.def.json msgctxt "coasting_min_volume label" msgid "Minimum Volume Before Coasting" -msgstr "" +msgstr "Coasting의 최소 볼륨" #: fdmprinter.def.json msgctxt "coasting_min_volume description" @@ -4292,7 +4472,7 @@ msgstr "코스팅(Coasting)을 허용하기 전에 압출 경로에 있어야하 #: fdmprinter.def.json msgctxt "coasting_speed label" msgid "Coasting Speed" -msgstr "" +msgstr "Coasting 속도" #: fdmprinter.def.json msgctxt "coasting_speed description" @@ -4302,7 +4482,7 @@ msgstr "코스팅(Coasting) 시, 이동 속도. 돌출 경로의 속도에 상 #: fdmprinter.def.json msgctxt "skin_alternate_rotation label" msgid "Alternate Skin Rotation" -msgstr "" +msgstr "대체 피부 회전" #: fdmprinter.def.json msgctxt "skin_alternate_rotation description" @@ -4312,7 +4492,7 @@ 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" @@ -4322,7 +4502,7 @@ msgstr "패턴이 만지는 높이에서 크로스 3D 패턴의 4 방향 교차 #: 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" @@ -4332,7 +4512,7 @@ msgstr "십자형 3D 패턴에서 4방향 교차점의 절반에만 포켓을 #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled label" msgid "Spaghetti Infill" -msgstr "" +msgstr "절연 튜브 충진" #: fdmprinter.def.json msgctxt "spaghetti_infill_enabled description" @@ -4342,7 +4522,7 @@ msgstr "필라멘트가 물체 내부에서 혼란스럽게 뒤 틀릴 수 있 #: fdmprinter.def.json msgctxt "spaghetti_infill_stepped label" msgid "Spaghetti Infill Stepping" -msgstr "" +msgstr "절연 튜브 충진 단계" #: fdmprinter.def.json msgctxt "spaghetti_infill_stepped description" @@ -4352,7 +4532,7 @@ msgstr "스파게티 필링을 단계별로 인쇄할지 또는 인쇄가 끝날 #: fdmprinter.def.json msgctxt "spaghetti_max_infill_angle label" msgid "Spaghetti Maximum Infill Angle" -msgstr "" +msgstr "절연 튜브 최대 충진 각" #: fdmprinter.def.json msgctxt "spaghetti_max_infill_angle description" @@ -4362,7 +4542,7 @@ msgstr "최대 각도 w.r.t. 나중에 스파게티가 채워질 영역에 대 #: fdmprinter.def.json msgctxt "spaghetti_max_height label" msgid "Spaghetti Infill Maximum Height" -msgstr "" +msgstr "절연 튜브 충진 최대 높이" #: fdmprinter.def.json msgctxt "spaghetti_max_height description" @@ -4372,7 +4552,7 @@ msgstr "상단에서 결합하여 채울 수있는 내부 공간의 최대 높 #: fdmprinter.def.json msgctxt "spaghetti_inset label" msgid "Spaghetti Inset" -msgstr "" +msgstr "절연 튜브 삽입" #: fdmprinter.def.json msgctxt "spaghetti_inset description" @@ -4382,7 +4562,7 @@ msgstr "스파게티가 채워지는 벽의 오프셋. " #: fdmprinter.def.json msgctxt "spaghetti_flow label" msgid "Spaghetti Flow" -msgstr "" +msgstr "절연 튜브 흐름" #: fdmprinter.def.json msgctxt "spaghetti_flow description" @@ -4392,7 +4572,7 @@ msgstr "스파게티 주입 물의 밀도를 조정합니다. Infill Density는 #: fdmprinter.def.json msgctxt "spaghetti_infill_extra_volume label" msgid "Spaghetti Infill Extra Volume" -msgstr "" +msgstr "절연 튜브 충진 추가 양" #: fdmprinter.def.json msgctxt "spaghetti_infill_extra_volume description" @@ -4402,7 +4582,7 @@ msgstr "스파게티를 채울 때마다 압출되는 총 부피를 조정하는 #: fdmprinter.def.json msgctxt "support_conical_enabled label" msgid "Enable Conical Support" -msgstr "" +msgstr "원추형 지지대 가능" #: fdmprinter.def.json msgctxt "support_conical_enabled description" @@ -4412,7 +4592,7 @@ msgstr "실험적 기능 : 오버행보다 하단에서 지원 영역을 작게 #: fdmprinter.def.json msgctxt "support_conical_angle label" msgid "Conical Support Angle" -msgstr "" +msgstr "원추지지대 각" #: fdmprinter.def.json msgctxt "support_conical_angle description" @@ -4422,7 +4602,7 @@ msgstr "원추형 지지점의 기울기 각도입니다. \"0\"도가 수직이 #: fdmprinter.def.json msgctxt "support_conical_min_width label" msgid "Conical Support Minimum Width" -msgstr "" +msgstr "원뿔형 지지대 최소 너비" #: fdmprinter.def.json msgctxt "support_conical_min_width description" @@ -4432,7 +4612,7 @@ msgstr "원추형지지 영역의베이스가 축소되는 최소 너비. 폭이 #: fdmprinter.def.json msgctxt "infill_hollow label" msgid "Hollow Out Objects" -msgstr "" +msgstr "개체가 텅 빈 것" #: fdmprinter.def.json msgctxt "infill_hollow description" @@ -4442,7 +4622,7 @@ msgstr "모든 충진재를 제거하고 물체의 내부를 지탱할 수있게 #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_enabled label" msgid "Fuzzy Skin" -msgstr "" +msgstr "퍼지 피부" #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_enabled description" @@ -4452,7 +4632,7 @@ msgstr "외벽을 인쇄하는 동안 무작위로 지터가 발생하여 표면 #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_thickness label" msgid "Fuzzy Skin Thickness" -msgstr "" +msgstr "퍼지 피부 두께" #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_thickness description" @@ -4462,7 +4642,7 @@ msgstr "지터가 발생할 너비. 내벽이 변경되지 않으므로이를 #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_point_density label" msgid "Fuzzy Skin Density" -msgstr "" +msgstr "퍼지 피부 밀도" #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_point_density description" @@ -4472,17 +4652,37 @@ msgstr "레이어의 각 다각형에 도입 된 점의 평균 밀도입니다. #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_point_dist label" msgid "Fuzzy Skin Point Distance" -msgstr "" +msgstr "퍼지 스킨 포인트 거리" #: fdmprinter.def.json msgctxt "magic_fuzzy_skin_point_dist description" msgid "The average distance between the random points introduced on each line segment. Note that the original points of the polygon are discarded, so a high smoothness results in a reduction of the resolution. This value must be higher than half the Fuzzy Skin Thickness." msgstr "각 선분에 도입 된 임의의 점 사이의 평균 거리입니다. 다각형의 원래 점은 버려 지므로 높은 부드러움으로 인해 해상도가 감소합니다. 이 값은 퍼지 스킨 두께의 절반보다 커야합니다. " +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset label" +msgid "Flow rate compensation max extrusion offset" +msgstr "압출 속도 보상 최대 압출 오프셋" + +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset description" +msgid "The maximum distance in mm to compensate." +msgstr "최대 보상 거리입니다(단위: mm)." + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor label" +msgid "Flow rate compensation factor" +msgstr "압출 속도 보상 배율" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor description" +msgid "The multiplication factor for the flow rate -> distance translation." +msgstr "압출 속도를 거리로 변환하는 증배율입니다." + #: fdmprinter.def.json msgctxt "wireframe_enabled label" msgid "Wire Printing" -msgstr "" +msgstr "와이어 인쇄" #: fdmprinter.def.json msgctxt "wireframe_enabled description" @@ -4492,7 +4692,7 @@ msgstr "얇은 공기 중에서 인쇄하는 스파 스 웨브 구조로 외부 #: fdmprinter.def.json msgctxt "wireframe_height label" msgid "WP Connection Height" -msgstr "" +msgstr "WP 연결 높이" #: fdmprinter.def.json msgctxt "wireframe_height description" @@ -4502,7 +4702,7 @@ msgstr "두 개의 수평 부분 사이의 상향 및 대각선 방향의 높이 #: fdmprinter.def.json msgctxt "wireframe_roof_inset label" msgid "WP Roof Inset Distance" -msgstr "" +msgstr "WP 지붕 인셋 거리" #: fdmprinter.def.json msgctxt "wireframe_roof_inset description" @@ -4512,7 +4712,7 @@ msgstr "지붕에서 연결을 할 때 안쪽까지 윤곽선을 그립니다. #: fdmprinter.def.json msgctxt "wireframe_printspeed label" msgid "WP Speed" -msgstr "" +msgstr "WP 속도" #: fdmprinter.def.json msgctxt "wireframe_printspeed description" @@ -4522,7 +4722,7 @@ msgstr "재료를 압출 할 때 노즐이 움직이는 속도. 와이어 인쇄 #: fdmprinter.def.json msgctxt "wireframe_printspeed_bottom label" msgid "WP Bottom Printing Speed" -msgstr "" +msgstr "WP 하단 인쇄 속도" #: fdmprinter.def.json msgctxt "wireframe_printspeed_bottom description" @@ -4532,7 +4732,7 @@ msgstr "빌드 플랫폼을 만지는 유일한 레이어 인 첫 번째 레이 #: fdmprinter.def.json msgctxt "wireframe_printspeed_up label" msgid "WP Upward Printing Speed" -msgstr "" +msgstr "WP 상향 인쇄 속도" #: fdmprinter.def.json msgctxt "wireframe_printspeed_up description" @@ -4542,7 +4742,7 @@ msgstr "얇은 공기 속에서 위쪽으로 선을 인쇄하는 속도. 와이 #: fdmprinter.def.json msgctxt "wireframe_printspeed_down label" msgid "WP Downward Printing Speed" -msgstr "" +msgstr "WP 하향 인쇄 속도" #: fdmprinter.def.json msgctxt "wireframe_printspeed_down description" @@ -4552,7 +4752,7 @@ msgstr "대각선 방향으로 선을 인쇄하는 속도. 와이어 인쇄에 #: fdmprinter.def.json msgctxt "wireframe_printspeed_flat label" msgid "WP Horizontal Printing Speed" -msgstr "" +msgstr "WP 가로 인쇄 속도" #: fdmprinter.def.json msgctxt "wireframe_printspeed_flat description" @@ -4562,7 +4762,7 @@ msgstr "모델의 수평 윤곽 인쇄 속도입니다. 와이어 인쇄에만 #: fdmprinter.def.json msgctxt "wireframe_flow label" msgid "WP Flow" -msgstr "" +msgstr "WP 흐름" #: fdmprinter.def.json msgctxt "wireframe_flow description" @@ -4572,7 +4772,7 @@ msgstr "유량 보상 : 압출 된 재료의 양에이 값을 곱합니다. 와 #: fdmprinter.def.json msgctxt "wireframe_flow_connection label" msgid "WP Connection Flow" -msgstr "" +msgstr "WP 연결 흐름" #: fdmprinter.def.json msgctxt "wireframe_flow_connection description" @@ -4582,7 +4782,7 @@ msgstr "위 또는 아래로 이동할 때 유량 보정. 와이어 인쇄에만 #: fdmprinter.def.json msgctxt "wireframe_flow_flat label" msgid "WP Flat Flow" -msgstr "" +msgstr "WP 플랫 플로우" #: fdmprinter.def.json msgctxt "wireframe_flow_flat description" @@ -4592,7 +4792,7 @@ msgstr "평평한 선을 인쇄 할 때 유량 보정. 와이어 인쇄에만 #: fdmprinter.def.json msgctxt "wireframe_top_delay label" msgid "WP Top Delay" -msgstr "" +msgstr "WP 상단 지연" #: fdmprinter.def.json msgctxt "wireframe_top_delay description" @@ -4602,7 +4802,7 @@ msgstr "상향 라인이 강화 될 수 있도록 상향 이동 후 지연 시 #: fdmprinter.def.json msgctxt "wireframe_bottom_delay label" msgid "WP Bottom Delay" -msgstr "" +msgstr "WP 최저 지연" #: fdmprinter.def.json msgctxt "wireframe_bottom_delay description" @@ -4612,7 +4812,7 @@ msgstr "하강 후 지연 시간. 와이어 인쇄에만 적용됩니다. " #: fdmprinter.def.json msgctxt "wireframe_flat_delay label" msgid "WP Flat Delay" -msgstr "" +msgstr "WP 평탄한 지연" #: fdmprinter.def.json msgctxt "wireframe_flat_delay description" @@ -4622,7 +4822,7 @@ msgstr "두 개의 수평 세그먼트 사이의 지연 시간. 이러한 지연 #: fdmprinter.def.json msgctxt "wireframe_up_half_speed label" msgid "WP Ease Upward" -msgstr "" +msgstr "WP는 쉽게 상향 조정" #: fdmprinter.def.json msgctxt "wireframe_up_half_speed description" @@ -4634,7 +4834,7 @@ msgstr "기본 속도의 반으로 돌출 된 상향 이동 거리. 이로 인 #: fdmprinter.def.json msgctxt "wireframe_top_jump label" msgid "WP Knot Size" -msgstr "" +msgstr "WP 매듭 크기" #: fdmprinter.def.json msgctxt "wireframe_top_jump description" @@ -4644,7 +4844,7 @@ msgstr "상향 선의 상단에 작은 매듭을 만들어 연속적인 수평 #: fdmprinter.def.json msgctxt "wireframe_fall_down label" msgid "WP Fall Down" -msgstr "" +msgstr "WP Fall Down" #: fdmprinter.def.json msgctxt "wireframe_fall_down description" @@ -4654,7 +4854,7 @@ msgstr "위쪽으로 밀어 낸 후 재료가 떨어지는 거리. 이 거리는 #: fdmprinter.def.json msgctxt "wireframe_drag_along label" msgid "WP Drag Along" -msgstr "" +msgstr "WP 드래그를 따라" #: fdmprinter.def.json msgctxt "wireframe_drag_along description" @@ -4664,7 +4864,7 @@ msgstr "대각선 방향으로 돌출 된 돌출부의 재료가 위쪽으로 #: fdmprinter.def.json msgctxt "wireframe_strategy label" msgid "WP Strategy" -msgstr "" +msgstr "WP 전략" #: fdmprinter.def.json msgctxt "wireframe_strategy description" @@ -4674,22 +4874,22 @@ msgstr "각 연결 지점에서 두 개의 연속 된 레이어가 연결되도 #: fdmprinter.def.json msgctxt "wireframe_strategy option compensate" msgid "Compensate" -msgstr "" +msgstr "보상하다" #: fdmprinter.def.json msgctxt "wireframe_strategy option knot" msgid "Knot" -msgstr "" +msgstr "매듭" #: fdmprinter.def.json msgctxt "wireframe_strategy option retract" msgid "Retract" -msgstr "" +msgstr "취소하다" #: fdmprinter.def.json msgctxt "wireframe_straight_before_down label" msgid "WP Straighten Downward Lines" -msgstr "" +msgstr "WP 직선화 하향 라인" #: fdmprinter.def.json msgctxt "wireframe_straight_before_down description" @@ -4699,7 +4899,7 @@ msgstr "수평선 조각에 의해 덮여있는 비스듬히 하향 선의 백 #: fdmprinter.def.json msgctxt "wireframe_roof_fall_down label" msgid "WP Roof Fall Down" -msgstr "" +msgstr "WP 지붕 Fall Down" #: fdmprinter.def.json msgctxt "wireframe_roof_fall_down description" @@ -4709,7 +4909,7 @@ msgstr "수평 지붕 라인이 '얇은 공기 안에'인쇄 된 거리는 인 #: fdmprinter.def.json msgctxt "wireframe_roof_drag_along label" msgid "WP Roof Drag Along" -msgstr "" +msgstr "WP 지붕 끌기" #: fdmprinter.def.json msgctxt "wireframe_roof_drag_along description" @@ -4719,7 +4919,7 @@ msgstr "루프의 외곽 윤곽으로 돌아갈 때 끌린 내향 선의 끝 부 #: fdmprinter.def.json msgctxt "wireframe_roof_outer_delay label" msgid "WP Roof Outer Delay" -msgstr "" +msgstr "WP 지붕 외부 지연" #: fdmprinter.def.json msgctxt "wireframe_roof_outer_delay description" @@ -4729,117 +4929,17 @@ msgstr "지붕이 될 구멍의 바깥 둘레에서 보낸 시간. 긴 시간은 #: fdmprinter.def.json msgctxt "wireframe_nozzle_clearance label" msgid "WP Nozzle Clearance" -msgstr "" +msgstr "WP 노즐 여유" #: fdmprinter.def.json msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "노즐과 수평 아래쪽 라인 사이의 거리. 클리어런스가 클수록 비스듬한 각도에서 비스듬히 아래쪽으로 선이 그어져 다음 층과의 연결이보다 적어집니다. 와이어 인쇄에만 적용됩니다. " -#: fdmprinter.def.json -msgctxt "ironing_enabled label" -msgid "Enable Ironing" -msgstr "" - -#: fdmprinter.def.json -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" -msgstr "" - -#: fdmprinter.def.json -msgctxt "ironing_pattern description" -msgid "The pattern to use for ironing top surfaces." -msgstr "윗면을 다림질 할 때 사용하는 패턴. " - -#: fdmprinter.def.json -msgctxt "ironing_pattern option concentric" -msgid "Concentric" -msgstr "" - -#: fdmprinter.def.json -msgctxt "ironing_pattern option zigzag" -msgid "Zig Zag" -msgstr "" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing label" -msgid "Ironing Line Spacing" -msgstr "" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing description" -msgid "The distance between the lines of ironing." -msgstr "다림질 라인 사이의 거리. " - -#: fdmprinter.def.json -msgctxt "ironing_flow label" -msgid "Ironing Flow" -msgstr "" - -#: fdmprinter.def.json -msgctxt "ironing_flow description" -msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." -msgstr "다림질하는 동안 보통의 피부 라인을 기준으로 한 재료의 양. 노즐을 가득 채우면 윗면의 틈새가 채워지지만 표면의 과도한 돌출과 틈이 너무 많이 생깁니다. " - -#: fdmprinter.def.json -msgctxt "ironing_inset label" -msgid "Ironing Inset" -msgstr "" - -#: fdmprinter.def.json -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" -msgstr "" +msgstr "명령 줄 설정" #: fdmprinter.def.json msgctxt "command_line_settings description" @@ -4849,7 +4949,7 @@ msgstr "큐라(Cura) 프론트 엔드에서 큐라엔진(CuraEngine)이 호출 #: fdmprinter.def.json msgctxt "center_object label" msgid "Center object" -msgstr "" +msgstr "가운데 객체" #: fdmprinter.def.json msgctxt "center_object description" @@ -4859,7 +4959,7 @@ msgstr "객체가 저장된 좌표계를 사용하는 대신 빌드 플랫폼 #: fdmprinter.def.json msgctxt "mesh_position_x label" msgid "Mesh position x" -msgstr "" +msgstr "메쉬 위치 x" #: fdmprinter.def.json msgctxt "mesh_position_x description" @@ -4869,7 +4969,7 @@ msgstr "x 방향으로 객체에 적용된 오프셋입니다. " #: fdmprinter.def.json msgctxt "mesh_position_y label" msgid "Mesh position y" -msgstr "" +msgstr "메쉬 위치 y" #: fdmprinter.def.json msgctxt "mesh_position_y description" @@ -4879,7 +4979,7 @@ msgstr "y 방향으로 객체에 적용된 오프셋입니다. " #: fdmprinter.def.json msgctxt "mesh_position_z label" msgid "Mesh position z" -msgstr "" +msgstr "메쉬 위치 z" #: fdmprinter.def.json msgctxt "mesh_position_z description" @@ -4889,16 +4989,50 @@ msgstr "z 방향으로 객체에 적용된 오프셋입니다. 이것을 사용 #: fdmprinter.def.json msgctxt "mesh_rotation_matrix label" msgid "Mesh Rotation Matrix" -msgstr "" +msgstr "메쉬 회전 행렬" #: fdmprinter.def.json 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 "wall_x_extruder_nr label" +#~ msgid "Inner Walls Extruder" +#~ 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, 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 "인쇄물의 충진재 패턴. 라인과 지그재그는 대체 층의 스필 방향을 바꾸어 재료비를 줄입니다. 그리드, 삼각형, 큐빅, 옥텟, 쿼터 큐빅 및 동심원 패턴이 모든 레이어에 완전히 인쇄됩니다. 큐빅, 쿼터 큐빅 및 옥 테트 필은 각 레이어에 따라 변경되어 각 방향에 대해보다 균등 한 강도 분포를 제공합니다. " + +#~ 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 "내부 벽의 모양을 따르는 선을 사용하여 충전 패턴이 내부 벽과 만나는 끝을 연결하십시오. 이 설정을 사용하면 벽에 충전재가 잘 밀착되고 수직 표면의 품질에 영향을 줄 수 있습니다. 이 설정을 사용하지 않으면 사용되는 재료의 양이 줄어 듭니다. " + +#~ 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 "스커트와 인쇄물의 첫 번째 레이어 사이의 수평 거리입니다. 이것은 최소 거리이며, 여러 스커트 라인이이 거리에서 바깥쪽으로 확장됩니다. " + +#~ msgctxt "z_offset_layer_0 label" +#~ msgid "Initial Layer Z Offset" +#~ msgstr "초기 레이어 Z 오프셋" + +#~ 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 "압출기는이 양만큼 제 1 층의 정상 높이로부터 오프셋된다. 양수 (양수) 또는 음수 (양수) 일 수 있습니다. 압출기를 약간 올리면 일부 필라멘트 유형이 빌드 플레이트에 잘 밀착됩니다. " + +#~ msgctxt "z_offset_taper_layers label" +#~ msgid "Z Offset Taper Layers" +#~ msgstr "Z 오프셋 테이퍼 레이어" + +#~ 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 "0이 아니면 Z 오프셋은 많은 레이어에서 0으로 줄어 듭니다. 값 0은 인쇄물의 모든 레이어에 대해 Z 오프셋이 일정하게 유지됨을 의미합니다. " + +#~ 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 "이 설정은 뗏목 윤곽의 내부 모서리가 둥근 정도를 제어합니다. 안쪽 모서리는 여기에 주어진 값과 같은 반경을 가진 반원으로 반올림됩니다. 이 설정은 또한 뗏목 외곽선에서 그러한 원보다 작은 구멍을 제거합니다. " #~ 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." @@ -4934,4 +5068,4 @@ msgstr "파일로부터 로드 하는 경유, 모델에 적용될 변환 행렬 #~ msgctxt "skin_overlap description" #~ msgid "The amount of overlap between the skin and the walls. A slight overlap allows the walls to connect firmly to the skin." -#~ msgstr "피부와 벽 사이의 겹침 정도입니다. 약간 겹치면 벽이 피부에 단단히 연결됩니다. " \ No newline at end of file +#~ msgstr "피부와 벽 사이의 겹침 정도입니다. 약간 겹치면 벽이 피부에 단단히 연결됩니다. " diff --git a/resources/i18n/nl_NL/cura.po b/resources/i18n/nl_NL/cura.po index 680106d321..a6021b3ce0 100644 --- a/resources/i18n/nl_NL/cura.po +++ b/resources/i18n/nl_NL/cura.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-21 16:58+0100\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -16,66 +16,6 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Print aborted" -msgstr "Print afgebroken" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Blocked" -msgstr "Geblokkeerd" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Action required" -msgstr "Handeling nodig" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Can't start print" -msgstr "Print start niet" - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is not set up to host a group of Ultimaker 3 printers." -msgstr "Deze printer is niet opgezet om een groep Ultimaker 3 printers te hosten." - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label" -msgid "Finishes at: " -msgstr "Klaar om: " - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is the host for a group of %1 Ultimaker 3 printers." -msgstr "Deze printer is de host voor een groep van %1 Ultimaker 3 printers." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "Printer '{printer_name}' is klaar met het printen van '{job_name}'." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Print finished" -msgstr "Print klaar" - -#: Manually added for resources/Cura/Cura.qml -msgctxt "@title:menu menubar:toplevel" -msgid "P&lugins" -msgstr "&Plugins" - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Browse plugins..." -msgstr "Door invoegtoepassingen bladeren..." - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Installed plugins..." -msgstr "Geïnstalleerde plugins..." - #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" @@ -113,19 +53,17 @@ 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 -#: /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:428 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/3MFReader/WorkspaceDialog.qml:376 #: /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 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:253 msgctxt "@action:button" msgid "Cancel" msgstr "Annuleren" @@ -152,15 +90,15 @@ 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 "Connect openen" +msgid "Open Connect..." +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 "De Doodle3D Connect-webinterface openen" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Wijzigingenlogboek Weergeven" @@ -195,37 +133,38 @@ msgctxt "@info:status" msgid "Connected via USB" msgstr "Aangesloten via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 msgctxt "@info:title" -msgid "Print Details" -msgstr "Printgegevens" +msgid "Printer Unavailable" +msgstr "Printer is niet beschikbaar" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 msgctxt "@info:title" msgid "USB Printing" msgstr "USB-printen" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 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/USBPrinterOutputDevice.py:461 #: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 msgctxt "@info:title" msgid "Warning" msgstr "Waarschuwing" @@ -289,11 +228,11 @@ 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: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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 msgctxt "@info:title" msgid "Error" msgstr "Fout" @@ -342,346 +281,332 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Verwisselbaar Station" -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Printen via netwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Printen via netwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 msgctxt "@info:title" msgid "Connection status" msgstr "Verbindingsstatus" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:479 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:502 msgctxt "@info:title" msgid "Connection Status" msgstr "Verbindingsstatus" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@action:button" msgid "Retry" msgstr "Opnieuw proberen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "De toegangsaanvraag opnieuw verzenden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Toegang tot de printer is geaccepteerd" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:375 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:385 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:382 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Connected over the network." msgstr "Via het netwerk verbonden." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:405 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:400 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 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:403 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 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:467 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 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:499 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 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:649 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:666 #, 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:650 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:667 msgctxt "@info:title" msgid "Printer Status" msgstr "Printerstatus" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 #, 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:682 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 #, 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:692 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 #, 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:702 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 #, 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:716 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 #, 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:724 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:741 #, 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:729 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 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:730 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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:736 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "De configuratie komt niet overeen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "Het verzenden van nieuwe taken is (tijdelijk) geblokkeerd. Nog bezig met het verzenden van de vorige printtaak." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:status" msgid "Sending data to printer" msgstr "De gegevens worden naar de printer verzonden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:title" msgid "Sending Data" msgstr "Gegevens Verzenden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 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:1050 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Printen afbreken..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Print afgebroken. Controleer de printer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Print onderbreken..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Print hervatten..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synchroniseren met de printer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 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:1220 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:112 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." -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:113 #, 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 "Deze printer is de host voor een groep van {count} aangesloten Ultimaker 3-printers." -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 #, 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 "{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 "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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 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 "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 "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 "{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 "Printtaken weergeven" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 -msgctxt "@info:tooltip" -msgid "Opens the print jobs interface in your browser." -msgstr "Opent de printtaken-interface in uw browser." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Kan de printtaak niet naar groep {cluster_name} verzenden." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "{file_name} is verzonden naar groep {cluster_name}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "Printtaken weergeven" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "Opent de printtaken-interface in uw browser." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label" +msgid "Unknown" +msgstr "Onbekend" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#, python-brace-format +msgctxt "@info:status" +msgid "Printer '{printer_name}' has finished printing '{job_name}'." +msgstr "Printer '{printer_name}' is klaar met het printen van '{job_name}'." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +msgctxt "@info:status" +msgid "Print finished" +msgstr "Print klaar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 +msgctxt "@label:status" +msgid "Action required" +msgstr "Handeling nodig" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "Bezig met verzenden van {file_name} naar groep {cluster_name}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +msgctxt "@action" +msgid "Connect via Network" +msgstr "Verbinding Maken via Netwerk" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 #, 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 "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." +msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." +msgstr "Er zijn nieuwe functies beschikbaar voor uw {machine_name}! Het wordt aanbevolen de firmware van uw printer bij te werken." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Nieuwe firmware voor %s beschikbaar" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 msgctxt "@action:button" -msgid "Download" -msgstr "Downloaden" +msgid "How to update" +msgstr "Instructies voor bijwerken" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 msgctxt "@info" msgid "Could not access update information." msgstr "Geen toegang tot update-informatie." @@ -711,7 +636,22 @@ msgctxt "@info:status" msgid "Error while starting %s!" msgstr "Er is een fout opgetreden tijdens het starten van %s!" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Simulation view" +msgstr "Simulatieweergave" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +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/SimulationView/SimulationView.py:101 +msgctxt "@info:title" +msgid "Simulation View" +msgstr "Simulatieweergave" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 msgid "Modify G-Code" msgstr "G-code wijzigen" @@ -741,21 +681,6 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "G-code-bestand" -#: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Laagweergave" - -#: /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 "Laagweergave" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -788,8 +713,9 @@ msgstr "Met het huidige materiaal is slicen niet mogelijk, omdat het materiaal n #: /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 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 msgctxt "@info:title" msgid "Unable to slice" msgstr "Kan niet slicen" @@ -800,23 +726,29 @@ 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:306 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" +msgstr "Slicing is niet mogelijk vanwege enkele instellingen per model. De volgende instellingen bevatten fouten voor een of meer modellen: {error_labels}" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 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:315 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 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." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:65 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:status" msgid "Processing Layers" msgstr "Lagen verwerken" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:title" msgid "Information" msgstr "Informatie" @@ -831,14 +763,36 @@ msgctxt "@info:tooltip" 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:475 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23 +msgid "Install" +msgstr "Installeren" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It is not set to a directory." +msgstr "Kan de bestanden voor de Siemens NX-invoegtoepassingen niet kopiëren. Controleer uw UGII_USER_DIR. Deze is niet ingesteld op een map." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81 +msgid "Successfully installed Siemens NX Cura plugin." +msgstr "De Siemens NX Cura-invoegtoepassing is geïnstalleerd." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgstr "Kan de bestanden voor de Siemens NX-invoegtoepassingen niet installeren. Controleer uw UGII_USER_DIR." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 +msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." +msgstr "Kan de Siemens NX-invoegtoepassing niet installeren. Het instellen van de omgevingsvariabele UGII_USER_DIR voor Siemens NX is mislukt." + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 msgctxt "@title:tab" msgid "Recommended" msgstr "Aanbevolen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Custom" msgstr "Aangepast" @@ -849,29 +803,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF-bestand" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 msgctxt "@label" msgid "Nozzle" msgstr "Nozzle" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 -msgctxt "@menuitem" -msgid "Browse plugins" -msgstr "Door invoegtoepassingen bladeren" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "Kan de invoegtoepassing-ID van {0} niet vinden" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 msgctxt "@info:tile" msgid "Warning" msgstr "Waarschuwing" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 msgctxt "@window:title" msgid "Plugin browser" msgstr "Invoegtoepassingbrowser" @@ -886,18 +835,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G-bestand" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:254 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-code parseren" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 msgctxt "@info:title" msgid "G-code Details" msgstr "Details van de G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 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." @@ -939,73 +888,78 @@ msgctxt "@action" msgid "Level build plate" msgstr "Platform kalibreren" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Buitenwand" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Binnenwanden" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 msgctxt "@tooltip" msgid "Skin" msgstr "Skin" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 msgctxt "@tooltip" msgid "Infill" msgstr "Vulling" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 msgctxt "@tooltip" msgid "Support Infill" msgstr "Supportvulling" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 msgctxt "@tooltip" msgid "Support Interface" msgstr "Verbindingsstructuur" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Support" msgstr "Supportstructuur" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" msgid "Skirt" msgstr "Skirt" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 msgctxt "@tooltip" msgid "Travel" msgstr "Beweging" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Retractions" msgstr "Intrekkingen" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Other" msgstr "Overig(e)" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +msgctxt "@label unknown material" +msgid "Unknown" +msgstr "Onbekend" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Vooraf geslicet bestand {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 msgctxt "@item:material" msgid "No material loaded" msgstr "Geen materiaal ingevoerd" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 msgctxt "@item:material" msgid "Unknown material" msgstr "Onbekend materiaal" @@ -1032,13 +986,13 @@ msgid "Can't Find Location" msgstr "Kan locatie niet vinden" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 msgctxt "@title:window" msgid "File Already Exists" msgstr "Het Bestand Bestaat Al" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 #, 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?" @@ -1054,12 +1008,22 @@ msgctxt "@label" msgid "Custom Material" msgstr "Aangepast materiaal" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 +msgctxt "@menuitem" +msgid "Global" +msgstr "Algemeen" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Niet overschreven" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 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/MachineManager.py:118 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1080,62 +1044,62 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Maak wijzigen van de materiaaldiameter ongedaan." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format 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}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, python-brace-format 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}: Invoegtoepassing voor de schrijver heeft een fout gerapporteerd." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Het profiel is geëxporteerd als {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:157 msgctxt "@info:title" -msgid "Export Details" -msgstr "Exportgegevens" +msgid "Export succeeded" +msgstr "De export is voltooid" -#: /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 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 #, python-brace-format 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}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 #, 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:254 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 #, 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:272 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 msgctxt "@label" msgid "Custom profile" msgstr "Aangepast profiel" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1162,238 +1126,316 @@ msgctxt "@info:title" msgid "Placing Object" msgstr "Object plaatsen" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 msgctxt "@title:window" msgid "Crash Report" msgstr "Crashrapport" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:79 -msgctxt "@label" +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +msgctxt "@label crash message" 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 " +"

    A fatal exception has occurred. Please send us this Crash Report to fix the problem

    \n" +"

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" +" " +msgstr "

    Er is een fatale uitzondering opgetreden. Stuur ons het Crashrapport om het probleem op te lossen

    \n

    Druk op de knop \"Rapport verzenden\" om het foutenrapport automatisch naar onze servers te verzenden

    \n " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +msgctxt "@title:groupbox" +msgid "System information" +msgstr "Systeeminformatie" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +msgctxt "@label unknown version of Cura" +msgid "Unknown" +msgstr "Onbekend" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 +#, python-brace-format +msgctxt "@label Cura version" +msgid "Cura version: {version}
    " +msgstr "Cura-versie: {version}
    " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -msgctxt "@action:button" -msgid "Open Web Page" -msgstr "Webpagina openen" +#, python-brace-format +msgctxt "@label Platform" +msgid "Platform: {platform}
    " +msgstr "Platform: {platform}
    " -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 +#, python-brace-format +msgctxt "@label Qt version" +msgid "Qt version: {qt}
    " +msgstr "Qt-versie: {qt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 +#, python-brace-format +msgctxt "@label PyQt version" +msgid "PyQt version: {pyqt}
    " +msgstr "PyQt-versie: {pyqt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 +#, python-brace-format +msgctxt "@label OpenGL" +msgid "OpenGL: {opengl}
    " +msgstr "OpenGL: {opengl}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#, python-brace-format +msgctxt "@label OpenGL version" +msgid "
  • OpenGL Version: {version}
  • " +msgstr "
  • OpenGL-versie: {version}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#, python-brace-format +msgctxt "@label OpenGL vendor" +msgid "
  • OpenGL Vendor: {vendor}
  • " +msgstr "
  • OpenGL-leverancier: {vendor}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#, python-brace-format +msgctxt "@label OpenGL renderer" +msgid "
  • OpenGL Renderer: {renderer}
  • " +msgstr "
  • OpenGL-renderer: {renderer}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +msgctxt "@title:groupbox" +msgid "Exception traceback" +msgstr "Traceback van uitzondering" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +msgctxt "@title:groupbox" +msgid "Logs" +msgstr "Logboeken" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +msgctxt "@title:groupbox" +msgid "User description" +msgstr "Gebruikersbeschrijving" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +msgctxt "@action:button" +msgid "Send report" +msgstr "Rapport verzenden" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Machines laden..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Scene instellen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Interface laden..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 #, 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:1295 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 #, 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:1304 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1357 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Kan geen ander bestand openen als G-code wordt geladen. Het importeren van {0} is overgeslagen" +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +msgctxt "@info:status" +msgid "The selected model was too small to load." +msgstr "Het geselecteerde model is te klein om te laden." + #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 msgctxt "@title" msgid "Machine Settings" msgstr "Machine-instellingen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:77 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:78 msgctxt "@title:tab" msgid "Printer" msgstr "Printer" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:96 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 msgctxt "@label" msgid "Printer Settings" msgstr "Printerinstellingen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:107 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 msgctxt "@label" msgid "X (Width)" msgstr "X (Breedte)" -#: /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: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 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:117 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Diepte)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:127 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Hoogte)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:139 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:140 msgctxt "@label" msgid "Build plate shape" msgstr "Vorm van het platform" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:148 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 msgctxt "@option:check" msgid "Origin at center" msgstr "Centraal oorsprongpunt" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:156 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:157 msgctxt "@option:check" msgid "Heated bed" msgstr "Verwarmd bed" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:167 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 msgctxt "@label" msgid "Gcode flavor" msgstr "Versie G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:180 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 msgctxt "@label" msgid "Printhead Settings" msgstr "Instellingen Printkop" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:190 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 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 "Afstand van de linkerkant van de printkop tot het midden van de nozzle. Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en de printkop te voorkomen." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:200 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 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 "Afstand van de voorkant van de printkop tot het midden van de nozzle. Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en de printkop te voorkomen." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:210 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 msgctxt "@label" msgid "X max" msgstr "X max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 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 "Afstand van de rechterkant van de printkop tot het midden van de nozzle. Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en de printkop te voorkomen." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:220 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 msgctxt "@label" msgid "Y max" msgstr "Y max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 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 "Afstand van de achterkant van de printkop tot het midden van de nozzle. Wordt tijdens \"een voor een\"-printen gebruikt om botsingen tussen eerder geprinte voorwerpen en de printkop te voorkomen." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:233 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 msgctxt "@label" msgid "Gantry height" msgstr "Hoogte rijbrug" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 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:254 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 msgctxt "@label" msgid "Number of Extruders" msgstr "Aantal extruders" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 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:290 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 msgctxt "@label" msgid "Material diameter" msgstr "Materiaaldiameter" -#: /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:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 msgctxt "@label" msgid "Nozzle size" msgstr "Maat nozzle" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 msgctxt "@label" msgid "Start Gcode" msgstr "Start G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 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:335 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 msgctxt "@label" msgid "End Gcode" msgstr "Eind G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 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:377 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 msgctxt "@label" msgid "Nozzle Settings" msgstr "Nozzle-instellingen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 msgctxt "@label" msgid "Nozzle offset X" msgstr "Nozzle-offset X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Nozzle-offset Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "Start-G-code van extruder" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Extruder End Gcode" msgstr "Eind-G-code van extruder" @@ -1406,12 +1448,11 @@ 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/PostProcessingPlugin/PostProcessingPlugin.qml:445 #: /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/Preferences/MachinesPage.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 msgctxt "@action:button" msgid "Close" @@ -1463,13 +1504,11 @@ 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" @@ -1478,20 +1517,17 @@ msgid "" 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 #: /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 @@ -1500,220 +1536,221 @@ msgid "Remove" msgstr "Verwijderen" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:194 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 msgctxt "@label" msgid "Type" msgstr "Type" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 msgctxt "@label" msgid "Address" msgstr "Adres" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:286 +msgctxt "@label" +msgid "This printer is not set up to host a group of Ultimaker 3 printers." +msgstr "Deze printer is niet opgezet om een groep Ultimaker 3 printers te hosten." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:290 +msgctxt "@label" +msgid "This printer is the host for a group of %1 Ultimaker 3 printers." +msgstr "Deze printer is de host voor een groep van %1 Ultimaker 3 printers." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:300 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/DiscoverUM3Action.qml:305 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /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:316 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 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:346 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 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:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 +#: /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" +msgid "OK" msgstr "OK" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Printen via netwerk" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Printen" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:36 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "%1 is niet ingesteld voor het hosten van een groep aangesloten Ultimaker 3-printers" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "Hiermee opent u de pagina met printtaken in uw standaard webbrowser." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "Printtaken weergeven" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 +msgctxt "@label" +msgid "Preparing to print" +msgstr "Voorbereiden om te printen" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 +msgctxt "@label:status" +msgid "Printing" +msgstr "Printen" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 +msgctxt "@label:status" +msgid "Available" +msgstr "Beschikbaar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 +#: /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/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 +msgctxt "@label:status" +msgid "Disabled" +msgstr "Uitgeschakeld" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273 +msgctxt "@label:status" +msgid "Reserved" +msgstr "Gereserveerd" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:275 +msgctxt "@label:status" +msgid "Finished" +msgstr "Gereed" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 +msgctxt "@label:status" +msgid "Paused" +msgstr "Gepauzeerd" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 +msgctxt "@label:status" +msgid "Resuming" +msgstr "Hervatten" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 +msgctxt "@label:status" +msgid "Print aborted" +msgstr "Print afgebroken" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:410 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "Accepteert geen printtaken" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 +msgctxt "@label" +msgid "Finishes at: " +msgstr "Klaar om: " + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 +msgctxt "@label" +msgid "Clear build plate" +msgstr "Platform leegmaken" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "Wacht op wijziging van configuratie" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:64 +msgctxt "@title" +msgid "Print jobs" +msgstr "Printtaken" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 +msgctxt "@label" +msgid "Printing" +msgstr "Printen" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 +msgctxt "@label" +msgid "Queued" +msgstr "In wachtrij" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:171 +msgctxt "@label:title" +msgid "Printers" +msgstr "Printers" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 +msgctxt "@action:button" +msgid "View printers" +msgstr "Printers weergeven" + #: /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/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 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 aaneengesloten Ultimaker 3-printers" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 -msgctxt "@title:window" -msgid "Print over network" -msgstr "Printen via netwerk" - -#: /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 "%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 "Printen" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 -msgctxt "@label:status" -msgid "Reserved" -msgstr "Gereserveerd" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 -msgctxt "@label:status" -msgid "Finished" -msgstr "Gereed" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 -msgctxt "@label:status" -msgid "Preparing" -msgstr "Voorbereiden" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 -msgctxt "@label:status" -msgid "Available" -msgstr "Beschikbaar" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 -msgctxt "@label" -msgid "Completed on: " -msgstr "Voltooid op: " - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 -msgctxt "@label" -msgid "Clear build plate" -msgstr "Platform leegmaken" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 -msgctxt "@label" -msgid "Preparing to print" -msgstr "Voorbereiden om te printen" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 -msgctxt "@label" -msgid "Not accepting print jobs" -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 "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 "Printtaken weergeven" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "PRINTER GROUP" -msgstr "PRINTERGROEP" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 -msgctxt "@title" -msgid "Print jobs" -msgstr "Printtaken" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 -msgctxt "@label" -msgid "Printing" -msgstr "Printen" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 -msgctxt "@label" -msgid "Queued" -msgstr "In wachtrij" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 -msgctxt "@label" -msgid "Waiting for configuration change" -msgstr "Wacht op wijziging van configuratie" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 -msgctxt "@label:title" -msgid "Printers" -msgstr "Printers" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 -msgctxt "@action:button" -msgid "View printers" -msgstr "Printers weergeven" - #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1739,13 +1776,6 @@ msgctxt "@option:curaSolidworksStlQuality" msgid "Always use Coarse quality" msgstr "Altijd Grove kwaliteit gebruiken" -#: /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..." @@ -1772,11 +1802,91 @@ msgid "Fine" msgstr "Fijn" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 msgctxt "@text:window" msgid "Remember my choice" msgstr "Mijn keuze onthouden" +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +msgctxt "@label" +msgid "Color scheme" +msgstr "Kleurenschema" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +msgctxt "@label:listbox" +msgid "Material Color" +msgstr "Materiaalkleur" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +msgctxt "@label:listbox" +msgid "Line Type" +msgstr "Lijntype" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +msgctxt "@label:listbox" +msgid "Feedrate" +msgstr "Doorvoersnelheid" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +msgctxt "@label:listbox" +msgid "Layer thickness" +msgstr "Laagdikte" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +msgctxt "@label" +msgid "Compatibility Mode" +msgstr "Compatibiliteitsmodus" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +msgctxt "@label" +msgid "Show Travels" +msgstr "Bewegingen weergeven" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +msgctxt "@label" +msgid "Show Helpers" +msgstr "Helpers weergeven" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +msgctxt "@label" +msgid "Show Shell" +msgstr "Shell weergeven" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +msgctxt "@label" +msgid "Show Infill" +msgstr "Vulling weergeven" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +msgctxt "@label" +msgid "Only Show Top Layers" +msgstr "Alleen bovenlagen weergegeven" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +msgctxt "@label" +msgid "Show 5 Detailed Layers On Top" +msgstr "5 gedetailleerde lagen bovenaan weergeven" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +msgctxt "@label" +msgid "Top / Bottom" +msgstr "Boven-/onderkant" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +msgctxt "@label" +msgid "Inner Wall" +msgstr "Binnenwand" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +msgctxt "@label" +msgid "min" +msgstr "min." + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +msgctxt "@label" +msgid "max" +msgstr "max." + #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 msgctxt "@title:window" msgid "Post Processing Plugin" @@ -1787,81 +1897,21 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Scripts voor Nabewerking" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:218 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:217 msgctxt "@action" msgid "Add a script" msgstr "Een script toevoegen" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:264 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:263 msgctxt "@label" msgid "Settings" msgstr "Instellingen" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Actieve scripts voor nabewerking wijzigen" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 -msgctxt "@label" -msgid "Color scheme" -msgstr "Kleurenschema" - -#: /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:95 -msgctxt "@label:listbox" -msgid "Line Type" -msgstr "Lijntype" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 -msgctxt "@label" -msgid "Compatibility Mode" -msgstr "Compatibiliteitsmodus" - -#: /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:222 -msgctxt "@label" -msgid "Show Helpers" -msgstr "Helpers weergeven" - -#: /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:234 -msgctxt "@label" -msgid "Show Infill" -msgstr "Vulling weergeven" - -#: /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:292 -msgctxt "@label" -msgid "Show 5 Detailed Layers On Top" -msgstr "5 gedetailleerde lagen bovenaan weergeven" - -#: /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:307 -msgctxt "@label" -msgid "Inner Wall" -msgstr "Binnenwand" - #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" msgid "Convert Image..." @@ -1953,129 +2003,129 @@ msgctxt "@label:checkbox" msgid "Show all" msgstr "Alles weergeven" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:13 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Project openen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 msgctxt "@action:ComboBox option" msgid "Update existing" msgstr "Bestaand(e) bijwerken" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:55 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 msgctxt "@action:ComboBox option" msgid "Create new" msgstr "Nieuw maken" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:70 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Samenvatting - Cura-project" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:88 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:88 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 msgctxt "@action:label" msgid "Printer settings" msgstr "Printerinstellingen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 msgctxt "@info:tooltip" msgid "How should the conflict in the machine be resolved?" msgstr "Hoe dient het conflict in de machine te worden opgelost?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:124 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:97 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 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 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:144 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:201 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:293 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:190 msgctxt "@action:label" msgid "Name" msgstr "Naam" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:161 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:164 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:166 msgctxt "@action:label" msgid "Profile settings" msgstr "Profielinstellingen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 msgctxt "@info:tooltip" msgid "How should the conflict in the profile be resolved?" msgstr "Hoe dient het conflict in het profiel te worden opgelost?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:212 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 msgctxt "@action:label" msgid "Not in profile" msgstr "Niet in profiel" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:217 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 overschrijving" msgstr[1] "%1 overschrijvingen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:232 msgctxt "@action:label" msgid "Derivative from" msgstr "Afgeleide van" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:233 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:237 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 overschrijving" msgstr[1] "%1, %2 overschrijvingen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:249 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:253 msgctxt "@action:label" msgid "Material settings" msgstr "Materiaalinstellingen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:265 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Hoe dient het materiaalconflict te worden opgelost?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:207 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 msgctxt "@action:label" msgid "Setting visibility" msgstr "Zichtbaarheid instellen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:317 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:321 msgctxt "@action:label" msgid "Mode" msgstr "Modus" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:332 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:216 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:218 msgctxt "@action:label" msgid "Visible settings:" msgstr "Zichtbare instellingen:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:223 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 van %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:363 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368 msgctxt "@action:warning" -msgid "Loading a project will clear all models on the buildplate" -msgstr "Als u een project laadt, worden alle modellen van het platform gewist" +msgid "Loading a project will clear all models on the build plate." +msgstr "Als u een project laadt, worden alle modellen van het platform gewist." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:381 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 msgctxt "@action:button" msgid "Open" msgstr "Openen" @@ -2100,6 +2150,11 @@ msgctxt "@action:button" msgid "Installed" msgstr "Geïnstalleerd" +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Downloaden" + #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" @@ -2108,10 +2163,10 @@ msgstr "Licentieovereenkomst invoegtoepassing" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" msgid "" -" plugin contains a license.\n" +"This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr " invoegtoepassing bevat een licentie.\nU moet akkoord gaan met deze licentie om deze invoegtoepassing te mogen installeren.\nGaat u akkoord met onderstaande voorwaarden?" +msgstr "Deze invoegtoepassing bevat een licentie.\nU moet akkoord gaan met deze licentie om deze invoegtoepassing te mogen installeren.\nGaat u akkoord met de onderstaande voorwaarden?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" @@ -2123,6 +2178,11 @@ msgctxt "@action:button" msgid "Decline" msgstr "Nee, ik ga niet akkoord" +#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 +msgctxt "@title:window" +msgid "User Agreement" +msgstr "Gebruikersovereenkomst" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 msgctxt "@title" @@ -2308,30 +2368,25 @@ msgid "Printer does not accept commands" msgstr "Printer accepteert geen opdrachten" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "In onderhoud. Controleer de printer" -#: /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:103 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Printen..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Gepauzeerd" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Voorbereiden..." @@ -2547,7 +2602,7 @@ msgid "Unit" msgstr "Eenheid" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "General" msgstr "Algemeen" @@ -2778,7 +2833,7 @@ 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:441 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 msgctxt "@title:tab" msgid "Printers" msgstr "Printers" @@ -2796,39 +2851,39 @@ msgctxt "@action:button" msgid "Rename" msgstr "Hernoemen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 msgctxt "@label" msgid "Printer type:" msgstr "Type printer:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:158 msgctxt "@label" msgid "Connection:" msgstr "Verbinding:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:166 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:164 #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 msgctxt "@info:status" msgid "The printer is not connected." msgstr "Er is geen verbinding met de printer." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:170 msgctxt "@label" msgid "State:" msgstr "Status:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Waiting for someone to clear the build plate" msgstr "Wachten totdat iemand het platform leegmaakt" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 msgctxt "@label:MonitorStatus" 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:445 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 msgctxt "@title:tab" msgid "Profiles" msgstr "Profielen" @@ -2926,7 +2981,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:443 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 msgctxt "@title:tab" msgid "Materials" msgstr "Materialen" @@ -2984,7 +3039,7 @@ msgid "Successfully exported material to %1" 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 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 msgctxt "@title:window" msgid "Add Printer" msgstr "Printer Toevoegen" @@ -3004,6 +3059,11 @@ msgctxt "@title:window" msgid "About Cura" msgstr "Over Cura" +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43 +msgctxt "@label" +msgid "version: %1" +msgstr "versie: %1" + #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." @@ -3096,12 +3156,17 @@ msgctxt "@label" msgid "Polygon clipping library" msgstr "Bibliotheek met veelhoeken" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Python HTTP-bibliotheek" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 msgctxt "@label" msgid "Font" msgstr "Lettertype" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 msgctxt "@label" msgid "SVG icons" msgstr "SVG-pictogrammen" @@ -3111,7 +3176,12 @@ msgctxt "@label" msgid "Profile:" msgstr "Profiel:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 +msgctxt "@" +msgid "No Profile Available" +msgstr "Er is geen profiel beschikbaar" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3119,32 +3189,32 @@ msgid "" "Click to open the profile manager." 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 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 msgctxt "@label:textbox" msgid "Search..." msgstr "Zoeken..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 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:491 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Deze instelling verbergen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Deze instelling verbergen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Deze instelling zichtbaar houden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Zichtbaarheid van instelling configureren..." @@ -3193,54 +3263,71 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Instelling voor Printen" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 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" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00u 00min" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 msgctxt "@tooltip" -msgid "Time information" -msgstr "Tijdsinformatie" +msgid "Time specification
    " +msgstr "Tijdspecificatie
    " -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 -msgctxt "@description" -msgid "Print time" -msgstr "Printtijd" - -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 msgctxt "@label" +msgid "Cost specification" +msgstr "Kostenspecificatie" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1 m" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1 g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +msgctxt "@label" +msgid "Total:" +msgstr "Totaal:" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" -msgstr "%1m / ~ %2g / ~ %4 %3" +msgstr "%1 m / ~ %2 g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" -msgstr "%1m / ~ %2g" +msgstr "%1 m / ~ %2 g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 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:481 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 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." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Automatisch: %1" @@ -3250,7 +3337,7 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "Beel&d" -#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" msgstr "Automatisch: %1" @@ -3279,13 +3366,13 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "&Recente bestanden openen" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 msgctxt "@info:status" 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 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 msgctxt "@label" msgid "Extruder" msgstr "Extruder" @@ -3300,309 +3387,349 @@ msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "De huidige temperatuur van deze extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:188 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:219 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Het materiaal in deze extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 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:282 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 msgctxt "@label" msgid "Build plate" msgstr "Platform" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 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:343 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:344 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:422 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 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:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Annuleren" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button" msgid "Pre-heat" msgstr "Voorverwarmen" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 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:677 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:703 +msgctxt "@label" +msgid "Printer control" +msgstr "Printerbediening" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 +msgctxt "@label" +msgid "Jog Position" +msgstr "Jog-positie" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735 +msgctxt "@label" +msgid "X/Y" +msgstr "X/Y" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842 +msgctxt "@label" +msgid "Z" +msgstr "Z" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 +msgctxt "@label" +msgid "Jog Distance" +msgstr "Jog-afstand" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018 msgctxt "@label" msgid "Active print" msgstr "Actieve print" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 msgctxt "@label" msgid "Job Name" msgstr "Taaknaam" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 msgctxt "@label" msgid "Printing Time" msgstr "Printtijd" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1035 msgctxt "@label" msgid "Estimated time left" msgstr "Geschatte resterende tijd" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Vo&lledig Scherm In-/Uitschakelen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "Ongedaan &Maken" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Opnieuw" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Afsluiten" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +msgctxt "@action:inmenu menubar:view" +msgid "&Reset camera position" +msgstr "Camerapositie he&rstellen" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Cura Configureren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Printer Toevoegen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:115 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Pr&inters Beheren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Materialen Beheren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "Profiel bijwerken met h&uidige instellingen/overschrijvingen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "Hui&dige wijzigingen verwijderen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "Profiel maken op basis van huidige instellingen/overs&chrijvingen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Profielen Beheren..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Online &Documentatie Weergeven" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:171 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Een &Bug Rapporteren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "&Over..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 msgctxt "@action:inmenu menubar:edit" msgid "Delete &Selected Model" msgid_plural "Delete &Selected Models" msgstr[0] "Ge&selecteerd model verwijderen" msgstr[1] "Ge&selecteerde modellen verwijderen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Geselecteerd model centreren" msgstr[1] "Geselecteerde modellen centreren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Geselecteerd model verveelvoudigen" msgstr[1] "Geselecteerde modellen verveelvoudigen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Model Verwijderen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:222 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Model op Platform Ce&ntreren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:228 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "Modellen &Groeperen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Groeperen van Modellen Opheffen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "Modellen Samen&voegen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Model verveelvoudigen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:265 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "Alle Modellen &Selecteren" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "&Platform Leegmaken" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "Alle Modellen Opnieuw &Laden" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Alle modellen schikken" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Selectie schikken" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Alle Modelposities Herstellen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "Alle Model&transformaties Herstellen" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "Bestand(en) &openen..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Nieuw project..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "Engine-&logboek Weergeven..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:346 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Open Configuratiemap" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Zichtbaarheid Instelling Configureren..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +msgctxt "@action:menu" +msgid "Browse plugins..." +msgstr "Door invoegtoepassingen bladeren..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +msgctxt "@action:menu" +msgid "Installed plugins..." +msgstr "Geïnstalleerde plugins..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Laad een 3D-model" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Gereed om te slicen" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Slicen..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Gereed voor %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Kan Niet Slicen" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Slicen is niet beschikbaar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Voorbereiden" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Annuleren" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 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:593 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 msgctxt "@title:window" msgid "Open file(s)" msgstr "Bestand(en) openen" @@ -3619,112 +3746,117 @@ msgstr "Allemaal als model importeren" #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 msgctxt "@title:window" -msgid "Cura" -msgstr "Cura" +msgid "Ultimaker Cura" +msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&Bestand" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "&Selectie Opslaan naar Bestand" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "Opslaan &als..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 msgctxt "@title:menu menubar:file" msgid "Save project" msgstr "Project opslaan" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "B&ewerken" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 msgctxt "@title:menu" msgid "&View" msgstr "Beel&d" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:167 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 msgctxt "@title:menu" msgid "&Settings" msgstr "In&stellingen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 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 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 msgctxt "@title:menu" msgid "&Material" msgstr "&Materiaal" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 msgctxt "@title:menu" msgid "&Profile" msgstr "&Profiel" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Instellen als Actieve Extruder" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:202 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "E&xtensies" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +msgctxt "@title:menu menubar:toplevel" +msgid "P&lugins" +msgstr "&Plugins" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "Voo&rkeuren" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Help" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 msgctxt "@action:button" msgid "Open File" msgstr "Bestand Openen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 msgctxt "@title:tab" msgid "Settings" msgstr "Instellingen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 msgctxt "@title:window" msgid "New project" msgstr "Nieuw project" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 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:694 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 msgctxt "@window:title" msgid "Install Plugin" msgstr "Invoegtoepassing installeren" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 msgctxt "@title:window" msgid "Open File(s)" msgstr "Bestand(en) openen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 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." @@ -3734,102 +3866,112 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Project opslaan" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 msgctxt "@action:label" msgid "Extruder %1" msgstr "Extruder %1" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 &materiaal" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:242 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/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 msgctxt "@action:button" msgid "Save" msgstr "Opslaan" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 msgctxt "@title:tab" msgid "Prepare" msgstr "Voorbereiden" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 msgctxt "@title:tab" msgid "Monitor" msgstr "Controleren" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 msgctxt "@label" msgid "Layer Height" msgstr "Laaghoogte" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +msgctxt "@tooltip" +msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +msgstr "Er is momenteel een aangepast profiel actief. Als u de kwaliteitsschuifregelaar wilt gebruiken, kiest u een standaard kwaliteitsprofiel op het tabblad Aangepast" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 msgctxt "@label" msgid "Print Speed" msgstr "Printsnelheid" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 msgctxt "@label" msgid "Slower" msgstr "Langzamer" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 msgctxt "@label" msgid "Faster" msgstr "Sneller" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "U hebt enkele profielinstellingen aangepast. Ga naar de aangepaste modus als u deze wilt wijzigen." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 msgctxt "@label" msgid "Infill" msgstr "Vulling" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 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:602 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 msgctxt "@label" msgid "Enable gradual" msgstr "Geleidelijke vulling" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 msgctxt "@label" msgid "Generate Support" msgstr "Support genereren" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 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:718 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 msgctxt "@label" msgid "Support Extruder" msgstr "Extruder voor supportstructuur" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 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:796 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Hechting aan platform" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 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:883 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 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)" @@ -3846,17 +3988,17 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Projectbestand openen" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 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 "Dit is een Cura-projectbestand. Wilt u dit openen als project of de modellen eruit importeren?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:95 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@action:button" msgid "Open as project" msgstr "Openen als project" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Import models" msgstr "Modellen importeren" @@ -3866,17 +4008,17 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Engine-logboek" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 msgctxt "@label" msgid "Material" msgstr "Materiaal" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 msgctxt "@label" -msgid "Check material compatibility" -msgstr "Materiaalcompatibiliteit controleren" +msgid "Check compatibility" +msgstr "Compatibiliteit controleren" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Klik om de materiaalcompatibiliteit te controleren op Ultimaker.com." @@ -3991,11 +4133,6 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3-netwerkverbinding" -#: CuraPrintClusterUpload/plugin.json -msgctxt "name" -msgid "UM3 Network Connection (Cluster)" -msgstr "UM3-netwerkverbinding (Cluster)" - #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4016,6 +4153,16 @@ msgctxt "name" msgid "SolidWorks Integration" msgstr "SolidWorks-integratie" +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Hiermee geeft u de simulatieweergave weer." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Simulatieweergave" + #: PostProcessingPlugin/plugin.json msgctxt "description" msgid "Extension that allows for user created scripts for post processing" @@ -4076,16 +4223,6 @@ msgctxt "name" msgid "GCode Profile Reader" msgstr "G-code-profiellezer" -#: LayerView/plugin.json -msgctxt "description" -msgid "Provides the Layer view." -msgstr "Biedt een laagweergave." - -#: LayerView/plugin.json -msgctxt "name" -msgid "Layer View" -msgstr "Laagweergave" - #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4106,6 +4243,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Versie-upgrade van 2.7 naar 3.0" +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 3.0 naar Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.0 to 3.1" +msgstr "Versie-upgrade van 3.0 naar 3.1" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4166,6 +4313,16 @@ msgctxt "name" msgid "Per Model Settings Tool" msgstr "Gereedschap voor Instellingen per Model" +#: cura-siemensnx-plugin/plugin.json +msgctxt "description" +msgid "Helps you to install an 'export to Cura' button in Siemens NX." +msgstr "Hiermee kunt u een knop installeren in Siemens NX om te 'exporteren naar Cura'." + +#: cura-siemensnx-plugin/plugin.json +msgctxt "name" +msgid "Siemens NX Integration" +msgstr "Siemens NX Integratie" + #: 3MFReader/plugin.json msgctxt "description" msgid "Provides support for reading 3MF files." @@ -4226,6 +4383,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "3MF-schrijver" +#: UserAgreementPlugin/plugin.json +msgctxt "description" +msgid "Ask the user once if he/she agrees with our license" +msgstr "Vraag de gebruiker één keer of deze akkoord gaat met de licentie" + +#: UserAgreementPlugin/plugin.json +msgctxt "name" +msgid "UserAgreement" +msgstr "UserAgreement" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" @@ -4246,6 +4413,138 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura-profiellezer" +#~ msgctxt "@label:status" +#~ msgid "Blocked" +#~ msgstr "Geblokkeerd" + +#~ msgctxt "@label:status" +#~ msgid "Can't start print" +#~ msgstr "Print start niet" + +#~ msgctxt "@action:button" +#~ msgid "Open Connect.." +#~ msgstr "Connect openen" + +#~ msgctxt "@info:title" +#~ msgid "Print Details" +#~ msgstr "Printgegevens" + +#~ 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 "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." + +msgctxt "@item:inlistbox" +msgid "Layer view" +msgstr "Laagweergave" + +msgctxt "@info:title" +msgid "Layer View" +msgstr "Laagweergave" + +#~ msgctxt "@menuitem" +#~ msgid "Browse plugins" +#~ msgstr "Door invoegtoepassingen bladeren" + +#~ msgctxt "@info:title" +#~ msgid "Export Details" +#~ msgstr "Exportgegevens" + +#~ 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 "" +#~ "

    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" +#~ " " + +#~ msgctxt "@action:button" +#~ msgid "Open Web Page" +#~ msgstr "Webpagina openen" + +#~ msgctxt "@action:button" +#~ msgid "Ok" +#~ msgstr "OK" + +#~ 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 aaneengesloten Ultimaker 3-printers" + +#~ 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 aaneengesloten Ultimaker 3-printers" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Voorbereiden" + +#~ msgctxt "@label" +#~ msgid "Completed on: " +#~ msgstr "Voltooid op: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Opens the print jobs page with your default web browser." +#~ msgstr "Opent de pagina met printtaken in uw standaard webbrowser." + +#~ msgctxt "@label" +#~ msgid "PRINTER GROUP" +#~ msgstr "PRINTERGROEP" + +#~ msgctxt "@action:warning" +#~ msgid "Loading a project will clear all models on the buildplate" +#~ msgstr "Als u een project laadt, worden alle modellen van het platform gewist" + +#~ 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 "" +#~ " invoegtoepassing bevat een licentie.\n" +#~ "U moet akkoord gaan met deze licentie om deze invoegtoepassing te mogen installeren.\n" +#~ "Gaat u akkoord met onderstaande voorwaarden?" + +#~ msgctxt "@label" +#~ msgid "00h 00min" +#~ msgstr "00u 00min" + +#~ msgctxt "@tooltip" +#~ msgid "Time information" +#~ msgstr "Tijdsinformatie" + +#~ msgctxt "@description" +#~ msgid "Print time" +#~ msgstr "Printtijd" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g / ~ %4 %3" +#~ msgstr "%1m / ~ %2g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g" +#~ msgstr "%1m / ~ %2g" + +#~ msgctxt "@title:window" +#~ msgid "Cura" +#~ msgstr "Cura" + +#~ msgctxt "@label" +#~ msgid "Check material compatibility" +#~ msgstr "Materiaalcompatibiliteit controleren" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection (Cluster)" +#~ msgstr "UM3-netwerkverbinding (Cluster)" + +#~ msgctxt "description" +#~ msgid "Provides the Layer view." +#~ msgstr "Biedt een laagweergave." + +msgctxt "name" +msgid "Layer View" +msgstr "Laagweergave" + #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" #~ msgstr "Röntgen" @@ -4584,9 +4883,9 @@ msgstr "Cura-profiellezer" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "Deze optie biedt ondersteuning voor het importeren van profielen uit G-code-bestanden." -#~ msgctxt "@label" -#~ msgid "Layer View" -#~ msgstr "Laagweergave" +msgctxt "@label" +msgid "Layer View" +msgstr "Laagweergave" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." diff --git a/resources/i18n/nl_NL/fdmextruder.def.json.po b/resources/i18n/nl_NL/fdmextruder.def.json.po index 989f366539..63bd64cd8c 100644 --- a/resources/i18n/nl_NL/fdmextruder.def.json.po +++ b/resources/i18n/nl_NL/fdmextruder.def.json.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: Dutch\n" "Language: nl_NL\n" diff --git a/resources/i18n/nl_NL/fdmprinter.def.json.po b/resources/i18n/nl_NL/fdmprinter.def.json.po index 18b692c116..8d25da1379 100644 --- a/resources/i18n/nl_NL/fdmprinter.def.json.po +++ b/resources/i18n/nl_NL/fdmprinter.def.json.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -605,6 +605,31 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "De hoogte van de eerste laag in mm. Met een dikkere eerste laag hecht het object beter aan het platform." +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Slicetolerantie" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Geeft aan hoe lagen met een diagonaal oppervlak worden geslicet. De gebieden van een laag kunnen worden gegenereerd op basis van de locatie waar het midden van de laag het oppervlak snijdt (Midden). Daarnaast kan elke laag gebieden hebben die over de gehele hoogte van de laag binnen het volume vallen (Exclusief), of kan een laag gebieden hebben die overal binnen de laag vallen (Inclusief). Met Exclusief worden de meeste details behouden, met Inclusief verkrijgt u de beste pasvorm en met Midden is de verwerkingstijd het kortst." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Midden" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Exclusief" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Inclusief" + #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -755,6 +780,16 @@ 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" @@ -767,7 +802,7 @@ msgstr "De extruder train die voor het printen van de buitenwand wordt gebruikt. #: fdmprinter.def.json msgctxt "wall_x_extruder_nr label" -msgid "Inner Walls Extruder" +msgid "Inner Wall Extruder" msgstr "Extruder binnenwand" #: fdmprinter.def.json @@ -1200,6 +1235,106 @@ 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 "ironing_enabled label" +msgid "Enable Ironing" +msgstr "Strijken inschakelen" + +#: fdmprinter.def.json +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 "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 voorwerp. Dit bespaart tijd als de daaronder gelegen lagen geen glad oppervlak vereisen." + +#: fdmprinter.def.json +msgctxt "ironing_pattern label" +msgid "Ironing Pattern" +msgstr "Strijkpatroon" + +#: fdmprinter.def.json +msgctxt "ironing_pattern description" +msgid "The pattern to use for ironing top surfaces." +msgstr "Het patroon dat wordt gebruikt voor het strijken van oppervlakken." + +#: fdmprinter.def.json +msgctxt "ironing_pattern option concentric" +msgid "Concentric" +msgstr "Concentrisch" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Zigzag" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing label" +msgid "Ironing Line Spacing" +msgstr "Tussenruimte strijklijnen" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing description" +msgid "The distance between the lines of ironing." +msgstr "De afstand tussen de strijklijnen." + +#: fdmprinter.def.json +msgctxt "ironing_flow label" +msgid "Ironing Flow" +msgstr "Strijkdoorvoer" + +#: fdmprinter.def.json +msgctxt "ironing_flow description" +msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." +msgstr "De hoeveelheid materiaal, in verhouding tot een normale skinlijn, die tijdens het strijken moet worden doorgevoerd. Als de nozzle gevuld blijft, kunnen scheuren in de bovenlaag worden gevuld. Te hoge doorvoer leidt echter tot uitstulpingen aan de zijkant van het oppervlak." + +#: fdmprinter.def.json +msgctxt "ironing_inset label" +msgid "Ironing Inset" +msgstr "Uitsparing strijken" + +#: fdmprinter.def.json +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 "infill label" msgid "Infill" @@ -1247,8 +1382,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, 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 "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." +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, tri-hexagon, cubic, octet, quarter cubic, cross 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 "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-, tri-hexagonale, kubische, achtvlaks-, afgeknotte kubus-, kruis- 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" @@ -1265,6 +1400,11 @@ msgctxt "infill_pattern option triangles" msgid "Triangles" msgstr "Driehoeken" +#: fdmprinter.def.json +msgctxt "infill_pattern option trihexagon" +msgid "Tri-Hexagon" +msgstr "Tri-hexagonaal" + #: fdmprinter.def.json msgctxt "infill_pattern option cubic" msgid "Cubic" @@ -1317,8 +1457,8 @@ 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 "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." +msgid "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." +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" @@ -1330,6 +1470,26 @@ msgctxt "infill_angles description" msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns)." msgstr "Een lijst met gehele getallen voor lijnrichtingen die moet worden gebruikt. Elementen uit de lijst worden tijdens het printen van de lagen opeenvolgend gebruikt. Wanneer het einde van de lijst bereikt is, wordt deze weer van voren af aan gestart. De lijstitems zijn gescheiden door komma's en de hele lijst is binnen vierkante haken geplaatst. Standaard wordt een lege lijst gebruikt, wat inhoudt dat de traditionele standaardhoeken (45 en 135 graden voor het lijn- en zigzagpatroon en 45 voor alle andere patronen) worden gebruikt." +#: fdmprinter.def.json +msgctxt "infill_offset_x label" +msgid "Infill X Offset" +msgstr "Vulling X-offset" + +#: fdmprinter.def.json +msgctxt "infill_offset_x description" +msgid "The infill pattern is offset this distance along the X axis." +msgstr "Het vulpatroon wordt over deze afstand verplaatst over de X-as." + +#: fdmprinter.def.json +msgctxt "infill_offset_y label" +msgid "Infill Y Offset" +msgstr "Vulling Y-offset" + +#: fdmprinter.def.json +msgctxt "infill_offset_y description" +msgid "The infill pattern is offset this distance along the Y axis." +msgstr "Het vulpatroon wordt over deze afstand verplaatst over de Y-as." + #: fdmprinter.def.json msgctxt "sub_div_rad_add label" msgid "Cubic Subdivision Shell" @@ -1640,6 +1800,26 @@ msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Bepaalt de diameter van het gebruikte filament. Pas deze waarde aan de diameter van het gebruikte filament aan." +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency label" +msgid "Adhesion Tendency" +msgstr "Hechtingsgevoeligheid" + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency description" +msgid "Surface adhesion tendency." +msgstr "Hechtingsgevoeligheid van het oppervlak." + +#: fdmprinter.def.json +msgctxt "material_surface_energy label" +msgid "Surface Energy" +msgstr "Oppervlakte-energie" + +#: fdmprinter.def.json +msgctxt "material_surface_energy description" +msgid "Surface energy." +msgstr "Oppervlakte-energie." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -2830,36 +3010,6 @@ msgctxt "support_connect_zigzags description" msgid "Connect the ZigZags. This will increase the strength of the zig zag support structure." 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" - -#: 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 "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 "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 "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 "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 "Sla elke N verbindingslijnen één lijn over zodat de supportstructuur gemakkelijker kan worden weggebroken." - #: fdmprinter.def.json msgctxt "support_infill_rate label" msgid "Support Density" @@ -3399,8 +3549,8 @@ msgstr "Skirtafstand" 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." +"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." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3442,26 +3592,6 @@ 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 "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 "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 "Z-offset Aflopende 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 "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" msgid "Raft Extra Margin" @@ -3479,8 +3609,8 @@ 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 "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." +msgid "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." +msgstr "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" @@ -3952,6 +4082,16 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Normaal probeert Cura kleine gaten in het raster te hechten en delen van een laag met grote gaten te verwijderen. Als u deze optie inschakelt, behoudt u deze delen die niet kunnen worden gehecht. Deze optie kan als laatste redmiddel worden gebruikt als er geen andere manier meer is om correcte G-code te genereren." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Maximale resolutie" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "Het minimale formaat van een lijnsegment na het slicen. Als u deze waarde verhoogt, wordt het model met een lagere resolutie geprint. Hiermee kan de printer de verwerkingssnelheid van de G-code bijhouden en wordt de slicesnelheid verhoogd doordat details van het raster worden verwijderd die niet kunnen worden verwerkt." + #: fdmprinter.def.json msgctxt "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -3982,6 +4122,16 @@ msgctxt "alternate_carve_order description" msgid "Switch to which mesh intersecting volumes will belong with every layer, so that the overlapping meshes become interwoven. Turning this setting off will cause one of the meshes to obtain all of the volume in the overlap, while it is removed from the other meshes." msgstr "Schakel naar de rastersnijpuntvolumes die bij elke laag horen, zodat de overlappende rasters worden verweven. Als u deze instelling uitschakelt, krijgt een van de rasters al het volume in de overlap, terwijl dit uit de andere rasters wordt verwijderd." +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers label" +msgid "Remove Empty First Layers" +msgstr "Lege eerste lagen verwijderen" + +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers description" +msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." +msgstr "Hiermee worden de lege lagen onder de eerste geprinte laag verwijderd, indien aanwezig. Als u deze instelling uitschakelt, kunnen lege eerste lagen ontstaan als de Slicetolerantie is ingesteld op Exclusief of Midden." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4187,6 +4337,36 @@ 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 "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 "support_skip_some_zags label" +msgid "Break Up Support In Chunks" +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 "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 "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 "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 "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 "Sla elke N verbindingslijnen één lijn over zodat de supportstructuur gemakkelijker kan worden weggebroken." + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4477,6 +4657,26 @@ msgctxt "magic_fuzzy_skin_point_dist description" msgid "The average distance between the random points introduced on each line segment. Note that the original points of the polygon are discarded, so a high smoothness results in a reduction of the resolution. This value must be higher than half the Fuzzy Skin Thickness." msgstr "De gemiddelde afstand tussen de willekeurig geplaatste punten op elk lijnsegment. Houd er rekening mee dat de originele punten van de polygoon worden verwijderd. Een hoge effenheid leidt dus tot een verlaging van de resolutie. Deze waarde moet hoger zijn dan de helft van de Dikte rafelig oppervlak." +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset label" +msgid "Flow rate compensation max extrusion offset" +msgstr "Maximale extrusieoffset voor doorvoercompensatie" + +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset description" +msgid "The maximum distance in mm to compensate." +msgstr "De maximale afstand in mm die moet worden gecompenseerd." + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor label" +msgid "Flow rate compensation factor" +msgstr "Doorvoercompensatiefactor" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor description" +msgid "The multiplication factor for the flow rate -> distance translation." +msgstr "De vermenigvuldigingsfactor voor de vertaling doorvoer -> afstand." + #: fdmprinter.def.json msgctxt "wireframe_enabled label" msgid "Wire Printing" @@ -4734,106 +4934,6 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "De afstand tussen de nozzle en horizontaal neergaande lijnen. Een grotere tussenruimte zorgt voor diagonaal neerwaarts gaande lijnen met een minder steile hoek. Hierdoor ontstaan minder opwaartse verbindingen met de volgende laag. Alleen van toepassing op Draadprinten." -#: fdmprinter.def.json -msgctxt "ironing_enabled label" -msgid "Enable Ironing" -msgstr "Strijken inschakelen" - -#: fdmprinter.def.json -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 "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 voorwerp. Dit bespaart tijd als de daaronder gelegen lagen geen glad oppervlak vereisen." - -#: fdmprinter.def.json -msgctxt "ironing_pattern label" -msgid "Ironing Pattern" -msgstr "Strijkpatroon" - -#: fdmprinter.def.json -msgctxt "ironing_pattern description" -msgid "The pattern to use for ironing top surfaces." -msgstr "Het patroon dat wordt gebruikt voor het strijken van oppervlakken." - -#: fdmprinter.def.json -msgctxt "ironing_pattern option concentric" -msgid "Concentric" -msgstr "Concentrisch" - -#: fdmprinter.def.json -msgctxt "ironing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Zigzag" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing label" -msgid "Ironing Line Spacing" -msgstr "Tussenruimte strijklijnen" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing description" -msgid "The distance between the lines of ironing." -msgstr "De afstand tussen de strijklijnen." - -#: fdmprinter.def.json -msgctxt "ironing_flow label" -msgid "Ironing Flow" -msgstr "Strijkdoorvoer" - -#: fdmprinter.def.json -msgctxt "ironing_flow description" -msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." -msgstr "De hoeveelheid materiaal, in verhouding tot een normale skinlijn, die tijdens het strijken moet worden doorgevoerd. Als de nozzle gevuld blijft, kunnen scheuren in de bovenlaag worden gevuld. Te hoge doorvoer leidt echter tot uitstulpingen aan de zijkant van het oppervlak." - -#: fdmprinter.def.json -msgctxt "ironing_inset label" -msgid "Ironing Inset" -msgstr "Uitsparing strijken" - -#: fdmprinter.def.json -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" @@ -4894,13 +4994,45 @@ 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_x_extruder_nr label" +#~ msgid "Inner Walls Extruder" +#~ msgstr "Extruder binnenwand" -#~ 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, 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 "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." + +#~ 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 "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." + +#~ 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." + +#~ msgctxt "z_offset_layer_0 label" +#~ msgid "Initial Layer Z Offset" +#~ msgstr "Z-offset Eerste Laag" + +#~ 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 "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." + +#~ msgctxt "z_offset_taper_layers label" +#~ msgid "Z Offset Taper Layers" +#~ msgstr "Z-offset Aflopende Lagen" + +#~ 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 "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." + +#~ 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 "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." #~ 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." @@ -5116,4 +5248,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 fd840d9fc2..19b4c72931 100644 --- a/resources/i18n/pl_PL/cura.po +++ b/resources/i18n/pl_PL/cura.po @@ -6,9 +6,9 @@ msgid "" 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-10-05 17:27+0200\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-21 16:58+0100\n" +"PO-Revision-Date: 2017-11-22 16:19+0100\n" "Last-Translator: 'Jaguś' Paweł Jagusiak and Andrzej 'anraf1001' Rafalski\n" "Language-Team: reprapy.pl\n" "Language: pl_PL\n" @@ -18,66 +18,6 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.0.4\n" -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Print aborted" -msgstr "Drukowanie zostaje przerwane" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Blocked" -msgstr "Zablokowany" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Action required" -msgstr "Konieczne są działania" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Can't start print" -msgstr "Nie mogę rozpocząć drukowania" - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is not set up to host a group of Ultimaker 3 printers." -msgstr "Ta drukarka nie jest skonfigurowana do zarządzania grupą drukarek Ultimaker 3." - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label" -msgid "Finishes at: " -msgstr "Wykończenia na: " - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is the host for a group of %1 Ultimaker 3 printers." -msgstr "Ta drukarka jest gospodarzem grupy %1 drukarek Ultimaker 3." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "{printer_name} skończyła drukowanie '{job_name}'." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Print finished" -msgstr "Drukowanie zakończone" - -#: Manually added for resources/Cura/Cura.qml -msgctxt "@title:menu menubar:toplevel" -msgid "P&lugins" -msgstr "W&tyczki" - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Browse plugins..." -msgstr "Przeglądaj wtyczki..." - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Installed plugins..." -msgstr "Zainstalowane wtyczki..." - #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" @@ -115,19 +55,17 @@ msgstr "Łączenie z 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 -#: /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:428 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/3MFReader/WorkspaceDialog.qml:376 #: /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 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:253 msgctxt "@action:button" msgid "Cancel" msgstr "Anuluj" @@ -154,15 +92,15 @@ msgstr "Plik wysłany do Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@action:button" -msgid "Open Connect.." -msgstr "Otwórz Connect.." +msgid "Open Connect..." +msgstr "Otwórz Connect..." #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@info:tooltip" msgid "Open the Doodle3D Connect web interface" msgstr "Otwórz interfejs Doodle3D Connect" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Pokaż Dziennik" @@ -197,37 +135,38 @@ msgctxt "@info:status" msgid "Connected via USB" msgstr "Połączono przez USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 msgctxt "@info:title" -msgid "Print Details" -msgstr "Szczegółu druku" +msgid "Printer Unavailable" +msgstr "Drukarka Niedostępna" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 msgctxt "@info:title" msgid "USB Printing" msgstr "Drukowanie przez USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 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/USBPrinterOutputDevice.py:461 #: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 msgctxt "@info:title" msgid "Warning" msgstr "Ostrzeżenie" @@ -291,11 +230,11 @@ 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: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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 msgctxt "@info:title" msgid "Error" msgstr "Błąd" @@ -344,346 +283,332 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Dysk wymienny" -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Drukuj przez sieć" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Drukuj przez sieć" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 msgctxt "@info:title" msgid "Connection status" msgstr "Status połączenia" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:479 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:502 msgctxt "@info:title" msgid "Connection Status" msgstr "Status połączenia" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@action:button" msgid "Retry" msgstr "Spróbuj ponownie" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Prześlij ponownie żądanie dostępu" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Dostęp do drukarki został zaakceptowany" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:375 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:385 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:382 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Connected over the network." msgstr "Połączono przez sieć." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:405 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:400 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 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:403 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 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:467 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 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:499 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 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:649 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:666 #, 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:650 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:667 msgctxt "@info:title" msgid "Printer Status" msgstr "Status Drukarki" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 #, 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:682 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 #, 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:692 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 #, 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:702 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 #, 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:716 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 #, 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:724 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:741 #, 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:729 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 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:730 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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:736 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Niedopasowana konfiguracja" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "Wysyłanie nowych zadań (tymczasowo) zostało zablokowane, dalej wysyłane jest poprzednie zadanie." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Wysyłanie danych do drukarki" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:title" msgid "Sending Data" msgstr "Wysyłanie danych" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 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:1050 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Przerywanie drukowania..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 msgctxt "@label:MonitorStatus" msgid "Print aborted. Please check the printer" msgstr "Wydruk został przerwany. Sprawdź drukarkę" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1062 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Wstrzymywanie drukowania..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Wznawianie drukowania ..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Synchronizuj się z drukarką" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 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:1220 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:112 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "Ta drukarka nie jest skonfigurowana do zarządzania grupą podłączonych drukarek Ultimaker 3." -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:113 #, 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 "Ta drukarka jest gospodarzem grupy {count} podłączonych drukarek Ultimaker 3." -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "{printer_name} skończyła drukowanie '{job_name}'. Proszę zabrać wydruk i potwierdzić oczyszczenie platformy roboczej." -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 #, 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 "{printer_name} jest zarezerwowana do druku '{job_name}'. Proszę zmień konfigurację drukarki, żeby pasowała do zadania dla niej, aby rozpocząć drukowanie." -#: /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 "Wysyłanie nowych zadań (tymczasowo) zostało zablokowane, dalej wysyłane jest poprzednie zadanie." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 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 "Nie można wysłać nowego zadania: ta drukarka 3D nie jest (jeszcze) ustawiona jako gospodarz grupy podłączonych drukarek 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 "Wysyłanie {file_name} do grupy {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 "Wysłano {file_name} do grupy {cluster_name}." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 -msgctxt "@action:button" -msgid "Show print jobs" -msgstr "Pokaż zadania druku" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 -msgctxt "@info:tooltip" -msgid "Opens the print jobs interface in your browser." -msgstr "Otwiera interfejs zadań druku w przeglądarce." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Nie można wysłać zadania do grupy {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "Wysłano {file_name} do grupy {cluster_name}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "Pokaż zadania druku" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "Otwiera interfejs zadań druku w przeglądarce." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label" +msgid "Unknown" +msgstr "Nieznany" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#, python-brace-format +msgctxt "@info:status" +msgid "Printer '{printer_name}' has finished printing '{job_name}'." +msgstr "{printer_name} skończyła drukowanie '{job_name}'." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +msgctxt "@info:status" +msgid "Print finished" +msgstr "Drukowanie zakończone" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 +msgctxt "@label:status" +msgid "Action required" +msgstr "Konieczne są działania" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "Wysyłanie {file_name} do grupy {cluster_name}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +msgctxt "@action" +msgid "Connect via Network" +msgstr "Połącz przez sieć" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 #, 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 "Aby upewnić się że twoja {machine_name} jest wyposażona w najnowsze opcje rekomendowane jest aktualizowanie oprogramowania regularnie. Może to być wykonane na {machine_name} (kiedy jest podłączona do sieci) lub przez USB." +msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." +msgstr "Nowe funkcje są dostępne dla twojej {machine_name}! Rekomendowane jest zaktualizowanie oprogramowania drukarki." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Nowe oprogramowanie %s jest dostępne" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 msgctxt "@action:button" -msgid "Download" -msgstr "Pobierz" +msgid "How to update" +msgstr "Jak zaktualizować" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 msgctxt "@info" msgid "Could not access update information." msgstr "Nie można uzyskać dostępu do informacji o aktualizacji" @@ -713,7 +638,22 @@ msgctxt "@info:status" msgid "Error while starting %s!" msgstr "Błąd podczas rozpoczynania %s!" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Simulation view" +msgstr "Widok symulacji" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +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/SimulationView/SimulationView.py:101 +msgctxt "@info:title" +msgid "Simulation View" +msgstr "Widok symulacji" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 msgid "Modify G-Code" msgstr "Modyfikuj G-Code" @@ -743,21 +683,6 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "Pliki G-code" -#: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Widok warstwy" - -#: /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 "Widok warstwy" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -790,8 +715,9 @@ msgstr "Nie można pociąć z obecnym materiałem, ponieważ nie jest on kompaty #: /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 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 msgctxt "@info:title" msgid "Unable to slice" msgstr "Nie można pociąć" @@ -802,23 +728,29 @@ 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:306 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" +msgstr "Nie można pokroić przez ustawienia osobne dla modelu. Następujące ustawienia mają błędy w jednym lub więcej modeli: {error_labels}" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 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:315 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 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ł." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:65 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:status" msgid "Processing Layers" msgstr "Przetwarzanie warstw" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:title" msgid "Information" msgstr "Informacja" @@ -833,14 +765,36 @@ msgctxt "@info:tooltip" 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:475 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23 +msgid "Install" +msgstr "Zainstaluj" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It is not set to a directory." +msgstr "Nie udało się skopiować plików pluginu Siemens NX. Proszę sprawdź twój UGII_USER_DIR. Nie jest ustawiony do folderu." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81 +msgid "Successfully installed Siemens NX Cura plugin." +msgstr "Udało się zainstalować plugin Cura Siemens NX." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgstr "Nie udało się skopiować plików pluginu Siemens NX. Proszę sprawdź twój UGII_USER_DIR." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 +msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." +msgstr "Nie udało się zainstalować pluginu Siemens NX. Nie można ustawić zmiennej środowiskowej UGII_USER_DIR dla Siemens NX." + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 msgctxt "@title:tab" msgid "Recommended" msgstr "Zalecane" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Custom" msgstr "Niestandardowe" @@ -851,29 +805,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Plik 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 msgctxt "@label" msgid "Nozzle" msgstr "Dysza" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 -msgctxt "@menuitem" -msgid "Browse plugins" -msgstr "Przeglądaj wtyczki" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "Nie udało się uzyskać ID wtyczki z {0}" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 msgctxt "@info:tile" msgid "Warning" msgstr "Ostrzeżenie" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 msgctxt "@window:title" msgid "Plugin browser" msgstr "Przeglądarka wtyczek" @@ -888,18 +837,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Plik G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:254 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Analizowanie G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 msgctxt "@info:title" msgid "G-code Details" msgstr "Szczegóły G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 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." @@ -941,73 +890,78 @@ msgctxt "@action" msgid "Level build plate" msgstr "Wypoziomuj stół" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Zewnętrzna ściana" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Ściany wewnętrzne" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 msgctxt "@tooltip" msgid "Skin" msgstr "Skin" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 msgctxt "@tooltip" msgid "Infill" msgstr "Wypełnienie" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 msgctxt "@tooltip" msgid "Support Infill" msgstr "Wypełnienie podpór" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 msgctxt "@tooltip" msgid "Support Interface" msgstr "Łączenie podpory" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Support" msgstr "Podpory " -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" msgid "Skirt" msgstr "Obwódka" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 msgctxt "@tooltip" msgid "Travel" msgstr "Ruch jałowy" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Retractions" msgstr "Retrakcja" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Other" msgstr "Inny" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +msgctxt "@label unknown material" +msgid "Unknown" +msgstr "Nieznany" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Plik pocięty wcześniej {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 msgctxt "@item:material" msgid "No material loaded" msgstr "Nie załadowano materiału" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 msgctxt "@item:material" msgid "Unknown material" msgstr "Nieznany materiał" @@ -1034,13 +988,13 @@ msgid "Can't Find Location" msgstr "Nie można Znaleźć Lokalizacji" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 msgctxt "@title:window" msgid "File Already Exists" msgstr "Plik już istnieje" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 #, 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?" @@ -1056,12 +1010,22 @@ msgctxt "@label" msgid "Custom Material" msgstr "Niestandardowy materiał" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 +msgctxt "@menuitem" +msgid "Global" +msgstr "Globalny" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Nie zastąpione" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 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/MachineManager.py:118 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1082,62 +1046,62 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Cofnij zmianę średnicy materiału." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Nie udało się wyeksportować profilu do {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Nie można eksportować profilu do {0}: Wtyczka pisarza zgłosiła błąd." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Wyeksportowano profil do {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:157 msgctxt "@info:title" -msgid "Export Details" -msgstr "Szczegóły Eskportu" +msgid "Export succeeded" +msgstr "Eksport udany" -#: /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 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "Nie udało się zaimportować profilu z {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profil zaimportowany {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 #, 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:272 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 msgctxt "@label" msgid "Custom profile" msgstr "Niestandardowy profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Profilowi brakuje typu jakości." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1164,241 +1128,319 @@ msgctxt "@info:title" msgid "Placing Object" msgstr "Rozmieszczenie Obiektów" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 msgctxt "@title:window" msgid "Crash Report" msgstr "Raport awarii" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:79 -msgctxt "@label" +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +msgctxt "@label crash message" 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" -" " +"

    A fatal exception has occurred. Please send us this Crash Report to fix the problem

    \n" +"

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" +" " msgstr "" -"

    Pojawił się fatalny wyjątek, z którego nie możemy odzyskać!

    \n" -"

    Aby przesłać zgłoszenie błędu, skorzystaj z poniższych informacji http://github.com/Ultimaker/Cura/issues

    \n" -" " +"

    Wystąpił fatalny błąd. Proszę wyślij do nas ten Raport Błędu, abyśmy mogli naprawić błąd

    \n" +"

    Proszę użyj przycisku \"Wyślij raport\", aby wysłać raport błędu automatycznie na nasze serwery.

    \n" +" " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +msgctxt "@title:groupbox" +msgid "System information" +msgstr "Informacje o systemie" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +msgctxt "@label unknown version of Cura" +msgid "Unknown" +msgstr "Nieznany" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 +#, python-brace-format +msgctxt "@label Cura version" +msgid "Cura version: {version}
    " +msgstr "Wersja Cura: {version}
    " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -msgctxt "@action:button" -msgid "Open Web Page" -msgstr "Otwórz stronę sieci Web" +#, python-brace-format +msgctxt "@label Platform" +msgid "Platform: {platform}
    " +msgstr "Platforma: {platform}
    " -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 +#, python-brace-format +msgctxt "@label Qt version" +msgid "Qt version: {qt}
    " +msgstr "Wersja Qt: {qt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 +#, python-brace-format +msgctxt "@label PyQt version" +msgid "PyQt version: {pyqt}
    " +msgstr "Wersja PyQt: {pyqt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 +#, python-brace-format +msgctxt "@label OpenGL" +msgid "OpenGL: {opengl}
    " +msgstr "OpenGL: {opengl}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#, python-brace-format +msgctxt "@label OpenGL version" +msgid "
  • OpenGL Version: {version}
  • " +msgstr "
  • Wersja OpenGL: {version}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#, python-brace-format +msgctxt "@label OpenGL vendor" +msgid "
  • OpenGL Vendor: {vendor}
  • " +msgstr "
  • Wydawca OpenGL: {vendor}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#, python-brace-format +msgctxt "@label OpenGL renderer" +msgid "
  • OpenGL Renderer: {renderer}
  • " +msgstr "
  • OpenGL Renderer: {renderer}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +msgctxt "@title:groupbox" +msgid "Exception traceback" +msgstr "Śledzenie błędów" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +msgctxt "@title:groupbox" +msgid "Logs" +msgstr "Logi" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +msgctxt "@title:groupbox" +msgid "User description" +msgstr "Opis użytkownika" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +msgctxt "@action:button" +msgid "Send report" +msgstr "Wyślij raport" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Ładowanie drukarek..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Ustawianie sceny ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Ładowanie interfejsu ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 #, 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:1295 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 #, 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:1304 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1357 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Nie można otworzyć żadnego innego pliku, jeśli ładuje się G-code. Pominięto importowanie {0}" +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +msgctxt "@info:status" +msgid "The selected model was too small to load." +msgstr "Wybrany model był zbyta mały do załadowania." + #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 msgctxt "@title" msgid "Machine Settings" msgstr "Ustawienia Drukarki" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:77 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:78 msgctxt "@title:tab" msgid "Printer" msgstr "Drukarka" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:96 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 msgctxt "@label" msgid "Printer Settings" msgstr "Ustawienia drukarki" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:107 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 msgctxt "@label" msgid "X (Width)" msgstr "X (Szerokość)" -#: /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: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 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:117 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Głębokość)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:127 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Wysokość)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:139 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:140 msgctxt "@label" msgid "Build plate shape" msgstr "Kształt stołu roboczego" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:148 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 msgctxt "@option:check" msgid "Origin at center" msgstr "Początek na środku" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:156 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:157 msgctxt "@option:check" msgid "Heated bed" msgstr "Podgrzewany stół" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:167 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 msgctxt "@label" msgid "Gcode flavor" msgstr "Wersja Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:180 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 msgctxt "@label" msgid "Printhead Settings" msgstr "Ustawienia głowic drukujących" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:190 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 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 "Odległość od lewej strony głowicy do środka dyszy. Używane do unikania kolizji pomiędzy poprzednimi wydrukami a głowicą podczas drukowania \"Jeden na Raz\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:200 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 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 "Odległość od przedniej strony głowicy do środka dyszy. Używane do unikania kolizji pomiędzy poprzednimi wydrukami a głowicą podczas drukowania \"Jeden na Raz\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:210 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 msgctxt "@label" msgid "X max" msgstr "X max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 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 "Odległość od prawej strony głowicy do środka dyszy. Używane do unikania kolizji pomiędzy poprzednimi wydrukami a głowicą podczas drukowania \"Jeden na Raz\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:220 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 msgctxt "@label" msgid "Y max" msgstr "Y max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 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 "Odległość od tylnej strony głowicy do środka dyszy. Używane do unikania kolizji pomiędzy poprzednimi wydrukami a głowicą podczas drukowania \"Jeden na Raz\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:233 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 msgctxt "@label" msgid "Gantry height" msgstr "Wysokość ramy" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 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:254 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 msgctxt "@label" msgid "Number of Extruders" msgstr "Liczba ekstruderów" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 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:290 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 msgctxt "@label" msgid "Material diameter" msgstr "Średnica materiału" -#: /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:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 msgctxt "@label" msgid "Nozzle size" msgstr "Rozmiar dyszy" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 msgctxt "@label" msgid "Start Gcode" msgstr "Początk. Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 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:335 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 msgctxt "@label" msgid "End Gcode" msgstr "Końcowy Gcode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 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:377 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 msgctxt "@label" msgid "Nozzle Settings" msgstr "Ustawienia dyszy" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 msgctxt "@label" msgid "Nozzle offset X" msgstr "Korekcja dyszy X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Korekcja dyszy Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "Początkowy Gcode ekstrudera" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Extruder End Gcode" msgstr "Końcowy Gcode ekstrudera" @@ -1411,12 +1453,11 @@ 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/PostProcessingPlugin/PostProcessingPlugin.qml:445 #: /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/Preferences/MachinesPage.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 msgctxt "@action:button" msgid "Close" @@ -1468,13 +1509,11 @@ 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" @@ -1486,20 +1525,17 @@ 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 @@ -1508,220 +1544,221 @@ msgid "Remove" msgstr "Usunąć" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:194 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 msgctxt "@label" msgid "Type" msgstr "Rodzaj" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 msgctxt "@label" msgid "Address" msgstr "Adres" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:286 +msgctxt "@label" +msgid "This printer is not set up to host a group of Ultimaker 3 printers." +msgstr "Ta drukarka nie jest skonfigurowana do zarządzania grupą drukarek Ultimaker 3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:290 +msgctxt "@label" +msgid "This printer is the host for a group of %1 Ultimaker 3 printers." +msgstr "Ta drukarka jest gospodarzem grupy %1 drukarek Ultimaker 3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:300 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/DiscoverUM3Action.qml:305 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /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:316 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 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:346 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 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:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 +#: /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" +msgid "OK" +msgstr "OK" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Drukuj przez sieć" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Drukuj" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:36 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "%1 nie została ustawiona do hostowania grupy podłączonych drukarek Ultimaker 3" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "Otwiera stronę zadań drukowania w twojej domyślnej przeglądarce sieciowej." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "Zobacz zadania drukowania" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 +msgctxt "@label" +msgid "Preparing to print" +msgstr "Przygotowywanie do druku" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 +msgctxt "@label:status" +msgid "Printing" +msgstr "Drukowanie" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 +msgctxt "@label:status" +msgid "Available" +msgstr "Dostępna" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 +#: /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/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 +msgctxt "@label:status" +msgid "Disabled" +msgstr "Wyłączona" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273 +msgctxt "@label:status" +msgid "Reserved" +msgstr "Zajęta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:275 +msgctxt "@label:status" +msgid "Finished" +msgstr "Zakończono" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 +msgctxt "@label:status" +msgid "Paused" +msgstr "Wstrzymana" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 +msgctxt "@label:status" +msgid "Resuming" +msgstr "Wznawianie" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 +msgctxt "@label:status" +msgid "Print aborted" +msgstr "Drukowanie zostaje przerwane" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:410 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "Nie akceptuje zadań drukowania" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 +msgctxt "@label" +msgid "Finishes at: " +msgstr "Wykończenia na: " + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 +msgctxt "@label" +msgid "Clear build plate" +msgstr "Oczyść platformę roboczą" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "Oczekuje na zmianę konfiguracji" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:64 +msgctxt "@title" +msgid "Print jobs" +msgstr "Zadania drukowania" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 +msgctxt "@label" +msgid "Printing" +msgstr "Drukowanie" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 +msgctxt "@label" +msgid "Queued" +msgstr "W kolejce" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:171 +msgctxt "@label:title" +msgid "Printers" +msgstr "Drukarki" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 +msgctxt "@action:button" +msgid "View printers" +msgstr "Zobacz drukarki" #: /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/DiscoverUM3Action.qml:284 -msgctxt "@label" -msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -msgstr "Ta drukarka nie została ustawiona do hostowania grupy podłączonych drukarek 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 "Ta drukarka nie została ustawiona do hostowania grupy %1 podłączonych drukarek Ultimaker 3" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 -msgctxt "@title:window" -msgid "Print over network" -msgstr "Drukuj przez sieć" - -#: /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 "%1 nie została ustawiona do hostowania grupy podłączonych drukarek Ultimaker 3" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 -msgctxt "@label:status" -msgid "Printing" -msgstr "Drukowanie" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 -msgctxt "@label:status" -msgid "Reserved" -msgstr "Zajęta" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 -msgctxt "@label:status" -msgid "Finished" -msgstr "Zakończono" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 -msgctxt "@label:status" -msgid "Preparing" -msgstr "Przygotowywanie" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 -msgctxt "@label:status" -msgid "Available" -msgstr "Dostępna" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 -msgctxt "@label" -msgid "Completed on: " -msgstr "Zakończono:" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 -msgctxt "@label" -msgid "Clear build plate" -msgstr "Oczyść platformę roboczą" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 -msgctxt "@label" -msgid "Preparing to print" -msgstr "Przygotowywanie do druku" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 -msgctxt "@label" -msgid "Not accepting print jobs" -msgstr "Nie akceptuje zadań drukowania" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 -msgctxt "@info:tooltip" -msgid "Opens the print jobs page with your default web browser." -msgstr "Otwiera stronę zadań drukowania za pomocą domyślnej przeglądarki." - -#: /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 "Zobacz zadania drukowania" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "PRINTER GROUP" -msgstr "GRUPA DRUKAREK" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 -msgctxt "@title" -msgid "Print jobs" -msgstr "Zadania drukowania" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 -msgctxt "@label" -msgid "Printing" -msgstr "Drukowanie" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 -msgctxt "@label" -msgid "Queued" -msgstr "W kolejce" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 -msgctxt "@label" -msgid "Waiting for configuration change" -msgstr "Oczekuje na zmianę konfiguracji" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 -msgctxt "@label:title" -msgid "Printers" -msgstr "Drukarki" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 -msgctxt "@action:button" -msgid "View printers" -msgstr "Zobacz drukarki" - #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1747,13 +1784,6 @@ msgctxt "@option:curaSolidworksStlQuality" msgid "Always use Coarse quality" msgstr "Zawsze używaj Słabej jakości" -#: /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..." @@ -1780,11 +1810,91 @@ msgid "Fine" msgstr "Dobra" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 msgctxt "@text:window" msgid "Remember my choice" msgstr "Zapamiętaj mój wybór" +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +msgctxt "@label" +msgid "Color scheme" +msgstr "Schemat kolorów" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +msgctxt "@label:listbox" +msgid "Material Color" +msgstr "Kolor materiału" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +msgctxt "@label:listbox" +msgid "Line Type" +msgstr "Rodzaj linii" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +msgctxt "@label:listbox" +msgid "Feedrate" +msgstr "Szybkość Posuwu" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +msgctxt "@label:listbox" +msgid "Layer thickness" +msgstr "Grubość warstwy" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +msgctxt "@label" +msgid "Compatibility Mode" +msgstr "Tryb zgodności" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +msgctxt "@label" +msgid "Show Travels" +msgstr "Pokaż ruch jałowy" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +msgctxt "@label" +msgid "Show Helpers" +msgstr "Pokaż pomocnik" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +msgctxt "@label" +msgid "Show Shell" +msgstr "Pokaż powłokę" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +msgctxt "@label" +msgid "Show Infill" +msgstr "Pokaż wypełnienie" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +msgctxt "@label" +msgid "Only Show Top Layers" +msgstr "Pokaż tylko najwyższe warstwy" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +msgctxt "@label" +msgid "Show 5 Detailed Layers On Top" +msgstr "Pokaż 5 Szczegółowych Warstw" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +msgctxt "@label" +msgid "Top / Bottom" +msgstr "Góra/ Dół" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +msgctxt "@label" +msgid "Inner Wall" +msgstr "Wewnętrzna ściana" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +msgctxt "@label" +msgid "min" +msgstr "min" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +msgctxt "@label" +msgid "max" +msgstr "max" + #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 msgctxt "@title:window" msgid "Post Processing Plugin" @@ -1795,81 +1905,21 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Skrypty post-processingu" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:218 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:217 msgctxt "@action" msgid "Add a script" msgstr "Dodaj skrypt" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:264 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:263 msgctxt "@label" msgid "Settings" msgstr "Ustawienia" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Zmień aktywne skrypty post-processingu" -#: /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:91 -msgctxt "@label:listbox" -msgid "Material Color" -msgstr "Kolor materiału" - -#: /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:135 -msgctxt "@label" -msgid "Compatibility Mode" -msgstr "Tryb zgodności" - -#: /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:222 -msgctxt "@label" -msgid "Show Helpers" -msgstr "Pokaż pomocnik" - -#: /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:234 -msgctxt "@label" -msgid "Show Infill" -msgstr "Pokaż wypełnienie" - -#: /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:292 -msgctxt "@label" -msgid "Show 5 Detailed Layers On Top" -msgstr "Pokaż 5 Szczegółowych Warstw" - -#: /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:307 -msgctxt "@label" -msgid "Inner Wall" -msgstr "Wewnętrzna ściana" - #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" msgid "Convert Image..." @@ -1961,129 +2011,129 @@ msgctxt "@label:checkbox" msgid "Show all" msgstr "Pokaż wszystko" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:13 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Otwórz projekt" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 msgctxt "@action:ComboBox option" msgid "Update existing" msgstr "Zaktualizuj istniejące" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:55 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 msgctxt "@action:ComboBox option" msgid "Create new" msgstr "Utwórz nowy" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:70 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Podsumowanie - Projekt Cura" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:88 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:88 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 msgctxt "@action:label" msgid "Printer settings" msgstr "Ustawienia drukarki" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 msgctxt "@info:tooltip" msgid "How should the conflict in the machine be resolved?" msgstr "Jak powinny być rozwiązywane błędy w maszynie?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:124 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:97 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 msgctxt "@action:label" msgid "Type" msgstr "Typ" -#: /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 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:144 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:201 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:293 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:190 msgctxt "@action:label" msgid "Name" msgstr "Nazwa" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:161 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:164 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:166 msgctxt "@action:label" msgid "Profile settings" msgstr "Ustawienia profilu" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 msgctxt "@info:tooltip" msgid "How should the conflict in the profile be resolved?" msgstr "Jak powinien zostać rozwiązany problem z profilem?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:212 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 msgctxt "@action:label" msgid "Not in profile" msgstr "Nie w profilu" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:217 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 nadpisanie" msgstr[1] "%1 Zastępuje" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:232 msgctxt "@action:label" msgid "Derivative from" msgstr "Pochodna z" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:233 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:237 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 nadpisanie" msgstr[1] "%1, %2 zastępuje" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:249 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:253 msgctxt "@action:label" msgid "Material settings" msgstr "Ustawienia materiału" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:265 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Jak powinien zostać rozwiązany problem z materiałem?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:207 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 msgctxt "@action:label" msgid "Setting visibility" msgstr "Ustawienie widoczności" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:317 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:321 msgctxt "@action:label" msgid "Mode" msgstr "Tryb" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:332 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:216 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:218 msgctxt "@action:label" msgid "Visible settings:" msgstr "Widoczne ustawienie:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:223 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 poza %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:363 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368 msgctxt "@action:warning" -msgid "Loading a project will clear all models on the buildplate" -msgstr "Załadowanie projektu spowoduje usunięcie wszystkich modeli ze stołu" +msgid "Loading a project will clear all models on the build plate." +msgstr "Ładowanie projektu usunie wszystkie modele z platformy roboczej." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:381 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 msgctxt "@action:button" msgid "Open" msgstr "Otwórz" @@ -2108,6 +2158,11 @@ msgctxt "@action:button" msgid "Installed" msgstr "Zainstalowane" +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Pobierz" + #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" @@ -2116,12 +2171,12 @@ msgstr "Akceptowanie Licencji Wtyczki" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" msgid "" -" plugin contains a license.\n" +"This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" msgstr "" -" wtyczka zawiera licencje.\n" -"Musisz zaakceptować tą licencję, aby zainstalować wtyczkę.\n" +"Ten plugin zawiera licencje.\n" +"Musisz zaakceptować tę licencję, aby zainstalować ten plugin.\n" "Akceptujesz poniższe postanowienia?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 @@ -2134,6 +2189,11 @@ msgctxt "@action:button" msgid "Decline" msgstr "Odrzuć" +#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 +msgctxt "@title:window" +msgid "User Agreement" +msgstr "Zgoda Użytkownika" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 msgctxt "@title" @@ -2319,30 +2379,25 @@ msgid "Printer does not accept commands" msgstr "Drukarka nie akceptuje poleceń" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "W naprawie. Sprawdź drukarkę" -#: /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:103 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Drukowanie..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Wstrzymano" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Przygotowywanie ..." @@ -2560,7 +2615,7 @@ msgid "Unit" msgstr "Jednostka" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "General" msgstr "Ogólny" @@ -2791,7 +2846,7 @@ 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:441 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 msgctxt "@title:tab" msgid "Printers" msgstr "Drukarki" @@ -2809,39 +2864,39 @@ msgctxt "@action:button" msgid "Rename" msgstr "Zmień nazwę" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 msgctxt "@label" msgid "Printer type:" msgstr "Typ drukarki:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:158 msgctxt "@label" msgid "Connection:" msgstr "Połączenie:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:166 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:164 #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 msgctxt "@info:status" msgid "The printer is not connected." msgstr "Drukarka nie jest podłączona." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:170 msgctxt "@label" msgid "State:" msgstr "Stan:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Waiting for someone to clear the build plate" msgstr "Oczekiwanie na wyczyszczenie stołu roboczego" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 msgctxt "@label:MonitorStatus" 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:445 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 msgctxt "@title:tab" msgid "Profiles" msgstr "Profile" @@ -2939,7 +2994,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:443 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 msgctxt "@title:tab" msgid "Materials" msgstr "Materiał" @@ -2997,7 +3052,7 @@ msgid "Successfully exported material to %1" msgstr "Udało się wyeksportować materiał do %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 msgctxt "@title:window" msgid "Add Printer" msgstr "Dodaj drukarkę" @@ -3017,6 +3072,11 @@ msgctxt "@title:window" msgid "About Cura" msgstr "O Cura" +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43 +msgctxt "@label" +msgid "version: %1" +msgstr "version: %1" + #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." @@ -3111,12 +3171,17 @@ msgctxt "@label" msgid "Polygon clipping library" msgstr "Biblioteka edytująca pola" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Biblioteka Python HTTP" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 msgctxt "@label" msgid "Font" msgstr "Czcionka" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 msgctxt "@label" msgid "SVG icons" msgstr "Ikony SVG" @@ -3126,7 +3191,12 @@ msgctxt "@label" msgid "Profile:" msgstr "Profil:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 +msgctxt "@" +msgid "No Profile Available" +msgstr "Brak Dostępnego Profilu" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3137,32 +3207,32 @@ msgstr "" "\n" "Kliknij, aby otworzyć menedżer profili." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 msgctxt "@label:textbox" msgid "Search..." msgstr "Szukanie..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 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:491 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ukryj tę opcję" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Nie pokazuj tej opcji" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Pozostaw tę opcję widoczną" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Skonfiguruj widoczność ustawień..." @@ -3220,12 +3290,12 @@ msgstr "" "\n" "Kliknij, aby przywrócić wartość obliczoną." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Ustawienia druku" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" @@ -3234,42 +3304,59 @@ msgstr "" "Konfiguracja wydruku jest wyłączona\n" "Pliki G-code nie mogą zostać zmodyfikowane" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +msgctxt "@label Hours and minutes" msgid "00h 00min" -msgstr "00h 00min" +msgstr "00godz. 00min." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 msgctxt "@tooltip" -msgid "Time information" -msgstr "Informacje o czasie" +msgid "Time specification
    " +msgstr "Szacowany czas
    " -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 -msgctxt "@description" -msgid "Print time" -msgstr "Czas druku" - -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 msgctxt "@label" +msgid "Cost specification" +msgstr "Szacowanie kosztów" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1m" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +msgctxt "@label" +msgid "Total:" +msgstr "Razem:" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1m / ~ %2g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1m / ~ %2g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 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:481 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 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." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Automatyczny: %1" @@ -3279,7 +3366,7 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&Widok" -#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" msgstr "Automatyczny: %1" @@ -3308,13 +3395,13 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Otwórz &ostatnio używane" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 msgctxt "@info:status" 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 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 msgctxt "@label" msgid "Extruder" msgstr "Ekstruder" @@ -3329,309 +3416,349 @@ 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:187 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:188 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:219 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Materiał w głowicy drukującej." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 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:282 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 msgctxt "@label" msgid "Build plate" msgstr "Stół roboczy" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 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:343 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:344 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:422 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 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:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Anuluj" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button" msgid "Pre-heat" msgstr "Podgrzewanie wstępne" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 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:677 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:703 +msgctxt "@label" +msgid "Printer control" +msgstr "Kontrola drukarką" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 +msgctxt "@label" +msgid "Jog Position" +msgstr "Pozycja Swobodnego Ruchu" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735 +msgctxt "@label" +msgid "X/Y" +msgstr "X/Y" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842 +msgctxt "@label" +msgid "Z" +msgstr "Z" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 +msgctxt "@label" +msgid "Jog Distance" +msgstr "Dystans Swobodnego Ruchu" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018 msgctxt "@label" msgid "Active print" msgstr "Aktywny wydruk" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 msgctxt "@label" msgid "Job Name" msgstr "Nazwa pracy" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 msgctxt "@label" msgid "Printing Time" msgstr "Czas druku" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1035 msgctxt "@label" msgid "Estimated time left" msgstr "Szacowany czas pozostały" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Przełącz tryb pełnoekranowy" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Cofnij" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Ponów" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Zamknij" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +msgctxt "@action:inmenu menubar:view" +msgid "&Reset camera position" +msgstr "&Zresetuj pozycję kamery" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Konfiguruj Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Dodaj drukarkę..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:115 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Zarządzaj drukarkami..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Zarządzaj materiałami..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&Aktualizuj profil z bieżącymi ustawieniami" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Odrzuć bieżące zmiany" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Utwórz profil z bieżących ustawień..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Zarządzaj profilami..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Pokaż dokumentację internetową" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:171 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Zgłoś błąd" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "&O..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 msgctxt "@action:inmenu menubar:edit" msgid "Delete &Selected Model" msgid_plural "Delete &Selected Models" msgstr[0] "Usuń &wybrany model" msgstr[1] "Usuń &wybrane modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Wyśrodkuj wybrany model" msgstr[1] "Wyśrodkuj wybrane modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Rozmnóż wybrany model" msgstr[1] "Rozmnóż wybrane modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Usuń model" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:222 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Wyśrodkuj model na platformie" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:228 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "&Grupuj modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Rozgrupuj modele " -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "&Połącz modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Powiel model..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:265 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "&Wybierz wszystkie modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "&Wyczyść stół" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "Przeładuj wszystkie modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Ułóż wszystkie modele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Wybór ułożenia" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Zresetuj wszystkie pozycje modelu" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "Zresetuj wszystkie przekształcenia modelu" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Otwórz plik(i)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Nowy projekt..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "Pokaż &dziennik silnika..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:346 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Pokaż folder konfiguracji" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Skonfiguruj widoczność ustawień ..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +msgctxt "@action:menu" +msgid "Browse plugins..." +msgstr "Przeglądaj wtyczki..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +msgctxt "@action:menu" +msgid "Installed plugins..." +msgstr "Zainstalowane wtyczki..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Proszę załaduj model 3D" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Gotowy do cięcia" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Cięcie..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Gotowy do %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Nie można pociąć" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Cięcie niedostępne" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Przygotuj" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Anuluj" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 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:593 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 msgctxt "@title:window" msgid "Open file(s)" msgstr "Otwórz plik(i)" @@ -3648,112 +3775,117 @@ msgstr "Importuj wszystkie jako modele" #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 msgctxt "@title:window" -msgid "Cura" -msgstr "Cura" +msgid "Ultimaker Cura" +msgstr "Cura Ultimaker" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&Plik" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "&Zapisz wybór w pliku" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "Zapisz &jako..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 msgctxt "@title:menu menubar:file" msgid "Save project" msgstr "Zapisz projekt" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&Edytuj" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 msgctxt "@title:menu" msgid "&View" msgstr "&Widok" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:167 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 msgctxt "@title:menu" msgid "&Settings" msgstr "&Ustawienia" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "&Drukarka" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 msgctxt "@title:menu" msgid "&Material" msgstr "&Materiał" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 msgctxt "@title:menu" msgid "&Profile" msgstr "&Profil" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Ustaw jako aktywną głowicę" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:202 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "&Rozszerzenia" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +msgctxt "@title:menu menubar:toplevel" +msgid "P&lugins" +msgstr "W&tyczki" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "Preferencje" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Pomoc" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 msgctxt "@action:button" msgid "Open File" msgstr "Otwórz plik" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 msgctxt "@title:tab" msgid "Settings" msgstr "Ustawienia" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 msgctxt "@title:window" msgid "New project" msgstr "Nowy projekt" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 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:694 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 msgctxt "@window:title" msgid "Install Plugin" msgstr "Zainstaluj Wtyczkę" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 msgctxt "@title:window" msgid "Open File(s)" msgstr "Otwórz plik(i)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 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." @@ -3763,102 +3895,112 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Zapisz projekt" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 msgctxt "@action:label" msgid "Extruder %1" msgstr "Ekstruder %1" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & materiał" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:242 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/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 msgctxt "@action:button" msgid "Save" msgstr "Zapisz" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 msgctxt "@title:tab" msgid "Prepare" msgstr "Przygotuj" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 msgctxt "@title:tab" msgid "Monitor" msgstr "Monitor" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 msgctxt "@label" msgid "Layer Height" msgstr "Wysokość warstwy" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +msgctxt "@tooltip" +msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +msgstr "Niestandardowy profil jest obecnie aktywny. Aby włączyć pasek jakości, wybierz domyślny profil w zakładce Niestandardowe" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 msgctxt "@label" msgid "Print Speed" msgstr "Prędkość Druku" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 msgctxt "@label" msgid "Slower" msgstr "Wolniej" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 msgctxt "@label" msgid "Faster" msgstr "Szybciej" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "Zmodyfikowałeś ustawienia profilu. Jeżeli chcesz je zmienić, przejdź do trybu niestandardowego." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 msgctxt "@label" msgid "Infill" msgstr "Wypełnienie" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 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:602 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 msgctxt "@label" msgid "Enable gradual" msgstr "Włącz stopniowane" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 msgctxt "@label" msgid "Generate Support" msgstr "Generuj podpory" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 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:718 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 msgctxt "@label" msgid "Support Extruder" msgstr "Ekstruder od podpór" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 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:796 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Popraw przycz. modelu" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 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:883 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 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" @@ -3875,17 +4017,17 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Otwórz plik projektu" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 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 "Jest to plik projektu Cura. Czy chcesz otworzyć go jako projekt, czy zaimportować z niego modele?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:95 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@action:button" msgid "Open as project" msgstr "Otwórz jako projekt" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Import models" msgstr "Importuj modele" @@ -3895,17 +4037,17 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Dziennik silnika" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 msgctxt "@label" msgid "Material" msgstr "Materiał" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 msgctxt "@label" -msgid "Check material compatibility" -msgstr "Sprawdź kompatybilność materiału" +msgid "Check compatibility" +msgstr "Sprawdź kompatybilność" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Kliknij, aby sprawdzić zgodność materiału na Ultimaker.com." @@ -4020,11 +4162,6 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Połączenie Sieciowe UM3" -#: CuraPrintClusterUpload/plugin.json -msgctxt "name" -msgid "UM3 Network Connection (Cluster)" -msgstr "Połączenie Sieciowe UM3 (Grupa)" - #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4045,6 +4182,16 @@ msgctxt "name" msgid "SolidWorks Integration" msgstr "Integracja z SolidWorks" +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Zapewnia widok Symulacji" + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Widok Symulacji" + #: PostProcessingPlugin/plugin.json msgctxt "description" msgid "Extension that allows for user created scripts for post processing" @@ -4105,16 +4252,6 @@ msgctxt "name" msgid "GCode Profile Reader" msgstr "Czytnik Profili GCode" -#: LayerView/plugin.json -msgctxt "description" -msgid "Provides the Layer view." -msgstr "Zapewnia widok warstw." - -#: LayerView/plugin.json -msgctxt "name" -msgid "Layer View" -msgstr "Widok Warstw" - #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4135,6 +4272,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Ulepszenie Wersji 2.7 do 3.0" +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." +msgstr "Ulepsza konfigurację z Cura 3.0 do Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.0 to 3.1" +msgstr "Ulepszenie Wersji 3.0 do 3.1" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4195,6 +4342,16 @@ msgctxt "name" msgid "Per Model Settings Tool" msgstr "Narzędzie Ustawień dla Każdego Modelu" +#: cura-siemensnx-plugin/plugin.json +msgctxt "description" +msgid "Helps you to install an 'export to Cura' button in Siemens NX." +msgstr "Pomaga zainstalować przycisk 'eksportuj do Cura' w Siemens NX." + +#: cura-siemensnx-plugin/plugin.json +msgctxt "name" +msgid "Siemens NX Integration" +msgstr "Integracja z Siemens NX" + #: 3MFReader/plugin.json msgctxt "description" msgid "Provides support for reading 3MF files." @@ -4255,6 +4412,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "3MF Writer" +#: UserAgreementPlugin/plugin.json +msgctxt "description" +msgid "Ask the user once if he/she agrees with our license" +msgstr "Pyta użytkownika czy zgadza się z naszą licencją" + +#: UserAgreementPlugin/plugin.json +msgctxt "name" +msgid "UserAgreement" +msgstr "ZgodaUżytkownika" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" @@ -4275,6 +4442,138 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Czytnik Profili Cura" +#~ msgctxt "@label:status" +#~ msgid "Blocked" +#~ msgstr "Zablokowany" + +#~ msgctxt "@label:status" +#~ msgid "Can't start print" +#~ msgstr "Nie mogę rozpocząć drukowania" + +#~ msgctxt "@action:button" +#~ msgid "Open Connect.." +#~ msgstr "Otwórz Connect.." + +#~ msgctxt "@info:title" +#~ msgid "Print Details" +#~ msgstr "Szczegółu druku" + +#~ 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 "Aby upewnić się że twoja {machine_name} jest wyposażona w najnowsze opcje rekomendowane jest aktualizowanie oprogramowania regularnie. Może to być wykonane na {machine_name} (kiedy jest podłączona do sieci) lub przez USB." + +msgctxt "@item:inlistbox" +msgid "Layer view" +msgstr "Widok warstwy" + +msgctxt "@info:title" +msgid "Layer View" +msgstr "Widok warstwy" + +#~ msgctxt "@menuitem" +#~ msgid "Browse plugins" +#~ msgstr "Przeglądaj wtyczki" + +#~ msgctxt "@info:title" +#~ msgid "Export Details" +#~ msgstr "Szczegóły Eskportu" + +#~ 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 "" +#~ "

    Pojawił się fatalny wyjątek, z którego nie możemy odzyskać!

    \n" +#~ "

    Aby przesłać zgłoszenie błędu, skorzystaj z poniższych informacji http://github.com/Ultimaker/Cura/issues

    \n" +#~ " " + +#~ msgctxt "@action:button" +#~ msgid "Open Web Page" +#~ msgstr "Otwórz stronę sieci Web" + +#~ msgctxt "@action:button" +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgctxt "@label" +#~ msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +#~ msgstr "Ta drukarka nie została ustawiona do hostowania grupy podłączonych drukarek Ultimaker 3" + +#~ msgctxt "@label" +#~ msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +#~ msgstr "Ta drukarka nie została ustawiona do hostowania grupy %1 podłączonych drukarek Ultimaker 3" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Przygotowywanie" + +#~ msgctxt "@label" +#~ msgid "Completed on: " +#~ msgstr "Zakończono:" + +#~ msgctxt "@info:tooltip" +#~ msgid "Opens the print jobs page with your default web browser." +#~ msgstr "Otwiera stronę zadań drukowania za pomocą domyślnej przeglądarki." + +#~ msgctxt "@label" +#~ msgid "PRINTER GROUP" +#~ msgstr "GRUPA DRUKAREK" + +#~ msgctxt "@action:warning" +#~ msgid "Loading a project will clear all models on the buildplate" +#~ msgstr "Załadowanie projektu spowoduje usunięcie wszystkich modeli ze stołu" + +#~ 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 "" +#~ " wtyczka zawiera licencje.\n" +#~ "Musisz zaakceptować tą licencję, aby zainstalować wtyczkę.\n" +#~ "Akceptujesz poniższe postanowienia?" + +#~ msgctxt "@label" +#~ msgid "00h 00min" +#~ msgstr "00h 00min" + +#~ msgctxt "@tooltip" +#~ msgid "Time information" +#~ msgstr "Informacje o czasie" + +#~ msgctxt "@description" +#~ msgid "Print time" +#~ msgstr "Czas druku" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g / ~ %4 %3" +#~ msgstr "%1m / ~ %2g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g" +#~ msgstr "%1m / ~ %2g" + +#~ msgctxt "@title:window" +#~ msgid "Cura" +#~ msgstr "Cura" + +#~ msgctxt "@label" +#~ msgid "Check material compatibility" +#~ msgstr "Sprawdź kompatybilność materiału" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection (Cluster)" +#~ msgstr "Połączenie Sieciowe UM3 (Grupa)" + +#~ msgctxt "description" +#~ msgid "Provides the Layer view." +#~ msgstr "Zapewnia widok warstw." + +msgctxt "name" +msgid "Layer View" +msgstr "Widok Warstw" + #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" #~ msgstr "Prześwietlenie" @@ -4594,9 +4893,9 @@ msgstr "Czytnik Profili Cura" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "Zapewnia obsługę importowania profili z plików g-code." -#~ msgctxt "@label" -#~ msgid "Layer View" -#~ msgstr "Widok warstwy" +msgctxt "@label" +msgid "Layer View" +msgstr "Widok warstwy" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." @@ -4762,4 +5061,4 @@ msgstr "Czytnik Profili Cura" #~ msgid "Print Selected Model with %1" #~ msgid_plural "Print Selected Models With %1" #~ msgstr[0] "Wydrukuj wybrany model z %1" -#~ msgstr[1] "Wydrukuj wybrane modele z %1" \ No newline at end of file +#~ msgstr[1] "Wydrukuj wybrane modele z %1" diff --git a/resources/i18n/pl_PL/fdmextruder.def.json.po b/resources/i18n/pl_PL/fdmextruder.def.json.po index 7a75a558d6..8e7a8c2084 100644 --- a/resources/i18n/pl_PL/fdmextruder.def.json.po +++ b/resources/i18n/pl_PL/fdmextruder.def.json.po @@ -6,9 +6,9 @@ msgid "" 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-04 12:25+0200\n" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-22 15:00+0100\n" "Last-Translator: 'Jaguś' Paweł Jagusiak and Andrzej 'anraf1001' Rafalski\n" "Language-Team: reprapy.pl\n" "Language: pl_PL\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Poedit 2.0.3\n" +"X-Generator: Poedit 2.0.4\n" #: fdmextruder.def.json msgctxt "machine_settings label" diff --git a/resources/i18n/pl_PL/fdmprinter.def.json.po b/resources/i18n/pl_PL/fdmprinter.def.json.po index f7a71f1a28..4803933a28 100644 --- a/resources/i18n/pl_PL/fdmprinter.def.json.po +++ b/resources/i18n/pl_PL/fdmprinter.def.json.po @@ -6,9 +6,9 @@ msgid "" 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-09-29 16:14+0200\n" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-22 19:41+0100\n" "Last-Translator: 'Jaguś' Paweł Jagusiak and Andrzej 'anraf1001' Rafalski\n" "Language-Team: reprapy.pl\n" "Language: pl_PL\n" @@ -610,6 +610,31 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "Wysokość początkowej warstwy w mm. Grubsza początkowa warstwa powoduje lepszą przyczepność do stołu." +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Tolerancja Cięcia" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Jak ciąć warstwy z ukośnymi powierzchniami. Obszary warstwy mogą być generowane na podstawie miejsca gdzie środek warstwy przecina się z powierzchnią (Środek). Alternatywnie każda warstwa może mieć obszary, które wpadają do środka objętości poprzez wysokość warstwy (Wyłączne) lub warstwa ma obszary, które wpadają do środka w każdym miejscu na warstwie (Włącznie). Wyłącznie zatrzymuje najwięcej detali, Włącznie powoduje najlepsze dopasowanie, a Środek wymaga najmniej czasu do przetworzenia." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Środek" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Wyłącznie" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Włącznie" + #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -760,6 +785,16 @@ 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" @@ -772,8 +807,8 @@ msgstr "Esktruder używany do drukowania zewn. ściany. Używane w multi-ekstruz #: fdmprinter.def.json msgctxt "wall_x_extruder_nr label" -msgid "Inner Walls Extruder" -msgstr "Esktruder Wewn. Ściany" +msgid "Inner Wall Extruder" +msgstr "Ekstruder Wewn. Linii" #: fdmprinter.def.json msgctxt "wall_x_extruder_nr description" @@ -1205,6 +1240,106 @@ 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 "ironing_enabled label" +msgid "Enable Ironing" +msgstr "Włącz Prasowanie" + +#: fdmprinter.def.json +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 "Prasuj Tylko Najwyższą Warstwę" + +#: 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 "Przeprowadzaj prasowanie tylko na najwyższej warstwie siatki. Oszczędza to czas jeżeli niższe warstwy nie muszą mieć gładkie wykończenia powierzchni." + +#: fdmprinter.def.json +msgctxt "ironing_pattern label" +msgid "Ironing Pattern" +msgstr "Wzór Prasowania" + +#: fdmprinter.def.json +msgctxt "ironing_pattern description" +msgid "The pattern to use for ironing top surfaces." +msgstr "Wzór używany dla górnych powierzchni prasowania." + +#: fdmprinter.def.json +msgctxt "ironing_pattern option concentric" +msgid "Concentric" +msgstr "Koncentryczny" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Zygzak" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing label" +msgid "Ironing Line Spacing" +msgstr "Przerwy Linii Prasowania" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing description" +msgid "The distance between the lines of ironing." +msgstr "Odległość pomiędzy liniami prasowania." + +#: fdmprinter.def.json +msgctxt "ironing_flow label" +msgid "Ironing Flow" +msgstr "Przepływ Prasowania" + +#: fdmprinter.def.json +msgctxt "ironing_flow description" +msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." +msgstr "Ilość materiału, w odniesieniu do normalnej linii skóry, do ekstrudowania podczas prasowania. Pozostawianie dyszy napełnionej pomaga w wypełnianiu nierówności górnej powierzchni, ale zbyt duża ilość materiału może powodować nadekstruzję po stronie powierzchni." + +#: fdmprinter.def.json +msgctxt "ironing_inset label" +msgid "Ironing Inset" +msgstr "Margines Prasowania" + +#: fdmprinter.def.json +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 "infill label" msgid "Infill" @@ -1252,8 +1387,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, 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 "Wzór materiału wypełniającego wydruk. Linie i zygzaki zmieniają kierunek na przemiennych warstwach, redukując koszty materiału. Kratka, trójkąty, sześcienne, ośmiościenne, ćwierć sześcienny i koncentryczny wzór są drukowane w pełni na każdej warstwie. Sześcienne, ćwierć sześcienne i czworościenne wypełnienie zmienia się co każdą warstwę, aby zapewnić równy rozkład 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, tri-hexagon, cubic, octet, quarter cubic, cross 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 "Wzór materiału wypełniającego wydruk. Linie i zygzaki zmieniają kierunek na przemiennych warstwach, redukując koszty materiału. Kratka, trójkąty, tri-sześciokąt, sześcienne, ośmiościenne, ćwierć sześcienny i koncentryczny wzór są drukowane w pełni na każdej warstwie. Sześcienne, ćwierć sześcienne i czworościenne wypełnienie zmienia się co każdą warstwę, aby zapewnić równy rozkład siły w każdym kierunku." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1270,6 +1405,11 @@ msgctxt "infill_pattern option triangles" msgid "Triangles" msgstr "Trójkąty" +#: fdmprinter.def.json +msgctxt "infill_pattern option trihexagon" +msgid "Tri-Hexagon" +msgstr "Tri-Sześciokąt" + #: fdmprinter.def.json msgctxt "infill_pattern option cubic" msgid "Cubic" @@ -1322,8 +1462,8 @@ msgstr "Połącz Linie Wypełnienia" #: 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 "Łączy końce gdzie wypełnienie spotyka się z wewn. ścianą za pomocą linii, które podążają za kształtem wewn. ściany. Włączenie tej opcji może spowodować lepsze łączenie się wypełnienia ze ścianą i redukuje efekty związane z jakością na pionowych ścianach. Wyłączenie tej opcji redukuje ilość użytego materiału." +msgid "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." +msgstr "Łączy końce gdzie wzór wypełnienia spotyka się z wewn. ścianą używając linii, która podąża za kształtem wewn. ściany. Włączenie tego ustawienia może spowodować lepszą przyczepność wypełnienia do ścian i zredukować efekty wypełnienia w jakości powierzchni. Wyłączenie tego ustawienia redukuje ilość potrzebnego materiału." #: fdmprinter.def.json msgctxt "infill_angles label" @@ -1335,6 +1475,26 @@ msgctxt "infill_angles description" msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns)." msgstr "Lista całkowitych kierunków linii do użycia. Elementy z listy są używane kolejno w miarę postępu warstw, a kiedy kończy się lista, zaczyna się od początku. Elementy listy są oddzielone przecinkami, a cała lista znajduje się w nawiasach kwadratowych. Domyślnie lista jest pusta, co oznacza tradycyjne domyślne kąty (45 i 135 stopni dla linii i wzorów zygzakowych i 45 stopni dla wszystkich pozostałych wzorów)." +#: fdmprinter.def.json +msgctxt "infill_offset_x label" +msgid "Infill X Offset" +msgstr "Przesunięcie Wypełn. w Osi X" + +#: fdmprinter.def.json +msgctxt "infill_offset_x description" +msgid "The infill pattern is offset this distance along the X axis." +msgstr "Wypełnienie jest przesunięte o taką odległość wzdłuż osi X." + +#: fdmprinter.def.json +msgctxt "infill_offset_y label" +msgid "Infill Y Offset" +msgstr "Przesunięcie Wypełn. w Osi Y" + +#: fdmprinter.def.json +msgctxt "infill_offset_y description" +msgid "The infill pattern is offset this distance along the Y axis." +msgstr "Wypełnienie jest przesunięte o taką odległość wzdłuż osi Y." + #: fdmprinter.def.json msgctxt "sub_div_rad_add label" msgid "Cubic Subdivision Shell" @@ -1645,6 +1805,26 @@ msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Dostosowuje średnicę stosowanego filamentu. Dopasuj tę wartość do średnicy stosowanego filamentu." +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency label" +msgid "Adhesion Tendency" +msgstr "Tendencja Przyczepności" + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency description" +msgid "Surface adhesion tendency." +msgstr "Tendencja przyczepności powierzchni." + +#: fdmprinter.def.json +msgctxt "material_surface_energy label" +msgid "Surface Energy" +msgstr "Energia Powierzchni" + +#: fdmprinter.def.json +msgctxt "material_surface_energy description" +msgid "Surface energy." +msgstr "Energia powierzchni." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -2835,36 +3015,6 @@ msgctxt "support_connect_zigzags description" msgid "Connect the ZigZags. This will increase the strength of the zig zag support structure." msgstr "Połącz Zygzaki. To zwiększa wytrzymałość zygzakowatej podpory." -#: fdmprinter.def.json -msgctxt "support_skip_some_zags label" -msgid "Break Up Support In Chunks" -msgstr "Podziel Podpory na Kawałki" - -#: 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 "Pomijaj niektóre połączenia linii podpory, aby struktura podpory była łatwiejsza do odłamania. To ustawienie dotyczy wypełn. podpory Zygzak." - -#: fdmprinter.def.json -msgctxt "support_skip_zag_per_mm label" -msgid "Support Chunk Size" -msgstr "Wielkość Kawałka Podpory" - -#: 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 "Pomiń połączenie pomiędzy liniami podpory co N milimetrów, aby struktura podpory była łatwiejsza do odłamania." - -#: fdmprinter.def.json -msgctxt "support_zag_skip_count label" -msgid "Support Chunk Line Count" -msgstr "Liczba Linii Kawałka Podpory" - -#: 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 "Pomijaj jedną z każdych N linii, aby struktura podpory była łatwiejsza do odłamania." - #: fdmprinter.def.json msgctxt "support_infill_rate label" msgid "Support Density" @@ -3404,7 +3554,7 @@ msgstr "Odległ. Obwódki" 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." +"This is the minimum distance. Multiple skirt lines will extend outwards from this distance." msgstr "" "Pozioma odległość między obwódką a pierwszą warstwą nadruku.\n" "Jest to o minimalnej odległości. Z tej odległości linie będą nakładane w kierunku zewnętrznym." @@ -3449,26 +3599,6 @@ 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 "Przesunięcie w Osi Z Warstwy Początk." - -#: 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 "Ekstruder jest przesuwany z normalnej wysokości pierwszej warstwy o tą wartość. Może być dodatnia (uniesienie) lub ujemna (obniżenie). Niektóre typy filamentu przyklejają się lepiej do stołu jeżeli ekstruder jest lekko uniesiony." - -#: fdmprinter.def.json -msgctxt "z_offset_taper_layers label" -msgid "Z Offset Taper Layers" -msgstr "Warstwy Zbieżne Przesunięcia 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 "Kiedy niezerowe, przesunięcie w osi Z jest redukowane do zera w trakcie drukowania takiej ilości warstw. Wartość 0 oznacza, że przesunięcie pozostaje stałe dla wszystkich warstw wydruku." - #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3486,8 +3616,8 @@ msgstr "Wygładzanie Tratwy" #: 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 "To ustawienie kontroluje jak bardzo wewn. narożniki zewn. linii tratwy są zaokrąglone. Wewn. narożniki są zaokrąglone do pół-okręgów o promieniu równym wartości podanej w tym miejscu. To ustawienie usuwa też otwory w zewn. linii tratwy, które są mniejsze niż taki okrąg." +msgid "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." +msgstr "To ustawienie kontroluje jak bardzo wewn. narożniki w zewn. krawędzi tratwy mają być zaokrąglone. Wewn. narożniki są zaokrąglane do półokręgów o promieniu równym wartości podanej tutaj. To ustawienie usuwa także otwory w zewn. krawędzi tratwy, które są mniejsze niż taki okrąg." #: fdmprinter.def.json msgctxt "raft_airgap label" @@ -3959,6 +4089,16 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Zwykle Cura próbuje zszywać małe dziury w siatce i usunąć części warstwy z dużymi otworami. Włączenie tej opcji powoduje zostawienie tych części, których nie można zszywać. Ta opcja powinna być używana jako ostatnia deska ratunku, gdy wszystko inne nie dostarczy właściwego G-code." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Maksymalna Rozdzielczość" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "Minimalny rozmiar linii segmentu po pocięciu. Jeżeli to zwiększysz, siatka będzie miała mniejszą rozdzielczość. Może to spowodować przyspieszenie prędkości przetwarzania g-code i przyspieszenie prędkości cięcia poprzez usunięcie detali siatki, których tak czy tak nie można przetworzyć." + #: fdmprinter.def.json msgctxt "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -3989,6 +4129,16 @@ msgctxt "alternate_carve_order description" msgid "Switch to which mesh intersecting volumes will belong with every layer, so that the overlapping meshes become interwoven. Turning this setting off will cause one of the meshes to obtain all of the volume in the overlap, while it is removed from the other meshes." msgstr "Przełącz się, to której przecinającej się siatki będą należały z każdą warstwą, tak że nakładające się siatki przeplatają się. Wyłączenie tej opcji spowoduje, że jedna siatka uzyska całą objętość podczas nakładania się, kiedy jest usunięta z pozostałych siatek." +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers label" +msgid "Remove Empty First Layers" +msgstr "Usuń Pustą Pierwsz. Warstwę" + +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers description" +msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." +msgstr "Usuń puste warstwy poniżej pierwszej drukowanej warstwy jeżeli takie występują. Wyłączenie tego ustawienia może powodować puste pierwsze warstwy jeżeli Tolerancja Cięcia jest ustawiona na Włącznie lub Środek." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4194,6 +4344,36 @@ 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 "Optymalizuj kolejność, według której drukowane są ściany, aby zredukować ilość retrakcji i długości ruchu jałowego. Większość części powinno na tym zyskać, ale niektóre mogą drukować się dłużej, dlatego prosimy o porównaniu czasu drukowania z i bez włączonej opcji." +#: fdmprinter.def.json +msgctxt "support_skip_some_zags label" +msgid "Break Up Support In Chunks" +msgstr "Podziel Podpory na Kawałki" + +#: 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 "Pomijaj niektóre połączenia linii podpory, aby struktura podpory była łatwiejsza do odłamania. To ustawienie dotyczy wypełn. podpory Zygzak." + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "Wielkość Kawałka Podpory" + +#: 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 "Pomiń połączenie pomiędzy liniami podpory co N milimetrów, aby struktura podpory była łatwiejsza do odłamania." + +#: fdmprinter.def.json +msgctxt "support_zag_skip_count label" +msgid "Support Chunk Line Count" +msgstr "Liczba Linii Kawałka Podpory" + +#: 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 "Pomijaj jedną z każdych N linii, aby struktura podpory była łatwiejsza do odłamania." + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4484,6 +4664,26 @@ msgctxt "magic_fuzzy_skin_point_dist description" msgid "The average distance between the random points introduced on each line segment. Note that the original points of the polygon are discarded, so a high smoothness results in a reduction of the resolution. This value must be higher than half the Fuzzy Skin Thickness." msgstr "Średnia odległość między losowymi punktami wprowadzonymi w każdym segmencie linii. Zwróć uwagę, że oryginalne punkty wielokąta są odrzucane, a zatem duża gładkość powoduje zmniejszenie rozdzielczości. Wartość ta musi być większa niż połowa Grubości Nierównej Skóry." +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset label" +msgid "Flow rate compensation max extrusion offset" +msgstr "Maks. offset ekstruzji do kompensowania przepływu" + +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset description" +msgid "The maximum distance in mm to compensate." +msgstr "Maksymalna odległość w mm do skompensowania." + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor label" +msgid "Flow rate compensation factor" +msgstr "Współczynnik kompensacji przepływu" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor description" +msgid "The multiplication factor for the flow rate -> distance translation." +msgstr "Współczynnik mnożący przepływu -> tłumaczenie odległości." + #: fdmprinter.def.json msgctxt "wireframe_enabled label" msgid "Wire Printing" @@ -4743,106 +4943,6 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Odległość między dyszą a liniami skierowanymi w dół. Większe prześwity powodują ukośne linie skierowanie w dół o mniej stromym kącie, co z kolei skutkuje mniejszymi połączeniami z następną warstwą. Dotyczy tylko Drukowania Drutu." -#: fdmprinter.def.json -msgctxt "ironing_enabled label" -msgid "Enable Ironing" -msgstr "Włącz Prasowanie" - -#: fdmprinter.def.json -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 "Prasuj Tylko Najwyższą Warstwę" - -#: 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 "Przeprowadzaj prasowanie tylko na najwyższej warstwie siatki. Oszczędza to czas jeżeli niższe warstwy nie muszą mieć gładkie wykończenia powierzchni." - -#: fdmprinter.def.json -msgctxt "ironing_pattern label" -msgid "Ironing Pattern" -msgstr "Wzór Prasowania" - -#: fdmprinter.def.json -msgctxt "ironing_pattern description" -msgid "The pattern to use for ironing top surfaces." -msgstr "Wzór używany dla górnych powierzchni prasowania." - -#: fdmprinter.def.json -msgctxt "ironing_pattern option concentric" -msgid "Concentric" -msgstr "Koncentryczny" - -#: fdmprinter.def.json -msgctxt "ironing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Zygzak" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing label" -msgid "Ironing Line Spacing" -msgstr "Przerwy Linii Prasowania" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing description" -msgid "The distance between the lines of ironing." -msgstr "Odległość pomiędzy liniami prasowania." - -#: fdmprinter.def.json -msgctxt "ironing_flow label" -msgid "Ironing Flow" -msgstr "Przepływ Prasowania" - -#: fdmprinter.def.json -msgctxt "ironing_flow description" -msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." -msgstr "Ilość materiału, w odniesieniu do normalnej linii skóry, do ekstrudowania podczas prasowania. Pozostawianie dyszy napełnionej pomaga w wypełnianiu nierówności górnej powierzchni, ale zbyt duża ilość materiału może powodować nadekstruzję po stronie powierzchni." - -#: fdmprinter.def.json -msgctxt "ironing_inset label" -msgid "Ironing Inset" -msgstr "Margines Prasowania" - -#: fdmprinter.def.json -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" @@ -4903,13 +5003,45 @@ 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_x_extruder_nr label" +#~ msgid "Inner Walls Extruder" +#~ msgstr "Esktruder Wewn. Ś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, 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 "Wzór materiału wypełniającego wydruk. Linie i zygzaki zmieniają kierunek na przemiennych warstwach, redukując koszty materiału. Kratka, trójkąty, sześcienne, ośmiościenne, ćwierć sześcienny i koncentryczny wzór są drukowane w pełni na każdej warstwie. Sześcienne, ćwierć sześcienne i czworościenne wypełnienie zmienia się co każdą warstwę, aby zapewnić równy rozkład siły w każdym kierunku." + +#~ 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 "Łączy końce gdzie wypełnienie spotyka się z wewn. ścianą za pomocą linii, które podążają za kształtem wewn. ściany. Włączenie tej opcji może spowodować lepsze łączenie się wypełnienia ze ścianą i redukuje efekty związane z jakością na pionowych ścianach. Wyłączenie tej opcji redukuje ilość użytego materiału." + +#~ 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 "" +#~ "Pozioma odległość między obwódką a pierwszą warstwą nadruku.\n" +#~ "Jest to o minimalnej odległości. Z tej odległości linie będą nakładane w kierunku zewnętrznym." + +#~ msgctxt "z_offset_layer_0 label" +#~ msgid "Initial Layer Z Offset" +#~ msgstr "Przesunięcie w Osi Z Warstwy Początk." + +#~ 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 "Ekstruder jest przesuwany z normalnej wysokości pierwszej warstwy o tą wartość. Może być dodatnia (uniesienie) lub ujemna (obniżenie). Niektóre typy filamentu przyklejają się lepiej do stołu jeżeli ekstruder jest lekko uniesiony." + +#~ msgctxt "z_offset_taper_layers label" +#~ msgid "Z Offset Taper Layers" +#~ msgstr "Warstwy Zbieżne Przesunięcia Z" + +#~ 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 "Kiedy niezerowe, przesunięcie w osi Z jest redukowane do zera w trakcie drukowania takiej ilości warstw. Wartość 0 oznacza, że przesunięcie pozostaje stałe dla wszystkich warstw wydruku." + +#~ 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 "To ustawienie kontroluje jak bardzo wewn. narożniki zewn. linii tratwy są zaokrąglone. Wewn. narożniki są zaokrąglone do pół-okręgów o promieniu równym wartości podanej w tym miejscu. To ustawienie usuwa też otwory w zewn. linii tratwy, które są mniejsze niż taki okrąg." #~ 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." @@ -5021,4 +5153,4 @@ msgstr "Forma przesunięcia, która ma być zastosowana do modelu podczas ładow #~ 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 "Grubość ścian zewnętrznych w kierunku poziomym. Ta wartość podzielona przez szerokość linii ściany określa liczbę ścian." \ No newline at end of file +#~ msgstr "Grubość ścian zewnętrznych w kierunku poziomym. Ta wartość podzielona przez szerokość linii ściany określa liczbę ścian." diff --git a/resources/i18n/pt_BR/cura.po b/resources/i18n/pt_BR/cura.po index db4aa72f0b..e00c6099c4 100644 --- a/resources/i18n/pt_BR/cura.po +++ b/resources/i18n/pt_BR/cura.po @@ -6,9 +6,9 @@ msgid "" 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-10-05 12:20-0300\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-21 16:58+0100\n" +"PO-Revision-Date: 2017-12-04 10:20-0300\n" "Last-Translator: Cláudio Sampaio \n" "Language-Team: Cláudio Sampaio and CoderSquirrel \n" "Language: pt_BR\n" @@ -17,66 +17,6 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Print aborted" -msgstr "A impressão foi interrompida" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Blocked" -msgstr "Bloqueado" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Action required" -msgstr "Necessária uma ação" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Can't start print" -msgstr "Não consigo começar a imprimir" - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is not set up to host a group of Ultimaker 3 printers." -msgstr "Esta impressora não está configurada para hospedar um grupo de impressoras Ultimaker 3." - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label" -msgid "Finishes at: " -msgstr "Termina em: " - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is the host for a group of %1 Ultimaker 3 printers." -msgstr "Esta impressora hospeda um grupo de %1 impressoras Ultimaker 3." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "{printer_name} acabou de imprimir '{job_name}'." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Print finished" -msgstr "Impressão Concluída" - -#: Manually added for resources/Cura/Cura.qml -msgctxt "@title:menu menubar:toplevel" -msgid "P&lugins" -msgstr "&Complementos" - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Browse plugins..." -msgstr "Navegar complementos..." - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Installed plugins..." -msgstr "Complementos instalados..." - #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" @@ -114,19 +54,17 @@ msgstr "Conectando ao 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 -#: /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:428 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/3MFReader/WorkspaceDialog.qml:376 #: /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 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:253 msgctxt "@action:button" msgid "Cancel" msgstr "Cancelar" @@ -153,15 +91,15 @@ msgstr "Arquivo enviado ao Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@action:button" -msgid "Open Connect.." -msgstr "Abrir Connect.." +msgid "Open Connect..." +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 "Abrir a interface web do Doodle3D Connect" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Exibir registro de alterações" @@ -196,37 +134,38 @@ msgctxt "@info:status" msgid "Connected via USB" msgstr "Conectado via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 msgctxt "@info:title" -msgid "Print Details" -msgstr "Detalhes de Impressão" +msgid "Printer Unavailable" +msgstr "Impressora Não Disponível" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 msgctxt "@info:title" msgid "USB Printing" msgstr "Impressão USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 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/USBPrinterOutputDevice.py:461 #: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 msgctxt "@info:title" msgid "Warning" msgstr "Aviso" @@ -290,11 +229,11 @@ 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: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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 msgctxt "@info:title" msgid "Error" msgstr "Erro" @@ -343,346 +282,332 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Unidade Removível" -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Imprimir pela rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Imprime pela rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 msgctxt "@info:title" msgid "Connection status" msgstr "Status da Conexão" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:479 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:502 msgctxt "@info:title" msgid "Connection Status" msgstr "Status da Conexão" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@action:button" msgid "Retry" msgstr "Tentar novamente" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Reenvia o pedido de acesso" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Acesso à impressora confirmado" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:375 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:385 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:382 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Connected over the network." msgstr "Conectado pela rede." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:405 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:400 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 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:403 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 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:467 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 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:499 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 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:649 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:666 #, 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:650 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:667 msgctxt "@info:title" msgid "Printer Status" msgstr "Status da Impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 #, 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:682 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 #, 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:692 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 #, 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:702 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 #, python-brace-format msgctxt "@label" msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" msgstr "PrintCore Diferente (Cura: {0}, Impressora: {1}) selecionado para o extrusor {2}" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:716 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 #, 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:724 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:741 #, python-brace-format msgctxt "@label" msgid "PrintCore {0} is not properly calibrated. XY calibration needs to be performed on the printer." msgstr "O PrintCore {0} não está calibrado adequadamente. A calibração XY precisa ser executada na impressora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:729 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 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:730 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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:736 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Configuração divergente" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "Envio de novos trabalhos (temporariamente) bloqueado, ainda enviando o trabalho de impressão anterior." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Enviando dados à impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:title" msgid "Sending Data" msgstr "Enviando Dados" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 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:1050 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Abortando impressão..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 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:1062 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Pausando impressão..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Continuando impressão..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Sincronizar com a impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 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:1220 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:112 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "Esta impressora não está configurada para hospedar um grupo de impressoras Ultimaker 3 conectadas." -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:113 #, 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 "Esta impressora hospeda um grupo de {count} impressoras Ultimaker 3 conectadas." -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "{printer_name} acabou de imprimir '{job_name}'. Por favor colete a impressão e confirme esvaziamento da mesa." -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 #, 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 "{printer_name} está reservada para imprimir '{job_name}'. Por favor altere a configuração da impressora para combinar com este trabalho para que ela comece a imprimir." -#: /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 "Envio de novos trabalhos (temporariamente) bloqueado, ainda enviando o trabalho de impressão anterior." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 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 "Incapaz de enviar novo trabalho de impressão: esta impressora 3D (ainda) não está configurada para hospedar um grupo de impressoras 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 "Enviando {file_name} ao 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 "{file_name} enviado ao grupo {cluster_name}." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 -msgctxt "@action:button" -msgid "Show print jobs" -msgstr "Exibir trabalhos de impressão" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:504 -msgctxt "@info:tooltip" -msgid "Opens the print jobs interface in your browser." -msgstr "Abrir a interface de trabalhos de impressão em seu navegador." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Incapaz de enviar trabalho de impressão ao grupo {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "{file_name} enviado ao grupo {cluster_name}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "Exibir trabalhos de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "Abrir a interface de trabalhos de impressão em seu navegador." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label" +msgid "Unknown" +msgstr "Desconhecido" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#, python-brace-format +msgctxt "@info:status" +msgid "Printer '{printer_name}' has finished printing '{job_name}'." +msgstr "{printer_name} acabou de imprimir '{job_name}'." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +msgctxt "@info:status" +msgid "Print finished" +msgstr "Impressão Concluída" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 +msgctxt "@label:status" +msgid "Action required" +msgstr "Necessária uma ação" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "Enviando {file_name} ao grupo {cluster_name}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +msgctxt "@action" +msgid "Connect via Network" +msgstr "Conectar pela rede" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 #, 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 "Para assegurar que sua {machine_name} esteja equipada com os recursos mais recentes, é recomendado atualizar o firmware regularmente. Isto pode ser feito na {machine_name} (quando conectado pela rede) ou via USB." +msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." +msgstr "Novos recursos estão disponível para sua {machine_name}! Recomenda-se atualizar o firmware da impressora." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Novo firmware de %s disponível" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 msgctxt "@action:button" -msgid "Download" -msgstr "Baixar" +msgid "How to update" +msgstr "Como atualizar" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 msgctxt "@info" msgid "Could not access update information." msgstr "Não foi possível acessar informação de atualização." @@ -712,7 +637,22 @@ msgctxt "@info:status" msgid "Error while starting %s!" msgstr "Erro ao iniciar %s!" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Simulation view" +msgstr "Visão simulada" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +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/SimulationView/SimulationView.py:101 +msgctxt "@info:title" +msgid "Simulation View" +msgstr "Visão Simulada" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 msgid "Modify G-Code" msgstr "Modificar G-Code" @@ -742,21 +682,6 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "Arquivo G-Code" -#: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Visão de Camadas" - -#: /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 "Visão de Camadas" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -789,8 +714,9 @@ msgstr "Incapaz de fatiar com o material atual visto que é incompatível com a #: /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 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 msgctxt "@info:title" msgid "Unable to slice" msgstr "Incapaz de fatiar" @@ -801,23 +727,29 @@ 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:306 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" +msgstr "Incapaz de fatiar devido a alguns ajustes por modelo. Os seguintes ajustes têm erros em um ou mais dos modelos: {error_labels}" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 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:315 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 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." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:65 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:status" msgid "Processing Layers" msgstr "Processando Camadas" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:title" msgid "Information" msgstr "Informação" @@ -832,14 +764,36 @@ msgctxt "@info:tooltip" 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:475 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23 +msgid "Install" +msgstr "Instalar" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It is not set to a directory." +msgstr "Erro ao copiar arquivos de plugins Siemens NX. Por favor verifique seu UGII_USER_DIR. Ele não está configurado para um diretório." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81 +msgid "Successfully installed Siemens NX Cura plugin." +msgstr "Plugin Siemens NX do Cura instalado com sucesso." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgstr "Erro ao copiar arquivos de plugins Siemens NX. Por favor, verifique seu UGII_USER_DIR." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 +msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." +msgstr "Erro ao instalar arquivos de plugins Siemens NX. Não foi possível ajustar a variável de ambiente UGII_USER_DIR para o Simenes NX." + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 msgctxt "@title:tab" msgid "Recommended" msgstr "Recomendado" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizado" @@ -850,29 +804,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Arquivo 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 msgctxt "@label" msgid "Nozzle" msgstr "Bico" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 -msgctxt "@menuitem" -msgid "Browse plugins" -msgstr "Navegar complementos" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "Falha ao pegar identificador do complemento de {0}" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 msgctxt "@info:tile" msgid "Warning" msgstr "Aviso" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 msgctxt "@window:title" msgid "Plugin browser" msgstr "Navegador de complementos" @@ -887,18 +836,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Arquivo G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:254 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Interpretando G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 msgctxt "@info:title" msgid "G-code Details" msgstr "Detalhes do G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 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-se 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." @@ -940,73 +889,78 @@ msgctxt "@action" msgid "Level build plate" msgstr "Nivelar mesa" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Parede Externa" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Paredes Internas" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 msgctxt "@tooltip" msgid "Skin" msgstr "Contorno" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 msgctxt "@tooltip" msgid "Infill" msgstr "Preenchimento" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 msgctxt "@tooltip" msgid "Support Infill" msgstr "Preenchimento de Suporte" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 msgctxt "@tooltip" msgid "Support Interface" msgstr "Interface de Suporte" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Support" msgstr "Suporte" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" msgid "Skirt" msgstr "Skirt (Saia)" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 msgctxt "@tooltip" msgid "Travel" msgstr "Percurso" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Retractions" msgstr "Retrações" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Other" msgstr "Outros" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +msgctxt "@label unknown material" +msgid "Unknown" +msgstr "Desconhecido" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Arquivo pré-fatiado {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 msgctxt "@item:material" msgid "No material loaded" msgstr "Não há material carregado" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 msgctxt "@item:material" msgid "Unknown material" msgstr "Material desconhecido" @@ -1033,13 +987,13 @@ msgid "Can't Find Location" msgstr "Não Foi Encontrada Localização" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 msgctxt "@title:window" msgid "File Already Exists" msgstr "O Arquivo Já Existe" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 #, 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?" @@ -1055,12 +1009,22 @@ msgctxt "@label" msgid "Custom Material" msgstr "Material Personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 +msgctxt "@menuitem" +msgid "Global" +msgstr "Global" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Não sobrepujado" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 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/MachineManager.py:118 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1081,62 +1045,62 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Desfaz a mudança no diâmetro do material." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Falha ao exportar perfil para {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Falha ao exportar perfil para {0}: complemento escritor relatou erro." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Perfil exportado para {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:157 msgctxt "@info:title" -msgid "Export Details" -msgstr "Detalhes da Exportação" +msgid "Export succeeded" +msgstr "Exportação concluída" -#: /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 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "Falha ao importa perfil de {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 #, 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:254 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 #, 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:272 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 msgctxt "@label" msgid "Custom profile" msgstr "Perfil personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1163,241 +1127,319 @@ msgctxt "@info:title" msgid "Placing Object" msgstr "Colocando Objeto" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 msgctxt "@title:window" msgid "Crash Report" msgstr "Relatório de Problema" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:79 -msgctxt "@label" +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +msgctxt "@label crash message" 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" -" " +"

    A fatal exception has occurred. Please send us this Crash Report to fix the problem

    \n" +"

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" +" " msgstr "" -"

    Uma exceção fatal ocorreu e não foi possível haver recuperação!

    \n" -"

    Por favor use a informação abaixo para publicar um relatório de erro em http://github.com/Ultimaker/Cura/issues

    \n" -" " +"

    Uma exceção fatal aocorreu. Por favor nos envie este Relatório de Erros para consertarmos o problema

    \n" +"

    Por favor use o botão \"Enviar relatório\" para postar um relato de bug automaticamente em nossos servidores

    \n" +" " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +msgctxt "@title:groupbox" +msgid "System information" +msgstr "Informação do Sistema" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +msgctxt "@label unknown version of Cura" +msgid "Unknown" +msgstr "Desconhecida" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 +#, python-brace-format +msgctxt "@label Cura version" +msgid "Cura version: {version}
    " +msgstr "Versão do Cura: {version}
    " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -msgctxt "@action:button" -msgid "Open Web Page" -msgstr "Abrir Página Web" +#, python-brace-format +msgctxt "@label Platform" +msgid "Platform: {platform}
    " +msgstr "Plataforma: {platform}
    " -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 +#, python-brace-format +msgctxt "@label Qt version" +msgid "Qt version: {qt}
    " +msgstr "Versão da Qt: {qt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 +#, python-brace-format +msgctxt "@label PyQt version" +msgid "PyQt version: {pyqt}
    " +msgstr "Versão da PyQt: {pyqt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 +#, python-brace-format +msgctxt "@label OpenGL" +msgid "OpenGL: {opengl}
    " +msgstr "OpenGL: {opengl}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#, python-brace-format +msgctxt "@label OpenGL version" +msgid "
  • OpenGL Version: {version}
  • " +msgstr "
  • Versão da OpenGL: {version}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#, python-brace-format +msgctxt "@label OpenGL vendor" +msgid "
  • OpenGL Vendor: {vendor}
  • " +msgstr "
  • Fornecedor da OpenGL: {vendor}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#, python-brace-format +msgctxt "@label OpenGL renderer" +msgid "
  • OpenGL Renderer: {renderer}
  • " +msgstr "
  • Renderizador da OpenGL: {renderer}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +msgctxt "@title:groupbox" +msgid "Exception traceback" +msgstr "Traceback de exceção" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +msgctxt "@title:groupbox" +msgid "Logs" +msgstr "Registros" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +msgctxt "@title:groupbox" +msgid "User description" +msgstr "Descrição do usuário" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +msgctxt "@action:button" +msgid "Send report" +msgstr "Enviar relatório" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Carregando máquinas..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Configurando cena..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Carregando interface..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 #, 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:1295 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 #, 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:1304 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1357 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Não é possível abrir nenhum outro arquivo se G-Code estiver sendo carregado. Pulando importação de {0}" +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +msgctxt "@info:status" +msgid "The selected model was too small to load." +msgstr "O modelo selecionado é pequenos demais para carregar." + #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 msgctxt "@title" msgid "Machine Settings" msgstr "Ajustes da Máquina" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:77 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:78 msgctxt "@title:tab" msgid "Printer" msgstr "Impressora" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:96 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 msgctxt "@label" msgid "Printer Settings" msgstr "Ajustes da Impressora" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:107 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 msgctxt "@label" msgid "X (Width)" msgstr "X (largura)" -#: /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: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 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:117 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Profundidade)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:127 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Altura)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:139 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:140 msgctxt "@label" msgid "Build plate shape" msgstr "Forma da plataforma de impressão" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:148 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 msgctxt "@option:check" msgid "Origin at center" msgstr "Origem no centro" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:156 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:157 msgctxt "@option:check" msgid "Heated bed" msgstr "Mesa aquecida" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:167 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 msgctxt "@label" msgid "Gcode flavor" msgstr "Sabor de G-Code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:180 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 msgctxt "@label" msgid "Printhead Settings" msgstr "Ajustes da Cabeça de Impressão" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:190 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 msgctxt "@label" msgid "X min" msgstr "X mín." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 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 "Distância da esquerda da cabeça de impressão ao centro do bico. Usado para prevenir colisões entre impressões anteriores e a cabeça ao imprimir \"Um de cada Vez\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:200 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 msgctxt "@label" msgid "Y min" msgstr "Y mín." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 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 "Distância da frente da cabeça de impressão ao centro do bico. Usado para prevenir colisões entre impressões anteriores e a cabeça ao imprimir \"Um de cada Vez\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:210 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 msgctxt "@label" msgid "X max" msgstr "X máx." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 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 "Distância da direita da cabeça de impressão ao centro do bico. Usado para prevenir colisões entre impressões anteriores e a cabeça ao imprimir \"Um de cada Vez\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:220 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 msgctxt "@label" msgid "Y max" msgstr "Y máx." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 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 "Distância da traseira da cabeça de impressão ao centro do bico. Usado para prevenir colisões entre impressões anteriores e a cabeça ao imprimir \"Um de cada Vez\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:233 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 msgctxt "@label" msgid "Gantry height" msgstr "Altura do eixo" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 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:254 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 msgctxt "@label" msgid "Number of Extruders" msgstr "Número de Extrusores" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 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:290 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 msgctxt "@label" msgid "Material diameter" msgstr "Diâmetro do material" -#: /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:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 msgctxt "@label" msgid "Nozzle size" msgstr "Tamanho do bico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 msgctxt "@label" msgid "Start Gcode" msgstr "G-Code Inicial" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 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:335 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 msgctxt "@label" msgid "End Gcode" msgstr "G-Code Final" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 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:377 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 msgctxt "@label" msgid "Nozzle Settings" msgstr "Ajustes do Bico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 msgctxt "@label" msgid "Nozzle offset X" msgstr "Deslocamento X do Bico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Deslocamento Y do Bico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "G-Code Inicial do Extrusor" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Extruder End Gcode" msgstr "G-Code Final do Extrusor" @@ -1410,12 +1452,11 @@ 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/PostProcessingPlugin/PostProcessingPlugin.qml:445 #: /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/Preferences/MachinesPage.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 msgctxt "@action:button" msgid "Close" @@ -1467,13 +1508,11 @@ 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" @@ -1485,20 +1524,17 @@ 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 @@ -1507,220 +1543,221 @@ msgid "Remove" msgstr "Remover" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:194 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 msgctxt "@label" msgid "Type" msgstr "Tipo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 msgctxt "@label" msgid "Address" msgstr "Endereço" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:286 +msgctxt "@label" +msgid "This printer is not set up to host a group of Ultimaker 3 printers." +msgstr "Esta impressora não está configurada para hospedar um grupo de impressoras Ultimaker 3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:290 +msgctxt "@label" +msgid "This printer is the host for a group of %1 Ultimaker 3 printers." +msgstr "Esta impressora hospeda um grupo de %1 impressoras Ultimaker 3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:300 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/DiscoverUM3Action.qml:305 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /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:316 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 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:346 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 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:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 +#: /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" +msgid "OK" msgstr "Ok" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Imprimir pela rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Imprimir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:36 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "%1 não está configurada para hospedar um grupo de impressora Ultimaker 3 conectadas" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "Abre a página de trabalhos de impressão com seu navegador default." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "Visualizar trabalhos de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 +msgctxt "@label" +msgid "Preparing to print" +msgstr "Preparando para imprimir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 +msgctxt "@label:status" +msgid "Printing" +msgstr "Imprimindo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 +msgctxt "@label:status" +msgid "Available" +msgstr "Disponível" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 +#: /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/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 +msgctxt "@label:status" +msgid "Disabled" +msgstr "Desabilitado" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273 +msgctxt "@label:status" +msgid "Reserved" +msgstr "Reservado" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:275 +msgctxt "@label:status" +msgid "Finished" +msgstr "Finalizado" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 +msgctxt "@label:status" +msgid "Paused" +msgstr "Pausado" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 +msgctxt "@label:status" +msgid "Resuming" +msgstr "Continuando" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 +msgctxt "@label:status" +msgid "Print aborted" +msgstr "A impressão foi interrompida" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:410 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "Não aceitando trabalhos de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 +msgctxt "@label" +msgid "Finishes at: " +msgstr "Termina em: " + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 +msgctxt "@label" +msgid "Clear build plate" +msgstr "Esvaziar a mesa de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "Esperando alteração de configuração" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:64 +msgctxt "@title" +msgid "Print jobs" +msgstr "Trabalhos de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 +msgctxt "@label" +msgid "Printing" +msgstr "Imprimindo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 +msgctxt "@label" +msgid "Queued" +msgstr "Enfileirados" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:171 +msgctxt "@label:title" +msgid "Printers" +msgstr "Impressoras" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 +msgctxt "@action:button" +msgid "View printers" +msgstr "Visualizar impressoras" + #: /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/DiscoverUM3Action.qml:284 -msgctxt "@label" -msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -msgstr "Esta impressora não está configurada para hospedar um grupo de impressoras Ultimaker 3 conectadas." - -#: /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 "Esta impressora hospeda um grupo de %1 impressoras Ultimaker 3 conectadas" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/PrintWindow.qml:24 -msgctxt "@title:window" -msgid "Print over network" -msgstr "Imprimir pela rede" - -#: /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 "%1 não está configurada para hospedar um grupo de impressora Ultimaker 3 conectadas" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:311 -msgctxt "@label:status" -msgid "Printing" -msgstr "Imprimindo" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 -msgctxt "@label:status" -msgid "Reserved" -msgstr "Reservado" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 -msgctxt "@label:status" -msgid "Finished" -msgstr "Finalizado" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 -msgctxt "@label:status" -msgid "Preparing" -msgstr "Preparando" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 -msgctxt "@label:status" -msgid "Available" -msgstr "Disponível" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 -msgctxt "@label" -msgid "Completed on: " -msgstr "Completado em: " - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 -msgctxt "@label" -msgid "Clear build plate" -msgstr "Esvaziar a mesa de impressão" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 -msgctxt "@label" -msgid "Preparing to print" -msgstr "Preparando para imprimir" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 -msgctxt "@label" -msgid "Not accepting print jobs" -msgstr "Não aceitando trabalhos de impressão" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/OpenPanelButton.qml:14 -msgctxt "@info:tooltip" -msgid "Opens the print jobs page with your default web browser." -msgstr "Abre a página de trabalhos de impressão com seu navegador web default." - -#: /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 "Visualizar trabalhos de impressão" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "PRINTER GROUP" -msgstr "GRUPO DE IMPRESSORAS" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 -msgctxt "@title" -msgid "Print jobs" -msgstr "Trabalhos de impressão" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 -msgctxt "@label" -msgid "Printing" -msgstr "Imprimindo" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 -msgctxt "@label" -msgid "Queued" -msgstr "Enfileirados" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 -msgctxt "@label" -msgid "Waiting for configuration change" -msgstr "Esperando alteração de configuração" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 -msgctxt "@label:title" -msgid "Printers" -msgstr "Impressoras" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 -msgctxt "@action:button" -msgid "View printers" -msgstr "Visualizar impressoras" - #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1746,13 +1783,6 @@ msgctxt "@option:curaSolidworksStlQuality" msgid "Always use Coarse quality" msgstr "Sempre usar qualidade Baixa" -#: /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..." @@ -1779,11 +1809,91 @@ msgid "Fine" msgstr "Alta" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 msgctxt "@text:window" msgid "Remember my choice" msgstr "Lembrar minha escolha" +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +msgctxt "@label" +msgid "Color scheme" +msgstr "Esquema de Cores" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +msgctxt "@label:listbox" +msgid "Material Color" +msgstr "Cor do Material" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +msgctxt "@label:listbox" +msgid "Line Type" +msgstr "Tipo de Linha" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +msgctxt "@label:listbox" +msgid "Feedrate" +msgstr "Taxa de alimentação" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +msgctxt "@label:listbox" +msgid "Layer thickness" +msgstr "Largura de camada" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +msgctxt "@label" +msgid "Compatibility Mode" +msgstr "Modo de Compatibilidade" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +msgctxt "@label" +msgid "Show Travels" +msgstr "Exibir Percursos" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +msgctxt "@label" +msgid "Show Helpers" +msgstr "Exibir Assistentes" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +msgctxt "@label" +msgid "Show Shell" +msgstr "Exibir Perímetro" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +msgctxt "@label" +msgid "Show Infill" +msgstr "Exibir Preenchimento" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +msgctxt "@label" +msgid "Only Show Top Layers" +msgstr "Somente Exibir Camadas Superiores" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +msgctxt "@label" +msgid "Show 5 Detailed Layers On Top" +msgstr "Exibir 5 Camadas Superiores Detalhadas" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +msgctxt "@label" +msgid "Top / Bottom" +msgstr "Topo / Base" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +msgctxt "@label" +msgid "Inner Wall" +msgstr "Parede Interna" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +msgctxt "@label" +msgid "min" +msgstr "mín" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +msgctxt "@label" +msgid "max" +msgstr "máx" + #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 msgctxt "@title:window" msgid "Post Processing Plugin" @@ -1794,81 +1904,21 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Scripts de Pós-Processamento" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:218 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:217 msgctxt "@action" msgid "Add a script" msgstr "Adicionar um script" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:264 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:263 msgctxt "@label" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 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:76 -msgctxt "@label" -msgid "Color scheme" -msgstr "Esquema de Cores" - -#: /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:95 -msgctxt "@label:listbox" -msgid "Line Type" -msgstr "Tipo de Linha" - -#: /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:216 -msgctxt "@label" -msgid "Show Travels" -msgstr "Exibir Percursos" - -#: /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:228 -msgctxt "@label" -msgid "Show Shell" -msgstr "Exibir Perímetro" - -#: /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:283 -msgctxt "@label" -msgid "Only Show Top Layers" -msgstr "Somente Exibir Camadas Superiores" - -#: /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:303 -msgctxt "@label" -msgid "Top / Bottom" -msgstr "Topo / Base" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 -msgctxt "@label" -msgid "Inner Wall" -msgstr "Parede Interna" - #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" msgid "Convert Image..." @@ -1960,129 +2010,129 @@ msgctxt "@label:checkbox" msgid "Show all" msgstr "Exibir tudo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:13 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Abrir Projeto" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 msgctxt "@action:ComboBox option" msgid "Update existing" msgstr "Atualizar existente" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:55 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 msgctxt "@action:ComboBox option" msgid "Create new" msgstr "Criar novo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:70 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Resumo - Projeto do Cura" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:88 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:88 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 msgctxt "@action:label" msgid "Printer settings" msgstr "Ajustes da impressora" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 msgctxt "@info:tooltip" msgid "How should the conflict in the machine be resolved?" msgstr "Como o conflito na máquina deve ser resolvido?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:124 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:97 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 msgctxt "@action:label" msgid "Type" msgstr "Tipo" -#: /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 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:144 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:201 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:293 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:190 msgctxt "@action:label" msgid "Name" msgstr "Nome" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:161 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:164 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:166 msgctxt "@action:label" msgid "Profile settings" msgstr "Ajustes de perfil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 msgctxt "@info:tooltip" msgid "How should the conflict in the profile be resolved?" msgstr "Como o conflito no perfil deve ser resolvido?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:212 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 msgctxt "@action:label" msgid "Not in profile" msgstr "Ausente no perfil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:217 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 sobrepujança" msgstr[1] "%1 sobrepujanças" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:232 msgctxt "@action:label" msgid "Derivative from" msgstr "Derivado de" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:233 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:237 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 sobrepujança" msgstr[1] "%1, %2 sobrepujanças" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:249 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:253 msgctxt "@action:label" msgid "Material settings" msgstr "Ajustes de material" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:265 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Como o conflito no material deve ser resolvido?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:207 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 msgctxt "@action:label" msgid "Setting visibility" msgstr "Visibilidade dos ajustes" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:317 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:321 msgctxt "@action:label" msgid "Mode" msgstr "Modo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:332 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:216 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:218 msgctxt "@action:label" msgid "Visible settings:" msgstr "Ajustes visíveis:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:223 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 de %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:363 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368 msgctxt "@action:warning" -msgid "Loading a project will clear all models on the buildplate" -msgstr "Carregar um projeto removerá todos os modelos da mesa de impressão" +msgid "Loading a project will clear all models on the build plate." +msgstr "Carregar um projeto limpará todos os modelos da mesa de impressão." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:381 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 msgctxt "@action:button" msgid "Open" msgstr "Abrir" @@ -2107,6 +2157,11 @@ msgctxt "@action:button" msgid "Installed" msgstr "Instalado" +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Baixar" + #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" @@ -2115,13 +2170,13 @@ msgstr "Acordo de Licença do Complemento" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" msgid "" -" plugin contains a license.\n" +"This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" msgstr "" -" complemento tem uma licença.\n" -"Você precisa aceitar esta licença para instalar este complemento.\n" -"Você está de acordo com os termos abaixo?" +"Este plugin contém uma licença.\n" +"Você precisa aceitar esta licença para instalar este plugin.\n" +"Você concorda com os termos abaixo?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" @@ -2133,6 +2188,11 @@ msgctxt "@action:button" msgid "Decline" msgstr "Recusar" +#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 +msgctxt "@title:window" +msgid "User Agreement" +msgstr "Termos de Acordo do Usuário" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 msgctxt "@title" @@ -2318,30 +2378,25 @@ msgid "Printer does not accept commands" msgstr "A impressora não aceita comandos" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 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: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:103 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Imprimindo..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Pausado" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Preparando..." @@ -2559,7 +2614,7 @@ msgid "Unit" msgstr "Unidade" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "General" msgstr "Geral" @@ -2790,7 +2845,7 @@ 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:441 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 msgctxt "@title:tab" msgid "Printers" msgstr "Impressoras" @@ -2808,39 +2863,39 @@ msgctxt "@action:button" msgid "Rename" msgstr "Renomear" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 msgctxt "@label" msgid "Printer type:" msgstr "Tipo de impressora:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:158 msgctxt "@label" msgid "Connection:" msgstr "Conexão:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:166 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:164 #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 msgctxt "@info:status" msgid "The printer is not connected." msgstr "A impressora não está conectada." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:170 msgctxt "@label" msgid "State:" msgstr "Estado:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Waiting for someone to clear the build plate" msgstr "Esperando que alguém esvazie a mesa de impressão" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 msgctxt "@label:MonitorStatus" 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:445 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 msgctxt "@title:tab" msgid "Profiles" msgstr "Perfis" @@ -2938,7 +2993,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:443 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 msgctxt "@title:tab" msgid "Materials" msgstr "Materiais" @@ -2996,7 +3051,7 @@ msgid "Successfully exported material to %1" msgstr "Material exportado para %1 com sucesso" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 msgctxt "@title:window" msgid "Add Printer" msgstr "Adicionar Impressora" @@ -3016,6 +3071,11 @@ msgctxt "@title:window" msgid "About Cura" msgstr "Sobre o Cura" +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43 +msgctxt "@label" +msgid "version: %1" +msgstr "versão: %1" + #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." @@ -3110,12 +3170,17 @@ msgctxt "@label" msgid "Polygon clipping library" msgstr "Biblioteca de recorte de polígonos" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Biblioteca de HTTP Python" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 msgctxt "@label" msgid "Font" msgstr "Fonte" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 msgctxt "@label" msgid "SVG icons" msgstr "Ícones SVG" @@ -3125,7 +3190,12 @@ msgctxt "@label" msgid "Profile:" msgstr "Perfil:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 +msgctxt "@" +msgid "No Profile Available" +msgstr "Nenhum Perfil Disponível" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3136,32 +3206,32 @@ msgstr "" "\n" "Clique para abrir o gerenciador de perfis." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 msgctxt "@label:textbox" msgid "Search..." msgstr "Buscar..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 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:491 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ocultar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Não exibir este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Manter este ajuste visível" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Configurar a visibilidade dos ajustes..." @@ -3217,12 +3287,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:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Configuração de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" @@ -3231,42 +3301,59 @@ msgstr "" "Configuração de Impressão desabilitada\n" "Arquivos G-Code não podem ser modificados" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00h 00min" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 msgctxt "@tooltip" -msgid "Time information" -msgstr "Informação de tempo" +msgid "Time specification
    " +msgstr "Especificação de tempo
    " -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 -msgctxt "@description" -msgid "Print time" -msgstr "Tempo de impressão" - -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 msgctxt "@label" +msgid "Cost specification" +msgstr "Especificação de custo" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1m" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +msgctxt "@label" +msgid "Total:" +msgstr "Total:" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1m / ~ %2g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1m / ~ %2g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 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:481 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 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." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Automático: %1" @@ -3276,7 +3363,7 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&Ver" -#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" msgstr "Automático: %1" @@ -3305,13 +3392,13 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Abrir &Recente" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 msgctxt "@info:status" 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 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 msgctxt "@label" msgid "Extruder" msgstr "Extrusor" @@ -3326,309 +3413,349 @@ msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "A temperatura atual deste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:188 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:219 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "O material neste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "O bico inserido neste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 msgctxt "@label" msgid "Build plate" msgstr "Mesa de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 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:343 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:344 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:422 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 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:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button" msgid "Pre-heat" msgstr "Pré-aquecer" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 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:677 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:703 +msgctxt "@label" +msgid "Printer control" +msgstr "Controle da Impressora" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 +msgctxt "@label" +msgid "Jog Position" +msgstr "Posição de Trote" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735 +msgctxt "@label" +msgid "X/Y" +msgstr "X/Y" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842 +msgctxt "@label" +msgid "Z" +msgstr "Z" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 +msgctxt "@label" +msgid "Jog Distance" +msgstr "Distância de Trote" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018 msgctxt "@label" msgid "Active print" msgstr "Impressão ativa" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 msgctxt "@label" msgid "Job Name" msgstr "Nome do Trabalho" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 msgctxt "@label" msgid "Printing Time" msgstr "Tempo de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1035 msgctxt "@label" msgid "Estimated time left" msgstr "Tempo restante estimado" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "A<ernar Tela Cheia" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "Des&fazer" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Refazer" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Sair" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +msgctxt "@action:inmenu menubar:view" +msgid "&Reset camera position" +msgstr "&Recompor posições de câmera" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Configurar Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Adicionar Impressora..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:115 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Adm&inistrar Impressoras..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Administrar Materiais..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&Atualizar perfil com valores e sobrepujanças atuais" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Descartar ajustes atuais" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Criar perfil a partir de ajustes atuais..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Administrar perfis..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Exibir &Documentação Online" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:171 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Relatar um &Bug" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "S&obre..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 msgctxt "@action:inmenu menubar:edit" msgid "Delete &Selected Model" msgid_plural "Delete &Selected Models" msgstr[0] "Remover Modelo &Selecionado" msgstr[1] "Remover Modelos &Selecionados" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Centralizar Modelo Selecionado" msgstr[1] "Centralizar Modelos Selecionados" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Multiplicar Modelo Selecionado" msgstr[1] "Multiplicar Modelos Selecionados" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Remover Modelo" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:222 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Ce&ntralizar Modelo na Mesa" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:228 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "A&grupar Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Desagrupar Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "Co&mbinar Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Multiplicar Modelo..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:265 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "&Selecionar Todos Os Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "&Esvaziar a mesa de impressão" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "&Recarregar Todos Os Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Posicionar Todos os Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Posicionar Seleção" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Reestabelecer as Posições de Todos Os Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "Remover as &Transformações de Todos Os Modelos" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "Abrir Arquiv&os(s)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Novo Projeto..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "&Exibir o Registro do Motor de Fatiamento..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:346 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Exibir Pasta de Configuração" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurar a visibilidade dos ajustes..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +msgctxt "@action:menu" +msgid "Browse plugins..." +msgstr "Navegar complementos..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +msgctxt "@action:menu" +msgid "Installed plugins..." +msgstr "Complementos instalados..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Por favor carregue um modelo 3D" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Pronto para fatiar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Fatiando..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Pronto para %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Incapaz de Fatiar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Fatiamento indisponível" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Preparar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 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:593 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 msgctxt "@title:window" msgid "Open file(s)" msgstr "Abrir arquivo(s)" @@ -3645,112 +3772,117 @@ msgstr "Importar todos como modelos" #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 msgctxt "@title:window" -msgid "Cura" -msgstr "Cura" +msgid "Ultimaker Cura" +msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&Arquivo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "Salvar &Seleção em Arquivo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "S&alvar Como..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 msgctxt "@title:menu menubar:file" msgid "Save project" msgstr "Salvar projeto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&Editar" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 msgctxt "@title:menu" msgid "&View" msgstr "&Ver" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:167 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 msgctxt "@title:menu" msgid "&Settings" msgstr "Aju&stes" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "Im&pressora" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 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 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 msgctxt "@title:menu" msgid "&Profile" msgstr "&Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Definir Como Extrusor Ativo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:202 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "E&xtensões" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +msgctxt "@title:menu menubar:toplevel" +msgid "P&lugins" +msgstr "&Complementos" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "P&referências" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "A&juda" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 msgctxt "@action:button" msgid "Open File" msgstr "Abrir arquivo" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 msgctxt "@title:tab" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 msgctxt "@title:window" msgid "New project" msgstr "Novo projeto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 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:694 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 msgctxt "@window:title" msgid "Install Plugin" msgstr "Instalar Complemento" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 msgctxt "@title:window" msgid "Open File(s)" msgstr "Abrir Arquivo(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 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." @@ -3760,102 +3892,112 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Salvar Projeto" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 msgctxt "@action:label" msgid "Extruder %1" msgstr "Extrusor %1" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & material" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:242 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/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 msgctxt "@action:button" msgid "Save" msgstr "Salvar" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 msgctxt "@title:tab" msgid "Prepare" msgstr "Preparar" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 msgctxt "@title:tab" msgid "Monitor" msgstr "Monitorar" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 msgctxt "@label" msgid "Layer Height" msgstr "Altura de Camada" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +msgctxt "@tooltip" +msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +msgstr "Um perfil personalizado está atualmente ativo. Para habilitar o controle deslizante de qualidade, escolha um perfil de qualidade default na aba Personalizado" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 msgctxt "@label" msgid "Print Speed" msgstr "Velocidade de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 msgctxt "@label" msgid "Slower" msgstr "Mais Lento" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 msgctxt "@label" msgid "Faster" msgstr "Mais Rápido" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "Você modificou alguns ajustes de perfil. Se você quiser alterá-los, use o modo personalizado." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 msgctxt "@label" msgid "Infill" msgstr "Preenchimento:" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 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:602 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 msgctxt "@label" msgid "Enable gradual" msgstr "Habilitar gradual" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 msgctxt "@label" msgid "Generate Support" msgstr "Gerar Suportes" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 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:718 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 msgctxt "@label" msgid "Support Extruder" msgstr "Extrusor do Suporte" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 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:796 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Aderência à Mesa de Impressão" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 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:883 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 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" @@ -3872,17 +4014,17 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Abrir arquivo de projeto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 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 "Este é um arquivo de projeto do Cura. Gostaria de abri-lo como um projeto ou importar os modelos dele?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:95 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@action:button" msgid "Open as project" msgstr "Abrir como projeto" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Import models" msgstr "Importar modelos" @@ -3892,17 +4034,17 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Registro do Motor de Fatiamento" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 msgctxt "@label" -msgid "Check material compatibility" -msgstr "Verificar compatibilidade de material" +msgid "Check compatibility" +msgstr "Verificar compatibilidade" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Clique para verificar a compatibilidade do material em Ultimaker.com." @@ -4017,11 +4159,6 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Conexão de Rede UM3" -#: CuraPrintClusterUpload/plugin.json -msgctxt "name" -msgid "UM3 Network Connection (Cluster)" -msgstr "Conexão de Rede UM3 (Cluster)" - #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4042,6 +4179,16 @@ msgctxt "name" msgid "SolidWorks Integration" msgstr "Integração ao SolidWorks" +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Provê a Visão Simulada." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Visão Simulada" + #: PostProcessingPlugin/plugin.json msgctxt "description" msgid "Extension that allows for user created scripts for post processing" @@ -4102,16 +4249,6 @@ msgctxt "name" msgid "GCode Profile Reader" msgstr "Leitor de Perfis de G-Code" -#: LayerView/plugin.json -msgctxt "description" -msgid "Provides the Layer view." -msgstr "Provê a visão de Camadas." - -#: LayerView/plugin.json -msgctxt "name" -msgid "Layer View" -msgstr "Visão de Camadas" - #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4132,6 +4269,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "Atualização de Versão de 2.7 para 3.0" +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." +msgstr "Atualiza configurações do Cura 3.0 para o Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.0 to 3.1" +msgstr "Atualização de Versão 3.0 para 3.1" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4192,6 +4339,16 @@ msgctxt "name" msgid "Per Model Settings Tool" msgstr "Ferramenta de Ajustes Por Modelo" +#: cura-siemensnx-plugin/plugin.json +msgctxt "description" +msgid "Helps you to install an 'export to Cura' button in Siemens NX." +msgstr "Auxilia na instalação de um botão 'exportar para o Cura' no Siemens NX." + +#: cura-siemensnx-plugin/plugin.json +msgctxt "name" +msgid "Siemens NX Integration" +msgstr "Integração ao Siemens NX" + #: 3MFReader/plugin.json msgctxt "description" msgid "Provides support for reading 3MF files." @@ -4252,6 +4409,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "Gerador de 3MF" +#: UserAgreementPlugin/plugin.json +msgctxt "description" +msgid "Ask the user once if he/she agrees with our license" +msgstr "Pergunta ao usuário uma única vez sobre concordância com a licença" + +#: UserAgreementPlugin/plugin.json +msgctxt "name" +msgid "UserAgreement" +msgstr "Acordo de Usuário" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" @@ -4272,6 +4439,138 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Leitor de Perfis do Cura" +#~ msgctxt "@label:status" +#~ msgid "Blocked" +#~ msgstr "Bloqueado" + +#~ msgctxt "@label:status" +#~ msgid "Can't start print" +#~ msgstr "Não consigo começar a imprimir" + +#~ msgctxt "@action:button" +#~ msgid "Open Connect.." +#~ msgstr "Abrir Connect.." + +#~ msgctxt "@info:title" +#~ msgid "Print Details" +#~ msgstr "Detalhes de Impressão" + +#~ 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 "Para assegurar que sua {machine_name} esteja equipada com os recursos mais recentes, é recomendado atualizar o firmware regularmente. Isto pode ser feito na {machine_name} (quando conectado pela rede) ou via USB." + +msgctxt "@item:inlistbox" +msgid "Layer view" +msgstr "Visão de Camadas" + +msgctxt "@info:title" +msgid "Layer View" +msgstr "Visão de Camadas" + +#~ msgctxt "@menuitem" +#~ msgid "Browse plugins" +#~ msgstr "Navegar complementos" + +#~ msgctxt "@info:title" +#~ msgid "Export Details" +#~ msgstr "Detalhes da Exportação" + +#~ 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 "" +#~ "

    Uma exceção fatal ocorreu e não foi possível haver recuperação!

    \n" +#~ "

    Por favor use a informação abaixo para publicar um relatório de erro em http://github.com/Ultimaker/Cura/issues

    \n" +#~ " " + +#~ msgctxt "@action:button" +#~ msgid "Open Web Page" +#~ msgstr "Abrir Página Web" + +#~ msgctxt "@action:button" +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgctxt "@label" +#~ msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +#~ msgstr "Esta impressora não está configurada para hospedar um grupo de impressoras Ultimaker 3 conectadas." + +#~ msgctxt "@label" +#~ msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +#~ msgstr "Esta impressora hospeda um grupo de %1 impressoras Ultimaker 3 conectadas" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Preparando" + +#~ msgctxt "@label" +#~ msgid "Completed on: " +#~ msgstr "Completado em: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Opens the print jobs page with your default web browser." +#~ msgstr "Abre a página de trabalhos de impressão com seu navegador web default." + +#~ msgctxt "@label" +#~ msgid "PRINTER GROUP" +#~ msgstr "GRUPO DE IMPRESSORAS" + +#~ msgctxt "@action:warning" +#~ msgid "Loading a project will clear all models on the buildplate" +#~ msgstr "Carregar um projeto removerá todos os modelos da mesa de impressão" + +#~ 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 "" +#~ " complemento tem uma licença.\n" +#~ "Você precisa aceitar esta licença para instalar este complemento.\n" +#~ "Você está de acordo com os termos abaixo?" + +#~ msgctxt "@label" +#~ msgid "00h 00min" +#~ msgstr "00h 00min" + +#~ msgctxt "@tooltip" +#~ msgid "Time information" +#~ msgstr "Informação de tempo" + +#~ msgctxt "@description" +#~ msgid "Print time" +#~ msgstr "Tempo de impressão" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g / ~ %4 %3" +#~ msgstr "%1m / ~ %2g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g" +#~ msgstr "%1m / ~ %2g" + +#~ msgctxt "@title:window" +#~ msgid "Cura" +#~ msgstr "Cura" + +#~ msgctxt "@label" +#~ msgid "Check material compatibility" +#~ msgstr "Verificar compatibilidade de material" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection (Cluster)" +#~ msgstr "Conexão de Rede UM3 (Cluster)" + +#~ msgctxt "description" +#~ msgid "Provides the Layer view." +#~ msgstr "Provê a visão de Camadas." + +msgctxt "name" +msgid "Layer View" +msgstr "Visão de Camadas" + #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" #~ msgstr "Raios X" @@ -4591,9 +4890,9 @@ msgstr "Leitor de Perfis do Cura" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "Provê suporte para importar perfis de arquivos G-Code." -#~ msgctxt "@label" -#~ msgid "Layer View" -#~ msgstr "Visão de Camadas" +msgctxt "@label" +msgid "Layer View" +msgstr "Visão de Camadas" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." diff --git a/resources/i18n/pt_BR/fdmextruder.def.json.po b/resources/i18n/pt_BR/fdmextruder.def.json.po index 65e6e678fe..1f222f9847 100644 --- a/resources/i18n/pt_BR/fdmextruder.def.json.po +++ b/resources/i18n/pt_BR/fdmextruder.def.json.po @@ -6,9 +6,9 @@ msgid "" 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-10-06 08:00-0300\n" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-12-04 09:00-0300\n" "Last-Translator: Cláudio Sampaio \n" "Language-Team: Cláudio Sampaio and CoderSquirrel \n" "Language: pt_BR\n" diff --git a/resources/i18n/pt_BR/fdmprinter.def.json.po b/resources/i18n/pt_BR/fdmprinter.def.json.po index 3458c5cafe..4aeea1d2f9 100644 --- a/resources/i18n/pt_BR/fdmprinter.def.json.po +++ b/resources/i18n/pt_BR/fdmprinter.def.json.po @@ -6,9 +6,9 @@ msgid "" 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-10-06 10:00-0300\n" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-12-04 10:20-0300\n" "Last-Translator: Cláudio Sampaio \n" "Language-Team: Cláudio Sampaio and CoderSquirrel \n" "Language: pt_BR\n" @@ -610,6 +610,31 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "A altura da camada inicial em mm. Uma camada inicial mais espessa faz a aderência à mesa de impressão ser maior." +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Tolerância de Fatiamento" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Como fatiar camadas com superfícies diagonais. As áreas de uma camada podem ser geradas baseadas em onde o meio da camada interseciona a superfície (Meio). Alternativamente, cada camada pode ter as áreas que se encontram dentro do volume por toda a altura da camada (Exclusivo) ou a camada pode abranger todas as áreas que tenham qualquer penetração dentro do volume (Inclusivo). Exclusivo retém mais detalhes, Inclusivo é melhor para encaixes e Meio toma menos tempo para processar." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Meio" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Exclusivo" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Inclusivo" + #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -760,6 +785,16 @@ 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" @@ -772,8 +807,8 @@ msgstr "O carro extrusor usado para imprimir a parede externa. Este ajuste é us #: fdmprinter.def.json msgctxt "wall_x_extruder_nr label" -msgid "Inner Walls Extruder" -msgstr "Extrusor das Paredes Internas" +msgid "Inner Wall Extruder" +msgstr "Extrusor da Parede Interior" #: fdmprinter.def.json msgctxt "wall_x_extruder_nr description" @@ -1205,6 +1240,106 @@ 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 "ironing_enabled label" +msgid "Enable Ironing" +msgstr "Habilitar Passar a Ferro" + +#: fdmprinter.def.json +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 "Passar a Ferro Somente Camada Mais Alta" + +#: 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 "Somente executar a passagem a ferro na última camada da malha. Isto economiza tempo se as camadas abaixo não precisarem de um acabamento de superfície amaciado." + +#: fdmprinter.def.json +msgctxt "ironing_pattern label" +msgid "Ironing Pattern" +msgstr "Padrão de Passagem a Ferro" + +#: fdmprinter.def.json +msgctxt "ironing_pattern description" +msgid "The pattern to use for ironing top surfaces." +msgstr "O padrão a usar quando se passa a ferro as superfícies superiores." + +#: fdmprinter.def.json +msgctxt "ironing_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing label" +msgid "Ironing Line Spacing" +msgstr "Espaçamento de Passagem a Ferro" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing description" +msgid "The distance between the lines of ironing." +msgstr "A distância entre as trajetórias de passagem a ferro." + +#: fdmprinter.def.json +msgctxt "ironing_flow label" +msgid "Ironing Flow" +msgstr "Fluxo de Passagem a Ferro" + +#: fdmprinter.def.json +msgctxt "ironing_flow description" +msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." +msgstr "A quantidade de material, relativa ao filete normal de extrusão, para extrudar durante a passagem a ferro. Manter o bico com algum material ajuda a preencher algumas das lacunas e fendas da superfície superior, mas material demais resulta em superextrusão e verrugas nas laterais da superfície." + +#: fdmprinter.def.json +msgctxt "ironing_inset label" +msgid "Ironing Inset" +msgstr "Penetração da Passagem a Ferro" + +#: fdmprinter.def.json +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 "infill label" msgid "Infill" @@ -1252,8 +1387,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, 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 "" +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, tri-hexagon, cubic, octet, quarter cubic, cross 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 "O padrão do material de preenchimento da impressão. Preenchimento de Linhas e Ziguezague trocam direções em camadas alternadas, reduzindo custo do material. Os padrões de Grade, Triângulo, Tri-Hexágono, Cúbico, Octeto, Quarto Cúbico, Cruzado e Concêntrico são totalmente impressos em cada camada. Os preenchimentos Cúbico, Quarto Cúbico e Octeto mudam em cada camada para prover uma distribuição mais uniforme de forças em cada direção." #: fdmprinter.def.json msgctxt "infill_pattern option grid" @@ -1270,6 +1405,11 @@ msgctxt "infill_pattern option triangles" msgid "Triangles" msgstr "Triângulos" +#: fdmprinter.def.json +msgctxt "infill_pattern option trihexagon" +msgid "Tri-Hexagon" +msgstr "Tri-Hexágono" + #: fdmprinter.def.json msgctxt "infill_pattern option cubic" msgid "Cubic" @@ -1322,8 +1462,8 @@ msgstr "Conectar Linhas de Preenchimento" #: 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 "Conecta as extremidades onde o padrão de preenchimento se encontra com a parede interna usando linhas que seguem a forma dessa parede. Habilitar este ajuste pode fazer o preenchimento aderir melhor às paredes e reduz os efeitos do preenchimento na qualidade das superfícies verticais. Desabilitar este ajuste reduz a quantidade de material usado." +msgid "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." +msgstr "Conecta as extremidades onde o padrão de preenchimento toca a parede interna usando uma linha que segue a forma da parede interna. Habilitar este ajuste pode fazer o preenchimento aderir melhor às paredes e reduzir o efeito do preenchimento na qualidade de superfícies verticais. Desabilitar este ajuda diminui a quantidade de material usado." #: fdmprinter.def.json msgctxt "infill_angles label" @@ -1335,6 +1475,26 @@ msgctxt "infill_angles description" msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns)." msgstr "Uma lista de direções de filetes em números inteiros a usar. Elementos da lista são usados sequencialmente de acordo com o progresso das camadas e quando o fim da lista é alcançado, ela volta ao começo. Os itens da lista são separados por vírgula e a lista inteira é contida em colchetes. O default é uma lista vazia que implica em usar os ângulos default tradicionais (45 e 135 graus para os padrões linha e ziguezague e 45 graus para todos os outros padrões)." +#: fdmprinter.def.json +msgctxt "infill_offset_x label" +msgid "Infill X Offset" +msgstr "Deslocamento X do Preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_offset_x description" +msgid "The infill pattern is offset this distance along the X axis." +msgstr "O padrão de preenchimento é corrigido/deslocado nesta distância no eixo X." + +#: fdmprinter.def.json +msgctxt "infill_offset_y label" +msgid "Infill Y Offset" +msgstr "Deslocamento do Preenchimento Y" + +#: fdmprinter.def.json +msgctxt "infill_offset_y description" +msgid "The infill pattern is offset this distance along the Y axis." +msgstr "O padrão de preenchimento é corrigido/deslocado nesta distância no eixo Y." + #: fdmprinter.def.json msgctxt "sub_div_rad_add label" msgid "Cubic Subdivision Shell" @@ -1483,7 +1643,7 @@ 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. 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 "A distância em que os contornos são expandidos pra dentro do preenchimento. Valores mais altos fazem o contorno aderir melhor ao padrão de preenchimento e faz as paredes de camadas vizinhas aderirem melhor ao contorno. Valores menores diminuem a quantidade de material usado." #: fdmprinter.def.json msgctxt "top_skin_expand_distance label" @@ -1645,6 +1805,26 @@ msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Ajusta o diâmetro do filamento utilizado. Acerte este valor com o diâmetro real do filamento." +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency label" +msgid "Adhesion Tendency" +msgstr "Tendência à Aderência" + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency description" +msgid "Surface adhesion tendency." +msgstr "Tendência de aderência da superfície" + +#: fdmprinter.def.json +msgctxt "material_surface_energy label" +msgid "Surface Energy" +msgstr "Energia de Superfície" + +#: fdmprinter.def.json +msgctxt "material_surface_energy description" +msgid "Surface energy." +msgstr "Energia de superfície." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -2835,36 +3015,6 @@ msgctxt "support_connect_zigzags description" msgid "Connect the ZigZags. This will increase the strength of the zig zag support structure." msgstr "Conecta os ziguezagues. Isto aumentará a força da estrutura de suporte em ziguezague." -#: fdmprinter.def.json -msgctxt "support_skip_some_zags label" -msgid "Break Up Support In Chunks" -msgstr "Quebrar Suportes em Pedaços" - -#: 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 "Evitar algumas conexões de linha de suporte para fazer a estrutura de suporte mais fácil de ser removida. Este ajuste é aplicável ao padrão de preenchimento de suporte de ziguezague." - -#: fdmprinter.def.json -msgctxt "support_skip_zag_per_mm label" -msgid "Support Chunk Size" -msgstr "Tamanho do Pedaço de Suporte" - -#: 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 "Evita uma conexão entre linhas de suporte uma vez a cada N milímetros para fazer a estrutura de suporte mais fácil de ser removida." - -#: fdmprinter.def.json -msgctxt "support_zag_skip_count label" -msgid "Support Chunk Line Count" -msgstr "Contagem de Linhas de Pedaço de Suporte" - -#: 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 "Evitar uma em cada N linhas de conexão para fazer a estrutura de suporte mais fácil de ser removida." - #: fdmprinter.def.json msgctxt "support_infill_rate label" msgid "Support Density" @@ -3404,10 +3554,10 @@ msgstr "Distância do Skirt" 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." +"This is the minimum distance. Multiple skirt lines will extend outwards from this distance." msgstr "" -"A distância horizontal entre o skirt e a primeira camada da impressão.\n" -"Esta é a distância mínima; múltiplas linhas de skirt se estenderão pra fora a partir desta distância." +"A distância horizontal entre o skirt a primeira camada da impressão.\n" +"Esta é a distância mínima. Linhas múltiplas de skirt estenderão além desta distância." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3449,26 +3599,6 @@ 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 "Deslocamento em Z da Camada 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 "O extrusor é deslocado da altura normal da primeira camada por esta distância. Pode ser positiva (elevada) ou negativa (abaixada). Alguns tipos de filamento aderem à camada de impressão melhor se o extrusor for elevado ligeiramente." - -#: fdmprinter.def.json -msgctxt "z_offset_taper_layers label" -msgid "Z Offset Taper Layers" -msgstr "Camadas de Amenização do Deslocamento 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 "Quando não for zero, o deslocamento em Z é reduzido a zero depois deste número de camadas. O valor zero significa que o deslocamento em Z permanece constante para todas as camadas da impressão." - #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3486,8 +3616,8 @@ msgstr "Amaciamento do 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 "Este ajuste controla quantos cantos interiores no contorno do raft são arredondados. Cantos no sentido interior são arredondados para um semicírculo com raio igual ao valor dado aqui. Este ajuste também remove buracos que sejam menores que tal círculo no contorno do raft." +msgid "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." +msgstr "Este ajuste controla quanto os cantos internos do contorno do raft são arredondados. Esses cantos internos são convertidos em semicírculos com raio igual ao valor dado aqui. Este ajuste também remove furos no contorno do raft que forem menores que o círculo equivalente." #: fdmprinter.def.json msgctxt "raft_airgap label" @@ -3959,6 +4089,16 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Normalmente o Cura tenta costurar pequenos furos na malha e remover partes de uma camada com grandes furos. Habilitar esta opção mantém aquelas partes que não podem ser costuradas. Este opção deve ser usada somente como uma última alternativa quando tudo o mais falha em produzir G-Code apropriado." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Resolução Máxima" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "O tamanho mínimo de um segmento de linha após o fatiamento. Se você aumentar este valor, a malha terá uma resolução menor. Isto pode permitir que a impressora mantenha a velocidade que precisa para processar o G-Code e aumentará a velocidade de fatiamento ao remover detalhes da malha que não poderia processar de qualquer jeito." + #: fdmprinter.def.json msgctxt "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -3989,6 +4129,16 @@ msgctxt "alternate_carve_order description" msgid "Switch to which mesh intersecting volumes will belong with every layer, so that the overlapping meshes become interwoven. Turning this setting off will cause one of the meshes to obtain all of the volume in the overlap, while it is removed from the other meshes." msgstr "Troca quais volumes sobrepondo malhas vão pertencer a cada camada, de modo que as malhas sobrepostas se tornem entrelaçadas. Desligar esta opção vai fazer com que uma das malhas obtenha todo o volume da sobreposiçào, removendo este volume das outras malhas." +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers label" +msgid "Remove Empty First Layers" +msgstr "Remover Camadas Iniciais Vazias" + +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers description" +msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." +msgstr "Remove camadas vazias entre a primeira camada impressa se estiverem presentes. Desabilitar este ajuste pode criar camadas iniciais vazias se a Tolerância de Fatiamento estiver configurada para Exclusivo ou Meio." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4194,6 +4344,36 @@ 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 "Otimiza a ordem em que paredes são impressas de modo a reduzir o número de retrações e a distância percorrida. A maioria das peças se beneficiarão deste ajuste habilitado mas algumas podem acabar levando mais tempo, portanto por favor compare as estimativas de tempo de impressão com e sem otimização." +#: fdmprinter.def.json +msgctxt "support_skip_some_zags label" +msgid "Break Up Support In Chunks" +msgstr "Quebrar Suportes em Pedaços" + +#: 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 "Evitar algumas conexões de linha de suporte para fazer a estrutura de suporte mais fácil de ser removida. Este ajuste é aplicável ao padrão de preenchimento de suporte de ziguezague." + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "Tamanho do Pedaço de Suporte" + +#: 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 "Evita uma conexão entre linhas de suporte uma vez a cada N milímetros para fazer a estrutura de suporte mais fácil de ser removida." + +#: fdmprinter.def.json +msgctxt "support_zag_skip_count label" +msgid "Support Chunk Line Count" +msgstr "Contagem de Linhas de Pedaço de Suporte" + +#: 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 "Evitar uma em cada N linhas de conexão para fazer a estrutura de suporte mais fácil de ser removida." + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4484,6 +4664,26 @@ msgctxt "magic_fuzzy_skin_point_dist description" msgid "The average distance between the random points introduced on each line segment. Note that the original points of the polygon are discarded, so a high smoothness results in a reduction of the resolution. This value must be higher than half the Fuzzy Skin Thickness." msgstr "A distância média entre os pontos aleatórios introduzidos em cada segmento de linha. Note que os pontos originais do polígono são descartados, portanto umo alto alisamento resulta em redução da resolução. Este valor deve ser maior que a metade da Espessura do Contorno Felpudo." +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset label" +msgid "Flow rate compensation max extrusion offset" +msgstr "Deslocamento de extrusão máxima da compensação de taxa de fluxo." + +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset description" +msgid "The maximum distance in mm to compensate." +msgstr "A distância máxima em mm a compensar." + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor label" +msgid "Flow rate compensation factor" +msgstr "Fator de compensaçõ de taxa de fluxo" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor description" +msgid "The multiplication factor for the flow rate -> distance translation." +msgstr "O fator de multiplicação para a tradução entre taxa de fluxo -> distância." + #: fdmprinter.def.json msgctxt "wireframe_enabled label" msgid "Wire Printing" @@ -4743,106 +4943,6 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Distância entre o bico e os filetes descendentes horizontais. Espaços livres maiores resultarão em filetes descendentes diagonais com ângulo menos acentuado, o que por sua vez resulta em menos conexões ascendentes à próxima camada. Somente se aplica à Impressão em Arame." -#: fdmprinter.def.json -msgctxt "ironing_enabled label" -msgid "Enable Ironing" -msgstr "Habilitar Passar a Ferro" - -#: fdmprinter.def.json -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 "Passar a Ferro Somente Camada Mais Alta" - -#: 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 "Somente executar a passagem a ferro na última camada da malha. Isto economiza tempo se as camadas abaixo não precisarem de um acabamento de superfície amaciado." - -#: fdmprinter.def.json -msgctxt "ironing_pattern label" -msgid "Ironing Pattern" -msgstr "Padrão de Passagem a Ferro" - -#: fdmprinter.def.json -msgctxt "ironing_pattern description" -msgid "The pattern to use for ironing top surfaces." -msgstr "O padrão a usar quando se passa a ferro as superfícies superiores." - -#: fdmprinter.def.json -msgctxt "ironing_pattern option concentric" -msgid "Concentric" -msgstr "Concêntrico" - -#: fdmprinter.def.json -msgctxt "ironing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Ziguezague" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing label" -msgid "Ironing Line Spacing" -msgstr "Espaçamento de Passagem a Ferro" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing description" -msgid "The distance between the lines of ironing." -msgstr "A distância entre as trajetórias de passagem a ferro." - -#: fdmprinter.def.json -msgctxt "ironing_flow label" -msgid "Ironing Flow" -msgstr "Fluxo de Passagem a Ferro" - -#: fdmprinter.def.json -msgctxt "ironing_flow description" -msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." -msgstr "A quantidade de material, relativa ao filete normal de extrusão, para extrudar durante a passagem a ferro. Manter o bico com algum material ajuda a preencher algumas das lacunas e fendas da superfície superior, mas material demais resulta em superextrusão e verrugas nas laterais da superfície." - -#: fdmprinter.def.json -msgctxt "ironing_inset label" -msgid "Ironing Inset" -msgstr "Penetração da Passagem a Ferro" - -#: fdmprinter.def.json -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" @@ -4903,13 +5003,41 @@ 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_x_extruder_nr label" +#~ msgid "Inner Walls Extruder" +#~ msgstr "Extrusor das Paredes Internas" -#~ 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 "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 "Conecta as extremidades onde o padrão de preenchimento se encontra com a parede interna usando linhas que seguem a forma dessa parede. Habilitar este ajuste pode fazer o preenchimento aderir melhor às paredes e reduz os efeitos do preenchimento na qualidade das superfícies verticais. Desabilitar este ajuste reduz a quantidade de material usado." + +#~ 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 "" +#~ "A distância horizontal entre o skirt e a primeira camada da impressão.\n" +#~ "Esta é a distância mínima; múltiplas linhas de skirt se estenderão pra fora a partir desta distância." + +#~ msgctxt "z_offset_layer_0 label" +#~ msgid "Initial Layer Z Offset" +#~ msgstr "Deslocamento em Z da Camada Inicial" + +#~ 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 "O extrusor é deslocado da altura normal da primeira camada por esta distância. Pode ser positiva (elevada) ou negativa (abaixada). Alguns tipos de filamento aderem à camada de impressão melhor se o extrusor for elevado ligeiramente." + +#~ msgctxt "z_offset_taper_layers label" +#~ msgid "Z Offset Taper Layers" +#~ msgstr "Camadas de Amenização do Deslocamento Z" + +#~ 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 "Quando não for zero, o deslocamento em Z é reduzido a zero depois deste número de camadas. O valor zero significa que o deslocamento em Z permanece constante para todas as camadas da impressão." + +#~ 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 "Este ajuste controla quantos cantos interiores no contorno do raft são arredondados. Cantos no sentido interior são arredondados para um semicírculo com raio igual ao valor dado aqui. Este ajuste também remove buracos que sejam menores que tal círculo no contorno do raft." #~ 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." diff --git a/resources/i18n/pt_PT/cura.po b/resources/i18n/pt_PT/cura.po new file mode 100644 index 0000000000..6fbc8664a9 --- /dev/null +++ b/resources/i18n/pt_PT/cura.po @@ -0,0 +1,4595 @@ +# Cura +# Copyright (C) 2017 Ultimaker +# This file is distributed under the same license as the Cura package. +# Ruben Dulek , 2017. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Cura 3.1\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" +"PO-Revision-Date: 2017-12-07 13:41+0100\n" +"Last-Translator: Bothof \n" +"Language-Team: Bothof\n" +"Language: pt_PT\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:29 +msgctxt "@action" +msgid "Machine Settings" +msgstr "Definições da máquina" + +#: /home/ruben/Projects/Cura/plugins/XRayView/__init__.py:12 +msgctxt "@item:inlistbox" +msgid "X-Ray view" +msgstr "Visualização de raio X" + +#: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 +msgctxt "@item:inlistbox" +msgid "X3D File" +msgstr "Ficheiro X3D" + +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/__init__.py:16 +msgctxt "@item:inlistbox" +msgid "GCode File" +msgstr "Ficheiro GCode" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 +msgctxt "@action:button" +msgid "Print with Doodle3D WiFi-Box" +msgstr "Imprimir com Wi-Fi box Doodle3D" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 +msgctxt "@properties:tooltip" +msgid "Print with Doodle3D WiFi-Box" +msgstr "Imprimir com Wi-Fi box Doodle3D" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +msgstr "A ligar ao 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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:376 +#: /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:253 +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 "A enviar dados para o 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 "Não é possível enviar dados para o Doodle3D Connect. Existe outra tarefa ativa?" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +msgstr "A armazenar dados no Doodle3D Connect" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:213 +msgctxt "@info:status" +msgid "File sent to Doodle3D Connect" +msgstr "Ficheiro enviado para o Doodle3D Connect" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 +msgctxt "@action:button" +msgid "Open Connect..." +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 "Abrir a interface Web do Doodle3D Connect" + +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +msgctxt "@item:inmenu" +msgid "Show Changelog" +msgstr "Mostrar registo de alterações" + +#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:20 +msgctxt "@item:inmenu" +msgid "Flatten active settings" +msgstr "Definições ativas de aplanamento" + +#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:32 +msgctxt "@info:status" +msgid "Profile has been flattened & activated." +msgstr "O perfil foi aplanado e ativado." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 +msgctxt "@item:inmenu" +msgid "USB printing" +msgstr "Impressão através de USB" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print via USB" +msgstr "Imprimir através de USB" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +msgctxt "@info:tooltip" +msgid "Print via USB" +msgstr "Imprimir através de USB" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +msgctxt "@info:status" +msgid "Connected via USB" +msgstr "Ligado através de USB" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +msgctxt "@info:status" +msgid "Unable to start a new job because the printer is busy or not connected." +msgstr "Não é possível iniciar uma nova tarefa porque a impressora está ocupada ou não está ligada." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +msgctxt "@info:title" +msgid "Printer Unavailable" +msgstr "Impressora indisponível" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +msgctxt "@info:status" +msgid "" +"This printer does not support USB printing because it uses UltiGCode flavor." +msgstr "Esta impressora não suporta impressão através de USB porque utiliza o padrão UltiGCode." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "Impressão através de USB" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +msgctxt "@info:status" +msgid "" +"Unable to start a new job because the printer does not support usb printing." +msgstr "Não é possível iniciar uma nova tarefa porque a impressora não suporta impressão através de USB." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +#: /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:945 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +msgctxt "@info:title" +msgid "Warning" +msgstr "Aviso" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:108 +msgctxt "@info" +msgid "Unable to update firmware because there are no printers connected." +msgstr "Não é possível atualizar o firmware porque não existem impressoras ligadas." + +#: /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 "Não foi possível encontrar o firmware necessário para a impressora em %s." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDeviceManager.py:122 +msgctxt "@info:title" +msgid "Printer Firmware" +msgstr "Firmware da impressora" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:23 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Save to Removable Drive" +msgstr "Guardar em unidade amovível" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:24 +#, python-brace-format +msgctxt "@item:inlistbox" +msgid "Save to Removable Drive {0}" +msgstr "Guardar em unidade amovível {0}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +#, python-brace-format +msgctxt "@info:progress Don't translate the XML tags !" +msgid "Saving to Removable Drive {0}" +msgstr "A guardar em unidade amovível {0}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +msgctxt "@info:title" +msgid "Saving" +msgstr "A guardar" + +#: /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 "Não foi possível guardar em {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 "Não foi possível encontrar um nome de ficheiro ao tentar gravar em {device}." + +#: /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 guardar na unidade amovível {0}: {1}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +msgctxt "@info:title" +msgid "Error" +msgstr "Erro" + +#: /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 na unidade amovível {0} como {1}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:140 +msgctxt "@info:title" +msgid "File Saved" +msgstr "Ficheiro guardado" + +#: /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 amoví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. Pode agora remover a unidade com segurança." + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:156 +msgctxt "@info:title" +msgid "Safely Remove Hardware" +msgstr "Remover hardware com segurança" + +#: /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." +msgstr "Falha ao ejetar {0}. Outro programa pode estar a utilizar a unidade." + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/WindowsRemovableDrivePlugin.py:68 +msgctxt "@item:intext" +msgid "Removable Drive" +msgstr "Unidade amovível" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Imprimir através da rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Imprimir através da rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +msgctxt "@info:status" +msgid "" +"Access to the printer requested. Please approve the request on the printer" +msgstr "Acesso à impressora solicitado. Aprove a solicitação na impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +msgctxt "@info:title" +msgid "Connection status" +msgstr "Estado da ligação" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +msgctxt "@info:status" +msgid "" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:479 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:502 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "Estado da ligação" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +msgctxt "@action:button" +msgid "Retry" +msgstr "Repetir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +msgctxt "@info:tooltip" +msgid "Re-send the access request" +msgstr "Reenviar a solicitação de acesso" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +msgctxt "@info:status" +msgid "Access to the printer accepted" +msgstr "Acesso à impressora aceite" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +msgctxt "@info:status" +msgid "No access to print with this printer. Unable to send print job." +msgstr "Sem acesso à impressão com esta impressora. Não é possível enviar a tarefa de impressão." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 +#: /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 "Solicitar acesso" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 +#: /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 "Enviar solicitação de acesso para a impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:385 +msgctxt "@info:status" +msgid "" +"Connected over the network. Please approve the access request on the printer." +msgstr "Ligado através da rede. Aprove a solicitação de acesso na impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:392 +msgctxt "@info:status" +msgid "Connected over the network." +msgstr "Ligado através da rede." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:405 +msgctxt "@info:status" +msgid "Connected over the network. No access to control the printer." +msgstr "Ligado através da rede. Sem acesso para controlar a impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 +msgctxt "@info:status" +msgid "Access request was denied on the printer." +msgstr "A solicitação de acesso foi negada na impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 +msgctxt "@info:status" +msgid "Access request failed due to a timeout." +msgstr "A solicitação de acesso falhou devido a tempo excedido." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 +msgctxt "@info:status" +msgid "The connection with the network was lost." +msgstr "A ligação à rede foi perdida." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 +msgctxt "@info:status" +msgid "" +"The connection with the printer was lost. Check your printer to see if it is " +"connected." +msgstr "A ligação à impressora foi perdida. Verifique se a impressora está ligada." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:666 +#, python-format +msgctxt "@info:status" +msgid "" +"Unable to start a new print job, printer is busy. Current printer status is " +"%s." +msgstr "Não é possível iniciar uma nova tarefa de impressão; a impressora está ocupada. O estado atual da impressora é %s." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:667 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "Estado da impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to start a new print job. No Printcore loaded in slot {0}" +msgstr "Não é possível iniciar uma nova tarefa de impressão. Nenhum núcleo de impressão carregado na ranhura {0}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to start a new print job. No material loaded in slot {0}" +msgstr "Não é possível iniciar uma nova tarefa de impressão. Nenhum material carregado na ranhura {0}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 +#, python-brace-format +msgctxt "@label" +msgid "Not enough material for spool {0}." +msgstr "Material insuficiente para a bobina {0}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#, python-brace-format +msgctxt "@label" +msgid "Different PrintCore (Cura: {0}, Printer: {1}) selected for extruder {2}" +msgstr "Núcleo de impressão diferente (Cura: {0}, Impressora: {1}) selecionado para a extrusora {2}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 +#, 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 a extrusora {2}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:741 +#, python-brace-format +msgctxt "@label" +msgid "" +"PrintCore {0} is not properly calibrated. XY calibration needs to be " +"performed on the printer." +msgstr "O núcleo de impressão {0} não foi devidamente calibrado. É necessário realizar a calibração XY na impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 +msgctxt "@label" +msgid "Are you sure you wish to print with the selected configuration?" +msgstr "Tem a certeza de que deseja imprimir com a configuração selecionada?" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 +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 "Foi detetada uma incompatibilidade entre a configuração ou calibração da impressora e o Cura. Para obter melhores resultados, segmente sempre para os núcleos de impressão e para os materiais que estão introduzidos na impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 +msgctxt "@window:title" +msgid "Mismatched configuration" +msgstr "Configuração incompatível" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +msgctxt "@info:status" +msgid "" +"Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "A enviar novas tarefas bloqueadas (temporariamente); ainda a enviar a tarefa de impressão anterior." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +msgctxt "@info:status" +msgid "Sending data to printer" +msgstr "A enviar dados para a impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +msgctxt "@info:title" +msgid "Sending Data" +msgstr "A enviar dados" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +msgctxt "@info:status" +msgid "Unable to send data to printer. Is another job still active?" +msgstr "Não é possível enviar dados para a impressora. Existe outra tarefa ativa?" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 +msgctxt "@label:MonitorStatus" +msgid "Aborting print..." +msgstr "A cancelar impressão..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +msgctxt "@label:MonitorStatus" +msgid "Print aborted. Please check the printer" +msgstr "Impressão cancelada. Verifique a impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +msgctxt "@label:MonitorStatus" +msgid "Pausing print..." +msgstr "A colocar a impressão em pausa..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +msgctxt "@label:MonitorStatus" +msgid "Resuming print..." +msgstr "A retomar a impressão..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +msgctxt "@window:title" +msgid "Sync with your printer" +msgstr "Sincronizar com a impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +msgctxt "@label" +msgid "Would you like to use your current printer configuration in Cura?" +msgstr "Gostaria de utilizar a configuração de impressora atual no Cura?" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 +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 núcleos de impressão e/ou materiais na sua impressora são diferentes dos incluídos no seu projeto atual. Para obter melhores resultados, segmente sempre para os núcleos de impressão e para os materiais que estão introduzidos na impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:112 +msgid "" +"This printer is not set up to host a group of connected Ultimaker 3 printers." +msgstr "Esta impressora não está configurada para alojar um grupo de impressoras Ultimaker 3 ligadas em rede." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:113 +#, 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 "Esta impressora aloja um grupo de {count} impressoras Ultimaker 3 ligadas em rede." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 +#, python-brace-format +msgid "" +"{printer_name} has finished printing '{job_name}'. Please collect the print " +"and confirm clearing the build plate." +msgstr "{printer_name} terminou a impressão de \"{job_name}\". Recolha a impressão e confirme a limpeza da placa de construção." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#, 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 "{printer_name} está reservada para imprimir \"{job_name}\". Altere a configuração da impressora de forma a corresponder à tarefa para dar início à impressão." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +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 "Não é possível enviar nova tarefa de impressão: esta impressora 3D não está (ainda) configurada para alojar um grupo de impressoras Ultimaker 3 ligadas em rede." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "Não é possível enviar tarefa de impressão para o grupo {cluster_name}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "{file_name} enviado para o grupo {cluster_name}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "Mostrar tarefas de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "Abre a interface de tarefas de impressão no seu browser." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label" +msgid "Unknown" +msgstr "Desconhecido" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#, python-brace-format +msgctxt "@info:status" +msgid "Printer '{printer_name}' has finished printing '{job_name}'." +msgstr "A impressora {printer_name} terminou a impressão de \"{job_name}\"." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +msgctxt "@info:status" +msgid "Print finished" +msgstr "Impressão terminada" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 +msgctxt "@label:status" +msgid "Action required" +msgstr "Ação necessária" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "A enviar {file_name} para o grupo {cluster_name}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +msgctxt "@action" +msgid "Connect via Network" +msgstr "Ligar através de rede" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#, python-brace-format +msgctxt "" +"@info Don't translate {machine_name}, since it gets replaced by a printer " +"name!" +msgid "" +"New features are available for your {machine_name}! It is recommended to " +"update the firmware on your printer." +msgstr "Estão disponíveis novas funcionalidades para a sua {machine_name}! É recomendado atualizar o firmware na sua impressora." + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "Novo firmware %s disponível" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +msgctxt "@action:button" +msgid "How to update" +msgstr "Como atualizar" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +msgctxt "@info" +msgid "Could not access update information." +msgstr "Não foi possível aceder às informações de atualização." + +#: /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 "Foram apresentados erros ao abrir o seu ficheiro SolidWorks! Verifique se é possível abrir o ficheiro no SolidWorks sem quaisquer problemas!" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +msgctxt "@item:inlistbox" +msgid "SolidWorks part file" +msgstr "Ficheiro de peça SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +msgctxt "@item:inlistbox" +msgid "SolidWorks assembly file" +msgstr "Ficheiro de montagem SolidWorks" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +msgid "Configure" +msgstr "Configurar" + +#: /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/SimulationView/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Simulation view" +msgstr "Visualização de simulação" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +msgctxt "@info:status" +msgid "Cura does not accurately display layers when Wire Printing is enabled" +msgstr "O Cura não apresenta as camadas de forma precisa quando a Impressão de fios está ativada" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:101 +msgctxt "@info:title" +msgid "Simulation View" +msgstr "Visualização de simulação" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +msgid "Modify G-Code" +msgstr "Modificar 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 "O Cura recolhe estatísticas de segmentação anónimas. É possível desativar esta opção nas preferências." + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:46 +msgctxt "@info:title" +msgid "Collecting Data" +msgstr "A recolher dados" + +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/SliceInfo.py:48 +msgctxt "@action:button" +msgid "Dismiss" +msgstr "Dispensar" + +#: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Cura 15.04 profiles" +msgstr "Perfis Cura 15.04" + +#: /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 "Ficheiro G-code" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "JPG Image" +msgstr "Imagem JPG" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:18 +msgctxt "@item:inlistbox" +msgid "JPEG Image" +msgstr "Imagem JPEG" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:22 +msgctxt "@item:inlistbox" +msgid "PNG Image" +msgstr "Imagem PNG" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:26 +msgctxt "@item:inlistbox" +msgid "BMP Image" +msgstr "Imagem BMP" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:30 +msgctxt "@item:inlistbox" +msgid "GIF Image" +msgstr "Imagem 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 "Não é possível segmentar com o material atual, uma vez que é incompatível com a máquina ou configuração selecionada." + +#: /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:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +msgctxt "@info:title" +msgid "Unable to slice" +msgstr "Não é possível segmentar" + +#: /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 "Não é possível segmentar com as definições atuais. As seguintes definições apresentam erros: {0}" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#, python-brace-format +msgctxt "@info:status" +msgid "" +"Unable to slice due to some per-model settings. The following settings have " +"errors on one or more models: {error_labels}" +msgstr "Não é possível segmentar devido a algumas definições por modelo. As seguintes definições apresentam erros num ou mais modelos: {error_labels}" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +msgctxt "@info:status" +msgid "" +"Unable to slice because the prime tower or prime position(s) are invalid." +msgstr "Não é possível segmentar porque a torre ou a(s) posição(ões) de preparação é(são) inválidas." + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 +msgctxt "@info:status" +msgid "" +"Nothing to slice because none of the models fit the build volume. Please " +"scale or rotate models to fit." +msgstr "Sem conteúdo para segmentar porque nenhum dos modelos se adapta ao volume de construção. Dimensione ou rode os modelos para os adaptar." + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +msgctxt "@info:status" +msgid "Processing Layers" +msgstr "A processar camadas" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +msgctxt "@info:title" +msgid "Information" +msgstr "Informações" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 +msgctxt "@label" +msgid "Per Model Settings" +msgstr "Definições por modelo" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:15 +msgctxt "@info:tooltip" +msgid "Configure Per Model Settings" +msgstr "Configurar definições por modelo" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23 +msgid "Install" +msgstr "Instalar" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 +msgid "" +"Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It " +"is not set to a directory." +msgstr "Falha ao copiar os ficheiros de plug-in Siemens NX. Verifique o seu UGII_USER_DIR. Não está atribuído a um diretório." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81 +msgid "Successfully installed Siemens NX Cura plugin." +msgstr "Plug-in Siemens NX Cura instalado com sucesso." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 +msgid "" +"Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgstr "Falha ao copiar os ficheiros de plug-in Siemens NX. Verifique o seu UGII_USER_DIR." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 +msgid "" +"Failed to install Siemens NX plugin. Could not set environment variable " +"UGII_USER_DIR for Siemens NX." +msgstr "Falha ao instalar o plug-in Siemens NX. Não foi possível definir a variável do ambiente UGII_USER_DIR para o Siemens NX." + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +msgctxt "@title:tab" +msgid "Recommended" +msgstr "Recomendado" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +msgctxt "@title:tab" +msgid "Custom" +msgstr "Personalizado" + +#: /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 "Ficheiro 3MF" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +msgctxt "@label" +msgid "Nozzle" +msgstr "Bocal" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "Falha ao obter ID de plug-in de {0}" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +msgctxt "@info:tile" +msgid "Warning" +msgstr "Aviso" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +msgctxt "@window:title" +msgid "Plugin browser" +msgstr "Browser de plug-ins" + +#: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Solid view" +msgstr "Visualização sólida" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 +msgctxt "@item:inlistbox" +msgid "G File" +msgstr "Ficheiro G" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +msgctxt "@info:status" +msgid "Parsing G-code" +msgstr "A analisar G-Code" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "Detalhes do G-code" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +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 "Certifique-se de que o g-code é apropriado para a sua impressora e respetiva configuração antes de enviar o ficheiro. A representação do g-code poderá ser imprecisa." + +#: /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 "Perfil Cura" + +#: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 +msgctxt "@item:inlistbox" +msgid "3MF file" +msgstr "Ficheiro 3MF" + +#: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:38 +msgctxt "@item:inlistbox" +msgid "Cura Project 3MF file" +msgstr "Ficheiro 3MF de projeto Cura" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:20 +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 +msgctxt "@action" +msgid "Select upgrades" +msgstr "Selecionar atualizações" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.py:12 +msgctxt "@action" +msgid "Upgrade Firmware" +msgstr "Atualizar firmware" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 +msgctxt "@action" +msgid "Checkup" +msgstr "Exame" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:15 +msgctxt "@action" +msgid "Level build plate" +msgstr "Nivelar placa de construção" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "Parede externa" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "Paredes internas" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Skin" +msgstr "Revestimento" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Infill" +msgstr "Preenchimento" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "Preenchimento de suporte" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "Interface de suporte" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Support" +msgstr "Suporte" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "Contorno" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Travel" +msgstr "Deslocação" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "Retrações" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +msgctxt "@tooltip" +msgid "Other" +msgstr "Outro" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +msgctxt "@label unknown material" +msgid "Unknown" +msgstr "Desconhecido" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "Ficheiro pré-segmentado {0}" + +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +msgctxt "@item:material" +msgid "No material loaded" +msgstr "Nenhum material carregado" + +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +msgctxt "@item:material" +msgid "Unknown material" +msgstr "Material desconhecido" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "A procurar nova localização para objetos" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:34 +msgctxt "@info:title" +msgid "Finding Location" +msgstr "A procurar localização" + +#: /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 "Não é possível encontrar uma localização no volume de construção para todos os objetos" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:90 +msgctxt "@info:title" +msgid "Can't Find Location" +msgstr "Não é possível encontrar localização" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +msgctxt "@title:window" +msgid "File Already Exists" +msgstr "O ficheiro já existe" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#, 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 "O ficheiro {0} já existe. Tem a certeza de que deseja substituí-lo?" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 +msgctxt "@label" +msgid "Custom" +msgstr "Personalizado" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +msgctxt "@label" +msgid "Custom Material" +msgstr "Material personalizado" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 +msgctxt "@menuitem" +msgid "Global" +msgstr "Global" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Não substituído" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +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:118 +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 +msgctxt "@info:title" +msgid "Incompatible Material" +msgstr "Material incompatível" + +#: /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 "O diâmetro do material selecionado faz com que o material se torne incompatível com a impressora atual." + +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:25 +msgctxt "@action:button" +msgid "Undo" +msgstr "Anular" + +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:25 +msgctxt "@action" +msgid "Undo changing the material diameter." +msgstr "Anular alteração do diâmetro do material." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "" +"Failed to export profile to {0}: {1}" +msgstr "Falha ao exportar perfil para {0}: {1}" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tag !" +msgid "" +"Failed to export profile to {0}: Writer plugin reported " +"failure." +msgstr "Falha ao exportar perfil para {0}: O plug-in de gravador comunicou uma falha." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tag !" +msgid "Exported profile to {0}" +msgstr "Perfil exportado para {0}" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:157 +msgctxt "@info:title" +msgid "Export succeeded" +msgstr "Exportação bem-sucedida" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "" +"Failed to import profile from {0}: {1}" +msgstr "Falha ao importar perfil de {0}: {1}" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#, python-brace-format +msgctxt "@info:status" +msgid "Successfully imported profile {0}" +msgstr "Perfil {0} importado com êxito" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 +#, python-brace-format +msgctxt "@info:status" +msgid "Profile {0} has an unknown file type or is corrupted." +msgstr "O perfil {0} tem um tipo de ficheiro desconhecido ou está corrompido." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 +msgctxt "@label" +msgid "Custom profile" +msgstr "Perfil personalizado" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +msgctxt "@info:status" +msgid "Profile is missing a quality type." +msgstr "O perfil tem um tipo de qualidade em falta." + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#, 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 um tipo de qualidade {0} para a configuração atual." + +#: /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 construção foi reduzida devido ao valor da definição \"Sequência de impressão\" para impedir que o pórtico colida com os modelos impressos." + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:102 +msgctxt "@info:title" +msgid "Build Volume" +msgstr "Volume de construção" + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:34 +msgctxt "@info:status" +msgid "Multiplying and placing objects" +msgstr "Multiplicar e dispor objetos" + +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:35 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:83 +msgctxt "@info:title" +msgid "Placing Object" +msgstr "A dispor objeto" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 +msgctxt "@title:window" +msgid "Crash Report" +msgstr "Relatório de falhas" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +msgctxt "@label crash message" +msgid "" +"

    A fatal exception has occurred. Please send us this Crash Report to " +"fix the problem

    \n" +"

    Please use the \"Send report\" button to post a bug report " +"automatically to our servers

    \n" +" " +msgstr "

    Ocorreu uma exceção fatal. Envie-nos este relatório de falhas para resolver o problema

    \n

    Utilize o botão \"Enviar relatório\" para publicar um relatório de erros automaticamente nos nossos servidores

    \n " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +msgctxt "@title:groupbox" +msgid "System information" +msgstr "Informações do sistema" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +msgctxt "@label unknown version of Cura" +msgid "Unknown" +msgstr "Desconhecido" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 +#, python-brace-format +msgctxt "@label Cura version" +msgid "Cura version: {version}
    " +msgstr "Versão do Cura: {version}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 +#, python-brace-format +msgctxt "@label Platform" +msgid "Platform: {platform}
    " +msgstr "Plataforma: {platform}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 +#, python-brace-format +msgctxt "@label Qt version" +msgid "Qt version: {qt}
    " +msgstr "Versão Qt: {qt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 +#, python-brace-format +msgctxt "@label PyQt version" +msgid "PyQt version: {pyqt}
    " +msgstr "Versão PyQt: {pyqt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 +#, python-brace-format +msgctxt "@label OpenGL" +msgid "OpenGL: {opengl}
    " +msgstr "OpenGL: {opengl}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#, python-brace-format +msgctxt "@label OpenGL version" +msgid "
  • OpenGL Version: {version}
  • " +msgstr "
  • Versão do OpenGL: {version}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#, python-brace-format +msgctxt "@label OpenGL vendor" +msgid "
  • OpenGL Vendor: {vendor}
  • " +msgstr "
  • Vendedor do OpenGL: {vendor}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#, python-brace-format +msgctxt "@label OpenGL renderer" +msgid "
  • OpenGL Renderer: {renderer}
  • " +msgstr "
  • Processador do OpenGL: {renderer}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +msgctxt "@title:groupbox" +msgid "Exception traceback" +msgstr "Determinação da origem da exceção" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +msgctxt "@title:groupbox" +msgid "Logs" +msgstr "Registos" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +msgctxt "@title:groupbox" +msgid "User description" +msgstr "Descrição do utilizador" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +msgctxt "@action:button" +msgid "Send report" +msgstr "Enviar relatório" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +msgctxt "@info:progress" +msgid "Loading machines..." +msgstr "A carregar máquinas..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +msgctxt "@info:progress" +msgid "Setting up scene..." +msgstr "A configurar cenário..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +msgctxt "@info:progress" +msgid "Loading interface..." +msgstr "A carregar interface..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#, 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:1348 +#, python-brace-format +msgctxt "@info:status" +msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" +msgstr "Apenas pode ser carregado um ficheiro G-code de cada vez. Importação {0} ignorada" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1357 +#, python-brace-format +msgctxt "@info:status" +msgid "Can't open any other file if G-code is loading. Skipped importing {0}" +msgstr "Não é possível abrir outro ficheiro enquanto o G-code estiver a carregar. Importação {0} ignorada" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +msgctxt "@info:status" +msgid "The selected model was too small to load." +msgstr "O modelo selecionado era demasiado pequeno para carregar." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 +msgctxt "@title" +msgid "Machine Settings" +msgstr "Definições da máquina" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:78 +msgctxt "@title:tab" +msgid "Printer" +msgstr "Impressora" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 +msgctxt "@label" +msgid "Printer Settings" +msgstr "Definições da impressora" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 +msgctxt "@label" +msgid "X (Width)" +msgstr "X (largura)" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +msgctxt "@label" +msgid "mm" +msgstr "mm" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 +msgctxt "@label" +msgid "Y (Depth)" +msgstr "Y (profundidade)" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 +msgctxt "@label" +msgid "Z (Height)" +msgstr "Z (altura)" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:140 +msgctxt "@label" +msgid "Build plate shape" +msgstr "Forma da placa de construção" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 +msgctxt "@option:check" +msgid "Origin at center" +msgstr "Origem no centro" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:157 +msgctxt "@option:check" +msgid "Heated bed" +msgstr "Base aquecida" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 +msgctxt "@label" +msgid "Gcode flavor" +msgstr "Padrão Gcode" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 +msgctxt "@label" +msgid "Printhead Settings" +msgstr "Definições da cabeça de impressão" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 +msgctxt "@label" +msgid "X min" +msgstr "X mín." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 +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 "Distância desde a parte esquerda da cabeça de impressão até ao centro do bocal. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 +msgctxt "@label" +msgid "Y min" +msgstr "Y mín." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 +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 "Distância desde a parte frontal da cabeça de impressão até ao centro do bocal. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +msgctxt "@label" +msgid "X max" +msgstr "X máx." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 +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 "Distância desde a parte direita da cabeça de impressão até ao centro do bocal. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 +msgctxt "@label" +msgid "Y max" +msgstr "Y máx." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 +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 "Distância desde a parte posterior da cabeça de impressão até ao centro do bocal. Utilizado para impedir colisões entre as impressões anteriores e a cabeça de impressão ao imprimir \"Individualmente\"." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 +msgctxt "@label" +msgid "Gantry height" +msgstr "Altura do pórtico" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +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 bocal e o sistema de pórtico (eixos X e Y). Utilizado para impedir colisões entre as impressões anteriores e o pórtico ao imprimir \"Individualmente\"." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 +msgctxt "@label" +msgid "Number of Extruders" +msgstr "Número de extrusoras" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +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á substituído pelo material e/ou perfil." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 +msgctxt "@label" +msgid "Material diameter" +msgstr "Diâmetro do material" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +msgctxt "@label" +msgid "Nozzle size" +msgstr "Tamanho do bocal" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +msgctxt "@label" +msgid "Start Gcode" +msgstr "Gcode inicial" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +msgctxt "@tooltip" +msgid "Gcode commands to be executed at the very start." +msgstr "Comandos Gcode a serem executados no início." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +msgctxt "@label" +msgid "End Gcode" +msgstr "Gcode final" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +msgctxt "@tooltip" +msgid "Gcode commands to be executed at the very end." +msgstr "Comandos Gcode a serem executados no fim." + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +msgctxt "@label" +msgid "Nozzle Settings" +msgstr "Definições do bocal" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +msgctxt "@label" +msgid "Nozzle offset X" +msgstr "Desvio X do bocal" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +msgctxt "@label" +msgid "Nozzle offset Y" +msgstr "Desvio Y do bocal" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +msgctxt "@label" +msgid "Extruder Start Gcode" +msgstr "Gcode inicial da extrusora" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +msgctxt "@label" +msgid "Extruder End Gcode" +msgstr "Gcode final da extrusora" + +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 +msgctxt "@label" +msgid "Changelog" +msgstr "Registo 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/PostProcessingPlugin/PostProcessingPlugin.qml:445 +#: /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:123 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 +msgctxt "@action:button" +msgid "Close" +msgstr "Fechar" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:22 +msgctxt "@title:window" +msgid "Firmware Update" +msgstr "Atualização de firmware" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:42 +msgctxt "@label" +msgid "Firmware update completed." +msgstr "Atualização de firmware concluída." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:47 +msgctxt "@label" +msgid "Starting firmware update, this may take a while." +msgstr "A iniciar atualização de firmware; isto poderá demorar algum tempo." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:52 +msgctxt "@label" +msgid "Updating firmware." +msgstr "A atualizar firmware." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:61 +msgctxt "@label" +msgid "Firmware update failed due to an unknown error." +msgstr "A atualização de firmware falhou devido a um erro desconhecido." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:64 +msgctxt "@label" +msgid "Firmware update failed due to an communication error." +msgstr "A atualização de firmware falhou devido a um erro de comunicação." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:67 +msgctxt "@label" +msgid "Firmware update failed due to an input/output error." +msgstr "A atualização de firmware falhou devido a um erro de entrada/saída." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:70 +msgctxt "@label" +msgid "Firmware update failed due to missing firmware." +msgstr "A atualização de firmware falhou devido à ausência de firmware." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:73 +msgctxt "@label" +msgid "Unknown error code: %1" +msgstr "Código de erro desconhecido: %1" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +msgctxt "@title:window" +msgid "Connect to Networked Printer" +msgstr "Ligar à impressora em rede" + +#: /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 "Para imprimir diretamente para a sua impressora através da rede, certifique-se de que a sua impressora está ligada à rede por meio de um cabo de rede ou através de ligação à rede Wi-Fi. Se não ligar o Cura à impressora, poderá ainda assim utilizar uma unidade USB para transferir ficheiros g-code para a impressora.\n\nSelecione a sua impressora na lista a seguir:" + +#: /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 "Adicionar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +msgctxt "@action:button" +msgid "Edit" +msgstr "Editar" + +#: /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 "Remover" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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:194 +msgctxt "@label" +msgid "" +"If your printer is not listed, read the network printing " +"troubleshooting guide" +msgstr "Se a sua impressora não estiver indicada, leia o guia de resolução de problemas de impressão em rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 +msgctxt "@label" +msgid "Type" +msgstr "Tipo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 +msgctxt "@label" +msgid "Ultimaker 3" +msgstr "Ultimaker 3" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 +msgctxt "@label" +msgid "Ultimaker 3 Extended" +msgstr "Ultimaker 3 Extended" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 +msgctxt "@label" +msgid "Firmware version" +msgstr "Versão de firmware" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 +msgctxt "@label" +msgid "Address" +msgstr "Endereço" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:286 +msgctxt "@label" +msgid "This printer is not set up to host a group of Ultimaker 3 printers." +msgstr "Esta impressora não está configurada para alojar um grupo de impressoras Ultimaker 3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:290 +msgctxt "@label" +msgid "This printer is the host for a group of %1 Ultimaker 3 printers." +msgstr "Esta impressora aloja um grupo de %1 impressoras Ultimaker 3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:300 +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:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +msgctxt "@action:button" +msgid "Connect" +msgstr "Ligar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 +msgctxt "@title:window" +msgid "Printer Address" +msgstr "Endereço da impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 +msgctxt "@alabel" +msgid "Enter the IP address or hostname of your printer on the network." +msgstr "Introduza o endereço IP ou o nome de anfitrião da sua impressora na rede." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 +#: /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/UM3NetworkPrinting/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Imprimir através da rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Imprimir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:36 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "%1 não está configurado para alojar um grupo de impressoras Ultimaker 3 ligadas em rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "Abre a página de tarefas de impressão com o seu browser predefinido." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "Visualizar tarefas de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 +msgctxt "@label" +msgid "Preparing to print" +msgstr "A preparar para imprimir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 +msgctxt "@label:status" +msgid "Printing" +msgstr "A imprimir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 +msgctxt "@label:status" +msgid "Available" +msgstr "Disponível" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +msgctxt "@label:MonitorStatus" +msgid "Lost connection with the printer" +msgstr "Ligação com a impressora perdida" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 +msgctxt "@label:status" +msgid "Disabled" +msgstr "Desativado" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273 +msgctxt "@label:status" +msgid "Reserved" +msgstr "Reservado" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:275 +msgctxt "@label:status" +msgid "Finished" +msgstr "Concluído" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 +msgctxt "@label:status" +msgid "Paused" +msgstr "Em pausa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 +msgctxt "@label:status" +msgid "Resuming" +msgstr "A retomar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 +msgctxt "@label:status" +msgid "Print aborted" +msgstr "Impressão cancelada" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:410 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "Não são aceites tarefas de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 +msgctxt "@label" +msgid "Finishes at: " +msgstr "Termina a: " + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 +msgctxt "@label" +msgid "Clear build plate" +msgstr "Limpar placa de construção" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "A aguardar pela alteração de configuração" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:64 +msgctxt "@title" +msgid "Print jobs" +msgstr "Tarefas de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 +msgctxt "@label" +msgid "Printing" +msgstr "A imprimir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 +msgctxt "@label" +msgid "Queued" +msgstr "Em fila" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:171 +msgctxt "@label:title" +msgid "Printers" +msgstr "Impressoras" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 +msgctxt "@action:button" +msgid "View printers" +msgstr "Visualizar impressoras" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +msgctxt "@info:tooltip" +msgid "Connect to a printer" +msgstr "Ligar a uma impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:116 +msgctxt "@info:tooltip" +msgid "Load the configuration of the printer into Cura" +msgstr "Carregar a configuração da impressora para o Cura" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:117 +msgctxt "@action:button" +msgid "Activate Configuration" +msgstr "Ativar configuração" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +msgctxt "@title:window" +msgid "Cura SolidWorks Plugin Configuration" +msgstr "Configuração do plug-in SolidWorks do Cura" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +msgctxt "@action:label" +msgid "Default quality of the exported STL:" +msgstr "Qualidade predefinida do STL exportado:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Always ask" +msgstr "Perguntar sempre" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Always use Fine quality" +msgstr "Utilizar sempre qualidade de alta resolução" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Always use Coarse quality" +msgstr "Utilizar sempre a qualidade de baixa resolução" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 +msgctxt "@title:window" +msgid "Import SolidWorks File as STL..." +msgstr "Importar ficheiro SolidWorks como STL..." + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 +msgctxt "@info:tooltip" +msgid "Quality of the Exported STL" +msgstr "Qualidade do STL exportado" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 +msgctxt "@action:label" +msgid "Quality" +msgstr "Qualidade" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Coarse" +msgstr "Baixa resolução" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Fine" +msgstr "Alta resolução" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "Memorizar a minha escolha" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +msgctxt "@label" +msgid "Color scheme" +msgstr "Esquema de cores" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +msgctxt "@label:listbox" +msgid "Material Color" +msgstr "Cor do material" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +msgctxt "@label:listbox" +msgid "Line Type" +msgstr "Tipo de linha" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +msgctxt "@label:listbox" +msgid "Feedrate" +msgstr "Velocidade de alimentação" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +msgctxt "@label:listbox" +msgid "Layer thickness" +msgstr "Espessura da camada" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +msgctxt "@label" +msgid "Compatibility Mode" +msgstr "Modo de compatibilidade" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +msgctxt "@label" +msgid "Show Travels" +msgstr "Mostrar deslocações" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +msgctxt "@label" +msgid "Show Helpers" +msgstr "Mostrar auxiliares" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +msgctxt "@label" +msgid "Show Shell" +msgstr "Mostrar cobertura" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +msgctxt "@label" +msgid "Show Infill" +msgstr "Mostrar preenchimento" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +msgctxt "@label" +msgid "Only Show Top Layers" +msgstr "Mostrar apenas camadas superiores" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +msgctxt "@label" +msgid "Show 5 Detailed Layers On Top" +msgstr "Mostrar cinco camadas detalhadas no topo" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +msgctxt "@label" +msgid "Top / Bottom" +msgstr "Superior/Inferior" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +msgctxt "@label" +msgid "Inner Wall" +msgstr "Parede interna" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +msgctxt "@label" +msgid "min" +msgstr "mín." + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +msgctxt "@label" +msgid "max" +msgstr "máx." + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 +msgctxt "@title:window" +msgid "Post Processing Plugin" +msgstr "Plug-in de pós-processamento" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:49 +msgctxt "@label" +msgid "Post Processing Scripts" +msgstr "Scripts de pós-processamento" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:217 +msgctxt "@action" +msgid "Add a script" +msgstr "Adicionar um script" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:263 +msgctxt "@label" +msgid "Settings" +msgstr "Definições" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +msgctxt "@info:tooltip" +msgid "Change active post-processing scripts" +msgstr "Alterar scripts de pós-processamento ativos" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 +msgctxt "@title:window" +msgid "Convert Image..." +msgstr "Converter imagem..." + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:33 +msgctxt "@info:tooltip" +msgid "The maximum distance of each pixel from \"Base.\"" +msgstr "A distância máxima de cada pixel desde a \"Base\"." + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:38 +msgctxt "@action:label" +msgid "Height (mm)" +msgstr "Altura (mm)" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:56 +msgctxt "@info:tooltip" +msgid "The base height from the build plate in millimeters." +msgstr "A altura da base desde a placa de construção em milímetros." + +#: /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 "A largura em milímetros na placa de construção." + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:84 +msgctxt "@action:label" +msgid "Width (mm)" +msgstr "Largura (mm)" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:103 +msgctxt "@info:tooltip" +msgid "The depth in millimeters on the build plate" +msgstr "A profundidade em milímetros na placa de construção" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:108 +msgctxt "@action:label" +msgid "Depth (mm)" +msgstr "Profundidade (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 "Por predefinição, os pixels brancos representam os pontos altos na malha e os pixels pretos representam os pontos baixos na malha. Altere esta opção para inverter o comportamento de forma que os pixels pretos representem os pontos altos na malha e os pixels brancos representem os pontos baixos na malha." + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "Mais claro é mais alto" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Darker is higher" +msgstr "Mais escuro é mais alto" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 +msgctxt "@info:tooltip" +msgid "The amount of smoothing to apply to the image." +msgstr "A quantidade de suavização a aplicar à imagem." + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:154 +msgctxt "@action:label" +msgid "Smoothing" +msgstr "Suavização" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Selecionar definições" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:248 +msgctxt "@title:window" +msgid "Select Settings to Customize for this model" +msgstr "Selecionar definições a personalizar para este modelo" + +#: /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:296 +msgctxt "@label:checkbox" +msgid "Show all" +msgstr "Mostrar tudo" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 +msgctxt "@title:window" +msgid "Open Project" +msgstr "Abrir projeto" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 +msgctxt "@action:ComboBox option" +msgid "Update existing" +msgstr "Atualizar existente" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Criar novo" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +msgctxt "@action:title" +msgid "Summary - Cura Project" +msgstr "Resumo – Projeto Cura" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 +msgctxt "@action:label" +msgid "Printer settings" +msgstr "Definições da impressora" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 +msgctxt "@info:tooltip" +msgid "How should the conflict in the machine be resolved?" +msgstr "Como deve ser resolvido o conflito na máquina?" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 +msgctxt "@action:label" +msgid "Type" +msgstr "Tipo" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:144 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:201 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:293 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:190 +msgctxt "@action:label" +msgid "Name" +msgstr "Nome" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:166 +msgctxt "@action:label" +msgid "Profile settings" +msgstr "Definições do perfil" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 +msgctxt "@info:tooltip" +msgid "How should the conflict in the profile be resolved?" +msgstr "Como deve ser resolvido o conflito no perfil?" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 +msgctxt "@action:label" +msgid "Not in profile" +msgstr "Inexistente no perfil" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 +msgctxt "@action:label" +msgid "%1 override" +msgid_plural "%1 overrides" +msgstr[0] "%1 substituição" +msgstr[1] "%1 substituições" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:232 +msgctxt "@action:label" +msgid "Derivative from" +msgstr "Derivado de" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:237 +msgctxt "@action:label" +msgid "%1, %2 override" +msgid_plural "%1, %2 overrides" +msgstr[0] "%1, %2 substituição" +msgstr[1] "%1, %2 substituições" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:253 +msgctxt "@action:label" +msgid "Material settings" +msgstr "Definições de material" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 +msgctxt "@info:tooltip" +msgid "How should the conflict in the material be resolved?" +msgstr "Como deve ser resolvido o conflito no material?" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +msgctxt "@action:label" +msgid "Setting visibility" +msgstr "Visibilidade das definições" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:321 +msgctxt "@action:label" +msgid "Mode" +msgstr "Modo" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:218 +msgctxt "@action:label" +msgid "Visible settings:" +msgstr "Definições visíveis:" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:223 +msgctxt "@action:label" +msgid "%1 out of %2" +msgstr "%1 de %2" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368 +msgctxt "@action:warning" +msgid "Loading a project will clear all models on the build plate." +msgstr "O carregamento de um projeto irá limpar todos os modelos na placa de construção." + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 +msgctxt "@action:button" +msgid "Open" +msgstr "Abrir" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:11 +msgctxt "@title:window" +msgid "Find & Update plugins" +msgstr "Procurar e atualizar plug-ins" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:27 +msgctxt "@label" +msgid "Here you can find a list of Third Party plugins." +msgstr "Aqui pode encontrar uma lista de plug-ins de terceiros." + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:145 +msgctxt "@action:button" +msgid "Upgrade" +msgstr "Atualizar" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +msgctxt "@action:button" +msgid "Installed" +msgstr "Instalado" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Transferir" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 +msgctxt "@title:window" +msgid "Plugin License Agreement" +msgstr "Contrato de licença do plug-in" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 +msgctxt "@label" +msgid "" +"This plugin contains a license.\n" +"You need to accept this license to install this plugin.\n" +"Do you agree with the terms below?" +msgstr "Este plug-in contém uma licença.\nÉ necessário aceitar esta licença para instalar o plug-in.\nConcorda com os termos abaixo?" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 +msgctxt "@action:button" +msgid "Accept" +msgstr "Aceitar" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" +msgstr "Rejeitar" + +#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 +msgctxt "@title:window" +msgid "User Agreement" +msgstr "Contrato de utilizador" + +#: /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 "Selecionar atualizações da impressora" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:37 +msgctxt "@label" +msgid "Please select any upgrades made to this Ultimaker 2." +msgstr "Selecione quaisquer atualizações realizadas a esta Ultimaker 2." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:45 +msgctxt "@label" +msgid "Olsson Block" +msgstr "Bloco Olsson" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:27 +msgctxt "@title" +msgid "Build Plate Leveling" +msgstr "Nivelamento da placa de construção" + +#: /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 "Para assegurar uma boa qualidade das suas impressões, é agora possível ajustar a placa de construção. Quando clica em \"Avançar para a posição seguinte\", o bocal irá deslocar-se para as diferentes posições que podem ser ajustadas." + +#: /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 "Para cada posição, introduza um pedaço de papel debaixo do bocal e ajuste a altura da placa de construção da impressão. A altura da placa de construção da impressão está correta quando o papel ficar ligeiramente preso na ponta do bocal." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +msgctxt "@action:button" +msgid "Start Build Plate Leveling" +msgstr "Iniciar nivelamento da placa de construção" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +msgctxt "@action:button" +msgid "Move to Next Position" +msgstr "Avançar para posição seguinte" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:27 +msgctxt "@title" +msgid "Upgrade Firmware" +msgstr "Atualizar 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 "O firmware é a parte do software que é executada diretamente na sua impressora 3D. Este firmware controla os motores de passo, regula a temperatura e assegura o funcionamento da sua impressora." + +#: /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 "O firmware que é expedido com as novas impressoras funciona corretamente, mas as novas versões costumam ter mais funcionalidades e melhorias." + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:62 +msgctxt "@action:button" +msgid "Automatically upgrade Firmware" +msgstr "Atualizar firmware automaticamente" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:72 +msgctxt "@action:button" +msgid "Upload custom Firmware" +msgstr "Carregar firmware personalizado" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:83 +msgctxt "@title:window" +msgid "Select custom firmware" +msgstr "Selecionar firmware personalizado" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +msgctxt "@label" +msgid "Please select any upgrades made to this Ultimaker Original" +msgstr "Selecione quaisquer atualizações realizadas a esta Ultimaker Original" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +msgctxt "@label" +msgid "Heated Build Plate (official kit or self-built)" +msgstr "Placa de construção aquecida (kit oficial ou de construção própria)" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 +msgctxt "@title" +msgid "Check Printer" +msgstr "Verificar impressora" + +#: /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 "É recomendado efetuar algumas verificações de conformidade à sua Ultimaker. Pode ignorar este passo se souber que a sua máquina está funcional" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 +msgctxt "@action:button" +msgid "Start Printer Check" +msgstr "Iniciar verificação da impressora" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 +msgctxt "@label" +msgid "Connection: " +msgstr "Ligação: " + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 +msgctxt "@info:status" +msgid "Connected" +msgstr "Ligado" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 +msgctxt "@info:status" +msgid "Not connected" +msgstr "Não ligado" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 +msgctxt "@label" +msgid "Min endstop X: " +msgstr "X mín. de posição final: " + +#: /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 "Trabalhos" + +#: /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 "Não verificado" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 +msgctxt "@label" +msgid "Min endstop Y: " +msgstr "Y mín. de posição final: " + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 +msgctxt "@label" +msgid "Min endstop Z: " +msgstr "Z mín. de posição final: " + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 +msgctxt "@label" +msgid "Nozzle temperature check: " +msgstr "Verificação da temperatura do bocal: " + +#: /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 "Parar aquecimento" + +#: /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 "Iniciar aquecimento" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 +msgctxt "@label" +msgid "Build plate temperature check:" +msgstr "Verificação da temperatura da placa de construção:" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 +msgctxt "@info:status" +msgid "Checked" +msgstr "Verificado" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 +msgctxt "@label" +msgid "Everything is in order! You're done with your CheckUp." +msgstr "Está tudo em ordem! O seu exame está concluído." + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:88 +msgctxt "@label:MonitorStatus" +msgid "Not connected to a printer" +msgstr "Não ligado a uma impressora" + +#: /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:96 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 +msgctxt "@label:MonitorStatus" +msgid "In maintenance. Please check the printer" +msgstr "Em manutenção. Verifique a impressora" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 +msgctxt "@label:MonitorStatus" +msgid "Printing..." +msgstr "A imprimir..." + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 +msgctxt "@label:MonitorStatus" +msgid "Paused" +msgstr "Em pausa" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 +msgctxt "@label:MonitorStatus" +msgid "Preparing..." +msgstr "A preparar..." + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:111 +msgctxt "@label:MonitorStatus" +msgid "Please remove the print" +msgstr "Remova a impressão" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:237 +msgctxt "@label:" +msgid "Resume" +msgstr "Retomar" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +msgctxt "@label:" +msgid "Pause" +msgstr "Colocar em pausa" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +msgctxt "@label:" +msgid "Abort Print" +msgstr "Cancelar impressão" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +msgctxt "@window:title" +msgid "Abort print" +msgstr "Cancelar impressão" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +msgctxt "@label" +msgid "Are you sure you want to abort the print?" +msgstr "Tem a certeza de que deseja cancelar a impressão?" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "Eliminar ou manter as alterações" + +#: /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 "Personalizou algumas definições do perfil.\nGostaria de manter ou eliminar essas definições?" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "Definições do perfil" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "Predefinição" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "Personalizado" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:593 +msgctxt "@option:discardOrKeep" +msgid "Always ask me this" +msgstr "Perguntar sempre isto" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:594 +msgctxt "@option:discardOrKeep" +msgid "Discard and never ask again" +msgstr "Eliminar e não perguntar novamente" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:159 +#: /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" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "Eliminar" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "Manter" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "Criar novo perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:44 +msgctxt "@title" +msgid "Information" +msgstr "Informações" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:68 +msgctxt "@label" +msgid "Display Name" +msgstr "Apresentar nome" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:78 +msgctxt "@label" +msgid "Brand" +msgstr "Marca" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +msgctxt "@label" +msgid "Material Type" +msgstr "Tipo de material" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +msgctxt "@label" +msgid "Color" +msgstr "Cor" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +msgctxt "@label" +msgid "Properties" +msgstr "Propriedades" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +msgctxt "@label" +msgid "Density" +msgstr "Densidade" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +msgctxt "@label" +msgid "Diameter" +msgstr "Diâmetro" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +msgctxt "@label" +msgid "Filament Cost" +msgstr "Custo do filamento" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +msgctxt "@label" +msgid "Filament weight" +msgstr "Peso do filamento" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +msgctxt "@label" +msgid "Filament length" +msgstr "Comprimento do filamento" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +msgctxt "@label" +msgid "Cost per Meter" +msgstr "Custo por metro" + +#: /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 "Este material está associado a %1 e partilha algumas das suas propriedades." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:248 +msgctxt "@label" +msgid "Unlink Material" +msgstr "Desassociar material" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +msgctxt "@label" +msgid "Description" +msgstr "Descrição" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +msgctxt "@label" +msgid "Adhesion Information" +msgstr "Informações de aderência" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +msgctxt "@label" +msgid "Print settings" +msgstr "Definições de impressão" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:14 +msgctxt "@title:tab" +msgid "Setting Visibility" +msgstr "Visibilidade das definições" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:44 +msgctxt "@label:textbox" +msgid "Check all" +msgstr "Verificar tudo" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:40 +msgctxt "@info:status" +msgid "Calculated" +msgstr "Calculado" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:53 +msgctxt "@title:column" +msgid "Setting" +msgstr "Definição" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +msgctxt "@title:column" +msgid "Profile" +msgstr "Perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +msgctxt "@title:column" +msgid "Current" +msgstr "Atual" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +msgctxt "@title:column" +msgid "Unit" +msgstr "Unidade" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +msgctxt "@title:tab" +msgid "General" +msgstr "Geral" + +#: /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 "Idioma:" + +#: /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:219 +msgctxt "@label" +msgid "Theme:" +msgstr "Tema:" + +#: /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 "É necessário reiniciar a aplicação para que estas alterações sejam aplicadas." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 +msgctxt "@info:tooltip" +msgid "Slice automatically when changing settings." +msgstr "Segmentar automaticamente ao alterar as definições." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 +msgctxt "@option:check" +msgid "Slice automatically" +msgstr "Segmentar automaticamente" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 +msgctxt "@label" +msgid "Viewport behavior" +msgstr "Comportamento da janela" + +#: /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 "Realce a vermelho as áreas não suportadas do modelo. Sem suporte, estas áreas não serão impressas adequadamente." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 +msgctxt "@option:check" +msgid "Display overhang" +msgstr "Apresentar saliência" + +#: /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âmara de forma que o modelo fique no centro da visualização quando é selecionado um modelo" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:347 +msgctxt "@action:button" +msgid "Center camera when item is selected" +msgstr "Centrar câmara ao selecionar item" + +#: /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 de zoom predefinido do Cura deve ser invertido?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:361 +msgctxt "@action:button" +msgid "Invert the direction of camera zoom." +msgstr "Inverta a direção do zoom da câmara." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +msgctxt "@info:tooltip" +msgid "Should zooming move in the direction of the mouse?" +msgstr "O zoom deve deslocar-se na direção do rato?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:375 +msgctxt "@action:button" +msgid "Zoom toward mouse direction" +msgstr "Aplicar zoom na direção do rato" + +#: /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 na plataforma devem ser movidos para que deixem de se cruzar?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:389 +msgctxt "@option:check" +msgid "Ensure models are kept apart" +msgstr "Garantir que os modelos são mantidos afastados" + +#: /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 na plataforma devem ser movidos para baixo de forma a tocar na placa de construção?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:402 +msgctxt "@option:check" +msgid "Automatically drop models to the build plate" +msgstr "Baixar modelos automaticamente para a placa de construção" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:414 +msgctxt "@info:tooltip" +msgid "Show caution message in gcode reader." +msgstr "Mostrar mensagem de atenção no leitor de gcode." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:423 +msgctxt "@option:check" +msgid "Caution message in gcode reader" +msgstr "Mensagem de atenção no leitor de gcode" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:430 +msgctxt "@info:tooltip" +msgid "Should layer be forced into compatibility mode?" +msgstr "A camada deve ser forçada a entrar no modo de compatibilidade?" + +#: /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 visualização da camada (é necessário reiniciar)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:451 +msgctxt "@label" +msgid "Opening and saving files" +msgstr "Abrir e guardar ficheiros" + +#: /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 dimensionados até ao volume de construção se forem demasiado grandes?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:462 +msgctxt "@option:check" +msgid "Scale large models" +msgstr "Dimensionar modelos grandes" + +#: /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 parecer extremamente pequeno se, por exemplo, a sua unidade estiver em metros e não em milímetros. Estes modelos devem ser aumentados verticalmente?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +msgctxt "@option:check" +msgid "Scale extremely small models" +msgstr "Dimensionar modelos extremamente pequenos" + +#: /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 "Deve um prefixo com base no nome da impressora ser adicionado ao nome da tarefa de impressão automaticamente?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:490 +msgctxt "@option:check" +msgid "Add machine prefix to job name" +msgstr "Adicionar prefixo da máquina ao nome da tarefa" + +#: /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 "Deve ser apresentado um resumo ao guardar um ficheiro de projeto?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:503 +msgctxt "@option:check" +msgid "Show summary dialog when saving project" +msgstr "Mostrar caixa de diálogo de resumo ao guardar projeto" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:512 +msgctxt "@info:tooltip" +msgid "Default behavior when opening a project file" +msgstr "Comportamento predefinido ao abrir um ficheiro de projeto" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +msgctxt "@window:text" +msgid "Default behavior when opening a project file: " +msgstr "Comportamento predefinido ao abrir um ficheiro de projeto: " + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:533 +msgctxt "@option:openProject" +msgid "Always ask" +msgstr "Perguntar sempre" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:534 +msgctxt "@option:openProject" +msgid "Always open as a project" +msgstr "Abrir sempre como projeto" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:535 +msgctxt "@option:openProject" +msgid "Always import models" +msgstr "Importar sempre modelos" + +#: /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 tiver realizado alterações a um perfil e mudado para outro, será apresentada uma caixa de diálogo a perguntar se pretende manter as alterações. Caso contrário, pode escolher um comportamento predefinido, sendo que a caixa de diálogo nunca mais é apresentada." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 +msgctxt "@label" +msgid "Override Profile" +msgstr "Substituir perfil" + +#: /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:636 +msgctxt "@info:tooltip" +msgid "Should Cura check for updates when the program is started?" +msgstr "O Cura deve procurar atualizações quando o programa é iniciado?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 +msgctxt "@option:check" +msgid "Check for updates on start" +msgstr "Procurar atualizações ao iniciar" + +#: /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 "Devem os dados anónimos sobre a sua impressão ser enviados para a Ultimaker? Observe que não são enviados nem armazenados modelos, endereços IP ou outras informações que forneçam a identificação pessoal." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:656 +msgctxt "@option:check" +msgid "Send (anonymous) print information" +msgstr "Enviar informações de impressão (anónimas)" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 +msgctxt "@title:tab" +msgid "Printers" +msgstr "Impressoras" + +#: /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 "Ativar" + +#: /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 "Renomear" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 +msgctxt "@label" +msgid "Printer type:" +msgstr "Tipo de impressora:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:158 +msgctxt "@label" +msgid "Connection:" +msgstr "Ligação:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:164 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "A impressora não está ligada." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:170 +msgctxt "@label" +msgid "State:" +msgstr "Estado:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 +msgctxt "@label:MonitorStatus" +msgid "Waiting for someone to clear the build plate" +msgstr "A aguardar que alguém limpe a placa de construção" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 +msgctxt "@label:MonitorStatus" +msgid "Waiting for a printjob" +msgstr "A aguardar por uma tarefa de impressão" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +msgctxt "@title:tab" +msgid "Profiles" +msgstr "Perfis" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:29 +msgctxt "@label" +msgid "Protected profiles" +msgstr "Perfis protegidos" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:29 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Perfis personalizados" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:64 +msgctxt "@label" +msgid "Create" +msgstr "Criar" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:80 +msgctxt "@label" +msgid "Duplicate" +msgstr "Duplicar" + +#: /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 "Importar" + +#: /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 "Exportar" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:126 +msgctxt "@label %1 is printer name" +msgid "Printer: %1" +msgstr "Impressora: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:165 +msgctxt "@action:button" +msgid "Update profile with current settings/overrides" +msgstr "Atualizar perfil com as definições/substituições atuais" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:173 +msgctxt "@action:button" +msgid "Discard current changes" +msgstr "Eliminar alterações atuais" + +#: /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 "Este perfil utiliza as predefinições especificadas pela impressora, pelo que não tem quaisquer definições/substituições na lista a seguir." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:197 +msgctxt "@action:label" +msgid "Your current settings match the selected profile." +msgstr "As suas definições atuais correspondem ao perfil selecionado." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:215 +msgctxt "@title:tab" +msgid "Global Settings" +msgstr "Definições globais" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:258 +msgctxt "@title:window" +msgid "Rename Profile" +msgstr "Renomear perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:271 +msgctxt "@title:window" +msgid "Create Profile" +msgstr "Criar perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:285 +msgctxt "@title:window" +msgid "Duplicate Profile" +msgstr "Duplicar perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:299 +msgctxt "@window:title" +msgid "Import Profile" +msgstr "Importar perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:307 +msgctxt "@title:window" +msgid "Import Profile" +msgstr "Importar perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:335 +msgctxt "@title:window" +msgid "Export Profile" +msgstr "Exportar perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +msgctxt "@title:tab" +msgid "Materials" +msgstr "Materiais" + +#: /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 "Impressora: %1, %2: %3" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:120 +msgctxt "@action:label %1 is printer name" +msgid "Printer: %1" +msgstr "Impressora: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +msgctxt "@action:button" +msgid "Create" +msgstr "Criar" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +msgctxt "@action:button" +msgid "Duplicate" +msgstr "Duplicar" + +#: /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 "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 "Não foi possível importar o material %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 "Material %1 importado com êxito" + +#: /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 "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 "Falha ao exportar material para %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 "Material exportado com êxito para %1" + +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +msgctxt "@title:window" +msgid "Add Printer" +msgstr "Adicionar impressora" + +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +msgctxt "@label" +msgid "Printer Name:" +msgstr "Nome da impressora:" + +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +msgctxt "@action:button" +msgid "Add Printer" +msgstr "Adicionar impressora" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "Sobre o Cura" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43 +msgctxt "@label" +msgid "version: %1" +msgstr "versão: %1" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "Solução completa para impressão 3D por filamento fundido." + +#: /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 "O Cura foi desenvolvido pela Ultimaker B.V. em colaboração com a comunidade.\nO Cura tem o prazer de utilizar os seguintes projetos open source:" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "Interface gráfica do utilizador" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:119 +msgctxt "@label" +msgid "Application framework" +msgstr "Estrutura de aplicações" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:120 +msgctxt "@label" +msgid "GCode generator" +msgstr "Gerador de GCode" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:121 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "Biblioteca de comunicação interprocessual" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:123 +msgctxt "@label" +msgid "Programming language" +msgstr "Linguagem de programação" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:124 +msgctxt "@label" +msgid "GUI framework" +msgstr "Estrutura da GUI" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:125 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "Ligações de estrutura da GUI" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:126 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "Biblioteca de ligações C/C++" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:127 +msgctxt "@label" +msgid "Data interchange format" +msgstr "Formato de intercâmbio de dados" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:128 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "Biblioteca de apoio para computação científica" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:129 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "Biblioteca de apoio para cálculos mais rápidos" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:130 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "Biblioteca de apoio para processamento de ficheiros STL" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:131 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "Biblioteca de apoio para processamento de ficheiros 3MF" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 +msgctxt "@label" +msgid "Serial communication library" +msgstr "Biblioteca de comunicação em série" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "Biblioteca de deteção ZeroConf" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "Biblioteca de recortes de polígonos" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Biblioteca de HTTP Python" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 +msgctxt "@label" +msgid "Font" +msgstr "Tipo de letra" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 +msgctxt "@label" +msgid "SVG icons" +msgstr "Ícones SVG" + +#: /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:66 +msgctxt "@" +msgid "No Profile Available" +msgstr "Nenhum perfil disponível" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +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 valores de definição/substituição são diferentes dos valores armazenados no perfil.\n\nClique para abrir o gestor de perfis." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 +msgctxt "@label:textbox" +msgid "Search..." +msgstr "Procurar..." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +msgctxt "@action:menu" +msgid "Copy value to all extruders" +msgstr "Copiar valor para todas as extrusoras" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 +msgctxt "@action:menu" +msgid "Hide this setting" +msgstr "Ocultar esta definição" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +msgctxt "@action:menu" +msgid "Don't show this setting" +msgstr "Não mostrar esta definição" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +msgctxt "@action:menu" +msgid "Keep this setting visible" +msgstr "Manter esta definição visível" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +msgctxt "@action:menu" +msgid "Configure setting visiblity..." +msgstr "Configurar visibilidade da definição..." + +#: /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 "Algumas definições ocultas utilizam valores diferentes do respetivo valor normal calculado.\n\nClique para tornar estas definições visíveis." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +msgctxt "@label Header for list of settings." +msgid "Affects" +msgstr "Afeta" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +msgctxt "@label Header for list of settings." +msgid "Affected By" +msgstr "Afetado por" + +#: /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 "Esta definição é sempre partilhada entre todas as extrusoras. Ao alterá-la aqui, o valor será alterado para todas as extrusoras" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:160 +msgctxt "@label" +msgid "The value is resolved from per-extruder values " +msgstr "O valor é resolvido a partir de valores por extrusora " + +#: /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 "Esta definição tem um valor que é diferente do perfil.\n\nClique para restaurar o valor do perfil." + +#: /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 "Geralmente, esta definição é calculada, mas atualmente tem um valor absoluto definido.\n\nClique para restaurar o valor calculado." + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +msgctxt "@label:listbox" +msgid "Print Setup" +msgstr "Configuração de impressão" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +msgctxt "@label:listbox" +msgid "" +"Print Setup disabled\n" +"G-code files cannot be modified" +msgstr "Configuração de impressão desativada\nOs ficheiros G-code não podem ser modificados" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +msgctxt "@label Hours and minutes" +msgid "00h 00min" +msgstr "00h00min" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +msgctxt "@tooltip" +msgid "Time specification
    " +msgstr "Especificação de tempo
    " + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +msgctxt "@label" +msgid "Cost specification" +msgstr "Especificação de custos" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1 m" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1 g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +msgctxt "@label" +msgid "Total:" +msgstr "Total:" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +msgctxt "" +"@label Print estimates: m for meters, g for grams, %4 is currency and %3 is " +"print cost" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "%1 m/~ %2 g/~ %4 %3" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +msgctxt "@label Print estimates: m for meters, g for grams" +msgid "%1m / ~ %2g" +msgstr "%1 m/~ %2 g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +msgctxt "@tooltip" +msgid "" +"Recommended Print Setup

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

    Imprima com as definições recomendadas para a impressora, o material e a qualidade selecionados." + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 +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

    Imprima com controlo detalhado de cada etapa do processo de segmentação." + +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +msgctxt "@title:menuitem %1 is the automatically selected material" +msgid "Automatic: %1" +msgstr "Automático: %1" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "&Visualizar" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 +msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" +msgid "Automatic: %1" +msgstr "Automático: %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] "Imprimir modelo selecionado com:" +msgstr[1] "Imprimir modelos selecionados com:" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +msgctxt "@title:window" +msgid "Multiply Selected Model" +msgid_plural "Multiply Selected Models" +msgstr[0] "Multiplicar modelo selecionado" +msgstr[1] "Multiplicar modelos selecionados" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:108 +msgctxt "@label" +msgid "Number of Copies" +msgstr "Número de cópias" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +msgctxt "@title:menu menubar:file" +msgid "Open &Recent" +msgstr "Abrir &recente" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 +msgctxt "@info:status" +msgid "No printer connected" +msgstr "Nenhuma impressora ligada" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +msgctxt "@label" +msgid "Extruder" +msgstr "Extrusora" + +#: /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 "A temperatura-alvo da extremidade quente. A extremidade quente irá aquecer ou arrefecer até esta temperatura. Se esta opção for definida como 0, o aquecimento da extremidade quente será desligado." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:152 +msgctxt "@tooltip" +msgid "The current temperature of this extruder." +msgstr "A temperatura atual desta extrusora." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:188 +msgctxt "@tooltip" +msgid "The colour of the material in this extruder." +msgstr "A cor do material nesta extrusora." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 +msgctxt "@tooltip" +msgid "The material in this extruder." +msgstr "O material nesta extrusora." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 +msgctxt "@tooltip" +msgid "The nozzle inserted in this extruder." +msgstr "O bocal inserido nesta extrusora." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 +msgctxt "@label" +msgid "Build plate" +msgstr "Placa de construção" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 +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 desejada da base aquecida. A base irá aquecer ou arrefecer até esta temperatura. Se esta opção for definida como 0, o aquecimento da base será desligado." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:344 +msgctxt "@tooltip" +msgid "The current temperature of the heated bed." +msgstr "A temperatura atual da base aquecida." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 +msgctxt "@tooltip of temperature input" +msgid "The temperature to pre-heat the bed to." +msgstr "A temperatura de pré-aquecimento da base." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 +msgctxt "@button Cancel pre-heating" +msgid "Cancel" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 +msgctxt "@button" +msgid "Pre-heat" +msgstr "Pré-aquecer" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 +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 "Aqueça a base com antecedência antes da impressão. Pode continuar a ajustar a impressora durante o aquecimento e não precisará de esperar que a base aqueça quando estiver pronto para imprimir." + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:703 +msgctxt "@label" +msgid "Printer control" +msgstr "Controlo da impressora" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 +msgctxt "@label" +msgid "Jog Position" +msgstr "Posição de deslocação" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735 +msgctxt "@label" +msgid "X/Y" +msgstr "X/Y" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842 +msgctxt "@label" +msgid "Z" +msgstr "Z" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 +msgctxt "@label" +msgid "Jog Distance" +msgstr "Distância de deslocação" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018 +msgctxt "@label" +msgid "Active print" +msgstr "Impressão ativa" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 +msgctxt "@label" +msgid "Job Name" +msgstr "Nome da tarefa" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 +msgctxt "@label" +msgid "Printing Time" +msgstr "Tempo de impressão" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1035 +msgctxt "@label" +msgid "Estimated time left" +msgstr "Tempo restante estimado" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +msgctxt "@action:inmenu" +msgid "Toggle Fu&ll Screen" +msgstr "Alternar para e&crã inteiro" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +msgctxt "@action:inmenu menubar:edit" +msgid "&Undo" +msgstr "&Anular" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +msgctxt "@action:inmenu menubar:edit" +msgid "&Redo" +msgstr "&Refazer" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +msgctxt "@action:inmenu menubar:file" +msgid "&Quit" +msgstr "&Sair" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +msgctxt "@action:inmenu menubar:view" +msgid "&Reset camera position" +msgstr "&Repor posição da câmara" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu" +msgid "Configure Cura..." +msgstr "Configurar Cura..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:printer" +msgid "&Add Printer..." +msgstr "&Adicionar impressora..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +msgctxt "@action:inmenu menubar:printer" +msgid "Manage Pr&inters..." +msgstr "Gerir im&pressoras..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +msgctxt "@action:inmenu" +msgid "Manage Materials..." +msgstr "Gerir materiais..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:profile" +msgid "&Update profile with current settings/overrides" +msgstr "&Atualizar perfil com as definições/substituições atuais" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +msgctxt "@action:inmenu menubar:profile" +msgid "&Discard current changes" +msgstr "&Eliminar alterações atuais" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +msgctxt "@action:inmenu menubar:profile" +msgid "&Create profile from current settings/overrides..." +msgstr "&Criar perfil a partir das definições/substituições atuais..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 +msgctxt "@action:inmenu menubar:profile" +msgid "Manage Profiles..." +msgstr "Gerir perfis..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +msgctxt "@action:inmenu menubar:help" +msgid "Show Online &Documentation" +msgstr "Mostrar &documentação online" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +msgctxt "@action:inmenu menubar:help" +msgid "Report a &Bug" +msgstr "Reportar um &erro" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +msgctxt "@action:inmenu menubar:help" +msgid "&About..." +msgstr "&Sobre..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +msgctxt "@action:inmenu menubar:edit" +msgid "Delete &Selected Model" +msgid_plural "Delete &Selected Models" +msgstr[0] "Eliminar modelo &selecionado" +msgstr[1] "Eliminar modelos &selecionados" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 +msgctxt "@action:inmenu menubar:edit" +msgid "Center Selected Model" +msgid_plural "Center Selected Models" +msgstr[0] "Centrar modelo selecionado" +msgstr[1] "Centrar modelos selecionados" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 +msgctxt "@action:inmenu menubar:edit" +msgid "Multiply Selected Model" +msgid_plural "Multiply Selected Models" +msgstr[0] "Multiplicar modelo selecionado" +msgstr[1] "Multiplicar modelos selecionados" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +msgctxt "@action:inmenu" +msgid "Delete Model" +msgstr "Eliminar modelo" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +msgctxt "@action:inmenu" +msgid "Ce&nter Model on Platform" +msgstr "Ce&ntrar modelo na plataforma" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +msgctxt "@action:inmenu menubar:edit" +msgid "&Group Models" +msgstr "&Agrupar modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +msgctxt "@action:inmenu menubar:edit" +msgid "Ungroup Models" +msgstr "Desagrupar modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +msgctxt "@action:inmenu menubar:edit" +msgid "&Merge Models" +msgstr "&Unir modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +msgctxt "@action:inmenu" +msgid "&Multiply Model..." +msgstr "&Multiplicar modelo..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +msgctxt "@action:inmenu menubar:edit" +msgid "&Select All Models" +msgstr "&Selecionar todos os modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +msgctxt "@action:inmenu menubar:edit" +msgid "&Clear Build Plate" +msgstr "&Limpar placa de construção" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +msgctxt "@action:inmenu menubar:file" +msgid "Re&load All Models" +msgstr "Re&carregar todos os modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models" +msgstr "Dispor todos os modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange Selection" +msgstr "Dispor seleção" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +msgctxt "@action:inmenu menubar:edit" +msgid "Reset All Model Positions" +msgstr "Repor todas as posições de modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 +msgctxt "@action:inmenu menubar:edit" +msgid "Reset All Model &Transformations" +msgstr "Repor todas as &transformações de modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 +msgctxt "@action:inmenu menubar:file" +msgid "&Open File(s)..." +msgstr "&Abrir ficheiro(s)..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +msgctxt "@action:inmenu menubar:file" +msgid "&New Project..." +msgstr "&Novo projeto..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +msgctxt "@action:inmenu menubar:help" +msgid "Show Engine &Log..." +msgstr "Mostrar ®isto de motor..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +msgctxt "@action:inmenu menubar:help" +msgid "Show Configuration Folder" +msgstr "Mostrar pasta de configuração" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +msgctxt "@action:menu" +msgid "Configure setting visibility..." +msgstr "Configurar visibilidade das definições..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +msgctxt "@action:menu" +msgid "Browse plugins..." +msgstr "Procurar plug-ins..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +msgctxt "@action:menu" +msgid "Installed plugins..." +msgstr "Plug-ins instalados..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +msgctxt "@label:PrintjobStatus" +msgid "Please load a 3D model" +msgstr "Carregue um modelo 3D" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +msgctxt "@label:PrintjobStatus" +msgid "Ready to slice" +msgstr "Pronto para segmentar" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "A segmentar..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +msgctxt "@label:PrintjobStatus %1 is target operation" +msgid "Ready to %1" +msgstr "Pronto para %1" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +msgctxt "@label:PrintjobStatus" +msgid "Unable to Slice" +msgstr "Não é possível segmentar" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +msgctxt "@label:PrintjobStatus" +msgid "Slicing unavailable" +msgstr "Segmentação indisponível" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +msgctxt "@label:Printjob" +msgid "Prepare" +msgstr "Preparar" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +msgctxt "@label:Printjob" +msgid "Cancel" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +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:620 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "Abrir ficheiro(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 "Encontrámos um ou mais ficheiros de projeto nos ficheiros selecionados. Só é possível abrir um ficheiro de projeto de cada vez. Sugerimos que importe apenas modelos desses ficheiros. Deseja continuar?" + +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "Importar tudo como modelos" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +msgctxt "@title:window" +msgid "Ultimaker Cura" +msgstr "Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "&Ficheiro" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +msgctxt "@action:inmenu menubar:file" +msgid "&Save Selection to File" +msgstr "&Guardar seleção para ficheiro" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +msgctxt "@title:menu menubar:file" +msgid "Save &As..." +msgstr "Guardar &como..." + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +msgctxt "@title:menu menubar:file" +msgid "Save project" +msgstr "Guardar projeto" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "&Editar" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +msgctxt "@title:menu" +msgid "&View" +msgstr "&Visualizar" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +msgctxt "@title:menu" +msgid "&Settings" +msgstr "&Definições" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +msgctxt "@title:menu menubar:toplevel" +msgid "&Printer" +msgstr "&Impressora" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +msgctxt "@title:menu" +msgid "&Material" +msgstr "&Material" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +msgctxt "@title:menu" +msgid "&Profile" +msgstr "&Perfil" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "Definir como extrusora ativa" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "E&xtensões" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +msgctxt "@title:menu menubar:toplevel" +msgid "P&lugins" +msgstr "P&lug-ins" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "P&referências" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "&Ajuda" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +msgctxt "@action:button" +msgid "Open File" +msgstr "Abrir ficheiro" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +msgctxt "@title:tab" +msgid "Settings" +msgstr "Definições" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +msgctxt "@title:window" +msgid "New project" +msgstr "Novo projeto" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +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 a certeza de que deseja iniciar um novo projeto? Isto irá limpar a placa de construção e quaisquer definições não guardadas." + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 +msgctxt "@window:title" +msgid "Install Plugin" +msgstr "Instalar plug-in" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +msgctxt "@title:window" +msgid "Open File(s)" +msgstr "Abrir ficheiro(s)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +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 "Encontrámos um ou mais ficheiros G-Code nos ficheiros selecionados. Só é possível abrir um ficheiro G-Code de cada vez. Se pretender abrir um ficheiro G-code, selecione apenas um." + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +msgctxt "@title:window" +msgid "Save Project" +msgstr "Guardar projeto" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "Extrusora %1" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1 & material" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:242 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "Não mostrar resumo de projeto ao guardar novamente" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "Guardar" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 +msgctxt "@title:tab" +msgid "Prepare" +msgstr "Preparar" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 +msgctxt "@title:tab" +msgid "Monitor" +msgstr "Monitorizar" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +msgctxt "@label" +msgid "Layer Height" +msgstr "Altura da camada" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +msgctxt "@tooltip" +msgid "" +"A custom profile is currently active. To enable the quality slider, choose a " +"default quality profile in Custom tab" +msgstr "Está atualmente ativo um perfil personalizado. Para ativar o controlo de deslize de qualidade, escolha um perfil de qualidade predefinido no separador Personalizado" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +msgctxt "@label" +msgid "Print Speed" +msgstr "Velocidade de impressão" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +msgctxt "@label" +msgid "Slower" +msgstr "Mais lenta" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +msgctxt "@label" +msgid "Faster" +msgstr "Mais rápida" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +msgctxt "@tooltip" +msgid "" +"You have modified some profile settings. If you want to change these go to " +"custom mode." +msgstr "Algumas definições de perfil foram modificadas. Se pretender alterá-las, aceda ao modo personalizado." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +msgctxt "@label" +msgid "Infill" +msgstr "Preenchimento" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +msgctxt "@label" +msgid "" +"Gradual infill will gradually increase the amount of infill towards the top." +msgstr "O preenchimento gradual irá aumentar progressivamente a quantidade de preenchimento em direção ao topo." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 +msgctxt "@label" +msgid "Enable gradual" +msgstr "Ativar gradação" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +msgctxt "@label" +msgid "Generate Support" +msgstr "Gerar suporte" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +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 estruturas para suportar peças do modelo com saliências. Sem estas estruturas, essas peças desintegrar-se-iam durante a impressão." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 +msgctxt "@label" +msgid "Support Extruder" +msgstr "Extrusora de suporte" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +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 a extrusora a ser utilizada para suporte. Isto irá construir estruturas de suporte debaixo do modelo para impedir a flacidez do modelo ou a impressão em suspenso." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 +msgctxt "@label" +msgid "Build Plate Adhesion" +msgstr "Aderência à placa de construção" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +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 "Ativa a impressão de uma borda ou base reticular. Isto irá adicionar uma área plana em torno ou debaixo do seu objeto, o que facilitará o respetivo corte posteriormente." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 +msgctxt "@label" +msgid "" +"Need help improving your prints?
    Read the Ultimaker " +"Troubleshooting Guides" +msgstr "Precisa de ajuda para melhorar as suas impressões?
    Leia os Guias de resolução de problemas da Ultimaker" + +#: /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] "Imprimir modelo selecionado com %1" +msgstr[1] "Imprimir modelos selecionados com %1" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +msgctxt "@title:window" +msgid "Open project file" +msgstr "Abrir ficheiro de projeto" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +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 "Este é um ficheiro de projeto Cura. Gostaria de o abrir como um projeto ou importar os modelos a partir dele?" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@action:button" +msgid "Open as project" +msgstr "Abrir como projeto" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +msgctxt "@action:button" +msgid "Import models" +msgstr "Importar modelos" + +#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 +msgctxt "@title:window" +msgid "Engine Log" +msgstr "Registo de motor" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +msgctxt "@label" +msgid "Material" +msgstr "Material" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +msgctxt "@label" +msgid "Check compatibility" +msgstr "Verificar compatibilidade" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +msgctxt "@tooltip" +msgid "Click to check the material compatibility on Ultimaker.com." +msgstr "Clique para verificar a compatibilidade do material em Ultimaker.com." + +#: MachineSettingsAction/plugin.json +msgctxt "description" +msgid "" +"Provides a way to change machine settings (such as build volume, nozzle " +"size, etc)" +msgstr "Proporciona uma forma de alterar as definições da máquina (como o volume de construção, o tamanho do bocal etc.)" + +#: MachineSettingsAction/plugin.json +msgctxt "name" +msgid "Machine Settings action" +msgstr "Ação de definições da máquina" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "Fornece a visualização de raio X." + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "Visualização de raio X" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "Fornece suporte para ler ficheiros X3D." + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "Leitor de X3D" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes GCode to a file." +msgstr "Grava o GCode num ficheiro." + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "GCode Writer" +msgstr "Gravador de GCode" + +#: cura-god-mode-plugin/src/GodMode/plugin.json +msgctxt "description" +msgid "Dump the contents of all settings to a HTML file." +msgstr "Descarregar o conteúdo de todas as definições num ficheiro HTML." + +#: cura-god-mode-plugin/src/GodMode/plugin.json +msgctxt "name" +msgid "God Mode" +msgstr "Modo God" + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "description" +msgid "Accepts G-Code and sends them over WiFi to a Doodle3D WiFi-Box." +msgstr "Aceita G-Codes e envia-os por Wi-Fi para uma Wi-Fi box Doodle3D." + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "Wi-Fi box Doodle3D" + +#: ChangeLogPlugin/plugin.json +msgctxt "description" +msgid "Shows changes since latest checked version." +msgstr "Mostra as alterações efetuadas desde a última versão verificada." + +#: ChangeLogPlugin/plugin.json +msgctxt "name" +msgid "Changelog" +msgstr "Registo de alterações" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattend quality changes profile." +msgstr "Cria um perfil de alterações de qualidade aplanado." + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile flatener" +msgstr "Aplanador de perfis" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "" +"Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "Aceita G-Codes e envia-os para uma impressora. O plug-in também pode atualizar firmware." + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "Impressão através de USB" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "Fornece suporte de ligação da unidade amovível e suporte de gravação." + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +msgstr "Plug-in de dispositivo de saída da unidade amovível" + +#: UM3NetworkPrinting/plugin.json +msgctxt "description" +msgid "Manages network connections to Ultimaker 3 printers" +msgstr "Gere as ligações de rede com as impressoras Ultimaker 3" + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "Ligação de rede UM3" + +#: FirmwareUpdateChecker/plugin.json +msgctxt "description" +msgid "Checks for firmware updates." +msgstr "Procura atualizações de firmware." + +#: FirmwareUpdateChecker/plugin.json +msgctxt "name" +msgid "Firmware Update Checker" +msgstr "Verificador de atualizações de firmware" + +#: 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 "Oferece a possibilidade de abrir determinados ficheiros através do SolidWorks. Estes são posteriormente convertidos e carregados para o Cura" + +#: CuraSolidWorksPlugin/plugin.json +msgctxt "name" +msgid "SolidWorks Integration" +msgstr "SolidWorks Integration" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Fornece a visualização de simulação." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Visualização de simulação" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "Extensão que permite a utilização de scripts criados pelo utilizador para efeitos de pós-processamento" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "Pós-processamento" + +#: AutoSave/plugin.json +msgctxt "description" +msgid "Automatically saves Preferences, Machines and Profiles after changes." +msgstr "Guarda automaticamente preferências, máquinas e perfis após as alterações." + +#: AutoSave/plugin.json +msgctxt "name" +msgid "Auto Save" +msgstr "Guardar automaticamente" + +#: SliceInfoPlugin/plugin.json +msgctxt "description" +msgid "Submits anonymous slice info. Can be disabled through preferences." +msgstr "Envia informações de segmentação anónimas. Pode ser desativado nas preferências." + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "Informações de segmentação" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "Fornece capacidades para ler e gravar perfis de material com base em XML." + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "Perfis de material" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "Fornece suporte para importar perfis de versões legadas do Cura." + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "Leitor de perfis legados do Cura" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "Fornece suporte para importar perfis de ficheiros g-code." + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "GCode Profile Reader" +msgstr "Leitor de perfis GCode" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "Atualiza as configurações do Cura 2.5 para o Cura 2.6." + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.5 to 2.6" +msgstr "Atualização da versão 2.5 para 2.6" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.7 to Cura 3.0." +msgstr "Atualiza as configurações do Cura 2.7 para o Cura 3.0." + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "Atualização da versão 2.7 para 3.0" + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." +msgstr "Atualiza as configurações do Cura 3.0 para o Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.0 to 3.1" +msgstr "Atualização da versão 3.0 para 3.1" + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." +msgstr "Atualiza as configurações do Cura 2.6 para o Cura 2.7." + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "Atualização da versão 2.6 para 2.7" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "Atualiza as configurações do Cura 2.1 para o Cura 2.2." + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "Atualização da versão 2.1 para 2.2" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "Atualiza as configurações do Cura 2.2 para o Cura 2.4." + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "Atualização da versão 2.2 para 2.4" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "Permite gerar geometria imprimível a partir de ficheiros de imagem 2D." + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "Leitor de imagens" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "Fornece a hiperligação para o back-end de segmentação do CuraEngine." + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "Back-end do CuraEngine" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "Fornece as definições por modelo." + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "Ferramenta de definições por modelo" + +#: cura-siemensnx-plugin/plugin.json +msgctxt "description" +msgid "Helps you to install an 'export to Cura' button in Siemens NX." +msgstr "Ajuda a instalar um botão \"Exportar para o Cura\" no Siemens NX." + +#: cura-siemensnx-plugin/plugin.json +msgctxt "name" +msgid "Siemens NX Integration" +msgstr "Siemens NX Integration" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "Fornece suporte para ler ficheiros 3MF." + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "Leitor de 3MF" + +#: PluginBrowser/plugin.json +msgctxt "description" +msgid "Find, manage and install new plugins." +msgstr "Procura, gere e instala novos plug-ins." + +#: PluginBrowser/plugin.json +msgctxt "name" +msgid "Plugin Browser" +msgstr "Browser de plug-ins" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "Fornece uma visualização de malha sólida normal." + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "Visualização sólida" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "Permite carregar e apresentar ficheiros G-code." + +#: GCodeReader/plugin.json +msgctxt "name" +msgid "G-code Reader" +msgstr "Leitor de G-code" + +#: CuraProfileWriter/plugin.json +msgctxt "description" +msgid "Provides support for exporting Cura profiles." +msgstr "Fornece suporte para exportar perfis Cura." + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Gravador de perfis Cura" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "Fornece suporte para gravar ficheiros 3MF." + +#: 3MFWriter/plugin.json +msgctxt "name" +msgid "3MF Writer" +msgstr "Gravador 3MF" + +#: UserAgreementPlugin/plugin.json +msgctxt "description" +msgid "Ask the user once if he/she agrees with our license" +msgstr "Pergunta uma vez ao utilizador se concorda com a nossa licença" + +#: UserAgreementPlugin/plugin.json +msgctxt "name" +msgid "UserAgreement" +msgstr "Contrato do utilizador" + +#: UltimakerMachineActions/plugin.json +msgctxt "description" +msgid "" +"Provides machine actions for Ultimaker machines (such as bed leveling " +"wizard, selecting upgrades, etc)" +msgstr "Fornece ações automáticas para as máquinas Ultimaker (como assistentes de nivelamento da base, seleção de atualizações etc.)" + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Ações automáticas da Ultimaker" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "Fornece suporte para importar perfis Cura." + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Leitor de perfis Cura" diff --git a/resources/i18n/pt_PT/fdmextruder.def.json.po b/resources/i18n/pt_PT/fdmextruder.def.json.po new file mode 100644 index 0000000000..852fe4d562 --- /dev/null +++ b/resources/i18n/pt_PT/fdmextruder.def.json.po @@ -0,0 +1,210 @@ +# Cura JSON setting files +# 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 3.1\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" +"PO-Revision-Date: 2017-12-07 13:41+0100\n" +"Last-Translator: Bothof \n" +"Language-Team: Bothof\n" +"Language: pt_PT\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" + +#: fdmextruder.def.json +msgctxt "machine_settings label" +msgid "Machine" +msgstr "Máquina" + +#: fdmextruder.def.json +msgctxt "machine_settings description" +msgid "Machine specific settings" +msgstr "Definições específicas da máquina" + +#: fdmextruder.def.json +msgctxt "extruder_nr label" +msgid "Extruder" +msgstr "Extrusora" + +#: fdmextruder.def.json +msgctxt "extruder_nr description" +msgid "The extruder train used for printing. This is used in multi-extrusion." +msgstr "A máquina extrusora utilizada para imprimir. Esta é utilizada em extrusões múltiplas." + +#: fdmextruder.def.json +msgctxt "machine_nozzle_id label" +msgid "Nozzle ID" +msgstr "ID do bocal" + +#: fdmextruder.def.json +msgctxt "machine_nozzle_id description" +msgid "The nozzle ID for an extruder train, such as \"AA 0.4\" and \"BB 0.8\"." +msgstr "A ID do bocal para uma máquina de extrusão, tal como \"AA 0.4\" e \"BB 0.8\"." + +#: fdmextruder.def.json +msgctxt "machine_nozzle_size label" +msgid "Nozzle Diameter" +msgstr "Diâmetro do bocal" + +#: fdmextruder.def.json +msgctxt "machine_nozzle_size description" +msgid "" +"The inner diameter of the nozzle. Change this setting when using a non-" +"standard nozzle size." +msgstr "O diâmetro interno do bocal. Altere esta definição ao utilizar um tamanho de bocal não convencional." + +#: fdmextruder.def.json +msgctxt "machine_nozzle_offset_x label" +msgid "Nozzle X Offset" +msgstr "Desvio X do bocal" + +#: fdmextruder.def.json +msgctxt "machine_nozzle_offset_x description" +msgid "The x-coordinate of the offset of the nozzle." +msgstr "A coordenada X do desvio do bocal." + +#: fdmextruder.def.json +msgctxt "machine_nozzle_offset_y label" +msgid "Nozzle Y Offset" +msgstr "Desvio Y do bocal" + +#: fdmextruder.def.json +msgctxt "machine_nozzle_offset_y description" +msgid "The y-coordinate of the offset of the nozzle." +msgstr "A coordenada Y do desvio do bocal." + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_code label" +msgid "Extruder Start G-Code" +msgstr "G-Code inicial da extrusora" + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_code description" +msgid "Start g-code to execute whenever turning the extruder on." +msgstr "G-Code inicial a ser executado sempre que a extrusora for ligada." + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_pos_abs label" +msgid "Extruder Start Position Absolute" +msgstr "Posição inicial absoluta da extrusora" + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_pos_abs description" +msgid "" +"Make the extruder starting position absolute rather than relative to the " +"last-known location of the head." +msgstr "Torne a posição inicial da extrusora absoluta em vez de relativa à última posição conhecida da cabeça." + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_pos_x label" +msgid "Extruder Start Position X" +msgstr "X da posição inicial da extrusora" + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_pos_x description" +msgid "The x-coordinate of the starting position when turning the extruder on." +msgstr "A coordenada X da posição inicial ao ligar a extrusora." + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_pos_y label" +msgid "Extruder Start Position Y" +msgstr "Y da posição inicial da extrusora" + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_pos_y description" +msgid "The y-coordinate of the starting position when turning the extruder on." +msgstr "A coordenada Y da posição inicial ao ligar a extrusora." + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_code label" +msgid "Extruder End G-Code" +msgstr "G-Code final da extrusora" + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_code description" +msgid "End g-code to execute whenever turning the extruder off." +msgstr "G-Code final a ser executado sempre que a extrusora for desligada." + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_pos_abs label" +msgid "Extruder End Position Absolute" +msgstr "Posição final absoluta da extrusora" + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_pos_abs description" +msgid "" +"Make the extruder ending position absolute rather than relative to the last-" +"known location of the head." +msgstr "Torne a posição final da extrusora absoluta em vez de relativa à última localização conhecida da cabeça." + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_pos_x label" +msgid "Extruder End Position X" +msgstr "X da posição final da extrusora" + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_pos_x description" +msgid "The x-coordinate of the ending position when turning the extruder off." +msgstr "A coordenada X da posição final ao desligar a extrusora." + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_pos_y label" +msgid "Extruder End Position Y" +msgstr "Y da posição final da extrusora" + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_pos_y description" +msgid "The y-coordinate of the ending position when turning the extruder off." +msgstr "A coordenada Y da posição final ao desligar a extrusora." + +#: fdmextruder.def.json +msgctxt "extruder_prime_pos_z label" +msgid "Extruder Prime Z Position" +msgstr "Posição Z de preparação da extrusora" + +#: fdmextruder.def.json +msgctxt "extruder_prime_pos_z description" +msgid "" +"The Z coordinate of the position where the nozzle primes at the start of " +"printing." +msgstr "A coordenada Z da posição de preparação do bocal ao iniciar a impressão." + +#: fdmextruder.def.json +msgctxt "platform_adhesion label" +msgid "Build Plate Adhesion" +msgstr "Aderência à placa de construção" + +#: fdmextruder.def.json +msgctxt "platform_adhesion description" +msgid "Adhesion" +msgstr "Aderência" + +#: fdmextruder.def.json +msgctxt "extruder_prime_pos_x label" +msgid "Extruder Prime X Position" +msgstr "Posição X de preparação da extrusora" + +#: fdmextruder.def.json +msgctxt "extruder_prime_pos_x description" +msgid "" +"The X coordinate of the position where the nozzle primes at the start of " +"printing." +msgstr "A coordenada X da posição de preparação do bocal ao iniciar a impressão." + +#: fdmextruder.def.json +msgctxt "extruder_prime_pos_y label" +msgid "Extruder Prime Y Position" +msgstr "Posição Y de preparação da extrusora" + +#: 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 "A coordenada Y da posição de preparação do bocal ao iniciar a impressão." diff --git a/resources/i18n/pt_PT/fdmprinter.def.json.po b/resources/i18n/pt_PT/fdmprinter.def.json.po new file mode 100644 index 0000000000..d7385d9584 --- /dev/null +++ b/resources/i18n/pt_PT/fdmprinter.def.json.po @@ -0,0 +1,5814 @@ +# Cura JSON setting files +# 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 3.1\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" +"PO-Revision-Date: 2017-12-07 13:41+0100\n" +"Last-Translator: Bothof \n" +"Language-Team: Bothof\n" +"Language: pt_PT\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" + +#: fdmprinter.def.json +msgctxt "machine_settings label" +msgid "Machine" +msgstr "Máquina" + +#: fdmprinter.def.json +msgctxt "machine_settings description" +msgid "Machine specific settings" +msgstr "Definições específicas da máquina" + +#: fdmprinter.def.json +msgctxt "machine_name label" +msgid "Machine Type" +msgstr "Tipo de máquina" + +#: fdmprinter.def.json +msgctxt "machine_name description" +msgid "The name of your 3D printer model." +msgstr "O nome do seu modelo de impressora 3D." + +#: fdmprinter.def.json +msgctxt "machine_show_variants label" +msgid "Show Machine Variants" +msgstr "Mostrar variantes da máquina" + +#: fdmprinter.def.json +msgctxt "machine_show_variants description" +msgid "" +"Whether to show the different variants of this machine, which are described " +"in separate json files." +msgstr "Mostrar ou não as diferentes variantes desta máquina, as quais são descritas em ficheiros json separados." + +#: fdmprinter.def.json +msgctxt "machine_start_gcode label" +msgid "Start GCode" +msgstr "GCode inicial" + +#: fdmprinter.def.json +msgctxt "machine_start_gcode description" +msgid "" +"Gcode commands to be executed at the very start - separated by \n" +"." +msgstr "Comandos Gcode a serem executados no início – separados por \n." + +#: fdmprinter.def.json +msgctxt "machine_end_gcode label" +msgid "End GCode" +msgstr "GCode final" + +#: fdmprinter.def.json +msgctxt "machine_end_gcode description" +msgid "" +"Gcode commands to be executed at the very end - separated by \n" +"." +msgstr "Comandos Gcode a serem executados no fim – separados por \n." + +#: fdmprinter.def.json +msgctxt "material_guid label" +msgid "Material GUID" +msgstr "GUID de material" + +#: fdmprinter.def.json +msgctxt "material_guid description" +msgid "GUID of the material. This is set automatically. " +msgstr "GUID do material. Isto é definido automaticamente. " + +#: fdmprinter.def.json +msgctxt "material_bed_temp_wait label" +msgid "Wait for Build Plate Heatup" +msgstr "Aguardar pelo aquecimento da placa de construção" + +#: fdmprinter.def.json +msgctxt "material_bed_temp_wait description" +msgid "" +"Whether to insert a command to wait until the build plate temperature is " +"reached at the start." +msgstr "Introduzir ou não um comando para aguardar até que a temperatura da placa de construção seja atingida durante o arranque." + +#: fdmprinter.def.json +msgctxt "material_print_temp_wait label" +msgid "Wait for Nozzle Heatup" +msgstr "Aguardar pelo aquecimento do bocal" + +#: fdmprinter.def.json +msgctxt "material_print_temp_wait description" +msgid "Whether to wait until the nozzle temperature is reached at the start." +msgstr "Aguardar ou não até que a temperatura do bocal seja atingida durante o arranque." + +#: fdmprinter.def.json +msgctxt "material_print_temp_prepend label" +msgid "Include Material Temperatures" +msgstr "Incluir temperaturas do material" + +#: fdmprinter.def.json +msgctxt "material_print_temp_prepend description" +msgid "" +"Whether to include nozzle temperature commands at the start of the gcode. " +"When the start_gcode already contains nozzle temperature commands Cura " +"frontend will automatically disable this setting." +msgstr "Incluir ou não os comandos de temperatura do bocal no início do gcode. Se o gcode_inicial já contiver os comandos de temperatura do bocal, o front-end do Cura desativará automaticamente esta definição." + +#: fdmprinter.def.json +msgctxt "material_bed_temp_prepend label" +msgid "Include Build Plate Temperature" +msgstr "Incluir temperatura da placa de construção" + +#: fdmprinter.def.json +msgctxt "material_bed_temp_prepend description" +msgid "" +"Whether to include build plate temperature commands at the start of the " +"gcode. When the start_gcode already contains build plate temperature " +"commands Cura frontend will automatically disable this setting." +msgstr "Incluir ou não os comandos de temperatura da placa de construção no início do gcode. Se o gcode_inicial já contiver os comandos de temperatura da placa de construção, o front-end do Cura desativará automaticamente esta definição." + +#: fdmprinter.def.json +msgctxt "machine_width label" +msgid "Machine Width" +msgstr "Largura da máquina" + +#: fdmprinter.def.json +msgctxt "machine_width description" +msgid "The width (X-direction) of the printable area." +msgstr "A largura (direção X) da área de impressão." + +#: fdmprinter.def.json +msgctxt "machine_depth label" +msgid "Machine Depth" +msgstr "Profundidade da máquina" + +#: fdmprinter.def.json +msgctxt "machine_depth description" +msgid "The depth (Y-direction) of the printable area." +msgstr "A profundidade (direção Y) da área de impressão." + +#: fdmprinter.def.json +msgctxt "machine_shape label" +msgid "Build Plate Shape" +msgstr "Forma da placa de construção" + +#: fdmprinter.def.json +msgctxt "machine_shape description" +msgid "" +"The shape of the build plate without taking unprintable areas into account." +msgstr "A forma da placa de construção sem ter em consideração as áreas não imprimíveis." + +#: fdmprinter.def.json +msgctxt "machine_shape option rectangular" +msgid "Rectangular" +msgstr "Retangular" + +#: fdmprinter.def.json +msgctxt "machine_shape option elliptic" +msgid "Elliptic" +msgstr "Elíptica" + +#: fdmprinter.def.json +msgctxt "machine_height label" +msgid "Machine Height" +msgstr "Altura da máquina" + +#: fdmprinter.def.json +msgctxt "machine_height description" +msgid "The height (Z-direction) of the printable area." +msgstr "A altura (direção Z) da área de impressão." + +#: fdmprinter.def.json +msgctxt "machine_heated_bed label" +msgid "Has Heated Build Plate" +msgstr "Contém placa de construção aquecida" + +#: fdmprinter.def.json +msgctxt "machine_heated_bed description" +msgid "Whether the machine has a heated build plate present." +msgstr "Se a máquina contém ou não uma placa de construção aquecida." + +#: fdmprinter.def.json +msgctxt "machine_center_is_zero label" +msgid "Is Center Origin" +msgstr "O centro é a origem" + +#: fdmprinter.def.json +msgctxt "machine_center_is_zero description" +msgid "" +"Whether the X/Y coordinates of the zero position of the printer is at the " +"center of the printable area." +msgstr "Se as coordenadas X/Y da posição zero da impressora se encontram no centro da área de impressão." + +#: fdmprinter.def.json +msgctxt "machine_extruder_count label" +msgid "Number of Extruders" +msgstr "Número de extrusoras" + +#: fdmprinter.def.json +msgctxt "machine_extruder_count description" +msgid "" +"Number of extruder trains. An extruder train is the combination of a feeder, " +"bowden tube, and nozzle." +msgstr "Número de máquinas de extrusão. Uma máquina de extrusão é a combinação de um alimentador, de um tubo Bowden e de um bocal." + +#: fdmprinter.def.json +msgctxt "machine_nozzle_tip_outer_diameter label" +msgid "Outer nozzle diameter" +msgstr "Diâmetro externo do bocal" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_tip_outer_diameter description" +msgid "The outer diameter of the tip of the nozzle." +msgstr "O diâmetro externo da ponta do bocal." + +#: fdmprinter.def.json +msgctxt "machine_nozzle_head_distance label" +msgid "Nozzle length" +msgstr "Comprimento do bocal" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_head_distance description" +msgid "" +"The height difference between the tip of the nozzle and the lowest part of " +"the print head." +msgstr "A diferença de altura entre a ponta do bocal e o extremo inferior da cabeça de impressão." + +#: fdmprinter.def.json +msgctxt "machine_nozzle_expansion_angle label" +msgid "Nozzle angle" +msgstr "Ângulo do bocal" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_expansion_angle description" +msgid "" +"The angle between the horizontal plane and the conical part right above the " +"tip of the nozzle." +msgstr "O ângulo entre o plano horizontal e a peça cónica imediatamente acima da ponta do bocal." + +#: fdmprinter.def.json +msgctxt "machine_heat_zone_length label" +msgid "Heat zone length" +msgstr "Comprimento da zona de aquecimento" + +#: fdmprinter.def.json +msgctxt "machine_heat_zone_length description" +msgid "" +"The distance from the tip of the nozzle in which heat from the nozzle is " +"transferred to the filament." +msgstr "A distância a partir da ponta do bocal à qual o calor do bocal é transferido para o filamento." + +#: fdmprinter.def.json +msgctxt "machine_filament_park_distance label" +msgid "Filament Park Distance" +msgstr "Distância de estacionamento do filamento" + +#: fdmprinter.def.json +msgctxt "machine_filament_park_distance description" +msgid "" +"The distance from the tip of the nozzle where to park the filament when an " +"extruder is no longer used." +msgstr "A distância a partir da ponta do bocal à qual o filamento deve ser estacionado quando já não existe uma extrusora em utilização." + +#: fdmprinter.def.json +msgctxt "machine_nozzle_temp_enabled label" +msgid "Enable Nozzle Temperature Control" +msgstr "Ativar controlo de temperatura do bocal" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_temp_enabled description" +msgid "" +"Whether to control temperature from Cura. Turn this off to control nozzle " +"temperature from outside of Cura." +msgstr "Controlar ou não a temperatura a partir do Cura. Desative esta opção para controlar a temperatura do bocal a partir de fora do Cura." + +#: fdmprinter.def.json +msgctxt "machine_nozzle_heat_up_speed label" +msgid "Heat up speed" +msgstr "Velocidade de aquecimento" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_heat_up_speed description" +msgid "" +"The speed (°C/s) by which the nozzle heats up averaged over the window of " +"normal printing temperatures and the standby temperature." +msgstr "A velocidade média (°C/s) a que o bocal é aquecido calculada no intervalo entre as temperaturas normais de impressão e a temperatura de espera." + +#: fdmprinter.def.json +msgctxt "machine_nozzle_cool_down_speed label" +msgid "Cool down speed" +msgstr "Velocidade de arrefecimento" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_cool_down_speed description" +msgid "" +"The speed (°C/s) by which the nozzle cools down averaged over the window of " +"normal printing temperatures and the standby temperature." +msgstr "A velocidade média (°C/s) a que o bocal arrefece calculada no intervalo entre as temperaturas normais de impressão e a temperatura de espera." + +#: fdmprinter.def.json +msgctxt "machine_min_cool_heat_time_window label" +msgid "Minimal Time Standby Temperature" +msgstr "Tempo mínimo para temperatura de espera" + +#: fdmprinter.def.json +msgctxt "machine_min_cool_heat_time_window description" +msgid "" +"The minimal time an extruder has to be inactive before the nozzle is cooled. " +"Only when an extruder is not used for longer than this time will it be " +"allowed to cool down to the standby temperature." +msgstr "O tempo mínimo durante o qual uma extrusora tem de estar inativa antes de o bocal arrefecer. Apenas é permitido arrefecer até à temperatura de espera quando uma extrusora não for utilizada durante um período de tempo superior a este." + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor label" +msgid "Gcode flavour" +msgstr "Padrão de Gcode" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor description" +msgid "The type of gcode to be generated." +msgstr "O tipo de gcode a ser gerado." + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option RepRap (Marlin/Sprinter)" +msgid "Marlin" +msgstr "Marlin" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option RepRap (Volumetric)" +msgid "Marlin (Volumetric)" +msgstr "Marlin (volumétrico)" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option RepRap (RepRap)" +msgid "RepRap" +msgstr "RepRap" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option UltiGCode" +msgid "Ultimaker 2" +msgstr "Ultimaker 2" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option Griffin" +msgid "Griffin" +msgstr "Griffin" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option Makerbot" +msgid "Makerbot" +msgstr "Makerbot" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option BFB" +msgid "Bits from Bytes" +msgstr "Bits from Bytes" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option MACH3" +msgid "Mach3" +msgstr "Mach3" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option Repetier" +msgid "Repetier" +msgstr "Repetier" + +#: fdmprinter.def.json +msgctxt "machine_disallowed_areas label" +msgid "Disallowed areas" +msgstr "Áreas não permitidas" + +#: fdmprinter.def.json +msgctxt "machine_disallowed_areas description" +msgid "A list of polygons with areas the print head is not allowed to enter." +msgstr "Uma lista de polígonos com áreas onde a cabeça de impressão não pode entrar." + +#: fdmprinter.def.json +msgctxt "nozzle_disallowed_areas label" +msgid "Nozzle Disallowed Areas" +msgstr "Áreas não permitidas do bocal" + +#: fdmprinter.def.json +msgctxt "nozzle_disallowed_areas description" +msgid "A list of polygons with areas the nozzle is not allowed to enter." +msgstr "Uma lista de polígonos com áreas onde o bocal não pode entrar." + +#: fdmprinter.def.json +msgctxt "machine_head_polygon label" +msgid "Machine head polygon" +msgstr "Polígono da cabeça da máquina" + +#: fdmprinter.def.json +msgctxt "machine_head_polygon description" +msgid "A 2D silhouette of the print head (fan caps excluded)." +msgstr "Uma silhueta 2D da cabeça de impressão (excluindo as tampas da ventoinha)." + +#: fdmprinter.def.json +msgctxt "machine_head_with_fans_polygon label" +msgid "Machine head & Fan polygon" +msgstr "Polígono da cabeça e da ventoinha da máquina" + +#: fdmprinter.def.json +msgctxt "machine_head_with_fans_polygon description" +msgid "A 2D silhouette of the print head (fan caps included)." +msgstr "Uma silhueta 2D da cabeça de impressão (incluindo as tampas da ventoinha)." + +#: fdmprinter.def.json +msgctxt "gantry_height label" +msgid "Gantry height" +msgstr "Altura do pórtico" + +#: fdmprinter.def.json +msgctxt "gantry_height description" +msgid "" +"The height difference between the tip of the nozzle and the gantry system (X " +"and Y axes)." +msgstr "A diferença de altura entre a ponta do bocal e o sistema de pórtico (eixos X e Y)." + +#: fdmprinter.def.json +msgctxt "machine_nozzle_id label" +msgid "Nozzle ID" +msgstr "ID do bocal" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_id description" +msgid "The nozzle ID for an extruder train, such as \"AA 0.4\" and \"BB 0.8\"." +msgstr "A ID do bocal para uma máquina de extrusão, tal como \"AA 0.4\" e \"BB 0.8\"." + +#: fdmprinter.def.json +msgctxt "machine_nozzle_size label" +msgid "Nozzle Diameter" +msgstr "Diâmetro do bocal" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_size description" +msgid "" +"The inner diameter of the nozzle. Change this setting when using a non-" +"standard nozzle size." +msgstr "O diâmetro interno do bocal. Altere esta definição ao utilizar um tamanho de bocal não convencional." + +#: fdmprinter.def.json +msgctxt "machine_use_extruder_offset_to_offset_coords label" +msgid "Offset With Extruder" +msgstr "Desvio da extrusora" + +#: fdmprinter.def.json +msgctxt "machine_use_extruder_offset_to_offset_coords description" +msgid "Apply the extruder offset to the coordinate system." +msgstr "Aplique o desvio da extrusora ao sistema de coordenadas." + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_z label" +msgid "Extruder Prime Z Position" +msgstr "Posição Z de preparação da extrusora" + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_z description" +msgid "" +"The Z coordinate of the position where the nozzle primes at the start of " +"printing." +msgstr "A coordenada Z da posição de preparação do bocal ao iniciar a impressão." + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_abs label" +msgid "Absolute Extruder Prime Position" +msgstr "Posição absoluta de preparação da extrusora" + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_abs description" +msgid "" +"Make the extruder prime position absolute rather than relative to the last-" +"known location of the head." +msgstr "Torne a posição de preparação da extrusora absoluta em vez de relativa à última posição conhecida da cabeça." + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_x label" +msgid "Maximum Speed X" +msgstr "Velocidade X máxima" + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_x description" +msgid "The maximum speed for the motor of the X-direction." +msgstr "A velocidade máxima do motor na direção X." + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_y label" +msgid "Maximum Speed Y" +msgstr "Velocidade Y máxima" + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_y description" +msgid "The maximum speed for the motor of the Y-direction." +msgstr "A velocidade máxima do motor na direção Y." + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_z label" +msgid "Maximum Speed Z" +msgstr "Velocidade Z máxima" + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_z description" +msgid "The maximum speed for the motor of the Z-direction." +msgstr "A velocidade máxima do motor na direção Z." + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_e label" +msgid "Maximum Feedrate" +msgstr "Velocidade máxima de alimentação" + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_e description" +msgid "The maximum speed of the filament." +msgstr "A velocidade máxima do filamento." + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_x label" +msgid "Maximum Acceleration X" +msgstr "Aceleração X máxima" + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_x description" +msgid "Maximum acceleration for the motor of the X-direction" +msgstr "A aceleração máxima do motor na direção X" + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_y label" +msgid "Maximum Acceleration Y" +msgstr "Aceleração Y máxima" + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_y description" +msgid "Maximum acceleration for the motor of the Y-direction." +msgstr "A aceleração máxima do motor na direção Y." + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_z label" +msgid "Maximum Acceleration Z" +msgstr "Aceleração Z máxima" + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_z description" +msgid "Maximum acceleration for the motor of the Z-direction." +msgstr "A aceleração máxima do motor na direção Z." + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_e label" +msgid "Maximum Filament Acceleration" +msgstr "Aceleração máxima do filamento" + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_e description" +msgid "Maximum acceleration for the motor of the filament." +msgstr "A aceleração máxima do motor do filamento." + +#: fdmprinter.def.json +msgctxt "machine_acceleration label" +msgid "Default Acceleration" +msgstr "Aceleração predefinida" + +#: fdmprinter.def.json +msgctxt "machine_acceleration description" +msgid "The default acceleration of print head movement." +msgstr "A aceleração predefinida do movimento da cabeça de impressão." + +#: fdmprinter.def.json +msgctxt "machine_max_jerk_xy label" +msgid "Default X-Y Jerk" +msgstr "Solavanco X-Y predefinido" + +#: fdmprinter.def.json +msgctxt "machine_max_jerk_xy description" +msgid "Default jerk for movement in the horizontal plane." +msgstr "O solavanco predefinido do movimento no plano horizontal." + +#: fdmprinter.def.json +msgctxt "machine_max_jerk_z label" +msgid "Default Z Jerk" +msgstr "Solavanco Z predefinido" + +#: fdmprinter.def.json +msgctxt "machine_max_jerk_z description" +msgid "Default jerk for the motor of the Z-direction." +msgstr "O solavanco predefinido do motor na direção Z." + +#: fdmprinter.def.json +msgctxt "machine_max_jerk_e label" +msgid "Default Filament Jerk" +msgstr "Solavanco predefinido do filamento" + +#: fdmprinter.def.json +msgctxt "machine_max_jerk_e description" +msgid "Default jerk for the motor of the filament." +msgstr "O solavanco predefinido do motor do filamento." + +#: fdmprinter.def.json +msgctxt "machine_minimum_feedrate label" +msgid "Minimum Feedrate" +msgstr "Velocidade mínima de alimentação" + +#: fdmprinter.def.json +msgctxt "machine_minimum_feedrate description" +msgid "The minimal movement speed of the print head." +msgstr "A velocidade mínima de movimento da cabeça de impressão." + +#: fdmprinter.def.json +msgctxt "resolution label" +msgid "Quality" +msgstr "Qualidade" + +#: fdmprinter.def.json +msgctxt "resolution description" +msgid "" +"All settings that influence the resolution of the print. These settings have " +"a large impact on the quality (and print time)" +msgstr "Todas as definições que influenciam a resolução da impressão. Estas definições têm um grande impacto na qualidade (e no tempo de impressão)." + +#: fdmprinter.def.json +msgctxt "layer_height label" +msgid "Layer Height" +msgstr "Altura da camada" + +#: fdmprinter.def.json +msgctxt "layer_height description" +msgid "" +"The height of each layer in mm. Higher values produce faster prints in lower " +"resolution, lower values produce slower prints in higher resolution." +msgstr "A altura de cada camada em mm. Valores mais elevados produzem impressões mais rápidas com menor resolução e valores mais baixos produzem impressões mais lentas com maior resolução." + +#: fdmprinter.def.json +msgctxt "layer_height_0 label" +msgid "Initial Layer Height" +msgstr "Altura da camada inicial" + +#: fdmprinter.def.json +msgctxt "layer_height_0 description" +msgid "" +"The height of the initial layer in mm. A thicker initial layer makes " +"adhesion to the build plate easier." +msgstr "A altura da camada inicial em mm. Uma camada inicial mais espessa facilita a aderência à placa de construção." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Tolerância da segmentação" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "" +"How to slice layers with diagonal surfaces. The areas of a layer can be " +"generated based on where the middle of the layer intersects the surface " +"(Middle). Alternatively each layer can have the areas which fall inside of " +"the volume throughout the height of the layer (Exclusive) or a layer has the " +"areas which fall inside anywhere within the layer (Inclusive). Exclusive " +"retains the most details, Inclusive makes for the best fit and Middle takes " +"the least time to process." +msgstr "Como segmentar camadas com superfícies diagonais. As áreas de uma camada podem ser geradas com base no local onde o centro da camada se cruza com a superfície (Centro). Como alternativa, cada camada pode conter as áreas que se encontram no interior do volume da altura da camada (Exclusivo) ou as áreas que se encontram no interior de qualquer parte da camada (Inclusivo). A opção Exclusivo retém o maior número de detalhes, a opção Inclusivo garante o melhor ajuste e a opção Centro tem o menor tempo de processamento." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Centro" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Exclusivo" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Inclusivo" + +#: fdmprinter.def.json +msgctxt "line_width label" +msgid "Line Width" +msgstr "Largura da linha" + +#: fdmprinter.def.json +msgctxt "line_width description" +msgid "" +"Width of a single line. Generally, the width of each line should correspond " +"to the width of the nozzle. However, slightly reducing this value could " +"produce better prints." +msgstr "A largura de uma única linha. Normalmente, a largura de cada linha deve corresponder à largura do bocal. No entanto, reduzir ligeiramente este valor pode produzir melhores impressões." + +#: fdmprinter.def.json +msgctxt "wall_line_width label" +msgid "Wall Line Width" +msgstr "Largura da linha de parede" + +#: fdmprinter.def.json +msgctxt "wall_line_width description" +msgid "Width of a single wall line." +msgstr "A largura de uma única linha de parede." + +#: fdmprinter.def.json +msgctxt "wall_line_width_0 label" +msgid "Outer Wall Line Width" +msgstr "Largura da linha de parede externa" + +#: fdmprinter.def.json +msgctxt "wall_line_width_0 description" +msgid "" +"Width of the outermost wall line. By lowering this value, higher levels of " +"detail can be printed." +msgstr "A largura da linha de parede mais externa. Ao reduzir este valor, é possível imprimir com maior nível de detalhe." + +#: fdmprinter.def.json +msgctxt "wall_line_width_x label" +msgid "Inner Wall(s) Line Width" +msgstr "Largura da linha de parede(s) interna" + +#: fdmprinter.def.json +msgctxt "wall_line_width_x description" +msgid "" +"Width of a single wall line for all wall lines except the outermost one." +msgstr "A largura de uma única linha de parede para todas as linhas de parede exceto a mais externa." + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "Largura da linha de revestimento da superfície superior" + +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "A largura de uma única linha das áreas na parte superior da impressão." + +#: fdmprinter.def.json +msgctxt "skin_line_width label" +msgid "Top/Bottom Line Width" +msgstr "Largura da linha superior/inferior" + +#: fdmprinter.def.json +msgctxt "skin_line_width description" +msgid "Width of a single top/bottom line." +msgstr "A largura de uma única linha superior/inferior." + +#: fdmprinter.def.json +msgctxt "infill_line_width label" +msgid "Infill Line Width" +msgstr "Largura da linha de preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_line_width description" +msgid "Width of a single infill line." +msgstr "A largura de uma única linha de preenchimento." + +#: fdmprinter.def.json +msgctxt "skirt_brim_line_width label" +msgid "Skirt/Brim Line Width" +msgstr "Largura da linha de contorno/borda" + +#: fdmprinter.def.json +msgctxt "skirt_brim_line_width description" +msgid "Width of a single skirt or brim line." +msgstr "A largura de uma única linha de contorno ou borda." + +#: fdmprinter.def.json +msgctxt "support_line_width label" +msgid "Support Line Width" +msgstr "Largura da linha de suporte" + +#: fdmprinter.def.json +msgctxt "support_line_width description" +msgid "Width of a single support structure line." +msgstr "A largura de uma única linha de estrutura de suporte." + +#: fdmprinter.def.json +msgctxt "support_interface_line_width label" +msgid "Support Interface Line Width" +msgstr "Largura da linha da interface de suporte" + +#: fdmprinter.def.json +msgctxt "support_interface_line_width description" +msgid "Width of a single line of support roof or floor." +msgstr "A largura de uma única linha de piso ou teto de suporte." + +#: fdmprinter.def.json +msgctxt "support_roof_line_width label" +msgid "Support Roof Line Width" +msgstr "Largura da linha do teto de suporte" + +#: fdmprinter.def.json +msgctxt "support_roof_line_width description" +msgid "Width of a single support roof line." +msgstr "A largura de uma única linha de teto de suporte." + +#: fdmprinter.def.json +msgctxt "support_bottom_line_width label" +msgid "Support Floor Line Width" +msgstr "Largura da linha do piso de suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_line_width description" +msgid "Width of a single support floor line." +msgstr "A largura de uma única linha de piso de suporte." + +#: fdmprinter.def.json +msgctxt "prime_tower_line_width label" +msgid "Prime Tower Line Width" +msgstr "Largura da linha da torre de preparação" + +#: fdmprinter.def.json +msgctxt "prime_tower_line_width description" +msgid "Width of a single prime tower line." +msgstr "A largura de uma única linha da torre de preparação." + +#: fdmprinter.def.json +msgctxt "initial_layer_line_width_factor label" +msgid "Initial Layer Line Width" +msgstr "Largura da linha da camada inicial" + +#: fdmprinter.def.json +msgctxt "initial_layer_line_width_factor description" +msgid "" +"Multiplier of the line width on the first layer. Increasing this could " +"improve bed adhesion." +msgstr "Multiplicador da largura da linha na primeira camada. Aumentar a largura poderá melhorar a aderência à base." + +#: fdmprinter.def.json +msgctxt "shell label" +msgid "Shell" +msgstr "Cobertura" + +#: fdmprinter.def.json +msgctxt "shell description" +msgid "Shell" +msgstr "Cobertura" + +#: fdmprinter.def.json +msgctxt "wall_extruder_nr label" +msgid "Wall Extruder" +msgstr "Extrusora de parede" + +#: fdmprinter.def.json +msgctxt "wall_extruder_nr description" +msgid "" +"The extruder train used for printing the walls. This is used in multi-" +"extrusion." +msgstr "A máquina de extrusão utilizada para imprimir as paredes. Esta é utilizada em extrusões múltiplas." + +#: fdmprinter.def.json +msgctxt "wall_0_extruder_nr label" +msgid "Outer Wall Extruder" +msgstr "Extrusora de parede externa" + +#: fdmprinter.def.json +msgctxt "wall_0_extruder_nr description" +msgid "" +"The extruder train used for printing the outer wall. This is used in multi-" +"extrusion." +msgstr "A máquina de extrusão utilizada para imprimir a parede externa. Esta é utilizada em extrusões múltiplas." + +#: fdmprinter.def.json +msgctxt "wall_x_extruder_nr label" +msgid "Inner Wall Extruder" +msgstr "Extrusora de parede interna" + +#: fdmprinter.def.json +msgctxt "wall_x_extruder_nr description" +msgid "" +"The extruder train used for printing the inner walls. This is used in multi-" +"extrusion." +msgstr "A máquina de extrusão utilizada para imprimir as paredes internas. Esta é utilizada em extrusões múltiplas." + +#: fdmprinter.def.json +msgctxt "wall_thickness label" +msgid "Wall Thickness" +msgstr "Espessura das paredes" + +#: fdmprinter.def.json +msgctxt "wall_thickness description" +msgid "" +"The thickness of the walls in the horizontal direction. This value divided " +"by the wall line width defines the number of walls." +msgstr "A espessura das paredes na direção horizontal. Este valor, dividido pela largura da linha de parede, define o número de paredes." + +#: fdmprinter.def.json +msgctxt "wall_line_count label" +msgid "Wall Line Count" +msgstr "Contagem de linhas de parede" + +#: fdmprinter.def.json +msgctxt "wall_line_count description" +msgid "" +"The number of walls. When calculated by the wall thickness, this value is " +"rounded to a whole number." +msgstr "O número de paredes. Quando calculado através da espessura da parede, este valor é arredondado para um número inteiro." + +#: fdmprinter.def.json +msgctxt "wall_0_wipe_dist label" +msgid "Outer Wall Wipe Distance" +msgstr "Distância de limpeza da parede externa" + +#: fdmprinter.def.json +msgctxt "wall_0_wipe_dist description" +msgid "" +"Distance of a travel move inserted after the outer wall, to hide the Z seam " +"better." +msgstr "A distância de um movimento de deslocação inserido depois da parede externa para ocultar melhor a costura Z." + +#: fdmprinter.def.json +msgctxt "roofing_extruder_nr label" +msgid "Top Surface Skin Extruder" +msgstr "Extrusora de revestimento da superfície superior" + +#: fdmprinter.def.json +msgctxt "roofing_extruder_nr description" +msgid "" +"The extruder train used for printing the top most skin. This is used in " +"multi-extrusion." +msgstr "A máquina de extrusão utilizada para imprimir o revestimento superior. Esta é utilizada em extrusões múltiplas." + +#: fdmprinter.def.json +msgctxt "roofing_layer_count label" +msgid "Top Surface Skin Layers" +msgstr "Camadas de revestimento da superfície superior" + +#: fdmprinter.def.json +msgctxt "roofing_layer_count description" +msgid "" +"The number of top most skin layers. Usually only one top most layer is " +"sufficient to generate higher quality top surfaces." +msgstr "O número de camadas de revestimento superiores. Por norma, uma só camada superior é suficiente para gerar superfícies superiores de maior qualidade." + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "Padrão do revestimento da superfície superior" + +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "O padrão das camadas superiores." + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "Linhas" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "Direções da linha de revestimento da superfície superior" + +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "" +"A list of integer line directions to use when the top surface skin layers " +"use the lines or zig zag pattern. Elements from the list are used " +"sequentially as the layers progress and when the end of the list is reached, " +"it starts at the beginning again. The list items are separated by commas and " +"the whole list is contained in square brackets. Default is an empty list " +"which means use the traditional default angles (45 and 135 degrees)." +msgstr "Uma lista de valores inteiros relativos às direções de linha a utilizar quando as camadas de revestimento da superfície superior utilizarem o padrão de linhas ou ziguezague. Os elementos da lista são utilizados em sequência, à medida que as camadas progridem, voltando ao início assim que a lista chega ao fim. Os itens da lista são separados por vírgulas e a lista completa é disposta entre parênteses retos. A predefinição é uma lista vazia, cujas médias utilizam os ângulos predefinidos tradicionais (45 e 135 graus)." + +#: fdmprinter.def.json +msgctxt "top_bottom_extruder_nr label" +msgid "Top/Bottom Extruder" +msgstr "Extrusora superior/inferior" + +#: fdmprinter.def.json +msgctxt "top_bottom_extruder_nr description" +msgid "" +"The extruder train used for printing the top and bottom skin. This is used " +"in multi-extrusion." +msgstr "A máquina de extrusão utilizada para imprimir o revestimento superior e inferior. Esta é utilizada em extrusões múltiplas." + +#: fdmprinter.def.json +msgctxt "top_bottom_thickness label" +msgid "Top/Bottom Thickness" +msgstr "Espessura superior/inferior" + +#: fdmprinter.def.json +msgctxt "top_bottom_thickness description" +msgid "" +"The thickness of the top/bottom layers in the print. This value divided by " +"the layer height defines the number of top/bottom layers." +msgstr "A espessura das camadas superiores/inferiores na impressão. Este valor, dividido pela altura da camada, define o número de camadas superiores/inferiores." + +#: fdmprinter.def.json +msgctxt "top_thickness label" +msgid "Top Thickness" +msgstr "Espessura superior" + +#: fdmprinter.def.json +msgctxt "top_thickness description" +msgid "" +"The thickness of the top layers in the print. This value divided by the " +"layer height defines the number of top layers." +msgstr "A espessura das camadas superiores na impressão. Este valor, dividido pela altura da camada, define o número de camadas superiores." + +#: fdmprinter.def.json +msgctxt "top_layers label" +msgid "Top Layers" +msgstr "Camadas superiores" + +#: fdmprinter.def.json +msgctxt "top_layers description" +msgid "" +"The number of top layers. When calculated by the top thickness, this value " +"is rounded to a whole number." +msgstr "O número de camadas superiores. Quando calculado através da espessura superior, este valor é arredondado para um número inteiro." + +#: fdmprinter.def.json +msgctxt "bottom_thickness label" +msgid "Bottom Thickness" +msgstr "Espessura inferior" + +#: fdmprinter.def.json +msgctxt "bottom_thickness description" +msgid "" +"The thickness of the bottom layers in the print. This value divided by the " +"layer height defines the number of bottom layers." +msgstr "A espessura das camadas inferiores na impressão. Este valor, dividido pela altura da camada, define o número de camadas inferiores." + +#: fdmprinter.def.json +msgctxt "bottom_layers label" +msgid "Bottom Layers" +msgstr "Camadas inferiores" + +#: fdmprinter.def.json +msgctxt "bottom_layers description" +msgid "" +"The number of bottom layers. When calculated by the bottom thickness, this " +"value is rounded to a whole number." +msgstr "O número de camadas inferiores. Quando calculado pela espessura inferior, este valor é arredondado para um número inteiro." + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern label" +msgid "Top/Bottom Pattern" +msgstr "Padrão superior/inferior" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern description" +msgid "The pattern of the top/bottom layers." +msgstr "O padrão das camadas superiores/inferiores." + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern option lines" +msgid "Lines" +msgstr "Linhas" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern_0 label" +msgid "Bottom Pattern Initial Layer" +msgstr "Camada inicial de padrão inferior" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern_0 description" +msgid "The pattern on the bottom of the print on the first layer." +msgstr "O padrão na parte inferior da primeira camada." + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern_0 option lines" +msgid "Lines" +msgstr "Linhas" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern_0 option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern_0 option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "skin_angles label" +msgid "Top/Bottom Line Directions" +msgstr "Direções de linha superior/inferior" + +#: fdmprinter.def.json +msgctxt "skin_angles description" +msgid "" +"A list of integer line directions to use when the top/bottom layers use the " +"lines or zig zag pattern. Elements from the list are used sequentially as " +"the layers progress and when the end of the list is reached, it starts at " +"the beginning again. The list items are separated by commas and the whole " +"list is contained in square brackets. Default is an empty list which means " +"use the traditional default angles (45 and 135 degrees)." +msgstr "Uma lista de valores inteiros relativos às direções de linha a utilizar quando as camadas superiores/inferiores utilizarem o padrão de linhas ou ziguezague. Os elementos da lista são utilizados em sequência, à medida que as camadas progridem, voltando ao início assim que a lista chega ao fim. Os itens da lista são separados por vírgulas e a lista completa é disposta entre parênteses retos. A predefinição é uma lista vazia, cujas médias utilizam os ângulos predefinidos tradicionais (45 e 135 graus)." + +#: fdmprinter.def.json +msgctxt "wall_0_inset label" +msgid "Outer Wall Inset" +msgstr "Inserção de parede externa" + +#: fdmprinter.def.json +msgctxt "wall_0_inset description" +msgid "" +"Inset applied to the path of the outer wall. If the outer wall is smaller " +"than the nozzle, and printed after the inner walls, use this offset to get " +"the hole in the nozzle to overlap with the inner walls instead of the " +"outside of the model." +msgstr "Inserção aplicada à trajetória da parede externa. Se a parede externa for menor que o bocal e impressa depois das paredes internas, utilize este desvio para que o orifício do bocal se sobreponha às paredes internas e não ao exterior do modelo." + +#: fdmprinter.def.json +msgctxt "outer_inset_first label" +msgid "Outer Before Inner Walls" +msgstr "Paredes externas antes das internas" + +#: fdmprinter.def.json +msgctxt "outer_inset_first description" +msgid "" +"Prints walls in order of outside to inside when enabled. This can help " +"improve dimensional accuracy in X and Y when using a high viscosity plastic " +"like ABS; however it can decrease outer surface print quality, especially on " +"overhangs." +msgstr "Quando ativado, imprime paredes do exterior para o interior. Isto pode ajudar a melhorar a precisão dimensional em X e Y ao utilizar um plástico de alta viscosidade, como o ABS; no entanto, pode diminuir a qualidade de impressão da superfície externa, especialmente em saliências." + +#: fdmprinter.def.json +msgctxt "alternate_extra_perimeter label" +msgid "Alternate Extra Wall" +msgstr "Alternar parede adicional" + +#: fdmprinter.def.json +msgctxt "alternate_extra_perimeter description" +msgid "" +"Prints an extra wall at every other layer. This way infill gets caught " +"between these extra walls, resulting in stronger prints." +msgstr "Imprime uma parede adicional em camadas alternadas. Deste modo, o preenchimento é capturado entre estas paredes adicionais, resultando em impressões mais robustas." + +#: fdmprinter.def.json +msgctxt "travel_compensate_overlapping_walls_enabled label" +msgid "Compensate Wall Overlaps" +msgstr "Compensar sobreposição de paredes" + +#: fdmprinter.def.json +msgctxt "travel_compensate_overlapping_walls_enabled description" +msgid "" +"Compensate the flow for parts of a wall being printed where there is already " +"a wall in place." +msgstr "Compensa o fluxo de peças de uma parede a ser impressa onde já existe uma parede." + +#: fdmprinter.def.json +msgctxt "travel_compensate_overlapping_walls_0_enabled label" +msgid "Compensate Outer Wall Overlaps" +msgstr "Compensar sobreposição de paredes externas" + +#: fdmprinter.def.json +msgctxt "travel_compensate_overlapping_walls_0_enabled description" +msgid "" +"Compensate the flow for parts of an outer wall being printed where there is " +"already a wall in place." +msgstr "Compensa o fluxo de peças de uma parede externa a ser impressa onde já existe uma parede." + +#: fdmprinter.def.json +msgctxt "travel_compensate_overlapping_walls_x_enabled label" +msgid "Compensate Inner Wall Overlaps" +msgstr "Compensar sobreposição de paredes internas" + +#: fdmprinter.def.json +msgctxt "travel_compensate_overlapping_walls_x_enabled description" +msgid "" +"Compensate the flow for parts of an inner wall being printed where there is " +"already a wall in place." +msgstr "Compensa o fluxo de peças de uma parede interna a ser impressa onde já existe uma parede." + +#: fdmprinter.def.json +msgctxt "fill_perimeter_gaps label" +msgid "Fill Gaps Between Walls" +msgstr "Preencher folgas entre paredes" + +#: fdmprinter.def.json +msgctxt "fill_perimeter_gaps description" +msgid "Fills the gaps between walls where no walls fit." +msgstr "Preenche as folgas entre paredes onde não é possível instalar paredes." + +#: fdmprinter.def.json +msgctxt "fill_perimeter_gaps option nowhere" +msgid "Nowhere" +msgstr "Em lado nenhum" + +#: fdmprinter.def.json +msgctxt "fill_perimeter_gaps option everywhere" +msgid "Everywhere" +msgstr "Em todo o lado" + +#: fdmprinter.def.json +msgctxt "fill_outline_gaps label" +msgid "Print Thin Walls" +msgstr "Imprimir paredes finas" + +#: fdmprinter.def.json +msgctxt "fill_outline_gaps description" +msgid "" +"Print pieces of the model which are horizontally thinner than the nozzle " +"size." +msgstr "Imprime peças do modelo que são horizontalmente mais finas do que o tamanho do bocal." + +#: fdmprinter.def.json +msgctxt "xy_offset label" +msgid "Horizontal Expansion" +msgstr "Expansão horizontal" + +#: fdmprinter.def.json +msgctxt "xy_offset description" +msgid "" +"Amount of offset applied to all polygons in each layer. Positive values can " +"compensate for too big holes; negative values can compensate for too small " +"holes." +msgstr "Quantidade de desvio aplicado a todos os polígonos em cada camada. Os valores positivos podem compensar orifícios demasiado grandes; os valores negativos podem compensar orifícios demasiado pequenos." + +#: fdmprinter.def.json +msgctxt "xy_offset_layer_0 label" +msgid "Initial Layer Horizontal Expansion" +msgstr "Expansão horizontal da camada inicial" + +#: fdmprinter.def.json +msgctxt "xy_offset_layer_0 description" +msgid "" +"Amount of offset applied to all polygons in the first layer. A negative " +"value can compensate for squishing of the first layer known as \"elephant's " +"foot\"." +msgstr "Quantidade de desvio aplicado a todos os polígonos na primeira camada. Um valor negativo pode compensar o esmagamento da primeira camada, conhecido como o \"pé de elefante\"." + +#: fdmprinter.def.json +msgctxt "z_seam_type label" +msgid "Z Seam Alignment" +msgstr "Alinhamento da costura Z" + +#: fdmprinter.def.json +msgctxt "z_seam_type description" +msgid "" +"Starting point of each path in a layer. When paths in consecutive layers " +"start at the same point a vertical seam may show on the print. When aligning " +"these near a user specified location, the seam is easiest to remove. When " +"placed randomly the inaccuracies at the paths' start will be less " +"noticeable. When taking the shortest path the print will be quicker." +msgstr "Ponto inicial de cada trajetória numa camada. Quando as trajetórias das camadas consecutivas começam no mesmo ponto, pode ser apresentada uma costura vertical na impressão. Ao alinhá-las próximo a uma posição especificada pelo utilizador, é mais fácil remover a costura. Quando dispostas aleatoriamente, as imprecisões no início das trajetórias serão menos percetíveis. Ao adotar a trajetória mais curta, a impressão será mais rápida." + +#: fdmprinter.def.json +msgctxt "z_seam_type option back" +msgid "User Specified" +msgstr "Especificado pelo utilizador" + +#: fdmprinter.def.json +msgctxt "z_seam_type option shortest" +msgid "Shortest" +msgstr "Mais curto" + +#: fdmprinter.def.json +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 "Canto mais acentuado" + +#: fdmprinter.def.json +msgctxt "z_seam_x label" +msgid "Z Seam X" +msgstr "X da costura Z" + +#: fdmprinter.def.json +msgctxt "z_seam_x description" +msgid "" +"The X coordinate of the position near where to start printing each part in a " +"layer." +msgstr "A coordenada X da posição próxima do local onde a impressão de cada parte de uma camada será iniciada." + +#: fdmprinter.def.json +msgctxt "z_seam_y label" +msgid "Z Seam Y" +msgstr "Y da costura Z" + +#: fdmprinter.def.json +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 próxima do local onde a impressão de cada parte de uma camada será iniciada." + +#: fdmprinter.def.json +msgctxt "z_seam_corner label" +msgid "Seam Corner Preference" +msgstr "Preferência de canto da 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 "Controla se os cantos do contorno do modelo influenciam a posição da costura. Nenhum significa que os cantos não influenciam a posição da costura. Ocultar costura torna mais provável que esta surja num canto interno. Expor costura torna mais provável que esta surja num canto externo. Ocultar ou expor costura torna mais provável que esta surja num canto interno ou externo." + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_none" +msgid "None" +msgstr "Nenhum" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_inner" +msgid "Hide Seam" +msgstr "Ocultar costura" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_outer" +msgid "Expose Seam" +msgstr "Expor costura" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_any" +msgid "Hide or Expose Seam" +msgstr "Ocultar ou expor costura" + +#: fdmprinter.def.json +msgctxt "z_seam_relative label" +msgid "Z Seam Relative" +msgstr "Relativo à costura Z" + +#: fdmprinter.def.json +msgctxt "z_seam_relative description" +msgid "" +"When enabled, the z seam coordinates are relative to each part's centre. " +"When disabled, the coordinates define an absolute position on the build " +"plate." +msgstr "Quando ativado, as coordenadas da costura Z são relativas ao centro de cada peça. Quando desativado, as coordenadas definem uma posição absoluta na placa de construção." + +#: fdmprinter.def.json +msgctxt "skin_no_small_gaps_heuristic label" +msgid "Ignore Small Z Gaps" +msgstr "Ignorar pequenas folgas Z" + +#: fdmprinter.def.json +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 folgas verticais, pode ser gasto cerca de 5% de tempo de cálculo adicional na criação de um revestimento superior e inferior nessas folgas reduzidas. Nesse caso, desative esta definição." + +#: fdmprinter.def.json +msgctxt "skin_outline_count label" +msgid "Extra Skin Wall Count" +msgstr "Contagem de paredes de revestimento adicional" + +#: 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 mais externa do padrão superior/inferior por várias linhas concêntricas. Utilizar uma ou duas linhas melhora os tetos iniciados com material de preenchimento." + +#: fdmprinter.def.json +msgctxt "ironing_enabled label" +msgid "Enable Ironing" +msgstr "Ativar engomagem" + +#: fdmprinter.def.json +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 "Passa novamente sobre a superfície superior, mas sem extrudir material. O objetivo é derreter mais o plástico na parte superior, criando uma superfície mais uniforme." + +#: fdmprinter.def.json +msgctxt "ironing_only_highest_layer label" +msgid "Iron Only Highest Layer" +msgstr "Engomar apenas camada 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 "Engoma apenas a última camada de malha. Isto permite poupar tempo se as camadas inferiores não precisarem de um acabamento de superfície uniforme." + +#: fdmprinter.def.json +msgctxt "ironing_pattern label" +msgid "Ironing Pattern" +msgstr "Padrão de engomagem" + +#: fdmprinter.def.json +msgctxt "ironing_pattern description" +msgid "The pattern to use for ironing top surfaces." +msgstr "O padrão a utilizar para engomar as superfícies superiores." + +#: fdmprinter.def.json +msgctxt "ironing_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing label" +msgid "Ironing Line Spacing" +msgstr "Espaçamento da linha de engomagem" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing description" +msgid "The distance between the lines of ironing." +msgstr "A distância entre as linhas de engomagem." + +#: fdmprinter.def.json +msgctxt "ironing_flow label" +msgid "Ironing Flow" +msgstr "Fluxo de engomagem" + +#: fdmprinter.def.json +msgctxt "ironing_flow description" +msgid "" +"The amount of material, relative to a normal skin line, to extrude during " +"ironing. Keeping the nozzle filled helps filling some of the crevices of the " +"top surface, but too much results in overextrusion and blips on the side of " +"the surface." +msgstr "A quantidade de material, em relação a uma linha de revestimento normal, a ser extrudido durante a engomagem. Manter o bocal abastecido ajuda a preencher algumas das fendas da superfície superior, mas o excesso de abastecimento resulta em sobre-extrusão e bolhas na parte lateral da superfície." + +#: fdmprinter.def.json +msgctxt "ironing_inset label" +msgid "Ironing Inset" +msgstr "Inserção de engomagem" + +#: fdmprinter.def.json +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 em relação às extremidades do modelo. Engomar até à extremidade da malha pode resultar numa extremidade irregular na sua impressão." + +#: fdmprinter.def.json +msgctxt "speed_ironing label" +msgid "Ironing Speed" +msgstr "Velocidade de engomagem" + +#: fdmprinter.def.json +msgctxt "speed_ironing description" +msgid "The speed at which to pass over the top surface." +msgstr "A velocidade de passagem sobre a superfície superior." + +#: fdmprinter.def.json +msgctxt "acceleration_ironing label" +msgid "Ironing Acceleration" +msgstr "Aceleração de engomagem" + +#: fdmprinter.def.json +msgctxt "acceleration_ironing description" +msgid "The acceleration with which ironing is performed." +msgstr "A aceleração com a qual a engomagem é efetuada." + +#: fdmprinter.def.json +msgctxt "jerk_ironing label" +msgid "Ironing Jerk" +msgstr "Solavanco de engomagem" + +#: fdmprinter.def.json +msgctxt "jerk_ironing description" +msgid "The maximum instantaneous velocity change while performing ironing." +msgstr "A mudança de velocidade instantânea máxima ao engomar." + +#: fdmprinter.def.json +msgctxt "infill label" +msgid "Infill" +msgstr "Preenchimento" + +#: fdmprinter.def.json +msgctxt "infill description" +msgid "Infill" +msgstr "Preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_extruder_nr label" +msgid "Infill Extruder" +msgstr "Extrusora de preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_extruder_nr description" +msgid "" +"The extruder train used for printing infill. This is used in multi-extrusion." +msgstr "A máquina de extrusão utilizada para imprimir o preenchimento. Esta é utilizada em extrusões múltiplas." + +#: fdmprinter.def.json +msgctxt "infill_sparse_density label" +msgid "Infill Density" +msgstr "Densidade de preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_sparse_density description" +msgid "Adjusts the density of infill of the print." +msgstr "Ajusta a densidade do preenchimento da impressão." + +#: fdmprinter.def.json +msgctxt "infill_line_distance label" +msgid "Infill Line Distance" +msgstr "Distância da linha de preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_line_distance description" +msgid "" +"Distance between the printed infill lines. This setting is calculated by the " +"infill density and the infill line width." +msgstr "A distância entre as linhas de preenchimento impressas. Esta definição é calculada através da densidade de preenchimento e da largura da linha de preenchimento." + +#: fdmprinter.def.json +msgctxt "infill_pattern label" +msgid "Infill Pattern" +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, tri-hexagon, cubic, octet, quarter cubic, cross 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 "O padrão do material de preenchimento da impressão. A direção de troca de preenchimento de linha e ziguezague em camadas alternadas, reduzindo os custos de material. Os padrões de grelha, triângulo, tri-hexágono, cubo, octeto, quarto cúbico, cruz e concêntrico são totalmente impressos em cada camada. Os preenchimentos cúbico, quarto cúbico e octeto são alterados a cada camada para fornecer uma distribuição mais uniforme da resistência em cada direção." + +#: fdmprinter.def.json +msgctxt "infill_pattern option grid" +msgid "Grid" +msgstr "Grelha" + +#: fdmprinter.def.json +msgctxt "infill_pattern option lines" +msgid "Lines" +msgstr "Linhas" + +#: fdmprinter.def.json +msgctxt "infill_pattern option triangles" +msgid "Triangles" +msgstr "Triângulos" + +#: fdmprinter.def.json +msgctxt "infill_pattern option trihexagon" +msgid "Tri-Hexagon" +msgstr "Tri-hexágono" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cubic" +msgid "Cubic" +msgstr "Cúbico" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cubicsubdiv" +msgid "Cubic Subdivision" +msgstr "Subdivisão cúbica" + +#: fdmprinter.def.json +msgctxt "infill_pattern option tetrahedral" +msgid "Octet" +msgstr "Octeto" + +#: fdmprinter.def.json +msgctxt "infill_pattern option quarter_cubic" +msgid "Quarter Cubic" +msgstr "Quarto cúbico" + +#: fdmprinter.def.json +msgctxt "infill_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "infill_pattern option concentric_3d" +msgid "Concentric 3D" +msgstr "Concêntrico 3D" + +#: fdmprinter.def.json +msgctxt "infill_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross" +msgid "Cross" +msgstr "Cruz" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cross_3d" +msgid "Cross 3D" +msgstr "Cruz 3D" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill label" +msgid "Connect Infill Lines" +msgstr "Ligar linhas de preenchimento" + +#: fdmprinter.def.json +msgctxt "zig_zaggify_infill description" +msgid "" +"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." +msgstr "Liga as extremidades onde o padrão de preenchimento entra em contacto com a parede interna utilizando uma linha que acompanha a forma da parede interna. Ativar esta definição pode melhorar a aderência do preenchimento às paredes e reduzir os efeitos do preenchimento na qualidade das superfícies verticais. Desativar esta definição reduz a quantidade de material utilizado." + +#: fdmprinter.def.json +msgctxt "infill_angles label" +msgid "Infill Line Directions" +msgstr "Direções da linha de preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_angles description" +msgid "" +"A list of integer line directions to use. Elements from the list are used " +"sequentially as the layers progress and when the end of the list is reached, " +"it starts at the beginning again. The list items are separated by commas and " +"the whole list is contained in square brackets. Default is an empty list " +"which means use the traditional default angles (45 and 135 degrees for the " +"lines and zig zag patterns and 45 degrees for all other patterns)." +msgstr "Uma lista de valores inteiros relativos às direções de linha a utilizar. Os elementos da lista são utilizados em sequência, à medida que as camadas progridem, voltando ao início assim que a lista chega ao fim. Os itens da lista são separados por vírgulas e a lista completa é disposta entre parênteses retos. A predefinição é uma lista vazia, cujas médias utilizam os ângulos predefinidos tradicionais (45 e 135 graus para os padrões de linha e ziguezague e 45 graus para todos os restantes padrões)." + +#: fdmprinter.def.json +msgctxt "infill_offset_x label" +msgid "Infill X Offset" +msgstr "Desvio X do preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_offset_x description" +msgid "The infill pattern is offset this distance along the X axis." +msgstr "O padrão de preenchimento apresenta um desvio a esta distância ao longo do eixo X." + +#: fdmprinter.def.json +msgctxt "infill_offset_y label" +msgid "Infill Y Offset" +msgstr "Desvio Y do preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_offset_y description" +msgid "The infill pattern is offset this distance along the Y axis." +msgstr "O padrão de preenchimento apresenta um desvio a esta distância ao longo do eixo Y." + +#: fdmprinter.def.json +msgctxt "sub_div_rad_add label" +msgid "Cubic Subdivision Shell" +msgstr "Cobertura de subdivisão cúbica" + +#: fdmprinter.def.json +msgctxt "sub_div_rad_add description" +msgid "" +"An addition to the radius from the center of each cube to check for the " +"boundary of the model, as to decide whether this cube should be subdivided. " +"Larger values lead to a thicker shell of small cubes near the boundary of " +"the model." +msgstr "Um acréscimo ao raio do centro de cada cubo para verificar os limites do modelo, de forma a decidir se este cubo deve ser subdividido. Valores mais elevados resultam numa cobertura mais espessa dos cubos pequenos próximos aos limites do modelo." + +#: fdmprinter.def.json +msgctxt "infill_overlap label" +msgid "Infill Overlap Percentage" +msgstr "Percentagem de sobreposição do preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_overlap description" +msgid "" +"The amount of overlap between the infill and the walls. A slight overlap " +"allows the walls to connect firmly to the infill." +msgstr "A quantidade de sobreposição entre o preenchimento e as paredes. Uma ligeira sobreposição permite que as paredes sejam ligadas firmemente ao preenchimento." + +#: fdmprinter.def.json +msgctxt "infill_overlap_mm label" +msgid "Infill Overlap" +msgstr "Sobreposição do preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_overlap_mm description" +msgid "" +"The amount of overlap between the infill and the walls. A slight overlap " +"allows the walls to connect firmly to the infill." +msgstr "A quantidade de sobreposição entre o preenchimento e as paredes. Uma ligeira sobreposição permite que as paredes sejam ligadas firmemente ao preenchimento." + +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Percentagem de sobreposição do revestimento" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "" +"The amount of overlap between the skin and the walls as a percentage of the " +"line width. A slight overlap allows the walls to connect firmly to the skin. " +"This is a percentage of the average line widths of the skin lines and the " +"innermost wall." +msgstr "A quantidade de sobreposição entre o revestimento e as paredes, como percentagem de largura da linha. Uma ligeira sobreposição permite que as paredes se liguem firmemente ao revestimento. Esta é uma percentagem das larguras médias de linha das linhas de revestimento e da parede mais interna." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Sobreposição de revestimento" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "" +"The amount of overlap between the skin and the walls. A slight overlap " +"allows the walls to connect firmly to the skin." +msgstr "A quantidade de sobreposição entre o revestimento e as paredes. Uma ligeira sobreposição permite que as paredes se liguem firmemente ao revestimento." + +#: fdmprinter.def.json +msgctxt "infill_wipe_dist label" +msgid "Infill Wipe Distance" +msgstr "Distância de limpeza do preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_wipe_dist description" +msgid "" +"Distance of a travel move inserted after every infill line, to make the " +"infill stick to the walls better. This option is similar to infill overlap, " +"but without extrusion and only on one end of the infill line." +msgstr "A distância de um movimento de deslocação inserido depois de cada linha de preenchimento, para melhorar a aderência do preenchimento às paredes. Esta opção é semelhante à sobreposição de preenchimento, mas sem extrusão e apenas numa das extremidades da linha de preenchimento." + +#: fdmprinter.def.json +msgctxt "infill_sparse_thickness label" +msgid "Infill Layer Thickness" +msgstr "Espessura da camada de preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_sparse_thickness description" +msgid "" +"The thickness per layer of infill material. This value should always be a " +"multiple of the layer height and is otherwise rounded." +msgstr "A espessura por camada de material de preenchimento. Este valor deve sempre ser um múltiplo da altura da camada. Caso contrário, será arredondado." + +#: fdmprinter.def.json +msgctxt "gradual_infill_steps label" +msgid "Gradual Infill Steps" +msgstr "Passos de preenchimento gradual" + +#: fdmprinter.def.json +msgctxt "gradual_infill_steps description" +msgid "" +"Number of times to reduce the infill density by half when getting further " +"below top surfaces. Areas which are closer to top surfaces get a higher " +"density, up to the Infill Density." +msgstr "O número de vezes que a densidade de preenchimento deve ser reduzida para metade ao alcançar superfícies superiores mais abaixo. As áreas que se encontram mais próximas das superfícies superiores obtêm uma maior densidade, até ao limite da Densidade de preenchimento." + +#: fdmprinter.def.json +msgctxt "gradual_infill_step_height label" +msgid "Gradual Infill Step Height" +msgstr "Altura do passo de preenchimento gradual" + +#: fdmprinter.def.json +msgctxt "gradual_infill_step_height description" +msgid "" +"The height of infill of a given density before switching to half the density." +msgstr "A altura de preenchimento de uma determinada densidade antes de mudar para metade da densidade." + +#: fdmprinter.def.json +msgctxt "infill_before_walls label" +msgid "Infill Before Walls" +msgstr "Preenchimento antes das paredes" + +#: fdmprinter.def.json +msgctxt "infill_before_walls description" +msgid "" +"Print the infill before printing the walls. Printing the walls first may " +"lead to more accurate walls, but overhangs print worse. Printing the infill " +"first leads to sturdier walls, but the infill pattern might sometimes show " +"through the surface." +msgstr "Imprime o preenchimento antes de imprimir as paredes. Imprimir as paredes em primeiro lugar pode resultar em paredes mais precisas, embora as saliências sejam impressas com menor qualidade. Imprimir o preenchimento em primeiro lugar resulta em paredes mais robustas, embora, por vezes, o padrão de preenchimento possa ser visto através da superfície." + +#: fdmprinter.def.json +msgctxt "min_infill_area label" +msgid "Minimum Infill Area" +msgstr "Área de preenchimento mínimo" + +#: fdmprinter.def.json +msgctxt "min_infill_area description" +msgid "Don't generate areas of infill smaller than this (use skin instead)." +msgstr "Não cria áreas de preenchimento mais reduzidas do que esta (em vez disso, utiliza o revestimento)." + +#: fdmprinter.def.json +msgctxt "skin_preshrink label" +msgid "Skin Removal Width" +msgstr "Largura de remoção do revestimento" + +#: 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 "A maior largura das áreas de revestimento a serem removidas. Todas as áreas de revestimento inferiores a este valor irão desaparecer. Isto pode ajudar a limitar a quantidade de tempo e material gastos na impressão do revestimento superior/inferior nas superfícies inclinadas do modelo." + +#: fdmprinter.def.json +msgctxt "top_skin_preshrink label" +msgid "Top Skin Removal Width" +msgstr "Largura de remoção do revestimento 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 "A maior largura das áreas de revestimento superiores a serem removidas. Todas as áreas de revestimento inferiores a este valor irão desaparecer. Isto pode ajudar a limitar a quantidade de tempo e material gastos na impressão do revestimento superior nas superfícies inclinadas do modelo." + +#: fdmprinter.def.json +msgctxt "bottom_skin_preshrink label" +msgid "Bottom Skin Removal Width" +msgstr "Largura de remoção do revestimento 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 "A maior largura das áreas de revestimento inferiores a serem removidas. Todas as áreas de revestimento inferiores a este valor irão desaparecer. Isto pode ajudar a limitar a quantidade de tempo e material gastos na impressão do revestimento inferior nas superfícies inclinadas do modelo." + +#: fdmprinter.def.json +msgctxt "expand_skins_expand_distance label" +msgid "Skin Expand Distance" +msgstr "Distância de expansão do revestimento" + +#: 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 "A distância a que os revestimentos são expandidos para o preenchimento. Os valores mais elevados melhoram a fixação do revestimento no padrão de preenchimento, bem como a aderência das paredes das camadas adjacentes ao revestimento. Os valores mais baixos reduzem a quantidade de material utilizado." + +#: fdmprinter.def.json +msgctxt "top_skin_expand_distance label" +msgid "Top Skin Expand Distance" +msgstr "Distância de expansão do revestimento 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 "A distância à qual os revestimentos superiores são expandidos para o preenchimento. Os valores mais elevados melhoram a fixação do revestimento no padrão de preenchimento, bem como a aderência das paredes da camada superior ao revestimento. Os valores mais baixos reduzem a quantidade de material utilizado." + +#: fdmprinter.def.json +msgctxt "bottom_skin_expand_distance label" +msgid "Bottom Skin Expand Distance" +msgstr "Distância de expansão do revestimento 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 "A distância à qual os revestimentos inferiores são expandidos para o preenchimento. Os valores mais elevados melhoram a fixação do revestimento no padrão de preenchimento, bem como a aderência do revestimento às paredes da camada inferior. Os valores mais baixos reduzem a quantidade de material utilizado." + +#: fdmprinter.def.json +msgctxt "max_skin_angle_for_expansion label" +msgid "Maximum Skin Angle for Expansion" +msgstr "Ângulo máximo do revestimento para expansão" + +#: fdmprinter.def.json +msgctxt "max_skin_angle_for_expansion description" +msgid "" +"Top and/or bottom surfaces of your object with an angle larger than this " +"setting, won't have their top/bottom skin expanded. This avoids expanding " +"the narrow skin areas that are created when the model surface has a near " +"vertical slope. An angle of 0° is horizontal, while an angle of 90° is " +"vertical." +msgstr "As superfícies superiores/inferiores do objeto com um ângulo superior a esta definição não conseguirão expandir o revestimento superior/inferior. Isto evita a expansão das áreas de revestimento reduzidas que são criadas quando a superfície do modelo apresenta uma inclinação quase vertical. Um ângulo de 0° é horizontal e um ângulo de 90° é vertical." + +#: fdmprinter.def.json +msgctxt "min_skin_width_for_expansion label" +msgid "Minimum Skin Width for Expansion" +msgstr "Largura mínima do revestimento para expansão" + +#: fdmprinter.def.json +msgctxt "min_skin_width_for_expansion description" +msgid "" +"Skin areas narrower than this are not expanded. This avoids expanding the " +"narrow skin areas that are created when the model surface has a slope close " +"to the vertical." +msgstr "As áreas de revestimento mais reduzidas do que este valor não são expandidas. Isto evita a expansão das áreas de revestimento reduzidas que são criadas quando a superfície do modelo apresenta uma inclinação quase vertical." + +#: fdmprinter.def.json +msgctxt "material label" +msgid "Material" +msgstr "Material" + +#: fdmprinter.def.json +msgctxt "material description" +msgid "Material" +msgstr "Material" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "Temperatura automática" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "" +"Change the temperature for each layer automatically with the average flow " +"speed of that layer." +msgstr "Muda automaticamente a temperatura de cada camada com a velocidade média de fluxo dessa camada." + +#: fdmprinter.def.json +msgctxt "default_material_print_temperature label" +msgid "Default Printing Temperature" +msgstr "Temperatura de impressão predefinida" + +#: fdmprinter.def.json +msgctxt "default_material_print_temperature description" +msgid "" +"The default temperature used for printing. This should be the \"base\" " +"temperature of a material. All other print temperatures should use offsets " +"based on this value" +msgstr "A temperatura predefinida utilizada para a impressão. Esta deve ser a temperatura \"base\" de um material. Todas as outras temperaturas de impressão devem utilizar desvios com base neste valor." + +#: fdmprinter.def.json +msgctxt "material_print_temperature label" +msgid "Printing Temperature" +msgstr "Temperatura de impressão" + +#: fdmprinter.def.json +msgctxt "material_print_temperature description" +msgid "The temperature used for printing." +msgstr "A temperatura utilizada para a impressão." + +#: fdmprinter.def.json +msgctxt "material_print_temperature_layer_0 label" +msgid "Printing Temperature Initial Layer" +msgstr "Temperatura de impressão da camada inicial" + +#: fdmprinter.def.json +msgctxt "material_print_temperature_layer_0 description" +msgid "" +"The temperature used for printing the first layer. Set at 0 to disable " +"special handling of the initial layer." +msgstr "A temperatura utilizada para imprimir a primeira camada. Esta é definida como 0 para desativar o manuseamento especial da camada inicial." + +#: fdmprinter.def.json +msgctxt "material_initial_print_temperature label" +msgid "Initial Printing Temperature" +msgstr "Temperatura de impressão inicial" + +#: fdmprinter.def.json +msgctxt "material_initial_print_temperature description" +msgid "" +"The minimal temperature while heating up to the Printing Temperature at " +"which printing can already start." +msgstr "A temperatura mínima ao aquecer até à Temperatura de impressão à qual a impressão já pode começar." + +#: fdmprinter.def.json +msgctxt "material_final_print_temperature label" +msgid "Final Printing Temperature" +msgstr "Temperatura de impressão final" + +#: fdmprinter.def.json +msgctxt "material_final_print_temperature description" +msgid "" +"The temperature to which to already start cooling down just before the end " +"of printing." +msgstr "A temperatura à qual o arrefecimento é iniciado imediatamente antes do final da impressão." + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "Gráfico de temperatura de fluxo" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "" +"Data linking material flow (in mm3 per second) to temperature (degrees " +"Celsius)." +msgstr "Os dados que ligam o fluxo de material (em mm3 por segundo) à temperatura (graus Celsius)." + +#: fdmprinter.def.json +msgctxt "material_extrusion_cool_down_speed label" +msgid "Extrusion Cool Down Speed Modifier" +msgstr "Modificador da velocidade de arrefecimento da extrusão" + +#: fdmprinter.def.json +msgctxt "material_extrusion_cool_down_speed description" +msgid "" +"The extra speed by which the nozzle cools while extruding. The same value is " +"used to signify the heat up speed lost when heating up while extruding." +msgstr "A velocidade adicional a que o bocal arrefece durante a extrusão. É utilizado o mesmo valor para indicar a velocidade de aquecimento perdida ao aquecer durante a extrusão." + +#: fdmprinter.def.json +msgctxt "material_bed_temperature label" +msgid "Build Plate Temperature" +msgstr "Temperatura da placa de construção" + +#: fdmprinter.def.json +msgctxt "material_bed_temperature description" +msgid "" +"The temperature used for the heated build plate. If this is 0, the bed will " +"not heat up for this print." +msgstr "A temperatura utilizada para a placa de construção aquecida. Se for 0, a base não será aquecida para esta impressão." + +#: fdmprinter.def.json +msgctxt "material_bed_temperature_layer_0 label" +msgid "Build Plate Temperature Initial Layer" +msgstr "Temperatura da placa de construção da camada inicial" + +#: fdmprinter.def.json +msgctxt "material_bed_temperature_layer_0 description" +msgid "The temperature used for the heated build plate at the first layer." +msgstr "A temperatura utilizada para a placa de construção aquecida na primeira camada." + +#: fdmprinter.def.json +msgctxt "material_diameter label" +msgid "Diameter" +msgstr "Diâmetro" + +#: fdmprinter.def.json +msgctxt "material_diameter description" +msgid "" +"Adjusts the diameter of the filament used. Match this value with the " +"diameter of the used filament." +msgstr "Ajusta o diâmetro do filamento utilizado. Faça corresponder este valor com o diâmetro do filamento utilizado." + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency label" +msgid "Adhesion Tendency" +msgstr "Tendência de aderência" + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency description" +msgid "Surface adhesion tendency." +msgstr "A tendência de aderência à superfície." + +#: fdmprinter.def.json +msgctxt "material_surface_energy label" +msgid "Surface Energy" +msgstr "Energia da superfície" + +#: fdmprinter.def.json +msgctxt "material_surface_energy description" +msgid "Surface energy." +msgstr "Energia da superfície." + +#: fdmprinter.def.json +msgctxt "material_flow label" +msgid "Flow" +msgstr "Fluxo" + +#: fdmprinter.def.json +msgctxt "material_flow description" +msgid "" +"Flow compensation: the amount of material extruded is multiplied by this " +"value." +msgstr "Compensação de fluxo: a quantidade de material extrudido é multiplicada por este valor." + +#: fdmprinter.def.json +msgctxt "retraction_enable label" +msgid "Enable Retraction" +msgstr "Ativar retração" + +#: fdmprinter.def.json +msgctxt "retraction_enable description" +msgid "" +"Retract the filament when the nozzle is moving over a non-printed area. " +msgstr "Retrai o filamento quando o bocal está em movimento numa área sem impressão. " + +#: fdmprinter.def.json +msgctxt "retract_at_layer_change label" +msgid "Retract at Layer Change" +msgstr "Retrair na mudança de camada" + +#: fdmprinter.def.json +msgctxt "retract_at_layer_change description" +msgid "Retract the filament when the nozzle is moving to the next layer." +msgstr "Retrai o filamento quando o bocal se está a deslocar para a camada seguinte." + +#: fdmprinter.def.json +msgctxt "retraction_amount label" +msgid "Retraction Distance" +msgstr "Distância de retração" + +#: fdmprinter.def.json +msgctxt "retraction_amount description" +msgid "The length of material retracted during a retraction move." +msgstr "O comprimento do material retraído durante um movimento de retração." + +#: fdmprinter.def.json +msgctxt "retraction_speed label" +msgid "Retraction Speed" +msgstr "Velocidade de retração" + +#: fdmprinter.def.json +msgctxt "retraction_speed description" +msgid "" +"The speed at which the filament is retracted and primed during a retraction " +"move." +msgstr "A velocidade a que o filamento é retraído e preparado durante um movimento de retração." + +#: fdmprinter.def.json +msgctxt "retraction_retract_speed label" +msgid "Retraction Retract Speed" +msgstr "Velocidade de recolha de retração" + +#: fdmprinter.def.json +msgctxt "retraction_retract_speed description" +msgid "The speed at which the filament is retracted during a retraction move." +msgstr "A velocidade a que o filamento é recolhido durante um movimento de retração." + +#: fdmprinter.def.json +msgctxt "retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "Velocidade de preparação de retração" + +#: fdmprinter.def.json +msgctxt "retraction_prime_speed description" +msgid "The speed at which the filament is primed during a retraction move." +msgstr "A velocidade a que o filamento é preparado durante um movimento de retração." + +#: fdmprinter.def.json +msgctxt "retraction_extra_prime_amount label" +msgid "Retraction Extra Prime Amount" +msgstr "Quantidade de preparação adicional de retração" + +#: fdmprinter.def.json +msgctxt "retraction_extra_prime_amount description" +msgid "" +"Some material can ooze away during a travel move, which can be compensated " +"for here." +msgstr "Pode ocorrer vazamento de material durante um movimento de deslocação, o qual pode ser compensado aqui." + +#: fdmprinter.def.json +msgctxt "retraction_min_travel label" +msgid "Retraction Minimum Travel" +msgstr "Deslocação mínima de retração" + +#: fdmprinter.def.json +msgctxt "retraction_min_travel description" +msgid "" +"The minimum distance of travel needed for a retraction to happen at all. " +"This helps to get fewer retractions in a small area." +msgstr "A distância mínima de deslocação necessária para que ocorra uma retração. Isto ajuda a obter menos retrações numa área reduzida." + +#: fdmprinter.def.json +msgctxt "retraction_count_max label" +msgid "Maximum Retraction Count" +msgstr "Contagem máxima de retração" + +#: fdmprinter.def.json +msgctxt "retraction_count_max description" +msgid "" +"This setting limits the number of retractions occurring within the minimum " +"extrusion distance window. Further retractions within this window will be " +"ignored. This avoids retracting repeatedly on the same piece of filament, as " +"that can flatten the filament and cause grinding issues." +msgstr "Esta definição limita o número de retrações que ocorrem no intervalo mínimo de distância de extrusão. As retrações adicionais dentro deste intervalo serão ignoradas. Isto evita a retração repetida no mesmo filamento, uma vez que tal pode achatar o filamento e causar problemas de trituração." + +#: fdmprinter.def.json +msgctxt "retraction_extrusion_window label" +msgid "Minimum Extrusion Distance Window" +msgstr "Intervalo mínimo de distância de extrusão" + +#: fdmprinter.def.json +msgctxt "retraction_extrusion_window description" +msgid "" +"The window in which the maximum retraction count is enforced. This value " +"should be approximately the same as the retraction distance, so that " +"effectively the number of times a retraction passes the same patch of " +"material is limited." +msgstr "O intervalo no qual a contagem máxima de retração é aplicada. Este valor deve ser aproximadamente o mesmo que a distância de retração, de forma que o número de vezes que uma retração passa no mesmo retalho de material seja efetivamente limitado." + +#: fdmprinter.def.json +msgctxt "material_standby_temperature label" +msgid "Standby Temperature" +msgstr "Temperatura de espera" + +#: fdmprinter.def.json +msgctxt "material_standby_temperature description" +msgid "" +"The temperature of the nozzle when another nozzle is currently used for " +"printing." +msgstr "A temperatura do bocal quando outro bocal está a ser utilizado para a impressão." + +#: fdmprinter.def.json +msgctxt "switch_extruder_retraction_amount label" +msgid "Nozzle Switch Retraction Distance" +msgstr "Distância de retração de substituição do bocal" + +#: fdmprinter.def.json +msgctxt "switch_extruder_retraction_amount description" +msgid "" +"The amount of retraction: Set at 0 for no retraction at all. This should " +"generally be the same as the length of the heat zone." +msgstr "A quantidade de retração: defina como 0 para não obter qualquer retração. Normalmente, esta deve ser a mesma que o comprimento da zona de aquecimento." + +#: fdmprinter.def.json +msgctxt "switch_extruder_retraction_speeds label" +msgid "Nozzle Switch Retraction Speed" +msgstr "Velocidade de retração de substituição do bocal" + +#: fdmprinter.def.json +msgctxt "switch_extruder_retraction_speeds description" +msgid "" +"The speed at which the filament is retracted. A higher retraction speed " +"works better, but a very high retraction speed can lead to filament grinding." +msgstr "A velocidade a que o filamento é retraído. Uma maior velocidade de retração funciona melhor, mas uma velocidade de retração muito elevada pode resultar na trituração do filamento." + +#: fdmprinter.def.json +msgctxt "switch_extruder_retraction_speed label" +msgid "Nozzle Switch Retract Speed" +msgstr "Velocidade de recolha de substituição do bocal" + +#: fdmprinter.def.json +msgctxt "switch_extruder_retraction_speed description" +msgid "" +"The speed at which the filament is retracted during a nozzle switch retract." +msgstr "A velocidade a que o filamento é retraído durante uma recolha de substituição do bocal." + +#: fdmprinter.def.json +msgctxt "switch_extruder_prime_speed label" +msgid "Nozzle Switch Prime Speed" +msgstr "Velocidade de preparação de substituição do bocal" + +#: fdmprinter.def.json +msgctxt "switch_extruder_prime_speed description" +msgid "" +"The speed at which the filament is pushed back after a nozzle switch " +"retraction." +msgstr "A velocidade a que o filamento é empurrado após uma retração de substituição do bocal." + +#: fdmprinter.def.json +msgctxt "speed label" +msgid "Speed" +msgstr "Velocidade" + +#: fdmprinter.def.json +msgctxt "speed description" +msgid "Speed" +msgstr "Velocidade" + +#: fdmprinter.def.json +msgctxt "speed_print label" +msgid "Print Speed" +msgstr "Velocidade de impressão" + +#: fdmprinter.def.json +msgctxt "speed_print description" +msgid "The speed at which printing happens." +msgstr "A velocidade a que é efetuada a impressão." + +#: fdmprinter.def.json +msgctxt "speed_infill label" +msgid "Infill Speed" +msgstr "Velocidade de preenchimento" + +#: fdmprinter.def.json +msgctxt "speed_infill description" +msgid "The speed at which infill is printed." +msgstr "A velocidade a que o preenchimento é impresso." + +#: fdmprinter.def.json +msgctxt "speed_wall label" +msgid "Wall Speed" +msgstr "Velocidade de parede" + +#: fdmprinter.def.json +msgctxt "speed_wall description" +msgid "The speed at which the walls are printed." +msgstr "A velocidade a que as paredes são impressas." + +#: fdmprinter.def.json +msgctxt "speed_wall_0 label" +msgid "Outer Wall Speed" +msgstr "Velocidade de parede externa" + +#: fdmprinter.def.json +msgctxt "speed_wall_0 description" +msgid "" +"The speed at which the outermost walls are printed. Printing the outer wall " +"at a lower speed improves the final skin quality. However, having a large " +"difference between the inner wall speed and the outer wall speed will affect " +"quality in a negative way." +msgstr "A velocidade a que as paredes externas são impressas. Imprimir a parede externa a uma velocidade mais reduzida melhora a qualidade final do revestimento. No entanto, a existência de uma grande diferença entre a velocidade da parede interna e a velocidade de parede externa afetará a qualidade de forma negativa." + +#: fdmprinter.def.json +msgctxt "speed_wall_x label" +msgid "Inner Wall Speed" +msgstr "Velocidade de parede interna" + +#: fdmprinter.def.json +msgctxt "speed_wall_x description" +msgid "" +"The speed at which all inner walls are printed. Printing the inner wall " +"faster than the outer wall will reduce printing time. It works well to set " +"this in between the outer wall speed and the infill speed." +msgstr "A velocidade a que todas as paredes internas são impressas. Imprimir a parede interna mais rapidamente do que a parede externa irá reduzir o tempo de impressão. É conveniente introduzir esta definição entre a velocidade de parede externa e a velocidade de preenchimento." + +#: fdmprinter.def.json +msgctxt "speed_roofing label" +msgid "Top Surface Skin Speed" +msgstr "Velocidade de revestimento da superfície superior" + +#: fdmprinter.def.json +msgctxt "speed_roofing description" +msgid "The speed at which top surface skin layers are printed." +msgstr "A velocidade a que as camadas de revestimento da superfície superior são impressas." + +#: fdmprinter.def.json +msgctxt "speed_topbottom label" +msgid "Top/Bottom Speed" +msgstr "Velocidade superior/inferior" + +#: fdmprinter.def.json +msgctxt "speed_topbottom description" +msgid "The speed at which top/bottom layers are printed." +msgstr "A velocidade a que as camadas superiores/inferiores são impressas." + +#: fdmprinter.def.json +msgctxt "speed_support label" +msgid "Support Speed" +msgstr "Velocidade de suporte" + +#: fdmprinter.def.json +msgctxt "speed_support description" +msgid "" +"The speed at which the support structure is printed. Printing support at " +"higher speeds can greatly reduce printing time. The surface quality of the " +"support structure is not important since it is removed after printing." +msgstr "A velocidade a que a estrutura de suporte é impressa. Imprimir o suporte a velocidades elevadas pode reduzir consideravelmente o tempo de impressão. A qualidade da superfície da estrutura de suporte não é importante, uma vez que esta é removida após a impressão." + +#: fdmprinter.def.json +msgctxt "speed_support_infill label" +msgid "Support Infill Speed" +msgstr "Velocidade de preenchimento do suporte" + +#: fdmprinter.def.json +msgctxt "speed_support_infill description" +msgid "" +"The speed at which the infill of support is printed. Printing the infill at " +"lower speeds improves stability." +msgstr "A velocidade a que o preenchimento do suporte é impresso. Imprimir o preenchimento a velocidades baixas melhora a estabilidade." + +#: fdmprinter.def.json +msgctxt "speed_support_interface label" +msgid "Support Interface Speed" +msgstr "Velocidade da interface de suporte" + +#: fdmprinter.def.json +msgctxt "speed_support_interface description" +msgid "" +"The speed at which the roofs and floors of support are printed. Printing " +"them at lower speeds can improve overhang quality." +msgstr "A velocidade a que os tetos e os pisos de suporte são impressos. Imprimi-los a velocidades baixas pode melhorar a qualidade das saliências." + +#: fdmprinter.def.json +msgctxt "speed_support_roof label" +msgid "Support Roof Speed" +msgstr "Velocidade do teto de suporte" + +#: fdmprinter.def.json +msgctxt "speed_support_roof description" +msgid "" +"The speed at which the roofs of support are printed. Printing them at lower " +"speeds can improve overhang quality." +msgstr "A velocidade a que os tetos de suporte são impressos. Imprimi-los a velocidades baixas pode melhorar a qualidade das saliências." + +#: fdmprinter.def.json +msgctxt "speed_support_bottom label" +msgid "Support Floor Speed" +msgstr "Velocidade do piso de suporte" + +#: fdmprinter.def.json +msgctxt "speed_support_bottom description" +msgid "" +"The speed at which the floor of support is printed. Printing it at lower " +"speed can improve adhesion of support on top of your model." +msgstr "A velocidade a que o piso de suporte é impresso. Imprimi-lo a uma velocidade baixa pode melhorar a aderência do suporte na parte superior do modelo." + +#: fdmprinter.def.json +msgctxt "speed_prime_tower label" +msgid "Prime Tower Speed" +msgstr "Velocidade da torre de preparação" + +#: fdmprinter.def.json +msgctxt "speed_prime_tower description" +msgid "" +"The speed at which the prime tower is printed. Printing the prime tower " +"slower can make it more stable when the adhesion between the different " +"filaments is suboptimal." +msgstr "A velocidade à qual a torre de preparação é impressa. Imprimir a torre de preparação mais lentamente pode torná-la mais estável quando a aderência entre os diferentes filamentos é insuficiente." + +#: fdmprinter.def.json +msgctxt "speed_travel label" +msgid "Travel Speed" +msgstr "Velocidade de deslocação" + +#: fdmprinter.def.json +msgctxt "speed_travel description" +msgid "The speed at which travel moves are made." +msgstr "A velocidade a que os movimentos de deslocação são efetuados." + +#: fdmprinter.def.json +msgctxt "speed_layer_0 label" +msgid "Initial Layer Speed" +msgstr "Velocidade da camada inicial" + +#: fdmprinter.def.json +msgctxt "speed_layer_0 description" +msgid "" +"The speed for the initial layer. A lower value is advised to improve " +"adhesion to the build plate." +msgstr "A velocidade da camada inicial. É recomendado um valor inferior para melhorar a aderência à placa de construção." + +#: fdmprinter.def.json +msgctxt "speed_print_layer_0 label" +msgid "Initial Layer Print Speed" +msgstr "Velocidade de impressão da camada inicial" + +#: fdmprinter.def.json +msgctxt "speed_print_layer_0 description" +msgid "" +"The speed of printing for the initial layer. A lower value is advised to " +"improve adhesion to the build plate." +msgstr "A velocidade de impressão da camada inicial. É recomendado um valor inferior para melhorar a aderência à placa de construção." + +#: fdmprinter.def.json +msgctxt "speed_travel_layer_0 label" +msgid "Initial Layer Travel Speed" +msgstr "Velocidade de deslocação da camada inicial" + +#: fdmprinter.def.json +msgctxt "speed_travel_layer_0 description" +msgid "" +"The speed of travel moves in the initial layer. A lower value is advised to " +"prevent pulling previously printed parts away from the build plate. The " +"value of this setting can automatically be calculated from the ratio between " +"the Travel Speed and the Print Speed." +msgstr "A velocidade dos movimentos de deslocação na camada inicial. É recomendado um valor inferior para evitar que as peças anteriormente impressas sejam separadas da placa de construção. O valor desta definição pode ser automaticamente calculado a partir da proporção entre a Velocidade de deslocação e a Velocidade de impressão." + +#: fdmprinter.def.json +msgctxt "skirt_brim_speed label" +msgid "Skirt/Brim Speed" +msgstr "Velocidade de contorno/borda" + +#: fdmprinter.def.json +msgctxt "skirt_brim_speed description" +msgid "" +"The speed at which the skirt and brim are printed. Normally this is done at " +"the initial layer speed, but sometimes you might want to print the skirt or " +"brim at a different speed." +msgstr "A velocidade a que o contorno e a borda são impressos. Geralmente, isto é efetuado à velocidade de camada inicial, mas, por vezes, pode preferir imprimir o contorno ou a borda a uma velocidade diferente." + +#: fdmprinter.def.json +msgctxt "max_feedrate_z_override label" +msgid "Maximum Z Speed" +msgstr "Velocidade Z máxima" + +#: fdmprinter.def.json +msgctxt "max_feedrate_z_override description" +msgid "" +"The maximum speed with which the build plate is moved. Setting this to zero " +"causes the print to use the firmware defaults for the maximum z speed." +msgstr "A velocidade máxima a que a placa de construção é movida. Defini-la como zero faz com que a impressão utilize as predefinições de firmware para a velocidade Z máxima." + +#: fdmprinter.def.json +msgctxt "speed_slowdown_layers label" +msgid "Number of Slower Layers" +msgstr "Número de camadas mais lentas" + +#: fdmprinter.def.json +msgctxt "speed_slowdown_layers description" +msgid "" +"The first few layers are printed slower than the rest of the model, to get " +"better adhesion to the build plate and improve the overall success rate of " +"prints. The speed is gradually increased over these layers." +msgstr "As primeiras camadas são impressas mais lentamente do que o resto do modelo para obter uma melhor aderência à placa de construção e melhorar a taxa de sucesso geral das impressões. A velocidade é aumentada gradualmente nessas camadas." + +#: fdmprinter.def.json +msgctxt "speed_equalize_flow_enabled label" +msgid "Equalize Filament Flow" +msgstr "Equilibrar fluxo de filamento" + +#: fdmprinter.def.json +msgctxt "speed_equalize_flow_enabled description" +msgid "" +"Print thinner than normal lines faster so that the amount of material " +"extruded per second remains the same. Thin pieces in your model might " +"require lines printed with smaller line width than provided in the settings. " +"This setting controls the speed changes for such lines." +msgstr "Imprime linhas mais finas do que o normal de forma mais rápida, para que a quantidade de material extrudido por segundo permaneça o mesmo. As peças finas do modelo podem requerer linhas impressas com uma menor largura de linha do que a fornecida nas definições. Esta definição controla as mudanças de velocidade dessas linhas." + +#: fdmprinter.def.json +msgctxt "speed_equalize_flow_max label" +msgid "Maximum Speed for Flow Equalization" +msgstr "Velocidade máxima para equilíbrio de fluxo" + +#: fdmprinter.def.json +msgctxt "speed_equalize_flow_max description" +msgid "" +"Maximum print speed when adjusting the print speed in order to equalize flow." +msgstr "A velocidade máxima de impressão ao ajustar a velocidade de impressão para equilibrar o fluxo." + +#: fdmprinter.def.json +msgctxt "acceleration_enabled label" +msgid "Enable Acceleration Control" +msgstr "Ativar controlo da aceleração" + +#: fdmprinter.def.json +msgctxt "acceleration_enabled description" +msgid "" +"Enables adjusting the print head acceleration. Increasing the accelerations " +"can reduce printing time at the cost of print quality." +msgstr "Permite o ajuste da aceleração da cabeça de impressão. Aumentar as acelerações pode reduzir o tempo de impressão em detrimento da qualidade de impressão." + +#: fdmprinter.def.json +msgctxt "acceleration_print label" +msgid "Print Acceleration" +msgstr "Aceleração de impressão" + +#: fdmprinter.def.json +msgctxt "acceleration_print description" +msgid "The acceleration with which printing happens." +msgstr "A aceleração com que é efetuada a impressão." + +#: fdmprinter.def.json +msgctxt "acceleration_infill label" +msgid "Infill Acceleration" +msgstr "Aceleração de preenchimento" + +#: fdmprinter.def.json +msgctxt "acceleration_infill description" +msgid "The acceleration with which infill is printed." +msgstr "A aceleração com que o preenchimento é impresso." + +#: fdmprinter.def.json +msgctxt "acceleration_wall label" +msgid "Wall Acceleration" +msgstr "Aceleração de parede" + +#: fdmprinter.def.json +msgctxt "acceleration_wall description" +msgid "The acceleration with which the walls are printed." +msgstr "A aceleração com que as paredes são impressas." + +#: fdmprinter.def.json +msgctxt "acceleration_wall_0 label" +msgid "Outer Wall Acceleration" +msgstr "Aceleração da parede externa" + +#: fdmprinter.def.json +msgctxt "acceleration_wall_0 description" +msgid "The acceleration with which the outermost walls are printed." +msgstr "A aceleração com que as paredes mais externas são impressas." + +#: fdmprinter.def.json +msgctxt "acceleration_wall_x label" +msgid "Inner Wall Acceleration" +msgstr "Aceleração da parede interna" + +#: fdmprinter.def.json +msgctxt "acceleration_wall_x description" +msgid "The acceleration with which all inner walls are printed." +msgstr "A aceleração com que todas as paredes internas são impressas." + +#: fdmprinter.def.json +msgctxt "acceleration_roofing label" +msgid "Top Surface Skin Acceleration" +msgstr "Aceleração do revestimento da superfície superior" + +#: fdmprinter.def.json +msgctxt "acceleration_roofing description" +msgid "The acceleration with which top surface skin layers are printed." +msgstr "A aceleração com que as camadas de revestimento da superfície superior são impressas." + +#: fdmprinter.def.json +msgctxt "acceleration_topbottom label" +msgid "Top/Bottom Acceleration" +msgstr "Aceleração superior/inferior" + +#: fdmprinter.def.json +msgctxt "acceleration_topbottom description" +msgid "The acceleration with which top/bottom layers are printed." +msgstr "A aceleração com que as camadas superiores/inferiores são impressas." + +#: fdmprinter.def.json +msgctxt "acceleration_support label" +msgid "Support Acceleration" +msgstr "Aceleração de suporte" + +#: fdmprinter.def.json +msgctxt "acceleration_support description" +msgid "The acceleration with which the support structure is printed." +msgstr "A aceleração com que a estrutura de suporte é impressa." + +#: fdmprinter.def.json +msgctxt "acceleration_support_infill label" +msgid "Support Infill Acceleration" +msgstr "Aceleração de preenchimento do suporte" + +#: fdmprinter.def.json +msgctxt "acceleration_support_infill description" +msgid "The acceleration with which the infill of support is printed." +msgstr "A aceleração com que o preenchimento do suporte é impresso." + +#: fdmprinter.def.json +msgctxt "acceleration_support_interface label" +msgid "Support Interface Acceleration" +msgstr "Aceleração da interface de suporte" + +#: fdmprinter.def.json +msgctxt "acceleration_support_interface description" +msgid "" +"The acceleration with which the roofs and floors of support are printed. " +"Printing them at lower acceleration can improve overhang quality." +msgstr "A aceleração com que os tetos e pisos de suporte são impressos. Imprimi-los com uma aceleração inferior pode melhorar a qualidade das saliências." + +#: fdmprinter.def.json +msgctxt "acceleration_support_roof label" +msgid "Support Roof Acceleration" +msgstr "Aceleração do teto de suporte" + +#: fdmprinter.def.json +msgctxt "acceleration_support_roof description" +msgid "" +"The acceleration with which the roofs of support are printed. Printing them " +"at lower acceleration can improve overhang quality." +msgstr "A aceleração com que os tetos de suporte são impressos. Imprimi-los com uma aceleração inferior pode melhorar a qualidade das saliências." + +#: fdmprinter.def.json +msgctxt "acceleration_support_bottom label" +msgid "Support Floor Acceleration" +msgstr "Aceleração do piso de suporte" + +#: fdmprinter.def.json +msgctxt "acceleration_support_bottom description" +msgid "" +"The acceleration with which the floors of support are printed. Printing them " +"at lower acceleration can improve adhesion of support on top of your model." +msgstr "A aceleração com que os pisos de suporte são impressos. Imprimi-los com uma aceleração inferior pode melhorar a aderência do suporte na parte superior do modelo." + +#: fdmprinter.def.json +msgctxt "acceleration_prime_tower label" +msgid "Prime Tower Acceleration" +msgstr "Aceleração da torre de preparação" + +#: fdmprinter.def.json +msgctxt "acceleration_prime_tower description" +msgid "The acceleration with which the prime tower is printed." +msgstr "A aceleração com que a torre de preparação é impressa." + +#: fdmprinter.def.json +msgctxt "acceleration_travel label" +msgid "Travel Acceleration" +msgstr "Aceleração de deslocação" + +#: fdmprinter.def.json +msgctxt "acceleration_travel description" +msgid "The acceleration with which travel moves are made." +msgstr "A aceleração com que os movimentos de deslocação são efetuados." + +#: fdmprinter.def.json +msgctxt "acceleration_layer_0 label" +msgid "Initial Layer Acceleration" +msgstr "Aceleração da camada inicial" + +#: fdmprinter.def.json +msgctxt "acceleration_layer_0 description" +msgid "The acceleration for the initial layer." +msgstr "A aceleração da camada inicial." + +#: fdmprinter.def.json +msgctxt "acceleration_print_layer_0 label" +msgid "Initial Layer Print Acceleration" +msgstr "Aceleração de impressão da camada inicial" + +#: fdmprinter.def.json +msgctxt "acceleration_print_layer_0 description" +msgid "The acceleration during the printing of the initial layer." +msgstr "A aceleração durante a impressão da camada inicial." + +#: fdmprinter.def.json +msgctxt "acceleration_travel_layer_0 label" +msgid "Initial Layer Travel Acceleration" +msgstr "Aceleração de deslocação da camada inicial" + +#: fdmprinter.def.json +msgctxt "acceleration_travel_layer_0 description" +msgid "The acceleration for travel moves in the initial layer." +msgstr "A aceleração dos movimentos de deslocação na camada inicial." + +#: fdmprinter.def.json +msgctxt "acceleration_skirt_brim label" +msgid "Skirt/Brim Acceleration" +msgstr "Aceleração de contorno/borda" + +#: fdmprinter.def.json +msgctxt "acceleration_skirt_brim description" +msgid "" +"The acceleration with which the skirt and brim are printed. Normally this is " +"done with the initial layer acceleration, but sometimes you might want to " +"print the skirt or brim at a different acceleration." +msgstr "A aceleração com que o contorno e a borda são impressos. Geralmente, isto é efetuado com a aceleração da camada inicial, mas, por vezes, pode preferir imprimir o contorno ou a borda com uma aceleração diferente." + +#: fdmprinter.def.json +msgctxt "jerk_enabled label" +msgid "Enable Jerk Control" +msgstr "Ativar controlo de solavanco" + +#: fdmprinter.def.json +msgctxt "jerk_enabled description" +msgid "" +"Enables adjusting the jerk of print head when the velocity in the X or Y " +"axis changes. Increasing the jerk can reduce printing time at the cost of " +"print quality." +msgstr "Permite o ajuste do solavanco da cabeça de impressão quando a velocidade nos eixos X ou Y muda. Aumentar o solavanco pode reduzir o tempo de impressão em detrimento da qualidade de impressão." + +#: fdmprinter.def.json +msgctxt "jerk_print label" +msgid "Print Jerk" +msgstr "Solavanco de impressão" + +#: fdmprinter.def.json +msgctxt "jerk_print description" +msgid "The maximum instantaneous velocity change of the print head." +msgstr "A mudança de velocidade instantânea máxima da cabeça de impressão." + +#: fdmprinter.def.json +msgctxt "jerk_infill label" +msgid "Infill Jerk" +msgstr "Solavanco de preenchimento" + +#: fdmprinter.def.json +msgctxt "jerk_infill description" +msgid "The maximum instantaneous velocity change with which infill is printed." +msgstr "A mudança de velocidade instantânea máxima com a qual o preenchimento é impresso." + +#: fdmprinter.def.json +msgctxt "jerk_wall label" +msgid "Wall Jerk" +msgstr "Solavanco de parede" + +#: fdmprinter.def.json +msgctxt "jerk_wall description" +msgid "" +"The maximum instantaneous velocity change with which the walls are printed." +msgstr "A mudança de velocidade instantânea máxima com a qual as paredes são impressas." + +#: fdmprinter.def.json +msgctxt "jerk_wall_0 label" +msgid "Outer Wall Jerk" +msgstr "Solavanco de parede externa" + +#: fdmprinter.def.json +msgctxt "jerk_wall_0 description" +msgid "" +"The maximum instantaneous velocity change with which the outermost walls are " +"printed." +msgstr "A mudança de velocidade instantânea máxima com a qual as paredes externas são impressas." + +#: fdmprinter.def.json +msgctxt "jerk_wall_x label" +msgid "Inner Wall Jerk" +msgstr "Solavanco de parede interna" + +#: fdmprinter.def.json +msgctxt "jerk_wall_x description" +msgid "" +"The maximum instantaneous velocity change with which all inner walls are " +"printed." +msgstr "A mudança de velocidade instantânea máxima com a qual todas as paredes internas são impressas." + +#: fdmprinter.def.json +msgctxt "jerk_roofing label" +msgid "Top Surface Skin Jerk" +msgstr "Solavanco de revestimento da superfície superior" + +#: fdmprinter.def.json +msgctxt "jerk_roofing description" +msgid "" +"The maximum instantaneous velocity change with which top surface skin layers " +"are printed." +msgstr "A mudança de velocidade instantânea máxima com a qual as camadas de revestimento da superfície superior são impressas." + +#: fdmprinter.def.json +msgctxt "jerk_topbottom label" +msgid "Top/Bottom Jerk" +msgstr "Solavanco superior/inferior" + +#: fdmprinter.def.json +msgctxt "jerk_topbottom description" +msgid "" +"The maximum instantaneous velocity change with which top/bottom layers are " +"printed." +msgstr "A mudança de velocidade instantânea máxima com a qual as camadas superiores/inferiores são impressas." + +#: fdmprinter.def.json +msgctxt "jerk_support label" +msgid "Support Jerk" +msgstr "Solavanco de suporte" + +#: fdmprinter.def.json +msgctxt "jerk_support description" +msgid "" +"The maximum instantaneous velocity change with which the support structure " +"is printed." +msgstr "A mudança de velocidade instantânea máxima com a qual a estrutura de suporte é impressa." + +#: fdmprinter.def.json +msgctxt "jerk_support_infill label" +msgid "Support Infill Jerk" +msgstr "Solavanco de preenchimento do suporte" + +#: fdmprinter.def.json +msgctxt "jerk_support_infill description" +msgid "" +"The maximum instantaneous velocity change with which the infill of support " +"is printed." +msgstr "A mudança de velocidade instantânea máxima com a qual o preenchimento do suporte é impresso." + +#: fdmprinter.def.json +msgctxt "jerk_support_interface label" +msgid "Support Interface Jerk" +msgstr "Solavanco de interface de suporte" + +#: fdmprinter.def.json +msgctxt "jerk_support_interface description" +msgid "" +"The maximum instantaneous velocity change with which the roofs and floors of " +"support are printed." +msgstr "A mudança de velocidade instantânea máxima com a qual os tetos e pisos de suporte são impressos." + +#: fdmprinter.def.json +msgctxt "jerk_support_roof label" +msgid "Support Roof Jerk" +msgstr "Solavanco de teto de suporte" + +#: fdmprinter.def.json +msgctxt "jerk_support_roof description" +msgid "" +"The maximum instantaneous velocity change with which the roofs of support " +"are printed." +msgstr "A mudança de velocidade instantânea máxima com a qual os tetos de suporte são impressos." + +#: fdmprinter.def.json +msgctxt "jerk_support_bottom label" +msgid "Support Floor Jerk" +msgstr "Solavanco de piso de suporte" + +#: fdmprinter.def.json +msgctxt "jerk_support_bottom description" +msgid "" +"The maximum instantaneous velocity change with which the floors of support " +"are printed." +msgstr "A mudança de velocidade instantânea máxima com a qual os pisos de suporte são impressos." + +#: fdmprinter.def.json +msgctxt "jerk_prime_tower label" +msgid "Prime Tower Jerk" +msgstr "Solavanco da torre de preparação" + +#: fdmprinter.def.json +msgctxt "jerk_prime_tower description" +msgid "" +"The maximum instantaneous velocity change with which the prime tower is " +"printed." +msgstr "A mudança de velocidade instantânea máxima com a qual a torre de preparação é impressa." + +#: fdmprinter.def.json +msgctxt "jerk_travel label" +msgid "Travel Jerk" +msgstr "Solavanco de deslocação" + +#: fdmprinter.def.json +msgctxt "jerk_travel description" +msgid "" +"The maximum instantaneous velocity change with which travel moves are made." +msgstr "A mudança de velocidade instantânea máxima com a qual os movimentos de deslocação são impressos." + +#: fdmprinter.def.json +msgctxt "jerk_layer_0 label" +msgid "Initial Layer Jerk" +msgstr "Solavanco de camada inicial" + +#: fdmprinter.def.json +msgctxt "jerk_layer_0 description" +msgid "The print maximum instantaneous velocity change for the initial layer." +msgstr "A mudança de velocidade instantânea máxima de impressão para a camada inicial." + +#: fdmprinter.def.json +msgctxt "jerk_print_layer_0 label" +msgid "Initial Layer Print Jerk" +msgstr "Solavanco de impressão da camada inicial" + +#: fdmprinter.def.json +msgctxt "jerk_print_layer_0 description" +msgid "" +"The maximum instantaneous velocity change during the printing of the initial " +"layer." +msgstr "A mudança de velocidade instantânea máxima durante a impressão da camada inicial." + +#: fdmprinter.def.json +msgctxt "jerk_travel_layer_0 label" +msgid "Initial Layer Travel Jerk" +msgstr "Solavanco de deslocação da camada inicial" + +#: fdmprinter.def.json +msgctxt "jerk_travel_layer_0 description" +msgid "The acceleration for travel moves in the initial layer." +msgstr "A aceleração dos movimentos de deslocação na camada inicial." + +#: fdmprinter.def.json +msgctxt "jerk_skirt_brim label" +msgid "Skirt/Brim Jerk" +msgstr "Solavanco de contorno/borda" + +#: fdmprinter.def.json +msgctxt "jerk_skirt_brim description" +msgid "" +"The maximum instantaneous velocity change with which the skirt and brim are " +"printed." +msgstr "A mudança de velocidade instantânea máxima com a qual o contorno e a borda são impressos." + +#: fdmprinter.def.json +msgctxt "travel label" +msgid "Travel" +msgstr "Deslocação" + +#: fdmprinter.def.json +msgctxt "travel description" +msgid "travel" +msgstr "deslocação" + +#: fdmprinter.def.json +msgctxt "retraction_combing label" +msgid "Combing Mode" +msgstr "Modo de combing" + +#: fdmprinter.def.json +msgctxt "retraction_combing description" +msgid "" +"Combing keeps the nozzle within already printed areas when traveling. This " +"results in slightly longer travel moves but reduces the need for " +"retractions. If combing is off, the material will retract and the nozzle " +"moves in a straight line to the next point. It is also possible to avoid " +"combing over top/bottom skin areas by combing within the infill only." +msgstr "O combing mantém o bocal nas áreas já impressas durante a deslocação. Isto resulta em movimentos de deslocação ligeiramente mais longos, mas reduz a necessidade de retrações. Se o combing estiver desativado, o material será retraído e o bocal irá deslocar-se em linha reta para o próximo ponto. Também é possível evitar o combing em áreas de revestimento superiores/inferiores efetuando o combing apenas no preenchimento." + +#: fdmprinter.def.json +msgctxt "retraction_combing option off" +msgid "Off" +msgstr "Desligado" + +#: fdmprinter.def.json +msgctxt "retraction_combing option all" +msgid "All" +msgstr "Tudo" + +#: fdmprinter.def.json +msgctxt "retraction_combing option noskin" +msgid "No Skin" +msgstr "Sem revestimento" + +#: fdmprinter.def.json +msgctxt "travel_retract_before_outer_wall label" +msgid "Retract Before Outer Wall" +msgstr "Retrair antes da parede externa" + +#: fdmprinter.def.json +msgctxt "travel_retract_before_outer_wall description" +msgid "Always retract when moving to start an outer wall." +msgstr "Retrair sempre durante o movimento de início de uma parede externa." + +#: fdmprinter.def.json +msgctxt "travel_avoid_other_parts label" +msgid "Avoid Printed Parts When Traveling" +msgstr "Evitar peças impressas durante a deslocação" + +#: fdmprinter.def.json +msgctxt "travel_avoid_other_parts description" +msgid "" +"The nozzle avoids already printed parts when traveling. This option is only " +"available when combing is enabled." +msgstr "O bocal evita as peças já impressas durante a deslocação. Esta opção só está disponível quando o combing está ativado." + +#: fdmprinter.def.json +msgctxt "travel_avoid_distance label" +msgid "Travel Avoid Distance" +msgstr "Distância para evitar peças durante a deslocação" + +#: fdmprinter.def.json +msgctxt "travel_avoid_distance description" +msgid "" +"The distance between the nozzle and already printed parts when avoiding " +"during travel moves." +msgstr "A distância entre o bocal e as peças já impressas ao evitá-las durante os movimentos de deslocação." + +#: fdmprinter.def.json +msgctxt "start_layers_at_same_position label" +msgid "Start Layers with the Same Part" +msgstr "Iniciar camadas com a mesma peça" + +#: fdmprinter.def.json +msgctxt "start_layers_at_same_position description" +msgid "" +"In each layer start with printing the object near the same point, so that we " +"don't start a new layer with printing the piece which the previous layer " +"ended with. This makes for better overhangs and small parts, but increases " +"printing time." +msgstr "Em cada camada, comece por imprimir o objeto junto ao mesmo ponto para não iniciar uma nova camada imprimindo a peça com a qual terminou a camada anterior. Isto produz melhores saliências e pequenas peças, mas aumenta o tempo de impressão." + +#: fdmprinter.def.json +msgctxt "layer_start_x label" +msgid "Layer Start X" +msgstr "X de início da camada" + +#: fdmprinter.def.json +msgctxt "layer_start_x description" +msgid "" +"The X coordinate of the position near where to find the part to start " +"printing each layer." +msgstr "A coordenada X da posição próxima do local onde se situa a peça pela qual iniciar a impressão de cada camada." + +#: fdmprinter.def.json +msgctxt "layer_start_y label" +msgid "Layer Start Y" +msgstr "Y de início da camada" + +#: fdmprinter.def.json +msgctxt "layer_start_y description" +msgid "" +"The Y coordinate of the position near where to find the part to start " +"printing each layer." +msgstr "A coordenada Y da posição do local onde se situa a peça pela qual iniciar a impressão de cada camada." + +#: fdmprinter.def.json +msgctxt "retraction_hop_enabled label" +msgid "Z Hop When Retracted" +msgstr "Salto Z ao retrair" + +#: fdmprinter.def.json +msgctxt "retraction_hop_enabled description" +msgid "" +"Whenever a retraction is done, the build plate is lowered to create " +"clearance between the nozzle and the print. It prevents the nozzle from " +"hitting the print during travel moves, reducing the chance to knock the " +"print from the build plate." +msgstr "Sempre que for efetuada uma retração, a placa de construção é baixada para criar uma folga entre o bocal e a impressão. Desta forma, evita-se que o bocal atinja a impressão durante os movimentos de deslocação, reduzindo a probabilidade de derrubar a impressão da placa de construção." + +#: fdmprinter.def.json +msgctxt "retraction_hop_only_when_collides label" +msgid "Z Hop Only Over Printed Parts" +msgstr "Salto Z apenas sobre as peças impressas" + +#: fdmprinter.def.json +msgctxt "retraction_hop_only_when_collides description" +msgid "" +"Only perform a Z Hop when moving over printed parts which cannot be avoided " +"by horizontal motion by Avoid Printed Parts when Traveling." +msgstr "Efetua um salto Z apenas ao deslocar-se sobre as peças impressas que não podem ser evitadas pelo movimento horizontal através da opção Evitar peças impressas durante a deslocação." + +#: fdmprinter.def.json +msgctxt "retraction_hop label" +msgid "Z Hop Height" +msgstr "Altura do salto Z" + +#: fdmprinter.def.json +msgctxt "retraction_hop description" +msgid "The height difference when performing a Z Hop." +msgstr "A diferença de altura ao efetuar um salto Z." + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch label" +msgid "Z Hop After Extruder Switch" +msgstr "Salto Z após substituição da extrusora" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch description" +msgid "" +"After the machine switched from one extruder to the other, the build plate " +"is lowered to create clearance between the nozzle and the print. This " +"prevents the nozzle from leaving oozed material on the outside of a print." +msgstr "Após a máquina mudar de uma extrusora para outra, a placa de construção é baixada para criar uma folga entre o bocal e a impressão. Desta forma, evita-se que o bocal liberte material vazado para a parte exterior de uma impressão." + +#: fdmprinter.def.json +msgctxt "cooling label" +msgid "Cooling" +msgstr "Arrefecimento" + +#: fdmprinter.def.json +msgctxt "cooling description" +msgid "Cooling" +msgstr "Arrefecimento" + +#: fdmprinter.def.json +msgctxt "cool_fan_enabled label" +msgid "Enable Print Cooling" +msgstr "Ativar arrefecimento de impressão" + +#: fdmprinter.def.json +msgctxt "cool_fan_enabled description" +msgid "" +"Enables the print cooling fans while printing. The fans improve print " +"quality on layers with short layer times and bridging / overhangs." +msgstr "Ativa as ventoinhas de arrefecimento de impressão ao imprimir. As ventoinhas melhoram a qualidade de impressão com menores tempos de camada e pontes/saliências." + +#: fdmprinter.def.json +msgctxt "cool_fan_speed label" +msgid "Fan Speed" +msgstr "Velocidade da ventoinha" + +#: fdmprinter.def.json +msgctxt "cool_fan_speed description" +msgid "The speed at which the print cooling fans spin." +msgstr "A velocidade a que as ventoinhas de arrefecimento da impressão giram." + +#: fdmprinter.def.json +msgctxt "cool_fan_speed_min label" +msgid "Regular Fan Speed" +msgstr "Velocidade normal da ventoinha" + +#: fdmprinter.def.json +msgctxt "cool_fan_speed_min description" +msgid "" +"The speed at which the fans spin before hitting the threshold. When a layer " +"prints faster than the threshold, the fan speed gradually inclines towards " +"the maximum fan speed." +msgstr "A velocidade a que as ventoinhas giram antes de atingir o limiar. Quando uma camada é impressa mais rapidamente do que o limiar, a velocidade da ventoinha tende gradualmente a aproximar-se da velocidade máxima." + +#: fdmprinter.def.json +msgctxt "cool_fan_speed_max label" +msgid "Maximum Fan Speed" +msgstr "Velocidade máxima da ventoinha" + +#: fdmprinter.def.json +msgctxt "cool_fan_speed_max description" +msgid "" +"The speed at which the fans spin on the minimum layer time. The fan speed " +"gradually increases between the regular fan speed and maximum fan speed when " +"the threshold is hit." +msgstr "A velocidade a que as ventoinhas giram no tempo mínimo de camada. A velocidade da ventoinha aumenta gradualmente entre a velocidade normal da ventoinha e a velocidade máxima da ventoinha quando o limiar é alcançado." + +#: fdmprinter.def.json +msgctxt "cool_min_layer_time_fan_speed_max label" +msgid "Regular/Maximum Fan Speed Threshold" +msgstr "Limiar de velocidade normal/máxima da ventoinha" + +#: fdmprinter.def.json +msgctxt "cool_min_layer_time_fan_speed_max description" +msgid "" +"The layer time which sets the threshold between regular fan speed and " +"maximum fan speed. Layers that print slower than this time use regular fan " +"speed. For faster layers the fan speed gradually increases towards the " +"maximum fan speed." +msgstr "O tempo de camada que define o limiar entre a velocidade normal da ventoinha e a velocidade máxima da ventoinha. As camadas que são impressas mais lentamente utilizam a velocidade normal da ventoinha. Para camadas mais rápidas, a velocidade da ventoinha aumenta gradualmente até à velocidade máxima." + +#: fdmprinter.def.json +msgctxt "cool_fan_speed_0 label" +msgid "Initial Fan Speed" +msgstr "Velocidade inicial da ventoinha" + +#: fdmprinter.def.json +msgctxt "cool_fan_speed_0 description" +msgid "" +"The speed at which the fans spin at the start of the print. In subsequent " +"layers the fan speed is gradually increased up to the layer corresponding to " +"Regular Fan Speed at Height." +msgstr "A velocidade a que as ventoinhas giram ao iniciar a impressão. Nas camadas subsequentes, a velocidade da ventoinha aumenta gradualmente até à camada correspondente à Velocidade normal da ventoinha em altura." + +#: fdmprinter.def.json +msgctxt "cool_fan_full_at_height label" +msgid "Regular Fan Speed at Height" +msgstr "Velocidade normal da ventoinha em altura" + +#: fdmprinter.def.json +msgctxt "cool_fan_full_at_height description" +msgid "" +"The height at which the fans spin on regular fan speed. At the layers below " +"the fan speed gradually increases from Initial Fan Speed to Regular Fan " +"Speed." +msgstr "A altura a que as ventoinhas giram à velocidade normal da ventoinha. Nas camadas inferiores, a velocidade da ventoinha aumenta gradualmente da Velocidade inicial da ventoinha para a Velocidade normal da ventoinha." + +#: fdmprinter.def.json +msgctxt "cool_fan_full_layer label" +msgid "Regular Fan Speed at Layer" +msgstr "Velocidade normal da ventoinha na camada" + +#: fdmprinter.def.json +msgctxt "cool_fan_full_layer description" +msgid "" +"The layer at which the fans spin on regular fan speed. If regular fan speed " +"at height is set, this value is calculated and rounded to a whole number." +msgstr "A camada na qual as ventoinhas giram à velocidade normal da ventoinha. Se for definida a velocidade normal da ventoinha em altura, este valor é calculado e arredondado para um número inteiro." + +#: fdmprinter.def.json +msgctxt "cool_min_layer_time label" +msgid "Minimum Layer Time" +msgstr "Tempo mínimo por camada" + +#: fdmprinter.def.json +msgctxt "cool_min_layer_time description" +msgid "" +"The minimum time spent in a layer. This forces the printer to slow down, to " +"at least spend the time set here in one layer. This allows the printed " +"material to cool down properly before printing the next layer. Layers may " +"still take shorter than the minimal layer time if Lift Head is disabled and " +"if the Minimum Speed would otherwise be violated." +msgstr "O tempo mínimo gasto numa camada. Isto força a impressora a abrandar para que, no mínimo, o tempo aqui definido seja gasto numa camada. Isto permite que o material impresso arrefeça devidamente antes de imprimir a camada seguinte. Ainda assim, as camadas podem demorar menos do que o tempo mínimo por camada se a opção Elevar cabeça estiver desativada e se a Velocidade mínima for desrespeitada." + +#: fdmprinter.def.json +msgctxt "cool_min_speed label" +msgid "Minimum Speed" +msgstr "Velocidade mínima" + +#: fdmprinter.def.json +msgctxt "cool_min_speed description" +msgid "" +"The minimum print speed, despite slowing down due to the minimum layer time. " +"When the printer would slow down too much, the pressure in the nozzle would " +"be too low and result in bad print quality." +msgstr "A velocidade mínima de impressão, apesar do abrandamento devido ao tempo mínimo por camada. Se a impressora abrandar demasiado, a pressão do bocal será demasiado baixa, o que resultará numa má qualidade de impressão." + +#: fdmprinter.def.json +msgctxt "cool_lift_head label" +msgid "Lift Head" +msgstr "Elevar cabeça" + +#: fdmprinter.def.json +msgctxt "cool_lift_head description" +msgid "" +"When the minimum speed is hit because of minimum layer time, lift the head " +"away from the print and wait the extra time until the minimum layer time is " +"reached." +msgstr "Quando a velocidade mínima for alcançada devido ao tempo mínimo por camada, eleve e afaste a cabeça da impressão e aguarde o tempo adicional até atingir o tempo mínimo por camada." + +#: fdmprinter.def.json +msgctxt "support label" +msgid "Support" +msgstr "Suporte" + +#: fdmprinter.def.json +msgctxt "support description" +msgid "Support" +msgstr "Suporte" + +#: fdmprinter.def.json +msgctxt "support_enable label" +msgid "Generate Support" +msgstr "Gerar suporte" + +#: fdmprinter.def.json +msgctxt "support_enable description" +msgid "" +"Generate structures to support parts of the model which have overhangs. " +"Without these structures, such parts would collapse during printing." +msgstr "Gera estruturas para suportar peças do modelo com saliências. Sem estas estruturas, essas peças desintegrar-se-iam durante a impressão." + +#: fdmprinter.def.json +msgctxt "support_extruder_nr label" +msgid "Support Extruder" +msgstr "Extrusora de suporte" + +#: fdmprinter.def.json +msgctxt "support_extruder_nr description" +msgid "" +"The extruder train to use for printing the support. This is used in multi-" +"extrusion." +msgstr "A máquina de extrusão a ser utilizada para imprimir o suporte. Esta é utilizada em extrusões múltiplas." + +#: fdmprinter.def.json +msgctxt "support_infill_extruder_nr label" +msgid "Support Infill Extruder" +msgstr "Extrusora de preenchimento do suporte" + +#: fdmprinter.def.json +msgctxt "support_infill_extruder_nr description" +msgid "" +"The extruder train to use for printing the infill of the support. This is " +"used in multi-extrusion." +msgstr "A máquina de extrusão a ser utilizada para imprimir o preenchimento do suporte. Esta é utilizada em extrusões múltiplas." + +#: fdmprinter.def.json +msgctxt "support_extruder_nr_layer_0 label" +msgid "First Layer Support Extruder" +msgstr "Extrusora de suporte da primeira camada" + +#: fdmprinter.def.json +msgctxt "support_extruder_nr_layer_0 description" +msgid "" +"The extruder train to use for printing the first layer of support infill. " +"This is used in multi-extrusion." +msgstr "A máquina de extrusão a ser utilizada para imprimir a primeira camada de preenchimento do suporte. Esta é utilizada em extrusões múltiplas." + +#: fdmprinter.def.json +msgctxt "support_interface_extruder_nr label" +msgid "Support Interface Extruder" +msgstr "Extrusora de interface de suporte" + +#: fdmprinter.def.json +msgctxt "support_interface_extruder_nr description" +msgid "" +"The extruder train to use for printing the roofs and floors of the support. " +"This is used in multi-extrusion." +msgstr "A máquina de extrusão a ser utilizada para imprimir os tetos e pisos do suporte. Esta é utilizada em extrusões múltiplas." + +#: fdmprinter.def.json +msgctxt "support_roof_extruder_nr label" +msgid "Support Roof Extruder" +msgstr "Extrusora de teto de suporte" + +#: fdmprinter.def.json +msgctxt "support_roof_extruder_nr description" +msgid "" +"The extruder train to use for printing the roofs of the support. This is " +"used in multi-extrusion." +msgstr "A máquina de extrusão a ser utilizada para imprimir os tetos de suporte. Esta é utilizada em extrusões múltiplas." + +#: fdmprinter.def.json +msgctxt "support_bottom_extruder_nr label" +msgid "Support Floor Extruder" +msgstr "Extrusora de piso de suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_extruder_nr description" +msgid "" +"The extruder train to use for printing the floors of the support. This is " +"used in multi-extrusion." +msgstr "A máquina de extrusão a ser utilizada para imprimir os pisos de suporte. Esta é utilizada em extrusões múltiplas." + +#: fdmprinter.def.json +msgctxt "support_type label" +msgid "Support Placement" +msgstr "Colocação do suporte" + +#: fdmprinter.def.json +msgctxt "support_type description" +msgid "" +"Adjusts the placement of the support structures. The placement can be set to " +"touching build plate or everywhere. When set to everywhere the support " +"structures will also be printed on the model." +msgstr "Ajusta a colocação das estruturas de suporte. A colocação pode ser definida para tocar na placa de construção ou em todo o lado. Quando definida para tocar em todo o lado, as estruturas de suporte também serão impressas no modelo." + +#: fdmprinter.def.json +msgctxt "support_type option buildplate" +msgid "Touching Buildplate" +msgstr "Tocar na placa de construção" + +#: fdmprinter.def.json +msgctxt "support_type option everywhere" +msgid "Everywhere" +msgstr "Em todo o lado" + +#: fdmprinter.def.json +msgctxt "support_angle label" +msgid "Support Overhang Angle" +msgstr "Ângulo de saliência de suporte" + +#: fdmprinter.def.json +msgctxt "support_angle description" +msgid "" +"The minimum angle of overhangs for which support is added. At a value of 0° " +"all overhangs are supported, 90° will not provide any support." +msgstr "O ângulo mínimo de saliências ao qual é adicionado suporte. Com um valor de 0°, todas as saliências são suportadas e com um valor de 90° não será fornecido qualquer suporte." + +#: fdmprinter.def.json +msgctxt "support_pattern label" +msgid "Support Pattern" +msgstr "Padrão de suporte" + +#: fdmprinter.def.json +msgctxt "support_pattern description" +msgid "" +"The pattern of the support structures of the print. The different options " +"available result in sturdy or easy to remove support." +msgstr "O padrão das estruturas de suporte da impressão. As diferentes opções disponíveis resultam num suporte robusto ou de fácil remoção." + +#: fdmprinter.def.json +msgctxt "support_pattern option lines" +msgid "Lines" +msgstr "Linhas" + +#: fdmprinter.def.json +msgctxt "support_pattern option grid" +msgid "Grid" +msgstr "Grelha" + +#: fdmprinter.def.json +msgctxt "support_pattern option triangles" +msgid "Triangles" +msgstr "Triângulos" + +#: fdmprinter.def.json +msgctxt "support_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "support_pattern option concentric_3d" +msgid "Concentric 3D" +msgstr "Concêntrico 3D" + +#: fdmprinter.def.json +msgctxt "support_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "support_pattern option cross" +msgid "Cross" +msgstr "Cruz" + +#: fdmprinter.def.json +msgctxt "support_connect_zigzags label" +msgid "Connect Support ZigZags" +msgstr "Ligar ziguezagues de suporte" + +#: fdmprinter.def.json +msgctxt "support_connect_zigzags description" +msgid "" +"Connect the ZigZags. This will increase the strength of the zig zag support " +"structure." +msgstr "Liga os ziguezagues. Isto irá aumentar a resistência da estrutura de suporte em ziguezague." + +#: fdmprinter.def.json +msgctxt "support_infill_rate label" +msgid "Support Density" +msgstr "Densidade do suporte" + +#: fdmprinter.def.json +msgctxt "support_infill_rate description" +msgid "" +"Adjusts the density of the support structure. A higher value results in " +"better overhangs, but the supports are harder to remove." +msgstr "Ajusta a densidade da estrutura de suporte. Um valor mais elevado resulta em melhores saliências, embora os suportes sejam mais difíceis de remover." + +#: fdmprinter.def.json +msgctxt "support_line_distance label" +msgid "Support Line Distance" +msgstr "Distância da linha de suporte" + +#: fdmprinter.def.json +msgctxt "support_line_distance description" +msgid "" +"Distance between the printed support structure lines. This setting is " +"calculated by the support density." +msgstr "A distância entre as linhas da estrutura de suporte impressas. Esta definição é calculada através da densidade do suporte." + +#: fdmprinter.def.json +msgctxt "support_z_distance label" +msgid "Support Z Distance" +msgstr "Distância Z de suporte" + +#: fdmprinter.def.json +msgctxt "support_z_distance description" +msgid "" +"Distance from the top/bottom of the support structure to the print. This gap " +"provides clearance to remove the supports after the model is printed. This " +"value is rounded up to a multiple of the layer height." +msgstr "A distância entre a parte superior/inferior da estrutura de suporte e a impressão. Esta folga permite retirar os suportes depois de o modelo ser impresso. Este valor é arredondado para um múltiplo da altura da camada." + +#: fdmprinter.def.json +msgctxt "support_top_distance label" +msgid "Support Top Distance" +msgstr "Distância superior do suporte" + +#: fdmprinter.def.json +msgctxt "support_top_distance description" +msgid "Distance from the top of the support to the print." +msgstr "A distância entre a parte superior do suporte e a impressão." + +#: fdmprinter.def.json +msgctxt "support_bottom_distance label" +msgid "Support Bottom Distance" +msgstr "Distância inferior do suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_distance description" +msgid "Distance from the print to the bottom of the support." +msgstr "A distância entre a impressão e a parte inferior do suporte." + +#: fdmprinter.def.json +msgctxt "support_xy_distance label" +msgid "Support X/Y Distance" +msgstr "Distância X/Y do suporte" + +#: fdmprinter.def.json +msgctxt "support_xy_distance description" +msgid "Distance of the support structure from the print in the X/Y directions." +msgstr "A distância entre a estrutura de suporte e a impressão nas direções X/Y." + +#: fdmprinter.def.json +msgctxt "support_xy_overrides_z label" +msgid "Support Distance Priority" +msgstr "Prioridade da distância de suporte" + +#: fdmprinter.def.json +msgctxt "support_xy_overrides_z description" +msgid "" +"Whether the Support X/Y Distance overrides the Support Z Distance or vice " +"versa. When X/Y overrides Z the X/Y distance can push away the support from " +"the model, influencing the actual Z distance to the overhang. We can disable " +"this by not applying the X/Y distance around overhangs." +msgstr "Se a Distância X/Y de suporte substitui a Distância Z de suporte ou vice-versa. Quando X/Y substitui Z, a distância X/Y pode afastar o suporte do modelo, influenciando a distância Z real relativamente às saliências. É possível desativar esta opção não aplicando a distância X/Y em torno das saliências." + +#: fdmprinter.def.json +msgctxt "support_xy_overrides_z option xy_overrides_z" +msgid "X/Y overrides Z" +msgstr "X/Y substitui Z" + +#: fdmprinter.def.json +msgctxt "support_xy_overrides_z option z_overrides_xy" +msgid "Z overrides X/Y" +msgstr "Z substitui X/Y" + +#: fdmprinter.def.json +msgctxt "support_xy_distance_overhang label" +msgid "Minimum Support X/Y Distance" +msgstr "Distância X/Y mínima de suporte" + +#: fdmprinter.def.json +msgctxt "support_xy_distance_overhang description" +msgid "" +"Distance of the support structure from the overhang in the X/Y directions. " +msgstr "A distância da estrutura de suporte relativamente às saliências nas direções X/Y. " + +#: fdmprinter.def.json +msgctxt "support_bottom_stair_step_height label" +msgid "Support Stair Step Height" +msgstr "Altura dos degraus de suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_stair_step_height description" +msgid "" +"The height of the steps of the stair-like bottom of support resting on the " +"model. A low value makes the support harder to remove, but too high values " +"can lead to unstable support structures. Set to zero to turn off the stair-" +"like behaviour." +msgstr "A altura dos degraus da parte inferior semelhante a uma escada do suporte apoiado sobre o modelo. Um valor inferior dificulta a remoção do suporte, mas valores demasiado elevados podem resultar em estruturas de suporte instáveis. É definido como zero para desativar o comportamento semelhante a uma escada." + +#: fdmprinter.def.json +msgctxt "support_bottom_stair_step_width label" +msgid "Support Stair Step Maximum Width" +msgstr "Largura máxima dos degraus de suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_stair_step_width description" +msgid "" +"The maximum width of the steps of the stair-like bottom of support resting " +"on the model. A low value makes the support harder to remove, but too high " +"values can lead to unstable support structures." +msgstr "A largura máxima dos degraus da parte inferior semelhante a uma escada do suporte apoiado sobre o modelo. Um valor inferior dificulta a remoção do suporte, mas valores demasiado elevados podem resultar em estruturas de suporte instáveis." + +#: fdmprinter.def.json +msgctxt "support_join_distance label" +msgid "Support Join Distance" +msgstr "Distância da junção do suporte" + +#: fdmprinter.def.json +msgctxt "support_join_distance description" +msgid "" +"The maximum distance between support structures in the X/Y directions. When " +"seperate structures are closer together than this value, the structures " +"merge into one." +msgstr "A distância máxima entre as estruturas de suporte nas direções X/Y. Quando as estruturas separadas estão mais próximas do que este valor, as estruturas fundem-se numa só." + +#: fdmprinter.def.json +msgctxt "support_offset label" +msgid "Support Horizontal Expansion" +msgstr "Expansão horizontal de suporte" + +#: fdmprinter.def.json +msgctxt "support_offset description" +msgid "" +"Amount of offset applied to all support polygons in each layer. Positive " +"values can smooth out the support areas and result in more sturdy support." +msgstr "Quantidade de desvio aplicado a todos os polígonos de suporte em cada camada. Os valores positivos podem uniformizar as áreas de suporte e produzir suportes mais robustos." + +#: fdmprinter.def.json +msgctxt "support_infill_sparse_thickness label" +msgid "Support Infill Layer Thickness" +msgstr "Espessura da camada de preenchimento de suporte" + +#: fdmprinter.def.json +msgctxt "support_infill_sparse_thickness description" +msgid "" +"The thickness per layer of support infill material. This value should always " +"be a multiple of the layer height and is otherwise rounded." +msgstr "A espessura por camada de material de preenchimento de suporte. Este valor deve sempre ser um múltiplo da altura da camada. Caso contrário, será arredondado." + +#: fdmprinter.def.json +msgctxt "gradual_support_infill_steps label" +msgid "Gradual Support Infill Steps" +msgstr "Passos de preenchimento gradual de suporte" + +#: fdmprinter.def.json +msgctxt "gradual_support_infill_steps description" +msgid "" +"Number of times to reduce the support infill density by half when getting " +"further below top surfaces. Areas which are closer to top surfaces get a " +"higher density, up to the Support Infill Density." +msgstr "O número de vezes que a densidade de preenchimento do suporte deve ser reduzida para metade ao alcançar superfícies superiores mais abaixo. As áreas que se encontram mais próximas das superfícies superiores obtêm uma maior densidade, até ao limite da Densidade de preenchimento do suporte." + +#: fdmprinter.def.json +msgctxt "gradual_support_infill_step_height label" +msgid "Gradual Support Infill Step Height" +msgstr "Altura do passo de preenchimento gradual de suporte" + +#: fdmprinter.def.json +msgctxt "gradual_support_infill_step_height description" +msgid "" +"The height of support infill of a given density before switching to half the " +"density." +msgstr "A altura do preenchimento de suporte de uma determinada densidade antes de mudar para metade da densidade." + +#: fdmprinter.def.json +msgctxt "support_interface_enable label" +msgid "Enable Support Interface" +msgstr "Ativar interface de suporte" + +#: fdmprinter.def.json +msgctxt "support_interface_enable description" +msgid "" +"Generate a dense interface between the model and the support. This will " +"create a skin at the top of the support on which the model is printed and at " +"the bottom of the support, where it rests on the model." +msgstr "Gera uma interface densa entre o modelo e o suporte. Isto irá criar um revestimento na parte superior do suporte, onde o modelo é impresso, e na parte inferior do suporte, onde este é apoiado sobre o modelo." + +#: fdmprinter.def.json +msgctxt "support_roof_enable label" +msgid "Enable Support Roof" +msgstr "Ativar teto de suporte" + +#: fdmprinter.def.json +msgctxt "support_roof_enable description" +msgid "" +"Generate a dense slab of material between the top of support and the model. " +"This will create a skin between the model and support." +msgstr "Gera uma placa densa de material entre a parte superior do suporte e o modelo. Isto irá criar um revestimento entre o modelo e o suporte." + +#: fdmprinter.def.json +msgctxt "support_bottom_enable label" +msgid "Enable Support Floor" +msgstr "Ativar piso de suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_enable description" +msgid "" +"Generate a dense slab of material between the bottom of the support and the " +"model. This will create a skin between the model and support." +msgstr "Gera uma placa densa de material entre a parte inferior do suporte e o modelo. Isto irá criar um revestimento entre o modelo e o suporte." + +#: fdmprinter.def.json +msgctxt "support_interface_height label" +msgid "Support Interface Thickness" +msgstr "Espessura da interface de suporte" + +#: fdmprinter.def.json +msgctxt "support_interface_height description" +msgid "" +"The thickness of the interface of the support where it touches with the " +"model on the bottom or the top." +msgstr "A espessura da interface de suporte onde esta entra em contacto com o modelo na parte inferior ou superior." + +#: fdmprinter.def.json +msgctxt "support_roof_height label" +msgid "Support Roof Thickness" +msgstr "Espessura do teto de suporte" + +#: fdmprinter.def.json +msgctxt "support_roof_height description" +msgid "" +"The thickness of the support roofs. This controls the amount of dense layers " +"at the top of the support on which the model rests." +msgstr "A espessura dos tetos de suporte. Isto controla a quantidade de camadas densas na parte superior do suporte na qual o modelo é apoiado." + +#: fdmprinter.def.json +msgctxt "support_bottom_height label" +msgid "Support Floor Thickness" +msgstr "Espessura do piso de suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_height description" +msgid "" +"The thickness of the support floors. This controls the number of dense " +"layers that are printed on top of places of a model on which support rests." +msgstr "A espessura dos pisos de suporte. Isto controla o número de camadas densas que são impressas por cima de locais de um modelo no qual o suporte é apoiado." + +#: fdmprinter.def.json +msgctxt "support_interface_skip_height label" +msgid "Support Interface Resolution" +msgstr "Resolução da interface de suporte" + +#: fdmprinter.def.json +msgctxt "support_interface_skip_height description" +msgid "" +"When checking where there's model above and below the support, take steps of " +"the given height. Lower values will slice slower, while higher values may " +"cause normal support to be printed in some places where there should have " +"been support interface." +msgstr "Ao verificar os locais onde existe modelo por cima e por baixo do suporte, tome as medidas necessárias de acordo com a altura determinada. Os valores mais reduzidos irão segmentar mais lentamente, enquanto os valores mais elevados podem fazer com que o suporte normal seja impresso em alguns locais onde deveria existir uma interface de suporte." + +#: fdmprinter.def.json +msgctxt "support_interface_density label" +msgid "Support Interface Density" +msgstr "Densidade da interface de suporte" + +#: fdmprinter.def.json +msgctxt "support_interface_density description" +msgid "" +"Adjusts the density of the roofs and floors of the support structure. A " +"higher value results in better overhangs, but the supports are harder to " +"remove." +msgstr "Ajusta a densidade dos tetos e pisos da estrutura de suporte. Um valor mais elevado resulta em melhores saliências, embora os suportes sejam mais difíceis de remover." + +#: fdmprinter.def.json +msgctxt "support_roof_density label" +msgid "Support Roof Density" +msgstr "Densidade do teto de suporte" + +#: fdmprinter.def.json +msgctxt "support_roof_density description" +msgid "" +"The density of the roofs of the support structure. A higher value results in " +"better overhangs, but the supports are harder to remove." +msgstr "A densidade dos tetos da estrutura de suporte. Um valor mais elevado resulta em melhores saliências, embora os suportes sejam mais difíceis de remover." + +#: fdmprinter.def.json +msgctxt "support_roof_line_distance label" +msgid "Support Roof Line Distance" +msgstr "Distância da linha do teto de suporte" + +#: fdmprinter.def.json +msgctxt "support_roof_line_distance description" +msgid "" +"Distance between the printed support roof lines. This setting is calculated " +"by the Support Roof Density, but can be adjusted separately." +msgstr "A distância entre as linhas do teto de suporte impressas. Esta definição é calculada através da Densidade do teto de suporte, mas pode ser ajustada em separado." + +#: fdmprinter.def.json +msgctxt "support_bottom_density label" +msgid "Support Floor Density" +msgstr "Densidade do piso de suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_density description" +msgid "" +"The density of the floors of the support structure. A higher value results " +"in better adhesion of the support on top of the model." +msgstr "A densidade dos pisos da estrutura de suporte. Um valor mais elevado resulta numa melhor aderência do suporte na parte superior do modelo." + +#: fdmprinter.def.json +msgctxt "support_bottom_line_distance label" +msgid "Support Floor Line Distance" +msgstr "Distância da linha do piso de suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_line_distance description" +msgid "" +"Distance between the printed support floor lines. This setting is calculated " +"by the Support Floor Density, but can be adjusted separately." +msgstr "A distância entre as linhas do piso de suporte impressas. Esta definição é calculada através da Densidade do piso de suporte, mas pode ser ajustada em separado." + +#: fdmprinter.def.json +msgctxt "support_interface_pattern label" +msgid "Support Interface Pattern" +msgstr "Padrão da interface de suporte" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern description" +msgid "" +"The pattern with which the interface of the support with the model is " +"printed." +msgstr "O padrão com o qual a interface de suporte do modelo é impressa." + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option lines" +msgid "Lines" +msgstr "Linhas" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option grid" +msgid "Grid" +msgstr "Grelha" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option triangles" +msgid "Triangles" +msgstr "Triângulos" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option concentric_3d" +msgid "Concentric 3D" +msgstr "Concêntrico 3D" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern label" +msgid "Support Roof Pattern" +msgstr "Padrão do teto de suporte" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern description" +msgid "The pattern with which the roofs of the support are printed." +msgstr "O padrão com que os tetos do suporte são impressos." + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option lines" +msgid "Lines" +msgstr "Linhas" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option grid" +msgid "Grid" +msgstr "Grelha" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option triangles" +msgid "Triangles" +msgstr "Triângulos" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option concentric_3d" +msgid "Concentric 3D" +msgstr "Concêntrico 3D" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern label" +msgid "Support Floor Pattern" +msgstr "Padrão do piso de suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern description" +msgid "The pattern with which the floors of the support are printed." +msgstr "O padrão com que os pisos do suporte são impressos." + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option lines" +msgid "Lines" +msgstr "Linhas" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option grid" +msgid "Grid" +msgstr "Grelha" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option triangles" +msgid "Triangles" +msgstr "Triângulos" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option concentric" +msgid "Concentric" +msgstr "Concêntrico" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option concentric_3d" +msgid "Concentric 3D" +msgstr "Concêntrico 3D" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option zigzag" +msgid "Zig Zag" +msgstr "Ziguezague" + +#: fdmprinter.def.json +msgctxt "support_use_towers label" +msgid "Use Towers" +msgstr "Utilizar torres" + +#: fdmprinter.def.json +msgctxt "support_use_towers description" +msgid "" +"Use specialized towers to support tiny overhang areas. These towers have a " +"larger diameter than the region they support. Near the overhang the towers' " +"diameter decreases, forming a roof." +msgstr "Utiliza torres especializadas para suportar pequenas áreas de saliências. Estas torres têm um diâmetro maior do que a região que suportam. Junto às saliências, o diâmetro das torres diminui, formando um teto." + +#: fdmprinter.def.json +msgctxt "support_tower_diameter label" +msgid "Tower Diameter" +msgstr "Diâmetro da torre" + +#: fdmprinter.def.json +msgctxt "support_tower_diameter description" +msgid "The diameter of a special tower." +msgstr "O diâmetro de uma torre especial." + +#: fdmprinter.def.json +msgctxt "support_minimal_diameter label" +msgid "Minimum Diameter" +msgstr "Diâmetro mínimo" + +#: fdmprinter.def.json +msgctxt "support_minimal_diameter description" +msgid "" +"Minimum diameter in the X/Y directions of a small area which is to be " +"supported by a specialized support tower." +msgstr "O diâmetro mínimo nas direções X/Y de uma pequena área que deverá ser suportada por uma torre de suporte especializada." + +#: fdmprinter.def.json +msgctxt "support_tower_roof_angle label" +msgid "Tower Roof Angle" +msgstr "Ângulo do teto da torre" + +#: fdmprinter.def.json +msgctxt "support_tower_roof_angle description" +msgid "" +"The angle of a rooftop of a tower. A higher value results in pointed tower " +"roofs, a lower value results in flattened tower roofs." +msgstr "O ângulo do topo de uma torre. Um valor mais elevado resulta em tetos de torre pontiagudos, enquanto um valor mais reduzido resulta em tetos de torre achatados." + +#: fdmprinter.def.json +msgctxt "platform_adhesion label" +msgid "Build Plate Adhesion" +msgstr "Aderência à placa de construção" + +#: fdmprinter.def.json +msgctxt "platform_adhesion description" +msgid "Adhesion" +msgstr "Aderência" + +#: fdmprinter.def.json +msgctxt "prime_blob_enable label" +msgid "Enable Prime Blob" +msgstr "Ativar blob de preparação" + +#: fdmprinter.def.json +msgctxt "prime_blob_enable description" +msgid "" +"Whether to prime the filament with a blob before printing. Turning this " +"setting on will ensure that the extruder will have material ready at the " +"nozzle before printing. Printing Brim or Skirt can act like priming too, in " +"which case turning this setting off saves some time." +msgstr "Preparar ou não o filamento com um blob antes da impressão. Ativar esta definição irá assegurar que a extrusora terá material pronto no bocal antes da impressão. A opção Imprimir borda ou contorno também pode atuar como purga, caso esse em que desativar esta definição permite ganhar algum tempo." + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_x label" +msgid "Extruder Prime X Position" +msgstr "Posição X de preparação da extrusora" + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_x description" +msgid "" +"The X coordinate of the position where the nozzle primes at the start of " +"printing." +msgstr "A coordenada X da posição de preparação do bocal ao iniciar a impressão." + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_y label" +msgid "Extruder Prime Y Position" +msgstr "Posição Y de preparação da extrusora" + +#: fdmprinter.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 "A coordenada Y da posição de preparação do bocal ao iniciar a impressão." + +#: fdmprinter.def.json +msgctxt "adhesion_type label" +msgid "Build Plate Adhesion Type" +msgstr "Tipo de aderência à placa de construção" + +#: fdmprinter.def.json +msgctxt "adhesion_type description" +msgid "" +"Different options that help to improve both priming your extrusion and " +"adhesion to the build plate. Brim adds a single layer flat area around the " +"base of your model to prevent warping. Raft adds a thick grid with a roof " +"below the model. Skirt is a line printed around the model, but not connected " +"to the model." +msgstr "Diferentes opções que ajudam a melhorar a purga da extrusão e a aderência à placa de construção. A borda acrescenta uma área plana de camada única em torno da base do modelo para evitar a deformação. A base reticular acrescenta uma grelha espessa com um teto por baixo do modelo. O contorno é uma linha impressa à volta do modelo, mas que não está ligada ao modelo." + +#: fdmprinter.def.json +msgctxt "adhesion_type option skirt" +msgid "Skirt" +msgstr "Contorno" + +#: fdmprinter.def.json +msgctxt "adhesion_type option brim" +msgid "Brim" +msgstr "Borda" + +#: fdmprinter.def.json +msgctxt "adhesion_type option raft" +msgid "Raft" +msgstr "Base reticular" + +#: fdmprinter.def.json +msgctxt "adhesion_type option none" +msgid "None" +msgstr "Nenhum" + +#: fdmprinter.def.json +msgctxt "adhesion_extruder_nr label" +msgid "Build Plate Adhesion Extruder" +msgstr "Extrusora de aderência à placa de construção" + +#: fdmprinter.def.json +msgctxt "adhesion_extruder_nr description" +msgid "" +"The extruder train to use for printing the skirt/brim/raft. This is used in " +"multi-extrusion." +msgstr "A máquina de extrusão a ser utilizada para imprimir o contorno/a borda/a base reticular. Esta é utilizada em extrusões múltiplas." + +#: fdmprinter.def.json +msgctxt "skirt_line_count label" +msgid "Skirt Line Count" +msgstr "Contagem de linhas de contorno" + +#: fdmprinter.def.json +msgctxt "skirt_line_count description" +msgid "" +"Multiple skirt lines help to prime your extrusion better for small models. " +"Setting this to 0 will disable the skirt." +msgstr "Linhas de contorno múltiplas ajudam a preparar melhor a extrusão para modelos pequenos. Definir a contagem como 0 irá desativar o contorno." + +#: fdmprinter.def.json +msgctxt "skirt_gap label" +msgid "Skirt Distance" +msgstr "Distância do contorno" + +#: fdmprinter.def.json +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 "A distância horizontal entre o contorno e a primeira camada da impressão.\nEsta é a distância mínima. Linhas de contorno múltiplas irão estender-se para fora desta distância." + +#: fdmprinter.def.json +msgctxt "skirt_brim_minimal_length label" +msgid "Skirt/Brim Minimum Length" +msgstr "Comprimento mínimo do contorno/da borda" + +#: fdmprinter.def.json +msgctxt "skirt_brim_minimal_length description" +msgid "" +"The minimum length of the skirt or brim. If this length is not reached by " +"all skirt or brim lines together, more skirt or brim lines will be added " +"until the minimum length is reached. Note: If the line count is set to 0 " +"this is ignored." +msgstr "O comprimento mínimo do contorno ou da borda. Se este comprimento não for alcançado em conjunto por todas as linhas de contorno ou borda, serão acrescentadas mais linhas de contorno ou borda até o comprimento mínimo ser alcançado. Nota: Se a contagem de linhas for definida como 0, isto é ignorado." + +#: fdmprinter.def.json +msgctxt "brim_width label" +msgid "Brim Width" +msgstr "Largura da borda" + +#: fdmprinter.def.json +msgctxt "brim_width description" +msgid "" +"The distance from the model to the outermost brim line. A larger brim " +"enhances adhesion to the build plate, but also reduces the effective print " +"area." +msgstr "A distância do modelo à linha de borda mais exterior. Uma borda mais larga melhora a aderência à placa de construção, mas também reduz a área de impressão efetiva." + +#: fdmprinter.def.json +msgctxt "brim_line_count label" +msgid "Brim Line Count" +msgstr "Contagem de linhas de borda" + +#: fdmprinter.def.json +msgctxt "brim_line_count description" +msgid "" +"The number of lines used for a brim. More brim lines enhance adhesion to the " +"build plate, but also reduces the effective print area." +msgstr "O número de linhas utilizado para uma borda. Uma maior quantidade de linhas de borda melhora a aderência à placa de construção, mas também reduz a área de impressão efetiva." + +#: fdmprinter.def.json +msgctxt "brim_outside_only label" +msgid "Brim Only on Outside" +msgstr "Borda apenas no exterior" + +#: fdmprinter.def.json +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 "Imprime apenas a borda no exterior do modelo. Isto reduz a quantidade de bordas a remover posteriormente, mas não reduz tanto a aderência à base." + +#: fdmprinter.def.json +msgctxt "raft_margin label" +msgid "Raft Extra Margin" +msgstr "Margem adicional da base reticular" + +#: fdmprinter.def.json +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 a base reticular for ativada, esta será a área de base reticular adicional em torno do modelo, a qual também receberá uma base reticular. Aumentar esta margem irá criar uma base reticular mais sólida, ao mesmo tempo que irá utilizar mais material e deixar menos área para a impressão." + +#: fdmprinter.def.json +msgctxt "raft_smoothing label" +msgid "Raft Smoothing" +msgstr "Suavização da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_smoothing description" +msgid "" +"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." +msgstr "Esta definição controla o nível de arredondamento dos cantos internos no contorno da base reticular. Os cantos internos são arredondados para um semicírculo com um raio igual ao valor aqui fornecido. Esta definição também remove os orifícios no contorno da base reticular que sejam inferiores a esse semicírculo." + +#: fdmprinter.def.json +msgctxt "raft_airgap label" +msgid "Raft Air Gap" +msgstr "Folga de ar da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_airgap description" +msgid "" +"The gap between the final raft layer and the first layer of the model. Only " +"the first layer is raised by this amount to lower the bonding between the " +"raft layer and the model. Makes it easier to peel off the raft." +msgstr "A folga entre a camada da base reticular final e a primeira camada do modelo. Apenas a primeira camada é elevada de acordo com este valor para diminuir a ligação entre a camada da base reticular e o modelo. Isto facilita a remoção da base reticular." + +#: fdmprinter.def.json +msgctxt "layer_0_z_overlap label" +msgid "Initial Layer Z Overlap" +msgstr "Sobreposição Z da camada inicial" + +#: fdmprinter.def.json +msgctxt "layer_0_z_overlap description" +msgid "" +"Make the first and second layer of the model overlap in the Z direction to " +"compensate for the filament lost in the airgap. All models above the first " +"model layer will be shifted down by this amount." +msgstr "Sobrepõe a primeira e a segunda camadas do modelo na direção Z para compensar o filamento perdido na folga de ar. Todos os modelos acima da primeira camada do modelo serão deslocados para baixo neste valor." + +#: fdmprinter.def.json +msgctxt "raft_surface_layers label" +msgid "Raft Top Layers" +msgstr "Camadas superiores da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_surface_layers description" +msgid "" +"The number of top layers on top of the 2nd raft layer. These are fully " +"filled layers that the model sits on. 2 layers result in a smoother top " +"surface than 1." +msgstr "O número de camadas superiores na parte superior da 2.ª camada da base reticular. Estas são camadas totalmente preenchidas onde o modelo é apoiado. Duas camadas resultam numa superfície superior mais uniforme do que uma." + +#: fdmprinter.def.json +msgctxt "raft_surface_thickness label" +msgid "Raft Top Layer Thickness" +msgstr "Espessura das camada superiores da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_surface_thickness description" +msgid "Layer thickness of the top raft layers." +msgstr "A espessura das camadas superiores da base reticular." + +#: fdmprinter.def.json +msgctxt "raft_surface_line_width label" +msgid "Raft Top Line Width" +msgstr "Largura das linhas superiores da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_surface_line_width description" +msgid "" +"Width of the lines in the top surface of the raft. These can be thin lines " +"so that the top of the raft becomes smooth." +msgstr "A largura das linhas na superfície superior da base reticular. Estas podem ser linhas finas para que a parte superior da base reticular fique uniforme." + +#: fdmprinter.def.json +msgctxt "raft_surface_line_spacing label" +msgid "Raft Top Spacing" +msgstr "Espaçamento superior da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_surface_line_spacing description" +msgid "" +"The distance between the raft lines for the top raft layers. The spacing " +"should be equal to the line width, so that the surface is solid." +msgstr "A distância entre as linhas da base reticular para as camadas superiores da base reticular. O espaçamento deve ser igual à largura da linha, para que a superfície seja sólida." + +#: fdmprinter.def.json +msgctxt "raft_interface_thickness label" +msgid "Raft Middle Thickness" +msgstr "Espessura média da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_interface_thickness description" +msgid "Layer thickness of the middle raft layer." +msgstr "A espessura da camada média da base reticular." + +#: fdmprinter.def.json +msgctxt "raft_interface_line_width label" +msgid "Raft Middle Line Width" +msgstr "Largura da linha média da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_interface_line_width description" +msgid "" +"Width of the lines in the middle raft layer. Making the second layer extrude " +"more causes the lines to stick to the build plate." +msgstr "A largura das linhas na camada média da base reticular. Extrudir mais a segunda camada provoca a aderência das linhas à placa de construção." + +#: fdmprinter.def.json +msgctxt "raft_interface_line_spacing label" +msgid "Raft Middle Spacing" +msgstr "Espaçamento médio da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_interface_line_spacing description" +msgid "" +"The distance between the raft lines for the middle raft layer. The spacing " +"of the middle should be quite wide, while being dense enough to support the " +"top raft layers." +msgstr "A distância entre as linhas da base reticular para a camada média da base reticular. O espaçamento médio deve ser bastante amplo, mas suficientemente denso para suportar as camadas superiores da base reticular." + +#: fdmprinter.def.json +msgctxt "raft_base_thickness label" +msgid "Raft Base Thickness" +msgstr "Espessura inferior da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_base_thickness description" +msgid "" +"Layer thickness of the base raft layer. This should be a thick layer which " +"sticks firmly to the printer build plate." +msgstr "A espessura da camada inferior da base reticular. Esta deve ser uma camada espessa que adira firmemente à placa de construção da impressora." + +#: fdmprinter.def.json +msgctxt "raft_base_line_width label" +msgid "Raft Base Line Width" +msgstr "Largura da linha inferior da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_base_line_width description" +msgid "" +"Width of the lines in the base raft layer. These should be thick lines to " +"assist in build plate adhesion." +msgstr "A largura das linhas na camada inferior da base reticular. Estas devem ser linhas espessas para auxiliar na aderência à placa de construção." + +#: fdmprinter.def.json +msgctxt "raft_base_line_spacing label" +msgid "Raft Line Spacing" +msgstr "Espaçamento da linha da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_base_line_spacing description" +msgid "" +"The distance between the raft lines for the base raft layer. Wide spacing " +"makes for easy removal of the raft from the build plate." +msgstr "A distância entre as linhas da base reticular para a camada inferior da base reticular. Um espaçamento amplo facilita a remoção da base reticular da placa de construção." + +#: fdmprinter.def.json +msgctxt "raft_speed label" +msgid "Raft Print Speed" +msgstr "Velocidade de impressão da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_speed description" +msgid "The speed at which the raft is printed." +msgstr "A velocidade a que a base reticular é impressa." + +#: fdmprinter.def.json +msgctxt "raft_surface_speed label" +msgid "Raft Top Print Speed" +msgstr "Velocidade de impressão superior da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_surface_speed description" +msgid "" +"The speed at which the top raft layers are printed. These should be printed " +"a bit slower, so that the nozzle can slowly smooth out adjacent surface " +"lines." +msgstr "A velocidade a que as camadas superiores da base reticular são impressas. Estas devem ser impressas um pouco mais devagar, para que o bocal possa uniformizar lentamente as linhas das superfícies adjacentes." + +#: fdmprinter.def.json +msgctxt "raft_interface_speed label" +msgid "Raft Middle Print Speed" +msgstr "Velocidade de impressão média da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_interface_speed description" +msgid "" +"The speed at which the middle raft layer is printed. This should be printed " +"quite slowly, as the volume of material coming out of the nozzle is quite " +"high." +msgstr "A velocidade a que a camada média da base reticular é impressa. Esta deve ser impressa bastante devagar, uma vez que o volume de material que advém do bocal é bastante elevado." + +#: fdmprinter.def.json +msgctxt "raft_base_speed label" +msgid "Raft Base Print Speed" +msgstr "Velocidade de impressão inferior da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_base_speed description" +msgid "" +"The speed at which the base raft layer is printed. This should be printed " +"quite slowly, as the volume of material coming out of the nozzle is quite " +"high." +msgstr "A velocidade a que a camada inferior da base reticular é impressa. Esta deve ser impressa bastante devagar, uma vez que o volume de material que advém do bocal é bastante elevado." + +#: fdmprinter.def.json +msgctxt "raft_acceleration label" +msgid "Raft Print Acceleration" +msgstr "Aceleração de impressão da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_acceleration description" +msgid "The acceleration with which the raft is printed." +msgstr "A aceleração com que a base reticular é impressa." + +#: fdmprinter.def.json +msgctxt "raft_surface_acceleration label" +msgid "Raft Top Print Acceleration" +msgstr "Aceleração de impressão superior da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_surface_acceleration description" +msgid "The acceleration with which the top raft layers are printed." +msgstr "A aceleração com que as camadas superiores da base reticular são impressas." + +#: fdmprinter.def.json +msgctxt "raft_interface_acceleration label" +msgid "Raft Middle Print Acceleration" +msgstr "Aceleração de impressão média da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_interface_acceleration description" +msgid "The acceleration with which the middle raft layer is printed." +msgstr "A aceleração com que a camada média da base reticular é impressa." + +#: fdmprinter.def.json +msgctxt "raft_base_acceleration label" +msgid "Raft Base Print Acceleration" +msgstr "Aceleração de impressão inferior da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_base_acceleration description" +msgid "The acceleration with which the base raft layer is printed." +msgstr "A aceleração com que a camada inferior da base reticular é impressa." + +#: fdmprinter.def.json +msgctxt "raft_jerk label" +msgid "Raft Print Jerk" +msgstr "Solavanco de impressão da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_jerk description" +msgid "The jerk with which the raft is printed." +msgstr "O solavanco com que a base reticular é impressa." + +#: fdmprinter.def.json +msgctxt "raft_surface_jerk label" +msgid "Raft Top Print Jerk" +msgstr "Solavanco de impressão superior da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_surface_jerk description" +msgid "The jerk with which the top raft layers are printed." +msgstr "O solavanco com que as camadas superiores da base reticular são impressas." + +#: fdmprinter.def.json +msgctxt "raft_interface_jerk label" +msgid "Raft Middle Print Jerk" +msgstr "Solavanco de impressão média da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_interface_jerk description" +msgid "The jerk with which the middle raft layer is printed." +msgstr "O solavanco com que a camada média da base reticular é impressa." + +#: fdmprinter.def.json +msgctxt "raft_base_jerk label" +msgid "Raft Base Print Jerk" +msgstr "Solavanco de impressão inferior da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_base_jerk description" +msgid "The jerk with which the base raft layer is printed." +msgstr "O solavanco com que a camada inferior da base reticular é impressa." + +#: fdmprinter.def.json +msgctxt "raft_fan_speed label" +msgid "Raft Fan Speed" +msgstr "Velocidade da ventoinha da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_fan_speed description" +msgid "The fan speed for the raft." +msgstr "A velocidade da ventoinha da base reticular." + +#: fdmprinter.def.json +msgctxt "raft_surface_fan_speed label" +msgid "Raft Top Fan Speed" +msgstr "Velocidade da ventoinha superior da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_surface_fan_speed description" +msgid "The fan speed for the top raft layers." +msgstr "A velocidade da ventoinha das camadas superiores da base reticular." + +#: fdmprinter.def.json +msgctxt "raft_interface_fan_speed label" +msgid "Raft Middle Fan Speed" +msgstr "Velocidade da ventoinha média da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_interface_fan_speed description" +msgid "The fan speed for the middle raft layer." +msgstr "A velocidade da ventoinha da camada média da base reticular." + +#: fdmprinter.def.json +msgctxt "raft_base_fan_speed label" +msgid "Raft Base Fan Speed" +msgstr "Velocidade da ventoinha inferior da base reticular" + +#: fdmprinter.def.json +msgctxt "raft_base_fan_speed description" +msgid "The fan speed for the base raft layer." +msgstr "A velocidade da ventoinha da camada inferior da base reticular." + +#: fdmprinter.def.json +msgctxt "dual label" +msgid "Dual Extrusion" +msgstr "Extrusão dupla" + +#: fdmprinter.def.json +msgctxt "dual description" +msgid "Settings used for printing with multiple extruders." +msgstr "Definições utilizadas para imprimir com várias extrusoras." + +#: fdmprinter.def.json +msgctxt "prime_tower_enable label" +msgid "Enable Prime Tower" +msgstr "Ativar torre de preparação" + +#: fdmprinter.def.json +msgctxt "prime_tower_enable description" +msgid "" +"Print a tower next to the print which serves to prime the material after " +"each nozzle switch." +msgstr "Imprime uma torre próxima da impressão que prepara o material depois de cada substituição do bocal." + +#: fdmprinter.def.json +msgctxt "prime_tower_size label" +msgid "Prime Tower Size" +msgstr "Tamanho da torre de preparação" + +#: fdmprinter.def.json +msgctxt "prime_tower_size description" +msgid "The width of the prime tower." +msgstr "A largura da torre de preparação." + +#: fdmprinter.def.json +msgctxt "prime_tower_min_volume label" +msgid "Prime Tower Minimum Volume" +msgstr "Volume mínimo da torre de preparação" + +#: fdmprinter.def.json +msgctxt "prime_tower_min_volume description" +msgid "" +"The minimum volume for each layer of the prime tower in order to purge " +"enough material." +msgstr "O volume mínimo para cada camada da torre de preparação para preparar material suficiente." + +#: fdmprinter.def.json +msgctxt "prime_tower_wall_thickness label" +msgid "Prime Tower Thickness" +msgstr "Espessura da torre de preparação" + +#: fdmprinter.def.json +msgctxt "prime_tower_wall_thickness description" +msgid "" +"The thickness of the hollow prime tower. A thickness larger than half the " +"Prime Tower Minimum Volume will result in a dense prime tower." +msgstr "A espessura da torre de preparação oca. Uma espessura superior a metade do Volume mínimo da torre de preparação irá resultar numa torre de preparação densa." + +#: fdmprinter.def.json +msgctxt "prime_tower_position_x label" +msgid "Prime Tower X Position" +msgstr "Posição X da torre de preparação" + +#: fdmprinter.def.json +msgctxt "prime_tower_position_x description" +msgid "The x coordinate of the position of the prime tower." +msgstr "A coordenada X da posição da torre de preparação." + +#: fdmprinter.def.json +msgctxt "prime_tower_position_y label" +msgid "Prime Tower Y Position" +msgstr "Posição Y da torre de preparação" + +#: fdmprinter.def.json +msgctxt "prime_tower_position_y description" +msgid "The y coordinate of the position of the prime tower." +msgstr "A coordenada Y da posição da torre de preparação." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Fluxo da torre de preparação" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "" +"Flow compensation: the amount of material extruded is multiplied by this " +"value." +msgstr "Compensação de fluxo: a quantidade de material extrudido é multiplicada por este valor." + +#: fdmprinter.def.json +msgctxt "prime_tower_wipe_enabled label" +msgid "Wipe Inactive Nozzle on Prime Tower" +msgstr "Limpar bocal inativo na torre de preparação" + +#: fdmprinter.def.json +msgctxt "prime_tower_wipe_enabled description" +msgid "" +"After printing the prime tower with one nozzle, wipe the oozed material from " +"the other nozzle off on the prime tower." +msgstr "Após a impressão da torre de preparação com um bocal, limpe o material que vazou do bocal para a torre de preparação." + +#: fdmprinter.def.json +msgctxt "dual_pre_wipe label" +msgid "Wipe Nozzle After Switch" +msgstr "Limpar bocal após substituição" + +#: fdmprinter.def.json +msgctxt "dual_pre_wipe description" +msgid "" +"After switching extruder, wipe the oozed material off of the nozzle on the " +"first thing printed. This performs a safe slow wipe move at a place where " +"the oozed material causes least harm to the surface quality of your print." +msgstr "Após a substituição da extrusora, limpe o material que vazou do bocal para a primeira peça impressa. Isto executa um movimento lento de limpeza segura num local onde o material vazado seja menos prejudicial para a qualidade da superfície da sua impressão." + +#: fdmprinter.def.json +msgctxt "prime_tower_purge_volume label" +msgid "Prime Tower Purge Volume" +msgstr "Volume de purga da torre de preparação" + +#: fdmprinter.def.json +msgctxt "prime_tower_purge_volume description" +msgid "" +"Amount of filament to be purged when wiping on the prime tower. Purging is " +"useful for compensating the filament lost by oozing during inactivity of the " +"nozzle." +msgstr "Quantidade de filamento a ser purgado ao limpar a torre de preparação. A purga é útil para compensar o filamento perdido por vazamento durante a inatividade do bocal." + +#: fdmprinter.def.json +msgctxt "ooze_shield_enabled label" +msgid "Enable Ooze Shield" +msgstr "Ativar proteção contra vazamentos" + +#: fdmprinter.def.json +msgctxt "ooze_shield_enabled description" +msgid "" +"Enable exterior ooze shield. This will create a shell around the model which " +"is likely to wipe a second nozzle if it's at the same height as the first " +"nozzle." +msgstr "Ativa a proteção exterior contra vazamentos. Isto irá criar uma cobertura em torno do modelo que deverá limpar um segundo bocal, caso este se encontre à mesma altura que o primeiro bocal." + +#: fdmprinter.def.json +msgctxt "ooze_shield_angle label" +msgid "Ooze Shield Angle" +msgstr "Ângulo da proteção contra vazamentos" + +#: fdmprinter.def.json +msgctxt "ooze_shield_angle description" +msgid "" +"The maximum angle a part in the ooze shield will have. With 0 degrees being " +"vertical, and 90 degrees being horizontal. A smaller angle leads to less " +"failed ooze shields, but more material." +msgstr "O ângulo máximo que uma peça da proteção contra vazamentos poderá ter. 0 graus é vertical e 90 graus é horizontal. Um ângulo menor resulta em menos falhas na proteção contra vazamentos, mas mais material." + +#: fdmprinter.def.json +msgctxt "ooze_shield_dist label" +msgid "Ooze Shield Distance" +msgstr "Distância da proteção contra vazamentos" + +#: fdmprinter.def.json +msgctxt "ooze_shield_dist description" +msgid "Distance of the ooze shield from the print, in the X/Y directions." +msgstr "A distância da proteção contra vazamentos relativamente à impressão nas direções X/Y." + +#: fdmprinter.def.json +msgctxt "meshfix label" +msgid "Mesh Fixes" +msgstr "Correção de malhas" + +#: fdmprinter.def.json +msgctxt "meshfix description" +msgid "category_fixes" +msgstr "correção_categorias" + +#: fdmprinter.def.json +msgctxt "meshfix_union_all label" +msgid "Union Overlapping Volumes" +msgstr "União de volumes sobrepostos" + +#: fdmprinter.def.json +msgctxt "meshfix_union_all description" +msgid "" +"Ignore the internal geometry arising from overlapping volumes within a mesh " +"and print the volumes as one. This may cause unintended internal cavities to " +"disappear." +msgstr "Ignora a geometria interna provocada pela sobreposição de volumes numa malha e imprime os volumes como um só. Pode provocar o desaparecimento de cavidades internas indesejadas." + +#: fdmprinter.def.json +msgctxt "meshfix_union_all_remove_holes label" +msgid "Remove All Holes" +msgstr "Remover todos os orifícios" + +#: fdmprinter.def.json +msgctxt "meshfix_union_all_remove_holes description" +msgid "" +"Remove the holes in each layer and keep only the outside shape. This will " +"ignore any invisible internal geometry. However, it also ignores layer holes " +"which can be viewed from above or below." +msgstr "Remove os orifícios em cada camada e mantém apenas a forma exterior. Isto irá ignorar qualquer geometria interna invisível. No entanto, também ignora orifícios de camadas que podem ser vistos por cima ou por baixo." + +#: fdmprinter.def.json +msgctxt "meshfix_extensive_stitching label" +msgid "Extensive Stitching" +msgstr "Costura extensiva" + +#: fdmprinter.def.json +msgctxt "meshfix_extensive_stitching description" +msgid "" +"Extensive stitching tries to stitch up open holes in the mesh by closing the " +"hole with touching polygons. This option can introduce a lot of processing " +"time." +msgstr "A costura extensiva tenta coser orifícios abertos na malha, ao fechá-los com os polígonos em contacto. Esta opção pode acrescentar bastante tempo de processamento." + +#: fdmprinter.def.json +msgctxt "meshfix_keep_open_polygons label" +msgid "Keep Disconnected Faces" +msgstr "Manter faces desconectadas" + +#: fdmprinter.def.json +msgctxt "meshfix_keep_open_polygons description" +msgid "" +"Normally Cura tries to stitch up small holes in the mesh and remove parts of " +"a layer with big holes. Enabling this option keeps those parts which cannot " +"be stitched. This option should be used as a last resort option when " +"everything else fails to produce proper GCode." +msgstr "Geralmente, o Cura tenta coser orifícios pequenos na malha e remover as peças de uma camada com orifícios grandes. Ativar esta opção conserva as peças que não podem ser cosidas. Esta opção deve ser utilizada como último recurso quando tudo o resto não produz um GCode adequado." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Resolução máxima" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "" +"The minimum size of a line segment after slicing. If you increase this, the " +"mesh will have a lower resolution. This may allow the printer to keep up " +"with the speed it has to process g-code and will increase slice speed by " +"removing details of the mesh that it can't process anyway." +msgstr "O tamanho mínimo de um segmento de linha após a segmentação. Se aumentar este tamanho, a malha terá uma resolução inferior. Isto poderá permitir que a impressora mantenha a velocidade existente para processar o g-code e irá aumentar a velocidade de segmentação ao remover os detalhes da malha que não podem ser processados." + +#: fdmprinter.def.json +msgctxt "multiple_mesh_overlap label" +msgid "Merged Meshes Overlap" +msgstr "Sobreposição de malhas fundidas" + +#: fdmprinter.def.json +msgctxt "multiple_mesh_overlap description" +msgid "" +"Make meshes which are touching each other overlap a bit. This makes them " +"bond together better." +msgstr "Faz com que as malhas em contacto se sobreponham ligeiramente. Isto melhora a sua ligação." + +#: fdmprinter.def.json +msgctxt "carve_multiple_volumes label" +msgid "Remove Mesh Intersection" +msgstr "Remover interceção de malhas" + +#: fdmprinter.def.json +msgctxt "carve_multiple_volumes description" +msgid "" +"Remove areas where multiple meshes are overlapping with each other. This may " +"be used if merged dual material objects overlap with each other." +msgstr "Remove as áreas onde várias malhas se sobrepõem entre si. Isto pode ser utilizado se houver sobreposição de objetos de material duplo fundido." + +#: fdmprinter.def.json +msgctxt "alternate_carve_order label" +msgid "Alternate Mesh Removal" +msgstr "Alternar remoção de malha" + +#: fdmprinter.def.json +msgctxt "alternate_carve_order description" +msgid "" +"Switch to which mesh intersecting volumes will belong with every layer, so " +"that the overlapping meshes become interwoven. Turning this setting off will " +"cause one of the meshes to obtain all of the volume in the overlap, while it " +"is removed from the other meshes." +msgstr "Altera para os volumes de interceção de malha que pertencerão a cada camada, para que as malhas sobrepostas fiquem entrelaçadas. Desativar esta definição poderá fazer com que uma das malhas obtenha todo o volume na sobreposição, sendo removido das outras malhas." + +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers label" +msgid "Remove Empty First Layers" +msgstr "Remover primeiras camadas vazias" + +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers description" +msgid "" +"Remove empty layers beneath the first printed layer if they are present. " +"Disabling this setting can cause empty first layers if the Slicing Tolerance " +"setting is set to Exclusive or Middle." +msgstr "Remove as camadas vazias por baixo da primeira camada impressa, se existirem. Desativar esta definição pode causar primeiras camadas vazias, se a definição Tolerância de segmentação estiver definida como Exclusivo ou Centro." + +#: fdmprinter.def.json +msgctxt "blackmagic label" +msgid "Special Modes" +msgstr "Modos especiais" + +#: fdmprinter.def.json +msgctxt "blackmagic description" +msgid "category_blackmagic" +msgstr "categoria_blackmagic" + +#: fdmprinter.def.json +msgctxt "print_sequence label" +msgid "Print Sequence" +msgstr "Sequência de impressão" + +#: fdmprinter.def.json +msgctxt "print_sequence description" +msgid "" +"Whether to print all models one layer at a time or to wait for one model to " +"finish, before moving on to the next. One at a time mode is only possible if " +"all models are separated in such a way that the whole print head can move in " +"between and all models are lower than the distance between the nozzle and " +"the X/Y axes." +msgstr "Imprime todos os modelos uma camada de cada vez ou aguarda pela conclusão de um modelo antes de avançar para o seguinte. O modo Individualmente apenas é possível se todos os modelos estiverem separados de tal forma que toda a cabeça de impressão possa mover-se entre eles e todos os modelos estejam abaixo da distância entre o bocal e os eixos X/Y." + +#: fdmprinter.def.json +msgctxt "print_sequence option all_at_once" +msgid "All at Once" +msgstr "Simultaneamente" + +#: fdmprinter.def.json +msgctxt "print_sequence option one_at_a_time" +msgid "One at a Time" +msgstr "Individualmente" + +#: fdmprinter.def.json +msgctxt "infill_mesh label" +msgid "Infill Mesh" +msgstr "Malha de preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_mesh description" +msgid "" +"Use this mesh to modify the infill of other meshes with which it overlaps. " +"Replaces infill regions of other meshes with regions for this mesh. It's " +"suggested to only print one Wall and no Top/Bottom Skin for this mesh." +msgstr "Utilize esta malha para modificar o preenchimento de outras malhas com as quais se sobrepõe. Substitui as regiões de preenchimento de outras malhas por regiões para esta malha. É recomendável imprimir apenas uma parede sem revestimento superior/inferior para esta malha." + +#: fdmprinter.def.json +msgctxt "infill_mesh_order label" +msgid "Infill Mesh Order" +msgstr "Ordem de malhas de preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_mesh_order description" +msgid "" +"Determines which infill mesh is inside the infill of another infill mesh. An " +"infill mesh with a higher order will modify the infill of infill meshes with " +"lower order and normal meshes." +msgstr "Determina qual a malha de preenchimento que se encontra no interior do preenchimento de outra malha de preenchimento. Uma malha de preenchimento de ordem superior irá modificar o preenchimento das malhas de preenchimento de ordem inferior e das malhas normais." + +#: fdmprinter.def.json +msgctxt "cutting_mesh label" +msgid "Cutting Mesh" +msgstr "Malha de corte" + +#: fdmprinter.def.json +msgctxt "cutting_mesh description" +msgid "" +"Limit the volume of this mesh to within other meshes. You can use this to " +"make certain areas of one mesh print with different settings and with a " +"whole different extruder." +msgstr "Limita o volume desta malha para o interior de outras malhas. Pode utilizar esta opção para fazer com que determinadas áreas de uma malha sejam impressas com diferentes definições e com uma extrusora distinta." + +#: fdmprinter.def.json +msgctxt "mold_enabled label" +msgid "Mold" +msgstr "Molde" + +#: fdmprinter.def.json +msgctxt "mold_enabled description" +msgid "" +"Print models as a mold, which can be cast in order to get a model which " +"resembles the models on the build plate." +msgstr "Imprime modelos como moldes, os quais podem ser fundidos de forma a obter um modelo que se assemelhe aos modelos da placa de construção." + +#: fdmprinter.def.json +msgctxt "mold_width label" +msgid "Minimal Mold Width" +msgstr "Largura mínima do molde" + +#: fdmprinter.def.json +msgctxt "mold_width description" +msgid "" +"The minimal distance between the ouside of the mold and the outside of the " +"model." +msgstr "A distância mínima entre o exterior do molde e o exterior do modelo." + +#: fdmprinter.def.json +msgctxt "mold_roof_height label" +msgid "Mold Roof Height" +msgstr "Altura do teto do molde" + +#: fdmprinter.def.json +msgctxt "mold_roof_height description" +msgid "The height above horizontal parts in your model which to print mold." +msgstr "A altura acima das partes horizontais do modelo em que deve imprimir o molde." + +#: fdmprinter.def.json +msgctxt "mold_angle label" +msgid "Mold Angle" +msgstr "Ângulo do molde" + +#: fdmprinter.def.json +msgctxt "mold_angle description" +msgid "" +"The angle of overhang of the outer walls created for the mold. 0° will make " +"the outer shell of the mold vertical, while 90° will make the outside of the " +"model follow the contour of the model." +msgstr "O ângulo da saliência das paredes exteriores criadas para o molde. 0° irá tornar a cobertura exterior do molde vertical, enquanto 90° fará com que o exterior do modelo siga o contorno do mesmo." + +#: fdmprinter.def.json +msgctxt "support_mesh label" +msgid "Support Mesh" +msgstr "Malha de suporte" + +#: fdmprinter.def.json +msgctxt "support_mesh description" +msgid "" +"Use this mesh to specify support areas. This can be used to generate support " +"structure." +msgstr "Utilize esta malha para especificar áreas de suporte. Esta opção pode ser utilizada para gerar estruturas de suporte." + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "Malha de suporte pendente" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "" +"Make support everywhere below the support mesh, so that there's no overhang " +"in the support mesh." +msgstr "Cria suporte em qualquer local abaixo da malha de suporte, para que não existam saliências na malha de suporte." + +#: fdmprinter.def.json +msgctxt "anti_overhang_mesh label" +msgid "Anti Overhang Mesh" +msgstr "Malha antissaliências" + +#: fdmprinter.def.json +msgctxt "anti_overhang_mesh description" +msgid "" +"Use this mesh to specify where no part of the model should be detected as " +"overhang. This can be used to remove unwanted support structure." +msgstr "Utilize esta malha para especificar a parte do modelo que não deve ser detetada como saliência. Esta opção pode ser utilizada para remover estruturas de suporte indesejadas." + +#: fdmprinter.def.json +msgctxt "magic_mesh_surface_mode label" +msgid "Surface Mode" +msgstr "Modo de superfície" + +#: fdmprinter.def.json +msgctxt "magic_mesh_surface_mode description" +msgid "" +"Treat the model as a surface only, a volume, or volumes with loose surfaces. " +"The normal print mode only prints enclosed volumes. \"Surface\" prints a " +"single wall tracing the mesh surface with no infill and no top/bottom skin. " +"\"Both\" prints enclosed volumes like normal and any remaining polygons as " +"surfaces." +msgstr "Trata o modelo apenas como superfície, volume ou volumes com superfícies soltas. O modo de impressão normal imprime apenas volumes delimitados. O modo \"Superfície\" imprime uma única parede que acompanha a superfície da malha sem preenchimento ou revestimento superior/inferior. O modo \"Ambos\" imprime volumes delimitados normalmente e quaisquer polígonos restantes como superfícies." + +#: fdmprinter.def.json +msgctxt "magic_mesh_surface_mode option normal" +msgid "Normal" +msgstr "Normal" + +#: fdmprinter.def.json +msgctxt "magic_mesh_surface_mode option surface" +msgid "Surface" +msgstr "Superfície" + +#: fdmprinter.def.json +msgctxt "magic_mesh_surface_mode option both" +msgid "Both" +msgstr "Ambos" + +#: fdmprinter.def.json +msgctxt "magic_spiralize label" +msgid "Spiralize Outer Contour" +msgstr "Contorno externo em espiral" + +#: fdmprinter.def.json +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 should only be " +"enabled when each layer only contains a single part." +msgstr "Esta opção uniformiza o movimento Z da extremidade exterior. Isto irá criar um aumento Z constante em toda a impressão. Esta funcionalidade torna um modelo sólido numa única impressão de parede com um fundo sólido. Esta funcionalidade só deve ser ativada quando cada camada contiver apenas uma única peça." + +#: fdmprinter.def.json +msgctxt "smooth_spiralized_contours label" +msgid "Smooth Spiralized Contours" +msgstr "Suavizar contornos em espiral" + +#: fdmprinter.def.json +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 em espiral para reduzir a visibilidade da costura Z (a costura Z deve ser praticamente impercetível na impressão, mas continuará a ser visível na visualização da camada). Observe que a suavização tenderá a desfocar pequenos detalhes na superfície." + +#: fdmprinter.def.json +msgctxt "relative_extrusion label" +msgid "Relative Extrusion" +msgstr "Extrusão 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 "Utilize a extrusão relativa em vez da extrusão absoluta. A utilização de passos E relativos facilita o pós-processamento do Gcode. Contudo, isto não é compatível com todas as impressoras e poderá produzir ligeiros desvios na quantidade de material depositado em comparação com os passos E absolutos. Independentemente desta definição, o modo de extrusão será sempre definido como absoluto antes da saída de qualquer script Gcode." + +#: fdmprinter.def.json +msgctxt "experimental label" +msgid "Experimental" +msgstr "Experimental" + +#: fdmprinter.def.json +msgctxt "experimental description" +msgid "experimental!" +msgstr "experimental!" + +#: fdmprinter.def.json +msgctxt "optimize_wall_printing_order label" +msgid "Optimize Wall Printing Order" +msgstr "Otimizar ordem de impressão 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 "Otimiza a ordem na qual as paredes são impressas de forma a reduzir o número de retrações e a distância percorrida. A maioria das peças irá beneficiar da ativação desta opção, embora algumas possam demorar mais tempo, portanto compare as estimativas de tempo de impressão com e sem otimização." + +#: fdmprinter.def.json +msgctxt "support_skip_some_zags label" +msgid "Break Up Support In Chunks" +msgstr "Separar suporte em blocos" + +#: 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 "Ignora algumas ligações de linha de suporte para facilitar a separação da estrutura de suporte. Esta definição é aplicável ao padrão de preenchimento de suporte em ziguezague." + +#: fdmprinter.def.json +msgctxt "support_skip_zag_per_mm label" +msgid "Support Chunk Size" +msgstr "Tamanho do bloco de suporte" + +#: 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 "Deixa uma ligação entre as linhas de suporte a cada X milímetros para facilitar a separação da estrutura de suporte." + +#: fdmprinter.def.json +msgctxt "support_zag_skip_count label" +msgid "Support Chunk Line Count" +msgstr "Contagem de linhas do bloco de suporte" + +#: 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 "Ignora uma em cada X linhas de ligação para facilitar a separação da estrutura de suporte." + +#: fdmprinter.def.json +msgctxt "draft_shield_enabled label" +msgid "Enable Draft Shield" +msgstr "Ativar proteção contra correntes de ar" + +#: fdmprinter.def.json +msgctxt "draft_shield_enabled description" +msgid "" +"This will create a wall around the model, which traps (hot) air and shields " +"against exterior airflow. Especially useful for materials which warp easily." +msgstr "Isto irá criar uma parede em torno do modelo que retém ar (quente) e o protege contra fluxos de ar exterior. Esta opção é especialmente útil para materiais que se deformam com facilidade." + +#: fdmprinter.def.json +msgctxt "draft_shield_dist label" +msgid "Draft Shield X/Y Distance" +msgstr "Distância X/Y da proteção contra correntes de ar" + +#: fdmprinter.def.json +msgctxt "draft_shield_dist description" +msgid "Distance of the draft shield from the print, in the X/Y directions." +msgstr "A distância da proteção contra correntes de ar relativamente à impressora nas direções X/Y." + +#: fdmprinter.def.json +msgctxt "draft_shield_height_limitation label" +msgid "Draft Shield Limitation" +msgstr "Limite de proteção contra correntes de ar" + +#: fdmprinter.def.json +msgctxt "draft_shield_height_limitation description" +msgid "" +"Set the height of the draft shield. Choose to print the draft shield at the " +"full height of the model or at a limited height." +msgstr "Define a altura da proteção contra correntes de ar. Opte por imprimir a proteção contra correntes de ar com a altura máxima do modelo ou com uma altura limitada." + +#: fdmprinter.def.json +msgctxt "draft_shield_height_limitation option full" +msgid "Full" +msgstr "Máximo" + +#: fdmprinter.def.json +msgctxt "draft_shield_height_limitation option limited" +msgid "Limited" +msgstr "Limitado" + +#: fdmprinter.def.json +msgctxt "draft_shield_height label" +msgid "Draft Shield Height" +msgstr "Altura da proteção contra correntes de ar" + +#: fdmprinter.def.json +msgctxt "draft_shield_height description" +msgid "" +"Height limitation of the draft shield. Above this height no draft shield " +"will be printed." +msgstr "Limite de altura da proteção contra correntes de ar. Não será impressa qualquer proteção contra correntes de ar acima desta altura." + +#: fdmprinter.def.json +msgctxt "conical_overhang_enabled label" +msgid "Make Overhang Printable" +msgstr "Tornar saliência imprimível" + +#: fdmprinter.def.json +msgctxt "conical_overhang_enabled description" +msgid "" +"Change the geometry of the printed model such that minimal support is " +"required. Steep overhangs will become shallow overhangs. Overhanging areas " +"will drop down to become more vertical." +msgstr "Altera a geometria do modelo impresso de forma que seja necessário suporte mínimo. Saliências acentuadas tornar-se-ão saliências rasas. As áreas de saliências irão baixar para se tornarem mais verticais." + +#: fdmprinter.def.json +msgctxt "conical_overhang_angle label" +msgid "Maximum Model Angle" +msgstr "Ângulo máximo do modelo" + +#: fdmprinter.def.json +msgctxt "conical_overhang_angle description" +msgid "" +"The maximum angle of overhangs after the they have been made printable. At a " +"value of 0° all overhangs are replaced by a piece of model connected to the " +"build plate, 90° will not change the model in any way." +msgstr "O ângulo máximo das saliências após se terem tornado imprimíveis. Com um valor de 0°, todas as saliências são substituídas por um modelo ligado à placa de construção e, com um valor de 90°, o modelo não será alterado de forma alguma." + +#: fdmprinter.def.json +msgctxt "coasting_enable label" +msgid "Enable Coasting" +msgstr "Ativar desaceleração" + +#: fdmprinter.def.json +msgctxt "coasting_enable description" +msgid "" +"Coasting replaces the last part of an extrusion path with a travel path. The " +"oozed material is used to print the last piece of the extrusion path in " +"order to reduce stringing." +msgstr "A desaceleração substitui a última parte de um caminho de extrusão por um caminho de deslocamento. O material vazado é utilizado para imprimir a última parte do caminho de extrusão de forma a reduzir os fios soltos." + +#: fdmprinter.def.json +msgctxt "coasting_volume label" +msgid "Coasting Volume" +msgstr "Volume de desaceleração" + +#: fdmprinter.def.json +msgctxt "coasting_volume description" +msgid "" +"The volume otherwise oozed. This value should generally be close to the " +"nozzle diameter cubed." +msgstr "O volume que, caso contrário, vazaria. Geralmente, este valor deve ser próximo ao diâmetro cúbico do bocal." + +#: fdmprinter.def.json +msgctxt "coasting_min_volume label" +msgid "Minimum Volume Before Coasting" +msgstr "Volume mínimo antes da desaceleração" + +#: fdmprinter.def.json +msgctxt "coasting_min_volume description" +msgid "" +"The smallest volume an extrusion path should have before allowing coasting. " +"For smaller extrusion paths, less pressure has been built up in the bowden " +"tube and so the coasted volume is scaled linearly. This value should always " +"be larger than the Coasting Volume." +msgstr "O menor volume que um caminho de extrusão deve ter antes de permitir a desaceleração. Para caminhos de extrusão mais curtos, é acumulada menos pressão no tubo Bowden e, como tal, o volume de desaceleração adota uma escala linear. Este valor deve sempre ser superior ao Volume de desaceleração." + +#: fdmprinter.def.json +msgctxt "coasting_speed label" +msgid "Coasting Speed" +msgstr "Velocidade de desaceleração" + +#: fdmprinter.def.json +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 de movimento durante a desaceleração, relativa à velocidade do caminho de extrusão. É recomendado um valor ligeiramente abaixo de 100%, uma vez que durante o movimento de desaceleração, a pressão no tubo Bowden diminui." + +#: fdmprinter.def.json +msgctxt "skin_alternate_rotation label" +msgid "Alternate Skin Rotation" +msgstr "Alternar rotação do revestimento" + +#: fdmprinter.def.json +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 na qual as camadas superiores/inferiores são impressas. Geralmente, estas são impressas apenas na diagonal. Esta definição adiciona as direções apenas X e apenas Y." + +#: fdmprinter.def.json +msgctxt "cross_infill_pocket_size label" +msgid "Cross 3D Pocket Size" +msgstr "Tamanho da bolsa de cruz 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 "O tamanho das bolsas em cruzamentos de quatro vias no padrão de cruz 3D em alturas onde o padrão está em contacto consigo próprio." + +#: fdmprinter.def.json +msgctxt "cross_infill_apply_pockets_alternatingly label" +msgid "Alternate Cross 3D Pockets" +msgstr "Alternar bolsas de cruz 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 "Aplica bolsas em apenas metade dos cruzamentos de quatro vias no padrão de cruz 3D e alterna a localização das bolsas entre alturas onde o padrão está em contacto consigo próprio." + +#: fdmprinter.def.json +msgctxt "spaghetti_infill_enabled label" +msgid "Spaghetti Infill" +msgstr "Preenchimento em esparguete" + +#: fdmprinter.def.json +msgctxt "spaghetti_infill_enabled description" +msgid "" +"Print the infill every so often, so that the filament will curl up " +"chaotically inside the object. This reduces print time, but the behaviour is " +"rather unpredictable." +msgstr "Imprime o preenchimento de tempos a tempos, para que o filamento encaracole desordenadamente dentro do objeto. Isto reduz o tempo de impressão, mas o comportamento é um pouco imprevisível." + +#: fdmprinter.def.json +msgctxt "spaghetti_infill_stepped label" +msgid "Spaghetti Infill Stepping" +msgstr "Passos de preenchimento em esparguete" + +#: fdmprinter.def.json +msgctxt "spaghetti_infill_stepped description" +msgid "" +"Whether to print spaghetti infill in steps or extrude all the infill " +"filament at the end of the print." +msgstr "Imprime o preenchimento em esparguete de forma faseada ou extrude todos os filamentos de preenchimento no final da impressão." + +#: fdmprinter.def.json +msgctxt "spaghetti_max_infill_angle label" +msgid "Spaghetti Maximum Infill Angle" +msgstr "Ângulo de preenchimento máximo em esparguete" + +#: fdmprinter.def.json +msgctxt "spaghetti_max_infill_angle description" +msgid "" +"The maximum angle w.r.t. the Z axis of the inside of the print for areas " +"which are to be filled with spaghetti infill afterwards. Lowering this value " +"causes more angled parts in your model to be filled on each layer." +msgstr "O ângulo máximo em relação ao eixo Z do interior da impressão para áreas que devem ser preenchidas posteriormente com o preenchimento em esparguete. A redução deste valor produz mais partes angulares no modelo que deverão ser preenchidas em cada camada." + +#: fdmprinter.def.json +msgctxt "spaghetti_max_height label" +msgid "Spaghetti Infill Maximum Height" +msgstr "Altura máxima de preenchimento em esparguete" + +#: fdmprinter.def.json +msgctxt "spaghetti_max_height description" +msgid "" +"The maximum height of inside space which can be combined and filled from the " +"top." +msgstr "A altura máxima do espaço interior que pode ser combinado e preenchido a partir da parte superior." + +#: fdmprinter.def.json +msgctxt "spaghetti_inset label" +msgid "Spaghetti Inset" +msgstr "Inserção em esparguete" + +#: fdmprinter.def.json +msgctxt "spaghetti_inset description" +msgid "" +"The offset from the walls from where the spaghetti infill will be printed." +msgstr "O desvio das paredes a partir do qual o preenchimento em esparguete será impresso." + +#: fdmprinter.def.json +msgctxt "spaghetti_flow label" +msgid "Spaghetti Flow" +msgstr "Fluxo em esparguete" + +#: fdmprinter.def.json +msgctxt "spaghetti_flow description" +msgid "" +"Adjusts the density of the spaghetti infill. Note that the Infill Density " +"only controls the line spacing of the filling pattern, not the amount of " +"extrusion for spaghetti infill." +msgstr "Ajusta a densidade do preenchimento em esparguete. Observe que a Densidade de preenchimento controla apenas o espaçamento entre linhas do padrão de preenchimento e não a quantidade de extrusão para o preenchimento em esparguete." + +#: fdmprinter.def.json +msgctxt "spaghetti_infill_extra_volume label" +msgid "Spaghetti Infill Extra Volume" +msgstr "Volume adicional de preenchimento em esparguete" + +#: fdmprinter.def.json +msgctxt "spaghetti_infill_extra_volume description" +msgid "" +"A correction term to adjust the total volume being extruded each time when " +"filling spaghetti." +msgstr "Um termo de correção para ajustar o volume total a ser extrudido sempre que for realizado o preenchimento em esparguete." + +#: fdmprinter.def.json +msgctxt "support_conical_enabled label" +msgid "Enable Conical Support" +msgstr "Ativar suporte cónico" + +#: fdmprinter.def.json +msgctxt "support_conical_enabled description" +msgid "" +"Experimental feature: Make support areas smaller at the bottom than at the " +"overhang." +msgstr "Funcionalidade experimental: torna as áreas de suporte mais reduzidas na parte inferior do que na saliência." + +#: fdmprinter.def.json +msgctxt "support_conical_angle label" +msgid "Conical Support Angle" +msgstr "Ângulo do suporte cónico" + +#: fdmprinter.def.json +msgctxt "support_conical_angle description" +msgid "" +"The angle of the tilt of conical support. With 0 degrees being vertical, and " +"90 degrees being horizontal. Smaller angles cause the support to be more " +"sturdy, but consist of more material. Negative angles cause the base of the " +"support to be wider than the top." +msgstr "O ângulo da inclinação do suporte cónico. 0 graus é vertical e 90 graus é horizontal. Ângulos mais reduzidos tornam o suporte mais robusto, mas consomem mais material. Ângulos negativos tornam a base do suporte mais larga do que a parte superior." + +#: fdmprinter.def.json +msgctxt "support_conical_min_width label" +msgid "Conical Support Minimum Width" +msgstr "Largura mínima do suporte cónico" + +#: fdmprinter.def.json +msgctxt "support_conical_min_width description" +msgid "" +"Minimum width to which the base of the conical support area is reduced. " +"Small widths can lead to unstable support structures." +msgstr "A largura mínima para a qual a base da área do suporte cónico é reduzida. Larguras reduzidas podem originar estruturas de suporte instáveis." + +#: fdmprinter.def.json +msgctxt "infill_hollow label" +msgid "Hollow Out Objects" +msgstr "Esvaziar objetos" + +#: fdmprinter.def.json +msgctxt "infill_hollow description" +msgid "" +"Remove all infill and make the inside of the object eligible for support." +msgstr "Remove todo o preenchimento e torna o interior do objeto elegível para suporte." + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_enabled label" +msgid "Fuzzy Skin" +msgstr "Revestimento difuso" + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_enabled description" +msgid "" +"Randomly jitter while printing the outer wall, so that the surface has a " +"rough and fuzzy look." +msgstr "Vibra aleatoriamente enquanto imprime a parede externa, para que a superfície apresente um aspeto rugoso e difuso." + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_thickness label" +msgid "Fuzzy Skin Thickness" +msgstr "Espessura do revestimento difuso" + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_thickness description" +msgid "" +"The width within which to jitter. It's advised to keep this below the outer " +"wall width, since the inner walls are unaltered." +msgstr "A largura dentro da qual deve ser produzida vibração. É recomendado mantê-la abaixo da largura da parede externa, uma vez que as paredes internas não são alteradas." + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_point_density label" +msgid "Fuzzy Skin Density" +msgstr "Densidade do revestimento difuso" + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_point_density description" +msgid "" +"The average density of points introduced on each polygon in a layer. Note " +"that the original points of the polygon are discarded, so a low density " +"results in a reduction of the resolution." +msgstr "A densidade média dos pontos introduzidos em cada polígono numa camada. Observe que os pontos originais do polígono são eliminados, pelo que uma densidade baixa resulta numa redução da resolução." + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_point_dist label" +msgid "Fuzzy Skin Point Distance" +msgstr "Distância do ponto de revestimento difuso" + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_point_dist description" +msgid "" +"The average distance between the random points introduced on each line " +"segment. Note that the original points of the polygon are discarded, so a " +"high smoothness results in a reduction of the resolution. This value must be " +"higher than half the Fuzzy Skin Thickness." +msgstr "A distância média entre os pontos aleatórios introduzidos em cada segmento de linha. Observe que os pontos originais do polígono são eliminados, pelo que uma suavidade elevada resulta numa redução da resolução. Este valor deve ser superior a metade da Espessura do revestimento difuso." + +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset label" +msgid "Flow rate compensation max extrusion offset" +msgstr "Desvio de extrusão máximo de compensação da taxa de fluxo" + +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset description" +msgid "The maximum distance in mm to compensate." +msgstr "A distância máxima em mm a ser compensada." + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor label" +msgid "Flow rate compensation factor" +msgstr "Fator de compensação da taxa de fluxo" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor description" +msgid "The multiplication factor for the flow rate -> distance translation." +msgstr "O fator de multiplicação da taxa de fluxo -> translação de distância." + +#: fdmprinter.def.json +msgctxt "wireframe_enabled label" +msgid "Wire Printing" +msgstr "Impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_enabled description" +msgid "" +"Print only the outside surface with a sparse webbed structure, printing 'in " +"thin air'. This is realized by horizontally printing the contours of the " +"model at given Z intervals which are connected via upward and diagonally " +"downward lines." +msgstr "Imprime apenas a superfície externa com uma estrutura entrelaçada dispersa a partir \"do ar\". Isto é realizado ao imprimir horizontalmente os contornos do modelo em determinados intervalos Z que são ligados através de linhas ascendentes e diagonais descendentes." + +#: fdmprinter.def.json +msgctxt "wireframe_height label" +msgid "WP Connection Height" +msgstr "Altura de ligação da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_height description" +msgid "" +"The height of the upward and diagonally downward lines between two " +"horizontal parts. This determines the overall density of the net structure. " +"Only applies to Wire Printing." +msgstr "A altura das linhas ascendentes e diagonais descendentes entre duas partes horizontais. Isto determina a densidade geral da estrutura de rede. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_roof_inset label" +msgid "WP Roof Inset Distance" +msgstr "Distância de inserção do teto da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_roof_inset description" +msgid "" +"The distance covered when making a connection from a roof outline inward. " +"Only applies to Wire Printing." +msgstr "A distância percorrida ao efetuar uma ligação a partir de um contorno de telhado interno. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed label" +msgid "WP Speed" +msgstr "Velocidade da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed description" +msgid "" +"Speed at which the nozzle moves when extruding material. Only applies to " +"Wire Printing." +msgstr "Velocidade à qual o bocal se movimenta ao extrudir material. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_bottom label" +msgid "WP Bottom Printing Speed" +msgstr "Velocidade de impressão da parte inferior da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_bottom description" +msgid "" +"Speed of printing the first layer, which is the only layer touching the " +"build platform. Only applies to Wire Printing." +msgstr "Velocidade de impressão da primeira camada, que é a única camada que entra em contacto com a plataforma de construção. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_up label" +msgid "WP Upward Printing Speed" +msgstr "Velocidade de impressão ascendente da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_up description" +msgid "" +"Speed of printing a line upward 'in thin air'. Only applies to Wire Printing." +msgstr "A velocidade de impressão de uma linha ascendente \"no ar\". Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_down label" +msgid "WP Downward Printing Speed" +msgstr "Velocidade de impressão descendente da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_down description" +msgid "" +"Speed of printing a line diagonally downward. Only applies to Wire Printing." +msgstr "Velocidade de impressão de uma linha diagonal descendente. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_flat label" +msgid "WP Horizontal Printing Speed" +msgstr "Velocidade de impressão horizontal da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_flat description" +msgid "" +"Speed of printing the horizontal contours of the model. Only applies to Wire " +"Printing." +msgstr "Velocidade de impressão de contornos horizontais do modelo. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_flow label" +msgid "WP Flow" +msgstr "Fluxo de impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_flow description" +msgid "" +"Flow compensation: the amount of material extruded is multiplied by this " +"value. Only applies to Wire Printing." +msgstr "Compensação de fluxo: a quantidade de material extrudido é multiplicada por este valor. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_flow_connection label" +msgid "WP Connection Flow" +msgstr "Fluxo de ligação da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_flow_connection description" +msgid "Flow compensation when going up or down. Only applies to Wire Printing." +msgstr "A compensação de fluxo ao deslocar-se para cima ou para baixo. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_flow_flat label" +msgid "WP Flat Flow" +msgstr "Fluxo plano da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_flow_flat description" +msgid "" +"Flow compensation when printing flat lines. Only applies to Wire Printing." +msgstr "Compensação de fluxo ao imprimir linhas planas. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_top_delay label" +msgid "WP Top Delay" +msgstr "Atraso superior da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_top_delay description" +msgid "" +"Delay time after an upward move, so that the upward line can harden. Only " +"applies to Wire Printing." +msgstr "O tempo de atraso após um movimento ascendente, para que a linha ascendente possa endurecer. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_bottom_delay label" +msgid "WP Bottom Delay" +msgstr "Atraso da parte inferior da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_bottom_delay description" +msgid "Delay time after a downward move. Only applies to Wire Printing." +msgstr "O tempo de atraso após um movimento descendente. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_flat_delay label" +msgid "WP Flat Delay" +msgstr "Atraso plano da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_flat_delay description" +msgid "" +"Delay time between two horizontal segments. Introducing such a delay can " +"cause better adhesion to previous layers at the connection points, while too " +"long delays cause sagging. Only applies to Wire Printing." +msgstr "Tempo de atraso entre dois segmentos horizontais. A introdução desse atraso pode causar melhor aderência às camadas anteriores nos pontos de ligação. No entanto, os atrasos demasiado longos podem causar flacidez. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_up_half_speed label" +msgid "WP Ease Upward" +msgstr "Facilidade de movimento ascendente da impressão de fios" + +#: fdmprinter.def.json +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 "A distância de um movimento ascendente que é extrudido a metade da velocidade.\nIsto pode causar melhor aderência às camadas anteriores, sendo que o material nessas camadas não é demasiado aquecido. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_top_jump label" +msgid "WP Knot Size" +msgstr "Tamanho do nó da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_top_jump description" +msgid "" +"Creates a small knot at the top of an upward line, so that the consecutive " +"horizontal layer has a better chance to connect to it. Only applies to Wire " +"Printing." +msgstr "Cria um pequeno nó no topo de uma linha ascendente, para que a camada horizontal subsequente possa ligar-se com maior facilidade. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_fall_down label" +msgid "WP Fall Down" +msgstr "Queda da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_fall_down description" +msgid "" +"Distance with which the material falls down after an upward extrusion. This " +"distance is compensated for. Only applies to Wire Printing." +msgstr "Distância à qual o material cai após uma extrusão ascendente. Esta distância é compensada. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_drag_along label" +msgid "WP Drag Along" +msgstr "Arrastamento da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_drag_along description" +msgid "" +"Distance with which the material of an upward extrusion is dragged along " +"with the diagonally downward extrusion. This distance is compensated for. " +"Only applies to Wire Printing." +msgstr "Distância à qual o material de uma extrusão ascendente é arrastado juntamente com a extrusão diagonal descendente. Esta distância é compensada. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_strategy label" +msgid "WP Strategy" +msgstr "Estratégia de impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_strategy description" +msgid "" +"Strategy for making sure two consecutive layers connect at each connection " +"point. Retraction lets the upward lines harden in the right position, but " +"may cause filament grinding. A knot can be made at the end of an upward line " +"to heighten the chance of connecting to it and to let the line cool; " +"however, it may require slow printing speeds. Another strategy is to " +"compensate for the sagging of the top of an upward line; however, the lines " +"won't always fall down as predicted." +msgstr "Estratégia para assegurar que duas camadas consecutivas se ligam a cada ponto de ligação. A retração permite que as linhas ascendentes endureçam na posição correta, mas pode causar a trituração do filamento. É possível fazer um nó no final de uma linha ascendente para aumentar a probabilidade de ligação e para permitir o arrefecimento da linha. No entanto, podem ser necessárias velocidades de impressão reduzidas. Outra estratégia é compensar a flacidez do topo de uma linha ascendente. Porém, as linhas nem sempre cairão conforme previsto." + +#: fdmprinter.def.json +msgctxt "wireframe_strategy option compensate" +msgid "Compensate" +msgstr "Compensar" + +#: fdmprinter.def.json +msgctxt "wireframe_strategy option knot" +msgid "Knot" +msgstr "Nó" + +#: fdmprinter.def.json +msgctxt "wireframe_strategy option retract" +msgid "Retract" +msgstr "Retrair" + +#: fdmprinter.def.json +msgctxt "wireframe_straight_before_down label" +msgid "WP Straighten Downward Lines" +msgstr "Linhas retas descendentes da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_straight_before_down description" +msgid "" +"Percentage of a diagonally downward line which is covered by a horizontal " +"line piece. This can prevent sagging of the top most point of upward lines. " +"Only applies to Wire Printing." +msgstr "A percentagem de uma linha diagonal descendente que é abrangida por uma peça da linha horizontal. Isto pode impedir a flacidez do ponto mais elevado das linhas ascendentes. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_roof_fall_down label" +msgid "WP Roof Fall Down" +msgstr "Queda do teto da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_roof_fall_down description" +msgid "" +"The distance which horizontal roof lines printed 'in thin air' fall down " +"when being printed. This distance is compensated for. Only applies to Wire " +"Printing." +msgstr "A distância à qual as linhas horizontais do teto que são impressas \"no ar\" caem ao ser impressas. Esta distância é compensada. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_roof_drag_along label" +msgid "WP Roof Drag Along" +msgstr "Arrastamento do teto da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_roof_drag_along description" +msgid "" +"The distance of the end piece of an inward line which gets dragged along " +"when going back to the outer outline of the roof. This distance is " +"compensated for. Only applies to Wire Printing." +msgstr "A distância da parte final de uma linha interna que é arrastada ao regressar ao contorno externo do teto. Esta distância é compensada. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_roof_outer_delay label" +msgid "WP Roof Outer Delay" +msgstr "Atraso externo do teto da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_roof_outer_delay description" +msgid "" +"Time spent at the outer perimeters of hole which is to become a roof. Longer " +"times can ensure a better connection. Only applies to Wire Printing." +msgstr "Tempo gasto nos perímetros externos do orifício que se irá transformar em teto. Períodos de tempo mais longos permitem garantir uma melhor ligação. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "wireframe_nozzle_clearance label" +msgid "WP Nozzle Clearance" +msgstr "Espaço do bocal da impressão de fios" + +#: fdmprinter.def.json +msgctxt "wireframe_nozzle_clearance description" +msgid "" +"Distance between the nozzle and horizontally downward lines. Larger " +"clearance results in diagonally downward lines with a less steep angle, " +"which in turn results in less upward connections with the next layer. Only " +"applies to Wire Printing." +msgstr "Distância entre o bocal e as linhas horizontais descendentes. Uma maior folga resulta em linhas horizontais descendentes com um ângulo menos acentuado, o que, por sua vez, resulta em menos ligações ascendentes com a camada seguinte. Aplica-se apenas à impressão de fios." + +#: fdmprinter.def.json +msgctxt "command_line_settings label" +msgid "Command Line Settings" +msgstr "Definições de linha de comando" + +#: fdmprinter.def.json +msgctxt "command_line_settings description" +msgid "" +"Settings which are only used if CuraEngine isn't called from the Cura " +"frontend." +msgstr "Definições que só são utilizadas se o CuraEngine não for ativado a partir do front-end do Cura." + +#: fdmprinter.def.json +msgctxt "center_object label" +msgid "Center object" +msgstr "Centrar objeto" + +#: fdmprinter.def.json +msgctxt "center_object description" +msgid "" +"Whether to center the object on the middle of the build platform (0,0), " +"instead of using the coordinate system in which the object was saved." +msgstr "Permite centrar o objeto no centro da plataforma de construção (0,0), em vez de utilizar o sistema de coordenadas no qual o objeto foi guardado." + +#: fdmprinter.def.json +msgctxt "mesh_position_x label" +msgid "Mesh position x" +msgstr "Posição X da malha" + +#: fdmprinter.def.json +msgctxt "mesh_position_x description" +msgid "Offset applied to the object in the x direction." +msgstr "Desvio aplicado ao objeto na direção X." + +#: fdmprinter.def.json +msgctxt "mesh_position_y label" +msgid "Mesh position y" +msgstr "Posição Y da malha" + +#: fdmprinter.def.json +msgctxt "mesh_position_y description" +msgid "Offset applied to the object in the y direction." +msgstr "Desvio aplicado ao objeto na direção Y." + +#: fdmprinter.def.json +msgctxt "mesh_position_z label" +msgid "Mesh position z" +msgstr "Posição Z da malha" + +#: fdmprinter.def.json +msgctxt "mesh_position_z description" +msgid "" +"Offset applied to the object in the z direction. With this you can perform " +"what was used to be called 'Object Sink'." +msgstr "Desvio aplicado ao objeto na direção Z. Com esta opção, é possível realizar o que se costumava designar \"Afundamento de objetos\"." + +#: fdmprinter.def.json +msgctxt "mesh_rotation_matrix label" +msgid "Mesh Rotation Matrix" +msgstr "Matriz de rotação da malha" + +#: fdmprinter.def.json +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 ao carregá-lo a partir do ficheiro." diff --git a/resources/i18n/ru_RU/cura.po b/resources/i18n/ru_RU/cura.po old mode 100755 new mode 100644 index 34f7262a1f..a953a8c87e --- a/resources/i18n/ru_RU/cura.po +++ b/resources/i18n/ru_RU/cura.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-21 16:58+0100\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Ruslan Popov \n" "Language-Team: Ruslan Popov\n" "Language: ru_RU\n" @@ -18,66 +18,6 @@ msgstr "" "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" -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Print aborted" -msgstr "Печать прервана" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Blocked" -msgstr "блокированный" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Action required" -msgstr "Необходимое действие" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Can't start print" -msgstr "Не удается начать печать" - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is not set up to host a group of Ultimaker 3 printers." -msgstr "Данный принтер не настроен для управления группой принтеров Ultimaker 3." - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label" -msgid "Finishes at: " -msgstr "Заканчивается на: " - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is the host for a group of %1 Ultimaker 3 printers." -msgstr "Данный принтер управляет группой из %1 принтеров Ultimaker 3." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "{printer_name} завершил печать '{job_name}'." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Print finished" -msgstr "Печать завершена" - -#: Manually added for resources/Cura/Cura.qml -msgctxt "@title:menu menubar:toplevel" -msgid "P&lugins" -msgstr "Плагины" - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Browse plugins..." -msgstr "Просмотр плагинов..." - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Installed plugins..." -msgstr "Установленные плагины..." - #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" @@ -115,19 +55,17 @@ 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 -#: /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:428 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/3MFReader/WorkspaceDialog.qml:376 #: /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 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:253 msgctxt "@action:button" msgid "Cancel" msgstr "Отмена" @@ -154,15 +92,15 @@ msgstr "Файл отправлен через Doodle3D Connect" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@action:button" -msgid "Open Connect.." -msgstr "Открыть соединение..." +msgid "Open Connect..." +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 "Открыть Doodle3D Connect web интерфейс" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Показать журнал изменений" @@ -197,37 +135,38 @@ msgctxt "@info:status" msgid "Connected via USB" msgstr "Подключено через USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 msgctxt "@info:title" -msgid "Print Details" -msgstr "Подробности печати" +msgid "Printer Unavailable" +msgstr "Принтер недоступен" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 msgctxt "@info:title" msgid "USB Printing" msgstr "USB печать" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 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/USBPrinterOutputDevice.py:461 #: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 msgctxt "@info:title" msgid "Warning" msgstr "Внимание" @@ -291,11 +230,11 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Невозможно сохранить на внешний носитель {0}: {1}" #: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 msgctxt "@info:title" msgid "Error" msgstr "Ошибка" @@ -344,346 +283,332 @@ msgctxt "@item:intext" msgid "Removable Drive" 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Печать через сеть" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Печать через сеть" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:479 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:502 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@action:button" msgid "Retry" msgstr "Повторить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Послать запрос доступа ещё раз" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "Доступ к принтеру получен" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:375 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:385 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:371 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:392 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:384 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:405 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:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 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:392 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 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:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 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:487 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 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:649 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:666 #, 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:650 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:667 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 #, 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:682 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 #, 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:692 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "Недостаточно материала в катушке {0}." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 #, 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:716 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 #, 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:724 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:741 #, 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:729 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 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:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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:736 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Несовпадение конфигурации" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "Отправка новых заданий (временно) заблокирована, идёт отправка предыдущего задания." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Отправка данных на принтер" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:title" msgid "Sending Data" msgstr "Отправка данных" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 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:1034 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Прерывание печати…" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 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:1046 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Печать приостановлена..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Печать возобновлена..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 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:1193 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "Желаете использовать текущую конфигурацию принтера в Cura?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1220 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:112 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "Данный принтер не настроен для управления группой подключенных принтеров Ultimaker 3." -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:113 #, 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 "Данный принтер управляет группой из {count} подключенных принтеров Ultimaker 3." -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "{printer_name} завершил печать '{job_name}'. Пожалуйста, освободите область печати." -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 #, 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 "{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 "Отправка новых заданий (временно) заблокирована, идёт отправка предыдущего задания." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 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 "Невозможно отправить новое задание: данный 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 "Отправляем {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 "Отправка {file_name} на группу {cluster_name}." - -#: /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:504 -msgctxt "@info:tooltip" -msgid "Opens the print jobs interface in your browser." -msgstr "Открыть интерфейс с заданиями печати в вашем браузере." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Невозможно отправить задание на группу {cluster_name}." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "Отправка {file_name} на группу {cluster_name}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "Показать задания на печать" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "Открыть интерфейс с заданиями печати в вашем браузере." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label" +msgid "Unknown" +msgstr "Неизвестный" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#, python-brace-format +msgctxt "@info:status" +msgid "Printer '{printer_name}' has finished printing '{job_name}'." +msgstr "{printer_name} завершил печать '{job_name}'." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +msgctxt "@info:status" +msgid "Print finished" +msgstr "Печать завершена" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 +msgctxt "@label:status" +msgid "Action required" +msgstr "Необходимое действие" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "Отправляем {file_name} на группу {cluster_name}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +msgctxt "@action" +msgid "Connect via Network" +msgstr "Подключиться через сеть" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 #, 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 "Рекомендуется регулярно обновлять прошивку принтера {machine_name}. Это может сделано когда {machine_name} подключен к сети или к USB." +msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." +msgstr "Для {machine_name} доступны новые функции! Рекомендуется обновить встроенное программное обеспечение принтера." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Доступна новая прошивка %s" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 msgctxt "@action:button" -msgid "Download" -msgstr "Скачать" +msgid "How to update" +msgstr "Порядок обновления" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 msgctxt "@info" msgid "Could not access update information." msgstr "Не могу получить информацию об обновлениях." @@ -713,7 +638,22 @@ msgctxt "@info:status" msgid "Error while starting %s!" msgstr "Ошибка при запуске %s!" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Simulation view" +msgstr "Вид моделирования" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +msgctxt "@info:status" +msgid "Cura does not accurately display layers when Wire Printing is enabled" +msgstr "Cura не аккуратно отображает слои при использовании печати через кабель" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:101 +msgctxt "@info:title" +msgid "Simulation View" +msgstr "Вид моделирования" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 msgid "Modify G-Code" msgstr "Изменить G-код" @@ -743,21 +683,6 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "Файл G-code" -#: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 -msgctxt "@item:inlistbox" -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" @@ -790,8 +715,9 @@ msgstr "Невозможно нарезать модель, используя #: /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 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 msgctxt "@info:title" msgid "Unable to slice" msgstr "Невозможно нарезать" @@ -802,23 +728,29 @@ 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:306 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" +msgstr "Не удалось выполнить слайсинг из-за настроек модели. Следующие настройки ошибочны для одной или нескольких моделей: {error_labels}" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 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:315 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "Нечего нарезать, так как ни одна модель не попадает в объём принтера. Пожалуйста, отмасштабируйте или поверните модель." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:65 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:status" msgid "Processing Layers" msgstr "Обработка слоёв" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:title" msgid "Information" msgstr "Информация" @@ -833,14 +765,36 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Правка параметров модели" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:475 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23 +msgid "Install" +msgstr "Установить" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It is not set to a directory." +msgstr "Не удалось скопировать файлы плагинов Siemens NX. Проверьте переменную среды UGII_USER_DIR. Ей не назначен каталог." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81 +msgid "Successfully installed Siemens NX Cura plugin." +msgstr "Плагин Siemens NX Cura успешно установлен." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgstr "Не удалось скопировать файлы плагинов Siemens NX. Проверьте переменную среды UGII_USER_DIR." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 +msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." +msgstr "Не удалось установить плагин Siemens NX. Не удалось установить переменную среды UGII_USER_DIR для Siemens NX." + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 msgctxt "@title:tab" msgid "Recommended" msgstr "Рекомендованная" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Custom" msgstr "Своя" @@ -851,29 +805,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Файл 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 msgctxt "@label" msgid "Nozzle" msgstr "Сопло" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 -msgctxt "@menuitem" -msgid "Browse plugins" -msgstr "Просмотр плагинов" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "Невозможно получить идентификатор плагин {0}" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 msgctxt "@info:tile" msgid "Warning" msgstr "Внимание" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 msgctxt "@window:title" msgid "Plugin browser" msgstr "Браузер плагинов" @@ -888,18 +837,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Файл G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:254 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Обработка G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 msgctxt "@info:title" msgid "G-code Details" msgstr "Параметры G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 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." @@ -941,73 +890,78 @@ msgctxt "@action" msgid "Level build plate" msgstr "Выравнивание стола" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Внешняя стенка" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 msgctxt "@tooltip" msgid "Inner Walls" msgstr "Внутренние стенки" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 msgctxt "@tooltip" msgid "Skin" msgstr "Покрытие" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 msgctxt "@tooltip" msgid "Infill" msgstr "Заполнение" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 msgctxt "@tooltip" msgid "Support Infill" msgstr "Заполнение поддержек" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 msgctxt "@tooltip" msgid "Support Interface" msgstr "Связующий слой поддержек" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Support" msgstr "Поддержки" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" msgid "Skirt" msgstr "Юбка" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 msgctxt "@tooltip" msgid "Travel" msgstr "Перемещение" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Retractions" msgstr "Откаты" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Other" msgstr "Другое" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +msgctxt "@label unknown material" +msgid "Unknown" +msgstr "Неизвестно" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Предообратка файла {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 msgctxt "@item:material" msgid "No material loaded" msgstr "Материал не загружен" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 msgctxt "@item:material" msgid "Unknown material" msgstr "Неизвестный материал" @@ -1034,13 +988,13 @@ msgid "Can't Find Location" msgstr "Не могу найти место" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 msgctxt "@title:window" msgid "File Already Exists" msgstr "Файл уже существует" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 #, 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?" @@ -1056,12 +1010,22 @@ msgctxt "@label" msgid "Custom Material" msgstr "Собственный материал" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 +msgctxt "@menuitem" +msgid "Global" +msgstr "Общие" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Не переопределен" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 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/MachineManager.py:118 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1082,62 +1046,62 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Отмена изменения диаметра материала." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Невозможно экспортировать профиль в {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Невозможно экспортировать профиль в {0}: Плагин записи уведомил об ошибке." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Экспортирование профиля в {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:157 msgctxt "@info:title" -msgid "Export Details" -msgstr "Экспорт подробностей" +msgid "Export succeeded" +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 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "Невозможно импортировать профиль из {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Успешно импортирован профиль {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 #, 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:272 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 msgctxt "@label" msgid "Custom profile" msgstr "Собственный профиль" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "У профайла отсутствует тип качества." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1164,240 +1128,316 @@ msgctxt "@info:title" msgid "Placing Object" msgstr "Размещение объекта" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 msgctxt "@title:window" msgid "Crash Report" msgstr "Отчёт о сбое" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:79 -msgctxt "@label" +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +msgctxt "@label crash message" 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

    " +"

    A fatal exception has occurred. Please send us this Crash Report to fix the problem

    \n" +"

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" +" " +msgstr "

    Произошло критическое исключение. Отправьте нам этот отчёт о сбое, чтобы мы могли устранить проблему

    \n

    Нажмите кнопку «Отправить отчёт», чтобы автоматически отправить отчёт об ошибке на наш сервер

    \n " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +msgctxt "@title:groupbox" +msgid "System information" +msgstr "Информация о системе" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +msgctxt "@label unknown version of Cura" +msgid "Unknown" +msgstr "Неизвестно" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 +#, python-brace-format +msgctxt "@label Cura version" +msgid "Cura version: {version}
    " +msgstr "Версия Cura: {version}
    " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -msgctxt "@action:button" -msgid "Open Web Page" -msgstr "Открыть веб страницу" +#, python-brace-format +msgctxt "@label Platform" +msgid "Platform: {platform}
    " +msgstr "Платформа: {platform}
    " -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 +#, python-brace-format +msgctxt "@label Qt version" +msgid "Qt version: {qt}
    " +msgstr "Версия Qt: {qt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 +#, python-brace-format +msgctxt "@label PyQt version" +msgid "PyQt version: {pyqt}
    " +msgstr "Версия PyQt: {pyqt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 +#, python-brace-format +msgctxt "@label OpenGL" +msgid "OpenGL: {opengl}
    " +msgstr "OpenGL: {opengl}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#, python-brace-format +msgctxt "@label OpenGL version" +msgid "
  • OpenGL Version: {version}
  • " +msgstr "
  • Версия OpenGL: {version}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#, python-brace-format +msgctxt "@label OpenGL vendor" +msgid "
  • OpenGL Vendor: {vendor}
  • " +msgstr "
  • Поставщик OpenGL: {vendor}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#, python-brace-format +msgctxt "@label OpenGL renderer" +msgid "
  • OpenGL Renderer: {renderer}
  • " +msgstr "
  • Средство визуализации OpenGL: {renderer}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +msgctxt "@title:groupbox" +msgid "Exception traceback" +msgstr "Диагностика исключения" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +msgctxt "@title:groupbox" +msgid "Logs" +msgstr "Журналы" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +msgctxt "@title:groupbox" +msgid "User description" +msgstr "Описание пользователя" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +msgctxt "@action:button" +msgid "Send report" +msgstr "Отправить отчёт" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Загрузка принтеров..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Настройка сцены..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Загрузка интерфейса..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 #, 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:1295 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 #, 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:1304 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1357 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Невозможно открыть любой другой файл, если G-code файл уже загружен. Пропускаю импортирование {0}" +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +msgctxt "@info:status" +msgid "The selected model was too small to load." +msgstr "Выбранная модель слишком мала для загрузки." + #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 msgctxt "@title" msgid "Machine Settings" msgstr "Параметры принтера" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:77 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:78 msgctxt "@title:tab" msgid "Printer" msgstr "Принтер" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:96 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 msgctxt "@label" msgid "Printer Settings" msgstr "Параметры принтера" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:107 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 msgctxt "@label" msgid "X (Width)" msgstr "X (Ширина)" -#: /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: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 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 msgctxt "@label" msgid "mm" msgstr "мм" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:117 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Глубина)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:127 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Высота)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:139 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:140 msgctxt "@label" msgid "Build plate shape" msgstr "Форма стола" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:148 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 msgctxt "@option:check" msgid "Origin at center" msgstr "Начало координат в центре" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:156 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:157 msgctxt "@option:check" msgid "Heated bed" msgstr "Нагреваемый стол" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:167 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 msgctxt "@label" msgid "Gcode flavor" msgstr "Вариант G-кода" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:180 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 msgctxt "@label" msgid "Printhead Settings" msgstr "Параметры головы" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:190 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 msgctxt "@label" msgid "X min" msgstr "X минимум" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 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 "Расстояние от левого края головы до центра сопла. Используется для предотвращения столкновений с уже напечатанной частью и головой в режиме \"По отдельности\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:200 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 msgctxt "@label" msgid "Y min" msgstr "Y минимум" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 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 "Расстояние от переднего края головы до центра сопла. Используется для предотвращения столкновений с уже напечатанной частью и головой в режиме \"По отдельности\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:210 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 msgctxt "@label" msgid "X max" msgstr "X максимум" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 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 "Расстояние от правого края головы до центра сопла. Используется для предотвращения столкновений с уже напечатанной частью и головой в режиме \"По отдельности\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:220 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 msgctxt "@label" msgid "Y max" msgstr "Y максимум" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 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 "Расстояние от заднего края головы до центра сопла. Используется для предотвращения столкновений с уже напечатанной частью и головой в режиме \"По отдельности\"." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:233 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 msgctxt "@label" msgid "Gantry height" msgstr "Высота портала" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 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:254 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 msgctxt "@label" msgid "Number of Extruders" msgstr "Количество экструдеров" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 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:290 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 msgctxt "@label" msgid "Material diameter" msgstr "Диаметр материала" -#: /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:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 msgctxt "@label" msgid "Nozzle size" msgstr "Диаметр сопла" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 msgctxt "@label" msgid "Start Gcode" msgstr "Начало G-кода" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "Команды в G-коде, которые будут выполнены при старте печати." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:335 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 msgctxt "@label" msgid "End Gcode" msgstr "Конец G-кода" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "Команды в G-коде, которые будут выполнены в конце печати." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:377 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 msgctxt "@label" msgid "Nozzle Settings" msgstr "Параметры сопла" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 msgctxt "@label" msgid "Nozzle offset X" msgstr "Смещение сопла по оси X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Смещение сопла по оси Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "G-код старта экструдера" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Extruder End Gcode" msgstr "G-код завершения экструдера" @@ -1410,12 +1450,11 @@ 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/PostProcessingPlugin/PostProcessingPlugin.qml:445 #: /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/Preferences/MachinesPage.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 msgctxt "@action:button" msgid "Close" @@ -1467,38 +1506,30 @@ 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 @@ -1507,220 +1538,221 @@ msgid "Remove" msgstr "Удалить" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:194 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 msgctxt "@label" msgid "Type" msgstr "Тип" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 msgctxt "@label" msgid "Firmware version" msgstr "Версия прошивки" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 msgctxt "@label" msgid "Address" msgstr "Адрес" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:286 +msgctxt "@label" +msgid "This printer is not set up to host a group of Ultimaker 3 printers." +msgstr "Данный принтер не настроен для управления группой принтеров Ultimaker 3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:290 +msgctxt "@label" +msgid "This printer is the host for a group of %1 Ultimaker 3 printers." +msgstr "Данный принтер управляет группой из %1 принтеров Ultimaker 3." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:300 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/DiscoverUM3Action.qml:305 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /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:316 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 msgctxt "@title:window" msgid "Printer Address" msgstr "Адрес принтера" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:346 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 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:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 +#: /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" +msgid "OK" +msgstr "OK" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Печать через сеть" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Печать" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:36 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "%1 не настроен для управления группой подключенных принтеров Ultimaker 3" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "Открытие страницы заданий печати в веб-браузере по умолчанию." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "Просмотреть задания на печать" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 +msgctxt "@label" +msgid "Preparing to print" +msgstr "Подготовка к печати" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 +msgctxt "@label:status" +msgid "Printing" +msgstr "Печать" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 +msgctxt "@label:status" +msgid "Available" +msgstr "Доступен" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +msgctxt "@label:MonitorStatus" +msgid "Lost connection with the printer" +msgstr "Потеряно соединение с принтером" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 +msgctxt "@label:status" +msgid "Disabled" +msgstr "Отключено" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273 +msgctxt "@label:status" +msgid "Reserved" +msgstr "Занят" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:275 +msgctxt "@label:status" +msgid "Finished" +msgstr "Завершено" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 +msgctxt "@label:status" +msgid "Paused" +msgstr "Приостановлено" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 +msgctxt "@label:status" +msgid "Resuming" +msgstr "Возобновляется" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 +msgctxt "@label:status" +msgid "Print aborted" +msgstr "Печать прервана" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:410 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "Не принимает задания на печать" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 +msgctxt "@label" +msgid "Finishes at: " +msgstr "Заканчивается на: " + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 +msgctxt "@label" +msgid "Clear build plate" +msgstr "Очистите стол" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "Ожидание изменения конфигурации" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:64 +msgctxt "@title" +msgid "Print jobs" +msgstr "Задания на печать" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 +msgctxt "@label" +msgid "Printing" +msgstr "Печать" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 +msgctxt "@label" +msgid "Queued" +msgstr "Запланировано" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:171 +msgctxt "@label:title" +msgid "Printers" +msgstr "Принтеры" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 +msgctxt "@action:button" +msgid "View printers" +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/DiscoverUM3Action.qml:284 -msgctxt "@label" -msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -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 "Данный принтер управляет группой из {count} подключенных принтеров Ultimaker 3" - -#: /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 "%1 не настроен для управления группой подключенных принтеров Ultimaker 3" - -#: /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" @@ -1746,13 +1778,6 @@ msgctxt "@option:curaSolidworksStlQuality" msgid "Always use Coarse quality" msgstr "Всегда использовать грубое качество" -#: /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..." @@ -1779,11 +1804,91 @@ msgid "Fine" msgstr "Хорошее" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 msgctxt "@text:window" msgid "Remember my choice" msgstr "Запомнить мой выбор" +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +msgctxt "@label" +msgid "Color scheme" +msgstr "Цветовая схема" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +msgctxt "@label:listbox" +msgid "Material Color" +msgstr "Цвет материала" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +msgctxt "@label:listbox" +msgid "Line Type" +msgstr "Тип линии" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +msgctxt "@label:listbox" +msgid "Feedrate" +msgstr "Скорость подачи" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +msgctxt "@label:listbox" +msgid "Layer thickness" +msgstr "Толщина слоя" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +msgctxt "@label" +msgid "Compatibility Mode" +msgstr "Режим совместимости" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +msgctxt "@label" +msgid "Show Travels" +msgstr "Показать движения" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +msgctxt "@label" +msgid "Show Helpers" +msgstr "Показать поддержку" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +msgctxt "@label" +msgid "Show Shell" +msgstr "Показать стенки" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +msgctxt "@label" +msgid "Show Infill" +msgstr "Показать заполнение" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +msgctxt "@label" +msgid "Only Show Top Layers" +msgstr "Показать только верхние слои" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +msgctxt "@label" +msgid "Show 5 Detailed Layers On Top" +msgstr "Показать 5 детализированных слоёв сверху" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +msgctxt "@label" +msgid "Top / Bottom" +msgstr "Дно / крышка" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +msgctxt "@label" +msgid "Inner Wall" +msgstr "Внутренняя стенка" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +msgctxt "@label" +msgid "min" +msgstr "мин." + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +msgctxt "@label" +msgid "max" +msgstr "макс." + #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 msgctxt "@title:window" msgid "Post Processing Plugin" @@ -1794,81 +1899,21 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Скрипты пост-обработки" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:218 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:217 msgctxt "@action" msgid "Add a script" msgstr "Добавить скрипт" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:264 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:263 msgctxt "@label" msgid "Settings" msgstr "Параметры" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "Изменить активные скрипты пост-обработки" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 -msgctxt "@label" -msgid "Color scheme" -msgstr "Цветовая схема" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:91 -msgctxt "@label:listbox" -msgid "Material Color" -msgstr "Цвет материала" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:95 -msgctxt "@label:listbox" -msgid "Line Type" -msgstr "Тип линии" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 -msgctxt "@label" -msgid "Compatibility Mode" -msgstr "Режим совместимости" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 -msgctxt "@label" -msgid "Show Travels" -msgstr "Показать движения" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 -msgctxt "@label" -msgid "Show Helpers" -msgstr "Показать поддержку" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 -msgctxt "@label" -msgid "Show Shell" -msgstr "Показать стенки" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:234 -msgctxt "@label" -msgid "Show Infill" -msgstr "Показать заполнение" - -#: /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:292 -msgctxt "@label" -msgid "Show 5 Detailed Layers On Top" -msgstr "Показать 5 детализированных слоёв сверху" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:303 -msgctxt "@label" -msgid "Top / Bottom" -msgstr "Дно / крышка" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 -msgctxt "@label" -msgid "Inner Wall" -msgstr "Внутренняя стенка" - #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" msgid "Convert Image..." @@ -1960,72 +2005,72 @@ msgctxt "@label:checkbox" msgid "Show all" msgstr "Показать всё" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:13 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Открытие проекта" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 msgctxt "@action:ComboBox option" msgid "Update existing" msgstr "Обновить существующий" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:55 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 msgctxt "@action:ComboBox option" msgid "Create new" msgstr "Создать новый" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:70 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Сводка - Проект Cura" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:88 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:88 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 msgctxt "@action:label" msgid "Printer settings" msgstr "Параметры принтера" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 msgctxt "@info:tooltip" msgid "How should the conflict in the machine be resolved?" msgstr "Как следует решать конфликт в принтере?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:124 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:97 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 msgctxt "@action:label" msgid "Type" msgstr "Тип" -#: /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 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:144 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:201 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:293 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:190 msgctxt "@action:label" msgid "Name" msgstr "Название" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:161 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:164 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:166 msgctxt "@action:label" msgid "Profile settings" msgstr "Параметры профиля" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 msgctxt "@info:tooltip" msgid "How should the conflict in the profile be resolved?" msgstr "Как следует решать конфликт в профиле?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:212 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 msgctxt "@action:label" msgid "Not in profile" msgstr "Вне профиля" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:217 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2033,12 +2078,12 @@ msgstr[0] "%1 перекрыт" msgstr[1] "%1 перекрыто" msgstr[2] "%1 перекрыто" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:232 msgctxt "@action:label" msgid "Derivative from" msgstr "Производное от" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:233 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:237 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" @@ -2046,45 +2091,45 @@ msgstr[0] "%1, %2 перекрыто" msgstr[1] "%1, %2 перекрыто" msgstr[2] "%1, %2 перекрыто" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:249 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:253 msgctxt "@action:label" msgid "Material settings" msgstr "Параметры материала" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:265 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Как следует решать конфликт в материале?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:207 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 msgctxt "@action:label" msgid "Setting visibility" msgstr "Видимость параметров" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:317 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:321 msgctxt "@action:label" msgid "Mode" msgstr "Режим" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:332 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:216 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:218 msgctxt "@action:label" msgid "Visible settings:" msgstr "Видимые параметры:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:223 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 из %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:363 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368 msgctxt "@action:warning" -msgid "Loading a project will clear all models on the buildplate" -msgstr "Загрузка проекта уберёт все модели со стола" +msgid "Loading a project will clear all models on the build plate." +msgstr "Загрузка проекта приведет к удалению всех моделей на рабочем столе." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:381 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 msgctxt "@action:button" msgid "Open" msgstr "Открыть" @@ -2109,6 +2154,11 @@ msgctxt "@action:button" msgid "Installed" msgstr "Установлено" +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "Скачать" + #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" @@ -2117,13 +2167,10 @@ msgstr "Лицензионное соглашение плагина" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" msgid "" -" plugin contains a license.\n" +"This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr "" -" плагин содержит лицензию.\n" -"Вам требуется принять лицензию для установки данного плагина.\n" -"Вы согласны с написанным ниже?" +msgstr "Этот плагин содержит лицензию.\nЧтобы установить этот плагин, необходимо принять условия лицензии.\nПринять приведенные ниже условия?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" @@ -2135,6 +2182,11 @@ msgctxt "@action:button" msgid "Decline" msgstr "Отклонить" +#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 +msgctxt "@title:window" +msgid "User Agreement" +msgstr "Пользовательское соглашение" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 msgctxt "@title" @@ -2320,30 +2372,25 @@ msgid "Printer does not accept commands" msgstr "Принтер не принимает команды" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "В режиме обслуживания. Пожалуйста, проверьте принтер" -#: /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:103 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Печать..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Приостановлен" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Подготовка..." @@ -2388,9 +2435,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" @@ -2561,7 +2606,7 @@ msgid "Unit" msgstr "Единица" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "General" msgstr "Общее" @@ -2792,7 +2837,7 @@ msgid "Send (anonymous) print information" msgstr "Отправлять (анонимно) информацию о печати" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:441 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 msgctxt "@title:tab" msgid "Printers" msgstr "Принтеры" @@ -2810,39 +2855,39 @@ msgctxt "@action:button" msgid "Rename" msgstr "Переименовать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 msgctxt "@label" msgid "Printer type:" msgstr "Тип принтера:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:158 msgctxt "@label" msgid "Connection:" msgstr "Соединение:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:166 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:164 #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 msgctxt "@info:status" msgid "The printer is not connected." msgstr "Принтер не подключен." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:170 msgctxt "@label" msgid "State:" msgstr "Состояние:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Waiting for someone to clear the build plate" msgstr "Ожидаем, чтобы кто-нибудь освободил стол" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 msgctxt "@label:MonitorStatus" msgid "Waiting for a printjob" msgstr "Ожидаем задание на печать" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 msgctxt "@title:tab" msgid "Profiles" msgstr "Профили" @@ -2940,7 +2985,7 @@ msgid "Export Profile" msgstr "Экспортировать профиль" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 msgctxt "@title:tab" msgid "Materials" msgstr "Материалы" @@ -2998,7 +3043,7 @@ msgid "Successfully exported material to %1" msgstr "Материал успешно экспортирован в %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 msgctxt "@title:window" msgid "Add Printer" msgstr "Добавление принтера" @@ -3018,6 +3063,11 @@ msgctxt "@title:window" msgid "About Cura" msgstr "О Cura" +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43 +msgctxt "@label" +msgid "version: %1" +msgstr "версия: %1" + #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." @@ -3028,9 +3078,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" @@ -3112,12 +3160,17 @@ msgctxt "@label" msgid "Polygon clipping library" msgstr "Библиотека обрезки полигонов" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Библиотека Python HTTP" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 msgctxt "@label" msgid "Font" msgstr "Шрифт" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 msgctxt "@label" msgid "SVG icons" msgstr "Иконки SVG" @@ -3127,43 +3180,45 @@ msgctxt "@label" msgid "Profile:" msgstr "Профиль:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 +msgctxt "@" +msgid "No Profile Available" +msgstr "отсутствуют доступные профили" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 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" -"Нажмите для открытия менеджера профилей." +msgstr "Значения некоторых параметров отличаются от значений профиля.\n\nНажмите для открытия менеджера профилей." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 msgctxt "@label:textbox" msgid "Search..." msgstr "Поиск..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Скопировать значение для всех экструдеров" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Спрятать этот параметр" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Не показывать этот параметр" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Оставить этот параметр видимым" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Настроить видимость параметров..." @@ -3174,10 +3229,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." @@ -3205,10 +3257,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" @@ -3216,61 +3265,73 @@ 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 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Настройка печати" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 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" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +msgctxt "@label Hours and minutes" msgid "00h 00min" -msgstr "00ч 00мин" +msgstr "00 ч 00 мин" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 msgctxt "@tooltip" -msgid "Time information" -msgstr "Информация о времени" +msgid "Time specification
    " +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 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 msgctxt "@label" +msgid "Cost specification" +msgstr "Настройка расчета стоимости" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1 м" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1 г" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +msgctxt "@label" +msgid "Total:" +msgstr "Итого:" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" -msgstr "%1м / ~ %2гр / ~ %4 %3" +msgstr "%1 м / ~ %2 г / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" -msgstr "%1м / ~ %2гр" +msgstr "%1 м / ~ %2 г" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 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:481 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" msgid "Custom Print Setup

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

    Печатайте с полным контролем над каждой особенностью процесса слайсинга." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Автоматически: %1" @@ -3280,7 +3341,7 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "Вид" -#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" msgstr "Автоматически: %1" @@ -3311,13 +3372,13 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "Открыть недавние" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 msgctxt "@info:status" msgid "No printer connected" msgstr "Принтер не подключен" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 msgctxt "@label" msgid "Extruder" msgstr "Экструдер" @@ -3332,152 +3393,182 @@ msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "Текущая температура экструдера." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:188 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Цвет материала в данном экструдере." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Материал в данном экструдере." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Сопло, вставленное в данный экструдер." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 msgctxt "@label" msgid "Build plate" msgstr "Стол" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 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:343 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:344 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "Текущая температура горячего стола." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:422 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "Температура преднагрева горячего стола." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Отмена" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button" msgid "Pre-heat" msgstr "Преднагрев" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 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:677 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:703 +msgctxt "@label" +msgid "Printer control" +msgstr "Управление принтером" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 +msgctxt "@label" +msgid "Jog Position" +msgstr "Положение толчковой подачи" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735 +msgctxt "@label" +msgid "X/Y" +msgstr "X/Y" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842 +msgctxt "@label" +msgid "Z" +msgstr "Z" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 +msgctxt "@label" +msgid "Jog Distance" +msgstr "Расстояние толчковой подачи" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018 msgctxt "@label" msgid "Active print" msgstr "Идёт печать" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 msgctxt "@label" msgid "Job Name" msgstr "Имя задачи" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 msgctxt "@label" msgid "Printing Time" msgstr "Время печати" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1035 msgctxt "@label" msgid "Estimated time left" msgstr "Осталось примерно" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Полный экран" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "Отмена" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "Возврат" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "Выход" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +msgctxt "@action:inmenu menubar:view" +msgid "&Reset camera position" +msgstr "&Сбросить положение камеры" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Настроить Cura…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "Добавить принтер..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:115 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Управление принтерами..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Управление материалами…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "Обновить профиль, используя текущие параметры" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "Сбросить текущие параметры" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "Создать профиль из текущих параметров…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Управление профилями..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Показать онлайн документацию" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:171 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Отправить отчёт об ошибке" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "О Cura..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 msgctxt "@action:inmenu menubar:edit" msgid "Delete &Selected Model" msgid_plural "Delete &Selected Models" @@ -3485,7 +3576,7 @@ msgstr[0] "Удалить выбранную модель" msgstr[1] "Удалить выбранные модели" msgstr[2] "Удалить выбранные модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" @@ -3493,7 +3584,7 @@ msgstr[0] "Центрировать выбранную модель" msgstr[1] "Центрировать выбранные модели" msgstr[2] "Центрировать выбранные модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" @@ -3501,143 +3592,153 @@ msgstr[0] "Размножить выбранную модель" msgstr[1] "Размножить выбранные модели" msgstr[2] "Размножить выбранные модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Удалить модель" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:222 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Поместить модель по центру" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:228 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "Сгруппировать модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Разгруппировать модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "Объединить модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "Дублировать модель..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:265 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "Выбрать все модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "Очистить стол" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "Перезагрузить все модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Выровнять все модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Выровнять выбранные" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Сбросить позиции всех моделей" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "Сбросить преобразования всех моделей" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "Открыть файл(ы)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "Новый проект..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "Показать журнал движка..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:346 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Показать конфигурационный каталог" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Видимость параметров…" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +msgctxt "@action:menu" +msgid "Browse plugins..." +msgstr "Просмотр плагинов..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +msgctxt "@action:menu" +msgid "Installed plugins..." +msgstr "Установленные плагины..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "Пожалуйста, загрузите 3D модель" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Готов к нарезке" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Нарезка на слои..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "Готов к %1" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Невозможно нарезать" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Нарезка недоступна" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Подготовка" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Cancel" msgstr "Отмена" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 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:593 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 msgctxt "@title:window" msgid "Open file(s)" msgstr "Открыть файл(ы)" @@ -3654,112 +3755,117 @@ msgstr "Импортировать всё как модели" #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 msgctxt "@title:window" -msgid "Cura" -msgstr "Cura" +msgid "Ultimaker Cura" +msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "Файл" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "Сохранить выделенное в файл" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "Сохранить как..." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 msgctxt "@title:menu menubar:file" msgid "Save project" msgstr "Сохранить проект" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "Правка" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 msgctxt "@title:menu" msgid "&View" msgstr "Вид" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:167 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 msgctxt "@title:menu" msgid "&Settings" msgstr "Параметры" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "Принтер" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 msgctxt "@title:menu" msgid "&Material" msgstr "Материал" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 msgctxt "@title:menu" msgid "&Profile" msgstr "Профиль" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Установить как активный экструдер" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:202 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "Расширения" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +msgctxt "@title:menu menubar:toplevel" +msgid "P&lugins" +msgstr "Плагины" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "Настройки" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "Справка" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 msgctxt "@action:button" msgid "Open File" msgstr "Открыть файл" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 msgctxt "@title:tab" msgid "Settings" msgstr "Параметры" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 msgctxt "@title:window" msgid "New project" msgstr "Новый проект" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 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:694 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 msgctxt "@window:title" msgid "Install Plugin" msgstr "Установка плагина" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 msgctxt "@title:window" msgid "Open File(s)" msgstr "Открыть файл(ы)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 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-кодом. Вы можете открыть только один файл за раз. Измените свой выбор, пожалуйста." @@ -3769,102 +3875,112 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Сохранить проект" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 msgctxt "@action:label" msgid "Extruder %1" msgstr "Экструдер %1" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 и материал" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:242 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Больше не показывать сводку по проекту" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 msgctxt "@action:button" msgid "Save" msgstr "Сохранить" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 msgctxt "@title:tab" msgid "Prepare" msgstr "Подготовка" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 msgctxt "@title:tab" msgid "Monitor" msgstr "Монитор" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 msgctxt "@label" msgid "Layer Height" msgstr "Высота слоя" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +msgctxt "@tooltip" +msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +msgstr "В настоящее время активен пользовательский профиль. Чтобы включить ползунок качества, на вкладке «Пользовательские» выберите профиль качества по умолчанию" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 msgctxt "@label" msgid "Print Speed" msgstr "Скорость печати" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 msgctxt "@label" msgid "Slower" msgstr "Медленнее" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 msgctxt "@label" msgid "Faster" msgstr "Быстрее" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "В некоторые настройки профиля были внесены изменения. Если их необходимо изменить, перейдите в пользовательский режим." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 msgctxt "@label" msgid "Infill" msgstr "Заполнение" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 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 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 msgctxt "@label" msgid "Enable gradual" msgstr "Постепенное" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 msgctxt "@label" msgid "Generate Support" msgstr "Генерация поддержек" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 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 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 msgctxt "@label" msgid "Support Extruder" msgstr "Экструдер поддержек" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 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 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Тип прилипания к столу" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 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:883 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 msgctxt "@label" msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" msgstr "Требуется помощь в улучшении вашей печати?
    Обратитесь к Руководству Ultimaker по решению проблем" @@ -3882,17 +3998,17 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Открыть файл проекта" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 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 "Это проект Cura. Следует открыть его как проект или просто импортировать из него модели?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:95 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@action:button" msgid "Open as project" msgstr "Открыть как проект" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Import models" msgstr "Импортировать модели" @@ -3902,17 +4018,17 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Журнал движка" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 msgctxt "@label" msgid "Material" msgstr "Материал" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 msgctxt "@label" -msgid "Check material compatibility" -msgstr "Проверить совместимость материала" +msgid "Check compatibility" +msgstr "Проверить совместимость" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "Нажмите для проверки совместимости материала на Ultimaker.com." @@ -4027,11 +4143,6 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "Соединение с сетью UM3" -#: CuraPrintClusterUpload/plugin.json -msgctxt "name" -msgid "UM3 Network Connection (Cluster)" -msgstr "Соединение с сетью UM3 (кластер)" - #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4052,6 +4163,16 @@ msgctxt "name" msgid "SolidWorks Integration" msgstr "Интеграция с SolidWorks" +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Открытие вида моделирования." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Вид моделирования" + #: PostProcessingPlugin/plugin.json msgctxt "description" msgid "Extension that allows for user created scripts for post processing" @@ -4112,16 +4233,6 @@ msgctxt "name" msgid "GCode Profile Reader" msgstr "Чтение профиля из G-Code" -#: LayerView/plugin.json -msgctxt "description" -msgid "Provides the Layer view." -msgstr "Предоставляет послойный просмотр." - -#: LayerView/plugin.json -msgctxt "name" -msgid "Layer View" -msgstr "Просмотр слоёв" - #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4140,7 +4251,17 @@ msgstr "Обновляет конфигурацию Cura 2.7 до Cura 3.0." #: VersionUpgrade/VersionUpgrade27to30/plugin.json msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" -msgstr "" +msgstr "Обновление версии с 2.7 до 3.0" + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." +msgstr "Обновление конфигураций с Cura 3.0 до Cura 3.1." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.0 to 3.1" +msgstr "Обновление версии с 3.0 до 3.1" #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" @@ -4202,6 +4323,16 @@ msgctxt "name" msgid "Per Model Settings Tool" msgstr "Инструмент для настройки каждой модели" +#: cura-siemensnx-plugin/plugin.json +msgctxt "description" +msgid "Helps you to install an 'export to Cura' button in Siemens NX." +msgstr "Позволяет установить кнопку «Экспортировать в Cura» в Siemens NX." + +#: cura-siemensnx-plugin/plugin.json +msgctxt "name" +msgid "Siemens NX Integration" +msgstr "Siemens NX Integration" + #: 3MFReader/plugin.json msgctxt "description" msgid "Provides support for reading 3MF files." @@ -4262,6 +4393,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "Запись 3MF" +#: UserAgreementPlugin/plugin.json +msgctxt "description" +msgid "Ask the user once if he/she agrees with our license" +msgstr "Запрашивает согласие пользователя с условиями лицензии" + +#: UserAgreementPlugin/plugin.json +msgctxt "name" +msgid "UserAgreement" +msgstr "UserAgreement" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" @@ -4282,6 +4423,137 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Чтение профиля Cura" +#~ msgctxt "@label:status" +#~ msgid "Blocked" +#~ msgstr "блокированный" + +#~ msgctxt "@label:status" +#~ msgid "Can't start print" +#~ msgstr "Не удается начать печать" + +#~ msgctxt "@action:button" +#~ msgid "Open Connect.." +#~ msgstr "Открыть соединение..." + +#~ msgctxt "@info:title" +#~ msgid "Print Details" +#~ msgstr "Подробности печати" + +#~ 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 "Рекомендуется регулярно обновлять прошивку принтера {machine_name}. Это может сделано когда {machine_name} подключен к сети или к USB." + +msgctxt "@item:inlistbox" +msgid "Layer view" +msgstr "Просмотр слоёв" + +msgctxt "@info:title" +msgid "Layer View" +msgstr "Просмотр слоёв" + +#~ msgctxt "@menuitem" +#~ msgid "Browse plugins" +#~ msgstr "Просмотр плагинов" + +#~ msgctxt "@info:title" +#~ msgid "Export Details" +#~ msgstr "Экспорт подробностей" + +#~ 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 "" +#~ "

    Произошла неожиданная ошибка и мы не смогли её исправить!

    \n" +#~ "

    Пожалуйста, используйте информацию ниже для создания отчёта об ошибке на http://github.com/Ultimaker/Cura/issues

    " + +#~ msgctxt "@action:button" +#~ msgid "Open Web Page" +#~ msgstr "Открыть веб страницу" + +#~ msgctxt "@action:button" +#~ msgid "Ok" +#~ msgstr "Ok" + +#~ msgctxt "@label" +#~ msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +#~ msgstr "Данный принтер не настроен для управления группой подключенных принтеров Ultimaker 3" + +#~ msgctxt "@label" +#~ msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +#~ msgstr "Данный принтер управляет группой из {count} подключенных принтеров Ultimaker 3" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Подготовка" + +#~ msgctxt "@label" +#~ msgid "Completed on: " +#~ msgstr "Выполнено на:" + +#~ msgctxt "@info:tooltip" +#~ msgid "Opens the print jobs page with your default web browser." +#~ msgstr "Открывает страницу с заданиями на печать в вашем браузере." + +#~ msgctxt "@label" +#~ msgid "PRINTER GROUP" +#~ msgstr "ГРУППА ПРИНТЕРОВ" + +#~ msgctxt "@action:warning" +#~ msgid "Loading a project will clear all models on the buildplate" +#~ msgstr "Загрузка проекта уберёт все модели со стола" + +#~ 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 "" +#~ " плагин содержит лицензию.\n" +#~ "Вам требуется принять лицензию для установки данного плагина.\n" +#~ "Вы согласны с написанным ниже?" + +#~ msgctxt "@label" +#~ msgid "00h 00min" +#~ msgstr "00ч 00мин" + +#~ msgctxt "@tooltip" +#~ msgid "Time information" +#~ msgstr "Информация о времени" + +#~ msgctxt "@description" +#~ msgid "Print time" +#~ msgstr "Время печати" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g / ~ %4 %3" +#~ msgstr "%1м / ~ %2гр / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g" +#~ msgstr "%1м / ~ %2гр" + +#~ msgctxt "@title:window" +#~ msgid "Cura" +#~ msgstr "Cura" + +#~ msgctxt "@label" +#~ msgid "Check material compatibility" +#~ msgstr "Проверить совместимость материала" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection (Cluster)" +#~ msgstr "Соединение с сетью UM3 (кластер)" + +#~ msgctxt "description" +#~ msgid "Provides the Layer view." +#~ msgstr "Предоставляет послойный просмотр." + +msgctxt "name" +msgid "Layer View" +msgstr "Просмотр слоёв" + #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" #~ msgstr "Рентген" @@ -4601,9 +4873,9 @@ msgstr "Чтение профиля Cura" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "Предоставляет поддержку для импортирования профилей из GCode файлов." -#~ msgctxt "@label" -#~ msgid "Layer View" -#~ msgstr "Просмотр слоёв" +msgctxt "@label" +msgid "Layer View" +msgstr "Просмотр слоёв" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." diff --git a/resources/i18n/ru_RU/fdmextruder.def.json.po b/resources/i18n/ru_RU/fdmextruder.def.json.po index 7c5abae3bc..895544cc45 100644 --- a/resources/i18n/ru_RU/fdmextruder.def.json.po +++ b/resources/i18n/ru_RU/fdmextruder.def.json.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Ruslan Popov \n" "Language-Team: Ruslan Popov\n" "Language: ru_RU\n" diff --git a/resources/i18n/ru_RU/fdmprinter.def.json.po b/resources/i18n/ru_RU/fdmprinter.def.json.po old mode 100755 new mode 100644 index d47ace8f7d..fdeefe1154 --- a/resources/i18n/ru_RU/fdmprinter.def.json.po +++ b/resources/i18n/ru_RU/fdmprinter.def.json.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Ruslan Popov \n" "Language-Team: Ruslan Popov\n" "Language: ru_RU\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-коде, которые будут выполнены при старте печати, разделённые \n" -"." +msgstr "Команды в G-коде, которые будут выполнены при старте печати, разделённые \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-коде, которые будут выполнены в конце печати, разделённые \n" -"." +msgstr "Команды в G-коде, которые будут выполнены в конце печати, разделённые \n." #: fdmprinter.def.json msgctxt "material_guid label" @@ -611,6 +607,31 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "Высота первого слоя в миллиметрах. Более толстый слой упрощает прилипание пластика к столу." +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Допуск слайсинга" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Способ выполнения слайсинга слоев диагональными поверхностями. Области слоя можно создать на основе места пересечения середины слоя и поверхности (Середина). Кроме того, каждый слой может иметь области, попадающие в объем по высоте слоя (Исключение), или слой имеет области, попадающие в любое место слоя (Включение). Способ «Исключение» сохраняет больше деталей. Способ «Включение» обеспечивает наилучшую подгонку. Способ «Середина» требует минимального времени для обработки." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Середина" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Исключение" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Включение" + #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -761,6 +782,16 @@ 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" @@ -773,8 +804,8 @@ msgstr "Этот экструдер используется для печати #: fdmprinter.def.json msgctxt "wall_x_extruder_nr label" -msgid "Inner Walls Extruder" -msgstr "Печать внутренних стенок" +msgid "Inner Wall Extruder" +msgstr "Экструдер внутренней стенки" #: fdmprinter.def.json msgctxt "wall_x_extruder_nr description" @@ -1206,6 +1237,106 @@ 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 "ironing_enabled label" +msgid "Enable Ironing" +msgstr "Разрешить разглаживание" + +#: fdmprinter.def.json +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" +msgstr "Шаблон разглаживания" + +#: fdmprinter.def.json +msgctxt "ironing_pattern description" +msgid "The pattern to use for ironing top surfaces." +msgstr "Шаблон, который будет использоваться для разглаживания верхней оболочки." + +#: fdmprinter.def.json +msgctxt "ironing_pattern option concentric" +msgid "Concentric" +msgstr "Концентрический" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Зигзаг" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing label" +msgid "Ironing Line Spacing" +msgstr "Расстояние между линиями разглаживания" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing description" +msgid "The distance between the lines of ironing." +msgstr "Расстояние между линиями разглаживания." + +#: fdmprinter.def.json +msgctxt "ironing_flow label" +msgid "Ironing Flow" +msgstr "Поток разглаживания" + +#: fdmprinter.def.json +msgctxt "ironing_flow description" +msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." +msgstr "Объём материала, относительно от обычной линии, который будет выдавлен в процессе разглаживания. Наличие в сопле наличие материала помогает заполнять щели на верхней оболочке, но слишком большое значение приводит к излишнему выдавливанию материала и ухудшает качество оболочки." + +#: fdmprinter.def.json +msgctxt "ironing_inset label" +msgid "Ironing Inset" +msgstr "Границы разглаживания" + +#: fdmprinter.def.json +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 "infill label" msgid "Infill" @@ -1253,8 +1384,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, 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 "Шаблон заполнения при печати. Заполнение линиями или зиг-загом меняет направление на соседних слоях, уменьшая стоимость материала. Сетчатый, треугольный, кубический, восьмигранный и концентрический шаблоны полностью печатаются на каждом слое. Кубическое, четверть кубическое и восьмигранное заполнение меняется на каждом слое для получения более равного распределения по каждому направлению." +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, tri-hexagon, cubic, octet, quarter cubic, cross 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" @@ -1271,6 +1402,11 @@ msgctxt "infill_pattern option triangles" msgid "Triangles" msgstr "Треугольник" +#: fdmprinter.def.json +msgctxt "infill_pattern option trihexagon" +msgid "Tri-Hexagon" +msgstr "Шестигранник из треугольников" + #: fdmprinter.def.json msgctxt "infill_pattern option cubic" msgid "Cubic" @@ -1323,8 +1459,8 @@ 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 "Соединять концы линий заполнения где они соприкасаются со внутренней стенкой, используя линии, которые продолжают форму внутренней стенки. Активация этого параметра поможет крепче связывать заполнение со стенками и уменьшить влияние на качество заполнения вертикальных поверхностей. Отключение этого параметра уменьшает объём используемого материала." +msgid "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." +msgstr "Соединение мест пересечения шаблона заполнения и внутренних стенок с использованием линии, повторяющей контур внутренней стенки. Использование этой функции улучшает сцепление заполнения со стенками и снижает влияние заполнения на качество вертикальных поверхностей. Отключение этой функции снижает расход материала." #: fdmprinter.def.json msgctxt "infill_angles label" @@ -1336,6 +1472,26 @@ msgctxt "infill_angles description" msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns)." msgstr "Список направлений линии при печати слоёв. Элементы списка используются последовательно по мере печати слоёв и когда конец списка будет достигнут, он начнётся сначала. Элементы списка отделяются запятыми и сам список заключён в квадратные скобки. По умолчанию, он пустой, что означает использование стандартных углов (45 и 135 градусов для линий из зигзага и 45 градусов для всех остальных шаблонов)." +#: fdmprinter.def.json +msgctxt "infill_offset_x label" +msgid "Infill X Offset" +msgstr "Смещение заполнения по X" + +#: fdmprinter.def.json +msgctxt "infill_offset_x description" +msgid "The infill pattern is offset this distance along the X axis." +msgstr "Расстояние смещения шаблона заполнения по оси X." + +#: fdmprinter.def.json +msgctxt "infill_offset_y label" +msgid "Infill Y Offset" +msgstr "Смещение заполнения по Y" + +#: fdmprinter.def.json +msgctxt "infill_offset_y description" +msgid "The infill pattern is offset this distance along the Y axis." +msgstr "Расстояние смещения шаблона заполнения по оси Y." + #: fdmprinter.def.json msgctxt "sub_div_rad_add label" msgid "Cubic Subdivision Shell" @@ -1646,6 +1802,26 @@ msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Укажите диаметр используемой нити." +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency label" +msgid "Adhesion Tendency" +msgstr "Тенденция к прилипанию" + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency description" +msgid "Surface adhesion tendency." +msgstr "Тенденция к прилипанию к поверхности." + +#: fdmprinter.def.json +msgctxt "material_surface_energy label" +msgid "Surface Energy" +msgstr "Поверхностная энергия" + +#: fdmprinter.def.json +msgctxt "material_surface_energy description" +msgid "Surface energy." +msgstr "Поверхностная энергия." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -2836,36 +3012,6 @@ msgctxt "support_connect_zigzags description" msgid "Connect the ZigZags. This will increase the strength of the zig zag support structure." msgstr "Соединяет зигзаги. Это увеличивает прочность такой поддержки." -#: fdmprinter.def.json -msgctxt "support_skip_some_zags label" -msgid "Break Up Support In Chunks" -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 "Пропускать некоторые соединения в поддержках для облегчения их последующего удаления. Этот параметр влияет на зиг-заг шаблон заполнения." - -#: 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 "Пропускать соединение между линиями поддержки каждые N миллиметров для облегчения последующего удаления поддержек." - -#: fdmprinter.def.json -msgctxt "support_zag_skip_count label" -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 away." -msgstr "Пропускать одну линию на каждые N соединительных линий, облегчая последующее удаление поддержек." - #: fdmprinter.def.json msgctxt "support_infill_rate label" msgid "Support Density" @@ -3405,10 +3551,8 @@ msgstr "Дистанция до юбки" 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 "" -"Расстояние по горизонтали между юбкой и первым слоем печатаемого объекта.\n" -"Это минимальное расстояние, следующие линии юбки будут печататься наружу." +"This is the minimum distance. Multiple skirt lines will extend outwards from this distance." +msgstr "Горизонтальное расстояние между юбкой и первым слоем печати.\nМинимальное расстояние. Несколько линий юбки будут расширяться от этого расстояния." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3450,26 +3594,6 @@ 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 "Смещение первого 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 "Экструдер смещается от стола на указанное значение при печати первого слоя. Значение может быть положительным (выше) или отрицательным (ниже). Некоторые типы материала связываются со столом лучше, когда экструдер чуть приподнят над столом." - -#: fdmprinter.def.json -msgctxt "z_offset_taper_layers label" -msgid "Z Offset Taper Layers" -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 "Если не ноль, то Z смещение уменьшается до 0 на указанном слое. Значение 0 указывает, что Z смещение остаётся постоянным на всех слоях печати." - #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3487,8 +3611,8 @@ 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 "Данный параметр управляет тем, сколько внутренних углов в контуре будет сглажено. Внутренние углы сглаживаются полукругами с радиусом равным указанному значению. Данный параметр также убирает отверстия в контуре подложки, которые меньше получающегося круга." +msgid "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." +msgstr "Этот параметр регулирует величину скругления внутренних углов контура подложки. Внутренние углы скругляются до полукруга с радиусом, равным установленному здесь значению. Этот параметр также приводит к удалению отверстий в контуре подложки, которые меньше такого круга." #: fdmprinter.def.json msgctxt "raft_airgap label" @@ -3960,6 +4084,16 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Обычно Cura пытается закрыть небольшие отверстия в объекте и убрать части слоя с большими отверстиями. Включение этого параметра сохраняет те части, что не могут быть сшиты. Этот параметр должен использоваться как последний вариант, когда уже ничего не помогает получить нормальный GCode." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Максимальное разрешение" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "Минимальный размер сегмента линии после слайсинга. Увеличение значения этого параметра понизит разрешение модели. Это может позволить принтеру поддерживать скорость обработки кода G и увеличит скорость слайсинга за счет удаления деталей модели, которые он в любом случае не сможет обработать." + #: fdmprinter.def.json msgctxt "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -3990,6 +4124,16 @@ msgctxt "alternate_carve_order description" msgid "Switch to which mesh intersecting volumes will belong with every layer, so that the overlapping meshes become interwoven. Turning this setting off will cause one of the meshes to obtain all of the volume in the overlap, while it is removed from the other meshes." msgstr "Чередует какой из объектов, пересекающихся в объёме, будет участвовать в печати каждого слоя таким образом, что пересекающиеся объекты становятся вплетёнными друг в друга. Выключение этого параметра приведёт к тому, что один из объектов займёт весь объём пересечения, в то время как данный объём будет исключён из других объектов." +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers label" +msgid "Remove Empty First Layers" +msgstr "Удалить первые пустые слои" + +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers description" +msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." +msgstr "Удаление пустых слоёв под первым печатаемым слоем, если они имеются. Отключение этой функции может привести к созданию первых пустых слоев, если для параметра «Допуск слайсинга» установлено значение «Включение» или «Середина»." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4195,6 +4339,36 @@ 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 "support_skip_some_zags label" +msgid "Break Up Support In Chunks" +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 "Пропускать некоторые соединения в поддержках для облегчения их последующего удаления. Этот параметр влияет на зиг-заг шаблон заполнения." + +#: 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 "Пропускать соединение между линиями поддержки каждые N миллиметров для облегчения последующего удаления поддержек." + +#: fdmprinter.def.json +msgctxt "support_zag_skip_count label" +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 away." +msgstr "Пропускать одну линию на каждые N соединительных линий, облегчая последующее удаление поддержек." + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4485,6 +4659,26 @@ msgctxt "magic_fuzzy_skin_point_dist description" msgid "The average distance between the random points introduced on each line segment. Note that the original points of the polygon are discarded, so a high smoothness results in a reduction of the resolution. This value must be higher than half the Fuzzy Skin Thickness." msgstr "Среднее расстояние между случайными точками, который вносятся в каждый сегмент линии. Следует отметить, что оригинальные точки полигона отбрасываются, таким образом, сильное сглаживание приводит к уменьшению разрешения. Это значение должно быть больше половины толщины шершавой оболочки." +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset label" +msgid "Flow rate compensation max extrusion offset" +msgstr "Макс. смещение экструзии для компенсации расхода" + +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset description" +msgid "The maximum distance in mm to compensate." +msgstr "Максимальное компенсируемое расстояние в миллиметрах." + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor label" +msgid "Flow rate compensation factor" +msgstr "Коэффициент компенсации расхода" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor description" +msgid "The multiplication factor for the flow rate -> distance translation." +msgstr "Коэффициент перевода расхода в расстояние." + #: fdmprinter.def.json msgctxt "wireframe_enabled label" msgid "Wire Printing" @@ -4635,9 +4829,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" @@ -4744,106 +4936,6 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Зазор между соплом и горизонтально нисходящими линиями. Большее значение уменьшает угол нисхождения, что приводит уменьшению восходящих соединений на следующем слое. Применяется только при каркасной печати." -#: fdmprinter.def.json -msgctxt "ironing_enabled label" -msgid "Enable Ironing" -msgstr "Разрешить разглаживание" - -#: fdmprinter.def.json -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" -msgstr "Шаблон разглаживания" - -#: fdmprinter.def.json -msgctxt "ironing_pattern description" -msgid "The pattern to use for ironing top surfaces." -msgstr "Шаблон, который будет использоваться для разглаживания верхней оболочки." - -#: fdmprinter.def.json -msgctxt "ironing_pattern option concentric" -msgid "Concentric" -msgstr "Концентрический" - -#: fdmprinter.def.json -msgctxt "ironing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Зигзаг" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing label" -msgid "Ironing Line Spacing" -msgstr "Расстояние между линиями разглаживания" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing description" -msgid "The distance between the lines of ironing." -msgstr "Расстояние между линиями разглаживания." - -#: fdmprinter.def.json -msgctxt "ironing_flow label" -msgid "Ironing Flow" -msgstr "Поток разглаживания" - -#: fdmprinter.def.json -msgctxt "ironing_flow description" -msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." -msgstr "Объём материала, относительно от обычной линии, который будет выдавлен в процессе разглаживания. Наличие в сопле наличие материала помогает заполнять щели на верхней оболочке, но слишком большое значение приводит к излишнему выдавливанию материала и ухудшает качество оболочки." - -#: fdmprinter.def.json -msgctxt "ironing_inset label" -msgid "Ironing Inset" -msgstr "Границы разглаживания" - -#: fdmprinter.def.json -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" @@ -4904,13 +4996,45 @@ 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_x_extruder_nr label" +#~ msgid "Inner Walls 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, 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 "Шаблон заполнения при печати. Заполнение линиями или зиг-загом меняет направление на соседних слоях, уменьшая стоимость материала. Сетчатый, треугольный, кубический, восьмигранный и концентрический шаблоны полностью печатаются на каждом слое. Кубическое, четверть кубическое и восьмигранное заполнение меняется на каждом слое для получения более равного распределения по каждому направлению." + +#~ 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 "Соединять концы линий заполнения где они соприкасаются со внутренней стенкой, используя линии, которые продолжают форму внутренней стенки. Активация этого параметра поможет крепче связывать заполнение со стенками и уменьшить влияние на качество заполнения вертикальных поверхностей. Отключение этого параметра уменьшает объём используемого материала." + +#~ 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 "" +#~ "Расстояние по горизонтали между юбкой и первым слоем печатаемого объекта.\n" +#~ "Это минимальное расстояние, следующие линии юбки будут печататься наружу." + +#~ msgctxt "z_offset_layer_0 label" +#~ msgid "Initial Layer Z Offset" +#~ msgstr "Смещение первого Z слоя" + +#~ 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 "Экструдер смещается от стола на указанное значение при печати первого слоя. Значение может быть положительным (выше) или отрицательным (ниже). Некоторые типы материала связываются со столом лучше, когда экструдер чуть приподнят над столом." + +#~ msgctxt "z_offset_taper_layers label" +#~ msgid "Z Offset Taper Layers" +#~ msgstr "Компенсация Z смещения" + +#~ 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 "Если не ноль, то Z смещение уменьшается до 0 на указанном слое. Значение 0 указывает, что Z смещение остаётся постоянным на всех слоях печати." + +#~ 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 "Данный параметр управляет тем, сколько внутренних углов в контуре будет сглажено. Внутренние углы сглаживаются полукругами с радиусом равным указанному значению. Данный параметр также убирает отверстия в контуре подложки, которые меньше получающегося круга." #~ 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." diff --git a/resources/i18n/tr_TR/cura.po b/resources/i18n/tr_TR/cura.po index 129c2bbe6b..c77df51d69 100644 --- a/resources/i18n/tr_TR/cura.po +++ b/resources/i18n/tr_TR/cura.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-21 16:58+0100\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -16,66 +16,6 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Print aborted" -msgstr "Yazdırma durduruldu" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Blocked" -msgstr "Tıkalı" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Action required" -msgstr "Eylem gerekli" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Can't start print" -msgstr "Baskı başlatılamıyor" - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is not set up to host a group of Ultimaker 3 printers." -msgstr "Bu yazıcı, Ultimaker 3 yazıcı grubunu barındırmak için ayarlı değildir." - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label" -msgid "Finishes at: " -msgstr "Şu tarihlerde bitirir: " - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is the host for a group of %1 Ultimaker 3 printers." -msgstr "Bu yazıcı, %1 Ultimaker 3 yazıcı grubunun ana makinesidir." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "{printer_name}, '{job_name}' yazdırmayı tamamladı." - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Print finished" -msgstr "Baskı tamamlandı" - -#: Manually added for resources/Cura/Cura.qml -msgctxt "@title:menu menubar:toplevel" -msgid "P&lugins" -msgstr "&Eklentiler" - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Browse plugins..." -msgstr "Eklentilere göz at..." - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Installed plugins..." -msgstr "Yüklü eklentiler..." - #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" @@ -113,19 +53,17 @@ 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 -#: /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:428 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/3MFReader/WorkspaceDialog.qml:376 #: /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 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:253 msgctxt "@action:button" msgid "Cancel" msgstr "İptal et" @@ -152,15 +90,15 @@ 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 "Connect’i aç.." +msgid "Open Connect..." +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 "Doodle3D Connect web arayüzünü aç" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "Değişiklik Günlüğünü Göster" @@ -195,37 +133,38 @@ msgctxt "@info:status" msgid "Connected via USB" msgstr "USB ile bağlı" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 msgctxt "@info:title" -msgid "Print Details" -msgstr "Yazdırma Ayrıntıları" +msgid "Printer Unavailable" +msgstr "Yazıcı Mevcut Değil" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 msgctxt "@info:title" msgid "USB Printing" msgstr "USB Yazdırma" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 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/USBPrinterOutputDevice.py:461 #: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 msgctxt "@info:title" msgid "Warning" msgstr "Uyarı" @@ -289,11 +228,11 @@ 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: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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 msgctxt "@info:title" msgid "Error" msgstr "Hata" @@ -342,346 +281,332 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Çıkarılabilir Sürücü" -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "Ağ üzerinden yazdır" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "Ağ üzerinden yazdır" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 msgctxt "@info:title" msgid "Connection status" msgstr "Bağlantı durumu" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:158 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:158 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:479 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:502 msgctxt "@info:title" msgid "Connection Status" msgstr "Bağlantı Durumu" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@action:button" msgid "Retry" msgstr "Yeniden dene" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "Erişim talebini yeniden gönder" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 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:162 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:375 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:385 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:382 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:371 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:392 msgctxt "@info:status" msgid "Connected over the network." msgstr "Ağ üzerinden bağlandı." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:395 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:384 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:405 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:400 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 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:403 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:392 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 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:467 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 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:499 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:487 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 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:649 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:666 #, 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:650 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:667 msgctxt "@info:title" msgid "Printer Status" msgstr "Yazıcı Durumu" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:674 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:660 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 #, 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:682 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 #, 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:692 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 #, 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:702 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 #, 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:716 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 #, 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:724 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:741 #, 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:729 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 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:730 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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:736 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "Uyumsuz yapılandırma" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +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/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:status" msgid "Sending data to printer" msgstr "Veriler yazıcıya gönderiliyor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:title" msgid "Sending Data" msgstr "Veri gönderiliyor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 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:1050 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1034 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "Yazdırma durduruluyor..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 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:1062 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1046 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "Yazdırma duraklatılıyor..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "Yazdırma devam ediyor..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 msgctxt "@window:title" msgid "Sync with your printer" msgstr "Yazıcınız ile eşitleyin" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1218 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1193 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 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:1220 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:112 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:113 #, 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 "Bu yazıcı, bağlı {count} Ultimaker 3 yazıcı grubunun ana makinesidir." -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 #, 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 "{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 "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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 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 "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 "{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 "{file_name}, {cluster_name} grubuna gönderildi." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:503 -msgctxt "@action:button" -msgid "Show print jobs" -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 "Yazdırma işleri arayüzünü tarayıcınızda açar." - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "Yazdırma işi, {cluster_name} grubuna gönderilemiyor." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "{file_name}, {cluster_name} grubuna gönderildi." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "Yazdırma işlerini göster" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "Yazdırma işleri arayüzünü tarayıcınızda açar." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label" +msgid "Unknown" +msgstr "Bilinmiyor" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#, python-brace-format +msgctxt "@info:status" +msgid "Printer '{printer_name}' has finished printing '{job_name}'." +msgstr "{printer_name}, '{job_name}' yazdırmayı tamamladı." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +msgctxt "@info:status" +msgid "Print finished" +msgstr "Baskı tamamlandı" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 +msgctxt "@label:status" +msgid "Action required" +msgstr "Eylem gerekli" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "{file_name}, {cluster_name} grubuna gönderiliyor" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +msgctxt "@action" +msgid "Connect via Network" +msgstr "Ağ ile Bağlan" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 #, 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 "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." +msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." +msgstr "{machine_name} adlı cihazınız için yeni özellikler var! Yazıcınızın fabrika yazılımını güncellemeniz önerilir." -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "Yeni %s bellenimi mevcut" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 msgctxt "@action:button" -msgid "Download" -msgstr "İndir" +msgid "How to update" +msgstr "Nasıl güncellenir" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 msgctxt "@info" msgid "Could not access update information." msgstr "Güncelleme bilgilerine erişilemedi." @@ -711,7 +636,22 @@ msgctxt "@info:status" msgid "Error while starting %s!" msgstr "%s başlatılırken hata oluştu!" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Simulation view" +msgstr "Simülasyon görünümü" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +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/SimulationView/SimulationView.py:101 +msgctxt "@info:title" +msgid "Simulation View" +msgstr "Simülasyon Görünümü" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 msgid "Modify G-Code" msgstr "GCode Değiştir" @@ -741,21 +681,6 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "G-code dosyası" -#: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 -msgctxt "@item:inlistbox" -msgid "Layer view" -msgstr "Katman görünümü" - -#: /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 "Katman Görünümü" - #: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 msgctxt "@item:inlistbox" msgid "JPG Image" @@ -788,8 +713,9 @@ msgstr "Mevcut malzeme, seçilen makine veya yapılandırma ile uyumlu olmadığ #: /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 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 msgctxt "@info:title" msgid "Unable to slice" msgstr "Dilimlenemedi" @@ -800,23 +726,29 @@ 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:306 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" +msgstr "Modele özgü ayarlar nedeniyle dilimlenemedi. Şu ayarlar bir veya daha fazla modelde hataya yol açıyor: {error_labels}" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 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:315 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 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." -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:65 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:status" msgid "Processing Layers" msgstr "Katmanlar İşleniyor" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:title" msgid "Information" msgstr "Bilgi" @@ -831,14 +763,36 @@ msgctxt "@info:tooltip" 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:475 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23 +msgid "Install" +msgstr "Yükle" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It is not set to a directory." +msgstr "Siemens NX eklenti dosyaları kopyalanamadı. Lütfen UGII_USER_DIR ayarınızı kontrol edin. Bir dizine ayarlı değil." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81 +msgid "Successfully installed Siemens NX Cura plugin." +msgstr "Siemens NX Cura eklentisi başarıyla yüklendi." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgstr "Siemens NX eklenti dosyaları kopyalanamadı. Lütfen UGII_USER_DIR ayarınızı kontrol edin." + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 +msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." +msgstr "Siemens NX eklentisi yüklenemedi. Siemens NX ortam değişkeni UGII_USER_DIR ayarlanamadı." + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 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:480 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Custom" msgstr "Özel" @@ -849,29 +803,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF Dosyası" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 msgctxt "@label" msgid "Nozzle" msgstr "Nozül" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 -msgctxt "@menuitem" -msgid "Browse plugins" -msgstr "Eklentilere göz at" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "Eklenti kimliği, {0} dosyasından alınamadı" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 msgctxt "@info:tile" msgid "Warning" msgstr "Uyarı" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 msgctxt "@window:title" msgid "Plugin browser" msgstr "Eklenti tarayıcısı" @@ -886,18 +835,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G Dosyası" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:254 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-code ayrıştırma" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 msgctxt "@info:title" msgid "G-code Details" msgstr "G-code Ayrıntıları" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 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." @@ -939,73 +888,78 @@ msgctxt "@action" msgid "Level build plate" msgstr "Yapı levhasını dengele" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 msgctxt "@tooltip" msgid "Outer Wall" msgstr "Dış Duvar" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 msgctxt "@tooltip" msgid "Inner Walls" msgstr "İç Duvarlar" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 msgctxt "@tooltip" msgid "Skin" msgstr "Yüzey Alanı" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 msgctxt "@tooltip" msgid "Infill" msgstr "Dolgu" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 msgctxt "@tooltip" msgid "Support Infill" msgstr "Destek Dolgusu" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 msgctxt "@tooltip" msgid "Support Interface" msgstr "Destek Arayüzü" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Support" msgstr "Destek" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" msgid "Skirt" msgstr "Etek" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 msgctxt "@tooltip" msgid "Travel" msgstr "Hareket" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Retractions" msgstr "Geri Çekmeler" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Other" msgstr "Diğer" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +msgctxt "@label unknown material" +msgid "Unknown" +msgstr "Bilinmiyor" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Önceden dilimlenmiş dosya {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 msgctxt "@item:material" msgid "No material loaded" msgstr "Hiçbir malzeme yüklenmedi" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 msgctxt "@item:material" msgid "Unknown material" msgstr "Bilinmeyen malzeme" @@ -1032,13 +986,13 @@ msgid "Can't Find Location" msgstr "Konum Bulunamıyor" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 msgctxt "@title:window" msgid "File Already Exists" msgstr "Dosya Zaten Mevcut" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 #, 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?" @@ -1054,12 +1008,22 @@ msgctxt "@label" msgid "Custom Material" msgstr "Özel Malzeme" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 +msgctxt "@menuitem" +msgid "Global" +msgstr "Genel" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "Geçersiz kılınmadı" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 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/MachineManager.py:118 #: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:24 msgctxt "@info:title" msgid "Incompatible Material" @@ -1080,62 +1044,62 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "Malzeme çapını değiştirme işlemini geri al." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Profilin {0} dosyasına aktarımı başarısız oldu: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." 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 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Profil {0} dosyasına aktarıldı" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:157 msgctxt "@info:title" -msgid "Export Details" -msgstr "Dışa Aktarım Ayrıntıları" +msgid "Export succeeded" +msgstr "Dışa aktarma başarılı" -#: /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 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" 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 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 #, 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:254 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 #, 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:272 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 msgctxt "@label" msgid "Custom profile" msgstr "Özel profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 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:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1162,238 +1126,316 @@ msgctxt "@info:title" msgid "Placing Object" msgstr "Nesne Yerleştiriliyor" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 msgctxt "@title:window" msgid "Crash Report" msgstr "Çökme Raporu" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:79 -msgctxt "@label" +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +msgctxt "@label crash message" 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 " +"

    A fatal exception has occurred. Please send us this Crash Report to fix the problem

    \n" +"

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" +" " +msgstr "

    Çok ciddi bir istisna oluştu. Lütfen sorunu çözmek için bize Çökme Raporu'nu gönderin

    \n

    Sunucularımıza otomatik olarak bir hata raporu yüklemek için lütfen \"Rapor gönder\" düğmesini kullanın

    \n " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +msgctxt "@title:groupbox" +msgid "System information" +msgstr "Sistem bilgileri" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +msgctxt "@label unknown version of Cura" +msgid "Unknown" +msgstr "Bilinmiyor" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 +#, python-brace-format +msgctxt "@label Cura version" +msgid "Cura version: {version}
    " +msgstr "Cura sürümü: {version}
    " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -msgctxt "@action:button" -msgid "Open Web Page" -msgstr "Web Sayfasını Aç" +#, python-brace-format +msgctxt "@label Platform" +msgid "Platform: {platform}
    " +msgstr "Platform: {platform}
    " -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 +#, python-brace-format +msgctxt "@label Qt version" +msgid "Qt version: {qt}
    " +msgstr "Qt sürümü: {qt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 +#, python-brace-format +msgctxt "@label PyQt version" +msgid "PyQt version: {pyqt}
    " +msgstr "PyQt sürümü: {pyqt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 +#, python-brace-format +msgctxt "@label OpenGL" +msgid "OpenGL: {opengl}
    " +msgstr "OpenGL: {opengl}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#, python-brace-format +msgctxt "@label OpenGL version" +msgid "
  • OpenGL Version: {version}
  • " +msgstr "
  • OpenGL Sürümü: {version}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#, python-brace-format +msgctxt "@label OpenGL vendor" +msgid "
  • OpenGL Vendor: {vendor}
  • " +msgstr "
  • OpenGL Satıcısı: {vendor}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#, python-brace-format +msgctxt "@label OpenGL renderer" +msgid "
  • OpenGL Renderer: {renderer}
  • " +msgstr "
  • OpenGL Oluşturucusu: {renderer}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +msgctxt "@title:groupbox" +msgid "Exception traceback" +msgstr "İstisna geri izleme" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +msgctxt "@title:groupbox" +msgid "Logs" +msgstr "Günlükler" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +msgctxt "@title:groupbox" +msgid "User description" +msgstr "Kullanıcı açıklaması" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +msgctxt "@action:button" +msgid "Send report" +msgstr "Rapor gönder" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Makineler yükleniyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Görünüm ayarlanıyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Arayüz yükleniyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 #, 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:1295 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 #, 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:1304 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1357 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "G-code yüklenirken başka bir dosya açılamaz. {0} içe aktarma atlandı" +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +msgctxt "@info:status" +msgid "The selected model was too small to load." +msgstr "Seçilen model yüklenemeyecek kadar küçüktü." + #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 msgctxt "@title" msgid "Machine Settings" msgstr "Makine Ayarları" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:77 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:78 msgctxt "@title:tab" msgid "Printer" msgstr "Yazıcı" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:96 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 msgctxt "@label" msgid "Printer Settings" msgstr "Yazıcı Ayarları" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:107 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 msgctxt "@label" msgid "X (Width)" msgstr "X (Genişlik)" -#: /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: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 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:117 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (Derinlik)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:127 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 msgctxt "@label" msgid "Z (Height)" msgstr "Z (Yükseklik)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:139 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:140 msgctxt "@label" msgid "Build plate shape" msgstr "Yapı levhası şekli" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:148 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 msgctxt "@option:check" msgid "Origin at center" msgstr "Merkez nokta" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:156 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:157 msgctxt "@option:check" msgid "Heated bed" msgstr "Isıtılmış yatak" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:167 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 msgctxt "@label" msgid "Gcode flavor" msgstr "Gcode türü" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:180 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 msgctxt "@label" msgid "Printhead Settings" msgstr "Yazıcı Başlığı Ayarları" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:190 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 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 "Yazıcı başlığının solundan nozülün ortasına kadar olan mesafe. “Birer birer” çıktı alırken önceki çıktılar ile yazıcı başlığının çakışmasını önlemek için kullanılır." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:200 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 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 "Yazıcı başlığının ön kısmından nozülün ortasına kadar olan mesafe. “Birer birer” çıktı alırken önceki çıktılar ile yazıcı başlığının çakışmasını önlemek için kullanılır." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:210 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 msgctxt "@label" msgid "X max" msgstr "X maks" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 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 "Yazıcı başlığının sağından nozülün ortasına kadar olan mesafe. “Birer birer” çıktı alırken önceki çıktılar ile yazıcı başlığının çakışmasını önlemek için kullanılır." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:220 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 msgctxt "@label" msgid "Y max" msgstr "Y maks" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 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 "Yazıcı başlığının arkasından nozülün ortasına kadar olan mesafe. “Birer birer” çıktı alırken önceki çıktılar ile yazıcı başlığının çakışmasını önlemek için kullanılır." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:233 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 msgctxt "@label" msgid "Gantry height" msgstr "Portal yüksekliği" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 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:254 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 msgctxt "@label" msgid "Number of Extruders" msgstr "Ekstrüder Sayısı" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 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:290 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 msgctxt "@label" msgid "Material diameter" msgstr "Malzeme çapı" -#: /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:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 msgctxt "@label" msgid "Nozzle size" msgstr "Nozzle boyutu" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 msgctxt "@label" msgid "Start Gcode" msgstr "Gcode’u başlat" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 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:335 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 msgctxt "@label" msgid "End Gcode" msgstr "Gcode’u sonlandır" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 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:377 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 msgctxt "@label" msgid "Nozzle Settings" msgstr "Nozül Ayarları" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 msgctxt "@label" msgid "Nozzle offset X" msgstr "Nozül X ofseti" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Nozül Y ofseti" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "Ekstrüder Gcode’u başlat" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Extruder End Gcode" msgstr "Ekstrüder Gcode’u sonlandır" @@ -1406,12 +1448,11 @@ 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/PostProcessingPlugin/PostProcessingPlugin.qml:445 #: /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/Preferences/MachinesPage.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 msgctxt "@action:button" msgid "Close" @@ -1463,13 +1504,11 @@ 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" @@ -1478,20 +1517,17 @@ msgid "" 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 #: /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 @@ -1500,220 +1536,221 @@ msgid "Remove" msgstr "Kaldır" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:194 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 msgctxt "@label" msgid "Address" msgstr "Adres" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:286 +msgctxt "@label" +msgid "This printer is not set up to host a group of Ultimaker 3 printers." +msgstr "Bu yazıcı, Ultimaker 3 yazıcı grubunu barındırmak için ayarlı değildir." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:290 +msgctxt "@label" +msgid "This printer is the host for a group of %1 Ultimaker 3 printers." +msgstr "Bu yazıcı, %1 Ultimaker 3 yazıcı grubunun ana makinesidir." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:300 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/DiscoverUM3Action.qml:305 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /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:316 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 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:346 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 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:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 +#: /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 "Tamam" +msgid "OK" +msgstr "TAMAM" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "Ağ üzerinden yazdır" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "Yazdır" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:36 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "%1, bağlı Ultimaker 3 yazıcı grubunu barındırmak için ayarlı değildir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "Yazdırma işlerini varsayılan web tarayıcınızda açar." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "Yazdırma işlerini görüntüle" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 +msgctxt "@label" +msgid "Preparing to print" +msgstr "Yazdırmaya hazırlanıyor" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 +msgctxt "@label:status" +msgid "Printing" +msgstr "Yazdırma" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 +msgctxt "@label:status" +msgid "Available" +msgstr "Mevcut" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 +#: /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/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 +msgctxt "@label:status" +msgid "Disabled" +msgstr "Devre dışı" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273 +msgctxt "@label:status" +msgid "Reserved" +msgstr "Rezerve edildi" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:275 +msgctxt "@label:status" +msgid "Finished" +msgstr "Tamamlandı" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 +msgctxt "@label:status" +msgid "Paused" +msgstr "Duraklatıldı" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 +msgctxt "@label:status" +msgid "Resuming" +msgstr "Devam ediliyor" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 +msgctxt "@label:status" +msgid "Print aborted" +msgstr "Yazdırma durduruldu" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:410 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "Yazdırma işleri kabul edilmiyor" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 +msgctxt "@label" +msgid "Finishes at: " +msgstr "Şu tarihlerde bitirir: " + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 +msgctxt "@label" +msgid "Clear build plate" +msgstr "Yapı levhasını temizle" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "Yapılandırma değişikliğini bekliyor" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:64 +msgctxt "@title" +msgid "Print jobs" +msgstr "Yazdırma görevleri" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 +msgctxt "@label" +msgid "Printing" +msgstr "Yazdırma" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 +msgctxt "@label" +msgid "Queued" +msgstr "Kuyrukta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:171 +msgctxt "@label:title" +msgid "Printers" +msgstr "Yazıcılar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 +msgctxt "@action:button" +msgid "View printers" +msgstr "Yazıcıları görüntüle" #: /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/DiscoverUM3Action.qml:284 -msgctxt "@label" -msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -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 "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 "Ağ üzerinden yazdır" - -#: /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 "%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 "Yazdırma" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:315 -msgctxt "@label:status" -msgid "Reserved" -msgstr "Rezerve edildi" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:317 -msgctxt "@label:status" -msgid "Finished" -msgstr "Tamamlandı" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:320 -msgctxt "@label:status" -msgid "Preparing" -msgstr "Hazırlanıyor" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:327 -msgctxt "@label:status" -msgid "Available" -msgstr "Mevcut" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:367 -msgctxt "@label" -msgid "Completed on: " -msgstr "Tamamlandığı tarih: " - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:371 -msgctxt "@label" -msgid "Clear build plate" -msgstr "Yapı levhasını temizle" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:375 -msgctxt "@label" -msgid "Preparing to print" -msgstr "Yazdırmaya hazırlanıyor" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterMonitorItem.qml:379 -msgctxt "@label" -msgid "Not accepting print jobs" -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 "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 "Yazdırma işlerini görüntüle" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:36 -msgctxt "@label" -msgid "PRINTER GROUP" -msgstr "YAZICI GRUBU" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:69 -msgctxt "@title" -msgid "Print jobs" -msgstr "Yazdırma görevleri" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:100 -msgctxt "@label" -msgid "Printing" -msgstr "Yazdırma" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:118 -msgctxt "@label" -msgid "Queued" -msgstr "Kuyrukta" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:135 -msgctxt "@label" -msgid "Waiting for configuration change" -msgstr "Yapılandırma değişikliğini bekliyor" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:194 -msgctxt "@label:title" -msgid "Printers" -msgstr "Yazıcılar" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/ClusterControlItem.qml:247 -msgctxt "@action:button" -msgid "View printers" -msgstr "Yazıcıları görüntüle" - #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 msgctxt "@title:window" msgid "Cura SolidWorks Plugin Configuration" @@ -1739,13 +1776,6 @@ msgctxt "@option:curaSolidworksStlQuality" msgid "Always use Coarse quality" msgstr "Her zaman Düşük kalite modunu kullan" -#: /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 "TAMAM" - #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 msgctxt "@title:window" msgid "Import SolidWorks File as STL..." @@ -1772,11 +1802,91 @@ msgid "Fine" msgstr "İnce" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 msgctxt "@text:window" msgid "Remember my choice" msgstr "Seçimimi hatırla" +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +msgctxt "@label" +msgid "Color scheme" +msgstr "Renk şeması" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +msgctxt "@label:listbox" +msgid "Material Color" +msgstr "Malzeme Rengi" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +msgctxt "@label:listbox" +msgid "Line Type" +msgstr "Çizgi Tipi" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +msgctxt "@label:listbox" +msgid "Feedrate" +msgstr "Besleme hızı" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +msgctxt "@label:listbox" +msgid "Layer thickness" +msgstr "Katman kalınlığı" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +msgctxt "@label" +msgid "Compatibility Mode" +msgstr "Uyumluluk Modu" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +msgctxt "@label" +msgid "Show Travels" +msgstr "Geçişleri Göster" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +msgctxt "@label" +msgid "Show Helpers" +msgstr "Yardımcıları Göster" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +msgctxt "@label" +msgid "Show Shell" +msgstr "Kabuğu Göster" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +msgctxt "@label" +msgid "Show Infill" +msgstr "Dolguyu Göster" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +msgctxt "@label" +msgid "Only Show Top Layers" +msgstr "Yalnızca Üst Katmanları Göster" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +msgctxt "@label" +msgid "Show 5 Detailed Layers On Top" +msgstr "En Üstteki 5 Ayrıntılı Katmanı Göster" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +msgctxt "@label" +msgid "Top / Bottom" +msgstr "Üst / Alt" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +msgctxt "@label" +msgid "Inner Wall" +msgstr "İç Duvar" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +msgctxt "@label" +msgid "min" +msgstr "min" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +msgctxt "@label" +msgid "max" +msgstr "maks" + #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 msgctxt "@title:window" msgid "Post Processing Plugin" @@ -1787,81 +1897,21 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "Son İşleme Dosyaları" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:218 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:217 msgctxt "@action" msgid "Add a script" msgstr "Dosya ekle" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:264 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:263 msgctxt "@label" msgid "Settings" msgstr "Ayarlar" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 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:76 -msgctxt "@label" -msgid "Color scheme" -msgstr "Renk şeması" - -#: /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:95 -msgctxt "@label:listbox" -msgid "Line Type" -msgstr "Çizgi Tipi" - -#: /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:216 -msgctxt "@label" -msgid "Show Travels" -msgstr "Geçişleri Göster" - -#: /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:228 -msgctxt "@label" -msgid "Show Shell" -msgstr "Kabuğu Göster" - -#: /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:283 -msgctxt "@label" -msgid "Only Show Top Layers" -msgstr "Yalnızca Üst Katmanları Göster" - -#: /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:303 -msgctxt "@label" -msgid "Top / Bottom" -msgstr "Üst / Alt" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 -msgctxt "@label" -msgid "Inner Wall" -msgstr "İç Duvar" - #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" msgid "Convert Image..." @@ -1953,129 +2003,129 @@ msgctxt "@label:checkbox" msgid "Show all" msgstr "Tümünü göster" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:13 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Proje Aç" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 msgctxt "@action:ComboBox option" msgid "Update existing" msgstr "Var olanları güncelleştir" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:55 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 msgctxt "@action:ComboBox option" msgid "Create new" msgstr "Yeni oluştur" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:70 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "Özet - Cura Projesi" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:88 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:88 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 msgctxt "@action:label" msgid "Printer settings" msgstr "Yazıcı ayarları" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 msgctxt "@info:tooltip" msgid "How should the conflict in the machine be resolved?" msgstr "Makinedeki çakışma nasıl çözülmelidir?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:124 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:97 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 msgctxt "@action:label" msgid "Type" msgstr "Tür" -#: /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 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:144 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:201 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:293 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:190 msgctxt "@action:label" msgid "Name" msgstr "İsim" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:161 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:164 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:166 msgctxt "@action:label" msgid "Profile settings" msgstr "Profil ayarları" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 msgctxt "@info:tooltip" msgid "How should the conflict in the profile be resolved?" msgstr "Profildeki çakışma nasıl çözülmelidir?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:212 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 msgctxt "@action:label" msgid "Not in profile" msgstr "Profilde değil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:217 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 geçersiz kılma" msgstr[1] "%1 geçersiz kılmalar" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:232 msgctxt "@action:label" msgid "Derivative from" msgstr "Kaynağı" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:233 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:237 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 geçersiz kılma" msgstr[1] "%1, %2 geçersiz kılmalar" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:249 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:253 msgctxt "@action:label" msgid "Material settings" msgstr "Malzeme ayarları" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:265 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Malzemedeki çakışma nasıl çözülmelidir?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:207 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 msgctxt "@action:label" msgid "Setting visibility" msgstr "Görünürlük ayarı" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:317 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:321 msgctxt "@action:label" msgid "Mode" msgstr "Mod" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:332 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:216 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:218 msgctxt "@action:label" msgid "Visible settings:" msgstr "Görünür ayarlar:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:223 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 / %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:363 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368 msgctxt "@action:warning" -msgid "Loading a project will clear all models on the buildplate" -msgstr "Bir projenin yüklenmesi, yapı levhasındaki tüm modelleri silecektir" +msgid "Loading a project will clear all models on the build plate." +msgstr "Bir projenin yüklenmesi derleme levhasındaki tüm modelleri siler." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:381 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 msgctxt "@action:button" msgid "Open" msgstr "Aç" @@ -2100,6 +2150,11 @@ msgctxt "@action:button" msgid "Installed" msgstr "Yüklü" +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "İndir" + #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" @@ -2108,10 +2163,10 @@ msgstr "Eklenti Lisans Anlaşması" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" msgid "" -" plugin contains a license.\n" +"This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr " eklenti lisans içerir.\nBu eklentiyi kurmak için bu lisans kabul etmeniz gerekir.\nAşağıdaki koşulları kabul ediyor musunuz?" +msgstr "Bu eklenti bir lisans içerir.\nBu eklentiyi yüklemek 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" @@ -2123,6 +2178,11 @@ msgctxt "@action:button" msgid "Decline" msgstr "Reddet" +#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 +msgctxt "@title:window" +msgid "User Agreement" +msgstr "Kullanıcı Anlaşması" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 msgctxt "@title" @@ -2308,30 +2368,25 @@ msgid "Printer does not accept commands" msgstr "Yazıcı komutları kabul etmiyor" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 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: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:103 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "Yazdırılıyor..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "Duraklatıldı" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "Hazırlanıyor..." @@ -2547,7 +2602,7 @@ msgid "Unit" msgstr "Birim" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "General" msgstr "Genel" @@ -2778,7 +2833,7 @@ 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:441 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 msgctxt "@title:tab" msgid "Printers" msgstr "Yazıcılar" @@ -2796,39 +2851,39 @@ msgctxt "@action:button" msgid "Rename" msgstr "Yeniden adlandır" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 msgctxt "@label" msgid "Printer type:" msgstr "Yazıcı türü:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:158 msgctxt "@label" msgid "Connection:" msgstr "Bağlantı:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:166 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:164 #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 msgctxt "@info:status" msgid "The printer is not connected." msgstr "Yazıcı bağlı değil." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:170 msgctxt "@label" msgid "State:" msgstr "Durum:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Waiting for someone to clear the build plate" msgstr "Yapı levhasının temizlenmesi bekleniyor" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 msgctxt "@label:MonitorStatus" 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:445 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 msgctxt "@title:tab" msgid "Profiles" msgstr "Profiller" @@ -2926,7 +2981,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:443 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 msgctxt "@title:tab" msgid "Materials" msgstr "Malzemeler" @@ -2984,7 +3039,7 @@ msgid "Successfully exported material to %1" 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 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 msgctxt "@title:window" msgid "Add Printer" msgstr "Yazıcı Ekle" @@ -3004,6 +3059,11 @@ msgctxt "@title:window" msgid "About Cura" msgstr "Cura hakkında" +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43 +msgctxt "@label" +msgid "version: %1" +msgstr "sürüm: %1" + #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." @@ -3096,12 +3156,17 @@ msgctxt "@label" msgid "Polygon clipping library" msgstr "Poligon kırpma kitaplığı" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Python HTTP kitaplığı" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 msgctxt "@label" msgid "Font" msgstr "Yazı tipi" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 msgctxt "@label" msgid "SVG icons" msgstr "SVG simgeleri" @@ -3111,7 +3176,12 @@ msgctxt "@label" msgid "Profile:" msgstr "Profil:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 +msgctxt "@" +msgid "No Profile Available" +msgstr "Hiçbir Profil Yok" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3119,32 +3189,32 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 msgctxt "@label:textbox" msgid "Search..." msgstr "Ara..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 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:491 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Bu ayarı gizle" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Bu ayarı gösterme" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 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:524 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "Görünürlük ayarını yapılandır..." @@ -3193,54 +3263,71 @@ msgid "" "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." -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 msgctxt "@label:listbox" msgid "Print Setup" msgstr "Yazıcı Ayarları" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 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" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00sa 00dk" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 msgctxt "@tooltip" -msgid "Time information" -msgstr "Süre bilgisi" +msgid "Time specification
    " +msgstr "Zaman koşulları
    " -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:370 -msgctxt "@description" -msgid "Print time" -msgstr "Yazdırma süresi" - -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:409 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 msgctxt "@label" +msgid "Cost specification" +msgstr "Maliyet koşulları" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1 m" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1 g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +msgctxt "@label" +msgid "Total:" +msgstr "Toplam:" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" -msgstr "%1m / ~ %2g / ~ %4 %3" +msgstr "%1 m / ~ %2 g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" -msgstr "%1m / ~ %2g" +msgstr "%1 m / ~ %2 g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 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:481 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 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." -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "Otomatik: %1" @@ -3250,7 +3337,7 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "&Görünüm" -#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" msgstr "Otomatik: %1" @@ -3279,13 +3366,13 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "En Son Öğeyi Aç" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 msgctxt "@info:status" 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 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 msgctxt "@label" msgid "Extruder" msgstr "Ekstrüder" @@ -3300,309 +3387,349 @@ msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "Bu ekstruderin geçerli sıcaklığı." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:188 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Bu ekstruderdeki malzemenin rengi." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Bu ekstruderdeki malzeme." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Bu ekstrudere takılan nozül." -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 msgctxt "@label" msgid "Build plate" msgstr "Yapı levhası" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 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:343 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:344 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:422 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 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:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "İptal Et" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button" msgid "Pre-heat" msgstr "Ön ısıtma" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 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:677 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:703 +msgctxt "@label" +msgid "Printer control" +msgstr "Yazıcı kontrolü" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 +msgctxt "@label" +msgid "Jog Position" +msgstr "Jog Konumu" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735 +msgctxt "@label" +msgid "X/Y" +msgstr "X/Y" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842 +msgctxt "@label" +msgid "Z" +msgstr "Z" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 +msgctxt "@label" +msgid "Jog Distance" +msgstr "Jog Mesafesi" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018 msgctxt "@label" msgid "Active print" msgstr "Geçerli yazdırma" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 msgctxt "@label" msgid "Job Name" msgstr "İşin Adı" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 msgctxt "@label" msgid "Printing Time" msgstr "Yazdırma süresi" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1035 msgctxt "@label" msgid "Estimated time left" msgstr "Kalan tahmini süre" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "Tam Ekrana Geç" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Geri Al" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "&Yinele" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "&Çıkış" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +msgctxt "@action:inmenu menubar:view" +msgid "&Reset camera position" +msgstr "&Kamera konumunu sıfırla" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "Cura’yı yapılandır..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "&Yazıcı Ekle..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:115 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "Yazıcıları Yönet..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Malzemeleri Yönet..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "&Profili geçerli ayarlar/geçersiz kılmalar ile güncelle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "&Geçerli değişiklikleri iptal et" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "&Geçerli ayarlardan/geçersiz kılmalardan profil oluştur..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "Profilleri Yönet..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "Çevrimiçi Belgeleri Göster" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:171 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "Hata Bildir" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "&Hakkında..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 msgctxt "@action:inmenu menubar:edit" msgid "Delete &Selected Model" msgid_plural "Delete &Selected Models" msgstr[0] "&Seçili Modeli Sil" msgstr[1] "&Seçili Modelleri Sil" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "Seçili Modeli Ortala" msgstr[1] "Seçili Modelleri Ortala" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "Seçili Modeli Çoğalt" msgstr[1] "Seçili Modelleri Çoğalt" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Modeli Sil" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:222 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "Modeli Platformda Ortala" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:228 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "Modelleri Gruplandır" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "Model Grubunu Çöz" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "&Modelleri Birleştir" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&Modeli Çoğalt..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:265 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "&Tüm modelleri Seç" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "&Yapı Levhasını Temizle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "Tüm Modelleri Yeniden Yükle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "Tüm Modelleri Düzenle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "Seçimi Düzenle" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "Tüm Model Konumlarını Sıfırla" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "Tüm Model ve Dönüşümleri Sıfırla" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "&Dosya Aç..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "&Yeni Proje..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "Motor Günlüğünü Göster..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:346 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "Yapılandırma Klasörünü Göster" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 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:26 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +msgctxt "@action:menu" +msgid "Browse plugins..." +msgstr "Eklentilere göz at..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +msgctxt "@action:menu" +msgid "Installed plugins..." +msgstr "Yüklü eklentiler..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 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:32 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "Dilimlemeye hazır" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "Dilimleniyor..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "%1 Hazır" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "Dilimlenemedi" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "Dilimleme kullanılamıyor" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Prepare" msgstr "Hazırla" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Cancel" msgstr "İptal Et" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 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:593 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 msgctxt "@title:window" msgid "Open file(s)" msgstr "Dosya aç" @@ -3619,112 +3746,117 @@ msgstr "Tümünü model olarak içe aktar" #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 msgctxt "@title:window" -msgid "Cura" -msgstr "Cura" +msgid "Ultimaker Cura" +msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "&Dosya" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "&Seçimi Dosyaya Kaydet" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "&Farklı Kaydet" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 msgctxt "@title:menu menubar:file" msgid "Save project" msgstr "Projeyi kaydet" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "&Düzenle" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 msgctxt "@title:menu" msgid "&View" msgstr "&Görünüm" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:167 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 msgctxt "@title:menu" msgid "&Settings" msgstr "&Ayarlar" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "&Yazıcı" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 msgctxt "@title:menu" msgid "&Material" msgstr "&Malzeme" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 msgctxt "@title:menu" msgid "&Profile" msgstr "&Profil" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Etkin Ekstruder olarak ayarla" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:202 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "Uzantılar" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +msgctxt "@title:menu menubar:toplevel" +msgid "P&lugins" +msgstr "&Eklentiler" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "Tercihler" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "&Yardım" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 msgctxt "@action:button" msgid "Open File" msgstr "Dosya Aç" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 msgctxt "@title:tab" msgid "Settings" msgstr "Ayarlar" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 msgctxt "@title:window" msgid "New project" msgstr "Yeni proje" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 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:694 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 msgctxt "@window:title" msgid "Install Plugin" msgstr "Eklenti Kur" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 msgctxt "@title:window" msgid "Open File(s)" msgstr "Dosya Aç" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 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." @@ -3734,102 +3866,112 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Projeyi Kaydet" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 msgctxt "@action:label" msgid "Extruder %1" msgstr "Ekstruder %1" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & malzeme" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:242 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/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 msgctxt "@action:button" msgid "Save" msgstr "Kaydet" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 msgctxt "@title:tab" msgid "Prepare" msgstr "Hazırla" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 msgctxt "@title:tab" msgid "Monitor" msgstr "İzle" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 msgctxt "@label" msgid "Layer Height" msgstr "Katman Yüksekliği" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +msgctxt "@tooltip" +msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +msgstr "Özel bir profil şu anda aktif. Kalite kaydırıcısını etkinleştirmek için Özel sekmesinde varsayılan bir kalite seçin" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 msgctxt "@label" msgid "Print Speed" msgstr "Yazdırma Hızı" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 msgctxt "@label" msgid "Slower" msgstr "Daha yavaş" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 msgctxt "@label" msgid "Faster" msgstr "Daha Hızlı" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "Bazı profil ayarlarını değiştirdiniz. Bunları değişiklikleri kaydetmek istiyorsanız, özel moda gidin." + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 msgctxt "@label" msgid "Infill" msgstr "Dolgu" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 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:602 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 msgctxt "@label" msgid "Enable gradual" msgstr "Kademeli özelliği etkinleştir" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 msgctxt "@label" msgid "Generate Support" msgstr "Oluşturma Desteği" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 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:718 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 msgctxt "@label" msgid "Support Extruder" msgstr "Destek Ekstrüderi" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 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:796 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "Yapı Levhası Yapıştırması" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 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:883 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 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" @@ -3846,17 +3988,17 @@ msgctxt "@title:window" msgid "Open project file" msgstr "Proje dosyası aç" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 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 "Bu bir Cura proje dosyasıdır. Bir proje olarak açmak mı yoksa içindeki modelleri içe aktarmak mı istiyorsunuz?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:95 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@action:button" msgid "Open as project" msgstr "Proje olarak aç" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Import models" msgstr "Modelleri içe aktar" @@ -3866,17 +4008,17 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "Motor Günlüğü" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 msgctxt "@label" msgid "Material" msgstr "Malzeme" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 msgctxt "@label" -msgid "Check material compatibility" -msgstr "Malzeme uyumunu denetle" +msgid "Check compatibility" +msgstr "Uyumluluğu kontrol et" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 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." @@ -3991,11 +4133,6 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3 Ağ Bağlantısı" -#: CuraPrintClusterUpload/plugin.json -msgctxt "name" -msgid "UM3 Network Connection (Cluster)" -msgstr "UM3 Ağ Bağlantısı (Küme)" - #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4016,6 +4153,16 @@ msgctxt "name" msgid "SolidWorks Integration" msgstr "SolidWorks Entegrasyonu" +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "Simülasyon görünümünü sunar." + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "Simülasyon Görünümü" + #: PostProcessingPlugin/plugin.json msgctxt "description" msgid "Extension that allows for user created scripts for post processing" @@ -4076,16 +4223,6 @@ msgctxt "name" msgid "GCode Profile Reader" msgstr "GCode Profil Okuyucu" -#: LayerView/plugin.json -msgctxt "description" -msgid "Provides the Layer view." -msgstr "Katman görünümü sağlar." - -#: LayerView/plugin.json -msgctxt "name" -msgid "Layer View" -msgstr "Katman Görünümü" - #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4106,6 +4243,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "2.7’den 3.0’a Sürüm Yükseltme" +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." +msgstr "Yapılandırmaları Cura 3.0'dan Cura 3.1'e yükseltir." + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.0 to 3.1" +msgstr "3.0'dan 3.1'e Sürüm Yükseltme" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4166,6 +4313,16 @@ msgctxt "name" msgid "Per Model Settings Tool" msgstr "Model Başına Ayarlar Aracı" +#: cura-siemensnx-plugin/plugin.json +msgctxt "description" +msgid "Helps you to install an 'export to Cura' button in Siemens NX." +msgstr "Siemens NX'de bir \"Cura'ya dışa aktar\" düğmesi kurmanıza yardımcı olur." + +#: cura-siemensnx-plugin/plugin.json +msgctxt "name" +msgid "Siemens NX Integration" +msgstr "Siemens NX Integration" + #: 3MFReader/plugin.json msgctxt "description" msgid "Provides support for reading 3MF files." @@ -4226,6 +4383,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "3MF Yazıcı" +#: UserAgreementPlugin/plugin.json +msgctxt "description" +msgid "Ask the user once if he/she agrees with our license" +msgstr "Kullanıcıya bir kez lisansımızı kabul edip etmediğini sorun" + +#: UserAgreementPlugin/plugin.json +msgctxt "name" +msgid "UserAgreement" +msgstr "UserAgreement" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" @@ -4246,6 +4413,138 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura Profil Okuyucu" +#~ msgctxt "@label:status" +#~ msgid "Blocked" +#~ msgstr "Tıkalı" + +#~ msgctxt "@label:status" +#~ msgid "Can't start print" +#~ msgstr "Baskı başlatılamıyor" + +#~ msgctxt "@action:button" +#~ msgid "Open Connect.." +#~ msgstr "Connect’i aç.." + +#~ msgctxt "@info:title" +#~ msgid "Print Details" +#~ msgstr "Yazdırma Ayrıntıları" + +#~ 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 "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." + +msgctxt "@item:inlistbox" +msgid "Layer view" +msgstr "Katman görünümü" + +msgctxt "@info:title" +msgid "Layer View" +msgstr "Katman Görünümü" + +#~ msgctxt "@menuitem" +#~ msgid "Browse plugins" +#~ msgstr "Eklentilere göz at" + +#~ msgctxt "@info:title" +#~ msgid "Export Details" +#~ msgstr "Dışa Aktarım Ayrıntıları" + +#~ 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 "" +#~ "

    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" +#~ " " + +#~ msgctxt "@action:button" +#~ msgid "Open Web Page" +#~ msgstr "Web Sayfasını Aç" + +#~ msgctxt "@action:button" +#~ msgid "Ok" +#~ msgstr "Tamam" + +#~ msgctxt "@label" +#~ msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +#~ msgstr "Bu yazıcı, bağlı Ultimaker 3 yazıcı grubunu barındırmak için ayarlı değildir" + +#~ msgctxt "@label" +#~ msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +#~ msgstr "Bu yazıcı, %1 bağlı Ultimaker 3 yazıcı grubunun ana makinesidir" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "Hazırlanıyor" + +#~ msgctxt "@label" +#~ msgid "Completed on: " +#~ msgstr "Tamamlandığı tarih: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Opens the print jobs page with your default web browser." +#~ msgstr "Yazdırma işlerini varsayılan web tarayıcınızda açar." + +#~ msgctxt "@label" +#~ msgid "PRINTER GROUP" +#~ msgstr "YAZICI GRUBU" + +#~ msgctxt "@action:warning" +#~ msgid "Loading a project will clear all models on the buildplate" +#~ msgstr "Bir projenin yüklenmesi, yapı levhasındaki tüm modelleri silecektir" + +#~ 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 "" +#~ " eklenti lisans içerir.\n" +#~ "Bu eklentiyi kurmak için bu lisans kabul etmeniz gerekir.\n" +#~ "Aşağıdaki koşulları kabul ediyor musunuz?" + +#~ msgctxt "@label" +#~ msgid "00h 00min" +#~ msgstr "00sa 00dk" + +#~ msgctxt "@tooltip" +#~ msgid "Time information" +#~ msgstr "Süre bilgisi" + +#~ msgctxt "@description" +#~ msgid "Print time" +#~ msgstr "Yazdırma süresi" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g / ~ %4 %3" +#~ msgstr "%1m / ~ %2g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g" +#~ msgstr "%1m / ~ %2g" + +#~ msgctxt "@title:window" +#~ msgid "Cura" +#~ msgstr "Cura" + +#~ msgctxt "@label" +#~ msgid "Check material compatibility" +#~ msgstr "Malzeme uyumunu denetle" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection (Cluster)" +#~ msgstr "UM3 Ağ Bağlantısı (Küme)" + +#~ msgctxt "description" +#~ msgid "Provides the Layer view." +#~ msgstr "Katman görünümü sağlar." + +msgctxt "name" +msgid "Layer View" +msgstr "Katman Görünümü" + #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" #~ msgstr "X-Ray" @@ -4565,9 +4864,9 @@ msgstr "Cura Profil Okuyucu" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "G-code dosyalarından profilleri içe aktarmak için destek sağlar." -#~ msgctxt "@label" -#~ msgid "Layer View" -#~ msgstr "Katman Görünümü" +msgctxt "@label" +msgid "Layer View" +msgstr "Katman Görünümü" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." diff --git a/resources/i18n/tr_TR/fdmextruder.def.json.po b/resources/i18n/tr_TR/fdmextruder.def.json.po index c1ffae36d3..0bb7de91ac 100644 --- a/resources/i18n/tr_TR/fdmextruder.def.json.po +++ b/resources/i18n/tr_TR/fdmextruder.def.json.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: Turkish\n" "Language: tr_TR\n" diff --git a/resources/i18n/tr_TR/fdmprinter.def.json.po b/resources/i18n/tr_TR/fdmprinter.def.json.po index b67557a126..f0c2bad612 100644 --- a/resources/i18n/tr_TR/fdmprinter.def.json.po +++ b/resources/i18n/tr_TR/fdmprinter.def.json.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -605,6 +605,31 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "İlk katmanın milimetre cinsinden yüksekliği. Kalın ilk katmanlar yapı levhasına yapışmayı kolaylaştırır." +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "Dilimleme Toleransı" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "Çapraz yüzeylerle katman dilimleme yolları. Bir katmanın alanları katmanın ortasının yüzeyle kesiştiği yere (Ortalayıcı) göre oluşturulabilir. Diğer bir yol da her katmanın yüksekliği boyunca hacim içinde kalan alanları (Dışlayıcı) veya katmanın içinde herhangi bir yerde kalan alanları (Kapsayıcı) almasıdır. Dışlayıcı seçenek en çok ayrıntıyı tutar; Kapsayıcı seçenek en iyi şekilde oturur; Ortalayıcı ise en kısa sürede işlenir." + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Ortalayıcı" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Dışlayıcı" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Kapsayıcı" + #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -755,6 +780,16 @@ 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" @@ -767,8 +802,8 @@ msgstr "Dış Duvarı yazdırmak için kullanılan ekstruder dişli çarkı. Ço #: fdmprinter.def.json msgctxt "wall_x_extruder_nr label" -msgid "Inner Walls Extruder" -msgstr "İç Duvar Ekstruderi" +msgid "Inner Wall Extruder" +msgstr "İç Duvar Ekstrüderi" #: fdmprinter.def.json msgctxt "wall_x_extruder_nr description" @@ -1200,6 +1235,106 @@ 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 "ironing_enabled label" +msgid "Enable Ironing" +msgstr "Ütülemeyi Etkinleştir" + +#: fdmprinter.def.json +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 "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 "Ü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" +msgid "Ironing Pattern" +msgstr "Ütüleme Modeli" + +#: fdmprinter.def.json +msgctxt "ironing_pattern description" +msgid "The pattern to use for ironing top surfaces." +msgstr "Üst yüzeyleri ütülemek için kullanılacak model." + +#: fdmprinter.def.json +msgctxt "ironing_pattern option concentric" +msgid "Concentric" +msgstr "Eş merkezli" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option zigzag" +msgid "Zig Zag" +msgstr "Zikzak" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing label" +msgid "Ironing Line Spacing" +msgstr "Ütüleme Hattı Boşluğu" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing description" +msgid "The distance between the lines of ironing." +msgstr "Ütüleme hatları arasında bulunan mesafe." + +#: fdmprinter.def.json +msgctxt "ironing_flow label" +msgid "Ironing Flow" +msgstr "Ütüleme Akışı" + +#: fdmprinter.def.json +msgctxt "ironing_flow description" +msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." +msgstr "Ütüleme sırasında normal yüzey hattına göre ekstrude edilecek malzeme miktarı. Nozülü dolu tutmak üst yüzeyde oluşan çatlakların bir kısmının doldurulmasını sağlar fakat nozülün fazla dolu olması aşırı ekstrüzyona ve yüzey yanlarında noktalar oluşmasına neden olur." + +#: fdmprinter.def.json +msgctxt "ironing_inset label" +msgid "Ironing Inset" +msgstr "Ütüleme İlave Mesafesi" + +#: fdmprinter.def.json +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 "infill label" msgid "Infill" @@ -1247,8 +1382,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, 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 "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." +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, tri-hexagon, cubic, octet, quarter cubic, cross 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 "Baskının dolgu malzemesinin şeklidir. Hat ve zikzak dolgu, farklı katmanlar üzerinde yön değiştirerek malzeme maliyetini azaltır. Izgara, üçgen, üçlü altıgen, kübik, sekizlik, çeyrek kübik, çapraz ve eşmerkezli şekiller, her katmana tam olarak bası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" @@ -1265,6 +1400,11 @@ msgctxt "infill_pattern option triangles" msgid "Triangles" msgstr "Üçgenler" +#: fdmprinter.def.json +msgctxt "infill_pattern option trihexagon" +msgid "Tri-Hexagon" +msgstr "Üçlü Altıgen" + #: fdmprinter.def.json msgctxt "infill_pattern option cubic" msgid "Cubic" @@ -1317,8 +1457,8 @@ 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 "İç 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." +msgid "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." +msgstr "İç duvarın şeklini takip eden bir hattı kullanarak dolgu şeklinin iç duvarla buluştuğu noktada uçları bağlar. Bu ayarın etkinleştirilmesi, dolgunun duvarlara daha iyi yapışmasını sağlayabilir ve dolgunun dikey yüzeylerin kalitesinin etkilerini azaltabilir. Bu ayarın devre dışı bırakılması, kullanılan malzemenin miktarını azaltır." #: fdmprinter.def.json msgctxt "infill_angles label" @@ -1330,6 +1470,26 @@ msgctxt "infill_angles description" msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns)." msgstr "Kullanılacak tam sayı hat yönü listesi. Listedeki öğeler, katmanlar ilerledikçe sıralı olarak kullanılır. Listenin sonuna ulaşıldığında baştan başlanır. Liste öğeleri virgülle ayrılır ve tüm liste köşeli parantez içine alınır. Varsayılan ayar boş listedir ve geleneksel varsayılan açılar kullanılır (çizgiler ve zikzak şekiller için 45 ve 135 derece; diğer tüm şekiller için 45 derece)." +#: fdmprinter.def.json +msgctxt "infill_offset_x label" +msgid "Infill X Offset" +msgstr "Dolgu X Kayması" + +#: fdmprinter.def.json +msgctxt "infill_offset_x description" +msgid "The infill pattern is offset this distance along the X axis." +msgstr "Dolgu şekli X ekseni boyunca bu mesafe kadar kaydırılır." + +#: fdmprinter.def.json +msgctxt "infill_offset_y label" +msgid "Infill Y Offset" +msgstr "Dolgu Y Kayması" + +#: fdmprinter.def.json +msgctxt "infill_offset_y description" +msgid "The infill pattern is offset this distance along the Y axis." +msgstr "Dolgu şekli Y ekseni boyunca bu mesafe kadar kaydırılır." + #: fdmprinter.def.json msgctxt "sub_div_rad_add label" msgid "Cubic Subdivision Shell" @@ -1640,6 +1800,26 @@ msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "Kullanılan filamanın çapını ayarlar. Bu değeri kullanılan filaman çapı ile eşitleyin." +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency label" +msgid "Adhesion Tendency" +msgstr "Yapışma Eğilimi" + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency description" +msgid "Surface adhesion tendency." +msgstr "Yüzeye yapışma eğilimi." + +#: fdmprinter.def.json +msgctxt "material_surface_energy label" +msgid "Surface Energy" +msgstr "Yüzey Enerjisi" + +#: fdmprinter.def.json +msgctxt "material_surface_energy description" +msgid "Surface energy." +msgstr "Yüzey enerjisi." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -2830,36 +3010,6 @@ msgctxt "support_connect_zigzags description" msgid "Connect the ZigZags. This will increase the strength of the zig zag support structure." msgstr "Zikzakları Bağla Zik zak destek yapısının sağlamlığını artırır." -#: fdmprinter.def.json -msgctxt "support_skip_some_zags label" -msgid "Break Up Support In Chunks" -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 "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 "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 "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 "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 "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" msgid "Support Density" @@ -3399,8 +3549,8 @@ msgstr "Etek Mesafesi" 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." +"This is the minimum distance. Multiple skirt lines will extend outwards from this distance." +msgstr "Baskının eteği ve ilk katmanı arasındaki yatay mesafe.\nMinimum mesafedir. Bu mesafeden çok sayıda etek hattı dışarı doğru uzanır." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3442,26 +3592,6 @@ 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 "İ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 "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 "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 "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" msgid "Raft Extra Margin" @@ -3479,8 +3609,8 @@ 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 "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." +msgid "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." +msgstr "Bu ayar, radye ana hattında yer alan iç köşelerin ne kadar yuvarlanacağı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" @@ -3952,6 +4082,16 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "Normal koşullarda, Cura ağdaki küçük boşlukları diker ve büyük boşluklu katman parçalarını ortadan kaldırır. Bu seçeneği etkinleştirmek, dikilemeyen parçaları muhafaza eder. Bu seçenek, hiçbir işlemin uygun bir GCode oluşturamaması durumunda başvurulacak son seçenek olarak kullanılmalıdır." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Maksimum Çözünürlük" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "Bir çizginin dilimlemeden sonraki minimum boyutu. Bu değer artırıldıktan sonra örgünün çözünürlüğü düşer. Bu, yazıcının g-kodunu işlemek için gereken hıza yetişmesine olanak tanır ve örtünün zaten işlenemeyecek ayrıntılarını kaldırarak dilimleme hızını artırır." + #: fdmprinter.def.json msgctxt "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -3982,6 +4122,16 @@ msgctxt "alternate_carve_order description" msgid "Switch to which mesh intersecting volumes will belong with every layer, so that the overlapping meshes become interwoven. Turning this setting off will cause one of the meshes to obtain all of the volume in the overlap, while it is removed from the other meshes." msgstr "Çakışan bileşimlerin birbirine karışması için her bir katmanda bileşim kesişimi hacimlerine göre değişiklik yapın. Bu ayarın kapatılması, bir bileşimin diğer bileşimlerden ayrılarak çakışmadaki tüm hacmi almasına neden olur." +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers label" +msgid "Remove Empty First Layers" +msgstr "Boş İlk Katmanları Kaldır" + +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers description" +msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." +msgstr "Basılan ilk katmanın altındaki varsa boş katmanları kaldır. Bu ayarın devre dışı bırakılması, Dilimleme Toleransı Dışlayıcı veya Ortalayıcı olarak ayarlanmışsa, boş ilk katmanlar oluşmasına neden olabilir." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4187,6 +4337,36 @@ 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 "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 "support_skip_some_zags label" +msgid "Break Up Support In Chunks" +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 "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 "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 "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 "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 "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 "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4477,6 +4657,26 @@ msgctxt "magic_fuzzy_skin_point_dist description" msgid "The average distance between the random points introduced on each line segment. Note that the original points of the polygon are discarded, so a high smoothness results in a reduction of the resolution. This value must be higher than half the Fuzzy Skin Thickness." msgstr "Her bir hat dilimine tanıtılan rastgele noktalar arasındaki ortalama mesafe. Poligonların asıl noktalarının çıkarıldığını dikkate alın; bunun sonucunda yüksek pürüzsüzlük sonuçları çözünürlük azalmasıyla sonuçlanabilir. Bu değer, Belirsiz Dış Katman Kalınlığından yüksek olmalıdır." +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset label" +msgid "Flow rate compensation max extrusion offset" +msgstr "Akış hızı dengelemesi maksimum ekstrüzyon kayması" + +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset description" +msgid "The maximum distance in mm to compensate." +msgstr "Dengelenecek, mm cinsinden maksimum mesafe." + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor label" +msgid "Flow rate compensation factor" +msgstr "Akış hızı dengeleme çarpanı" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor description" +msgid "The multiplication factor for the flow rate -> distance translation." +msgstr "Akış hızından -> mesafeye dönüştürme için çarpan." + #: fdmprinter.def.json msgctxt "wireframe_enabled label" msgid "Wire Printing" @@ -4734,106 +4934,6 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "Nozül ve aşağı yöndeki hatlar arasındaki mesafe. Daha büyük açıklık, dik açısı daha küçük çapraz şekilde aşağı yöndeki hatların oluşmasına neden olur, dolayısıyla bu durum bir sonraki katman ile yukarı yönde daha az bağlantıya yol açar. Sadece kablo yazdırmaya uygulanır." -#: fdmprinter.def.json -msgctxt "ironing_enabled label" -msgid "Enable Ironing" -msgstr "Ütülemeyi Etkinleştir" - -#: fdmprinter.def.json -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 "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 "Ü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" -msgid "Ironing Pattern" -msgstr "Ütüleme Modeli" - -#: fdmprinter.def.json -msgctxt "ironing_pattern description" -msgid "The pattern to use for ironing top surfaces." -msgstr "Üst yüzeyleri ütülemek için kullanılacak model." - -#: fdmprinter.def.json -msgctxt "ironing_pattern option concentric" -msgid "Concentric" -msgstr "Eş merkezli" - -#: fdmprinter.def.json -msgctxt "ironing_pattern option zigzag" -msgid "Zig Zag" -msgstr "Zikzak" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing label" -msgid "Ironing Line Spacing" -msgstr "Ütüleme Hattı Boşluğu" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing description" -msgid "The distance between the lines of ironing." -msgstr "Ütüleme hatları arasında bulunan mesafe." - -#: fdmprinter.def.json -msgctxt "ironing_flow label" -msgid "Ironing Flow" -msgstr "Ütüleme Akışı" - -#: fdmprinter.def.json -msgctxt "ironing_flow description" -msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." -msgstr "Ütüleme sırasında normal yüzey hattına göre ekstrude edilecek malzeme miktarı. Nozülü dolu tutmak üst yüzeyde oluşan çatlakların bir kısmının doldurulmasını sağlar fakat nozülün fazla dolu olması aşırı ekstrüzyona ve yüzey yanlarında noktalar oluşmasına neden olur." - -#: fdmprinter.def.json -msgctxt "ironing_inset label" -msgid "Ironing Inset" -msgstr "Ütüleme İlave Mesafesi" - -#: fdmprinter.def.json -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" @@ -4894,13 +4994,45 @@ 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_x_extruder_nr label" +#~ msgid "Inner Walls 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, 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 "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." + +#~ 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 "İç 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." + +#~ 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." + +#~ msgctxt "z_offset_layer_0 label" +#~ msgid "Initial Layer Z Offset" +#~ msgstr "İlk Katman Z Ofseti" + +#~ 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 "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." + +#~ msgctxt "z_offset_taper_layers label" +#~ msgid "Z Offset Taper Layers" +#~ msgstr "Z Ofseti Konik Katmanları" + +#~ 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 "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." + +#~ 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 "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." #~ 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." @@ -5116,4 +5248,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 092ce5120b..f4bf6159d5 100644 --- a/resources/i18n/zh_CN/cura.po +++ b/resources/i18n/zh_CN/cura.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-11-21 16:58+0100\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: PCDotFan , Bothof \n" "Language: zh_CN\n" @@ -18,66 +18,6 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 1.7.3\n" -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Print aborted" -msgstr "打印已中止" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Blocked" -msgstr "冻结操作" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Action required" -msgstr "需要采取行动" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label:status" -msgid "Can't start print" -msgstr "不能开始打印" - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is not set up to host a group of Ultimaker 3 printers." -msgstr "这台打印机未设置为运行一组连接的 Ultimaker 3 打印机。" - -#: Manually added for plugins/UM3NetworkPrinting/PrinterInfoBlock.qml -msgctxt "@label" -msgid "Finishes at: " -msgstr "完成时间:" - -#: Manually added for plugins/UM3NetworkPrinting/DiscoverUM3Action.qml -msgctxt "@label" -msgid "This printer is the host for a group of %1 Ultimaker 3 printers." -msgstr "这台打印机是一组共 %1 台已连接 Ultimaker 3 打印机的主机。" - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Printer '{printer_name}' has finished printing '{job_name}'." -msgstr "打印机 '{printer_name}' 完成了打印任务 '{job_name}'。" - -#: Manually added for plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py -msgctxt "@info:status" -msgid "Print finished" -msgstr "打印完成" - -#: Manually added for resources/Cura/Cura.qml -msgctxt "@title:menu menubar:toplevel" -msgid "P&lugins" -msgstr "插件" - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Browse plugins..." -msgstr "浏览插件..." - -#: Manually added for resources/Cura/Actions.qml -msgctxt "@action:menu" -msgid "Installed plugins..." -msgstr "已安装插件..." - #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:29 msgctxt "@action" msgid "Machine Settings" @@ -115,19 +55,17 @@ 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 -#: /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:428 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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/3MFReader/WorkspaceDialog.qml:376 #: /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 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:253 msgctxt "@action:button" msgid "Cancel" msgstr "取消" @@ -154,15 +92,15 @@ msgstr "已发送至 Doodle3D Connect 的文件" #: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:214 msgctxt "@action:button" -msgid "Open Connect.." -msgstr "打开 Connect" +msgid "Open Connect..." +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 "打开 Doodle3D Connect Web 界面" -#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:35 +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 msgctxt "@item:inmenu" msgid "Show Changelog" msgstr "显示更新日志" @@ -197,37 +135,38 @@ msgctxt "@info:status" msgid "Connected via USB" msgstr "通过 USB 连接" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:153 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 msgctxt "@info:title" -msgid "Print Details" -msgstr "打印品详细信息" +msgid "Printer Unavailable" +msgstr "打印机不可用" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:456 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 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 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 msgctxt "@info:title" msgid "USB Printing" msgstr "USB 打印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:460 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 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/USBPrinterOutputDevice.py:461 #: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:945 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 msgctxt "@info:title" msgid "Warning" msgstr "警告" @@ -291,11 +230,11 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "无法保存到可移动磁盘 {0}:{1}" #: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 msgctxt "@info:title" msgid "Error" msgstr "错误" @@ -344,346 +283,332 @@ msgctxt "@item:intext" msgid "Removable Drive" 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print over network" msgstr "通过网络打印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:108 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:108 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 msgctxt "@properties:tooltip" msgid "Print over network" msgstr "通过网络打印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:157 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:157 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:479 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:502 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@action:button" msgid "Retry" msgstr "重试" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:159 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 msgctxt "@info:tooltip" msgid "Re-send the access request" msgstr "重新发送访问请求" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:161 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 msgctxt "@info:status" msgid "Access to the printer accepted" msgstr "打印机接受了访问请求" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:162 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:162 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:163 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 #: /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:375 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:364 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:385 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:371 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:392 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:384 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:405 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:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 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:392 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 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:456 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 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:487 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 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:649 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:636 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:666 #, 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:650 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:667 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 #, 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:682 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:667 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:699 #, 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:692 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:676 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:709 #, python-brace-format msgctxt "@label" msgid "Not enough material for spool {0}." msgstr "线轴 {0} 上没有足够的材料。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:702 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:686 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 #, 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:716 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:733 #, 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:724 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:708 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:741 #, 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:729 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:713 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:746 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:714 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 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:736 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:720 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:753 msgctxt "@window:title" msgid "Mismatched configuration" msgstr "配置不匹配" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:821 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +msgctxt "@info:status" +msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "发送新作业(暂时)受阻,仍在发送前一份打印作业。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:status" msgid "Sending data to printer" msgstr "向打印机发送数据" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:839 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 msgctxt "@info:title" msgid "Sending Data" msgstr "正在发送数据" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:908 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:890 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 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:1034 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:198 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 msgctxt "@label:MonitorStatus" msgid "Aborting print..." msgstr "中止打印..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1056 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1040 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 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:1046 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 msgctxt "@label:MonitorStatus" msgid "Pausing print..." msgstr "暂停打印..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1064 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1048 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 msgctxt "@label:MonitorStatus" msgid "Resuming print..." msgstr "恢复打印..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1216 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1191 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 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:1193 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 msgctxt "@label" msgid "Would you like to use your current printer configuration in Cura?" msgstr "您想在 Cura 中使用当前的打印机配置吗?" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1220 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkPrinterOutputDevice.py:1195 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 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/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:112 msgid "This printer is not set up to host a group of connected Ultimaker 3 printers." msgstr "这台打印机未设置为运行一组连接的 Ultimaker 3 打印机。" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:104 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:113 #, 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 "这台打印机是一组共 {count} 台已连接 Ultimaker 3 打印机的主机。" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:105 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 #, python-brace-format msgid "{printer_name} has finished printing '{job_name}'. Please collect the print and confirm clearing the build plate." msgstr "{printer_name} 已完成打印 '{job_name}'。 请收起打印品并确认清空打印平台。" -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 #, 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 "{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 "发送新作业(暂时)受阻,仍在发送前一份打印作业。" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:212 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 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 "无法发送新打印作业:此 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 "发送 {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 "已发送 {file_name} 至组 {cluster_name}。" - -#: /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:504 -msgctxt "@info:tooltip" -msgid "Opens the print jobs interface in your browser." -msgstr "在您的浏览器中打开打印作业界面。" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/NetworkClusterPrinterOutputDevice.py:520 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 #, python-brace-format msgctxt "@info:status" msgid "Unable to send print job to group {cluster_name}." msgstr "无法发送打印作业至组 {cluster_name}。" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:71 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "已发送 {file_name} 至组 {cluster_name}。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "显示打印作业" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "在您的浏览器中打开打印作业界面。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label" +msgid "Unknown" +msgstr "未知" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#, python-brace-format +msgctxt "@info:status" +msgid "Printer '{printer_name}' has finished printing '{job_name}'." +msgstr "打印机 '{printer_name}' 完成了打印任务 '{job_name}'。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +msgctxt "@info:status" +msgid "Print finished" +msgstr "打印完成" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 +msgctxt "@label:status" +msgid "Action required" +msgstr "需要采取行动" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "发送 {file_name} 至组 {cluster_name}" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +msgctxt "@action" +msgid "Connect via Network" +msgstr "通过网络连接" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 #, 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 "为确保您的 {machine_name} 具备最新功能,建议定期更新固件。 更新可在 {machine_name} 上(连接至网络时)或通过 USB 进行。" +msgid "New features are available for your {machine_name}! It is recommended to update the firmware on your printer." +msgstr "您的 {machine_name} 有新功能可用! 建议您更新打印机上的固件。" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:72 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 #, python-format msgctxt "@info:title The %s gets replaced with the printer name." msgid "New %s firmware available" msgstr "新 %s 固件可用" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:73 -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 msgctxt "@action:button" -msgid "Download" -msgstr "下载" +msgid "How to update" +msgstr "如何更新" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:83 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 msgctxt "@info" msgid "Could not access update information." msgstr "无法获取更新信息。" @@ -713,7 +638,22 @@ msgctxt "@info:status" msgid "Error while starting %s!" msgstr "启动 %s 时发生错误!" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:24 +#: /home/ruben/Projects/Cura/plugins/SimulationView/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Simulation view" +msgstr "仿真视图" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +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/SimulationView/SimulationView.py:101 +msgctxt "@info:title" +msgid "Simulation View" +msgstr "仿真视图" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 msgid "Modify G-Code" msgstr "修改 G-Code 文件" @@ -743,21 +683,6 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "GCode 文件" -#: /home/ruben/Projects/Cura/plugins/LayerView/__init__.py:13 -msgctxt "@item:inlistbox" -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" @@ -790,8 +715,9 @@ msgstr "无法使用当前材料进行切片,因为该材料与所选机器或 #: /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 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 msgctxt "@info:title" msgid "Unable to slice" msgstr "无法切片" @@ -802,23 +728,29 @@ 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:306 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:318 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to slice due to some per-model settings. The following settings have errors on one or more models: {error_labels}" +msgstr "因部分特定模型设置而无法切片。 以下设置在一个或多个模型上存在错误: {error_labels}" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 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:315 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:335 msgctxt "@info:status" msgid "Nothing to slice because none of the models fit the build volume. Please scale or rotate models to fit." msgstr "无法执行,因为没有一个模型符合成形空间体积。请缩放或旋转模型以适应打印平台。" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:65 -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:status" msgid "Processing Layers" msgstr "正在处理层" -#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:238 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 msgctxt "@info:title" msgid "Information" msgstr "信息" @@ -833,14 +765,36 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "设置对每个模型的单独设定" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:165 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:475 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23 +msgid "Install" +msgstr "安装" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It is not set to a directory." +msgstr "复制 Siemens NX 插件文件失败。 请检查您的 UGII_USER_DIR。 未将其设置到目录中。" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81 +msgid "Successfully installed Siemens NX Cura plugin." +msgstr "已成功安装 Siemens NX Cura 插件。" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 +msgid "Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgstr "复制 Siemens NX 插件文件失败。 请检查您的 UGII_USER_DIR。" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 +msgid "Failed to install Siemens NX plugin. Could not set environment variable UGII_USER_DIR for Siemens NX." +msgstr "安装 Siemens NX 插件失败。 无法为 Siemens NX 设置环境变量 UGII_USER_DIR。" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 msgctxt "@title:tab" msgid "Recommended" msgstr "推荐" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:480 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 msgctxt "@title:tab" msgid "Custom" msgstr "自定义" @@ -851,29 +805,24 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF 文件" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:123 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1062 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 msgctxt "@label" msgid "Nozzle" msgstr "喷嘴" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:28 -msgctxt "@menuitem" -msgid "Browse plugins" -msgstr "浏览插件" - -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:163 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 #, python-brace-format msgctxt "@info:status" msgid "Failed to get plugin ID from {0}" msgstr "无法从 {0} 获取插件 ID" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 msgctxt "@info:tile" msgid "Warning" msgstr "警告" -#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:202 +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 msgctxt "@window:title" msgid "Plugin browser" msgstr "插件浏览器" @@ -888,18 +837,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G 文件" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:254 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 msgctxt "@info:status" msgid "Parsing G-code" msgstr "解析 G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:256 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:370 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 msgctxt "@info:title" msgid "G-code Details" msgstr "G-code 详细信息" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:368 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 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 文件可能不准确。" @@ -941,73 +890,78 @@ msgctxt "@action" msgid "Level build plate" msgstr "调平打印平台" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:88 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 msgctxt "@tooltip" msgid "Outer Wall" msgstr "外壁" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 msgctxt "@tooltip" msgid "Inner Walls" msgstr "内壁" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 msgctxt "@tooltip" msgid "Skin" msgstr "表层" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 msgctxt "@tooltip" msgid "Infill" msgstr "填充" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 msgctxt "@tooltip" msgid "Support Infill" msgstr "支撑填充" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 msgctxt "@tooltip" msgid "Support Interface" msgstr "支撑接触面" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 msgctxt "@tooltip" msgid "Support" msgstr "支撑" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 msgctxt "@tooltip" msgid "Skirt" msgstr "Skirt" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 msgctxt "@tooltip" msgid "Travel" msgstr "移动" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 msgctxt "@tooltip" msgid "Retractions" msgstr "回抽" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 msgctxt "@tooltip" msgid "Other" msgstr "其它" -#: /home/ruben/Projects/Cura/cura/PrintInformation.py:259 +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +msgctxt "@label unknown material" +msgid "Unknown" +msgstr "未知" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "预切片文件 {0}" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:463 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 msgctxt "@item:material" msgid "No material loaded" msgstr "未加载材料" -#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:470 +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 msgctxt "@item:material" msgid "Unknown material" msgstr "未知材料" @@ -1034,13 +988,13 @@ msgid "Can't Find Location" msgstr "找不到位置" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:431 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:112 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 msgctxt "@title:window" msgid "File Already Exists" msgstr "文件已存在" #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:113 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 #, 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?" @@ -1056,16 +1010,26 @@ msgctxt "@label" msgid "Custom Material" msgstr "自定义材料" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:108 +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 +msgctxt "@menuitem" +msgid "Global" +msgstr "全局" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "未覆盖" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 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/MachineManager.py:118 #: /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." @@ -1082,62 +1046,62 @@ msgctxt "@action" msgid "Undo changing the material diameter." msgstr "撤销更改材料直径。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "无法将配置文件导出至 {0} {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "无法将配置文件导出至 {0} : 写入器插件报告故障。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:155 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "配置文件已导出至: {0} " -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:157 msgctxt "@info:title" -msgid "Export Details" -msgstr "导出详细信息" +msgid "Export succeeded" +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 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to import profile from {0}: {1}" msgstr "无法从 {0} 导入配置文件: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:215 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:251 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "已成功导入配置文件 {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:254 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 #, 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:272 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:274 msgctxt "@label" msgid "Custom profile" msgstr "自定义配置文件" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:283 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "配置文件缺少打印质量类型定义。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1164,238 +1128,316 @@ msgctxt "@info:title" msgid "Placing Object" msgstr "放置模型" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:54 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:80 msgctxt "@title:window" msgid "Crash Report" msgstr "错误报告" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py:79 -msgctxt "@label" +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +msgctxt "@label crash message" 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

    " +"

    A fatal exception has occurred. Please send us this Crash Report to fix the problem

    \n" +"

    Please use the \"Send report\" button to post a bug report automatically to our servers

    \n" +" " +msgstr "

    发生了致命错误。 请将这份错误报告发送给我们以便修复问题

    \n

    请使用“发送报告”按钮将错误报告自动发布到我们的服务器

    \n " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +msgctxt "@title:groupbox" +msgid "System information" +msgstr "系统信息" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +msgctxt "@label unknown version of Cura" +msgid "Unknown" +msgstr "未知" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 +#, python-brace-format +msgctxt "@label Cura version" +msgid "Cura version: {version}
    " +msgstr "Cura 版本: {version}
    " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 -msgctxt "@action:button" -msgid "Open Web Page" -msgstr "打开网页" +#, python-brace-format +msgctxt "@label Platform" +msgid "Platform: {platform}
    " +msgstr "平台: {platform}
    " -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:251 +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 +#, python-brace-format +msgctxt "@label Qt version" +msgid "Qt version: {qt}
    " +msgstr "Qt 版本: {qt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 +#, python-brace-format +msgctxt "@label PyQt version" +msgid "PyQt version: {pyqt}
    " +msgstr "PyQt 版本: {pyqt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 +#, python-brace-format +msgctxt "@label OpenGL" +msgid "OpenGL: {opengl}
    " +msgstr "OpenGL: {opengl}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#, python-brace-format +msgctxt "@label OpenGL version" +msgid "
  • OpenGL Version: {version}
  • " +msgstr "
  • OpenGL 版本: {version}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#, python-brace-format +msgctxt "@label OpenGL vendor" +msgid "
  • OpenGL Vendor: {vendor}
  • " +msgstr "
  • OpenGL 供应商: {vendor}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#, python-brace-format +msgctxt "@label OpenGL renderer" +msgid "
  • OpenGL Renderer: {renderer}
  • " +msgstr "
  • OpenGL 渲染器: {renderer}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +msgctxt "@title:groupbox" +msgid "Exception traceback" +msgstr "异常追溯" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +msgctxt "@title:groupbox" +msgid "Logs" +msgstr "日志" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +msgctxt "@title:groupbox" +msgid "User description" +msgstr "用户说明" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +msgctxt "@action:button" +msgid "Send report" +msgstr "发送报告" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 msgctxt "@info:progress" msgid "Loading machines..." msgstr "正在载入打印机..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "正在设置场景..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 msgctxt "@info:progress" msgid "Loading interface..." msgstr "正在载入界面…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 #, 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:1295 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1348 #, 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:1304 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1357 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "如果加载 G-code,则无法打开其他任何文件。{0} 已跳过导入" +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +msgctxt "@info:status" +msgid "The selected model was too small to load." +msgstr "所选模型过小,无法加载。" + #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 msgctxt "@title" msgid "Machine Settings" msgstr "打印机设置" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:77 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:78 msgctxt "@title:tab" msgid "Printer" msgstr "打印机" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:96 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 msgctxt "@label" msgid "Printer Settings" msgstr "打印机设置" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:107 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 msgctxt "@label" msgid "X (Width)" msgstr "X (宽度)" -#: /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: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 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 msgctxt "@label" msgid "mm" msgstr "mm" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:117 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 msgctxt "@label" msgid "Y (Depth)" msgstr "Y (深度)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:127 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 msgctxt "@label" msgid "Z (Height)" msgstr "Z (高度)" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:139 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:140 msgctxt "@label" msgid "Build plate shape" msgstr "打印平台形状" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:148 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 msgctxt "@option:check" msgid "Origin at center" msgstr "置中" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:156 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:157 msgctxt "@option:check" msgid "Heated bed" msgstr "加热床" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:167 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 msgctxt "@label" msgid "Gcode flavor" msgstr "GCode 类型" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:180 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 msgctxt "@label" msgid "Printhead Settings" msgstr "打印头设置" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:190 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 msgctxt "@label" msgid "X min" msgstr "X 最小值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 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 "打印头左侧至喷嘴中心的距离。 用于防止“排队”打印时之前的打印品与打印头发生碰撞。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:200 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 msgctxt "@label" msgid "Y min" msgstr "Y 最小值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 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 "打印头前端至喷嘴中心的距离。 用于防止“排队”打印时之前的打印品与打印头发生碰撞。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:210 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 msgctxt "@label" msgid "X max" msgstr "X 最大值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 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 "打印头右侧至喷嘴中心的距离。 用于防止“排队”打印时之前的打印品与打印头发生碰撞。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:220 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 msgctxt "@label" msgid "Y max" msgstr "Y 最大值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 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 "打印头后部至喷嘴中心的距离。 用于防止“排队”打印时之前的打印品与打印头发生碰撞。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:233 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 msgctxt "@label" msgid "Gantry height" msgstr "十字轴高度" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 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:254 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:255 msgctxt "@label" msgid "Number of Extruders" msgstr "挤出机数目" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 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:290 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:291 msgctxt "@label" msgid "Material diameter" msgstr "材料直径" -#: /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:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 msgctxt "@label" msgid "Nozzle size" msgstr "喷嘴孔径" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:316 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 msgctxt "@label" msgid "Start Gcode" msgstr "GCode 开始部分" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:326 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very start." msgstr "将在开始时执行的 Gcode 命令。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:335 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 msgctxt "@label" msgid "End Gcode" msgstr "GCode 结束部分" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:345 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 msgctxt "@tooltip" msgid "Gcode commands to be executed at the very end." msgstr "将在结束时执行的 Gcode 命令。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:377 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 msgctxt "@label" msgid "Nozzle Settings" msgstr "喷嘴设置" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:399 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 msgctxt "@label" msgid "Nozzle offset X" msgstr "喷嘴偏移 X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:411 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 msgctxt "@label" msgid "Nozzle offset Y" msgstr "喷嘴偏移 Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:432 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 msgctxt "@label" msgid "Extruder Start Gcode" msgstr "挤出机 Gcode 开始部分" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:450 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 msgctxt "@label" msgid "Extruder End Gcode" msgstr "挤出机 Gcode 结束部分" @@ -1408,12 +1450,11 @@ 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/PostProcessingPlugin/PostProcessingPlugin.qml:445 #: /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/Preferences/MachinesPage.qml:123 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 #: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 msgctxt "@action:button" msgid "Close" @@ -1465,13 +1506,11 @@ 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" @@ -1480,20 +1519,17 @@ msgid "" 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 @@ -1502,220 +1538,221 @@ msgid "Remove" msgstr "删除" #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:104 -#: /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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:194 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 msgctxt "@label" msgid "Type" msgstr "类型" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:235 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:235 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 msgctxt "@label" msgid "Firmware version" msgstr "固件版本" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:266 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:266 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 msgctxt "@label" msgid "Address" msgstr "地址" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:280 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:286 +msgctxt "@label" +msgid "This printer is not set up to host a group of Ultimaker 3 printers." +msgstr "这台打印机未设置为运行一组连接的 Ultimaker 3 打印机。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:290 +msgctxt "@label" +msgid "This printer is the host for a group of %1 Ultimaker 3 printers." +msgstr "这台打印机是一组共 %1 台已连接 Ultimaker 3 打印机的主机。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:300 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/DiscoverUM3Action.qml:305 #: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 -#: /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:316 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 msgctxt "@title:window" msgid "Printer Address" msgstr "打印机网络地址" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:329 -#: /home/ruben/Projects/Cura/plugins/CuraPrintClusterUpload/DiscoverUM3Action.qml:346 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 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:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:379 +#: /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" +msgid "OK" msgstr "确定" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "通过网络打印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "打印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:36 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "%1 未设置为运行一组连接的 Ultimaker 3 打印机" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "使用默认 Web 浏览器打开打印作业页面。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "查看打印作业" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 +msgctxt "@label" +msgid "Preparing to print" +msgstr "准备打印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 +msgctxt "@label:status" +msgid "Printing" +msgstr "打印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 +msgctxt "@label:status" +msgid "Available" +msgstr "可用" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +msgctxt "@label:MonitorStatus" +msgid "Lost connection with the printer" +msgstr "与打印机的连接中断" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 +msgctxt "@label:status" +msgid "Disabled" +msgstr "已禁用" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273 +msgctxt "@label:status" +msgid "Reserved" +msgstr "保留" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:275 +msgctxt "@label:status" +msgid "Finished" +msgstr "已完成" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 +msgctxt "@label:status" +msgid "Paused" +msgstr "已暂停" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 +msgctxt "@label:status" +msgid "Resuming" +msgstr "恢复" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 +msgctxt "@label:status" +msgid "Print aborted" +msgstr "打印已中止" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:410 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "不接受打印作业" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 +msgctxt "@label" +msgid "Finishes at: " +msgstr "完成时间:" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 +msgctxt "@label" +msgid "Clear build plate" +msgstr "清空打印平台" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "正在等待配置更改" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:64 +msgctxt "@title" +msgid "Print jobs" +msgstr "打印作业" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 +msgctxt "@label" +msgid "Printing" +msgstr "打印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 +msgctxt "@label" +msgid "Queued" +msgstr "已排队" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:171 +msgctxt "@label:title" +msgid "Printers" +msgstr "打印机" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 +msgctxt "@action:button" +msgid "View printers" +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/DiscoverUM3Action.qml:284 -msgctxt "@label" -msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" -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 "这台打印机是一组 %1 台已连接 Ultimaker 3 打印机的主机" - -#: /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 "%1 未设置为运行一组连接的 Ultimaker 3 打印机" - -#: /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 "使用默认 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 "查看打印作业" - -#: /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" @@ -1741,13 +1778,6 @@ msgctxt "@option:curaSolidworksStlQuality" msgid "Always use Coarse quality" msgstr "总是使用粗糙品质" -#: /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 "确定" - #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 msgctxt "@title:window" msgid "Import SolidWorks File as STL..." @@ -1774,11 +1804,91 @@ msgid "Fine" msgstr "精细" #: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:81 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 msgctxt "@text:window" msgid "Remember my choice" msgstr "记住我的选择" +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +msgctxt "@label" +msgid "Color scheme" +msgstr "颜色方案" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +msgctxt "@label:listbox" +msgid "Material Color" +msgstr "材料颜色" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +msgctxt "@label:listbox" +msgid "Line Type" +msgstr "走线类型" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +msgctxt "@label:listbox" +msgid "Feedrate" +msgstr "进给速度" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +msgctxt "@label:listbox" +msgid "Layer thickness" +msgstr "层厚度" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +msgctxt "@label" +msgid "Compatibility Mode" +msgstr "兼容模式" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +msgctxt "@label" +msgid "Show Travels" +msgstr "显示移动轨迹" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +msgctxt "@label" +msgid "Show Helpers" +msgstr "显示打印辅助结构" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +msgctxt "@label" +msgid "Show Shell" +msgstr "显示外壳" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +msgctxt "@label" +msgid "Show Infill" +msgstr "显示填充" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +msgctxt "@label" +msgid "Only Show Top Layers" +msgstr "只显示顶层" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +msgctxt "@label" +msgid "Show 5 Detailed Layers On Top" +msgstr "在顶部显示 5 层打印细节" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +msgctxt "@label" +msgid "Top / Bottom" +msgstr "顶 / 底层" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +msgctxt "@label" +msgid "Inner Wall" +msgstr "内壁" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +msgctxt "@label" +msgid "min" +msgstr "最小" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +msgctxt "@label" +msgid "max" +msgstr "最大" + #: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 msgctxt "@title:window" msgid "Post Processing Plugin" @@ -1789,81 +1899,21 @@ msgctxt "@label" msgid "Post Processing Scripts" msgstr "后期处理脚本" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:218 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:217 msgctxt "@action" msgid "Add a script" msgstr "添加一个脚本" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:264 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:263 msgctxt "@label" msgid "Settings" msgstr "设置" -#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:456 +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 msgctxt "@info:tooltip" msgid "Change active post-processing scripts" msgstr "更改目前启用的后期处理脚本" -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:76 -msgctxt "@label" -msgid "Color scheme" -msgstr "颜色方案" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:91 -msgctxt "@label:listbox" -msgid "Material Color" -msgstr "材料颜色" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:95 -msgctxt "@label:listbox" -msgid "Line Type" -msgstr "走线类型" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:135 -msgctxt "@label" -msgid "Compatibility Mode" -msgstr "兼容模式" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:216 -msgctxt "@label" -msgid "Show Travels" -msgstr "显示移动轨迹" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:222 -msgctxt "@label" -msgid "Show Helpers" -msgstr "显示打印辅助结构" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:228 -msgctxt "@label" -msgid "Show Shell" -msgstr "显示外壳" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:234 -msgctxt "@label" -msgid "Show Infill" -msgstr "显示填充" - -#: /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:292 -msgctxt "@label" -msgid "Show 5 Detailed Layers On Top" -msgstr "在顶部显示 5 层打印细节" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:303 -msgctxt "@label" -msgid "Top / Bottom" -msgstr "顶 / 底层" - -#: /home/ruben/Projects/Cura/plugins/LayerView/LayerView.qml:307 -msgctxt "@label" -msgid "Inner Wall" -msgstr "内壁" - #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 msgctxt "@title:window" msgid "Convert Image..." @@ -1955,127 +2005,127 @@ msgctxt "@label:checkbox" msgid "Show all" msgstr "显示全部" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:13 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "打开项目" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:54 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 msgctxt "@action:ComboBox option" msgid "Update existing" msgstr "更新已有配置" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:55 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 msgctxt "@action:ComboBox option" msgid "Create new" msgstr "新建" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:70 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 msgctxt "@action:title" msgid "Summary - Cura Project" msgstr "摘要 - Cura 项目" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:88 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:88 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 msgctxt "@action:label" msgid "Printer settings" msgstr "打印机设置" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:104 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 msgctxt "@info:tooltip" msgid "How should the conflict in the machine be resolved?" msgstr "机器的设置冲突应如何解决?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:124 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:97 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 msgctxt "@action:label" msgid "Type" msgstr "类型" -#: /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 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:144 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:201 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:293 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:190 msgctxt "@action:label" msgid "Name" msgstr "名字" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:161 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:164 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:166 msgctxt "@action:label" msgid "Profile settings" msgstr "配置文件设置" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 msgctxt "@info:tooltip" msgid "How should the conflict in the profile be resolved?" msgstr "配置文件中的冲突如何解决?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:212 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 msgctxt "@action:label" msgid "Not in profile" msgstr "不在配置文件中" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:217 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 重写" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:232 msgctxt "@action:label" msgid "Derivative from" msgstr "衍生自" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:233 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:237 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 重写" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:249 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:253 msgctxt "@action:label" msgid "Material settings" msgstr "材料设置" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:265 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "材料的设置冲突应如何解决?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:207 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 msgctxt "@action:label" msgid "Setting visibility" msgstr "设置可见性" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:317 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:321 msgctxt "@action:label" msgid "Mode" msgstr "模式" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:332 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:216 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:218 msgctxt "@action:label" msgid "Visible settings:" msgstr "可见设置:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:221 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:223 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 / %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:363 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368 msgctxt "@action:warning" -msgid "Loading a project will clear all models on the buildplate" -msgstr "加载项目将清除打印平台上的所有模型" +msgid "Loading a project will clear all models on the build plate." +msgstr "加载项目将清除打印平台上的所有模型。" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:381 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 msgctxt "@action:button" msgid "Open" msgstr "打开" @@ -2100,6 +2150,11 @@ msgctxt "@action:button" msgid "Installed" msgstr "已安装" +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "下载" + #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:199 msgctxt "@title:window" msgid "Plugin License Agreement" @@ -2108,10 +2163,10 @@ msgstr "插件许可协议" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:220 msgctxt "@label" msgid "" -" plugin contains a license.\n" +"This plugin contains a license.\n" "You need to accept this license to install this plugin.\n" "Do you agree with the terms below?" -msgstr " 插件包含一个许可。\n您需要接受此许可才能安装此插件。\n是否同意下列条款?" +msgstr "该插件包含一个许可。\n您需要接受此许可才能安装此插件。\n是否同意下列条款?" #: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:242 msgctxt "@action:button" @@ -2123,6 +2178,11 @@ msgctxt "@action:button" msgid "Decline" msgstr "拒绝" +#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 +msgctxt "@title:window" +msgid "User Agreement" +msgstr "用户协议" + #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:25 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:25 msgctxt "@title" @@ -2308,30 +2368,25 @@ msgid "Printer does not accept commands" msgstr "打印机不接受命令" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 msgctxt "@label:MonitorStatus" msgid "In maintenance. Please check the printer" msgstr "维护中。请检查打印机" -#: /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:103 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 msgctxt "@label:MonitorStatus" msgid "Printing..." msgstr "打印中..." #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 msgctxt "@label:MonitorStatus" msgid "Paused" msgstr "已暂停" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 msgctxt "@label:MonitorStatus" msgid "Preparing..." msgstr "初始化中..." @@ -2547,7 +2602,7 @@ msgid "Unit" msgstr "单位" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:436 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 msgctxt "@title:tab" msgid "General" msgstr "基本" @@ -2778,7 +2833,7 @@ msgid "Send (anonymous) print information" msgstr "(匿名)发送打印信息" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:441 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:444 msgctxt "@title:tab" msgid "Printers" msgstr "打印机" @@ -2796,39 +2851,39 @@ msgctxt "@action:button" msgid "Rename" msgstr "重命名" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 msgctxt "@label" msgid "Printer type:" msgstr "打印机类型:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:160 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:158 msgctxt "@label" msgid "Connection:" msgstr "连接:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:166 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:164 #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 msgctxt "@info:status" msgid "The printer is not connected." msgstr "尚未连接到打印机。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:170 msgctxt "@label" msgid "State:" msgstr "状态:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 msgctxt "@label:MonitorStatus" msgid "Waiting for someone to clear the build plate" msgstr "等待清理打印平台" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:201 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 msgctxt "@label:MonitorStatus" msgid "Waiting for a printjob" msgstr "等待打印作业" #: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:445 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 msgctxt "@title:tab" msgid "Profiles" msgstr "配置文件" @@ -2926,7 +2981,7 @@ msgid "Export Profile" msgstr "导出配置文件" #: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:443 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 msgctxt "@title:tab" msgid "Materials" msgstr "材料" @@ -2984,7 +3039,7 @@ msgid "Successfully exported material to %1" msgstr "成功导出材料至: %1" #: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:766 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 msgctxt "@title:window" msgid "Add Printer" msgstr "新增打印机" @@ -3004,6 +3059,11 @@ msgctxt "@title:window" msgid "About Cura" msgstr "关于 Cura" +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43 +msgctxt "@label" +msgid "version: %1" +msgstr "版本: %1" + #: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." @@ -3096,12 +3156,17 @@ msgctxt "@label" msgid "Polygon clipping library" msgstr "多边形剪辑库" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Python HTTP 库" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 msgctxt "@label" msgid "Font" msgstr "字体" -#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 msgctxt "@label" msgid "SVG icons" msgstr "SVG 图标" @@ -3111,7 +3176,12 @@ msgctxt "@label" msgid "Profile:" msgstr "配置文件:" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 +msgctxt "@" +msgid "No Profile Available" +msgstr "没有配置文件可用" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3119,32 +3189,32 @@ msgid "" "Click to open the profile manager." msgstr "某些设置/重写值与存储在配置文件中的值不同。\n\n点击打开配置文件管理器。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:152 msgctxt "@label:textbox" msgid "Search..." msgstr "搜索..." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "将值复制到所有挤出机" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 msgctxt "@action:menu" msgid "Hide this setting" msgstr "隐藏此设置" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "不再显示此设置" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:505 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "保持此设置可见" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:524 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 msgctxt "@action:menu" msgid "Configure setting visiblity..." msgstr "配置设置可见性..." @@ -3193,54 +3263,71 @@ msgid "" "Click to restore the calculated value." msgstr "此设置通常可被自动计算,但其当前已被绝对定义。\n\n单击以恢复自动计算的值。" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 msgctxt "@label:listbox" msgid "Print Setup" msgstr "打印设置" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:118 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 msgctxt "@label:listbox" msgid "" "Print Setup disabled\n" "G-code files cannot be modified" msgstr "打印设置已禁用\nG-code 文件无法被修改" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:326 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +msgctxt "@label Hours and minutes" msgid "00h 00min" msgstr "00 小时 00 分" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:344 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 msgctxt "@tooltip" -msgid "Time information" -msgstr "时间信息" +msgid "Time specification
    " +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 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 msgctxt "@label" +msgid "Cost specification" +msgstr "成本规定" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1m" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +msgctxt "@label" +msgid "Total:" +msgstr "总计:" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +msgctxt "@label Print estimates: m for meters, g for grams, %4 is currency and %3 is print cost" msgid "%1m / ~ %2g / ~ %4 %3" msgstr "%1m / ~ %2g / ~ %4 %3" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:414 -msgctxt "@label" +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +msgctxt "@label Print estimates: m for meters, g for grams" msgid "%1m / ~ %2g" msgstr "%1m / ~ %2g" -#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 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:481 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:591 msgctxt "@tooltip" msgid "Custom Print Setup

    Print with finegrained control over every last bit of the slicing process." msgstr "自定义打印设置
    对切片过程中的每一个细节进行精细控制。" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 msgctxt "@title:menuitem %1 is the automatically selected material" msgid "Automatic: %1" msgstr "自动:%1" @@ -3250,7 +3337,7 @@ msgctxt "@title:menu menubar:toplevel" msgid "&View" msgstr "视图(&V)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" msgid "Automatic: %1" msgstr "自动: %1" @@ -3277,13 +3364,13 @@ msgctxt "@title:menu menubar:file" msgid "Open &Recent" msgstr "打开最近使用过的文件(&R)" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:33 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 msgctxt "@info:status" msgid "No printer connected" msgstr "没有连接打印机" #: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 msgctxt "@label" msgid "Extruder" msgstr "挤出机" @@ -3298,306 +3385,346 @@ msgctxt "@tooltip" msgid "The current temperature of this extruder." msgstr "该挤出机的当前温度。" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:188 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "该挤出机中材料的颜色。" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:219 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "该挤出机中的材料。" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "该挤出机所使用的喷嘴。" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:282 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 msgctxt "@label" msgid "Build plate" msgstr "打印平台" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:311 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 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:343 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:344 msgctxt "@tooltip" msgid "The current temperature of the heated bed." msgstr "热床当前温度。" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:422 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the bed to." msgstr "热床的预热温度。" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "取消" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:617 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 msgctxt "@button" msgid "Pre-heat" msgstr "预热" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:644 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 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:677 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:703 +msgctxt "@label" +msgid "Printer control" +msgstr "打印机控制" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 +msgctxt "@label" +msgid "Jog Position" +msgstr "垛齐位置" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735 +msgctxt "@label" +msgid "X/Y" +msgstr "X/Y" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842 +msgctxt "@label" +msgid "Z" +msgstr "Z" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 +msgctxt "@label" +msgid "Jog Distance" +msgstr "垛齐距离" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018 msgctxt "@label" msgid "Active print" msgstr "正在打印" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:682 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 msgctxt "@label" msgid "Job Name" msgstr "作业名" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 msgctxt "@label" msgid "Printing Time" msgstr "打印时间" -#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:694 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1035 msgctxt "@label" msgid "Estimated time left" msgstr "预计剩余时间" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 msgctxt "@action:inmenu" msgid "Toggle Fu&ll Screen" msgstr "切换完整界面(&F)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:74 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "撤销(&U)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 msgctxt "@action:inmenu menubar:edit" msgid "&Redo" msgstr "重做(&R)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 msgctxt "@action:inmenu menubar:file" msgid "&Quit" msgstr "退出(&Q)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +msgctxt "@action:inmenu menubar:view" +msgid "&Reset camera position" +msgstr "重置摄像头位置(&R)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "配置 Cura…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 msgctxt "@action:inmenu menubar:printer" msgid "&Add Printer..." msgstr "新增打印机(&A)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:115 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 msgctxt "@action:inmenu menubar:printer" msgid "Manage Pr&inters..." msgstr "管理打印机(&I)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "管理材料…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:130 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 msgctxt "@action:inmenu menubar:profile" msgid "&Update profile with current settings/overrides" msgstr "使用当前设置 / 重写值更新配置文件(&U)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:138 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 msgctxt "@action:inmenu menubar:profile" msgid "&Discard current changes" msgstr "舍弃当前更改(&D)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 msgctxt "@action:inmenu menubar:profile" msgid "&Create profile from current settings/overrides..." msgstr "从当前设置 / 重写值创建配置文件(&C)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:156 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 msgctxt "@action:inmenu menubar:profile" msgid "Manage Profiles..." msgstr "管理配置文件.." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 msgctxt "@action:inmenu menubar:help" msgid "Show Online &Documentation" msgstr "显示在线文档(&D)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:171 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 msgctxt "@action:inmenu menubar:help" msgid "Report a &Bug" msgstr "BUG 反馈(&B)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:179 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 msgctxt "@action:inmenu menubar:help" msgid "&About..." msgstr "关于(&A)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 msgctxt "@action:inmenu menubar:edit" msgid "Delete &Selected Model" msgid_plural "Delete &Selected Models" msgstr[0] "删除所选模型(&S)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:196 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" msgstr[0] "居中所选模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:205 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" msgstr[0] "复制所选模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "删除模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:222 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 msgctxt "@action:inmenu" msgid "Ce&nter Model on Platform" msgstr "使模型居于平台中央(&N)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:228 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 msgctxt "@action:inmenu menubar:edit" msgid "&Group Models" msgstr "绑定模型(&G)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:238 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 msgctxt "@action:inmenu menubar:edit" msgid "Ungroup Models" msgstr "拆分模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:248 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 msgctxt "@action:inmenu menubar:edit" msgid "&Merge Models" msgstr "合并模型(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "复制模型…(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:265 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "&Select All Models" msgstr "选择所有模型(&S)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:275 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 msgctxt "@action:inmenu menubar:edit" msgid "&Clear Build Plate" msgstr "清空打印平台(&C)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 msgctxt "@action:inmenu menubar:file" msgid "Re&load All Models" msgstr "重新载入所有模型(&L)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:294 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 msgctxt "@action:inmenu menubar:edit" msgid "Arrange All Models" msgstr "编位所有的模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 msgctxt "@action:inmenu menubar:edit" msgid "Arrange Selection" msgstr "为所选模型编位" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:309 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model Positions" msgstr "复位所有模型的位置" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 msgctxt "@action:inmenu menubar:edit" msgid "Reset All Model &Transformations" msgstr "复位所有模型的变动(&T)" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:323 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 msgctxt "@action:inmenu menubar:file" msgid "&Open File(s)..." msgstr "打开文件(&O)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:331 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 msgctxt "@action:inmenu menubar:file" msgid "&New Project..." msgstr "新建项目(&N)…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 msgctxt "@action:inmenu menubar:help" msgid "Show Engine &Log..." msgstr "显示引擎日志(&L)..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:346 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 msgctxt "@action:inmenu menubar:help" msgid "Show Configuration Folder" msgstr "显示配置文件夹" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "配置设定可见性..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:26 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +msgctxt "@action:menu" +msgid "Browse plugins..." +msgstr "浏览插件..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +msgctxt "@action:menu" +msgid "Installed plugins..." +msgstr "已安装插件..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 msgctxt "@label:PrintjobStatus" msgid "Please load a 3D model" msgstr "请载入一个 3D 模型" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 msgctxt "@label:PrintjobStatus" msgid "Ready to slice" msgstr "切片已准备就绪" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 msgctxt "@label:PrintjobStatus" msgid "Slicing..." msgstr "正在切片..." -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 msgctxt "@label:PrintjobStatus %1 is target operation" msgid "Ready to %1" msgstr "%1 已准备就绪" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 msgctxt "@label:PrintjobStatus" msgid "Unable to Slice" msgstr "无法切片" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 msgctxt "@label:PrintjobStatus" msgid "Slicing unavailable" msgstr "切片不可用" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Prepare" msgstr "准备" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 msgctxt "@label:Printjob" msgid "Cancel" msgstr "取消" -#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:287 +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 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:593 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:620 msgctxt "@title:window" msgid "Open file(s)" msgstr "打开文件" @@ -3614,112 +3741,117 @@ msgstr "导入所有模型" #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 msgctxt "@title:window" -msgid "Cura" -msgstr "Cura" +msgid "Ultimaker Cura" +msgstr "Ultimaker Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 msgctxt "@title:menu menubar:toplevel" msgid "&File" msgstr "文件(&F)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 msgctxt "@action:inmenu menubar:file" msgid "&Save Selection to File" msgstr "保存到文件(&S)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:111 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 msgctxt "@title:menu menubar:file" msgid "Save &As..." msgstr "另存为(&A)…" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:122 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 msgctxt "@title:menu menubar:file" msgid "Save project" msgstr "保存项目" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 msgctxt "@title:menu menubar:toplevel" msgid "&Edit" msgstr "编辑(&E)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:162 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 msgctxt "@title:menu" msgid "&View" msgstr "视图(&V)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:167 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 msgctxt "@title:menu" msgid "&Settings" msgstr "设置(&S)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:169 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 msgctxt "@title:menu menubar:toplevel" msgid "&Printer" msgstr "打印机(&P)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:179 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:191 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 msgctxt "@title:menu" msgid "&Material" msgstr "材料(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:192 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 msgctxt "@title:menu" msgid "&Profile" msgstr "配置文件(&P)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "设为主要挤出机" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:202 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 msgctxt "@title:menu menubar:toplevel" msgid "E&xtensions" msgstr "扩展(&X)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:235 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +msgctxt "@title:menu menubar:toplevel" +msgid "P&lugins" +msgstr "插件" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 msgctxt "@title:menu menubar:toplevel" msgid "P&references" msgstr "偏好设置(&R)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:243 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 msgctxt "@title:menu menubar:toplevel" msgid "&Help" msgstr "帮助(&H)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:325 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 msgctxt "@action:button" msgid "Open File" msgstr "打开文件" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 msgctxt "@title:tab" msgid "Settings" msgstr "设置" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:475 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 msgctxt "@title:window" msgid "New project" msgstr "新建项目" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 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:694 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:721 msgctxt "@window:title" msgid "Install Plugin" msgstr "安装插件" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:701 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 msgctxt "@title:window" msgid "Open File(s)" msgstr "打开文件" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:704 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 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 文件,请仅选择一个。" @@ -3729,102 +3861,112 @@ msgctxt "@title:window" msgid "Save Project" msgstr "保存项目" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 msgctxt "@action:label" msgid "Extruder %1" msgstr "挤出机 %1" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & 材料" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:240 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:242 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "保存时不再显示项目摘要" -#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:262 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 msgctxt "@action:button" msgid "Save" msgstr "保存" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:65 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 msgctxt "@title:tab" msgid "Prepare" msgstr "准备" -#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:79 +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 msgctxt "@title:tab" msgid "Monitor" msgstr "监控" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:50 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 msgctxt "@label" msgid "Layer Height" msgstr "层高" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:62 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +msgctxt "@tooltip" +msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +msgstr "自定义配置文件目前处于活动状态。 如要启用质量滑块,请在“自定义”选项卡中选择一个默认质量配置文件" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 msgctxt "@label" msgid "Print Speed" msgstr "打印速度" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:73 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 msgctxt "@label" msgid "Slower" msgstr "更慢" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:85 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 msgctxt "@label" msgid "Faster" msgstr "更快" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:416 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +msgctxt "@tooltip" +msgid "You have modified some profile settings. If you want to change these go to custom mode." +msgstr "您已修改部分配置文件设置。 如果您想对其进行更改,请转至自定义模式。" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 msgctxt "@label" msgid "Infill" msgstr "填充" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 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:602 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:645 msgctxt "@label" msgid "Enable gradual" msgstr "启用渐层" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:668 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 msgctxt "@label" msgid "Generate Support" msgstr "生成支撑" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:702 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 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:718 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:764 msgctxt "@label" msgid "Support Extruder" msgstr "支撑用挤出机" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:769 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 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 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:839 msgctxt "@label" msgid "Build Plate Adhesion" msgstr "打印平台附着" -#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:843 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 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:883 +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:934 msgctxt "@label" msgid "Need help improving your prints?
    Read the Ultimaker Troubleshooting Guides" msgstr "需要帮助改善您的打印?阅读 Ultimaker 故障排除指南" @@ -3840,17 +3982,17 @@ msgctxt "@title:window" msgid "Open project file" msgstr "打开项目文件" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 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 "这是一个 Cura 项目文件。您想将其作为一个项目打开还是从中导入模型?" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:95 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 msgctxt "@action:button" msgid "Open as project" msgstr "作为项目打开" -#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 msgctxt "@action:button" msgid "Import models" msgstr "导入模型" @@ -3860,17 +4002,17 @@ msgctxt "@title:window" msgid "Engine Log" msgstr "引擎日志" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 msgctxt "@label" msgid "Material" msgstr "材料" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:374 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 msgctxt "@label" -msgid "Check material compatibility" -msgstr "检查材料兼容性" +msgid "Check compatibility" +msgstr "检查兼容性" -#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 msgctxt "@tooltip" msgid "Click to check the material compatibility on Ultimaker.com." msgstr "点击查看 Ultimaker.com 上的材料兼容情况。" @@ -3985,11 +4127,6 @@ msgctxt "name" msgid "UM3 Network Connection" msgstr "UM3 网络连接" -#: CuraPrintClusterUpload/plugin.json -msgctxt "name" -msgid "UM3 Network Connection (Cluster)" -msgstr "UM3 网络连接(群集)" - #: FirmwareUpdateChecker/plugin.json msgctxt "description" msgid "Checks for firmware updates." @@ -4010,6 +4147,16 @@ msgctxt "name" msgid "SolidWorks Integration" msgstr "SolidWorks 集成" +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "提供仿真视图" + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "仿真视图" + #: PostProcessingPlugin/plugin.json msgctxt "description" msgid "Extension that allows for user created scripts for post processing" @@ -4070,16 +4217,6 @@ msgctxt "name" msgid "GCode Profile Reader" msgstr "GCode 配置文件读取器" -#: LayerView/plugin.json -msgctxt "description" -msgid "Provides the Layer view." -msgstr "提供分层视图。" - -#: LayerView/plugin.json -msgctxt "name" -msgid "Layer View" -msgstr "分层视图" - #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -4100,6 +4237,16 @@ msgctxt "name" msgid "Version Upgrade 2.7 to 3.0" msgstr "版本自 2.7 升级到 3.0" +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." +msgstr "将配置从 Cura 3.0 版本升级至 3.1 版本。" + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.0 to 3.1" +msgstr "版本自 3.0 升级到 3.1" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -4160,6 +4307,16 @@ msgctxt "name" msgid "Per Model Settings Tool" msgstr "单一模型设置工具" +#: cura-siemensnx-plugin/plugin.json +msgctxt "description" +msgid "Helps you to install an 'export to Cura' button in Siemens NX." +msgstr "帮助您在 Siemens NX 中安装一个“导出至 Cura”按钮。" + +#: cura-siemensnx-plugin/plugin.json +msgctxt "name" +msgid "Siemens NX Integration" +msgstr "Siemens NX 集成" + #: 3MFReader/plugin.json msgctxt "description" msgid "Provides support for reading 3MF files." @@ -4220,6 +4377,16 @@ msgctxt "name" msgid "3MF Writer" msgstr "3MF 写入器" +#: UserAgreementPlugin/plugin.json +msgctxt "description" +msgid "Ask the user once if he/she agrees with our license" +msgstr "询问用户一次是否同意我们的许可" + +#: UserAgreementPlugin/plugin.json +msgctxt "name" +msgid "UserAgreement" +msgstr "用户协议" + #: UltimakerMachineActions/plugin.json msgctxt "description" msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc)" @@ -4240,6 +4407,137 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura 配置文件读取器" +#~ msgctxt "@label:status" +#~ msgid "Blocked" +#~ msgstr "冻结操作" + +#~ msgctxt "@label:status" +#~ msgid "Can't start print" +#~ msgstr "不能开始打印" + +#~ msgctxt "@action:button" +#~ msgid "Open Connect.." +#~ msgstr "打开 Connect" + +#~ msgctxt "@info:title" +#~ msgid "Print Details" +#~ msgstr "打印品详细信息" + +#~ 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 "为确保您的 {machine_name} 具备最新功能,建议定期更新固件。 更新可在 {machine_name} 上(连接至网络时)或通过 USB 进行。" + +msgctxt "@item:inlistbox" +msgid "Layer view" +msgstr "分层视图" + +msgctxt "@info:title" +msgid "Layer View" +msgstr "分层视图" + +#~ msgctxt "@menuitem" +#~ msgid "Browse plugins" +#~ msgstr "浏览插件" + +#~ msgctxt "@info:title" +#~ msgid "Export Details" +#~ msgstr "导出详细信息" + +#~ 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 "" +#~ "

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

    \n" +#~ "

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

    " + +#~ msgctxt "@action:button" +#~ msgid "Open Web Page" +#~ msgstr "打开网页" + +#~ msgctxt "@action:button" +#~ msgid "Ok" +#~ msgstr "确定" + +#~ msgctxt "@label" +#~ msgid "This printer is not set up to host a group of connected Ultimaker 3 printers" +#~ msgstr "这台打印机未设置为运行一组连接的 Ultimaker 3 打印机" + +#~ msgctxt "@label" +#~ msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" +#~ msgstr "这台打印机是一组 %1 台已连接 Ultimaker 3 打印机的主机" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "准备" + +#~ msgctxt "@label" +#~ msgid "Completed on: " +#~ msgstr "完成时间: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Opens the print jobs page with your default web browser." +#~ msgstr "使用默认 Web 浏览器打开打印作业页面。" + +#~ msgctxt "@label" +#~ msgid "PRINTER GROUP" +#~ msgstr "打印机组" + +#~ msgctxt "@action:warning" +#~ msgid "Loading a project will clear all models on the buildplate" +#~ msgstr "加载项目将清除打印平台上的所有模型" + +#~ 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 "" +#~ " 插件包含一个许可。\n" +#~ "您需要接受此许可才能安装此插件。\n" +#~ "是否同意下列条款?" + +#~ msgctxt "@label" +#~ msgid "00h 00min" +#~ msgstr "00 小时 00 分" + +#~ msgctxt "@tooltip" +#~ msgid "Time information" +#~ msgstr "时间信息" + +#~ msgctxt "@description" +#~ msgid "Print time" +#~ msgstr "打印时间" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g / ~ %4 %3" +#~ msgstr "%1m / ~ %2g / ~ %4 %3" + +#~ msgctxt "@label" +#~ msgid "%1m / ~ %2g" +#~ msgstr "%1m / ~ %2g" + +#~ msgctxt "@title:window" +#~ msgid "Cura" +#~ msgstr "Cura" + +#~ msgctxt "@label" +#~ msgid "Check material compatibility" +#~ msgstr "检查材料兼容性" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection (Cluster)" +#~ msgstr "UM3 网络连接(群集)" + +#~ msgctxt "description" +#~ msgid "Provides the Layer view." +#~ msgstr "提供分层视图。" + +msgctxt "name" +msgid "Layer View" +msgstr "分层视图" + #~ msgctxt "@item:inlistbox" #~ msgid "X-Ray" #~ msgstr "透视" @@ -4559,9 +4857,9 @@ msgstr "Cura 配置文件读取器" #~ msgid "Provides support for importing profiles from g-code files." #~ msgstr "提供了从 GCode 文件中导入配置文件的支持。" -#~ msgctxt "@label" -#~ msgid "Layer View" -#~ msgstr "分层视图" +msgctxt "@label" +msgid "Layer View" +msgstr "分层视图" #~ msgctxt "@info:whatsthis" #~ msgid "Provides the Layer view." diff --git a/resources/i18n/zh_CN/fdmextruder.def.json.po b/resources/i18n/zh_CN/fdmextruder.def.json.po index 49c7430422..15166711f2 100644 --- a/resources/i18n/zh_CN/fdmextruder.def.json.po +++ b/resources/i18n/zh_CN/fdmextruder.def.json.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: PCDotFan , Bothof \n" "Language: zh_CN\n" diff --git a/resources/i18n/zh_CN/fdmprinter.def.json.po b/resources/i18n/zh_CN/fdmprinter.def.json.po index 78650174db..76bb1c09e7 100644 --- a/resources/i18n/zh_CN/fdmprinter.def.json.po +++ b/resources/i18n/zh_CN/fdmprinter.def.json.po @@ -2,13 +2,13 @@ # 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 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" +"Report-Msgid-Bugs-To: http://github.com/ultimaker/uranium\n" +"POT-Creation-Date: 2017-11-21 16:58+0000\n" +"PO-Revision-Date: 2017-11-30 13:05+0100\n" "Last-Translator: Bothof \n" "Language-Team: PCDotFan , Bothof \n" "Language: zh_CN\n" @@ -607,6 +607,31 @@ msgctxt "layer_height_0 description" msgid "The height of the initial layer in mm. A thicker initial layer makes adhesion to the build plate easier." msgstr "起始层高(以毫米为单位)。起始层越厚,与打印平台的粘着越轻松。" +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "切片公差" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "How to slice layers with diagonal surfaces. The areas of a layer can be generated based on where the middle of the layer intersects the surface (Middle). Alternatively each layer can have the areas which fall inside of the volume throughout the height of the layer (Exclusive) or a layer has the areas which fall inside anywhere within the layer (Inclusive). Exclusive retains the most details, Inclusive makes for the best fit and Middle takes the least time to process." +msgstr "如何对带有对角线表面的层进行切片。层面积可以根据层的中心与表面(中间)相交的位置生成。或者每一层的面积可以为落在整个层高度中成形体积内的面积 (Exclusive),或者为落在层中任何位置的面积 (Inclusive)。Exclusive 保留大部分细节,Inclusive 可实现最佳匹配,而 Middle 需要的处理的时间最少。" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "Middle" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "Exclusive" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "Inclusive" + #: fdmprinter.def.json msgctxt "line_width label" msgid "Line Width" @@ -757,6 +782,16 @@ 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" @@ -769,7 +804,7 @@ msgstr "用于打印外壁的挤出机组。 用于多重挤出。" #: fdmprinter.def.json msgctxt "wall_x_extruder_nr label" -msgid "Inner Walls Extruder" +msgid "Inner Wall Extruder" msgstr "内壁挤出机" #: fdmprinter.def.json @@ -1202,6 +1237,106 @@ 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 "ironing_enabled label" +msgid "Enable Ironing" +msgstr "启用熨平" + +#: fdmprinter.def.json +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" +msgstr "熨平图案" + +#: fdmprinter.def.json +msgctxt "ironing_pattern description" +msgid "The pattern to use for ironing top surfaces." +msgstr "用于熨平顶部表面的图案。" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option concentric" +msgid "Concentric" +msgstr "同心" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option zigzag" +msgid "Zig Zag" +msgstr "锯齿形" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing label" +msgid "Ironing Line Spacing" +msgstr "熨平走线间距" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing description" +msgid "The distance between the lines of ironing." +msgstr "熨平走线之间的距离。" + +#: fdmprinter.def.json +msgctxt "ironing_flow label" +msgid "Ironing Flow" +msgstr "熨平流量" + +#: fdmprinter.def.json +msgctxt "ironing_flow description" +msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." +msgstr "熨平期间相对于正常皮肤走线的挤出材料量。 保持喷嘴填充状态有助于填充顶层表面的一些缝隙,但如填充过多则会导致表面上过度挤出和光点。" + +#: fdmprinter.def.json +msgctxt "ironing_inset label" +msgid "Ironing Inset" +msgstr "熨平嵌入" + +#: fdmprinter.def.json +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 "infill label" msgid "Infill" @@ -1249,8 +1384,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, 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 "打印填充材料的图案。 线条和锯齿形填充在交替层上交换方向,从而降低材料成本。 网格、三角形、立方体、八角形、四面体和同心图案在每层完整打印。 立方体、四面体和八角形填充随每层变化,以在各个方向提供更均衡的强度分布。" +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, tri-hexagon, cubic, octet, quarter cubic, cross 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" @@ -1267,6 +1402,11 @@ msgctxt "infill_pattern option triangles" msgid "Triangles" msgstr "三角形" +#: fdmprinter.def.json +msgctxt "infill_pattern option trihexagon" +msgid "Tri-Hexagon" +msgstr "内六角" + #: fdmprinter.def.json msgctxt "infill_pattern option cubic" msgid "Cubic" @@ -1319,8 +1459,8 @@ 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 "使用沿内壁形状的走线连接填充图案与内壁相接的各端。 启用此设置会使填充更好地粘着在壁上,减少填充物效果对垂直表面质量的影响。 禁用此设置可减少使用的材料量。" +msgid "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." +msgstr "使用沿内壁形状的走线连接填充图案与内壁相接的各端。启用此设置会使填充更好地粘着在壁上,减少填充物效果对垂直表面质量的影响。禁用此设置可减少使用的材料量。" #: fdmprinter.def.json msgctxt "infill_angles label" @@ -1332,6 +1472,26 @@ msgctxt "infill_angles description" msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the traditional default angles (45 and 135 degrees for the lines and zig zag patterns and 45 degrees for all other patterns)." msgstr "要使用的整数走线方向列表。 列表中的元素随层的进度依次使用,当达到列表末尾时,它将从头开始。 列表项以逗号分隔,整个列表包含在方括号中。 默认是一个空列表,即意味着使用传统的默认角度(线条和锯齿形图案为 45 和 135 度,其他所有图案为 45 度)。" +#: fdmprinter.def.json +msgctxt "infill_offset_x label" +msgid "Infill X Offset" +msgstr "填充 X 轴偏移量" + +#: fdmprinter.def.json +msgctxt "infill_offset_x description" +msgid "The infill pattern is offset this distance along the X axis." +msgstr "填充图案沿 X 轴偏移此距离。" + +#: fdmprinter.def.json +msgctxt "infill_offset_y label" +msgid "Infill Y Offset" +msgstr "填充 Y 轴偏移量" + +#: fdmprinter.def.json +msgctxt "infill_offset_y description" +msgid "The infill pattern is offset this distance along the Y axis." +msgstr "填充图案沿 Y 轴偏移此距离。" + #: fdmprinter.def.json msgctxt "sub_div_rad_add label" msgid "Cubic Subdivision Shell" @@ -1642,6 +1802,26 @@ msgctxt "material_diameter description" msgid "Adjusts the diameter of the filament used. Match this value with the diameter of the used filament." msgstr "调整所用耗材的直径。 将此值与所用耗材的直径匹配。" +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency label" +msgid "Adhesion Tendency" +msgstr "附着倾向" + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency description" +msgid "Surface adhesion tendency." +msgstr "表面附着倾向。" + +#: fdmprinter.def.json +msgctxt "material_surface_energy label" +msgid "Surface Energy" +msgstr "表面能" + +#: fdmprinter.def.json +msgctxt "material_surface_energy description" +msgid "Surface energy." +msgstr "表面能。" + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -2832,36 +3012,6 @@ msgctxt "support_connect_zigzags description" msgid "Connect the ZigZags. This will increase the strength of the zig zag support structure." msgstr "连接锯齿形。 这将增加锯齿形支撑结构的强度。" -#: fdmprinter.def.json -msgctxt "support_skip_some_zags label" -msgid "Break Up Support In Chunks" -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 "跳过部分支撑线连接,让支撑结构更容易脱离。 此设置适用于锯齿形支撑结构填充图案。" - -#: 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 "每隔 N 毫米在支撑线之间略去一个连接,让支撑结构更容易脱离。" - -#: fdmprinter.def.json -msgctxt "support_zag_skip_count label" -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 away." -msgstr "每隔 N 个连接线跳过一个连接,让支撑结构更容易脱离。" - #: fdmprinter.def.json msgctxt "support_infill_rate label" msgid "Support Density" @@ -3401,8 +3551,8 @@ msgstr "Skirt 距离" 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 走线将从此距离向外延伸。" +"This is the minimum distance. Multiple skirt lines will extend outwards from this distance." +msgstr "skirt 和打印第一层之间的水平距离。\n这是最小距离。多个 skirt 走线将从此距离向外延伸。" #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -3444,26 +3594,6 @@ 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 "起始层 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 "此值为挤出机与第一层正常高度之间的偏移量。 该值可以为正(升起),也可以为负(降下)。 如果挤出机略微升起,部分耗材类型会与打印平台实现更好的粘着。" - -#: fdmprinter.def.json -msgctxt "z_offset_taper_layers label" -msgid "Z Offset Taper Layers" -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 "当非零时,Z 偏移在多个层中逐步降至零。 值为 0 则表示,在打印品的各个层中 Z 偏移量保持不变。" - #: fdmprinter.def.json msgctxt "raft_margin label" msgid "Raft Extra Margin" @@ -3481,8 +3611,8 @@ 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 "该设置控制 Raft 轮廓中的内角呈圆形的程度。 内向角被设置为半圆形,半径等于此处的值。 此设置还会移除 raft 轮廓中小于此半圆形的孔。" +msgid "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." +msgstr "该设置控制 Raft 轮廓中的内角呈圆形的程度。内向角被设置为半圆形,半径等于此处的值。此设置还会移除 raft 轮廓中小于此半圆形的孔。" #: fdmprinter.def.json msgctxt "raft_airgap label" @@ -3954,6 +4084,16 @@ msgctxt "meshfix_keep_open_polygons description" msgid "Normally Cura tries to stitch up small holes in the mesh and remove parts of a layer with big holes. Enabling this option keeps those parts which cannot be stitched. This option should be used as a last resort option when everything else fails to produce proper GCode." msgstr "一般情况下,Cura 会尝试缝合网格中的小孔,并移除有大孔的部分层。 启用此选项将保留那些无法缝合的部分。 当其他所有方法都无法产生正确的 GCode 时,该选项应该被用作最后手段。" +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "最大分辨率" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "走线部分在切片后的最小尺寸。如果提高此值,网格的分辨率将降低。这可让打印机保持处理 g-code 所需的速度,并将通过移除无法处理的网格细节提高切片速度。" + #: fdmprinter.def.json msgctxt "multiple_mesh_overlap label" msgid "Merged Meshes Overlap" @@ -3984,6 +4124,16 @@ msgctxt "alternate_carve_order description" msgid "Switch to which mesh intersecting volumes will belong with every layer, so that the overlapping meshes become interwoven. Turning this setting off will cause one of the meshes to obtain all of the volume in the overlap, while it is removed from the other meshes." msgstr "切换为与每个层相交的网格相交体积,以便重叠的网格交织在一起。 关闭此设置将使其中一个网格获得重叠中的所有体积,同时将其从其他网格中移除。" +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers label" +msgid "Remove Empty First Layers" +msgstr "移除空白第一层" + +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers description" +msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." +msgstr "移除第一个打印层下方的空白层(如果存在)。如果“切片公差”设置被设为“独占”或“中间”,禁用此设置可能导致空白第一层。" + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4189,6 +4339,36 @@ 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 "support_skip_some_zags label" +msgid "Break Up Support In Chunks" +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 "跳过部分支撑线连接,让支撑结构更容易脱离。 此设置适用于锯齿形支撑结构填充图案。" + +#: 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 "每隔 N 毫米在支撑线之间略去一个连接,让支撑结构更容易脱离。" + +#: fdmprinter.def.json +msgctxt "support_zag_skip_count label" +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 away." +msgstr "每隔 N 个连接线跳过一个连接,让支撑结构更容易脱离。" + #: fdmprinter.def.json msgctxt "draft_shield_enabled label" msgid "Enable Draft Shield" @@ -4479,6 +4659,26 @@ msgctxt "magic_fuzzy_skin_point_dist description" msgid "The average distance between the random points introduced on each line segment. Note that the original points of the polygon are discarded, so a high smoothness results in a reduction of the resolution. This value must be higher than half the Fuzzy Skin Thickness." msgstr "在每个走线部分引入的随机点之间的平均距离。 注意,多边形的原始点被舍弃,因此高平滑度导致分辨率降低。 该值必须大于模糊皮肤厚度的一半。" +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset label" +msgid "Flow rate compensation max extrusion offset" +msgstr "流量补偿最大挤出偏移值" + +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset description" +msgid "The maximum distance in mm to compensate." +msgstr "以毫米为单位的最大补偿距离。" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor label" +msgid "Flow rate compensation factor" +msgstr "流量补偿因子" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor description" +msgid "The multiplication factor for the flow rate -> distance translation." +msgstr "流量的倍增因子-> 距离转换。" + #: fdmprinter.def.json msgctxt "wireframe_enabled label" msgid "Wire Printing" @@ -4736,106 +4936,6 @@ msgctxt "wireframe_nozzle_clearance description" msgid "Distance between the nozzle and horizontally downward lines. Larger clearance results in diagonally downward lines with a less steep angle, which in turn results in less upward connections with the next layer. Only applies to Wire Printing." msgstr "喷嘴和水平下行线之间的距离。 较大的间隙会让斜下行线角度较平缓,进而使第二层的上行连接较少。 仅应用于单线打印。" -#: fdmprinter.def.json -msgctxt "ironing_enabled label" -msgid "Enable Ironing" -msgstr "启用熨平" - -#: fdmprinter.def.json -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" -msgstr "熨平图案" - -#: fdmprinter.def.json -msgctxt "ironing_pattern description" -msgid "The pattern to use for ironing top surfaces." -msgstr "用于熨平顶部表面的图案。" - -#: fdmprinter.def.json -msgctxt "ironing_pattern option concentric" -msgid "Concentric" -msgstr "同心" - -#: fdmprinter.def.json -msgctxt "ironing_pattern option zigzag" -msgid "Zig Zag" -msgstr "锯齿形" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing label" -msgid "Ironing Line Spacing" -msgstr "熨平走线间距" - -#: fdmprinter.def.json -msgctxt "ironing_line_spacing description" -msgid "The distance between the lines of ironing." -msgstr "熨平走线之间的距离。" - -#: fdmprinter.def.json -msgctxt "ironing_flow label" -msgid "Ironing Flow" -msgstr "熨平流量" - -#: fdmprinter.def.json -msgctxt "ironing_flow description" -msgid "The amount of material, relative to a normal skin line, to extrude during ironing. Keeping the nozzle filled helps filling some of the crevices of the top surface, but too much results in overextrusion and blips on the side of the surface." -msgstr "熨平期间相对于正常皮肤走线的挤出材料量。 保持喷嘴填充状态有助于填充顶层表面的一些缝隙,但如填充过多则会导致表面上过度挤出和光点。" - -#: fdmprinter.def.json -msgctxt "ironing_inset label" -msgid "Ironing Inset" -msgstr "熨平嵌入" - -#: fdmprinter.def.json -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" @@ -4896,13 +4996,45 @@ 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_x_extruder_nr label" +#~ msgid "Inner Walls 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, 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 "打印填充材料的图案。 线条和锯齿形填充在交替层上交换方向,从而降低材料成本。 网格、三角形、立方体、八角形、四面体和同心图案在每层完整打印。 立方体、四面体和八角形填充随每层变化,以在各个方向提供更均衡的强度分布。" + +#~ 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 "使用沿内壁形状的走线连接填充图案与内壁相接的各端。 启用此设置会使填充更好地粘着在壁上,减少填充物效果对垂直表面质量的影响。 禁用此设置可减少使用的材料量。" + +#~ 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 走线将从此距离向外延伸。" + +#~ msgctxt "z_offset_layer_0 label" +#~ msgid "Initial Layer Z Offset" +#~ msgstr "起始层 Z 偏移量" + +#~ 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 "此值为挤出机与第一层正常高度之间的偏移量。 该值可以为正(升起),也可以为负(降下)。 如果挤出机略微升起,部分耗材类型会与打印平台实现更好的粘着。" + +#~ msgctxt "z_offset_taper_layers label" +#~ msgid "Z Offset Taper Layers" +#~ msgstr "Z 偏移锥形层" + +#~ 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 "当非零时,Z 偏移在多个层中逐步降至零。 值为 0 则表示,在打印品的各个层中 Z 偏移量保持不变。" + +#~ 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 "该设置控制 Raft 轮廓中的内角呈圆形的程度。 内向角被设置为半圆形,半径等于此处的值。 此设置还会移除 raft 轮廓中小于此半圆形的孔。" #~ 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." @@ -4998,4 +5130,4 @@ msgstr "在将模型从文件中载入时应用在模型上的转换矩阵。" #~ msgctxt "machine_gcode_flavor option RepRap (Volumatric)" #~ msgid "RepRap (Volumetric)" -#~ msgstr "RepRap (Volumetric)" \ No newline at end of file +#~ msgstr "RepRap (Volumetric)" diff --git a/resources/i18n/zh_TW/cura.po b/resources/i18n/zh_TW/cura.po new file mode 100644 index 0000000000..2b000890f5 --- /dev/null +++ b/resources/i18n/zh_TW/cura.po @@ -0,0 +1,4901 @@ +# 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 3.1\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" +"PO-Revision-Date: 2017-11-28 23:48+0800\n" +"Last-Translator: Zhang Heh Ji \n" +"Language-Team: TEAM\n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 2.0.4\n" + +#: /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 view" +msgstr "透視檢視" + +#: /home/ruben/Projects/Cura/plugins/X3DReader/__init__.py:13 +msgctxt "@item:inlistbox" +msgid "X3D File" +msgstr "X3D 檔案" + +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/__init__.py:16 +msgctxt "@item:inlistbox" +msgid "GCode File" +msgstr "GCode 檔案" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:65 +msgctxt "@action:button" +msgid "Print with Doodle3D WiFi-Box" +msgstr "使用 Doodle3D 無線網路盒列印" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:66 +msgctxt "@properties:tooltip" +msgid "Print with Doodle3D WiFi-Box" +msgstr "使用 Doodle3D 無線網路盒列印" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:86 +msgctxt "@info:status" +msgid "Connecting to Doodle3D Connect" +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 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:874 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:646 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:370 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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:376 +#: /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:253 +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 "正在向 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 "無法向 Doodle3D Connect 發送資料。請確認是否有另一項列印作業正在進行?" + +#: /home/ruben/Projects/Cura/plugins/Doodle3D-cura-plugin/Doodle3D/D3DCloudPrintOutputDevicePlugin.py:175 +msgctxt "@info:status" +msgid "Storing data on Doodle3D Connect" +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 "檔案已被傳送到 Doodle3D Connect" + +#: /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 "Open the Doodle3D Connect web interface" +msgstr "開啟 Doodle3D Connect 的網路介面" + +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.py:34 +msgctxt "@item:inmenu" +msgid "Show Changelog" +msgstr "顯示更新日誌" + +#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:20 +msgctxt "@item:inmenu" +msgid "Flatten active settings" +msgstr "合併有效設定" + +#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:32 +msgctxt "@info:status" +msgid "Profile has been flattened & activated." +msgstr "列印參數已被合併並啟用。" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:26 +msgctxt "@item:inmenu" +msgid "USB printing" +msgstr "USB 連線列印" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:27 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print via USB" +msgstr "透過 USB 連線列印" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:28 +msgctxt "@info:tooltip" +msgid "Print via USB" +msgstr "透過 USB 連線列印" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:30 +msgctxt "@info:status" +msgid "Connected via USB" +msgstr "透過 USB 連接" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:154 +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:154 +msgctxt "@info:title" +msgid "Printer Unavailable" +msgstr "印表機無法使用" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:457 +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:457 +msgctxt "@info:title" +msgid "USB Printing" +msgstr "USB 連線列印" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:461 +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:461 +#: /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:945 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1349 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1417 +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." +msgstr "無法更新韌體,因為沒有連接印表機。" + +#: /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 "在 %s 無法找到印表機所需的韌體。" + +#: /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'." +msgid "Save to Removable Drive" +msgstr "儲存至行動裝置" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:24 +#, python-brace-format +msgctxt "@item:inlistbox" +msgid "Save to Removable Drive {0}" +msgstr "儲存到行動裝置 {0}" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:89 +#, python-brace-format +msgctxt "@info:progress Don't translate the XML tags !" +msgid "Saving to Removable Drive {0}" +msgstr "正在儲存到行動裝置 {0}" + +#: /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 Don't translate the XML tags or !" +msgid "Could not save to {0}: {1}" +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 "嘗試寫入到 {device} 時無法找到檔名。" + +#: /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:132 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:692 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:700 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:153 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1358 +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: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." +msgstr "無法卸載 {0},可能有其它程式正在使用行動裝置。" + +#: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/WindowsRemovableDrivePlugin.py:68 +msgctxt "@item:intext" +msgid "Removable Drive" +msgstr "行動裝置" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:109 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:53 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "網路連線列印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:110 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "網路連線列印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:159 +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:159 +msgctxt "@info:title" +msgid "Connection status" +msgstr "連線狀態" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +msgctxt "@info:status" +msgid "" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:160 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:479 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:502 +msgctxt "@info:title" +msgid "Connection Status" +msgstr "連線狀態" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +msgctxt "@action:button" +msgid "Retry" +msgstr "重試" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:161 +msgctxt "@info:tooltip" +msgid "Re-send the access request" +msgstr "重新發送存取請求" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:163 +msgctxt "@info:status" +msgid "Access to the printer accepted" +msgstr "印表機接受了存取請求" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:164 +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:165 +#: /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 "請求存取" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:165 +#: /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 "向印表機發送存取請求" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:385 +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:392 +msgctxt "@info:status" +msgid "Connected over the network." +msgstr "已透過網路連接。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:405 +msgctxt "@info:status" +msgid "Connected over the network. No access to control the printer." +msgstr "已透過網路連接,但沒有印表機的控制權限。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:410 +msgctxt "@info:status" +msgid "Access request was denied on the printer." +msgstr "存取請求被印表機上拒絕。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:413 +msgctxt "@info:status" +msgid "Access request failed due to a timeout." +msgstr "存取請求超時失敗。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:478 +msgctxt "@info:status" +msgid "The connection with the network was lost." +msgstr "網路連接中斷。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:501 +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:666 +#, 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:667 +msgctxt "@info:title" +msgid "Printer Status" +msgstr "印表機狀態" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:691 +#, 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:699 +#, 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:709 +#, python-brace-format +msgctxt "@label" +msgid "Not enough material for spool {0}." +msgstr "線軸 {0} 上沒有足夠的耗材。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:719 +#, 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:733 +#, 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:741 +#, 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:746 +msgctxt "@label" +msgid "Are you sure you wish to print with the selected configuration?" +msgstr "你確定要使用所選設定進行列印嗎?" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:747 +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:753 +msgctxt "@window:title" +msgid "Mismatched configuration" +msgstr "設定不匹配" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:864 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:262 +msgctxt "@info:status" +msgid "" +"Sending new jobs (temporarily) blocked, still sending the previous print job." +msgstr "前一列印作業傳送中,暫停傳送新列印作業。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +msgctxt "@info:status" +msgid "Sending data to printer" +msgstr "正在向印表機發送資料" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:873 +msgctxt "@info:title" +msgid "Sending Data" +msgstr "發送資料中" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:944 +msgctxt "@info:status" +msgid "Unable to send data to printer. Is another job still active?" +msgstr "無法向印表機發送資料。請確認是否有另一項列印作業正在進行?" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1085 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:196 +msgctxt "@label:MonitorStatus" +msgid "Aborting print..." +msgstr "中斷列印..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1091 +msgctxt "@label:MonitorStatus" +msgid "Print aborted. Please check the printer" +msgstr "列印已中斷。請檢查印表機" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1097 +msgctxt "@label:MonitorStatus" +msgid "Pausing print..." +msgstr "暫停列印..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1099 +msgctxt "@label:MonitorStatus" +msgid "Resuming print..." +msgstr "繼續列印..." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1289 +msgctxt "@window:title" +msgid "Sync with your printer" +msgstr "與你的印表機同步" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1291 +msgctxt "@label" +msgid "Would you like to use your current printer configuration in Cura?" +msgstr "你想在 Cura 中使用目前的印表機設定嗎?" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkPrinterOutputDevice.py:1293 +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/NetworkClusterPrinterOutputDevice.py:112 +msgid "" +"This printer is not set up to host a group of connected Ultimaker 3 printers." +msgstr "這台印表機未設定成管理一組連線的 Ultimaker 3 印表機的主機。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:113 +#, 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 "這台印表機是 {count} 台連線的 Ultimaker 3 印表機群組的主機。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:114 +#, python-brace-format +msgid "" +"{printer_name} has finished printing '{job_name}'. Please collect the print " +"and confirm clearing the build plate." +msgstr "" +"{printer_name} 已完成列印 '{job_name}'。請收起列印件並確認清空列印平台。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:115 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:520 +#, 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 "" +"{printer_name} 已為了列印 '{job_name}' 保留。請更改印表機設定配合此列印作業," +"以便開始列印。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:278 +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 "" +"無法傳送新的列印作業:這台印表機尚未設定成管理一組連線的 Ultimaker 3 印表機的" +"主機。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:410 +#, python-brace-format +msgctxt "@info:status" +msgid "Unable to send print job to group {cluster_name}." +msgstr "無法傳送列印作業到群組 {cluster_name}。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:418 +#, python-brace-format +msgctxt "@info:status" +msgid "Sent {file_name} to group {cluster_name}." +msgstr "{file_name} 已傳送到群組 {cluster_name}。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:423 +msgctxt "@action:button" +msgid "Show print jobs" +msgstr "顯示列印作業" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:424 +msgctxt "@info:tooltip" +msgid "Opens the print jobs interface in your browser." +msgstr "使用瀏覽器開啟列印作業介面。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:489 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:239 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:47 +msgctxt "@label" +msgid "Unknown" +msgstr "未知" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:492 +#, python-brace-format +msgctxt "@info:status" +msgid "Printer '{printer_name}' has finished printing '{job_name}'." +msgstr "印表機 '{printer_name}' 已完成列印 '{job_name}'。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:494 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:497 +msgctxt "@info:status" +msgid "Print finished" +msgstr "列印已完成" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:522 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:525 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:282 +msgctxt "@label:status" +msgid "Action required" +msgstr "需要採取的動作" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py:643 +#, python-brace-format +msgctxt "@info:progress" +msgid "Sending {file_name} to group {cluster_name}" +msgstr "傳送 {file_name} 到群組 {cluster_name} 中" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.py:19 +msgctxt "@action" +msgid "Connect via Network" +msgstr "透過網路連接" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:64 +#, python-brace-format +msgctxt "" +"@info Don't translate {machine_name}, since it gets replaced by a printer " +"name!" +msgid "" +"New features are available for your {machine_name}! It is recommended to " +"update the firmware on your printer." +msgstr "你的 {machine_name} 有新功能可用!建議更新印表機韌體。" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:65 +#, python-format +msgctxt "@info:title The %s gets replaced with the printer name." +msgid "New %s firmware available" +msgstr "有新 %s 韌體可用" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:66 +msgctxt "@action:button" +msgid "How to update" +msgstr "如何更新" + +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:77 +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 中正常開" +"啟檔案而不出現任何問題!" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:31 +msgctxt "@item:inlistbox" +msgid "SolidWorks part file" +msgstr "SolidWorks 零件檔案" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/__init__.py:35 +msgctxt "@item:inlistbox" +msgid "SolidWorks assembly file" +msgstr "SolidWorks 組件檔案" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.py:21 +msgid "Configure" +msgstr "設定" + +#: /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/SimulationView/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Simulation view" +msgstr "模擬檢視" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:100 +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/SimulationView/SimulationView.py:101 +msgctxt "@info:title" +msgid "Simulation View" +msgstr "模擬檢視" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.py:26 +msgid "Modify G-Code" +msgstr "修改 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 收集匿名切片統計資料。你可以在偏好設定中關閉此選項。" + +#: /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 "關閉此通知" + +#: /home/ruben/Projects/Cura/plugins/LegacyProfileReader/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "Cura 15.04 profiles" +msgstr "Cura 15.04 列印參數" + +#: /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 檔案" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:14 +msgctxt "@item:inlistbox" +msgid "JPG Image" +msgstr "JPG 圖片" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:18 +msgctxt "@item:inlistbox" +msgid "JPEG Image" +msgstr "JPEG 圖片" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:22 +msgctxt "@item:inlistbox" +msgid "PNG Image" +msgstr "PNG 圖片" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:26 +msgctxt "@item:inlistbox" +msgid "BMP Image" +msgstr "BMP 圖片" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/__init__.py:30 +msgctxt "@item:inlistbox" +msgid "GIF Image" +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 "無法使用目前耗材切片,因為它與所選機器或設定不相容。" + +#: /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:319 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:327 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:336 +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:318 +#, python-brace-format +msgctxt "@info:status" +msgid "" +"Unable to slice due to some per-model settings. The following settings have " +"errors on one or more models: {error_labels}" +msgstr "" +"因部份模型設定問題無法進行切片。部份模型的下列設定有錯誤:{error_labels}" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:326 +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:335 +msgctxt "@info:status" +msgid "" +"Nothing to slice because none of the models fit the build volume. Please " +"scale or rotate models to fit." +msgstr "" +"沒有模型可進行切片,因為模型超出了列印範圍。請縮放或旋轉模型, 讓模型可置入列" +"印範圍。" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:50 +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +msgctxt "@info:status" +msgid "Processing Layers" +msgstr "正在處理層" + +#: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py:239 +msgctxt "@info:title" +msgid "Information" +msgstr "資訊" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:14 +msgctxt "@label" +msgid "Per Model Settings" +msgstr "單一模型設定" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/__init__.py:15 +msgctxt "@info:tooltip" +msgid "Configure Per Model Settings" +msgstr "設定對每個模型的單獨設定" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:23 +msgid "Install" +msgstr "安裝" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:43 +msgid "" +"Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR. It " +"is not set to a directory." +msgstr "" +"無法複製 Siemens NX 外掛檔案。請檢查你的 UGII_USER_DIR,它沒有設置到正確的目" +"錄。" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:50 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:59 +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:81 +msgid "Successfully installed Siemens NX Cura plugin." +msgstr "Siemens NX Cura 外掛已成功安裝。" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:65 +msgid "" +"Failed to copy Siemens NX plugins files. Please check your UGII_USER_DIR." +msgstr "無法複製 Siemens NX 外掛檔案。請檢查你的 UGII_USER_DIR。" + +#: /home/ruben/Projects/Cura/plugins/cura-siemensnx-plugin/Installer.py:85 +msgid "" +"Failed to install Siemens NX plugin. Could not set environment variable " +"UGII_USER_DIR for Siemens NX." +msgstr "" +"無法安裝 Siemens NX 外掛。無法為 Siemens NX 設定環境變數 UGII_USER_DIR。" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:167 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:585 +msgctxt "@title:tab" +msgid "Recommended" +msgstr "推薦" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:169 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:590 +msgctxt "@title:tab" +msgid "Custom" +msgstr "自訂選項" + +#: /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 檔案" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:126 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1142 +msgctxt "@label" +msgid "Nozzle" +msgstr "噴頭" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:164 +#, python-brace-format +msgctxt "@info:status" +msgid "Failed to get plugin ID from {0}" +msgstr "無法從 {0} 取得外掛 ID" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:165 +msgctxt "@info:tile" +msgid "Warning" +msgstr "警告" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.py:203 +msgctxt "@window:title" +msgid "Plugin browser" +msgstr "外掛瀏覽器" + +#: /home/ruben/Projects/Cura/plugins/SolidView/__init__.py:12 +msgctxt "@item:inmenu" +msgid "Solid view" +msgstr "實體檢視" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/__init__.py:18 +msgctxt "@item:inlistbox" +msgid "G File" +msgstr "G 檔案" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:314 +msgctxt "@info:status" +msgid "Parsing G-code" +msgstr "正在解析 G-code" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:316 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:426 +msgctxt "@info:title" +msgid "G-code Details" +msgstr "G-code 細項設定" + +#: /home/ruben/Projects/Cura/plugins/GCodeReader/GCodeReader.py:424 +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 檔案可" +"能不準確。" + +#: /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 列印參數" + +#: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:30 +msgctxt "@item:inlistbox" +msgid "3MF file" +msgstr "3MF 檔案" + +#: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:38 +msgctxt "@item:inlistbox" +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:18 +msgctxt "@action" +msgid "Select upgrades" +msgstr "選擇升級" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.py:12 +msgctxt "@action" +msgid "Upgrade Firmware" +msgstr "升級韌體" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14 +msgctxt "@action" +msgid "Checkup" +msgstr "檢查" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:15 +msgctxt "@action" +msgid "Level build plate" +msgstr "調平列印平台" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:89 +msgctxt "@tooltip" +msgid "Outer Wall" +msgstr "外壁" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:90 +msgctxt "@tooltip" +msgid "Inner Walls" +msgstr "內壁" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:91 +msgctxt "@tooltip" +msgid "Skin" +msgstr "表層" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:92 +msgctxt "@tooltip" +msgid "Infill" +msgstr "填充" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:93 +msgctxt "@tooltip" +msgid "Support Infill" +msgstr "支撐填充" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:94 +msgctxt "@tooltip" +msgid "Support Interface" +msgstr "支撐介面" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:95 +msgctxt "@tooltip" +msgid "Support" +msgstr "支撐" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:96 +msgctxt "@tooltip" +msgid "Skirt" +msgstr "外圍" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:97 +msgctxt "@tooltip" +msgid "Travel" +msgstr "移動" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:98 +msgctxt "@tooltip" +msgid "Retractions" +msgstr "回抽" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:99 +msgctxt "@tooltip" +msgid "Other" +msgstr "其它" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:199 +msgctxt "@label unknown material" +msgid "Unknown" +msgstr "未知" + +#: /home/ruben/Projects/Cura/cura/PrintInformation.py:284 +#, python-brace-format +msgctxt "@label" +msgid "Pre-sliced file {0}" +msgstr "預切片檔案 {0}" + +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:469 +msgctxt "@item:material" +msgid "No material loaded" +msgstr "未載入耗材" + +#: /home/ruben/Projects/Cura/cura/PrinterOutputDevice.py:476 +msgctxt "@item:material" +msgid "Unknown material" +msgstr "未知耗材" + +#: /home/ruben/Projects/Cura/cura/ArrangeObjectsJob.py:30 +msgctxt "@info:status" +msgid "Finding new location for objects" +msgstr "正在為物件尋找新位置" + +#: /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/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:113 +msgctxt "@title:window" +msgid "File Already Exists" +msgstr "檔案已經存在" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:432 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:114 +#, 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 "檔案 {0} 已存在。你確定要覆蓋掉它嗎?" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:815 +msgctxt "@label" +msgid "Custom" +msgstr "自訂" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:819 +msgctxt "@label" +msgid "Custom Material" +msgstr "自訂耗材" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:182 +msgctxt "@menuitem" +msgid "Global" +msgstr "整體" + +#: /home/ruben/Projects/Cura/cura/Settings/ExtrudersModel.py:229 +msgctxt "@menuitem" +msgid "Not overridden" +msgstr "不覆寫" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:117 +msgctxt "@info:status" +msgid "" +"The selected material is incompatible with the selected machine or " +"configuration." +msgstr "所選耗材與所選機器或設定不相容。" + +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:118 +#: /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." +msgstr "所選耗材直徑導致耗材與目前印表機不相容。" + +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:25 +msgctxt "@action:button" +msgid "Undo" +msgstr "復原" + +#: /home/ruben/Projects/Cura/cura/Settings/MaterialManager.py:25 +msgctxt "@action" +msgid "Undo changing the material diameter." +msgstr "復原更改耗材直徑。" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "" +"Failed to export profile to {0}: {1}" +msgstr "無法將列印參數匯出至 {0}{1}" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:151 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tag !" +msgid "" +"Failed to export profile to {0}: Writer plugin reported " +"failure." +msgstr "無法將列印參數匯出至 {0}:寫入器外掛報告故障。" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:156 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tag !" +msgid "Exported profile to {0}" +msgstr "列印參數已匯出至:{0}" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:157 +msgctxt "@info:title" +msgid "Export succeeded" +msgstr "匯出成功" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:183 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:205 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:214 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:248 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags or !" +msgid "" +"Failed to import profile from {0}: {1}" +msgstr "無法從 {0} 匯入列印參數:{1}" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:216 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:252 +#, python-brace-format +msgctxt "@info:status" +msgid "Successfully imported profile {0}" +msgstr "已成功匯入列印參數 {0}" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:255 +#, 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:274 +msgctxt "@label" +msgid "Custom profile" +msgstr "自訂列印參數" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:285 +msgctxt "@info:status" +msgid "Profile is missing a quality type." +msgstr "列印參數缺少列印品質類型定義。" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:321 +#, 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: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:80 +msgctxt "@title:window" +msgid "Crash Report" +msgstr "錯誤報告" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:93 +msgctxt "@label crash message" +msgid "" +"

    A fatal exception has occurred. Please send us this Crash Report to " +"fix the problem

    \n" +"

    Please use the \"Send report\" button to post a bug report " +"automatically to our servers

    \n" +" " +msgstr "" +"

    程式發生了致命異常。請將錯誤報告傳送給我們以解決這個問題

    \n" +"

    請使用「送出報告」按鈕將錯誤報告自動發送到我們的伺服器

    \n" +" " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:101 +msgctxt "@title:groupbox" +msgid "System information" +msgstr "系統資訊" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:109 +msgctxt "@label unknown version of Cura" +msgid "Unknown" +msgstr "未知" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:111 +#, python-brace-format +msgctxt "@label Cura version" +msgid "Cura version: {version}
    " +msgstr "Cura 版本: {version}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:112 +#, python-brace-format +msgctxt "@label Platform" +msgid "Platform: {platform}
    " +msgstr "平台: {platform}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:113 +#, python-brace-format +msgctxt "@label Qt version" +msgid "Qt version: {qt}
    " +msgstr "Qt 版本: {qt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:114 +#, python-brace-format +msgctxt "@label PyQt version" +msgid "PyQt version: {pyqt}
    " +msgstr "PyQt 版本: {pyqt}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:115 +#, python-brace-format +msgctxt "@label OpenGL" +msgid "OpenGL: {opengl}
    " +msgstr "OpenGL: {opengl}
    " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:130 +#, python-brace-format +msgctxt "@label OpenGL version" +msgid "
  • OpenGL Version: {version}
  • " +msgstr "
  • OpenGL 版本:{version}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:131 +#, python-brace-format +msgctxt "@label OpenGL vendor" +msgid "
  • OpenGL Vendor: {vendor}
  • " +msgstr "
  • OpenGL 供應商:{vendor}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:132 +#, python-brace-format +msgctxt "@label OpenGL renderer" +msgid "
  • OpenGL Renderer: {renderer}
  • " +msgstr "
  • OpenGL 渲染器:{renderer}
  • " + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:141 +msgctxt "@title:groupbox" +msgid "Exception traceback" +msgstr "異常追溯" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:208 +msgctxt "@title:groupbox" +msgid "Logs" +msgstr "日誌" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:231 +msgctxt "@title:groupbox" +msgid "User description" +msgstr "使用者描述" + +#: /home/ruben/Projects/Cura/cura/CrashHandler.py:246 +msgctxt "@action:button" +msgid "Send report" +msgstr "送出報告" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:256 +msgctxt "@info:progress" +msgid "Loading machines..." +msgstr "正在載入印表機..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:661 +msgctxt "@info:progress" +msgid "Setting up scene..." +msgstr "正在設定場景..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:703 +msgctxt "@info:progress" +msgid "Loading interface..." +msgstr "正在載入介面…" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:874 +#, 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:1348 +#, 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:1357 +#, python-brace-format +msgctxt "@info:status" +msgid "Can't open any other file if G-code is loading. Skipped importing {0}" +msgstr "如果載入 G-code,則無法開啟其他任何檔案。{0} 已跳過匯入" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1416 +msgctxt "@info:status" +msgid "The selected model was too small to load." +msgstr "選擇的模型太小無法載入。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:59 +msgctxt "@title" +msgid "Machine Settings" +msgstr "印表機設定" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:78 +msgctxt "@title:tab" +msgid "Printer" +msgstr "印表機" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:97 +msgctxt "@label" +msgid "Printer Settings" +msgstr "印表機設定" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:108 +msgctxt "@label" +msgid "X (Width)" +msgstr "X (寬度)" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:109 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:129 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:235 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:288 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:300 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:391 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:401 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:413 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:840 +msgctxt "@label" +msgid "mm" +msgstr "mm" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:118 +msgctxt "@label" +msgid "Y (Depth)" +msgstr "Y (深度)" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:128 +msgctxt "@label" +msgid "Z (Height)" +msgstr "Z (高度)" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:140 +msgctxt "@label" +msgid "Build plate shape" +msgstr "列印平台形狀" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:149 +msgctxt "@option:check" +msgid "Origin at center" +msgstr "原點位於中心" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:157 +msgctxt "@option:check" +msgid "Heated bed" +msgstr "熱床" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:168 +msgctxt "@label" +msgid "Gcode flavor" +msgstr "GCode 類型" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:181 +msgctxt "@label" +msgid "Printhead Settings" +msgstr "列印頭設定" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:191 +msgctxt "@label" +msgid "X min" +msgstr "X 最小值" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:192 +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 "" +"列印頭左側至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰" +"撞。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:201 +msgctxt "@label" +msgid "Y min" +msgstr "Y 最小值" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:202 +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 "" +"列印頭前端至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰" +"撞。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:211 +msgctxt "@label" +msgid "X max" +msgstr "X 最大值" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:212 +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 "" +"列印頭右側至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰" +"撞。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:221 +msgctxt "@label" +msgid "Y max" +msgstr "Y 最大值" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:222 +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 "" +"列印頭後部至噴頭中心的距離。用於防止「排隊列印」時之前的列印品與列印頭發生碰" +"撞。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:234 +msgctxt "@label" +msgid "Gantry height" +msgstr "龍門高度" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:236 +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:255 +msgctxt "@label" +msgid "Number of Extruders" +msgstr "擠出機數目" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:289 +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:291 +msgctxt "@label" +msgid "Material diameter" +msgstr "耗材直徑" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:299 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:390 +msgctxt "@label" +msgid "Nozzle size" +msgstr "噴頭孔徑" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:317 +msgctxt "@label" +msgid "Start Gcode" +msgstr "起始 Gcode" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:327 +msgctxt "@tooltip" +msgid "Gcode commands to be executed at the very start." +msgstr "將在開始時執行的 Gcode 命令。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:336 +msgctxt "@label" +msgid "End Gcode" +msgstr "結束 Gcode" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:346 +msgctxt "@tooltip" +msgid "Gcode commands to be executed at the very end." +msgstr "將在結束時執行的 Gcode 命令。" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:378 +msgctxt "@label" +msgid "Nozzle Settings" +msgstr "噴頭設定" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:400 +msgctxt "@label" +msgid "Nozzle offset X" +msgstr "噴頭偏移 X" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:412 +msgctxt "@label" +msgid "Nozzle offset Y" +msgstr "噴頭偏移 Y" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:433 +msgctxt "@label" +msgid "Extruder Start Gcode" +msgstr "擠出機起始 Gcode" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.qml:451 +msgctxt "@label" +msgid "Extruder End Gcode" +msgstr "擠出機結束 Gcode" + +#: /home/ruben/Projects/Cura/plugins/ChangeLogPlugin/ChangeLog.qml:18 +msgctxt "@label" +msgid "Changelog" +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/PostProcessingPlugin/PostProcessingPlugin.qml:445 +#: /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:123 +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:38 +msgctxt "@action:button" +msgid "Close" +msgstr "關閉" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:22 +msgctxt "@title:window" +msgid "Firmware Update" +msgstr "韌體更新" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:42 +msgctxt "@label" +msgid "Firmware update completed." +msgstr "韌體更新已完成。" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:47 +msgctxt "@label" +msgid "Starting firmware update, this may take a while." +msgstr "正在開始韌體更新。可能需要花費一些時間,請耐心等待。" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:52 +msgctxt "@label" +msgid "Updating firmware." +msgstr "更新韌體中..." + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:61 +msgctxt "@label" +msgid "Firmware update failed due to an unknown error." +msgstr "由於未知錯誤,韌體更新失敗。" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:64 +msgctxt "@label" +msgid "Firmware update failed due to an communication error." +msgstr "由於通訊錯誤,導致韌體更新失敗。" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:67 +msgctxt "@label" +msgid "Firmware update failed due to an input/output error." +msgstr "由於輸入/輸出錯誤,導致韌體更新失敗。" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:70 +msgctxt "@label" +msgid "Firmware update failed due to missing firmware." +msgstr "由於韌體遺失,導致韌體更新失敗。" + +#: /home/ruben/Projects/Cura/plugins/USBPrinting/FirmwareUpdateWindow.qml:73 +msgctxt "@label" +msgid "Unknown error code: %1" +msgstr "未知錯誤代碼: %1" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:55 +msgctxt "@title:window" +msgid "Connect to Networked Printer" +msgstr "連接到網路印表機" + +#: /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 "" +"要透過網路列印,請確認你的印表機已透過網路線或 WIFI 連接到網路。若你無法讓 " +"Cura 與印表機連線,你仍然可以使用 USB 裝置將 G-code 檔案傳輸到印表機。\n" +"\n" +"從以下列表中選擇你的印表機:" + +#: /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 "增加" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:85 +msgctxt "@action:button" +msgid "Edit" +msgstr "編輯" + +#: /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 "移除" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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:194 +msgctxt "@label" +msgid "" +"If your printer is not listed, read the network printing " +"troubleshooting guide" +msgstr "如果你的印表機未被列出,請閱讀網路列印故障排除指南" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:221 +msgctxt "@label" +msgid "Type" +msgstr "類型" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:233 +msgctxt "@label" +msgid "Ultimaker 3" +msgstr "Ultimaker 3" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:236 +msgctxt "@label" +msgid "Ultimaker 3 Extended" +msgstr "Ultimaker 3 Extended" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:252 +msgctxt "@label" +msgid "Firmware version" +msgstr "韌體版本" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:264 +msgctxt "@label" +msgid "Address" +msgstr "位址" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:286 +msgctxt "@label" +msgid "This printer is not set up to host a group of Ultimaker 3 printers." +msgstr "這台印表機未設定成管理一組 Ultimaker 3 印表機的主機。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:290 +msgctxt "@label" +msgid "This printer is the host for a group of %1 Ultimaker 3 printers." +msgstr "這台印表機是 %1 台 Ultimaker 3 印表機群組的主機。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:300 +msgctxt "@label" +msgid "The printer at this address has not yet responded." +msgstr "該網路位址的印表機尚無回應。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:305 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:38 +msgctxt "@action:button" +msgid "Connect" +msgstr "連接" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:319 +msgctxt "@title:window" +msgid "Printer Address" +msgstr "印表機網路位址" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/DiscoverUM3Action.qml:349 +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:379 +#: /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 "確定" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:24 +msgctxt "@title:window" +msgid "Print over network" +msgstr "網路連線列印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrintWindow.qml:92 +msgctxt "@action:button" +msgid "Print" +msgstr "列印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml:36 +msgctxt "@label: arg 1 is group name" +msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" +msgstr "%1 未設定成管理一組連線的 Ultimaker 3 印表機的主機" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:14 +msgctxt "@info:tooltip" +msgid "Opens the print jobs page with your default web browser." +msgstr "使用預設瀏覽器開啟列印作業頁面。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/OpenPanelButton.qml:15 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:131 +msgctxt "@action:button" +msgid "View print jobs" +msgstr "檢視列印作業" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:37 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:278 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:408 +msgctxt "@label" +msgid "Preparing to print" +msgstr "準備列印中" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:39 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:271 +msgctxt "@label:status" +msgid "Printing" +msgstr "正在列印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:41 +msgctxt "@label:status" +msgid "Available" +msgstr "可用" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:43 +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:101 +msgctxt "@label:MonitorStatus" +msgid "Lost connection with the printer" +msgstr "與印表機的連接中斷" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:257 +msgctxt "@label:status" +msgid "Disabled" +msgstr "已關閉" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:273 +msgctxt "@label:status" +msgid "Reserved" +msgstr "保留" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:275 +msgctxt "@label:status" +msgid "Finished" +msgstr "已完成" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:290 +msgctxt "@label:status" +msgid "Paused" +msgstr "已暫停" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:292 +msgctxt "@label:status" +msgid "Resuming" +msgstr "繼續" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:294 +msgctxt "@label:status" +msgid "Print aborted" +msgstr "列印已取消" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:410 +msgctxt "@label" +msgid "Not accepting print jobs" +msgstr "不接受列印作業" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:403 +msgctxt "@label" +msgid "Finishes at: " +msgstr "完成時間:" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:405 +msgctxt "@label" +msgid "Clear build plate" +msgstr "清空列印平台" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml:414 +msgctxt "@label" +msgid "Waiting for configuration change" +msgstr "等待設定更動" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:64 +msgctxt "@title" +msgid "Print jobs" +msgstr "列印作業" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:94 +msgctxt "@label" +msgid "Printing" +msgstr "已排入佇列" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:112 +msgctxt "@label" +msgid "Queued" +msgstr "已排入佇列" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:171 +msgctxt "@label:title" +msgid "Printers" +msgstr "印表機" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/ClusterControlItem.qml:225 +msgctxt "@action:button" +msgid "View printers" +msgstr "檢視印表機" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/UM3InfoComponents.qml:37 +msgctxt "@info:tooltip" +msgid "Connect to a printer" +msgstr "連接到印表機" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/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 +msgctxt "@action:button" +msgid "Activate Configuration" +msgstr "啟用設定" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:20 +msgctxt "@title:window" +msgid "Cura SolidWorks Plugin Configuration" +msgstr "Cura SolidWorks 外掛設定" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:44 +msgctxt "@action:label" +msgid "Default quality of the exported STL:" +msgstr "預設的匯出 STL 品質:" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:79 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Always ask" +msgstr "總是詢問" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:80 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Always use Fine quality" +msgstr "總是使用精細品質" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ConfigDialog.qml:81 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Always use Coarse quality" +msgstr "總是使用粗糙品質" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:20 +msgctxt "@title:window" +msgid "Import SolidWorks File as STL..." +msgstr "匯入 SolidWorks 檔案為 STL..." + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:43 +msgctxt "@info:tooltip" +msgid "Quality of the Exported STL" +msgstr "匯出 STL 的品質" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:48 +msgctxt "@action:label" +msgid "Quality" +msgstr "品質" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:62 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Coarse" +msgstr "粗糙" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:63 +msgctxt "@option:curaSolidworksStlQuality" +msgid "Fine" +msgstr "精細" + +#: /home/ruben/Projects/Cura/plugins/CuraSolidWorksPlugin/ExportSTLUI.qml:78 +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:82 +msgctxt "@text:window" +msgid "Remember my choice" +msgstr "記住我的選擇" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:81 +msgctxt "@label" +msgid "Color scheme" +msgstr "顏色方案" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:96 +msgctxt "@label:listbox" +msgid "Material Color" +msgstr "耗材顏色" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:100 +msgctxt "@label:listbox" +msgid "Line Type" +msgstr "線條類型" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:104 +msgctxt "@label:listbox" +msgid "Feedrate" +msgstr "進給率" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:108 +msgctxt "@label:listbox" +msgid "Layer thickness" +msgstr "層厚" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:148 +msgctxt "@label" +msgid "Compatibility Mode" +msgstr "相容模式" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:230 +msgctxt "@label" +msgid "Show Travels" +msgstr "顯示移動軌跡" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:236 +msgctxt "@label" +msgid "Show Helpers" +msgstr "顯示輔助結構" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:242 +msgctxt "@label" +msgid "Show Shell" +msgstr "顯示外殼" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:248 +msgctxt "@label" +msgid "Show Infill" +msgstr "顯示填充" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:297 +msgctxt "@label" +msgid "Only Show Top Layers" +msgstr "只顯示頂層" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:306 +msgctxt "@label" +msgid "Show 5 Detailed Layers On Top" +msgstr "顯示頂端 5 層列印細節" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:317 +msgctxt "@label" +msgid "Top / Bottom" +msgstr "頂 / 底層" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:321 +msgctxt "@label" +msgid "Inner Wall" +msgstr "內壁" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:378 +msgctxt "@label" +msgid "min" +msgstr "最小值" + +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.qml:420 +msgctxt "@label" +msgid "max" +msgstr "最大值" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:18 +msgctxt "@title:window" +msgid "Post Processing Plugin" +msgstr "後處理外掛" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:49 +msgctxt "@label" +msgid "Post Processing Scripts" +msgstr "後處理腳本" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:217 +msgctxt "@action" +msgid "Add a script" +msgstr "添加一個腳本" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:263 +msgctxt "@label" +msgid "Settings" +msgstr "設定" + +#: /home/ruben/Projects/Cura/plugins/PostProcessingPlugin/PostProcessingPlugin.qml:455 +msgctxt "@info:tooltip" +msgid "Change active post-processing scripts" +msgstr "更改目前啟用的後處理腳本" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:19 +msgctxt "@title:window" +msgid "Convert Image..." +msgstr "轉換圖片..." + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:33 +msgctxt "@info:tooltip" +msgid "The maximum distance of each pixel from \"Base.\"" +msgstr "每個像素與底板的最大距離。" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:38 +msgctxt "@action:label" +msgid "Height (mm)" +msgstr "高度 (mm)" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:56 +msgctxt "@info:tooltip" +msgid "The base height from the build plate in millimeters." +msgstr "距離列印平台的底板高度,以毫米為單位。" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:61 +msgctxt "@action:label" +msgid "Base (mm)" +msgstr "底板 (mm)" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:79 +msgctxt "@info:tooltip" +msgid "The width in millimeters on the build plate." +msgstr "列印平台寬度,以毫米為單位。" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:84 +msgctxt "@action:label" +msgid "Width (mm)" +msgstr "寬度 (mm)" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:103 +msgctxt "@info:tooltip" +msgid "The depth in millimeters on the build plate" +msgstr "列印平台深度,以毫米為單位" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:108 +msgctxt "@action:label" +msgid "Depth (mm)" +msgstr "深度 (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 "" +"預設情況下,白色像素表示網格上的高點,黑色像素表示網格上的低點。更改此選項將" +"以相反方式呈現,黑色像素表示網格上的高點,白色像素表示網格上的低點。" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Lighter is higher" +msgstr "顏色越淺高度越高" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:139 +msgctxt "@item:inlistbox" +msgid "Darker is higher" +msgstr "顏色越深高度越高" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:149 +msgctxt "@info:tooltip" +msgid "The amount of smoothing to apply to the image." +msgstr "影像平滑程度。" + +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:154 +msgctxt "@action:label" +msgid "Smoothing" +msgstr "平滑" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:208 +msgctxt "@action:button" +msgid "Select settings" +msgstr "選擇設定" + +#: /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: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:296 +msgctxt "@label:checkbox" +msgid "Show all" +msgstr "顯示全部" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 +msgctxt "@title:window" +msgid "Open Project" +msgstr "開啟專案" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 +msgctxt "@action:ComboBox option" +msgid "Update existing" +msgstr "更新已有設定" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "新建" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:72 +msgctxt "@action:title" +msgid "Summary - Cura Project" +msgstr "摘要 - Cura 專案" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:92 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:90 +msgctxt "@action:label" +msgid "Printer settings" +msgstr "印表機設定" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:108 +msgctxt "@info:tooltip" +msgid "How should the conflict in the machine be resolved?" +msgstr "如何解決機器的設定衝突?" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:128 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:99 +msgctxt "@action:label" +msgid "Type" +msgstr "類型" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:144 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:201 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:293 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:190 +msgctxt "@action:label" +msgid "Name" +msgstr "名稱" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:165 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:166 +msgctxt "@action:label" +msgid "Profile settings" +msgstr "列印參數設定" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:181 +msgctxt "@info:tooltip" +msgid "How should the conflict in the profile be resolved?" +msgstr "如何解决列印參數中的設定衝突?" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:174 +msgctxt "@action:label" +msgid "Not in profile" +msgstr "不在列印參數中" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:179 +msgctxt "@action:label" +msgid "%1 override" +msgid_plural "%1 overrides" +msgstr[0] "%1 覆寫" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:232 +msgctxt "@action:label" +msgid "Derivative from" +msgstr "衍生自" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:237 +msgctxt "@action:label" +msgid "%1, %2 override" +msgid_plural "%1, %2 overrides" +msgstr[0] "%1, %2 覆寫" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:253 +msgctxt "@action:label" +msgid "Material settings" +msgstr "耗材設定" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:269 +msgctxt "@info:tooltip" +msgid "How should the conflict in the material be resolved?" +msgstr "如何解决耗材的設定衝突?" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:209 +msgctxt "@action:label" +msgid "Setting visibility" +msgstr "參數顯示設定" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:321 +msgctxt "@action:label" +msgid "Mode" +msgstr "模式" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:337 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:218 +msgctxt "@action:label" +msgid "Visible settings:" +msgstr "可見設定:" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:223 +msgctxt "@action:label" +msgid "%1 out of %2" +msgstr "%1 / %2" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:368 +msgctxt "@action:warning" +msgid "Loading a project will clear all models on the build plate." +msgstr "載入專案時將清除列印平台上的所有模型。" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:386 +msgctxt "@action:button" +msgid "Open" +msgstr "開啟" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:11 +msgctxt "@title:window" +msgid "Find & Update plugins" +msgstr "查找與更新外掛" + +#: /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:145 +msgctxt "@action:button" +msgid "Upgrade" +msgstr "升級" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:147 +msgctxt "@action:button" +msgid "Installed" +msgstr "已安裝" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:149 +msgctxt "@action:button" +msgid "Download" +msgstr "下載" + +#: /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 "" +"This plugin contains a license.\n" +"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 "接受" + +#: /home/ruben/Projects/Cura/plugins/PluginBrowser/PluginBrowser.qml:253 +msgctxt "@action:button" +msgid "Decline" +msgstr "拒絕" + +#: /home/ruben/Projects/Cura/plugins/UserAgreementPlugin/UserAgreement.qml:16 +msgctxt "@title:window" +msgid "User Agreement" +msgstr "使用者授權" + +#: /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 "選擇印表機更新檔案" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml:37 +msgctxt "@label" +msgid "Please select any upgrades made to this Ultimaker 2." +msgstr "請選擇適用於 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 "列印平台調平" + +#: /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 "" +"為了確保列印品質出色,你現在可以開始調整你的列印平台。當你點擊「移動到下一個" +"位置」時,噴頭將移動到不同的可調節位置。" + +#: /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 "" +"在噴頭停止的每一個位置下方插入一張紙,並調整平台高度。當紙張恰好被噴頭的尖端" +"輕微壓住時,表示列印平台已被校準在正確的高度。" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:62 +msgctxt "@action:button" +msgid "Start Build Plate Leveling" +msgstr "開始進行列印平台調平" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:74 +msgctxt "@action:button" +msgid "Move to Next Position" +msgstr "移動到下一個位置" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:27 +msgctxt "@title" +msgid "Upgrade Firmware" +msgstr "升級韌體" + +#: /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 "" +"韌體是直接在 3D 印表機上運行的一個軟體。此韌體控制步進馬達,調節溫度讓印表機" +"正常運作。" + +#: /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 "" +"新印表機出廠配備的韌體完全可以正常使用,但新版本往往具有更多的新功能和改進。" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:62 +msgctxt "@action:button" +msgid "Automatically upgrade Firmware" +msgstr "自動升級韌體" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:72 +msgctxt "@action:button" +msgid "Upload custom Firmware" +msgstr "上傳自訂韌體" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UpgradeFirmwareMachineAction.qml:83 +msgctxt "@title:window" +msgid "Select custom firmware" +msgstr "選擇自訂韌體" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:37 +msgctxt "@label" +msgid "Please select any upgrades made to this Ultimaker Original" +msgstr "請選擇適用於 Ultimaker Original 的更新檔案" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelectionMachineAction.qml:45 +msgctxt "@label" +msgid "Heated Build Plate (official kit or self-built)" +msgstr "熱床(官方版本或自製版本)" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27 +msgctxt "@title" +msgid "Check Printer" +msgstr "檢查印表機" + +#: /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 "" +"對 Ultimaker 進行幾項正確性檢查是很好的做法。如果你知道你的機器功能正常,則可" +"跳過此步驟" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53 +msgctxt "@action:button" +msgid "Start Printer Check" +msgstr "開始印表機檢查" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80 +msgctxt "@label" +msgid "Connection: " +msgstr "連接:" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 +msgctxt "@info:status" +msgid "Connected" +msgstr "已連接" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89 +msgctxt "@info:status" +msgid "Not connected" +msgstr "未連接" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99 +msgctxt "@label" +msgid "Min endstop X: " +msgstr "X Min 限位開關:" + +#: /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 "正常" + +#: /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 "未檢查" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120 +msgctxt "@label" +msgid "Min endstop Y: " +msgstr "Y Min 限位開關:" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141 +msgctxt "@label" +msgid "Min endstop Z: " +msgstr "Z Min 限位開關:" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163 +msgctxt "@label" +msgid "Nozzle temperature check: " +msgstr "檢查噴頭溫度:" + +#: /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 "停止加熱" + +#: /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 "開始加熱" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223 +msgctxt "@label" +msgid "Build plate temperature check:" +msgstr "熱床溫度檢查:" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234 +msgctxt "@info:status" +msgid "Checked" +msgstr "已檢查" + +#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284 +msgctxt "@label" +msgid "Everything is in order! You're done with your CheckUp." +msgstr "一切正常!你已經完成檢查。" + +#: /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:90 +msgctxt "@label:MonitorStatus" +msgid "Printer does not accept commands" +msgstr "印表機不接受命令" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:96 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:194 +msgctxt "@label:MonitorStatus" +msgid "In maintenance. Please check the printer" +msgstr "維護中。請檢查印表機" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:103 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:184 +msgctxt "@label:MonitorStatus" +msgid "Printing..." +msgstr "列印中..." + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:106 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:186 +msgctxt "@label:MonitorStatus" +msgid "Paused" +msgstr "已暫停" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:109 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:188 +msgctxt "@label:MonitorStatus" +msgid "Preparing..." +msgstr "準備中..." + +#: /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:237 +msgctxt "@label:" +msgid "Resume" +msgstr "繼續" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:241 +msgctxt "@label:" +msgid "Pause" +msgstr "暫停" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:270 +msgctxt "@label:" +msgid "Abort Print" +msgstr "中斷列印" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:280 +msgctxt "@window:title" +msgid "Abort print" +msgstr "中斷列印" + +#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:282 +msgctxt "@label" +msgid "Are you sure you want to abort the print?" +msgstr "你確定要中斷列印嗎?" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:15 +msgctxt "@title:window" +msgid "Discard or Keep changes" +msgstr "捨棄或保留更改" + +#: /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 "" +"你已自訂部份列印參數設定。\n" +"你想保留或捨棄這些設定嗎?" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:110 +msgctxt "@title:column" +msgid "Profile settings" +msgstr "列印參數設定" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:117 +msgctxt "@title:column" +msgid "Default" +msgstr "預設" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:124 +msgctxt "@title:column" +msgid "Customized" +msgstr "自訂" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:157 +#: /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: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:595 +msgctxt "@option:discardOrKeep" +msgid "Keep and never ask again" +msgstr "保留更改,並不再詢問此問題" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:196 +msgctxt "@action:button" +msgid "Discard" +msgstr "捨棄" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:209 +msgctxt "@action:button" +msgid "Keep" +msgstr "保留" + +#: /home/ruben/Projects/Cura/resources/qml/DiscardOrKeepProfileChangesDialog.qml:222 +msgctxt "@action:button" +msgid "Create New Profile" +msgstr "創建新的列印參數" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:44 +msgctxt "@title" +msgid "Information" +msgstr "資訊" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:68 +msgctxt "@label" +msgid "Display Name" +msgstr "顯示名稱" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:78 +msgctxt "@label" +msgid "Brand" +msgstr "品牌" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:92 +msgctxt "@label" +msgid "Material Type" +msgstr "耗材類型" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:105 +msgctxt "@label" +msgid "Color" +msgstr "顏色" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:139 +msgctxt "@label" +msgid "Properties" +msgstr "屬性" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:141 +msgctxt "@label" +msgid "Density" +msgstr "密度" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:156 +msgctxt "@label" +msgid "Diameter" +msgstr "直徑" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:185 +msgctxt "@label" +msgid "Filament Cost" +msgstr "耗材成本" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:201 +msgctxt "@label" +msgid "Filament weight" +msgstr "耗材重量" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:218 +msgctxt "@label" +msgid "Filament length" +msgstr "耗材長度" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:227 +msgctxt "@label" +msgid "Cost per Meter" +msgstr "每公尺成本" + +#: /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 "此耗材與 %1 相關聯,並共享其部份屬性。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:248 +msgctxt "@label" +msgid "Unlink Material" +msgstr "解除聯結耗材" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:259 +msgctxt "@label" +msgid "Description" +msgstr "描述" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:272 +msgctxt "@label" +msgid "Adhesion Information" +msgstr "附著資訊" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialView.qml:298 +msgctxt "@label" +msgid "Print settings" +msgstr "列印設定" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:14 +msgctxt "@title:tab" +msgid "Setting Visibility" +msgstr "參數顯示設定" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:44 +msgctxt "@label:textbox" +msgid "Check all" +msgstr "全選" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:40 +msgctxt "@info:status" +msgid "Calculated" +msgstr "已計算" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:53 +msgctxt "@title:column" +msgid "Setting" +msgstr "設定" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:60 +msgctxt "@title:column" +msgid "Profile" +msgstr "列印參數" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:67 +msgctxt "@title:column" +msgid "Current" +msgstr "目前" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +msgctxt "@title:column" +msgid "Unit" +msgstr "單位" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:14 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:439 +msgctxt "@title:tab" +msgid "General" +msgstr "基本" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:128 +msgctxt "@label" +msgid "Interface" +msgstr "介面" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:139 +msgctxt "@label" +msgid "Language:" +msgstr "語言:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:205 +msgctxt "@label" +msgid "Currency:" +msgstr "貨幣:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:219 +msgctxt "@label" +msgid "Theme:" +msgstr "主題:" + +#: /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:296 +msgctxt "@info:tooltip" +msgid "Slice automatically when changing settings." +msgstr "當設定變更時自動進行切片。" + +#: /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:318 +msgctxt "@label" +msgid "Viewport behavior" +msgstr "顯示區設定" + +#: /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:335 +msgctxt "@option:check" +msgid "Display overhang" +msgstr "顯示懸垂(Overhang)" + +#: /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:347 +msgctxt "@action:button" +msgid "Center camera when item is selected" +msgstr "當專案被選中時,自動置中視角" + +#: /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:361 +msgctxt "@action:button" +msgid "Invert the direction of camera zoom." +msgstr "反轉視角縮放方向。" + +#: /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:375 +msgctxt "@action:button" +msgid "Zoom toward mouse direction" +msgstr "跟隨滑鼠方向縮放" + +#: /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:389 +msgctxt "@option:check" +msgid "Ensure models are kept apart" +msgstr "確保每個模型都保持分離" + +#: /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:402 +msgctxt "@option:check" +msgid "Automatically drop models to the build plate" +msgstr "自動下降模型到列印平台" + +#: /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:423 +msgctxt "@option:check" +msgid "Caution message in gcode reader" +msgstr "G-code 讀取器中的警告資訊" + +#: /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:435 +msgctxt "@option:check" +msgid "Force layer view compatibility mode (restart required)" +msgstr "強制分層檢視相容模式(需要重新啟動)" + +#: /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: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:462 +msgctxt "@option:check" +msgid "Scale large models" +msgstr "縮小過大模型" + +#: /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:476 +msgctxt "@option:check" +msgid "Scale extremely small models" +msgstr "放大過小模型" + +#: /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:490 +msgctxt "@option:check" +msgid "Add machine prefix to job name" +msgstr "將印表機名稱前綴添加到列印作業名稱中" + +#: /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:503 +msgctxt "@option:check" +msgid "Show summary dialog when saving project" +msgstr "儲存專案時顯示摘要對話框" + +#: /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:520 +msgctxt "@window:text" +msgid "Default behavior when opening a project file: " +msgstr "開啟專案檔案時的預設行為:" + +#: /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:534 +msgctxt "@option:openProject" +msgid "Always open as a project" +msgstr "總是作為一個專案開啟" + +#: /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: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:580 +msgctxt "@label" +msgid "Override Profile" +msgstr "覆寫列印參數" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:629 +msgctxt "@label" +msgid "Privacy" +msgstr "隱私權" + +#: /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:641 +msgctxt "@option:check" +msgid "Check for updates on start" +msgstr "啟動時檢查更新" + +#: /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: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:444 +msgctxt "@title:tab" +msgid "Printers" +msgstr "印表機" + +#: /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 "啟用" + +#: /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 "重命名" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:149 +msgctxt "@label" +msgid "Printer type:" +msgstr "印表機類型:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:158 +msgctxt "@label" +msgid "Connection:" +msgstr "連接:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:164 +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:52 +msgctxt "@info:status" +msgid "The printer is not connected." +msgstr "尚未連接到印表機。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:170 +msgctxt "@label" +msgid "State:" +msgstr "狀態:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:190 +msgctxt "@label:MonitorStatus" +msgid "Waiting for someone to clear the build plate" +msgstr "等待清空列印平台" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:199 +msgctxt "@label:MonitorStatus" +msgid "Waiting for a printjob" +msgstr "等待列印作業" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:15 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:448 +msgctxt "@title:tab" +msgid "Profiles" +msgstr "列印參數" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:29 +msgctxt "@label" +msgid "Protected profiles" +msgstr "受保護的列印參數" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:29 +msgctxt "@label" +msgid "Custom profiles" +msgstr "自訂列印參數" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:64 +msgctxt "@label" +msgid "Create" +msgstr "創建" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:80 +msgctxt "@label" +msgid "Duplicate" +msgstr "複製" + +#: /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 "匯入" + +#: /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 "匯出" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:126 +msgctxt "@label %1 is printer name" +msgid "Printer: %1" +msgstr "印表機:%1" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:165 +msgctxt "@action:button" +msgid "Update profile with current settings/overrides" +msgstr "使用目前設定 / 覆寫值更新列印參數" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:173 +msgctxt "@action:button" +msgid "Discard current changes" +msgstr "捨棄目前更改" + +#: /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 "此列印參數使用印表機指定的預設值,因此在下面的列表中沒有此設定項。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:197 +msgctxt "@action:label" +msgid "Your current settings match the selected profile." +msgstr "你目前的設定與選定的列印參數相匹配。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:215 +msgctxt "@title:tab" +msgid "Global Settings" +msgstr "全局設定" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:258 +msgctxt "@title:window" +msgid "Rename Profile" +msgstr "重命名列印參數" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:271 +msgctxt "@title:window" +msgid "Create Profile" +msgstr "創建列印參數" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:285 +msgctxt "@title:window" +msgid "Duplicate Profile" +msgstr "複製列印參數" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:299 +msgctxt "@window:title" +msgid "Import Profile" +msgstr "匯入列印參數" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:307 +msgctxt "@title:window" +msgid "Import Profile" +msgstr "匯入列印參數" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:335 +msgctxt "@title:window" +msgid "Export Profile" +msgstr "匯出列印參數" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:15 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:446 +msgctxt "@title:tab" +msgid "Materials" +msgstr "耗材" + +#: /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 "印表機:%1, %2: %3" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:120 +msgctxt "@action:label %1 is printer name" +msgid "Printer: %1" +msgstr "印表機:%1" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:149 +msgctxt "@action:button" +msgid "Create" +msgstr "創建" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MaterialsPage.qml:168 +msgctxt "@action:button" +msgid "Duplicate" +msgstr "複製" + +#: /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 "匯入耗材設定" + +#: /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 "無法匯入耗材 %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 "成功匯入耗材 %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 "匯出耗材設定" + +#: /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 "無法匯出耗材至 %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 "成功匯出耗材至:%1" + +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:18 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:793 +msgctxt "@title:window" +msgid "Add Printer" +msgstr "新增印表機" + +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:185 +msgctxt "@label" +msgid "Printer Name:" +msgstr "印表機名稱:" + +#: /home/ruben/Projects/Cura/resources/qml/AddMachineDialog.qml:208 +msgctxt "@action:button" +msgid "Add Printer" +msgstr "新增印表機" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:15 +msgctxt "@title:window" +msgid "About Cura" +msgstr "關於 Cura" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:43 +msgctxt "@label" +msgid "version: %1" +msgstr "版本:%1" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:56 +msgctxt "@label" +msgid "End-to-end solution for fused filament 3D printing." +msgstr "熔絲 3D 列印技術的的端對端解決方案。" + +#: /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 由 Ultimaker B.V. 與社區合作開發。\n" +"Cura 使用以下開源專案:" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:118 +msgctxt "@label" +msgid "Graphical user interface" +msgstr "圖形用戶介面" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:119 +msgctxt "@label" +msgid "Application framework" +msgstr "應用框架" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:120 +msgctxt "@label" +msgid "GCode generator" +msgstr "GCode 產生器" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:121 +msgctxt "@label" +msgid "Interprocess communication library" +msgstr "進程間通訊交互使用庫" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:123 +msgctxt "@label" +msgid "Programming language" +msgstr "編程語言" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:124 +msgctxt "@label" +msgid "GUI framework" +msgstr "GUI 框架" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:125 +msgctxt "@label" +msgid "GUI framework bindings" +msgstr "GUI 框架綁定" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:126 +msgctxt "@label" +msgid "C/C++ Binding library" +msgstr "C / C++ 綁定庫" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:127 +msgctxt "@label" +msgid "Data interchange format" +msgstr "資料交換格式" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:128 +msgctxt "@label" +msgid "Support library for scientific computing" +msgstr "科學計算函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:129 +msgctxt "@label" +msgid "Support library for faster math" +msgstr "高速運算函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:130 +msgctxt "@label" +msgid "Support library for handling STL files" +msgstr "用於處理 STL 檔案的函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:131 +msgctxt "@label" +msgid "Support library for handling 3MF files" +msgstr "用於處理 3MF 檔案的函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:132 +msgctxt "@label" +msgid "Serial communication library" +msgstr "串口通訊函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:133 +msgctxt "@label" +msgid "ZeroConf discovery library" +msgstr "ZeroConf 發現函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:134 +msgctxt "@label" +msgid "Polygon clipping library" +msgstr "多邊形剪輯函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:135 +msgctxt "@Label" +msgid "Python HTTP library" +msgstr "Python HTTP 函式庫" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:137 +msgctxt "@label" +msgid "Font" +msgstr "字體" + +#: /home/ruben/Projects/Cura/resources/qml/AboutDialog.qml:138 +msgctxt "@label" +msgid "SVG icons" +msgstr "SVG 圖標" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:41 +msgctxt "@label" +msgid "Profile:" +msgstr "列印參數:" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:66 +msgctxt "@" +msgid "No Profile Available" +msgstr "無可用的列印參數" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:104 +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:152 +msgctxt "@label:textbox" +msgid "Search..." +msgstr "搜尋..." + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:483 +msgctxt "@action:menu" +msgid "Copy value to all extruders" +msgstr "將設定值複製到所有擠出機" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:498 +msgctxt "@action:menu" +msgid "Hide this setting" +msgstr "隱藏此設定" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 +msgctxt "@action:menu" +msgid "Don't show this setting" +msgstr "不再顯示此設定" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:512 +msgctxt "@action:menu" +msgid "Keep this setting visible" +msgstr "保持此設定可見" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:531 +msgctxt "@action:menu" +msgid "Configure setting visiblity..." +msgstr "設定設定可見性..." + +#: /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 "" +"部份隱藏設定使用的值與一般計算所得的值不同。\n" +"\n" +"點擊以顯這些設定。" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:62 +msgctxt "@label Header for list of settings." +msgid "Affects" +msgstr "影響" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +msgctxt "@label Header for list of settings." +msgid "Affected By" +msgstr "影響因素" + +#: /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 "這個設定由全部的擠出機共享,變更這個設定將改變全部擠出機的設定值" + +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:160 +msgctxt "@label" +msgid "The value is resolved from per-extruder values " +msgstr "這個數值是由每個擠出機的設定值解析出來的" + +#: /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 "" +"此設定的值與列印參數不同。\n" +"\n" +"單擊以復原列印參數的值。" + +#: /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 "" +"這個設定通常由計算得出,可是它目前被設定為一個數值。\n" +"\n" +"點擊以恢復計算得出的數值。" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +msgctxt "@label:listbox" +msgid "Print Setup" +msgstr "列印設定" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:120 +msgctxt "@label:listbox" +msgid "" +"Print Setup disabled\n" +"G-code files cannot be modified" +msgstr "" +"列印設定已關閉\n" +"G-code 檔案無法被修改" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:336 +msgctxt "@label Hours and minutes" +msgid "00h 00min" +msgstr "00 小時 00 分" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:354 +msgctxt "@tooltip" +msgid "Time specification
    " +msgstr "時間資訊
    " + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:429 +msgctxt "@label" +msgid "Cost specification" +msgstr "成本明細" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:434 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:445 +msgctxt "@label m for meter" +msgid "%1m" +msgstr "%1m" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:446 +msgctxt "@label g for grams" +msgid "%1g" +msgstr "%1g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:444 +msgctxt "@label" +msgid "Total:" +msgstr "總共:" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:498 +msgctxt "" +"@label Print estimates: m for meters, g for grams, %4 is currency and %3 is " +"print cost" +msgid "%1m / ~ %2g / ~ %4 %3" +msgstr "%1m / ~ %2g / ~ %4 %3" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:503 +msgctxt "@label Print estimates: m for meters, g for grams" +msgid "%1m / ~ %2g" +msgstr "%1m / ~ %2g" + +#: /home/ruben/Projects/Cura/resources/qml/Sidebar.qml:586 +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:591 +msgctxt "@tooltip" +msgid "" +"Custom Print Setup

    Print with finegrained control over every " +"last bit of the slicing process." +msgstr "自訂列印設定
    對切片過程中的每一個細節進行精細控制。" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:49 +msgctxt "@title:menuitem %1 is the automatically selected material" +msgid "Automatic: %1" +msgstr "自動:%1" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:12 +msgctxt "@title:menu menubar:toplevel" +msgid "&View" +msgstr "檢視(&V)" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/NozzleMenu.qml:40 +msgctxt "@title:menuitem %1 is the nozzle currently loaded in the printer" +msgid "Automatic: %1" +msgstr "自動: %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] "列印所選模型:" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:83 +msgctxt "@title:window" +msgid "Multiply Selected Model" +msgid_plural "Multiply Selected Models" +msgstr[0] "複製所選模型" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ContextMenu.qml:108 +msgctxt "@label" +msgid "Number of Copies" +msgstr "複製個數" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/RecentFilesMenu.qml:13 +msgctxt "@title:menu menubar:file" +msgid "Open &Recent" +msgstr "最近開啟的檔案(&R)" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:38 +msgctxt "@info:status" +msgid "No printer connected" +msgstr "沒有連接印表機" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:90 +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:138 +msgctxt "@label" +msgid "Extruder" +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 "" +"加熱端的目標溫度。加熱端將加熱或冷卻至此溫度。若設定為 0,則關閉加熱端的加" +"熱。" + +#: /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:188 +msgctxt "@tooltip" +msgid "The colour of the material in this extruder." +msgstr "該擠出機中耗材的顏色。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:220 +msgctxt "@tooltip" +msgid "The material in this extruder." +msgstr "該擠出機中的耗材。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:252 +msgctxt "@tooltip" +msgid "The nozzle inserted in this extruder." +msgstr "該擠出機所使用的噴頭。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:283 +msgctxt "@label" +msgid "Build plate" +msgstr "列印平台" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:312 +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:344 +msgctxt "@tooltip" +msgid "The current temperature of the heated bed." +msgstr "熱床目前溫度。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:423 +msgctxt "@tooltip of temperature input" +msgid "The temperature to pre-heat the bed to." +msgstr "熱床的預熱溫度。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 +msgctxt "@button Cancel pre-heating" +msgid "Cancel" +msgstr "取消" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:623 +msgctxt "@button" +msgid "Pre-heat" +msgstr "預熱" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:650 +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:703 +msgctxt "@label" +msgid "Printer control" +msgstr "印表機控制" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:717 +msgctxt "@label" +msgid "Jog Position" +msgstr "輕搖位置" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:735 +msgctxt "@label" +msgid "X/Y" +msgstr "X/Y" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:842 +msgctxt "@label" +msgid "Z" +msgstr "Z" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:907 +msgctxt "@label" +msgid "Jog Distance" +msgstr "輕搖距離" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1018 +msgctxt "@label" +msgid "Active print" +msgstr "正在列印" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1023 +msgctxt "@label" +msgid "Job Name" +msgstr "作業名稱" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1029 +msgctxt "@label" +msgid "Printing Time" +msgstr "列印時間" + +#: /home/ruben/Projects/Cura/resources/qml/PrintMonitor.qml:1035 +msgctxt "@label" +msgid "Estimated time left" +msgstr "預計剩餘時間" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:72 +msgctxt "@action:inmenu" +msgid "Toggle Fu&ll Screen" +msgstr "切換全螢幕(&F)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:79 +msgctxt "@action:inmenu menubar:edit" +msgid "&Undo" +msgstr "復原(&U)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:89 +msgctxt "@action:inmenu menubar:edit" +msgid "&Redo" +msgstr "取消復原(&R)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:99 +msgctxt "@action:inmenu menubar:file" +msgid "&Quit" +msgstr "退出(&Q)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:107 +msgctxt "@action:inmenu menubar:view" +msgid "&Reset camera position" +msgstr "重置視角位置" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:114 +msgctxt "@action:inmenu" +msgid "Configure Cura..." +msgstr "設定 Cura…" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:121 +msgctxt "@action:inmenu menubar:printer" +msgid "&Add Printer..." +msgstr "新增印表機(&A)…" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:127 +msgctxt "@action:inmenu menubar:printer" +msgid "Manage Pr&inters..." +msgstr "管理印表機(&I)..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:134 +msgctxt "@action:inmenu" +msgid "Manage Materials..." +msgstr "管理耗材…" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:142 +msgctxt "@action:inmenu menubar:profile" +msgid "&Update profile with current settings/overrides" +msgstr "使用目前設定 / 覆寫更新列印參數(&U)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:150 +msgctxt "@action:inmenu menubar:profile" +msgid "&Discard current changes" +msgstr "捨棄目前更改(&D)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:162 +msgctxt "@action:inmenu menubar:profile" +msgid "&Create profile from current settings/overrides..." +msgstr "從目前設定 / 覆寫值創建列印參數(&C)…" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:168 +msgctxt "@action:inmenu menubar:profile" +msgid "Manage Profiles..." +msgstr "管理列印參數.." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:175 +msgctxt "@action:inmenu menubar:help" +msgid "Show Online &Documentation" +msgstr "顯示線上說明文件(&D)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:183 +msgctxt "@action:inmenu menubar:help" +msgid "Report a &Bug" +msgstr "BUG 回報(&B)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:191 +msgctxt "@action:inmenu menubar:help" +msgid "&About..." +msgstr "關於(&A)…" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:198 +msgctxt "@action:inmenu menubar:edit" +msgid "Delete &Selected Model" +msgid_plural "Delete &Selected Models" +msgstr[0] "刪除所選模型(&S)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:208 +msgctxt "@action:inmenu menubar:edit" +msgid "Center Selected Model" +msgid_plural "Center Selected Models" +msgstr[0] "置中所選模型" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:217 +msgctxt "@action:inmenu menubar:edit" +msgid "Multiply Selected Model" +msgid_plural "Multiply Selected Models" +msgstr[0] "複製所選模型" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:226 +msgctxt "@action:inmenu" +msgid "Delete Model" +msgstr "刪除模型" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:234 +msgctxt "@action:inmenu" +msgid "Ce&nter Model on Platform" +msgstr "將模型置中(&N)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:240 +msgctxt "@action:inmenu menubar:edit" +msgid "&Group Models" +msgstr "群組模型(&G)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:250 +msgctxt "@action:inmenu menubar:edit" +msgid "Ungroup Models" +msgstr "取消模型群組" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:260 +msgctxt "@action:inmenu menubar:edit" +msgid "&Merge Models" +msgstr "結合模型(&M)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:270 +msgctxt "@action:inmenu" +msgid "&Multiply Model..." +msgstr "複製模型…(&M)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +msgctxt "@action:inmenu menubar:edit" +msgid "&Select All Models" +msgstr "選擇所有模型(&S)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:287 +msgctxt "@action:inmenu menubar:edit" +msgid "&Clear Build Plate" +msgstr "清空列印平台(&C)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:297 +msgctxt "@action:inmenu menubar:file" +msgid "Re&load All Models" +msgstr "重新載入所有模型(&L)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:306 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange All Models" +msgstr "編位所有的模型" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:314 +msgctxt "@action:inmenu menubar:edit" +msgid "Arrange Selection" +msgstr "為所選模型編位" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:321 +msgctxt "@action:inmenu menubar:edit" +msgid "Reset All Model Positions" +msgstr "重置所有模型位置" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:328 +msgctxt "@action:inmenu menubar:edit" +msgid "Reset All Model &Transformations" +msgstr "重置所有模型旋轉(&T)" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:335 +msgctxt "@action:inmenu menubar:file" +msgid "&Open File(s)..." +msgstr "開啟檔案(&O)…" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:343 +msgctxt "@action:inmenu menubar:file" +msgid "&New Project..." +msgstr "新建專案(&N)…" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:350 +msgctxt "@action:inmenu menubar:help" +msgid "Show Engine &Log..." +msgstr "顯示切片引擎日誌(&L)..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:358 +msgctxt "@action:inmenu menubar:help" +msgid "Show Configuration Folder" +msgstr "顯示設定資料夾" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:365 +msgctxt "@action:menu" +msgid "Configure setting visibility..." +msgstr "參數顯示設定..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:372 +msgctxt "@action:menu" +msgid "Browse plugins..." +msgstr "瀏覽外掛..." + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:379 +msgctxt "@action:menu" +msgid "Installed plugins..." +msgstr "安裝外掛..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:28 +msgctxt "@label:PrintjobStatus" +msgid "Please load a 3D model" +msgstr "請載入一個 3D 模型" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:34 +msgctxt "@label:PrintjobStatus" +msgid "Ready to slice" +msgstr "切片已準備就緒" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:36 +msgctxt "@label:PrintjobStatus" +msgid "Slicing..." +msgstr "正在切片..." + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:38 +msgctxt "@label:PrintjobStatus %1 is target operation" +msgid "Ready to %1" +msgstr "%1 已準備就緒" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:40 +msgctxt "@label:PrintjobStatus" +msgid "Unable to Slice" +msgstr "無法切片" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:42 +msgctxt "@label:PrintjobStatus" +msgid "Slicing unavailable" +msgstr "切片無法使用" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +msgctxt "@label:Printjob" +msgid "Prepare" +msgstr "準備" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:162 +msgctxt "@label:Printjob" +msgid "Cancel" +msgstr "取消" + +#: /home/ruben/Projects/Cura/resources/qml/SaveButton.qml:302 +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:620 +msgctxt "@title:window" +msgid "Open file(s)" +msgstr "開啟檔案" + +#: /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 "" +"我們已經在你所選擇的檔案中找到一個或多個專案檔案,但一次只能開啟一個專案檔" +"案。我們建議只從那些檔案中匯入模型而不開啟專案。你要繼續操作嗎?" + +#: /home/ruben/Projects/Cura/resources/qml/OpenFilesIncludingProjectsDialog.qml:99 +msgctxt "@action:button" +msgid "Import all as models" +msgstr "匯入所有模型" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:19 +msgctxt "@title:window" +msgid "Ultimaker Cura" +msgstr "Ultimaker Cura" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:81 +msgctxt "@title:menu menubar:toplevel" +msgid "&File" +msgstr "檔案(&F)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:98 +msgctxt "@action:inmenu menubar:file" +msgid "&Save Selection to File" +msgstr "儲存到檔案(&S)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:107 +msgctxt "@title:menu menubar:file" +msgid "Save &As..." +msgstr "另存為(&A)…" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:118 +msgctxt "@title:menu menubar:file" +msgid "Save project" +msgstr "儲存專案" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:141 +msgctxt "@title:menu menubar:toplevel" +msgid "&Edit" +msgstr "編輯(&E)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:158 +msgctxt "@title:menu" +msgid "&View" +msgstr "檢視(&V)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:163 +msgctxt "@title:menu" +msgid "&Settings" +msgstr "設定(&S)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:165 +msgctxt "@title:menu menubar:toplevel" +msgid "&Printer" +msgstr "印表機(&P)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:175 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:187 +msgctxt "@title:menu" +msgid "&Material" +msgstr "耗材(&M)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:188 +msgctxt "@title:menu" +msgid "&Profile" +msgstr "列印參數(&P)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:180 +msgctxt "@action:inmenu" +msgid "Set as Active Extruder" +msgstr "設為主要擠出機" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:198 +msgctxt "@title:menu menubar:toplevel" +msgid "E&xtensions" +msgstr "擴充功能(&X)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 +msgctxt "@title:menu menubar:toplevel" +msgid "P&lugins" +msgstr "外掛(&l)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:240 +msgctxt "@title:menu menubar:toplevel" +msgid "P&references" +msgstr "偏好設定(&R)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:248 +msgctxt "@title:menu menubar:toplevel" +msgid "&Help" +msgstr "幫助(&H)" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:330 +msgctxt "@action:button" +msgid "Open File" +msgstr "開啟檔案" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:442 +msgctxt "@title:tab" +msgid "Settings" +msgstr "設定" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:478 +msgctxt "@title:window" +msgid "New project" +msgstr "新建專案" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:479 +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:721 +msgctxt "@window:title" +msgid "Install Plugin" +msgstr "安裝外掛" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:728 +msgctxt "@title:window" +msgid "Open File(s)" +msgstr "開啟檔案" + +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:731 +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 檔案,請僅選擇一個。" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:14 +msgctxt "@title:window" +msgid "Save Project" +msgstr "儲存專案" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:136 +msgctxt "@action:label" +msgid "Extruder %1" +msgstr "擠出機 %1" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:146 +msgctxt "@action:label" +msgid "%1 & material" +msgstr "%1 & 耗材" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:242 +msgctxt "@action:label" +msgid "Don't show project summary on save again" +msgstr "儲存時不再顯示專案摘要" + +#: /home/ruben/Projects/Cura/resources/qml/WorkspaceSummaryDialog.qml:264 +msgctxt "@action:button" +msgid "Save" +msgstr "儲存" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:74 +msgctxt "@title:tab" +msgid "Prepare" +msgstr "準備" + +#: /home/ruben/Projects/Cura/resources/qml/Topbar.qml:100 +msgctxt "@title:tab" +msgid "Monitor" +msgstr "監控" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:163 +msgctxt "@label" +msgid "Layer Height" +msgstr "層高" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:323 +msgctxt "@tooltip" +msgid "" +"A custom profile is currently active. To enable the quality slider, choose a " +"default quality profile in Custom tab" +msgstr "" +"目前正使用自訂列印參數。若要使用品質滑動條,在自訂分頁中選擇預設的列印參數" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:340 +msgctxt "@label" +msgid "Print Speed" +msgstr "列印速度" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:350 +msgctxt "@label" +msgid "Slower" +msgstr "更慢" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:361 +msgctxt "@label" +msgid "Faster" +msgstr "更快" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:388 +msgctxt "@tooltip" +msgid "" +"You have modified some profile settings. If you want to change these go to " +"custom mode." +msgstr "你修改過部份列印參數設定。如果你想改變這些設定,請切換到自訂模式。" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:413 +msgctxt "@label" +msgid "Infill" +msgstr "填充" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:633 +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:645 +msgctxt "@label" +msgid "Enable gradual" +msgstr "啟用漸層" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:712 +msgctxt "@label" +msgid "Generate Support" +msgstr "產生支撐" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:746 +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:764 +msgctxt "@label" +msgid "Support Extruder" +msgstr "支撐用擠出機" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:816 +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:839 +msgctxt "@label" +msgid "Build Plate Adhesion" +msgstr "列印平台附著" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarSimple.qml:894 +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:934 +msgctxt "@label" +msgid "" +"Need help improving your prints?
    Read the Ultimaker " +"Troubleshooting Guides" +msgstr "需要幫助改善你的列印?閱讀 Ultimaker 故障排除指南" + +#: /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] "用 %1 列印所選模型" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:20 +msgctxt "@title:window" +msgid "Open project file" +msgstr "開啟專案檔案" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:72 +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 "這是一個 Cura 專案檔案。你想將其作為一個專案開啟還是從中匯入模型?" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:103 +msgctxt "@action:button" +msgid "Open as project" +msgstr "作為專案開啟" + +#: /home/ruben/Projects/Cura/resources/qml/AskOpenAsProjectOrModelsDialog.qml:122 +msgctxt "@action:button" +msgid "Import models" +msgstr "匯入模型" + +#: /home/ruben/Projects/Cura/resources/qml/EngineLog.qml:15 +msgctxt "@title:window" +msgid "Engine Log" +msgstr "引擎日誌" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:242 +msgctxt "@label" +msgid "Material" +msgstr "耗材" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:349 +msgctxt "@label" +msgid "Check compatibility" +msgstr "檢查耗材相容性" + +#: /home/ruben/Projects/Cura/resources/qml/SidebarHeader.qml:369 +msgctxt "@tooltip" +msgid "Click to check the material compatibility on Ultimaker.com." +msgstr "點擊查看 Ultimaker.com 上的耗材相容性。" + +#: MachineSettingsAction/plugin.json +msgctxt "description" +msgid "" +"Provides a way to change machine settings (such as build volume, nozzle " +"size, etc)" +msgstr "提供更改印表機設定(如成形空間體積、噴頭口徑等)的方法" + +#: MachineSettingsAction/plugin.json +msgctxt "name" +msgid "Machine Settings action" +msgstr "印表機設定操作" + +#: XRayView/plugin.json +msgctxt "description" +msgid "Provides the X-Ray view." +msgstr "提供透視檢視。" + +#: XRayView/plugin.json +msgctxt "name" +msgid "X-Ray View" +msgstr "透視檢視" + +#: X3DReader/plugin.json +msgctxt "description" +msgid "Provides support for reading X3D files." +msgstr "提供讀取 X3D 檔案的支援。" + +#: X3DReader/plugin.json +msgctxt "name" +msgid "X3D Reader" +msgstr "X3D 讀取器" + +#: GCodeWriter/plugin.json +msgctxt "description" +msgid "Writes GCode to a file." +msgstr "將 GCode 寫入至檔案。" + +#: GCodeWriter/plugin.json +msgctxt "name" +msgid "GCode Writer" +msgstr "GCode 寫入器" + +#: cura-god-mode-plugin/src/GodMode/plugin.json +msgctxt "description" +msgid "Dump the contents of all settings to a HTML file." +msgstr "將所有設定內容轉儲至 HTML 檔案。" + +#: cura-god-mode-plugin/src/GodMode/plugin.json +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 "接受 G-Code 並透過 WiFi 將其發送到 Doodle3D 無線網路盒。" + +#: Doodle3D-cura-plugin/Doodle3D/plugin.json +msgctxt "name" +msgid "Doodle3D WiFi-Box" +msgstr "Doodle3D 無線網路盒" + +#: ChangeLogPlugin/plugin.json +msgctxt "description" +msgid "Shows changes since latest checked version." +msgstr "顯示最新版本更動。" + +#: ChangeLogPlugin/plugin.json +msgctxt "name" +msgid "Changelog" +msgstr "更新日誌" + +#: ProfileFlattener/plugin.json +msgctxt "description" +msgid "Create a flattend quality changes profile." +msgstr "創建一份合併品質變化列印參數。" + +#: ProfileFlattener/plugin.json +msgctxt "name" +msgid "Profile flatener" +msgstr "列印參數合併器" + +#: USBPrinting/plugin.json +msgctxt "description" +msgid "" +"Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgstr "接受 G-Code 並且傳送到印表機。此外掛也可以更新韌體。" + +#: USBPrinting/plugin.json +msgctxt "name" +msgid "USB printing" +msgstr "USB 連線列印" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "description" +msgid "Provides removable drive hotplugging and writing support." +msgstr "提供行動裝置熱插拔和寫入檔案的支援。" + +#: RemovableDriveOutputDevice/plugin.json +msgctxt "name" +msgid "Removable Drive Output Device Plugin" +msgstr "行動裝置輸出設備外掛" + +#: UM3NetworkPrinting/plugin.json +msgctxt "description" +msgid "Manages network connections to Ultimaker 3 printers" +msgstr "管理與 Ultimaker 3 印表機的網路連接" + +#: UM3NetworkPrinting/plugin.json +msgctxt "name" +msgid "UM3 Network Connection" +msgstr "UM3 網路連接" + +#: 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" +msgstr "" +"讓你可以透過 SolidWorks 自身開啟特定檔案。隨後會將這些檔案進行轉換並載入 Cura" + +#: CuraSolidWorksPlugin/plugin.json +msgctxt "name" +msgid "SolidWorks Integration" +msgstr "SolidWorks 整合" + +#: SimulationView/plugin.json +msgctxt "description" +msgid "Provides the Simulation view." +msgstr "提供模擬檢視。" + +#: SimulationView/plugin.json +msgctxt "name" +msgid "Simulation View" +msgstr "模擬檢視" + +#: PostProcessingPlugin/plugin.json +msgctxt "description" +msgid "Extension that allows for user created scripts for post processing" +msgstr "擴充程式(允許用戶建立腳本進行後處理)" + +#: PostProcessingPlugin/plugin.json +msgctxt "name" +msgid "Post Processing" +msgstr "後處理" + +#: AutoSave/plugin.json +msgctxt "description" +msgid "Automatically saves Preferences, Machines and Profiles after changes." +msgstr "偏好設定、機器設定和列印參數修改後自動儲存。" + +#: AutoSave/plugin.json +msgctxt "name" +msgid "Auto Save" +msgstr "自動儲存" + +#: SliceInfoPlugin/plugin.json +msgctxt "description" +msgid "Submits anonymous slice info. Can be disabled through preferences." +msgstr "提交匿名切片資訊。這項功能可以在偏好設定中關閉。" + +#: SliceInfoPlugin/plugin.json +msgctxt "name" +msgid "Slice info" +msgstr "切片資訊" + +#: XmlMaterialProfile/plugin.json +msgctxt "description" +msgid "Provides capabilities to read and write XML-based material profiles." +msgstr "提供讀寫 XML 格式耗材參數的功能。" + +#: XmlMaterialProfile/plugin.json +msgctxt "name" +msgid "Material Profiles" +msgstr "耗材參數" + +#: LegacyProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from legacy Cura versions." +msgstr "提供匯入 Cura 舊版本列印參數的支援。" + +#: LegacyProfileReader/plugin.json +msgctxt "name" +msgid "Legacy Cura Profile Reader" +msgstr "舊版 Cura 列印參數讀取器" + +#: GCodeProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing profiles from g-code files." +msgstr "提供匯入 G-code 檔案中列印參數的支援。" + +#: GCodeProfileReader/plugin.json +msgctxt "name" +msgid "GCode Profile Reader" +msgstr "G-code 列印參數讀取器" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." +msgstr "將設定從 Cura 2.5 版本升級至 2.6 版本。" + +#: VersionUpgrade/VersionUpgrade25to26/plugin.json +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 "將設定從 Cura 2.7 版本升級至 3.0 版本。" + +#: VersionUpgrade/VersionUpgrade27to30/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.7 to 3.0" +msgstr "升級版本 2.7 到 3.0" + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 3.0 to Cura 3.1." +msgstr "將設定從 Cura 3.0 版本升級至 3.1 版本。" + +#: VersionUpgrade/VersionUpgrade30to31/plugin.json +msgctxt "name" +msgid "Version Upgrade 3.0 to 3.1" +msgstr "升級版本 3.0 到 3.1" + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." +msgstr "將設定從 Cura 2.6 版本升級至 2.7 版本。" + +#: VersionUpgrade/VersionUpgrade26to27/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.6 to 2.7" +msgstr "升級版本 2.6 到 2.7" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.1 to Cura 2.2." +msgstr "將設定從 Cura 2.1 版本升級至 2.2 版本。" + +#: VersionUpgrade/VersionUpgrade21to22/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.1 to 2.2" +msgstr "升級版本 2.1 到 2.2" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 2.2 to Cura 2.4." +msgstr "將設定從 Cura 2.2 版本升級至 2.4 版本。" + +#: VersionUpgrade/VersionUpgrade22to24/plugin.json +msgctxt "name" +msgid "Version Upgrade 2.2 to 2.4" +msgstr "升級版本 2.2 到 2.4" + +#: ImageReader/plugin.json +msgctxt "description" +msgid "Enables ability to generate printable geometry from 2D image files." +msgstr "支援從 2D 圖片檔案產生可列印 3D 模型的能力。" + +#: ImageReader/plugin.json +msgctxt "name" +msgid "Image Reader" +msgstr "圖片讀取器" + +#: CuraEngineBackend/plugin.json +msgctxt "description" +msgid "Provides the link to the CuraEngine slicing backend." +msgstr "提供連結到 Cura 切片引擎後台。" + +#: CuraEngineBackend/plugin.json +msgctxt "name" +msgid "CuraEngine Backend" +msgstr "Cura 引擎後台" + +#: PerObjectSettingsTool/plugin.json +msgctxt "description" +msgid "Provides the Per Model Settings." +msgstr "提供對每個模型的單獨設定。" + +#: PerObjectSettingsTool/plugin.json +msgctxt "name" +msgid "Per Model Settings Tool" +msgstr "單一模型設定工具" + +#: cura-siemensnx-plugin/plugin.json +msgctxt "description" +msgid "Helps you to install an 'export to Cura' button in Siemens NX." +msgstr "協助你在 Siemens NX 中安裝一個「匯出到 Cura」按鈕。" + +#: cura-siemensnx-plugin/plugin.json +msgctxt "name" +msgid "Siemens NX Integration" +msgstr "Siemens NX 整合" + +#: 3MFReader/plugin.json +msgctxt "description" +msgid "Provides support for reading 3MF files." +msgstr "提供讀取 3MF 格式檔案的支援。" + +#: 3MFReader/plugin.json +msgctxt "name" +msgid "3MF Reader" +msgstr "3MF 讀取器" + +#: PluginBrowser/plugin.json +msgctxt "description" +msgid "Find, manage and install new plugins." +msgstr "尋找、管理和安裝新外掛。" + +#: PluginBrowser/plugin.json +msgctxt "name" +msgid "Plugin Browser" +msgstr "外掛瀏覽器" + +#: SolidView/plugin.json +msgctxt "description" +msgid "Provides a normal solid mesh view." +msgstr "提供一個基本的實體網格檢視。" + +#: SolidView/plugin.json +msgctxt "name" +msgid "Solid View" +msgstr "實體檢視" + +#: GCodeReader/plugin.json +msgctxt "description" +msgid "Allows loading and displaying G-code files." +msgstr "允許載入和顯示 G-code 檔案。" + +#: GCodeReader/plugin.json +msgctxt "name" +msgid "G-code Reader" +msgstr "G-code 讀取器" + +#: CuraProfileWriter/plugin.json +msgctxt "description" +msgid "Provides support for exporting Cura profiles." +msgstr "提供匯出 Cura 列印參數的支援。" + +#: CuraProfileWriter/plugin.json +msgctxt "name" +msgid "Cura Profile Writer" +msgstr "Cura 列印參數寫入器" + +#: 3MFWriter/plugin.json +msgctxt "description" +msgid "Provides support for writing 3MF files." +msgstr "提供寫入 3MF 檔案的支援。" + +#: 3MFWriter/plugin.json +msgctxt "name" +msgid "3MF Writer" +msgstr "3MF 寫入器" + +#: UserAgreementPlugin/plugin.json +msgctxt "description" +msgid "Ask the user once if he/she agrees with our license" +msgstr "詢問使用者是否同意我們的授權協議" + +#: UserAgreementPlugin/plugin.json +msgctxt "name" +msgid "UserAgreement" +msgstr "使用者授權" + +#: UltimakerMachineActions/plugin.json +msgctxt "description" +msgid "" +"Provides machine actions for Ultimaker machines (such as bed leveling " +"wizard, selecting upgrades, etc)" +msgstr "提供 Ultimaker 印表機專屬功能(如平台調平精靈、選擇升級等)" + +#: UltimakerMachineActions/plugin.json +msgctxt "name" +msgid "Ultimaker machine actions" +msgstr "Ultimaker 印表機操作" + +#: CuraProfileReader/plugin.json +msgctxt "description" +msgid "Provides support for importing Cura profiles." +msgstr "提供匯入 Cura 列印參數的支援。" + +#: CuraProfileReader/plugin.json +msgctxt "name" +msgid "Cura Profile Reader" +msgstr "Cura 列印參數讀取器" + +#~ msgctxt "@label:status" +#~ msgid "Blocked" +#~ msgstr "暫停" + +#~ msgctxt "@label:status" +#~ msgid "Can't start print" +#~ msgstr "無法開始列印" + +#~ msgctxt "@info:title" +#~ msgid "Print Details" +#~ msgstr "列印細項設定" + +#~ 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 "" +#~ "為了確保您的 {machine_name} 配備了最新功能,建議定期更新韌體。 這可以在 " +#~ "{machine_name} 上完成(有連接到網絡時)或透過 USB 完成。" + +msgctxt "@info:title" +msgid "Layer View" +msgstr "分層檢視" + +#~ msgctxt "@menuitem" +#~ msgid "Browse plugins" +#~ msgstr "瀏覽外掛" + +#~ msgctxt "@info:title" +#~ msgid "Export Details" +#~ msgstr "匯出細項設定" + +#~ 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 "" +#~ "

    發生了致命錯誤,我們無法繼續!

    \n" +#~ "

    請利用下方資訊回報錯誤到 http://github.com/Ultimaker/Cura/issues

    \n" +#~ " " + +#~ msgctxt "@action:button" +#~ msgid "Open Web Page" +#~ msgstr "開啟網頁" + +#~ msgctxt "@action:button" +#~ msgid "Ok" +#~ msgstr "確定" + +#~ msgctxt "@label" +#~ msgid "" +#~ "This printer is not set up to host a group of connected Ultimaker 3 " +#~ "printers" +#~ msgstr "這台印表機未設定成管理一組連線的 Ultimaker 3 印表機的主機" + +#~ msgctxt "@label" +#~ msgid "" +#~ "This printer is the host for a group of %1 connected Ultimaker 3 printers" +#~ msgstr "這台印表機是 %1 台 Ultimaker 3 印表機群組的主機" + +#~ msgctxt "@label:status" +#~ msgid "Preparing" +#~ msgstr "正在準備" + +#~ msgctxt "@label" +#~ msgid "Completed on: " +#~ msgstr "完成時間:" + +#~ msgctxt "@label" +#~ msgid "PRINTER GROUP" +#~ msgstr "印表機群組" + +#~ msgctxt "@description" +#~ msgid "Print time" +#~ msgstr "列印時間" + +#~ msgctxt "@title:window" +#~ msgid "Cura" +#~ msgstr "Cura" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection (Cluster)" +#~ msgstr "UM3 網路連接(叢集)" + +#~ msgctxt "description" +#~ msgid "Provides the Layer view." +#~ msgstr "提供分層檢視。" + +msgctxt "name" +msgid "Layer View" +msgstr "分層檢視" + +#~ msgctxt "@item:inlistbox" +#~ msgid "X-Ray" +#~ msgstr "透視" + +#~ msgctxt "@label" +#~ msgid "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: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 "層" + +#~ msgctxt "@item:inmenu" +#~ msgid "Solid" +#~ msgstr "實體" + +#~ 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 "View Mode: Layers" +#~ msgstr "檢視模式:分層" + +#~ 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 寫入器" + +#Added manually to fix a string that was changed after string freeze. +msgctxt "@item:inlistbox" +msgid "Layer view" +msgstr "分層檢視" \ No newline at end of file diff --git a/resources/i18n/zh_TW/fdmextruder.def.json.po b/resources/i18n/zh_TW/fdmextruder.def.json.po new file mode 100644 index 0000000000..1b5f351cf9 --- /dev/null +++ b/resources/i18n/zh_TW/fdmextruder.def.json.po @@ -0,0 +1,210 @@ +# Cura JSON setting files +# 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 3.1\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" +"PO-Revision-Date: 2017-11-22 23:36+0800\n" +"Last-Translator: Zhang Heh Ji \n" +"Language-Team: TEAM\n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.4\n" + +#: fdmextruder.def.json +msgctxt "machine_settings label" +msgid "Machine" +msgstr "機型" + +#: fdmextruder.def.json +msgctxt "machine_settings description" +msgid "Machine specific settings" +msgstr "機器詳細設定" + +#: fdmextruder.def.json +msgctxt "extruder_nr label" +msgid "Extruder" +msgstr "擠出機" + +#: fdmextruder.def.json +msgctxt "extruder_nr description" +msgid "The extruder train used for printing. This is used in multi-extrusion." +msgstr "用於列印的擠出機,在多擠出機情況下適用。" + +#: fdmextruder.def.json +msgctxt "machine_nozzle_id label" +msgid "Nozzle ID" +msgstr "噴頭 ID" + +#: fdmextruder.def.json +msgctxt "machine_nozzle_id description" +msgid "The nozzle ID for an extruder train, such as \"AA 0.4\" and \"BB 0.8\"." +msgstr "擠出機組的噴頭 ID,比如 \"AA 0.4\" 和 \"BB 0.8\"。" + +#: fdmextruder.def.json +msgctxt "machine_nozzle_size label" +msgid "Nozzle Diameter" +msgstr "噴頭直徑" + +#: fdmextruder.def.json +msgctxt "machine_nozzle_size description" +msgid "" +"The inner diameter of the nozzle. Change this setting when using a non-" +"standard nozzle size." +msgstr "噴頭內徑,在使用非標準噴頭尺寸時需更改此設定。" + +#: fdmextruder.def.json +msgctxt "machine_nozzle_offset_x label" +msgid "Nozzle X Offset" +msgstr "噴頭 X 軸偏移量" + +#: fdmextruder.def.json +msgctxt "machine_nozzle_offset_x description" +msgid "The x-coordinate of the offset of the nozzle." +msgstr "噴頭 X 軸座標偏移。" + +#: fdmextruder.def.json +msgctxt "machine_nozzle_offset_y label" +msgid "Nozzle Y Offset" +msgstr "噴頭 Y 軸偏移量" + +#: fdmextruder.def.json +msgctxt "machine_nozzle_offset_y description" +msgid "The y-coordinate of the offset of the nozzle." +msgstr "噴頭 Y 軸座標偏移。" + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_code label" +msgid "Extruder Start G-Code" +msgstr "擠出機起始 G-code" + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_code description" +msgid "Start g-code to execute whenever turning the extruder on." +msgstr "打開擠出機將執行此段 G-code。" + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_pos_abs label" +msgid "Extruder Start Position Absolute" +msgstr "擠出機起點絕對位置" + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_pos_abs description" +msgid "" +"Make the extruder starting position absolute rather than relative to the " +"last-known location of the head." +msgstr "讓擠出機以絕對位置做為起點,而不是與前一次位置的相對位置。" + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_pos_x label" +msgid "Extruder Start Position X" +msgstr "擠出機起始位置 X 座標" + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_pos_x description" +msgid "The x-coordinate of the starting position when turning the extruder on." +msgstr "打開擠出機時起始位置的 X 座標。" + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_pos_y label" +msgid "Extruder Start Position Y" +msgstr "擠出機起始位置 Y 座標" + +#: fdmextruder.def.json +msgctxt "machine_extruder_start_pos_y description" +msgid "The y-coordinate of the starting position when turning the extruder on." +msgstr "打開擠壓機時的起始位置 Y 座標。" + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_code label" +msgid "Extruder End G-Code" +msgstr "擠出機結束 Gcode" + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_code description" +msgid "End g-code to execute whenever turning the extruder off." +msgstr "在關閉擠出機時,執行結束 G-code。" + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_pos_abs label" +msgid "Extruder End Position Absolute" +msgstr "擠出機終點絕對位置" + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_pos_abs description" +msgid "" +"Make the extruder ending position absolute rather than relative to the last-" +"known location of the head." +msgstr "讓擠出機以絕對位置為終點,而不是與前一次位置的相對位置。" + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_pos_x label" +msgid "Extruder End Position X" +msgstr "擠出機結束位置 X 座標" + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_pos_x description" +msgid "The x-coordinate of the ending position when turning the extruder off." +msgstr "關閉擠出機時的終止位置的 X 座標。" + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_pos_y label" +msgid "Extruder End Position Y" +msgstr "擠出機終點位置 Y 座標" + +#: fdmextruder.def.json +msgctxt "machine_extruder_end_pos_y description" +msgid "The y-coordinate of the ending position when turning the extruder off." +msgstr "關閉擠出機時的終止位置的 Y 座標。" + +#: fdmextruder.def.json +msgctxt "extruder_prime_pos_z label" +msgid "Extruder Prime Z Position" +msgstr "擠出機初始 Z 軸位置" + +#: fdmextruder.def.json +msgctxt "extruder_prime_pos_z description" +msgid "" +"The Z coordinate of the position where the nozzle primes at the start of " +"printing." +msgstr "列印開始時,噴頭在 Z 軸座標上的起始位置." + +#: fdmextruder.def.json +msgctxt "platform_adhesion label" +msgid "Build Plate Adhesion" +msgstr "列印平台附著" + +#: fdmextruder.def.json +msgctxt "platform_adhesion description" +msgid "Adhesion" +msgstr "附著" + +#: fdmextruder.def.json +msgctxt "extruder_prime_pos_x label" +msgid "Extruder Prime X Position" +msgstr "擠出機 X 軸座標" + +#: fdmextruder.def.json +msgctxt "extruder_prime_pos_x description" +msgid "" +"The X coordinate of the position where the nozzle primes at the start of " +"printing." +msgstr "列印開始時,噴頭在 X 軸上初始位置。" + +#: fdmextruder.def.json +msgctxt "extruder_prime_pos_y label" +msgid "Extruder Prime Y Position" +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 軸座標上初始位置。" diff --git a/resources/i18n/zh_TW/fdmprinter.def.json.po b/resources/i18n/zh_TW/fdmprinter.def.json.po new file mode 100644 index 0000000000..2be6fbeefe --- /dev/null +++ b/resources/i18n/zh_TW/fdmprinter.def.json.po @@ -0,0 +1,6222 @@ +# Cura JSON setting files +# 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 3.1\n" +"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" +"POT-Creation-Date: 2017-08-02 16:53+0000\n" +"PO-Revision-Date: 2017-11-25 00:31+0800\n" +"Last-Translator: Zhang Heh Ji \n" +"Language-Team: TEAM\n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.4\n" + +#: fdmprinter.def.json +msgctxt "machine_settings label" +msgid "Machine" +msgstr "機器" + +#: fdmprinter.def.json +msgctxt "machine_settings description" +msgid "Machine specific settings" +msgstr "機器詳細設定" + +#: fdmprinter.def.json +msgctxt "machine_name label" +msgid "Machine Type" +msgstr "機器類型" + +#: fdmprinter.def.json +msgctxt "machine_name description" +msgid "The name of your 3D printer model." +msgstr "你的 3D 印表機型號的名稱。" + +#: fdmprinter.def.json +msgctxt "machine_show_variants label" +msgid "Show Machine Variants" +msgstr "顯示印表機型號" + +#: fdmprinter.def.json +msgctxt "machine_show_variants description" +msgid "" +"Whether to show the different variants of this machine, which are described " +"in separate json files." +msgstr "是否顯示這台印表機在不同的 JSON 檔案中所描述的型號。" + +#: fdmprinter.def.json +msgctxt "machine_start_gcode label" +msgid "Start GCode" +msgstr "起始 G-code" + +#: fdmprinter.def.json +msgctxt "machine_start_gcode description" +msgid "" +"Gcode commands to be executed at the very start - separated by \n" +"." +msgstr "" +"在開始後執行的 G-code 命令 - 以 \n" +" 分行。" + +#: fdmprinter.def.json +msgctxt "machine_end_gcode label" +msgid "End GCode" +msgstr "結束 G-code" + +#: fdmprinter.def.json +msgctxt "machine_end_gcode description" +msgid "" +"Gcode commands to be executed at the very end - separated by \n" +"." +msgstr "" +"在結束前執行的 G-code 命令 - 以 \n" +" 分行。" + +#: fdmprinter.def.json +msgctxt "material_guid label" +msgid "Material GUID" +msgstr "耗材 GUID" + +#: fdmprinter.def.json +msgctxt "material_guid description" +msgid "GUID of the material. This is set automatically. " +msgstr "耗材 GUID,此項為自動設定。" + +#: fdmprinter.def.json +msgctxt "material_bed_temp_wait label" +msgid "Wait for Build Plate Heatup" +msgstr "等待列印平台加熱" + +#: fdmprinter.def.json +msgctxt "material_bed_temp_wait description" +msgid "" +"Whether to insert a command to wait until the build plate temperature is " +"reached at the start." +msgstr "是否插入一條命令,在開始時等待列印平台達到設定溫度。" + +#: fdmprinter.def.json +msgctxt "material_print_temp_wait label" +msgid "Wait for Nozzle Heatup" +msgstr "等待噴頭加熱" + +#: fdmprinter.def.json +msgctxt "material_print_temp_wait description" +msgid "Whether to wait until the nozzle temperature is reached at the start." +msgstr "是否在開始時等待噴頭達到設定溫度。" + +#: fdmprinter.def.json +msgctxt "material_print_temp_prepend label" +msgid "Include Material Temperatures" +msgstr "插入耗材溫度" + +#: fdmprinter.def.json +msgctxt "material_print_temp_prepend description" +msgid "" +"Whether to include nozzle temperature commands at the start of the gcode. " +"When the start_gcode already contains nozzle temperature commands Cura " +"frontend will automatically disable this setting." +msgstr "" +"是否在 G-code 開始部分插入噴頭溫度命令。當起始 G-code 已包含噴頭溫度命令時," +"Cura 前端將自動關閉此設定。" + +#: fdmprinter.def.json +msgctxt "material_bed_temp_prepend label" +msgid "Include Build Plate Temperature" +msgstr "插入熱床溫度" + +#: fdmprinter.def.json +msgctxt "material_bed_temp_prepend description" +msgid "" +"Whether to include build plate temperature commands at the start of the " +"gcode. When the start_gcode already contains build plate temperature " +"commands Cura frontend will automatically disable this setting." +msgstr "" +"是否需要在 G-code 開始部分插入熱床溫度的命令。當起始 G-code 包含熱床溫度命令" +"時,Cura 前端將自動關閉此設定。" + +#: fdmprinter.def.json +msgctxt "machine_width label" +msgid "Machine Width" +msgstr "機器寬度" + +#: fdmprinter.def.json +msgctxt "machine_width description" +msgid "The width (X-direction) of the printable area." +msgstr "機器可列印區域寬度(X 座標)" + +#: fdmprinter.def.json +msgctxt "machine_depth label" +msgid "Machine Depth" +msgstr "機器深度" + +#: fdmprinter.def.json +msgctxt "machine_depth description" +msgid "The depth (Y-direction) of the printable area." +msgstr "機器可列印區域深度(Y 座標)" + +#: fdmprinter.def.json +msgctxt "machine_shape label" +msgid "Build Plate Shape" +msgstr "列印平台形狀" + +#: fdmprinter.def.json +msgctxt "machine_shape description" +msgid "" +"The shape of the build plate without taking unprintable areas into account." +msgstr "列印平台形狀(不計算不可列印區域)。" + +#: fdmprinter.def.json +msgctxt "machine_shape option rectangular" +msgid "Rectangular" +msgstr "矩形" + +#: fdmprinter.def.json +msgctxt "machine_shape option elliptic" +msgid "Elliptic" +msgstr "類圓形" + +#: fdmprinter.def.json +msgctxt "machine_height label" +msgid "Machine Height" +msgstr "機器高度" + +#: fdmprinter.def.json +msgctxt "machine_height description" +msgid "The height (Z-direction) of the printable area." +msgstr "機器可列印區域高度(Z 座標)" + +#: fdmprinter.def.json +msgctxt "machine_heated_bed label" +msgid "Has Heated Build Plate" +msgstr "有熱床" + +#: fdmprinter.def.json +msgctxt "machine_heated_bed description" +msgid "Whether the machine has a heated build plate present." +msgstr "機器是否有熱床。" + +#: fdmprinter.def.json +msgctxt "machine_center_is_zero label" +msgid "Is Center Origin" +msgstr "原點是否位於中心" + +#: fdmprinter.def.json +msgctxt "machine_center_is_zero description" +msgid "" +"Whether the X/Y coordinates of the zero position of the printer is at the " +"center of the printable area." +msgstr "印表機的 X/Y 座標原點是否位於可列印區域的中心。" + +#: fdmprinter.def.json +msgctxt "machine_extruder_count label" +msgid "Number of Extruders" +msgstr "擠出機數目" + +#: fdmprinter.def.json +msgctxt "machine_extruder_count description" +msgid "" +"Number of extruder trains. An extruder train is the combination of a feeder, " +"bowden tube, and nozzle." +msgstr "擠出機組數目。擠出機組是指進料裝置、喉管和噴頭的組合。" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_tip_outer_diameter label" +msgid "Outer nozzle diameter" +msgstr "噴頭外徑" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_tip_outer_diameter description" +msgid "The outer diameter of the tip of the nozzle." +msgstr "噴頭尖端的外徑。" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_head_distance label" +msgid "Nozzle length" +msgstr "噴頭長度" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_head_distance description" +msgid "" +"The height difference between the tip of the nozzle and the lowest part of " +"the print head." +msgstr "噴頭尖端與列印頭最低部分之間的高度差。" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_expansion_angle label" +msgid "Nozzle angle" +msgstr "噴頭角度" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_expansion_angle description" +msgid "" +"The angle between the horizontal plane and the conical part right above the " +"tip of the nozzle." +msgstr "水平面與噴頭尖端上部圓錐形之間的角度。" + +#: fdmprinter.def.json +msgctxt "machine_heat_zone_length label" +msgid "Heat zone length" +msgstr "加熱區長度" + +#: fdmprinter.def.json +msgctxt "machine_heat_zone_length description" +msgid "" +"The distance from the tip of the nozzle in which heat from the nozzle is " +"transferred to the filament." +msgstr "與噴頭尖端的距離,噴頭產生的熱量在這段距離內傳遞到耗材中。" + +#: fdmprinter.def.json +msgctxt "machine_filament_park_distance label" +msgid "Filament Park Distance" +msgstr "耗材停放距離" + +#: fdmprinter.def.json +msgctxt "machine_filament_park_distance description" +msgid "" +"The distance from the tip of the nozzle where to park the filament when an " +"extruder is no longer used." +msgstr "與噴頭尖端的距離,當不再使用擠出機時會將耗材停放在此區域。" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_temp_enabled label" +msgid "Enable Nozzle Temperature Control" +msgstr "啟用噴頭溫度控制" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_temp_enabled description" +msgid "" +"Whether to control temperature from Cura. Turn this off to control nozzle " +"temperature from outside of Cura." +msgstr "是否從 Cura 控制溫度。若要從 Cura 外部控制噴頭溫度,關閉此選項。" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_heat_up_speed label" +msgid "Heat up speed" +msgstr "加熱速度" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_heat_up_speed description" +msgid "" +"The speed (°C/s) by which the nozzle heats up averaged over the window of " +"normal printing temperatures and the standby temperature." +msgstr "噴頭從待機溫度加熱到列印溫度的平均速度(℃/ s)。" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_cool_down_speed label" +msgid "Cool down speed" +msgstr "冷卻速度" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_cool_down_speed description" +msgid "" +"The speed (°C/s) by which the nozzle cools down averaged over the window of " +"normal printing temperatures and the standby temperature." +msgstr "噴頭從列印溫度冷卻到待機溫度的平均速度(℃/ s)。" + +#: fdmprinter.def.json +msgctxt "machine_min_cool_heat_time_window label" +msgid "Minimal Time Standby Temperature" +msgstr "待機溫度最短時間" + +#: fdmprinter.def.json +msgctxt "machine_min_cool_heat_time_window description" +msgid "" +"The minimal time an extruder has to be inactive before the nozzle is cooled. " +"Only when an extruder is not used for longer than this time will it be " +"allowed to cool down to the standby temperature." +msgstr "" +"擠出機必須保持不活動以便噴頭冷卻的最短時間。擠出機必須停用超過此時間,才可以" +"冷卻到待機溫度。" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor label" +msgid "Gcode flavour" +msgstr "G-code 類型" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor description" +msgid "The type of gcode to be generated." +msgstr "需要產生的 G-code 類型。" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option RepRap (Marlin/Sprinter)" +msgid "Marlin" +msgstr "Marlin" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option RepRap (Volumetric)" +msgid "Marlin (Volumetric)" +msgstr "Marlin(容積)" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option RepRap (RepRap)" +msgid "RepRap" +msgstr "RepRap" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option UltiGCode" +msgid "Ultimaker 2" +msgstr "Ultimaker 2" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option Griffin" +msgid "Griffin" +msgstr "Griffin" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option Makerbot" +msgid "Makerbot" +msgstr "Makerbot" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option BFB" +msgid "Bits from Bytes" +msgstr "Bits from Bytes" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option MACH3" +msgid "Mach3" +msgstr "Mach3" + +#: fdmprinter.def.json +msgctxt "machine_gcode_flavor option Repetier" +msgid "Repetier" +msgstr "Repetier" + +#: fdmprinter.def.json +msgctxt "machine_disallowed_areas label" +msgid "Disallowed areas" +msgstr "不允許區域" + +#: fdmprinter.def.json +msgctxt "machine_disallowed_areas description" +msgid "A list of polygons with areas the print head is not allowed to enter." +msgstr "不允許列印頭進入區域的多邊形列表。" + +#: fdmprinter.def.json +msgctxt "nozzle_disallowed_areas label" +msgid "Nozzle Disallowed Areas" +msgstr "噴頭不允許區域" + +#: fdmprinter.def.json +msgctxt "nozzle_disallowed_areas description" +msgid "A list of polygons with areas the nozzle is not allowed to enter." +msgstr "不允許噴頭進入區域的多邊形列表。" + +#: fdmprinter.def.json +msgctxt "machine_head_polygon label" +msgid "Machine head polygon" +msgstr "機器頭多邊形" + +#: fdmprinter.def.json +msgctxt "machine_head_polygon description" +msgid "A 2D silhouette of the print head (fan caps excluded)." +msgstr "列印頭 2D 輪廓圖(不包含風扇蓋)。" + +#: fdmprinter.def.json +msgctxt "machine_head_with_fans_polygon label" +msgid "Machine head & Fan polygon" +msgstr "機器頭和風扇多邊形" + +#: fdmprinter.def.json +msgctxt "machine_head_with_fans_polygon description" +msgid "A 2D silhouette of the print head (fan caps included)." +msgstr "列印頭 2D 輪廓圖(包含風扇蓋)。" + +#: fdmprinter.def.json +msgctxt "gantry_height label" +msgid "Gantry height" +msgstr "吊車高度" + +#: fdmprinter.def.json +msgctxt "gantry_height description" +msgid "" +"The height difference between the tip of the nozzle and the gantry system (X " +"and Y axes)." +msgstr "噴頭尖端與吊車之間的高度差。" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_id label" +msgid "Nozzle ID" +msgstr "噴頭 ID" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_id description" +msgid "The nozzle ID for an extruder train, such as \"AA 0.4\" and \"BB 0.8\"." +msgstr "擠出機組的噴頭 ID,比如\"AA 0.4\"和\"BB 0.8\"。" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_size label" +msgid "Nozzle Diameter" +msgstr "噴頭直徑" + +#: fdmprinter.def.json +msgctxt "machine_nozzle_size description" +msgid "" +"The inner diameter of the nozzle. Change this setting when using a non-" +"standard nozzle size." +msgstr "噴頭內徑,在使用非標準噴頭尺寸時需更改此設定。" + +#: fdmprinter.def.json +msgctxt "machine_use_extruder_offset_to_offset_coords label" +msgid "Offset With Extruder" +msgstr "擠出機偏移量" + +#: fdmprinter.def.json +msgctxt "machine_use_extruder_offset_to_offset_coords description" +msgid "Apply the extruder offset to the coordinate system." +msgstr "將擠出機偏移量套用到座標軸系統。" + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_z label" +msgid "Extruder Prime Z Position" +msgstr "擠出機初始 Z 軸位置" + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_z description" +msgid "" +"The Z coordinate of the position where the nozzle primes at the start of " +"printing." +msgstr "列印開始時,噴頭在 Z 軸座標上的起始位置." + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_abs label" +msgid "Absolute Extruder Prime Position" +msgstr "擠出機使用絕對位置" + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_abs description" +msgid "" +"Make the extruder prime position absolute rather than relative to the last-" +"known location of the head." +msgstr "擠出機的控制參數使用絕對位置,而不是與前次位置的相對位移。" + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_x label" +msgid "Maximum Speed X" +msgstr "X 軸最大速度" + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_x description" +msgid "The maximum speed for the motor of the X-direction." +msgstr "X 軸方向馬達的最大速度。" + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_y label" +msgid "Maximum Speed Y" +msgstr "Y 軸最大速度" + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_y description" +msgid "The maximum speed for the motor of the Y-direction." +msgstr "Y 軸方向馬達的最大速度。" + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_z label" +msgid "Maximum Speed Z" +msgstr "Z 軸最大速度" + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_z description" +msgid "The maximum speed for the motor of the Z-direction." +msgstr "Z 軸方向馬達的最大速度。" + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_e label" +msgid "Maximum Feedrate" +msgstr "最大進料速率" + +#: fdmprinter.def.json +msgctxt "machine_max_feedrate_e description" +msgid "The maximum speed of the filament." +msgstr "耗材的最大速度。" + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_x label" +msgid "Maximum Acceleration X" +msgstr "X 軸最大加速度" + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_x description" +msgid "Maximum acceleration for the motor of the X-direction" +msgstr "X 軸方向馬達的最大加速度" + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_y label" +msgid "Maximum Acceleration Y" +msgstr "Y 軸最大加速度" + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_y description" +msgid "Maximum acceleration for the motor of the Y-direction." +msgstr "Y 軸方向馬達的最大加速度。" + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_z label" +msgid "Maximum Acceleration Z" +msgstr "Z 軸最大加速度" + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_z description" +msgid "Maximum acceleration for the motor of the Z-direction." +msgstr "Z 軸方向馬達的最大加速度。" + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_e label" +msgid "Maximum Filament Acceleration" +msgstr "擠出馬達最大加速度" + +#: fdmprinter.def.json +msgctxt "machine_max_acceleration_e description" +msgid "Maximum acceleration for the motor of the filament." +msgstr "擠出馬達的最大加速度。" + +#: fdmprinter.def.json +msgctxt "machine_acceleration label" +msgid "Default Acceleration" +msgstr "預設加速度" + +#: fdmprinter.def.json +msgctxt "machine_acceleration description" +msgid "The default acceleration of print head movement." +msgstr "列印頭移動的預設加速度。" + +#: fdmprinter.def.json +msgctxt "machine_max_jerk_xy label" +msgid "Default X-Y Jerk" +msgstr "預設 X-Y 平面加加速度" + +#: fdmprinter.def.json +msgctxt "machine_max_jerk_xy description" +msgid "Default jerk for movement in the horizontal plane." +msgstr "水平面移動的預設加加速度。" + +#: fdmprinter.def.json +msgctxt "machine_max_jerk_z label" +msgid "Default Z Jerk" +msgstr "預設 Z 軸加加速度" + +#: fdmprinter.def.json +msgctxt "machine_max_jerk_z description" +msgid "Default jerk for the motor of the Z-direction." +msgstr "Z 軸方向馬達的預設加加速度。" + +#: fdmprinter.def.json +msgctxt "machine_max_jerk_e label" +msgid "Default Filament Jerk" +msgstr "預設擠出馬達加加速度" + +#: fdmprinter.def.json +msgctxt "machine_max_jerk_e description" +msgid "Default jerk for the motor of the filament." +msgstr "擠出馬達的預設加加速度。" + +#: fdmprinter.def.json +msgctxt "machine_minimum_feedrate label" +msgid "Minimum Feedrate" +msgstr "最小進料速率" + +#: fdmprinter.def.json +msgctxt "machine_minimum_feedrate description" +msgid "The minimal movement speed of the print head." +msgstr "列印頭的最低移動速度。" + +#: fdmprinter.def.json +msgctxt "resolution label" +msgid "Quality" +msgstr "品質" + +#: fdmprinter.def.json +msgctxt "resolution description" +msgid "" +"All settings that influence the resolution of the print. These settings have " +"a large impact on the quality (and print time)" +msgstr "影響列印解析度的所有設定。這些設定會對品質(和列印時間)產生顯著影響" + +#: fdmprinter.def.json +msgctxt "layer_height label" +msgid "Layer Height" +msgstr "層高" + +#: fdmprinter.def.json +msgctxt "layer_height description" +msgid "" +"The height of each layer in mm. Higher values produce faster prints in lower " +"resolution, lower values produce slower prints in higher resolution." +msgstr "" +"每層的高度(以毫米為單位)。值越高,則列印速度越快,解析度越低;值越低,則列" +"印速度越慢,解析度越高。" + +#: fdmprinter.def.json +msgctxt "layer_height_0 label" +msgid "Initial Layer Height" +msgstr "起始層高" + +#: fdmprinter.def.json +msgctxt "layer_height_0 description" +msgid "" +"The height of the initial layer in mm. A thicker initial layer makes " +"adhesion to the build plate easier." +msgstr "起始層高(以毫米為單位)。起始層越厚,與列印平台的附著越輕鬆。" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance label" +msgid "Slicing Tolerance" +msgstr "切片公差" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance description" +msgid "" +"How to slice layers with diagonal surfaces. The areas of a layer can be " +"generated based on where the middle of the layer intersects the surface " +"(Middle). Alternatively each layer can have the areas which fall inside of " +"the volume throughout the height of the layer (Exclusive) or a layer has the " +"areas which fall inside anywhere within the layer (Inclusive). Exclusive " +"retains the most details, Inclusive makes for the best fit and Middle takes " +"the least time to process." +msgstr "" +"如何使用傾斜的外表切片。可以使用層高的中間與外表相交產生的截面(中間)。也可" +"以使用該層高完全不超出模型體積的區域(排除),或是該層高的模型投影區域(包" +"含)。「排除」保留最多的細節,「包含」有最符合的外形,而「中間」花最少的運算" +"時間。" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option middle" +msgid "Middle" +msgstr "中間" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option exclusive" +msgid "Exclusive" +msgstr "排除" + +#: fdmprinter.def.json +msgctxt "slicing_tolerance option inclusive" +msgid "Inclusive" +msgstr "包含" + +#: fdmprinter.def.json +msgctxt "line_width label" +msgid "Line Width" +msgstr "線寬" + +#: fdmprinter.def.json +msgctxt "line_width description" +msgid "" +"Width of a single line. Generally, the width of each line should correspond " +"to the width of the nozzle. However, slightly reducing this value could " +"produce better prints." +msgstr "" +"單一線寬。一般而言,每條線條的寬度應與噴頭的寬度對應。但是,稍微降低此值可以" +"產生更好的列印成果。" + +#: fdmprinter.def.json +msgctxt "wall_line_width label" +msgid "Wall Line Width" +msgstr "牆壁線寬" + +#: fdmprinter.def.json +msgctxt "wall_line_width description" +msgid "Width of a single wall line." +msgstr "單層牆壁線寬。" + +#: fdmprinter.def.json +msgctxt "wall_line_width_0 label" +msgid "Outer Wall Line Width" +msgstr "線寬(外壁)" + +#: fdmprinter.def.json +msgctxt "wall_line_width_0 description" +msgid "" +"Width of the outermost wall line. By lowering this value, higher levels of " +"detail can be printed." +msgstr "最外側牆壁的線寬。降低此值,可列印出更高水準的細節。" + +#: fdmprinter.def.json +msgctxt "wall_line_width_x label" +msgid "Inner Wall(s) Line Width" +msgstr "內壁線寬" + +#: fdmprinter.def.json +msgctxt "wall_line_width_x description" +msgid "" +"Width of a single wall line for all wall lines except the outermost one." +msgstr "除了外壁以外牆壁的線寬。" + +#: fdmprinter.def.json +msgctxt "roofing_line_width label" +msgid "Top Surface Skin Line Width" +msgstr "頂部表層線寬" + +#: fdmprinter.def.json +msgctxt "roofing_line_width description" +msgid "Width of a single line of the areas at the top of the print." +msgstr "列印頂部區域單一線寬。" + +#: fdmprinter.def.json +msgctxt "skin_line_width label" +msgid "Top/Bottom Line Width" +msgstr "頂部/底部線寬" + +#: fdmprinter.def.json +msgctxt "skin_line_width description" +msgid "Width of a single top/bottom line." +msgstr "單一頂部/底部線寬。" + +#: fdmprinter.def.json +msgctxt "infill_line_width label" +msgid "Infill Line Width" +msgstr "填充線寬" + +#: fdmprinter.def.json +msgctxt "infill_line_width description" +msgid "Width of a single infill line." +msgstr "單一填充線寬。" + +#: fdmprinter.def.json +msgctxt "skirt_brim_line_width label" +msgid "Skirt/Brim Line Width" +msgstr "外圍/邊緣線寬" + +#: fdmprinter.def.json +msgctxt "skirt_brim_line_width description" +msgid "Width of a single skirt or brim line." +msgstr "單一外圍或邊緣的線寬。" + +#: fdmprinter.def.json +msgctxt "support_line_width label" +msgid "Support Line Width" +msgstr "支撐線寬" + +#: fdmprinter.def.json +msgctxt "support_line_width description" +msgid "Width of a single support structure line." +msgstr "單一支撐線寬。" + +#: fdmprinter.def.json +msgctxt "support_interface_line_width label" +msgid "Support Interface Line Width" +msgstr "支撐介面線寬" + +#: fdmprinter.def.json +msgctxt "support_interface_line_width description" +msgid "Width of a single line of support roof or floor." +msgstr "支撐頂板或底板單一線寬。" + +#: fdmprinter.def.json +msgctxt "support_roof_line_width label" +msgid "Support Roof Line Width" +msgstr "支撐頂板線寬" + +#: fdmprinter.def.json +msgctxt "support_roof_line_width description" +msgid "Width of a single support roof line." +msgstr "單一支撐頂板線寬。" + +#: fdmprinter.def.json +msgctxt "support_bottom_line_width label" +msgid "Support Floor Line Width" +msgstr "支撐底板線寬" + +#: fdmprinter.def.json +msgctxt "support_bottom_line_width description" +msgid "Width of a single support floor line." +msgstr "單一支撐底板線寬。" + +#: fdmprinter.def.json +msgctxt "prime_tower_line_width label" +msgid "Prime Tower Line Width" +msgstr "換料塔線寬" + +#: fdmprinter.def.json +msgctxt "prime_tower_line_width description" +msgid "Width of a single prime tower line." +msgstr "單一換料塔線寬。" + +#: fdmprinter.def.json +msgctxt "initial_layer_line_width_factor label" +msgid "Initial Layer Line Width" +msgstr "起始層線寬" + +#: fdmprinter.def.json +msgctxt "initial_layer_line_width_factor description" +msgid "" +"Multiplier of the line width on the first layer. Increasing this could " +"improve bed adhesion." +msgstr "第一層線寬倍數。增大此倍數可改善熱床附著。" + +#: fdmprinter.def.json +msgctxt "shell label" +msgid "Shell" +msgstr "外殼" + +#: fdmprinter.def.json +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" +msgstr "外壁擠出機" + +#: fdmprinter.def.json +msgctxt "wall_0_extruder_nr description" +msgid "" +"The extruder train used for printing the outer wall. This is used in multi-" +"extrusion." +msgstr "用於列印外壁的擠出機組。在多擠出機情況下適用。" + +#: fdmprinter.def.json +msgctxt "wall_x_extruder_nr label" +msgid "Inner Wall Extruder" +msgstr "內壁擠出機" + +#: fdmprinter.def.json +msgctxt "wall_x_extruder_nr description" +msgid "" +"The extruder train used for printing the inner walls. This is used in multi-" +"extrusion." +msgstr "用於列印內壁的擠出機組。在多擠出機情況下適用。" + +#: fdmprinter.def.json +msgctxt "wall_thickness label" +msgid "Wall Thickness" +msgstr "壁厚" + +#: fdmprinter.def.json +msgctxt "wall_thickness description" +msgid "" +"The thickness of the walls in the horizontal direction. This value divided " +"by the wall line width defines the number of walls." +msgstr "水平方向的牆壁厚度。此值除以壁線寬度決定牆壁數量。" + +#: fdmprinter.def.json +msgctxt "wall_line_count label" +msgid "Wall Line Count" +msgstr "牆壁線條圈數" + +#: fdmprinter.def.json +msgctxt "wall_line_count description" +msgid "" +"The number of walls. When calculated by the wall thickness, this value is " +"rounded to a whole number." +msgstr "牆壁的線條圈數,如果由壁厚計算,會四捨五入為一個整數值。" + +#: fdmprinter.def.json +msgctxt "wall_0_wipe_dist label" +msgid "Outer Wall Wipe Distance" +msgstr "外壁擦拭噴頭長度" + +#: fdmprinter.def.json +msgctxt "wall_0_wipe_dist description" +msgid "" +"Distance of a travel move inserted after the outer wall, to hide the Z seam " +"better." +msgstr "在列印外壁後插入的空跑距離,以便消除隱藏 Z 縫的銜接痕跡。" + +#: fdmprinter.def.json +msgctxt "roofing_extruder_nr label" +msgid "Top Surface Skin Extruder" +msgstr "頂部表層擠出機" + +#: fdmprinter.def.json +msgctxt "roofing_extruder_nr description" +msgid "" +"The extruder train used for printing the top most skin. This is used in " +"multi-extrusion." +msgstr "用於列印最頂部表層的擠出機組。在多擠出機情況下適用。" + +#: fdmprinter.def.json +msgctxt "roofing_layer_count label" +msgid "Top Surface Skin Layers" +msgstr "頂部表層" + +#: fdmprinter.def.json +msgctxt "roofing_layer_count description" +msgid "" +"The number of top most skin layers. Usually only one top most layer is " +"sufficient to generate higher quality top surfaces." +msgstr "最頂部表層層數。通常只需一層最頂部就足以產生較高品質的頂部表面。" + +#: fdmprinter.def.json +msgctxt "roofing_pattern label" +msgid "Top Surface Skin Pattern" +msgstr "頂部表層列印樣式" + +#: fdmprinter.def.json +msgctxt "roofing_pattern description" +msgid "The pattern of the top most layers." +msgstr "最頂部列印樣式。" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option lines" +msgid "Lines" +msgstr "線條" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option concentric" +msgid "Concentric" +msgstr "同心" + +#: fdmprinter.def.json +msgctxt "roofing_pattern option zigzag" +msgid "Zig Zag" +msgstr "鋸齒狀" + +#: fdmprinter.def.json +msgctxt "roofing_angles label" +msgid "Top Surface Skin Line Directions" +msgstr "頂部表層線條方向" + +#: fdmprinter.def.json +msgctxt "roofing_angles description" +msgid "" +"A list of integer line directions to use when the top surface skin layers " +"use the lines or zig zag pattern. Elements from the list are used " +"sequentially as the layers progress and when the end of the list is reached, " +"it starts at the beginning again. The list items are separated by commas and " +"the whole list is contained in square brackets. Default is an empty list " +"which means use the traditional default angles (45 and 135 degrees)." +msgstr "" +"當頂部表層採用線條或鋸齒狀的列印樣式時使用的整數線條方向的列表。列表中的元素" +"隨層的進度依次使用,當達到列表末尾時,它將從頭開始。列表項以逗號分隔,整個列" +"表包含在方括號中。預設使用傳統的預設角度(45 和 135 度)。" + +#: fdmprinter.def.json +msgctxt "top_bottom_extruder_nr label" +msgid "Top/Bottom Extruder" +msgstr "頂部/底部擠出機" + +#: fdmprinter.def.json +msgctxt "top_bottom_extruder_nr description" +msgid "" +"The extruder train used for printing the top and bottom skin. This is used " +"in multi-extrusion." +msgstr "用於列印頂部和底部表層的擠出機組。在多擠出機情況下適用。" + +#: fdmprinter.def.json +msgctxt "top_bottom_thickness label" +msgid "Top/Bottom Thickness" +msgstr "頂部 / 底部厚度" + +#: fdmprinter.def.json +msgctxt "top_bottom_thickness description" +msgid "" +"The thickness of the top/bottom layers in the print. This value divided by " +"the layer height defines the number of top/bottom layers." +msgstr "列印模型中頂部/底部的厚度。該值除以層高決定頂部/底部的層數。" + +#: fdmprinter.def.json +msgctxt "top_thickness label" +msgid "Top Thickness" +msgstr "頂部厚度" + +#: fdmprinter.def.json +msgctxt "top_thickness description" +msgid "" +"The thickness of the top layers in the print. This value divided by the " +"layer height defines the number of top layers." +msgstr "列印模型中頂部的厚度。該值除以層高決定頂部的層數。" + +#: fdmprinter.def.json +msgctxt "top_layers label" +msgid "Top Layers" +msgstr "頂部層數" + +#: fdmprinter.def.json +msgctxt "top_layers description" +msgid "" +"The number of top layers. When calculated by the top thickness, this value " +"is rounded to a whole number." +msgstr "頂部列印層數,當由頂部厚度來計算時層數時,會四捨五入為一個整數值。" + +#: fdmprinter.def.json +msgctxt "bottom_thickness label" +msgid "Bottom Thickness" +msgstr "底部厚度" + +#: fdmprinter.def.json +msgctxt "bottom_thickness description" +msgid "" +"The thickness of the bottom layers in the print. This value divided by the " +"layer height defines the number of bottom layers." +msgstr "列印模型中底部的厚度。此值除以層高決定底部的層數。" + +#: fdmprinter.def.json +msgctxt "bottom_layers label" +msgid "Bottom Layers" +msgstr "底部層數" + +#: fdmprinter.def.json +msgctxt "bottom_layers description" +msgid "" +"The number of bottom layers. When calculated by the bottom thickness, this " +"value is rounded to a whole number." +msgstr "底部列印層數,當由底部厚度來計算時層數時,會四捨五入為一個整數值。" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern label" +msgid "Top/Bottom Pattern" +msgstr "頂部/底部填充樣式" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern description" +msgid "The pattern of the top/bottom layers." +msgstr "頂部/底部的列印樣式。" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern option lines" +msgid "Lines" +msgstr "直線" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern option concentric" +msgid "Concentric" +msgstr "同心圓" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern option zigzag" +msgid "Zig Zag" +msgstr "鋸齒狀" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern_0 label" +msgid "Bottom Pattern Initial Layer" +msgstr "初始層列印樣式" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern_0 description" +msgid "The pattern on the bottom of the print on the first layer." +msgstr "列印件底部第一層的列印樣式。" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern_0 option lines" +msgid "Lines" +msgstr "直線" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern_0 option concentric" +msgid "Concentric" +msgstr "同心圓" + +#: fdmprinter.def.json +msgctxt "top_bottom_pattern_0 option zigzag" +msgid "Zig Zag" +msgstr "鋸齒狀" + +#: fdmprinter.def.json +msgctxt "skin_angles label" +msgid "Top/Bottom Line Directions" +msgstr "頂部/底部線條方向" + +#: fdmprinter.def.json +msgctxt "skin_angles description" +msgid "" +"A list of integer line directions to use when the top/bottom layers use the " +"lines or zig zag pattern. Elements from the list are used sequentially as " +"the layers progress and when the end of the list is reached, it starts at " +"the beginning again. The list items are separated by commas and the whole " +"list is contained in square brackets. Default is an empty list which means " +"use the traditional default angles (45 and 135 degrees)." +msgstr "" +"當頂部/底部採用線條或鋸齒狀的列印樣式時使用的整數線條方向的列表。列表中的元素" +"隨層的進度依次使用,當達到列表末尾時,它將從頭開始。列表元素以逗號分隔,整個" +"列表包含在方括號中。空的列表代表使用傳統的預設角度(45 和 135 度)。" + +#: fdmprinter.def.json +msgctxt "wall_0_inset label" +msgid "Outer Wall Inset" +msgstr "外壁內嵌" + +#: fdmprinter.def.json +msgctxt "wall_0_inset description" +msgid "" +"Inset applied to the path of the outer wall. If the outer wall is smaller " +"than the nozzle, and printed after the inner walls, use this offset to get " +"the hole in the nozzle to overlap with the inner walls instead of the " +"outside of the model." +msgstr "" +"內嵌是套用在外壁路徑上的功能。如果外壁小於噴頭,並且在內壁之後列印,則此偏移" +"量將使噴頭孔內移與內壁重疊而不是行走在模型外部。" + +#: fdmprinter.def.json +msgctxt "outer_inset_first label" +msgid "Outer Before Inner Walls" +msgstr "先印外壁後印內壁" + +#: fdmprinter.def.json +msgctxt "outer_inset_first description" +msgid "" +"Prints walls in order of outside to inside when enabled. This can help " +"improve dimensional accuracy in X and Y when using a high viscosity plastic " +"like ABS; however it can decrease outer surface print quality, especially on " +"overhangs." +msgstr "" +"啟用時以從外向內的順序列印壁。當使用高黏度塑料如 ABS 時,這有助於提高 X 和 Y " +"的尺寸精度;但是,它可能會降低外表面列印品質,特别是在懸垂部分。" + +#: fdmprinter.def.json +msgctxt "alternate_extra_perimeter label" +msgid "Alternate Extra Wall" +msgstr "交錯額外牆壁" + +#: fdmprinter.def.json +msgctxt "alternate_extra_perimeter description" +msgid "" +"Prints an extra wall at every other layer. This way infill gets caught " +"between these extra walls, resulting in stronger prints." +msgstr "" +"每兩層建立一個額外牆壁,這些額外的牆壁能更緊密地抓填充部分,產生較強壯的模" +"型。" + +#: fdmprinter.def.json +msgctxt "travel_compensate_overlapping_walls_enabled label" +msgid "Compensate Wall Overlaps" +msgstr "補償牆壁重疊" + +#: fdmprinter.def.json +msgctxt "travel_compensate_overlapping_walls_enabled description" +msgid "" +"Compensate the flow for parts of a wall being printed where there is already " +"a wall in place." +msgstr "彌補牆壁重疊部分的流量。" + +#: fdmprinter.def.json +msgctxt "travel_compensate_overlapping_walls_0_enabled label" +msgid "Compensate Outer Wall Overlaps" +msgstr "補償外壁重疊" + +#: fdmprinter.def.json +msgctxt "travel_compensate_overlapping_walls_0_enabled description" +msgid "" +"Compensate the flow for parts of an outer wall being printed where there is " +"already a wall in place." +msgstr "列印外壁時如果該位置已經有牆壁存在,所進行的的流量補償。" + +#: fdmprinter.def.json +msgctxt "travel_compensate_overlapping_walls_x_enabled label" +msgid "Compensate Inner Wall Overlaps" +msgstr "補償內壁重疊" + +#: fdmprinter.def.json +msgctxt "travel_compensate_overlapping_walls_x_enabled description" +msgid "" +"Compensate the flow for parts of an inner wall being printed where there is " +"already a wall in place." +msgstr "列印內壁時如果該位置已經有牆壁存在,所進行的的流量補償。" + +#: fdmprinter.def.json +msgctxt "fill_perimeter_gaps label" +msgid "Fill Gaps Between Walls" +msgstr "填充牆壁之間空隙" + +#: fdmprinter.def.json +msgctxt "fill_perimeter_gaps description" +msgid "Fills the gaps between walls where no walls fit." +msgstr "填充牆壁之間空隙。" + +#: fdmprinter.def.json +msgctxt "fill_perimeter_gaps option nowhere" +msgid "Nowhere" +msgstr "都不填充" + +#: fdmprinter.def.json +msgctxt "fill_perimeter_gaps option everywhere" +msgid "Everywhere" +msgstr "全部填充" + +#: fdmprinter.def.json +msgctxt "fill_outline_gaps label" +msgid "Print Thin Walls" +msgstr "列印薄壁" + +#: fdmprinter.def.json +msgctxt "fill_outline_gaps description" +msgid "" +"Print pieces of the model which are horizontally thinner than the nozzle " +"size." +msgstr "列印在水平面上比噴頭尺寸更薄的模型部件。" + +#: fdmprinter.def.json +msgctxt "xy_offset label" +msgid "Horizontal Expansion" +msgstr "水平擴展" + +#: fdmprinter.def.json +msgctxt "xy_offset description" +msgid "" +"Amount of offset applied to all polygons in each layer. Positive values can " +"compensate for too big holes; negative values can compensate for too small " +"holes." +msgstr "" +"如果模型有挖孔,以便用來組合、鑲嵌時,這個偏移量可以用來微調孔的大小,當設為" +"正值時,模型外擴,孔會變小;若設為負值,模型內縮,孔會變大。" + +#: fdmprinter.def.json +msgctxt "xy_offset_layer_0 label" +msgid "Initial Layer Horizontal Expansion" +msgstr "起始層水平擴展" + +#: fdmprinter.def.json +msgctxt "xy_offset_layer_0 description" +msgid "" +"Amount of offset applied to all polygons in the first layer. A negative " +"value can compensate for squishing of the first layer known as \"elephant's " +"foot\"." +msgstr "" +"套用到第一層所有多邊形的偏移量。負數值可以補償第一層的壓扁量(被稱為“象" +"脚”)。" + +#: fdmprinter.def.json +msgctxt "z_seam_type label" +msgid "Z Seam Alignment" +msgstr "Z 接縫對齊" + +#: fdmprinter.def.json +msgctxt "z_seam_type description" +msgid "" +"Starting point of each path in a layer. When paths in consecutive layers " +"start at the same point a vertical seam may show on the print. When aligning " +"these near a user specified location, the seam is easiest to remove. When " +"placed randomly the inaccuracies at the paths' start will be less " +"noticeable. When taking the shortest path the print will be quicker." +msgstr "" +"一層中每條路徑的起點。當連續多層的路徑從相同點開始時,則列印物上會顯示一條垂" +"直縫隙。如果將這些路徑靠近一個使用者指定的位置對齊,則縫隙最容易移除。如果隨" +"機放置,則路徑起點的不精準度將較不明顯。採用最短的路徑時,列印將更為快速。" + +#: fdmprinter.def.json +msgctxt "z_seam_type option back" +msgid "User Specified" +msgstr "使用者指定" + +#: fdmprinter.def.json +msgctxt "z_seam_type option shortest" +msgid "Shortest" +msgstr "最短" + +#: fdmprinter.def.json +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" +msgstr "Z 接縫 X 座標" + +#: fdmprinter.def.json +msgctxt "z_seam_x description" +msgid "" +"The X coordinate of the position near where to start printing each part in a " +"layer." +msgstr "位置的 X 軸座標,在該位置附近開始列印層中各個部分。" + +#: fdmprinter.def.json +msgctxt "z_seam_y label" +msgid "Z Seam Y" +msgstr "Z 接縫 Y 座標" + +#: fdmprinter.def.json +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" +msgstr "Z 接縫相對" + +#: fdmprinter.def.json +msgctxt "z_seam_relative description" +msgid "" +"When enabled, the z seam coordinates are relative to each part's centre. " +"When disabled, the coordinates define an absolute position on the build " +"plate." +msgstr "" +"啟用時,Z 接縫座標為相對於各個部分中心的值。關閉時,座標固定在列印平台上的一" +"個絕對位置。" + +#: fdmprinter.def.json +msgctxt "skin_no_small_gaps_heuristic label" +msgid "Ignore Small Z Gaps" +msgstr "忽略 Z 方向的小間隙" + +#: fdmprinter.def.json +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 "ironing_enabled label" +msgid "Enable Ironing" +msgstr "啟用燙平" + +#: fdmprinter.def.json +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" +msgstr "燙平列印樣式" + +#: fdmprinter.def.json +msgctxt "ironing_pattern description" +msgid "The pattern to use for ironing top surfaces." +msgstr "用於燙平頂部表面的列印樣式。" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option concentric" +msgid "Concentric" +msgstr "同心" + +#: fdmprinter.def.json +msgctxt "ironing_pattern option zigzag" +msgid "Zig Zag" +msgstr "鋸齒狀" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing label" +msgid "Ironing Line Spacing" +msgstr "燙平線條間距" + +#: fdmprinter.def.json +msgctxt "ironing_line_spacing description" +msgid "The distance between the lines of ironing." +msgstr "燙平線條之間的距離。" + +#: fdmprinter.def.json +msgctxt "ironing_flow label" +msgid "Ironing Flow" +msgstr "燙平流量" + +#: fdmprinter.def.json +msgctxt "ironing_flow description" +msgid "" +"The amount of material, relative to a normal skin line, to extrude during " +"ironing. Keeping the nozzle filled helps filling some of the crevices of the " +"top surface, but too much results in overextrusion and blips on the side of " +"the surface." +msgstr "" +"燙平期間相對於正常表層線條的擠出耗材量。保持噴頭填充狀态有助於填充頂部表面的" +"一些縫隙,但如填充過多則會導致表面上過度擠出和光點。" + +#: fdmprinter.def.json +msgctxt "ironing_inset label" +msgid "Ironing Inset" +msgstr "燙平內嵌" + +#: fdmprinter.def.json +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 "infill label" +msgid "Infill" +msgstr "填充" + +#: fdmprinter.def.json +msgctxt "infill description" +msgid "Infill" +msgstr "填充" + +#: fdmprinter.def.json +msgctxt "infill_extruder_nr label" +msgid "Infill Extruder" +msgstr "填充擠出機" + +#: fdmprinter.def.json +msgctxt "infill_extruder_nr description" +msgid "" +"The extruder train used for printing infill. This is used in multi-extrusion." +msgstr "用於列印填充的擠出機組。在多擠出機情況下適用。" + +#: fdmprinter.def.json +msgctxt "infill_sparse_density label" +msgid "Infill Density" +msgstr "填充密度" + +#: fdmprinter.def.json +msgctxt "infill_sparse_density description" +msgid "Adjusts the density of infill of the print." +msgstr "調整列印填充的密度。" + +#: fdmprinter.def.json +msgctxt "infill_line_distance label" +msgid "Infill Line Distance" +msgstr "填充線條距離" + +#: fdmprinter.def.json +msgctxt "infill_line_distance description" +msgid "" +"Distance between the printed infill lines. This setting is calculated by the " +"infill density and the infill line width." +msgstr "列印填充線條之間的距離。該設定是通過填充密度和填充線寬度計算。" + +#: fdmprinter.def.json +msgctxt "infill_pattern label" +msgid "Infill Pattern" +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, tri-hexagon, cubic, octet, quarter cubic, cross 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" +msgid "Grid" +msgstr "網格" + +#: fdmprinter.def.json +msgctxt "infill_pattern option lines" +msgid "Lines" +msgstr "直線" + +#: fdmprinter.def.json +msgctxt "infill_pattern option triangles" +msgid "Triangles" +msgstr "三角形" + +#: fdmprinter.def.json +msgctxt "infill_pattern option trihexagon" +msgid "Tri-Hexagon" +msgstr "三-六邊形" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cubic" +msgid "Cubic" +msgstr "立方體" + +#: fdmprinter.def.json +msgctxt "infill_pattern option cubicsubdiv" +msgid "Cubic Subdivision" +msgstr "立方體細分" + +#: fdmprinter.def.json +msgctxt "infill_pattern option 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" +msgid "Concentric" +msgstr "同心圓" + +#: fdmprinter.def.json +msgctxt "infill_pattern option concentric_3d" +msgid "Concentric 3D" +msgstr "立體同心圓" + +#: fdmprinter.def.json +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 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." +msgstr "" +"使用一條線沿著內牆的形狀,連接填充線條與內牆交會的末端。啟用此設定可以使填充" +"更好地附著在內牆上,並減少對垂直表面品質的影響。關閉此設定可降低材料的使用" +"量。" + +#: fdmprinter.def.json +msgctxt "infill_angles label" +msgid "Infill Line Directions" +msgstr "填充線條方向" + +#: fdmprinter.def.json +msgctxt "infill_angles description" +msgid "" +"A list of integer line directions to use. Elements from the list are used " +"sequentially as the layers progress and when the end of the list is reached, " +"it starts at the beginning again. The list items are separated by commas and " +"the whole list is contained in square brackets. Default is an empty list " +"which means use the traditional default angles (45 and 135 degrees for the " +"lines and zig zag patterns and 45 degrees for all other patterns)." +msgstr "" +"要使用的整數線條方向列表。列表中的元素隨層的進度依次使用,當達到列表末尾時," +"它將從頭開始。列表元素以逗號分隔,整個列表包含在方括號中。空的列表代表使用傳" +"統的預設角度(線條和鋸齒狀的列印樣式為 45 和 135 度,其他所有的列印樣式為 45 " +"度)。" + +#: fdmprinter.def.json +msgctxt "infill_offset_x label" +msgid "Infill X Offset" +msgstr "填充 X 軸偏移" + +#: fdmprinter.def.json +msgctxt "infill_offset_x description" +msgid "The infill pattern is offset this distance along the X axis." +msgstr "填充樣式在 X 軸方向偏移此距離。" + +#: fdmprinter.def.json +msgctxt "infill_offset_y label" +msgid "Infill Y Offset" +msgstr "填充 Y 軸偏移" + +#: fdmprinter.def.json +msgctxt "infill_offset_y description" +msgid "The infill pattern is offset this distance along the Y axis." +msgstr "填充樣式在 Y 軸方向偏移此距離。" + +#: fdmprinter.def.json +msgctxt "sub_div_rad_add label" +msgid "Cubic Subdivision Shell" +msgstr "立方體細分外殼" + +#: fdmprinter.def.json +msgctxt "sub_div_rad_add description" +msgid "" +"An addition to the radius from the center of each cube to check for the " +"boundary of the model, as to decide whether this cube should be subdivided. " +"Larger values lead to a thicker shell of small cubes near the boundary of " +"the model." +msgstr "" +"每個立方體半徑的增加量,用來檢查模型的邊界,決定是否應該細分該立方體。值越" +"大,靠近模型邊界附近的小立方體的殼越厚。" + +#: fdmprinter.def.json +msgctxt "infill_overlap label" +msgid "Infill Overlap Percentage" +msgstr "填充重疊百分比" + +#: fdmprinter.def.json +msgctxt "infill_overlap description" +msgid "" +"The amount of overlap between the infill and the walls. A slight overlap " +"allows the walls to connect firmly to the infill." +msgstr "填充和牆壁之間的重疊量。稍微重疊可讓各個牆壁與填充牢固連接。" + +#: fdmprinter.def.json +msgctxt "infill_overlap_mm label" +msgid "Infill Overlap" +msgstr "填充重疊" + +#: fdmprinter.def.json +msgctxt "infill_overlap_mm description" +msgid "" +"The amount of overlap between the infill and the walls. A slight overlap " +"allows the walls to connect firmly to the infill." +msgstr "填充和牆壁之間的重疊量。稍微重疊可讓各個壁與填充牢固連接。" + +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "表層重疊百分比" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "" +"The amount of overlap between the skin and the walls as a percentage of the " +"line width. A slight overlap allows the walls to connect firmly to the skin. " +"This is a percentage of the average line widths of the skin lines and the " +"innermost wall." +msgstr "" +"表層和牆壁之間的重疊量,以線寬百分比表示。稍微重疊可讓各個牆壁與表層牢固連" +"接。這是表層平均線寬和最內壁的百分比。" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "表層重疊" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "" +"The amount of overlap between the skin and the walls. A slight overlap " +"allows the walls to connect firmly to the skin." +msgstr "表層和牆壁之間的重疊量。稍微重疊可讓各個牆壁與表層牢固連接。" + +#: fdmprinter.def.json +msgctxt "infill_wipe_dist label" +msgid "Infill Wipe Distance" +msgstr "填充擦拭距離" + +#: fdmprinter.def.json +msgctxt "infill_wipe_dist description" +msgid "" +"Distance of a travel move inserted after every infill line, to make the " +"infill stick to the walls better. This option is similar to infill overlap, " +"but without extrusion and only on one end of the infill line." +msgstr "" +"每條填充線條後插入的空跑距離,讓填充更好地附著到壁上。此選項與填充重疊類似," +"但没有擠出,且僅位於填充線條的一端。" + +#: fdmprinter.def.json +msgctxt "infill_sparse_thickness label" +msgid "Infill Layer Thickness" +msgstr "填充層厚度" + +#: fdmprinter.def.json +msgctxt "infill_sparse_thickness description" +msgid "" +"The thickness per layer of infill material. This value should always be a " +"multiple of the layer height and is otherwise rounded." +msgstr "每層填充的厚度。此值應該是層高度的倍數,並且否則會四捨五入。" + +#: fdmprinter.def.json +msgctxt "gradual_infill_steps label" +msgid "Gradual Infill Steps" +msgstr "漸進填充步階數" + +#: fdmprinter.def.json +msgctxt "gradual_infill_steps description" +msgid "" +"Number of times to reduce the infill density by half when getting further " +"below top surfaces. Areas which are closer to top surfaces get a higher " +"density, up to the Infill Density." +msgstr "" +"由模型頂部往下,填充密度減半的次數。愈接近頂部的填充密度愈高,直到所設定的填" +"充密度。" + +#: fdmprinter.def.json +msgctxt "gradual_infill_step_height label" +msgid "Gradual Infill Step Height" +msgstr "漸進填充步階高度" + +#: fdmprinter.def.json +msgctxt "gradual_infill_step_height description" +msgid "" +"The height of infill of a given density before switching to half the density." +msgstr "減半填充密度的高度。" + +#: fdmprinter.def.json +msgctxt "infill_before_walls label" +msgid "Infill Before Walls" +msgstr "先印填充再印牆壁" + +#: fdmprinter.def.json +msgctxt "infill_before_walls description" +msgid "" +"Print the infill before printing the walls. Printing the walls first may " +"lead to more accurate walls, but overhangs print worse. Printing the infill " +"first leads to sturdier walls, but the infill pattern might sometimes show " +"through the surface." +msgstr "" +"列印牆壁前先列印填充。先列印牆壁可以產生更精確的牆壁,但懸垂列印品質會較差。" +"先列印填充會產生更牢固的牆壁,但有時候填充的列印樣式會透過表面顯現出來。" + +#: fdmprinter.def.json +msgctxt "min_infill_area label" +msgid "Minimum Infill Area" +msgstr "最小填充區域" + +#: fdmprinter.def.json +msgctxt "min_infill_area description" +msgid "Don't generate areas of infill smaller than this (use skin instead)." +msgstr "不要產生小於此面積的填充區域(使用表層取代)。" + +#: fdmprinter.def.json +msgctxt "skin_preshrink label" +msgid "Skin Removal Width" +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 "" +"要移除表層區域的最大寬度。寬度小於此值的表層區域將會消失。這有助於減少在列印" +"模型傾斜的頂部表層和底部表層所花費的時間和耗材。" + +#: fdmprinter.def.json +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" +msgid "Skin Expand Distance" +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 "" +"表層延伸進入填充的距離。值愈高表層與填充之間的附著愈好,並使相鄰層的牆壁與表" +"層黏得更緊。而較低的值可以節省耗材的使用。" + +#: 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" +msgid "Maximum Skin Angle for Expansion" +msgstr "最大延伸表層角度" + +#: fdmprinter.def.json +msgctxt "max_skin_angle_for_expansion description" +msgid "" +"Top and/or bottom surfaces of your object with an angle larger than this " +"setting, won't have their top/bottom skin expanded. This avoids expanding " +"the narrow skin areas that are created when the model surface has a near " +"vertical slope. An angle of 0° is horizontal, while an angle of 90° is " +"vertical." +msgstr "" +"如果模型的頂部和/或底部表面的角度大於此設定,則不要延伸其頂部/底部表層。這會" +"避免延伸作用在模型表面有接近垂直的斜面時所形成的狹窄表層區域。0° 的角為水平," +"90° 的角為垂直。" + +#: fdmprinter.def.json +msgctxt "min_skin_width_for_expansion label" +msgid "Minimum Skin Width for Expansion" +msgstr "最小延伸表層寬度" + +#: fdmprinter.def.json +msgctxt "min_skin_width_for_expansion description" +msgid "" +"Skin areas narrower than this are not expanded. This avoids expanding the " +"narrow skin areas that are created when the model surface has a slope close " +"to the vertical." +msgstr "" +"如果表層區域寬度小於此值,則不會延伸。這會避免延伸在模型表面的斜度接近垂直時" +"所形成的狹窄表層區域。" + +#: fdmprinter.def.json +msgctxt "material label" +msgid "Material" +msgstr "耗材" + +#: fdmprinter.def.json +msgctxt "material description" +msgid "Material" +msgstr "耗材" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature label" +msgid "Auto Temperature" +msgstr "自動溫度" + +#: fdmprinter.def.json +msgctxt "material_flow_dependent_temperature description" +msgid "" +"Change the temperature for each layer automatically with the average flow " +"speed of that layer." +msgstr "根據每一層的平均流速自動更改每層的溫度。" + +#: fdmprinter.def.json +msgctxt "default_material_print_temperature label" +msgid "Default Printing Temperature" +msgstr "預設列印溫度" + +#: fdmprinter.def.json +msgctxt "default_material_print_temperature description" +msgid "" +"The default temperature used for printing. This should be the \"base\" " +"temperature of a material. All other print temperatures should use offsets " +"based on this value" +msgstr "" +"用於列印的預設溫度。應為耗材的\"基本\"溫度。所有其他列印溫度均應使用基於此值" +"的偏移量" + +#: fdmprinter.def.json +msgctxt "material_print_temperature label" +msgid "Printing Temperature" +msgstr "列印溫度" + +#: fdmprinter.def.json +msgctxt "material_print_temperature description" +msgid "The temperature used for printing." +msgstr "用於列印的溫度。" + +#: fdmprinter.def.json +msgctxt "material_print_temperature_layer_0 label" +msgid "Printing Temperature Initial Layer" +msgstr "列印溫度起始層" + +#: fdmprinter.def.json +msgctxt "material_print_temperature_layer_0 description" +msgid "" +"The temperature used for printing the first layer. Set at 0 to disable " +"special handling of the initial layer." +msgstr "用於列印第一層的溫度。設為 0 即關閉對起始層的特别處理。" + +#: fdmprinter.def.json +msgctxt "material_initial_print_temperature label" +msgid "Initial Printing Temperature" +msgstr "起始列印溫度" + +#: fdmprinter.def.json +msgctxt "material_initial_print_temperature description" +msgid "" +"The minimal temperature while heating up to the Printing Temperature at " +"which printing can already start." +msgstr "加熱到可以開始列印的列印溫度時的最低溫度。" + +#: fdmprinter.def.json +msgctxt "material_final_print_temperature label" +msgid "Final Printing Temperature" +msgstr "最終列印溫度" + +#: fdmprinter.def.json +msgctxt "material_final_print_temperature description" +msgid "" +"The temperature to which to already start cooling down just before the end " +"of printing." +msgstr "列印結束前開始冷卻的溫度。" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph label" +msgid "Flow Temperature Graph" +msgstr "流量溫度圖" + +#: fdmprinter.def.json +msgctxt "material_flow_temp_graph description" +msgid "" +"Data linking material flow (in mm3 per second) to temperature (degrees " +"Celsius)." +msgstr "數據連接耗材流量(mm3/s)到溫度(攝氏)。" + +#: fdmprinter.def.json +msgctxt "material_extrusion_cool_down_speed label" +msgid "Extrusion Cool Down Speed Modifier" +msgstr "擠出降溫速度修正" + +#: fdmprinter.def.json +msgctxt "material_extrusion_cool_down_speed description" +msgid "" +"The extra speed by which the nozzle cools while extruding. The same value is " +"used to signify the heat up speed lost when heating up while extruding." +msgstr "" +"解決在擠料的同時因為噴頭冷卻所造成的影響的額外速度修正。相同的值被用於表示在" +"擠壓時所失去的升溫速度。" + +#: fdmprinter.def.json +msgctxt "material_bed_temperature label" +msgid "Build Plate Temperature" +msgstr "列印平台溫度" + +#: fdmprinter.def.json +msgctxt "material_bed_temperature description" +msgid "" +"The temperature used for the heated build plate. If this is 0, the bed will " +"not heat up for this print." +msgstr "" +"用於加熱列印平台的溫度。如果列印平台溫度為 0,則熱床將不會為此次列印加熱。" + +#: fdmprinter.def.json +msgctxt "material_bed_temperature_layer_0 label" +msgid "Build Plate Temperature Initial Layer" +msgstr "列印平台溫度起始層" + +#: fdmprinter.def.json +msgctxt "material_bed_temperature_layer_0 description" +msgid "The temperature used for the heated build plate at the first layer." +msgstr "用於第一層加熱列印平台的溫度。" + +#: fdmprinter.def.json +msgctxt "material_diameter label" +msgid "Diameter" +msgstr "直徑" + +#: fdmprinter.def.json +msgctxt "material_diameter description" +msgid "" +"Adjusts the diameter of the filament used. Match this value with the " +"diameter of the used filament." +msgstr "調整所使用耗材的直徑。這個數值要等同於所使用耗材的直徑。" + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency label" +msgid "Adhesion Tendency" +msgstr "附著趨勢" + +#: fdmprinter.def.json +msgctxt "material_adhesion_tendency description" +msgid "Surface adhesion tendency." +msgstr "表面附著趨勢。" + +#: fdmprinter.def.json +msgctxt "material_surface_energy label" +msgid "Surface Energy" +msgstr "表面能量" + +#: fdmprinter.def.json +msgctxt "material_surface_energy description" +msgid "Surface energy." +msgstr "表面能量。" + +#: fdmprinter.def.json +msgctxt "material_flow label" +msgid "Flow" +msgstr "流量" + +#: fdmprinter.def.json +msgctxt "material_flow description" +msgid "" +"Flow compensation: the amount of material extruded is multiplied by this " +"value." +msgstr "流量補償:擠出的耗材量乘以此值。" + +#: fdmprinter.def.json +msgctxt "retraction_enable label" +msgid "Enable Retraction" +msgstr "啟用回抽" + +#: fdmprinter.def.json +msgctxt "retraction_enable description" +msgid "" +"Retract the filament when the nozzle is moving over a non-printed area. " +msgstr "當噴頭移動到非列印區域上方時回抽耗材。" + +#: fdmprinter.def.json +msgctxt "retract_at_layer_change label" +msgid "Retract at Layer Change" +msgstr "列印下一層時回抽" + +#: fdmprinter.def.json +msgctxt "retract_at_layer_change description" +msgid "Retract the filament when the nozzle is moving to the next layer." +msgstr "當噴頭移動到下一層時回抽耗材。" + +#: fdmprinter.def.json +msgctxt "retraction_amount label" +msgid "Retraction Distance" +msgstr "回抽距離" + +#: fdmprinter.def.json +msgctxt "retraction_amount description" +msgid "The length of material retracted during a retraction move." +msgstr "回抽移動期間回抽的耗材長度。" + +#: fdmprinter.def.json +msgctxt "retraction_speed label" +msgid "Retraction Speed" +msgstr "回抽速度" + +#: fdmprinter.def.json +msgctxt "retraction_speed description" +msgid "" +"The speed at which the filament is retracted and primed during a retraction " +"move." +msgstr "回抽移動期間耗材回抽和裝填的速度。" + +#: fdmprinter.def.json +msgctxt "retraction_retract_speed label" +msgid "Retraction Retract Speed" +msgstr "回抽速度" + +#: fdmprinter.def.json +msgctxt "retraction_retract_speed description" +msgid "The speed at which the filament is retracted during a retraction move." +msgstr "回抽移動期間耗材回抽的速度。" + +#: fdmprinter.def.json +msgctxt "retraction_prime_speed label" +msgid "Retraction Prime Speed" +msgstr "回抽裝填速度" + +#: fdmprinter.def.json +msgctxt "retraction_prime_speed description" +msgid "The speed at which the filament is primed during a retraction move." +msgstr "回抽移動期間耗材裝填的速度。" + +#: fdmprinter.def.json +msgctxt "retraction_extra_prime_amount label" +msgid "Retraction Extra Prime Amount" +msgstr "回抽額外裝填量" + +#: fdmprinter.def.json +msgctxt "retraction_extra_prime_amount description" +msgid "" +"Some material can ooze away during a travel move, which can be compensated " +"for here." +msgstr "有些耗材可能會在空跑過程中滲出,可以在這裡對其進行補償。" + +#: fdmprinter.def.json +msgctxt "retraction_min_travel label" +msgid "Retraction Minimum Travel" +msgstr "回抽最小空跑距離" + +#: fdmprinter.def.json +msgctxt "retraction_min_travel description" +msgid "" +"The minimum distance of travel needed for a retraction to happen at all. " +"This helps to get fewer retractions in a small area." +msgstr "觸發回抽所需的最小空跑距離。這有助於減少小區域內的回抽次數。" + +#: fdmprinter.def.json +msgctxt "retraction_count_max label" +msgid "Maximum Retraction Count" +msgstr "最大回抽次數" + +#: fdmprinter.def.json +msgctxt "retraction_count_max description" +msgid "" +"This setting limits the number of retractions occurring within the minimum " +"extrusion distance window. Further retractions within this window will be " +"ignored. This avoids retracting repeatedly on the same piece of filament, as " +"that can flatten the filament and cause grinding issues." +msgstr "" +"此設定限制在最小擠出距離範圍內發生的回抽數。此範圍內的額外回抽將會忽略。這避" +"免了在同一件耗材上重複回抽,從而導致耗材變扁並引起磨損問題。" + +#: fdmprinter.def.json +msgctxt "retraction_extrusion_window label" +msgid "Minimum Extrusion Distance Window" +msgstr "最小擠出距離範圍" + +#: fdmprinter.def.json +msgctxt "retraction_extrusion_window description" +msgid "" +"The window in which the maximum retraction count is enforced. This value " +"should be approximately the same as the retraction distance, so that " +"effectively the number of times a retraction passes the same patch of " +"material is limited." +msgstr "" +"最大回抽次數範圍。此值應大致與回抽距離相等,從而有效地限制在同一段耗材上的回" +"抽次數。" + +#: fdmprinter.def.json +msgctxt "material_standby_temperature label" +msgid "Standby Temperature" +msgstr "待機溫度" + +#: fdmprinter.def.json +msgctxt "material_standby_temperature description" +msgid "" +"The temperature of the nozzle when another nozzle is currently used for " +"printing." +msgstr "當另一個噴頭進行列印時,這個噴頭要保持的溫度。" + +#: fdmprinter.def.json +msgctxt "switch_extruder_retraction_amount label" +msgid "Nozzle Switch Retraction Distance" +msgstr "噴頭切換回抽距離" + +#: fdmprinter.def.json +msgctxt "switch_extruder_retraction_amount description" +msgid "" +"The amount of retraction: Set at 0 for no retraction at all. This should " +"generally be the same as the length of the heat zone." +msgstr "回抽量:設為 0,不進行任何回抽。該值通常應與加熱區的長度相同。" + +#: fdmprinter.def.json +msgctxt "switch_extruder_retraction_speeds label" +msgid "Nozzle Switch Retraction Speed" +msgstr "噴頭切換回抽速度" + +#: fdmprinter.def.json +msgctxt "switch_extruder_retraction_speeds description" +msgid "" +"The speed at which the filament is retracted. A higher retraction speed " +"works better, but a very high retraction speed can lead to filament grinding." +msgstr "" +"回抽耗材的速度。較高的回抽速度效果較好,但回抽速度過高可能導致耗材磨損。" + +#: fdmprinter.def.json +msgctxt "switch_extruder_retraction_speed label" +msgid "Nozzle Switch Retract Speed" +msgstr "噴頭切換回抽速度" + +#: fdmprinter.def.json +msgctxt "switch_extruder_retraction_speed description" +msgid "" +"The speed at which the filament is retracted during a nozzle switch retract." +msgstr "噴頭切換回抽期間耗材回抽的速度。" + +#: fdmprinter.def.json +msgctxt "switch_extruder_prime_speed label" +msgid "Nozzle Switch Prime Speed" +msgstr "噴頭切換裝填速度" + +#: fdmprinter.def.json +msgctxt "switch_extruder_prime_speed description" +msgid "" +"The speed at which the filament is pushed back after a nozzle switch " +"retraction." +msgstr "噴頭切換回抽後耗材被推回的速度。" + +#: fdmprinter.def.json +msgctxt "speed label" +msgid "Speed" +msgstr "速度" + +#: fdmprinter.def.json +msgctxt "speed description" +msgid "Speed" +msgstr "速度" + +#: fdmprinter.def.json +msgctxt "speed_print label" +msgid "Print Speed" +msgstr "列印速度" + +#: fdmprinter.def.json +msgctxt "speed_print description" +msgid "The speed at which printing happens." +msgstr "開始列印的速度。" + +#: fdmprinter.def.json +msgctxt "speed_infill label" +msgid "Infill Speed" +msgstr "填充速度" + +#: fdmprinter.def.json +msgctxt "speed_infill description" +msgid "The speed at which infill is printed." +msgstr "列印填充的速度。" + +#: fdmprinter.def.json +msgctxt "speed_wall label" +msgid "Wall Speed" +msgstr "牆壁速度" + +#: fdmprinter.def.json +msgctxt "speed_wall description" +msgid "The speed at which the walls are printed." +msgstr "列印牆壁的速度。" + +#: fdmprinter.def.json +msgctxt "speed_wall_0 label" +msgid "Outer Wall Speed" +msgstr "外壁速度" + +#: fdmprinter.def.json +msgctxt "speed_wall_0 description" +msgid "" +"The speed at which the outermost walls are printed. Printing the outer wall " +"at a lower speed improves the final skin quality. However, having a large " +"difference between the inner wall speed and the outer wall speed will affect " +"quality in a negative way." +msgstr "" +"列印最外壁的速度。以較低速度列印外壁可改善最終表層品質。但是,如果內壁速度和" +"外壁速度差距過大,則將對品質產生負面影響。" + +#: fdmprinter.def.json +msgctxt "speed_wall_x label" +msgid "Inner Wall Speed" +msgstr "內壁速度" + +#: fdmprinter.def.json +msgctxt "speed_wall_x description" +msgid "" +"The speed at which all inner walls are printed. Printing the inner wall " +"faster than the outer wall will reduce printing time. It works well to set " +"this in between the outer wall speed and the infill speed." +msgstr "" +"列印所有內壁的速度。以比外壁更快的速度列印內壁將減少列印時間。將該值設為外壁" +"速度和填充速度之間也可行。" + +#: fdmprinter.def.json +msgctxt "speed_roofing label" +msgid "Top Surface Skin Speed" +msgstr "頂部表層速度" + +#: fdmprinter.def.json +msgctxt "speed_roofing description" +msgid "The speed at which top surface skin layers are printed." +msgstr "列印頂部表層的速度。" + +#: fdmprinter.def.json +msgctxt "speed_topbottom label" +msgid "Top/Bottom Speed" +msgstr "頂部/底部速度" + +#: fdmprinter.def.json +msgctxt "speed_topbottom description" +msgid "The speed at which top/bottom layers are printed." +msgstr "列印頂部/底部層的速度。" + +#: fdmprinter.def.json +msgctxt "speed_support label" +msgid "Support Speed" +msgstr "支撐速度" + +#: fdmprinter.def.json +msgctxt "speed_support description" +msgid "" +"The speed at which the support structure is printed. Printing support at " +"higher speeds can greatly reduce printing time. The surface quality of the " +"support structure is not important since it is removed after printing." +msgstr "" +"在列印支撐結構時的速度。以更高的速度列印支撐可以大大減少列印時間。因為支撐在" +"列印後會被清除,所以表面品質並不重要。" + +#: fdmprinter.def.json +msgctxt "speed_support_infill label" +msgid "Support Infill Speed" +msgstr "支撐填充速度" + +#: fdmprinter.def.json +msgctxt "speed_support_infill description" +msgid "" +"The speed at which the infill of support is printed. Printing the infill at " +"lower speeds improves stability." +msgstr "列印支撐填充的速度。以較低的速度列印填充可改善穩定性。" + +#: fdmprinter.def.json +msgctxt "speed_support_interface label" +msgid "Support Interface Speed" +msgstr "支撐介面速度" + +#: fdmprinter.def.json +msgctxt "speed_support_interface description" +msgid "" +"The speed at which the roofs and floors of support are printed. Printing " +"them at lower speeds can improve overhang quality." +msgstr "列印支撐頂板和底板的速度。以較低的速度列印可以改善懸垂品質。" + +#: fdmprinter.def.json +msgctxt "speed_support_roof label" +msgid "Support Roof Speed" +msgstr "支撐頂板速度" + +#: fdmprinter.def.json +msgctxt "speed_support_roof description" +msgid "" +"The speed at which the roofs of support are printed. Printing them at lower " +"speeds can improve overhang quality." +msgstr "列印支撐頂板的速度。以較低的速度列印可以改善懸垂品質。" + +#: fdmprinter.def.json +msgctxt "speed_support_bottom label" +msgid "Support Floor Speed" +msgstr "支撐底板速度" + +#: fdmprinter.def.json +msgctxt "speed_support_bottom description" +msgid "" +"The speed at which the floor of support is printed. Printing it at lower " +"speed can improve adhesion of support on top of your model." +msgstr "列印支撐底板的速度。以較低的速度列印可以改善支撐在模型頂部的附著。" + +#: fdmprinter.def.json +msgctxt "speed_prime_tower label" +msgid "Prime Tower Speed" +msgstr "換料塔速度" + +#: fdmprinter.def.json +msgctxt "speed_prime_tower description" +msgid "" +"The speed at which the prime tower is printed. Printing the prime tower " +"slower can make it more stable when the adhesion between the different " +"filaments is suboptimal." +msgstr "" +"列印換料塔的速度。當不同耗材之間的黏合力不佳時,較慢地列印速度可以讓它更穩" +"定。" + +#: fdmprinter.def.json +msgctxt "speed_travel label" +msgid "Travel Speed" +msgstr "空跑速度" + +#: fdmprinter.def.json +msgctxt "speed_travel description" +msgid "The speed at which travel moves are made." +msgstr "噴頭在非列印時的移動速度。" + +#: fdmprinter.def.json +msgctxt "speed_layer_0 label" +msgid "Initial Layer Speed" +msgstr "起始層速度" + +#: fdmprinter.def.json +msgctxt "speed_layer_0 description" +msgid "" +"The speed for the initial layer. A lower value is advised to improve " +"adhesion to the build plate." +msgstr "起始層的速度。建議採用較低的值以便改善與列印平台的附著。" + +#: fdmprinter.def.json +msgctxt "speed_print_layer_0 label" +msgid "Initial Layer Print Speed" +msgstr "起始層列印速度" + +#: fdmprinter.def.json +msgctxt "speed_print_layer_0 description" +msgid "" +"The speed of printing for the initial layer. A lower value is advised to " +"improve adhesion to the build plate." +msgstr "列印起始層的速度。建議採用較低的值以便改善與列印平台的附著。" + +#: fdmprinter.def.json +msgctxt "speed_travel_layer_0 label" +msgid "Initial Layer Travel Speed" +msgstr "起始層空跑速度" + +#: fdmprinter.def.json +msgctxt "speed_travel_layer_0 description" +msgid "" +"The speed of travel moves in the initial layer. A lower value is advised to " +"prevent pulling previously printed parts away from the build plate. The " +"value of this setting can automatically be calculated from the ratio between " +"the Travel Speed and the Print Speed." +msgstr "" +"起始層中的空跑速度。建議採用較低的值,以防止將之前列印的部分從列印平台上拉" +"離。該設定的值可以根據空跑速度和列印速度的比率自動計算得出。" + +#: fdmprinter.def.json +msgctxt "skirt_brim_speed label" +msgid "Skirt/Brim Speed" +msgstr "外圍/邊緣速度" + +#: fdmprinter.def.json +msgctxt "skirt_brim_speed description" +msgid "" +"The speed at which the skirt and brim are printed. Normally this is done at " +"the initial layer speed, but sometimes you might want to print the skirt or " +"brim at a different speed." +msgstr "" +"列印外圍和邊緣的速度。一般情况是以起始層速度列印這些部分,但有時候你可能想要" +"以不同速度來列印外圍或邊緣。" + +#: fdmprinter.def.json +msgctxt "max_feedrate_z_override label" +msgid "Maximum Z Speed" +msgstr "最大 Z 軸速度" + +#: fdmprinter.def.json +msgctxt "max_feedrate_z_override description" +msgid "" +"The maximum speed with which the build plate is moved. Setting this to zero " +"causes the print to use the firmware defaults for the maximum z speed." +msgstr "" +"列印平台移動的最大速度。將該值設為零會使列印為最大 Z 速度採用韌體預設值。" + +#: fdmprinter.def.json +msgctxt "speed_slowdown_layers label" +msgid "Number of Slower Layers" +msgstr "慢速列印層數" + +#: fdmprinter.def.json +msgctxt "speed_slowdown_layers description" +msgid "" +"The first few layers are printed slower than the rest of the model, to get " +"better adhesion to the build plate and improve the overall success rate of " +"prints. The speed is gradually increased over these layers." +msgstr "" +"前幾層的列印速度比模型的其他層慢,以便實現與列印平台的更好附著,並改善整體的" +"列印成功率。該速度在這些層中會逐漸增加。" + +#: fdmprinter.def.json +msgctxt "speed_equalize_flow_enabled label" +msgid "Equalize Filament Flow" +msgstr "均衡耗材流量" + +#: fdmprinter.def.json +msgctxt "speed_equalize_flow_enabled description" +msgid "" +"Print thinner than normal lines faster so that the amount of material " +"extruded per second remains the same. Thin pieces in your model might " +"require lines printed with smaller line width than provided in the settings. " +"This setting controls the speed changes for such lines." +msgstr "" +"以較快的速度列印比正常線條更細的線條,使每秒擠出的耗材量保持相同。模型中較薄" +"的部分可能需要以低於設定中所提供寬度的線寬來列印線條。該設定控制這些線條的速" +"度變化。" + +#: fdmprinter.def.json +msgctxt "speed_equalize_flow_max label" +msgid "Maximum Speed for Flow Equalization" +msgstr "流量均衡的最大速度" + +#: fdmprinter.def.json +msgctxt "speed_equalize_flow_max description" +msgid "" +"Maximum print speed when adjusting the print speed in order to equalize flow." +msgstr "調整列印速度以便均衡流量時的最大列印速度。" + +#: fdmprinter.def.json +msgctxt "acceleration_enabled label" +msgid "Enable Acceleration Control" +msgstr "啟用加速度控制" + +#: fdmprinter.def.json +msgctxt "acceleration_enabled description" +msgid "" +"Enables adjusting the print head acceleration. Increasing the accelerations " +"can reduce printing time at the cost of print quality." +msgstr "啟用調整噴頭的加速度。增加加速度可以減少列印時間卻會犧牲列印品質。" + +#: fdmprinter.def.json +msgctxt "acceleration_print label" +msgid "Print Acceleration" +msgstr "列印加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_print description" +msgid "The acceleration with which printing happens." +msgstr "列印發生的加速度。" + +#: fdmprinter.def.json +msgctxt "acceleration_infill label" +msgid "Infill Acceleration" +msgstr "填充加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_infill description" +msgid "The acceleration with which infill is printed." +msgstr "列印填充的加速度。" + +#: fdmprinter.def.json +msgctxt "acceleration_wall label" +msgid "Wall Acceleration" +msgstr "牆壁加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_wall description" +msgid "The acceleration with which the walls are printed." +msgstr "列印牆壁的加速度。" + +#: fdmprinter.def.json +msgctxt "acceleration_wall_0 label" +msgid "Outer Wall Acceleration" +msgstr "外壁加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_wall_0 description" +msgid "The acceleration with which the outermost walls are printed." +msgstr "列印最外壁的加速度。" + +#: fdmprinter.def.json +msgctxt "acceleration_wall_x label" +msgid "Inner Wall Acceleration" +msgstr "內壁加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_wall_x description" +msgid "The acceleration with which all inner walls are printed." +msgstr "列印所有內壁的加速度。" + +#: fdmprinter.def.json +msgctxt "acceleration_roofing label" +msgid "Top Surface Skin Acceleration" +msgstr "頂部表層加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_roofing description" +msgid "The acceleration with which top surface skin layers are printed." +msgstr "列印頂部表層的加速度。" + +#: fdmprinter.def.json +msgctxt "acceleration_topbottom label" +msgid "Top/Bottom Acceleration" +msgstr "頂部/底部加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_topbottom description" +msgid "The acceleration with which top/bottom layers are printed." +msgstr "列印頂部/底部層的加速度。" + +#: fdmprinter.def.json +msgctxt "acceleration_support label" +msgid "Support Acceleration" +msgstr "支撐加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_support description" +msgid "The acceleration with which the support structure is printed." +msgstr "列印支撐的加速度。" + +#: fdmprinter.def.json +msgctxt "acceleration_support_infill label" +msgid "Support Infill Acceleration" +msgstr "支撐填充加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_support_infill description" +msgid "The acceleration with which the infill of support is printed." +msgstr "列印支撐填充的加速度。" + +#: fdmprinter.def.json +msgctxt "acceleration_support_interface label" +msgid "Support Interface Acceleration" +msgstr "支撐介面加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_support_interface description" +msgid "" +"The acceleration with which the roofs and floors of support are printed. " +"Printing them at lower acceleration can improve overhang quality." +msgstr "列印支撐頂板和底板的加速度。以較低的加速度列印可以改善懸垂品質。" + +#: fdmprinter.def.json +msgctxt "acceleration_support_roof label" +msgid "Support Roof Acceleration" +msgstr "支撐頂板加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_support_roof description" +msgid "" +"The acceleration with which the roofs of support are printed. Printing them " +"at lower acceleration can improve overhang quality." +msgstr "列印支撐頂板的加速度。以較低的加速度列印可以改善懸垂品質。" + +#: fdmprinter.def.json +msgctxt "acceleration_support_bottom label" +msgid "Support Floor Acceleration" +msgstr "支撐底板加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_support_bottom description" +msgid "" +"The acceleration with which the floors of support are printed. Printing them " +"at lower acceleration can improve adhesion of support on top of your model." +msgstr "列印支撐底板的加速度。以較低的加速度列印可以改善支撐在模型頂部的附著。" + +#: fdmprinter.def.json +msgctxt "acceleration_prime_tower label" +msgid "Prime Tower Acceleration" +msgstr "換料塔加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_prime_tower description" +msgid "The acceleration with which the prime tower is printed." +msgstr "列印換料塔的加速度。" + +#: fdmprinter.def.json +msgctxt "acceleration_travel label" +msgid "Travel Acceleration" +msgstr "空跑加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_travel description" +msgid "The acceleration with which travel moves are made." +msgstr "進行空跑的加速度。" + +#: fdmprinter.def.json +msgctxt "acceleration_layer_0 label" +msgid "Initial Layer Acceleration" +msgstr "起始層加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_layer_0 description" +msgid "The acceleration for the initial layer." +msgstr "起始層的加速度。" + +#: fdmprinter.def.json +msgctxt "acceleration_print_layer_0 label" +msgid "Initial Layer Print Acceleration" +msgstr "起始層列印加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_print_layer_0 description" +msgid "The acceleration during the printing of the initial layer." +msgstr "列印起始層時的加速度。" + +#: fdmprinter.def.json +msgctxt "acceleration_travel_layer_0 label" +msgid "Initial Layer Travel Acceleration" +msgstr "起始層空跑加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_travel_layer_0 description" +msgid "The acceleration for travel moves in the initial layer." +msgstr "起始層中的空跑加速度。" + +#: fdmprinter.def.json +msgctxt "acceleration_skirt_brim label" +msgid "Skirt/Brim Acceleration" +msgstr "外圍/邊緣加速度" + +#: fdmprinter.def.json +msgctxt "acceleration_skirt_brim description" +msgid "" +"The acceleration with which the skirt and brim are printed. Normally this is " +"done with the initial layer acceleration, but sometimes you might want to " +"print the skirt or brim at a different acceleration." +msgstr "" +"列印外圍和邊緣的加速度。一般情况是以起始層加速度列印這些部分,但有時候你可能" +"想要以不同加速度來列印外圍或邊緣。" + +#: fdmprinter.def.json +msgctxt "jerk_enabled label" +msgid "Enable Jerk Control" +msgstr "啟用加加速度控制" + +#: fdmprinter.def.json +msgctxt "jerk_enabled description" +msgid "" +"Enables adjusting the jerk of print head when the velocity in the X or Y " +"axis changes. Increasing the jerk can reduce printing time at the cost of " +"print quality." +msgstr "" +"啟用當 X 或 Y 軸的速度變化時調整列印頭的加加速度。提高加加速度可以通過以列印" +"品質為代價來縮短列印時間。" + +#: fdmprinter.def.json +msgctxt "jerk_print label" +msgid "Print Jerk" +msgstr "列印加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_print description" +msgid "The maximum instantaneous velocity change of the print head." +msgstr "列印頭的最大瞬時速度變化。" + +#: fdmprinter.def.json +msgctxt "jerk_infill label" +msgid "Infill Jerk" +msgstr "填充加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_infill description" +msgid "The maximum instantaneous velocity change with which infill is printed." +msgstr "列印填充時的最大瞬時速度變化。" + +#: fdmprinter.def.json +msgctxt "jerk_wall label" +msgid "Wall Jerk" +msgstr "牆壁加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_wall description" +msgid "" +"The maximum instantaneous velocity change with which the walls are printed." +msgstr "列印牆壁時的最大瞬時速度變化。" + +#: fdmprinter.def.json +msgctxt "jerk_wall_0 label" +msgid "Outer Wall Jerk" +msgstr "外壁加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_wall_0 description" +msgid "" +"The maximum instantaneous velocity change with which the outermost walls are " +"printed." +msgstr "列印最外壁時的最大瞬時速度變化。" + +#: fdmprinter.def.json +msgctxt "jerk_wall_x label" +msgid "Inner Wall Jerk" +msgstr "內壁加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_wall_x description" +msgid "" +"The maximum instantaneous velocity change with which all inner walls are " +"printed." +msgstr "列印所有內壁時的最大瞬時速度變化。" + +#: fdmprinter.def.json +msgctxt "jerk_roofing label" +msgid "Top Surface Skin Jerk" +msgstr "頂部表層加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_roofing description" +msgid "" +"The maximum instantaneous velocity change with which top surface skin layers " +"are printed." +msgstr "列印頂部表層時的最大瞬時速度變化。" + +#: fdmprinter.def.json +msgctxt "jerk_topbottom label" +msgid "Top/Bottom Jerk" +msgstr "頂部/底部加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_topbottom description" +msgid "" +"The maximum instantaneous velocity change with which top/bottom layers are " +"printed." +msgstr "列印頂部/底部層時的最大瞬時速度變化。" + +#: fdmprinter.def.json +msgctxt "jerk_support label" +msgid "Support Jerk" +msgstr "支撐加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_support description" +msgid "" +"The maximum instantaneous velocity change with which the support structure " +"is printed." +msgstr "列印支撐結構時的最大瞬時速度變化。" + +#: fdmprinter.def.json +msgctxt "jerk_support_infill label" +msgid "Support Infill Jerk" +msgstr "支撐填充加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_support_infill description" +msgid "" +"The maximum instantaneous velocity change with which the infill of support " +"is printed." +msgstr "列印支撐填充時的最大瞬時速度變化。" + +#: fdmprinter.def.json +msgctxt "jerk_support_interface label" +msgid "Support Interface Jerk" +msgstr "支撐介面加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_support_interface description" +msgid "" +"The maximum instantaneous velocity change with which the roofs and floors of " +"support are printed." +msgstr "列印支撐頂板和底板的最大瞬時速度變化。" + +#: fdmprinter.def.json +msgctxt "jerk_support_roof label" +msgid "Support Roof Jerk" +msgstr "支撐頂板加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_support_roof description" +msgid "" +"The maximum instantaneous velocity change with which the roofs of support " +"are printed." +msgstr "列印支撐頂板的最大瞬時速度變化。" + +#: fdmprinter.def.json +msgctxt "jerk_support_bottom label" +msgid "Support Floor Jerk" +msgstr "支撐底板加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_support_bottom description" +msgid "" +"The maximum instantaneous velocity change with which the floors of support " +"are printed." +msgstr "列印支撐底板時的最大瞬時速度變化。" + +#: fdmprinter.def.json +msgctxt "jerk_prime_tower label" +msgid "Prime Tower Jerk" +msgstr "換料塔加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_prime_tower description" +msgid "" +"The maximum instantaneous velocity change with which the prime tower is " +"printed." +msgstr "列印換料塔時的最大瞬時速度變化。" + +#: fdmprinter.def.json +msgctxt "jerk_travel label" +msgid "Travel Jerk" +msgstr "空跑加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_travel description" +msgid "" +"The maximum instantaneous velocity change with which travel moves are made." +msgstr "進行空跑時的最大瞬時速度變化。" + +#: fdmprinter.def.json +msgctxt "jerk_layer_0 label" +msgid "Initial Layer Jerk" +msgstr "起始層加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_layer_0 description" +msgid "The print maximum instantaneous velocity change for the initial layer." +msgstr "起始層的列印最大瞬時速度變化。" + +#: fdmprinter.def.json +msgctxt "jerk_print_layer_0 label" +msgid "Initial Layer Print Jerk" +msgstr "起始層列印加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_print_layer_0 description" +msgid "" +"The maximum instantaneous velocity change during the printing of the initial " +"layer." +msgstr "列印起始層時的最大瞬時速度變化。" + +#: fdmprinter.def.json +msgctxt "jerk_travel_layer_0 label" +msgid "Initial Layer Travel Jerk" +msgstr "起始層空跑加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_travel_layer_0 description" +msgid "The acceleration for travel moves in the initial layer." +msgstr "起始層中的空跑加速度。" + +#: fdmprinter.def.json +msgctxt "jerk_skirt_brim label" +msgid "Skirt/Brim Jerk" +msgstr "外圍/邊緣加加速度" + +#: fdmprinter.def.json +msgctxt "jerk_skirt_brim description" +msgid "" +"The maximum instantaneous velocity change with which the skirt and brim are " +"printed." +msgstr "列印外圍和邊緣時的最大瞬時速度變化。" + +#: fdmprinter.def.json +msgctxt "travel label" +msgid "Travel" +msgstr "空跑" + +#: fdmprinter.def.json +msgctxt "travel description" +msgid "travel" +msgstr "空跑" + +#: fdmprinter.def.json +msgctxt "retraction_combing label" +msgid "Combing Mode" +msgstr "梳理模式" + +#: fdmprinter.def.json +msgctxt "retraction_combing description" +msgid "" +"Combing keeps the nozzle within already printed areas when traveling. This " +"results in slightly longer travel moves but reduces the need for " +"retractions. If combing is off, the material will retract and the nozzle " +"moves in a straight line to the next point. It is also possible to avoid " +"combing over top/bottom skin areas by combing within the infill only." +msgstr "" +"梳理可在空跑時讓噴頭保持在已列印區域內。這會使空跑距離稍微延長,但可減少回抽" +"需求。如果關閉梳理,則耗材將回抽,且噴頭沿著直線移動到下一個點。也可以通過僅" +"在填充內進行梳理避免梳理頂部/底部表層區域。" + +#: fdmprinter.def.json +msgctxt "retraction_combing option off" +msgid "Off" +msgstr "關" + +#: fdmprinter.def.json +msgctxt "retraction_combing option all" +msgid "All" +msgstr "所有" + +#: fdmprinter.def.json +msgctxt "retraction_combing option noskin" +msgid "No Skin" +msgstr "表層除外" + +#: fdmprinter.def.json +msgctxt "travel_retract_before_outer_wall label" +msgid "Retract Before Outer Wall" +msgstr "列印外壁前先進行回抽" + +#: fdmprinter.def.json +msgctxt "travel_retract_before_outer_wall description" +msgid "Always retract when moving to start an outer wall." +msgstr "當移動到外牆起始點時總是進行回抽。" + +#: fdmprinter.def.json +msgctxt "travel_avoid_other_parts label" +msgid "Avoid Printed Parts When Traveling" +msgstr "空跑時避開已列印部分" + +#: fdmprinter.def.json +msgctxt "travel_avoid_other_parts description" +msgid "" +"The nozzle avoids already printed parts when traveling. This option is only " +"available when combing is enabled." +msgstr "噴頭會在空跑時避開已列印的部分。此選項僅在啟用梳理功能時可用。" + +#: fdmprinter.def.json +msgctxt "travel_avoid_distance label" +msgid "Travel Avoid Distance" +msgstr "空跑避開距離" + +#: fdmprinter.def.json +msgctxt "travel_avoid_distance description" +msgid "" +"The distance between the nozzle and already printed parts when avoiding " +"during travel moves." +msgstr "噴頭和已列印部分之間在空跑時避開的距離。" + +#: fdmprinter.def.json +msgctxt "start_layers_at_same_position label" +msgid "Start Layers with the Same Part" +msgstr "在相同的位置列印新層" + +#: fdmprinter.def.json +msgctxt "start_layers_at_same_position description" +msgid "" +"In each layer start with printing the object near the same point, so that we " +"don't start a new layer with printing the piece which the previous layer " +"ended with. This makes for better overhangs and small parts, but increases " +"printing time." +msgstr "" +"每一層都在相同點附近開始列印,這樣在列印新的一層時,就不需要列印前一層結束時" +"的那一小段區域。在懸垂部分和小零件有良好的效果,但會增加列印時間。" + +#: fdmprinter.def.json +msgctxt "layer_start_x label" +msgid "Layer Start X" +msgstr "每層列印起始點的 X 座標" + +#: fdmprinter.def.json +msgctxt "layer_start_x description" +msgid "" +"The X coordinate of the position near where to find the part to start " +"printing each layer." +msgstr "每一層列印起始點附近位置的 X 坐標。" + +#: fdmprinter.def.json +msgctxt "layer_start_y label" +msgid "Layer Start Y" +msgstr "每層列印起始點的 Y 座標" + +#: fdmprinter.def.json +msgctxt "layer_start_y description" +msgid "" +"The Y coordinate of the position near where to find the part to start " +"printing each layer." +msgstr "每一層列印起始點附近位置的 Y 坐標。" + +#: fdmprinter.def.json +msgctxt "retraction_hop_enabled label" +msgid "Z Hop When Retracted" +msgstr "回抽時 Z 抬升" + +#: fdmprinter.def.json +msgctxt "retraction_hop_enabled description" +msgid "" +"Whenever a retraction is done, the build plate is lowered to create " +"clearance between the nozzle and the print. It prevents the nozzle from " +"hitting the print during travel moves, reducing the chance to knock the " +"print from the build plate." +msgstr "" +"每當回抽完成時,列印平台會降低以便在噴頭和列印品之間形成空隙。它可以防止噴頭" +"在空跑過程中撞到列印品,降低將列印品從列印平台撞掉的幾率。" + +#: fdmprinter.def.json +msgctxt "retraction_hop_only_when_collides label" +msgid "Z Hop Only Over Printed Parts" +msgstr "僅在已列印部分上 Z 抬升" + +#: fdmprinter.def.json +msgctxt "retraction_hop_only_when_collides description" +msgid "" +"Only perform a Z Hop when moving over printed parts which cannot be avoided " +"by horizontal motion by Avoid Printed Parts when Traveling." +msgstr "" +"僅在移動到無法通過“空跑時避開已列印部分”選項的水平操作避開的已列印部分上方時" +"執行 Z 抬升。" + +#: fdmprinter.def.json +msgctxt "retraction_hop label" +msgid "Z Hop Height" +msgstr "Z 抬升高度" + +#: fdmprinter.def.json +msgctxt "retraction_hop description" +msgid "The height difference when performing a Z Hop." +msgstr "執行 Z 抬升的高度差。" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch label" +msgid "Z Hop After Extruder Switch" +msgstr "擠出機切換後的 Z 抬升" + +#: fdmprinter.def.json +msgctxt "retraction_hop_after_extruder_switch description" +msgid "" +"After the machine switched from one extruder to the other, the build plate " +"is lowered to create clearance between the nozzle and the print. This " +"prevents the nozzle from leaving oozed material on the outside of a print." +msgstr "" +"當機器從一個擠出機切換到另一個時,列印平台會降低以便在噴頭和列印品之間形成空" +"隙。這將防止噴頭在列印品外部留下滲出物。" + +#: fdmprinter.def.json +msgctxt "cooling label" +msgid "Cooling" +msgstr "冷卻" + +#: fdmprinter.def.json +msgctxt "cooling description" +msgid "Cooling" +msgstr "冷卻" + +#: fdmprinter.def.json +msgctxt "cool_fan_enabled label" +msgid "Enable Print Cooling" +msgstr "開啟列印冷卻" + +#: fdmprinter.def.json +msgctxt "cool_fan_enabled description" +msgid "" +"Enables the print cooling fans while printing. The fans improve print " +"quality on layers with short layer times and bridging / overhangs." +msgstr "" +"列印時啟用列印冷卻風扇。風扇可以在列印時間較短的層和橋接/懸垂結構提高列印品" +"質。" + +#: fdmprinter.def.json +msgctxt "cool_fan_speed label" +msgid "Fan Speed" +msgstr "風扇轉速" + +#: fdmprinter.def.json +msgctxt "cool_fan_speed description" +msgid "The speed at which the print cooling fans spin." +msgstr "列印冷卻風扇旋轉的速度。" + +#: fdmprinter.def.json +msgctxt "cool_fan_speed_min label" +msgid "Regular Fan Speed" +msgstr "標準風扇轉速" + +#: fdmprinter.def.json +msgctxt "cool_fan_speed_min description" +msgid "" +"The speed at which the fans spin before hitting the threshold. When a layer " +"prints faster than the threshold, the fan speed gradually inclines towards " +"the maximum fan speed." +msgstr "" +"在單層列印時間大於門檻值時,風扇運轉的速度。當單層列印時間小於門檻值時,系統" +"會根據單層列印時間決定使用的風扇轉速。列印時間愈短,所使用的風扇轉速愈快,但" +"不會超過最大風扇轉速。" + +#: fdmprinter.def.json +msgctxt "cool_fan_speed_max label" +msgid "Maximum Fan Speed" +msgstr "最大風扇轉速" + +#: fdmprinter.def.json +msgctxt "cool_fan_speed_max description" +msgid "" +"The speed at which the fans spin on the minimum layer time. The fan speed " +"gradually increases between the regular fan speed and maximum fan speed when " +"the threshold is hit." +msgstr "" +"在“最短單層列印時間”時,風扇運轉的速度。當單層列印時間小於門檻值時,系統會根" +"據單層列印時間決定使用的風扇轉速。列印時間愈短,所使用的風扇轉速愈快,但不會" +"超過最大風扇轉速。" + +#: fdmprinter.def.json +msgctxt "cool_min_layer_time_fan_speed_max label" +msgid "Regular/Maximum Fan Speed Threshold" +msgstr "標準風扇轉速門檻值" + +#: fdmprinter.def.json +msgctxt "cool_min_layer_time_fan_speed_max description" +msgid "" +"The layer time which sets the threshold between regular fan speed and " +"maximum fan speed. Layers that print slower than this time use regular fan " +"speed. For faster layers the fan speed gradually increases towards the " +"maximum fan speed." +msgstr "" +"使用標準風扇轉速的單層列印時間門檻值。如果單層列印時間大於這個門檻值,就使用" +"標準風扇轉速。如果單層列印時間比這個門檻值短,系統會根據單層列印時間決定使用" +"的風扇轉速。列印時間愈短,所使用的風扇轉速愈快,但不會超過最大風扇轉速。" + +#: fdmprinter.def.json +msgctxt "cool_fan_speed_0 label" +msgid "Initial Fan Speed" +msgstr "起始層風扇轉速" + +#: fdmprinter.def.json +msgctxt "cool_fan_speed_0 description" +msgid "" +"The speed at which the fans spin at the start of the print. In subsequent " +"layers the fan speed is gradually increased up to the layer corresponding to " +"Regular Fan Speed at Height." +msgstr "" +"列印起始層時的風扇轉速。在隨後的層中,風扇轉速會逐漸增加到對應層所設定的速" +"度。" + +#: fdmprinter.def.json +msgctxt "cool_fan_full_at_height label" +msgid "Regular Fan Speed at Height" +msgstr "標準風扇轉速(高度)" + +#: fdmprinter.def.json +msgctxt "cool_fan_full_at_height description" +msgid "" +"The height at which the fans spin on regular fan speed. At the layers below " +"the fan speed gradually increases from Initial Fan Speed to Regular Fan " +"Speed." +msgstr "" +"使用標準風扇轉速的高度。風扇轉速會從起始轉速逐漸增加,在此高度達到標準風扇轉" +"速。" + +#: fdmprinter.def.json +msgctxt "cool_fan_full_layer label" +msgid "Regular Fan Speed at Layer" +msgstr "標準風扇轉速(層)" + +#: fdmprinter.def.json +msgctxt "cool_fan_full_layer description" +msgid "" +"The layer at which the fans spin on regular fan speed. If regular fan speed " +"at height is set, this value is calculated and rounded to a whole number." +msgstr "" +"要使用標準風扇轉速的層。如果標準風扇轉速高度已被設定,這個值將使用計算出來後" +"取四捨五入的整數值。" + +#: fdmprinter.def.json +msgctxt "cool_min_layer_time label" +msgid "Minimum Layer Time" +msgstr "最短單層列印時間" + +#: fdmprinter.def.json +msgctxt "cool_min_layer_time description" +msgid "" +"The minimum time spent in a layer. This forces the printer to slow down, to " +"at least spend the time set here in one layer. This allows the printed " +"material to cool down properly before printing the next layer. Layers may " +"still take shorter than the minimal layer time if Lift Head is disabled and " +"if the Minimum Speed would otherwise be violated." +msgstr "" +"單層列印時間的下限。這會迫使印表機減速,以便在單層列印中消耗此處所規定的時" +"間。這會讓模型充分冷卻後再列印下一層。如果“噴頭抬升”功能被關閉,為了不違反“最" +"低列印速度”,單層列印時間仍有可能低於此設定值。" + +#: fdmprinter.def.json +msgctxt "cool_min_speed label" +msgid "Minimum Speed" +msgstr "最低列印速度" + +#: fdmprinter.def.json +msgctxt "cool_min_speed description" +msgid "" +"The minimum print speed, despite slowing down due to the minimum layer time. " +"When the printer would slow down too much, the pressure in the nozzle would " +"be too low and result in bad print quality." +msgstr "" +"列印速度的下限,限制因“最短單層列印時間”的減速。當印表機減速過多時,噴頭中的" +"壓力將過低並導致較差的列印品質。" + +#: fdmprinter.def.json +msgctxt "cool_lift_head label" +msgid "Lift Head" +msgstr "噴頭抬升" + +#: fdmprinter.def.json +msgctxt "cool_lift_head description" +msgid "" +"When the minimum speed is hit because of minimum layer time, lift the head " +"away from the print and wait the extra time until the minimum layer time is " +"reached." +msgstr "" +"當“最短單層列印時間”受到“最低列印速度”限制時,將噴頭從模型上抬高,並等候達到" +"最短單層列印時間。" + +#: fdmprinter.def.json +msgctxt "support label" +msgid "Support" +msgstr "支撐" + +#: fdmprinter.def.json +msgctxt "support description" +msgid "Support" +msgstr "支撐" + +#: fdmprinter.def.json +msgctxt "support_enable label" +msgid "Generate Support" +msgstr "產生支撐" + +#: fdmprinter.def.json +msgctxt "support_enable description" +msgid "" +"Generate structures to support parts of the model which have overhangs. " +"Without these structures, such parts would collapse during printing." +msgstr "" +"在模型的懸垂(Overhangs)部分產生支撐結構。若不這樣做,這些部分在列印時將倒" +"塌。" + +#: fdmprinter.def.json +msgctxt "support_extruder_nr label" +msgid "Support Extruder" +msgstr "支撐用擠出機" + +#: fdmprinter.def.json +msgctxt "support_extruder_nr description" +msgid "" +"The extruder train to use for printing the support. This is used in multi-" +"extrusion." +msgstr "用於列印支撐的擠出機組。在多擠出機情況下適用。" + +#: fdmprinter.def.json +msgctxt "support_infill_extruder_nr label" +msgid "Support Infill Extruder" +msgstr "支撐填充擠出機" + +#: fdmprinter.def.json +msgctxt "support_infill_extruder_nr description" +msgid "" +"The extruder train to use for printing the infill of the support. This is " +"used in multi-extrusion." +msgstr "用於列印支撐填充的擠出機組。在多擠出機情況下適用。" + +#: fdmprinter.def.json +msgctxt "support_extruder_nr_layer_0 label" +msgid "First Layer Support Extruder" +msgstr "第一層支撐擠出機" + +#: fdmprinter.def.json +msgctxt "support_extruder_nr_layer_0 description" +msgid "" +"The extruder train to use for printing the first layer of support infill. " +"This is used in multi-extrusion." +msgstr "用於列印支撐填充第一層的擠出機組。在多擠出機情況下適用。" + +#: fdmprinter.def.json +msgctxt "support_interface_extruder_nr label" +msgid "Support Interface Extruder" +msgstr "支撐介面擠出機" + +#: fdmprinter.def.json +msgctxt "support_interface_extruder_nr description" +msgid "" +"The extruder train to use for printing the roofs and floors of the support. " +"This is used in multi-extrusion." +msgstr "用於列印支撐頂板和底板的擠出機組。在多擠出機情況下適用。" + +#: fdmprinter.def.json +msgctxt "support_roof_extruder_nr label" +msgid "Support Roof Extruder" +msgstr "支撐頂板擠出機" + +#: fdmprinter.def.json +msgctxt "support_roof_extruder_nr description" +msgid "" +"The extruder train to use for printing the roofs of the support. This is " +"used in multi-extrusion." +msgstr "用於列印支撐頂板的擠出機組。在多擠出機情況下適用。" + +#: fdmprinter.def.json +msgctxt "support_bottom_extruder_nr label" +msgid "Support Floor Extruder" +msgstr "支撐底板擠出機" + +#: fdmprinter.def.json +msgctxt "support_bottom_extruder_nr description" +msgid "" +"The extruder train to use for printing the floors of the support. This is " +"used in multi-extrusion." +msgstr "用於列印支撐底板的擠出機組。在多擠出機情況下適用。" + +#: fdmprinter.def.json +msgctxt "support_type label" +msgid "Support Placement" +msgstr "支撐位置" + +#: fdmprinter.def.json +msgctxt "support_type description" +msgid "" +"Adjusts the placement of the support structures. The placement can be set to " +"touching build plate or everywhere. When set to everywhere the support " +"structures will also be printed on the model." +msgstr "" +"調整支撐結構的位置。位置可以設定為“接觸列印平台”或“每個地方”。當設定為“每個地" +"方”時,在模型上也會列印支撐結構。" + +#: fdmprinter.def.json +msgctxt "support_type option buildplate" +msgid "Touching Buildplate" +msgstr "接觸列印平台" + +#: fdmprinter.def.json +msgctxt "support_type option everywhere" +msgid "Everywhere" +msgstr "每個地方" + +#: fdmprinter.def.json +msgctxt "support_angle label" +msgid "Support Overhang Angle" +msgstr "支撐懸垂角度" + +#: fdmprinter.def.json +msgctxt "support_angle description" +msgid "" +"The minimum angle of overhangs for which support is added. At a value of 0° " +"all overhangs are supported, 90° will not provide any support." +msgstr "" +"添加支撐的最小懸垂角度。當角度為 0° 時,將支撐所有懸垂,當角度為 90° 時,不提" +"供任何支撐。" + +#: fdmprinter.def.json +msgctxt "support_pattern label" +msgid "Support Pattern" +msgstr "支撐列印樣式" + +#: fdmprinter.def.json +msgctxt "support_pattern description" +msgid "" +"The pattern of the support structures of the print. The different options " +"available result in sturdy or easy to remove support." +msgstr "支撐結構的列印樣式。有不同的選項可產生堅固的或容易清除的支撐。" + +#: fdmprinter.def.json +msgctxt "support_pattern option lines" +msgid "Lines" +msgstr "線條" + +#: fdmprinter.def.json +msgctxt "support_pattern option grid" +msgid "Grid" +msgstr "網格" + +#: fdmprinter.def.json +msgctxt "support_pattern option triangles" +msgid "Triangles" +msgstr "三角形" + +#: fdmprinter.def.json +msgctxt "support_pattern option concentric" +msgid "Concentric" +msgstr "同心" + +#: fdmprinter.def.json +msgctxt "support_pattern option concentric_3d" +msgid "Concentric 3D" +msgstr "同心 3D" + +#: fdmprinter.def.json +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" +msgstr "連接支撐鋸齒狀" + +#: fdmprinter.def.json +msgctxt "support_connect_zigzags description" +msgid "" +"Connect the ZigZags. This will increase the strength of the zig zag support " +"structure." +msgstr "連接鋸齒狀。這將增加鋸齒狀支撐結構的强度。" + +#: fdmprinter.def.json +msgctxt "support_infill_rate label" +msgid "Support Density" +msgstr "支撐密度" + +#: fdmprinter.def.json +msgctxt "support_infill_rate description" +msgid "" +"Adjusts the density of the support structure. A higher value results in " +"better overhangs, but the supports are harder to remove." +msgstr "調整支撐結構的密度。較高的值會實現更好的懸垂,但支撐將更加難以移除。" + +#: fdmprinter.def.json +msgctxt "support_line_distance label" +msgid "Support Line Distance" +msgstr "支撐線條間距" + +#: fdmprinter.def.json +msgctxt "support_line_distance description" +msgid "" +"Distance between the printed support structure lines. This setting is " +"calculated by the support density." +msgstr "已列印支撐結構線條之間的距離。該設定通過支撐密度計算。" + +#: fdmprinter.def.json +msgctxt "support_z_distance label" +msgid "Support Z Distance" +msgstr "支撐 Z 間距" + +#: fdmprinter.def.json +msgctxt "support_z_distance description" +msgid "" +"Distance from the top/bottom of the support structure to the print. This gap " +"provides clearance to remove the supports after the model is printed. This " +"value is rounded up to a multiple of the layer height." +msgstr "" +"支撐結構距離模型頂部/底部的距離。這一個小的差距使得它更容易被去除,這個數值會" +"被無條件進位到層高的倍數。" + +#: fdmprinter.def.json +msgctxt "support_top_distance label" +msgid "Support Top Distance" +msgstr "支撐頂部間距" + +#: fdmprinter.def.json +msgctxt "support_top_distance description" +msgid "Distance from the top of the support to the print." +msgstr "從支撐頂部到列印品的距離。" + +#: fdmprinter.def.json +msgctxt "support_bottom_distance label" +msgid "Support Bottom Distance" +msgstr "支撐底部間距" + +#: fdmprinter.def.json +msgctxt "support_bottom_distance description" +msgid "Distance from the print to the bottom of the support." +msgstr "從列印品到支撐底部的距離。" + +#: fdmprinter.def.json +msgctxt "support_xy_distance label" +msgid "Support X/Y Distance" +msgstr "支撐 X/Y 間距" + +#: fdmprinter.def.json +msgctxt "support_xy_distance description" +msgid "Distance of the support structure from the print in the X/Y directions." +msgstr "支撐結構在 X/Y 方向距列印品的距離。" + +#: fdmprinter.def.json +msgctxt "support_xy_overrides_z label" +msgid "Support Distance Priority" +msgstr "支撐間距優先權" + +#: fdmprinter.def.json +msgctxt "support_xy_overrides_z description" +msgid "" +"Whether the Support X/Y Distance overrides the Support Z Distance or vice " +"versa. When X/Y overrides Z the X/Y distance can push away the support from " +"the model, influencing the actual Z distance to the overhang. We can disable " +"this by not applying the X/Y distance around overhangs." +msgstr "" +"支撐 X/Y 間距是否優先於支撐 Z 間距的設定。當 X/Y 間距優先於 Z 時,X/Y 間距可" +"將支撐從模型上推離,同時影響與懸垂之間的實際 Z 間距。我們可以通過不在懸垂周圍" +"套用 X/Y 間距來關閉此選項。" + +#: fdmprinter.def.json +msgctxt "support_xy_overrides_z option xy_overrides_z" +msgid "X/Y overrides Z" +msgstr "X/Y 優先 Z" + +#: fdmprinter.def.json +msgctxt "support_xy_overrides_z option z_overrides_xy" +msgid "Z overrides X/Y" +msgstr "Z 優先 X/Y" + +#: fdmprinter.def.json +msgctxt "support_xy_distance_overhang label" +msgid "Minimum Support X/Y Distance" +msgstr "最小支撐 X/Y 間距" + +#: fdmprinter.def.json +msgctxt "support_xy_distance_overhang description" +msgid "" +"Distance of the support structure from the overhang in the X/Y directions. " +msgstr "支撐結構在 X/Y 方向與懸垂的間距。" + +#: fdmprinter.def.json +msgctxt "support_bottom_stair_step_height label" +msgid "Support Stair Step Height" +msgstr "支撐階梯高度" + +#: fdmprinter.def.json +msgctxt "support_bottom_stair_step_height description" +msgid "" +"The height of the steps of the stair-like bottom of support resting on the " +"model. A low value makes the support harder to remove, but too high values " +"can lead to unstable support structures. Set to zero to turn off the stair-" +"like behaviour." +msgstr "" +"模型上的支撐階梯狀底部的階梯高度。較低的值會使支撐更難於移除,但過高的值可能" +"導致不穩定的支撐結構。設為零可以關閉階梯狀行為。" + +#: fdmprinter.def.json +msgctxt "support_bottom_stair_step_width label" +msgid "Support Stair Step Maximum Width" +msgstr "支撐階梯最大寬度" + +#: fdmprinter.def.json +msgctxt "support_bottom_stair_step_width description" +msgid "" +"The maximum width of the steps of the stair-like bottom of support resting " +"on the model. A low value makes the support harder to remove, but too high " +"values can lead to unstable support structures." +msgstr "" +"停留在模型上的支撐階梯狀底部的最大階梯寬度。較低的值會使支撐更難於移除,但過" +"高的值可能導致不穩定的支撐結構。" + +#: fdmprinter.def.json +msgctxt "support_join_distance label" +msgid "Support Join Distance" +msgstr "支撐結合距離" + +#: fdmprinter.def.json +msgctxt "support_join_distance description" +msgid "" +"The maximum distance between support structures in the X/Y directions. When " +"seperate structures are closer together than this value, the structures " +"merge into one." +msgstr "" +"支撐結構間在 X/Y 方向的最大距離。當分離結構之間的距離小於此值時,這些結構將合" +"併為一個。" + +#: fdmprinter.def.json +msgctxt "support_offset label" +msgid "Support Horizontal Expansion" +msgstr "支撐水平擴展" + +#: fdmprinter.def.json +msgctxt "support_offset description" +msgid "" +"Amount of offset applied to all support polygons in each layer. Positive " +"values can smooth out the support areas and result in more sturdy support." +msgstr "" +"套用到每一層所有支撐多邊形的偏移量。正值可以讓支撐區域更平滑,並產生更為牢固" +"的支撐。" + +#: fdmprinter.def.json +msgctxt "support_infill_sparse_thickness label" +msgid "Support Infill Layer Thickness" +msgstr "支撐填充層厚度" + +#: fdmprinter.def.json +msgctxt "support_infill_sparse_thickness description" +msgid "" +"The thickness per layer of support infill material. This value should always " +"be a multiple of the layer height and is otherwise rounded." +msgstr "" +"支撐填充耗材每層的厚度。該值應為層高的倍數,否則數值會被四捨五入到層高的倍" +"數。" + +#: fdmprinter.def.json +msgctxt "gradual_support_infill_steps label" +msgid "Gradual Support Infill Steps" +msgstr "漸進支撐填充步階" + +#: fdmprinter.def.json +msgctxt "gradual_support_infill_steps description" +msgid "" +"Number of times to reduce the support infill density by half when getting " +"further below top surfaces. Areas which are closer to top surfaces get a " +"higher density, up to the Support Infill Density." +msgstr "" +"從支撐頂層往下,填充密度減半的次數。越靠近頂層的填充密度越高,最高密度為支撐" +"填充密度。" + +#: fdmprinter.def.json +msgctxt "gradual_support_infill_step_height label" +msgid "Gradual Support Infill Step Height" +msgstr "漸進支撐填充步階高度" + +#: fdmprinter.def.json +msgctxt "gradual_support_infill_step_height description" +msgid "" +"The height of support infill of a given density before switching to half the " +"density." +msgstr "支撐層密度減半的厚度。" + +#: fdmprinter.def.json +msgctxt "support_interface_enable label" +msgid "Enable Support Interface" +msgstr "啟用支撐介面" + +#: fdmprinter.def.json +msgctxt "support_interface_enable description" +msgid "" +"Generate a dense interface between the model and the support. This will " +"create a skin at the top of the support on which the model is printed and at " +"the bottom of the support, where it rests on the model." +msgstr "" +"在模型和支撐之間產生一個密度較高的介面。這會在承載模型的支撐頂部和座落在模型" +"上的支撐底部創造出一個介面層。" + +#: fdmprinter.def.json +msgctxt "support_roof_enable label" +msgid "Enable Support Roof" +msgstr "啟用支撐頂板" + +#: fdmprinter.def.json +msgctxt "support_roof_enable description" +msgid "" +"Generate a dense slab of material between the top of support and the model. " +"This will create a skin between the model and support." +msgstr "" +"在支撐頂部和模型之間產生一個密集的平板。這會在模型和支撐之間形成一個介面層。" + +#: fdmprinter.def.json +msgctxt "support_bottom_enable label" +msgid "Enable Support Floor" +msgstr "啟用支撐底板" + +#: fdmprinter.def.json +msgctxt "support_bottom_enable description" +msgid "" +"Generate a dense slab of material between the bottom of the support and the " +"model. This will create a skin between the model and support." +msgstr "" +"在支撐底部和模型之間產生一個密集的平板。這會在模型和支撐之間形成一個介面層。" + +#: fdmprinter.def.json +msgctxt "support_interface_height label" +msgid "Support Interface Thickness" +msgstr "支撐介面厚度" + +#: fdmprinter.def.json +msgctxt "support_interface_height description" +msgid "" +"The thickness of the interface of the support where it touches with the " +"model on the bottom or the top." +msgstr "支撐與模型在底部或頂部接觸的介面厚度。" + +#: fdmprinter.def.json +msgctxt "support_roof_height label" +msgid "Support Roof Thickness" +msgstr "支撐頂板厚度" + +#: fdmprinter.def.json +msgctxt "support_roof_height description" +msgid "" +"The thickness of the support roofs. This controls the amount of dense layers " +"at the top of the support on which the model rests." +msgstr "支撐頂板的厚度。這會控制承載模型的支撐頂部密集層的數量。" + +#: fdmprinter.def.json +msgctxt "support_bottom_height label" +msgid "Support Floor Thickness" +msgstr "支撐底板厚度" + +#: fdmprinter.def.json +msgctxt "support_bottom_height description" +msgid "" +"The thickness of the support floors. This controls the number of dense " +"layers that are printed on top of places of a model on which support rests." +msgstr "支撐底板的厚度。這會控制座落在模型上的支撐底部密集層的數量。" + +#: fdmprinter.def.json +msgctxt "support_interface_skip_height label" +msgid "Support Interface Resolution" +msgstr "支撐介面解析度" + +#: fdmprinter.def.json +msgctxt "support_interface_skip_height description" +msgid "" +"When checking where there's model above and below the support, take steps of " +"the given height. Lower values will slice slower, while higher values may " +"cause normal support to be printed in some places where there should have " +"been support interface." +msgstr "" +"在檢查支撐上方或下方是否有模型時,所採用步階的高度。值越低切片速度越慢,而較" +"高的值會導致在部分應有支撐介面的位置列印一般的支撐。" + +#: fdmprinter.def.json +msgctxt "support_interface_density label" +msgid "Support Interface Density" +msgstr "支撐介面密度" + +#: fdmprinter.def.json +msgctxt "support_interface_density description" +msgid "" +"Adjusts the density of the roofs and floors of the support structure. A " +"higher value results in better overhangs, but the supports are harder to " +"remove." +msgstr "" +"調整支撐結構頂板和底板的密度。較高的值會實現更好的懸垂,但支撐將更加難以移" +"除。" + +#: fdmprinter.def.json +msgctxt "support_roof_density label" +msgid "Support Roof Density" +msgstr "支撐頂板密度" + +#: fdmprinter.def.json +msgctxt "support_roof_density description" +msgid "" +"The density of the roofs of the support structure. A higher value results in " +"better overhangs, but the supports are harder to remove." +msgstr "支撐結構頂板的密度。較高的值會讓懸垂印得更好,但支撐將更加難以移除。" + +#: fdmprinter.def.json +msgctxt "support_roof_line_distance label" +msgid "Support Roof Line Distance" +msgstr "支撐頂板線條距離" + +#: fdmprinter.def.json +msgctxt "support_roof_line_distance description" +msgid "" +"Distance between the printed support roof lines. This setting is calculated " +"by the Support Roof Density, but can be adjusted separately." +msgstr "支撐頂板線條之間的距離。該設定是通過支撐頂板密度計算,但可以單獨調整。" + +#: fdmprinter.def.json +msgctxt "support_bottom_density label" +msgid "Support Floor Density" +msgstr "支撐底板密度" + +#: fdmprinter.def.json +msgctxt "support_bottom_density description" +msgid "" +"The density of the floors of the support structure. A higher value results " +"in better adhesion of the support on top of the model." +msgstr "支撐結構底板的密度。較高的值會讓支撐更容易附著在模型上。" + +#: fdmprinter.def.json +msgctxt "support_bottom_line_distance label" +msgid "Support Floor Line Distance" +msgstr "支撐底板線條距離" + +#: fdmprinter.def.json +msgctxt "support_bottom_line_distance description" +msgid "" +"Distance between the printed support floor lines. This setting is calculated " +"by the Support Floor Density, but can be adjusted separately." +msgstr "支撐底板線條之間的距離。該設定是通過支撐底板密度計算,但可以單獨調整。" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern label" +msgid "Support Interface Pattern" +msgstr "支撐介面列印樣式" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern description" +msgid "" +"The pattern with which the interface of the support with the model is " +"printed." +msgstr "支撐與模型之間介面的列印樣式。" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option lines" +msgid "Lines" +msgstr "線條" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option grid" +msgid "Grid" +msgstr "網格" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option triangles" +msgid "Triangles" +msgstr "三角形" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option concentric" +msgid "Concentric" +msgstr "同心" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option concentric_3d" +msgid "Concentric 3D" +msgstr "同心 3D" + +#: fdmprinter.def.json +msgctxt "support_interface_pattern option zigzag" +msgid "Zig Zag" +msgstr "鋸齒狀" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern label" +msgid "Support Roof Pattern" +msgstr "支撐頂板列印樣式" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern description" +msgid "The pattern with which the roofs of the support are printed." +msgstr "列印支撐頂板的列印樣式。" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option lines" +msgid "Lines" +msgstr "直線" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option grid" +msgid "Grid" +msgstr "網格" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option triangles" +msgid "Triangles" +msgstr "三角形" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option concentric" +msgid "Concentric" +msgstr "同心圓" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option concentric_3d" +msgid "Concentric 3D" +msgstr "立體同心圓" + +#: fdmprinter.def.json +msgctxt "support_roof_pattern option zigzag" +msgid "Zig Zag" +msgstr "鋸齒狀" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern label" +msgid "Support Floor Pattern" +msgstr "支撐底板列印樣式" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern description" +msgid "The pattern with which the floors of the support are printed." +msgstr "列印支撐底板的列印樣式。" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option lines" +msgid "Lines" +msgstr "線條" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option grid" +msgid "Grid" +msgstr "網格" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option triangles" +msgid "Triangles" +msgstr "三角形" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option concentric" +msgid "Concentric" +msgstr "同心" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option concentric_3d" +msgid "Concentric 3D" +msgstr "同心 3D" + +#: fdmprinter.def.json +msgctxt "support_bottom_pattern option zigzag" +msgid "Zig Zag" +msgstr "鋸齒狀" + +#: fdmprinter.def.json +msgctxt "support_use_towers label" +msgid "Use Towers" +msgstr "使用塔型支撐" + +#: fdmprinter.def.json +msgctxt "support_use_towers description" +msgid "" +"Use specialized towers to support tiny overhang areas. These towers have a " +"larger diameter than the region they support. Near the overhang the towers' " +"diameter decreases, forming a roof." +msgstr "" +"使用專門的塔來支撐較小的懸垂區域。這些塔的直徑比它們所支撐的區域要大。在靠近" +"懸垂物時,塔的直徑減小,形成頂板。" + +#: fdmprinter.def.json +msgctxt "support_tower_diameter label" +msgid "Tower Diameter" +msgstr "塔直徑" + +#: fdmprinter.def.json +msgctxt "support_tower_diameter description" +msgid "The diameter of a special tower." +msgstr "特殊塔的直徑。" + +#: fdmprinter.def.json +msgctxt "support_minimal_diameter label" +msgid "Minimum Diameter" +msgstr "最小直徑" + +#: fdmprinter.def.json +msgctxt "support_minimal_diameter description" +msgid "" +"Minimum diameter in the X/Y directions of a small area which is to be " +"supported by a specialized support tower." +msgstr "小區域中支撐塔的 X/Y 軸方向最小直徑。" + +#: fdmprinter.def.json +msgctxt "support_tower_roof_angle label" +msgid "Tower Roof Angle" +msgstr "塔頂板角度" + +#: fdmprinter.def.json +msgctxt "support_tower_roof_angle description" +msgid "" +"The angle of a rooftop of a tower. A higher value results in pointed tower " +"roofs, a lower value results in flattened tower roofs." +msgstr "塔頂角度。該值越高,塔頂越尖,值越低,塔頂越平。" + +#: fdmprinter.def.json +msgctxt "platform_adhesion label" +msgid "Build Plate Adhesion" +msgstr "列印平台附著" + +#: fdmprinter.def.json +msgctxt "platform_adhesion description" +msgid "Adhesion" +msgstr "附著" + +#: fdmprinter.def.json +msgctxt "prime_blob_enable label" +msgid "Enable Prime Blob" +msgstr "啟用少量裝填" + +#: fdmprinter.def.json +msgctxt "prime_blob_enable description" +msgid "" +"Whether to prime the filament with a blob before printing. Turning this " +"setting on will ensure that the extruder will have material ready at the " +"nozzle before printing. Printing Brim or Skirt can act like priming too, in " +"which case turning this setting off saves some time." +msgstr "" +"列印前是否裝填少量的耗材。開啟此設定將確保列印前擠出機的噴頭處已準備好耗材。" +"列印邊緣或外圍也可作為裝填用途,這種情况下關閉此設定可以節省時間。" + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_x label" +msgid "Extruder Prime X Position" +msgstr "擠出機 X 軸起始位置" + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_x description" +msgid "" +"The X coordinate of the position where the nozzle primes at the start of " +"printing." +msgstr "列印開始時,噴頭在 X 軸上初始位置。" + +#: fdmprinter.def.json +msgctxt "extruder_prime_pos_y label" +msgid "Extruder Prime Y Position" +msgstr "擠出機 Y 軸起始位置" + +#: fdmprinter.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 軸座標上初始位置。" + +#: fdmprinter.def.json +msgctxt "adhesion_type label" +msgid "Build Plate Adhesion Type" +msgstr "列印平台附著類型" + +#: fdmprinter.def.json +msgctxt "adhesion_type description" +msgid "" +"Different options that help to improve both priming your extrusion and " +"adhesion to the build plate. Brim adds a single layer flat area around the " +"base of your model to prevent warping. Raft adds a thick grid with a roof " +"below the model. Skirt is a line printed around the model, but not connected " +"to the model." +msgstr "" +"幫助改善擠出裝填以及與列印平台附著的不同選項。邊緣會在模型基座周圍添加單層平" +"面區域,以防止翹曲。木筏會在模型底下添加一個有頂板的厚網格。外圍是在模型四周" +"列印的一條線,但並不與模型連接。" + +#: fdmprinter.def.json +msgctxt "adhesion_type option skirt" +msgid "Skirt" +msgstr "外圍" + +#: fdmprinter.def.json +msgctxt "adhesion_type option brim" +msgid "Brim" +msgstr "邊緣" + +#: fdmprinter.def.json +msgctxt "adhesion_type option raft" +msgid "Raft" +msgstr "木筏" + +#: fdmprinter.def.json +msgctxt "adhesion_type option none" +msgid "None" +msgstr "無" + +#: fdmprinter.def.json +msgctxt "adhesion_extruder_nr label" +msgid "Build Plate Adhesion Extruder" +msgstr "列印平台附著擠出機" + +#: fdmprinter.def.json +msgctxt "adhesion_extruder_nr description" +msgid "" +"The extruder train to use for printing the skirt/brim/raft. This is used in " +"multi-extrusion." +msgstr "用於列印外圍/邊緣/木筏的擠出機組。在多擠出機情況下適用。" + +#: fdmprinter.def.json +msgctxt "skirt_line_count label" +msgid "Skirt Line Count" +msgstr "外圍線條數量" + +#: fdmprinter.def.json +msgctxt "skirt_line_count description" +msgid "" +"Multiple skirt lines help to prime your extrusion better for small models. " +"Setting this to 0 will disable the skirt." +msgstr "" +"多條外圍線條有助你在列印小型模型時,更好地裝填的擠出機組。將其設為 0 將關閉外" +"圍。" + +#: fdmprinter.def.json +msgctxt "skirt_gap label" +msgid "Skirt Distance" +msgstr "外圍間距" + +#: fdmprinter.def.json +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 "" +"外圍和列印第一層之間的水平距離。\n" +"這是最小距離,多個外圍線條將從此距離向外延伸。" + +#: fdmprinter.def.json +msgctxt "skirt_brim_minimal_length label" +msgid "Skirt/Brim Minimum Length" +msgstr "外圍/邊緣最小長度" + +#: fdmprinter.def.json +msgctxt "skirt_brim_minimal_length description" +msgid "" +"The minimum length of the skirt or brim. If this length is not reached by " +"all skirt or brim lines together, more skirt or brim lines will be added " +"until the minimum length is reached. Note: If the line count is set to 0 " +"this is ignored." +msgstr "" +"外圍或邊緣的最小長度。如果所有外圍或邊緣線條之和都没有達到此長度,則將添加更" +"多外圍或邊緣線條直至達到最小長度。注意:如果線條計數設為 0,則將忽略此選項。" + +#: fdmprinter.def.json +msgctxt "brim_width label" +msgid "Brim Width" +msgstr "邊緣寬度" + +#: fdmprinter.def.json +msgctxt "brim_width description" +msgid "" +"The distance from the model to the outermost brim line. A larger brim " +"enhances adhesion to the build plate, but also reduces the effective print " +"area." +msgstr "" +"模型到最外側邊緣線的距離。較大的邊緣可增强與列印平台的附著,但也會減少有效列" +"印區域。" + +#: fdmprinter.def.json +msgctxt "brim_line_count label" +msgid "Brim Line Count" +msgstr "邊緣線條數量" + +#: fdmprinter.def.json +msgctxt "brim_line_count description" +msgid "" +"The number of lines used for a brim. More brim lines enhance adhesion to the " +"build plate, but also reduces the effective print area." +msgstr "" +"邊緣所用線條數量。更多邊緣線條可增强與列印平台的附著,但也會減少有效列印區" +"域。" + +#: fdmprinter.def.json +msgctxt "brim_outside_only label" +msgid "Brim Only on Outside" +msgstr "僅在外部列印邊緣" + +#: fdmprinter.def.json +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 "raft_margin label" +msgid "Raft Extra Margin" +msgstr "木筏額外邊緣" + +#: fdmprinter.def.json +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 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." +msgstr "" +"此設定控制木筏輪廓凹角導圓角的量。向內的轉角會被導為圓弧,其半徑等於此設定" +"值。此設定同時可以移除木筏輪廓中半徑小於此設定值的圓孔。" + +#: fdmprinter.def.json +msgctxt "raft_airgap label" +msgid "Raft Air Gap" +msgstr "木筏間隙" + +#: fdmprinter.def.json +msgctxt "raft_airgap description" +msgid "" +"The gap between the final raft layer and the first layer of the model. Only " +"the first layer is raised by this amount to lower the bonding between the " +"raft layer and the model. Makes it easier to peel off the raft." +msgstr "" +"木筏最後一層與模型第一層之間的間隙。只有第一層被提高了這個距離,以便降低木筏" +"和模型之間的附著。讓木筏更容易剝離。" + +#: fdmprinter.def.json +msgctxt "layer_0_z_overlap label" +msgid "Initial Layer Z Overlap" +msgstr "起始層 Z 重疊" + +#: fdmprinter.def.json +msgctxt "layer_0_z_overlap description" +msgid "" +"Make the first and second layer of the model overlap in the Z direction to " +"compensate for the filament lost in the airgap. All models above the first " +"model layer will be shifted down by this amount." +msgstr "" +"使模型的第一層和第二層在 Z 方向上重疊以補償在空隙中損失的耗材。第一個模型層上" +"方的所有模型將向下移動此重疊量。" + +#: fdmprinter.def.json +msgctxt "raft_surface_layers label" +msgid "Raft Top Layers" +msgstr "木筏頂部層數" + +#: fdmprinter.def.json +msgctxt "raft_surface_layers description" +msgid "" +"The number of top layers on top of the 2nd raft layer. These are fully " +"filled layers that the model sits on. 2 layers result in a smoother top " +"surface than 1." +msgstr "" +"位於木筏中層上方的頂部層數。這是承載模型的完全填充層。兩層會產生比一層更平滑" +"的頂部表面。" + +#: fdmprinter.def.json +msgctxt "raft_surface_thickness label" +msgid "Raft Top Layer Thickness" +msgstr "木筏頂部層厚" + +#: fdmprinter.def.json +msgctxt "raft_surface_thickness description" +msgid "Layer thickness of the top raft layers." +msgstr "木筏頂部單層的厚度。" + +#: fdmprinter.def.json +msgctxt "raft_surface_line_width label" +msgid "Raft Top Line Width" +msgstr "木筏頂部線寬" + +#: fdmprinter.def.json +msgctxt "raft_surface_line_width description" +msgid "" +"Width of the lines in the top surface of the raft. These can be thin lines " +"so that the top of the raft becomes smooth." +msgstr "木筏頂部表面的線寬。這些線條可以是細線,以便讓木筏頂部變得平滑。" + +#: fdmprinter.def.json +msgctxt "raft_surface_line_spacing label" +msgid "Raft Top Spacing" +msgstr "木筏頂部間距" + +#: fdmprinter.def.json +msgctxt "raft_surface_line_spacing description" +msgid "" +"The distance between the raft lines for the top raft layers. The spacing " +"should be equal to the line width, so that the surface is solid." +msgstr "木筏頂部線條之間的距離。間距應等於線寬,以便打造堅固表面。" + +#: fdmprinter.def.json +msgctxt "raft_interface_thickness label" +msgid "Raft Middle Thickness" +msgstr "木筏中層厚度" + +#: fdmprinter.def.json +msgctxt "raft_interface_thickness description" +msgid "Layer thickness of the middle raft layer." +msgstr "木筏中層的層厚。" + +#: fdmprinter.def.json +msgctxt "raft_interface_line_width label" +msgid "Raft Middle Line Width" +msgstr "木筏中層線寬" + +#: fdmprinter.def.json +msgctxt "raft_interface_line_width description" +msgid "" +"Width of the lines in the middle raft layer. Making the second layer extrude " +"more causes the lines to stick to the build plate." +msgstr "木筏中層的線寬。第二層擠出多一些會讓線條附著在列印平台上。" + +#: fdmprinter.def.json +msgctxt "raft_interface_line_spacing label" +msgid "Raft Middle Spacing" +msgstr "木筏中層間距" + +#: fdmprinter.def.json +msgctxt "raft_interface_line_spacing description" +msgid "" +"The distance between the raft lines for the middle raft layer. The spacing " +"of the middle should be quite wide, while being dense enough to support the " +"top raft layers." +msgstr "" +"木筏中層線條之間的距離。中層的間距應足夠寬,同時也要足夠密集,以便支撐木筏頂" +"部。" + +#: fdmprinter.def.json +msgctxt "raft_base_thickness label" +msgid "Raft Base Thickness" +msgstr "木筏底部厚度" + +#: fdmprinter.def.json +msgctxt "raft_base_thickness description" +msgid "" +"Layer thickness of the base raft layer. This should be a thick layer which " +"sticks firmly to the printer build plate." +msgstr "木筏底部的層厚。本層應為與印表機列印平台穩固附著厚實的一層。" + +#: fdmprinter.def.json +msgctxt "raft_base_line_width label" +msgid "Raft Base Line Width" +msgstr "木筏底部線寬" + +#: fdmprinter.def.json +msgctxt "raft_base_line_width description" +msgid "" +"Width of the lines in the base raft layer. These should be thick lines to " +"assist in build plate adhesion." +msgstr "木筏底部的線寬。這些線條應該是粗線,以便協助列印平台附著。" + +#: fdmprinter.def.json +msgctxt "raft_base_line_spacing label" +msgid "Raft Line Spacing" +msgstr "木筏底部間距" + +#: fdmprinter.def.json +msgctxt "raft_base_line_spacing description" +msgid "" +"The distance between the raft lines for the base raft layer. Wide spacing " +"makes for easy removal of the raft from the build plate." +msgstr "木筏底部線條之間的距離。寬間距方便讓木筏從列印平台移除。" + +#: fdmprinter.def.json +msgctxt "raft_speed label" +msgid "Raft Print Speed" +msgstr "木筏列印速度" + +#: fdmprinter.def.json +msgctxt "raft_speed description" +msgid "The speed at which the raft is printed." +msgstr "列印木筏的速度。" + +#: fdmprinter.def.json +msgctxt "raft_surface_speed label" +msgid "Raft Top Print Speed" +msgstr "木筏頂部列印速度" + +#: fdmprinter.def.json +msgctxt "raft_surface_speed description" +msgid "" +"The speed at which the top raft layers are printed. These should be printed " +"a bit slower, so that the nozzle can slowly smooth out adjacent surface " +"lines." +msgstr "" +"列印木筏頂部的速度。這些層應以稍慢的速度列印,以便噴頭緩慢地整平臨近的表面線" +"條。" + +#: fdmprinter.def.json +msgctxt "raft_interface_speed label" +msgid "Raft Middle Print Speed" +msgstr "木筏中層列印速度" + +#: fdmprinter.def.json +msgctxt "raft_interface_speed description" +msgid "" +"The speed at which the middle raft layer is printed. This should be printed " +"quite slowly, as the volume of material coming out of the nozzle is quite " +"high." +msgstr "" +"列印木筏中層的速度。這些層應以很慢的速度列印,因為噴頭所出的耗材量非常高。" + +#: fdmprinter.def.json +msgctxt "raft_base_speed label" +msgid "Raft Base Print Speed" +msgstr "木筏底部列印速度" + +#: fdmprinter.def.json +msgctxt "raft_base_speed description" +msgid "" +"The speed at which the base raft layer is printed. This should be printed " +"quite slowly, as the volume of material coming out of the nozzle is quite " +"high." +msgstr "" +"列印木筏底部的速度。這些層應以很慢的速度列印,因為噴頭所出的耗材量非常高。" + +#: fdmprinter.def.json +msgctxt "raft_acceleration label" +msgid "Raft Print Acceleration" +msgstr "木筏列印加速度" + +#: fdmprinter.def.json +msgctxt "raft_acceleration description" +msgid "The acceleration with which the raft is printed." +msgstr "列印木筏的加速度。" + +#: fdmprinter.def.json +msgctxt "raft_surface_acceleration label" +msgid "Raft Top Print Acceleration" +msgstr "木筏頂部列印加速度" + +#: fdmprinter.def.json +msgctxt "raft_surface_acceleration description" +msgid "The acceleration with which the top raft layers are printed." +msgstr "列印木筏頂部的加速度。" + +#: fdmprinter.def.json +msgctxt "raft_interface_acceleration label" +msgid "Raft Middle Print Acceleration" +msgstr "木筏中層列印加速度" + +#: fdmprinter.def.json +msgctxt "raft_interface_acceleration description" +msgid "The acceleration with which the middle raft layer is printed." +msgstr "列印木筏中層的加速度。" + +#: fdmprinter.def.json +msgctxt "raft_base_acceleration label" +msgid "Raft Base Print Acceleration" +msgstr "木筏底部列印加速度" + +#: fdmprinter.def.json +msgctxt "raft_base_acceleration description" +msgid "The acceleration with which the base raft layer is printed." +msgstr "列印木筏底部的加速度。" + +#: fdmprinter.def.json +msgctxt "raft_jerk label" +msgid "Raft Print Jerk" +msgstr "木筏列印加加速度" + +#: fdmprinter.def.json +msgctxt "raft_jerk description" +msgid "The jerk with which the raft is printed." +msgstr "列印木筏的加加速度。" + +#: fdmprinter.def.json +msgctxt "raft_surface_jerk label" +msgid "Raft Top Print Jerk" +msgstr "木筏頂部列印加加速度" + +#: fdmprinter.def.json +msgctxt "raft_surface_jerk description" +msgid "The jerk with which the top raft layers are printed." +msgstr "列印木筏頂部的加加速度。" + +#: fdmprinter.def.json +msgctxt "raft_interface_jerk label" +msgid "Raft Middle Print Jerk" +msgstr "木筏中層列印加加速度" + +#: fdmprinter.def.json +msgctxt "raft_interface_jerk description" +msgid "The jerk with which the middle raft layer is printed." +msgstr "列印木筏中層的加加速度。" + +#: fdmprinter.def.json +msgctxt "raft_base_jerk label" +msgid "Raft Base Print Jerk" +msgstr "木筏底部列印加加速度" + +#: fdmprinter.def.json +msgctxt "raft_base_jerk description" +msgid "The jerk with which the base raft layer is printed." +msgstr "列印木筏底部的加加速度。" + +#: fdmprinter.def.json +msgctxt "raft_fan_speed label" +msgid "Raft Fan Speed" +msgstr "木筏風扇轉速" + +#: fdmprinter.def.json +msgctxt "raft_fan_speed description" +msgid "The fan speed for the raft." +msgstr "木筏的風扇轉速。" + +#: fdmprinter.def.json +msgctxt "raft_surface_fan_speed label" +msgid "Raft Top Fan Speed" +msgstr "木筏頂部風扇轉速" + +#: fdmprinter.def.json +msgctxt "raft_surface_fan_speed description" +msgid "The fan speed for the top raft layers." +msgstr "木筏頂部的風扇轉速。" + +#: fdmprinter.def.json +msgctxt "raft_interface_fan_speed label" +msgid "Raft Middle Fan Speed" +msgstr "木筏中層風扇轉速" + +#: fdmprinter.def.json +msgctxt "raft_interface_fan_speed description" +msgid "The fan speed for the middle raft layer." +msgstr "木筏中層的風扇轉速。" + +#: fdmprinter.def.json +msgctxt "raft_base_fan_speed label" +msgid "Raft Base Fan Speed" +msgstr "木筏底部風扇轉速" + +#: fdmprinter.def.json +msgctxt "raft_base_fan_speed description" +msgid "The fan speed for the base raft layer." +msgstr "木筏底部的風扇轉速。" + +#: fdmprinter.def.json +msgctxt "dual label" +msgid "Dual Extrusion" +msgstr "雙重擠出機" + +#: fdmprinter.def.json +msgctxt "dual description" +msgid "Settings used for printing with multiple extruders." +msgstr "用於多擠出機情況下的設定。" + +#: fdmprinter.def.json +msgctxt "prime_tower_enable label" +msgid "Enable Prime Tower" +msgstr "啟用換料塔" + +#: fdmprinter.def.json +msgctxt "prime_tower_enable description" +msgid "" +"Print a tower next to the print which serves to prime the material after " +"each nozzle switch." +msgstr "在列印件旁邊印一個塔,用在每次切換噴頭後填充耗材。" + +#: fdmprinter.def.json +msgctxt "prime_tower_size label" +msgid "Prime Tower Size" +msgstr "換料塔尺寸" + +#: fdmprinter.def.json +msgctxt "prime_tower_size description" +msgid "The width of the prime tower." +msgstr "換料塔的寬度。" + +#: fdmprinter.def.json +msgctxt "prime_tower_min_volume label" +msgid "Prime Tower Minimum Volume" +msgstr "換料塔最小體積" + +#: fdmprinter.def.json +msgctxt "prime_tower_min_volume description" +msgid "" +"The minimum volume for each layer of the prime tower in order to purge " +"enough material." +msgstr "為了清除足夠的耗材,換料塔每層的最小體積。" + +#: fdmprinter.def.json +msgctxt "prime_tower_wall_thickness label" +msgid "Prime Tower Thickness" +msgstr "換料塔厚度" + +#: fdmprinter.def.json +msgctxt "prime_tower_wall_thickness description" +msgid "" +"The thickness of the hollow prime tower. A thickness larger than half the " +"Prime Tower Minimum Volume will result in a dense prime tower." +msgstr "" +"空心換料塔的厚度。如果厚度大於換料塔最小體積的一半,則將形成一個密集的換料" +"塔。" + +#: fdmprinter.def.json +msgctxt "prime_tower_position_x label" +msgid "Prime Tower X Position" +msgstr "換料塔 X 位置" + +#: fdmprinter.def.json +msgctxt "prime_tower_position_x description" +msgid "The x coordinate of the position of the prime tower." +msgstr "換料塔位置的 X 座標。" + +#: fdmprinter.def.json +msgctxt "prime_tower_position_y label" +msgid "Prime Tower Y Position" +msgstr "換料塔 Y 位置" + +#: fdmprinter.def.json +msgctxt "prime_tower_position_y description" +msgid "The y coordinate of the position of the prime tower." +msgstr "換料塔位置的 Y 座標。" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "換料塔流量" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "" +"Flow compensation: the amount of material extruded is multiplied by this " +"value." +msgstr "流量補償:擠出的耗材量乘以此值。" + +#: fdmprinter.def.json +msgctxt "prime_tower_wipe_enabled label" +msgid "Wipe Inactive Nozzle on Prime Tower" +msgstr "在換料塔上擦拭非作用中的噴頭" + +#: fdmprinter.def.json +msgctxt "prime_tower_wipe_enabled description" +msgid "" +"After printing the prime tower with one nozzle, wipe the oozed material from " +"the other nozzle off on the prime tower." +msgstr "在一個噴頭列印換料塔後,在換料塔上擦拭另一個噴頭滲出的耗材。" + +#: fdmprinter.def.json +msgctxt "dual_pre_wipe label" +msgid "Wipe Nozzle After Switch" +msgstr "切換後擦拭噴頭" + +#: fdmprinter.def.json +msgctxt "dual_pre_wipe description" +msgid "" +"After switching extruder, wipe the oozed material off of the nozzle on the " +"first thing printed. This performs a safe slow wipe move at a place where " +"the oozed material causes least harm to the surface quality of your print." +msgstr "" +"切換擠出機後,在列印的第一個物件上擦拭噴頭上的滲出耗材。這會在滲出耗材對列印" +"品表面品質造成最小損害的位置進行緩慢安全的擦拭動作。" + +#: fdmprinter.def.json +msgctxt "prime_tower_purge_volume label" +msgid "Prime Tower Purge Volume" +msgstr "換料塔清洗量" + +#: fdmprinter.def.json +msgctxt "prime_tower_purge_volume description" +msgid "" +"Amount of filament to be purged when wiping on the prime tower. Purging is " +"useful for compensating the filament lost by oozing during inactivity of the " +"nozzle." +msgstr "" +"在換料塔上進行擦拭時要清洗的耗材量。清洗可用於補償在噴頭不活動期間由於滲出而" +"損失的耗材。" + +#: fdmprinter.def.json +msgctxt "ooze_shield_enabled label" +msgid "Enable Ooze Shield" +msgstr "啟用擦拭牆" + +#: fdmprinter.def.json +msgctxt "ooze_shield_enabled description" +msgid "" +"Enable exterior ooze shield. This will create a shell around the model which " +"is likely to wipe a second nozzle if it's at the same height as the first " +"nozzle." +msgstr "" +"啟用外部擦拭牆。這將在模型周圍創建一個外殼,如果與第一個噴頭處於相同的高度," +"則可能會擦拭第二個噴頭。" + +#: fdmprinter.def.json +msgctxt "ooze_shield_angle label" +msgid "Ooze Shield Angle" +msgstr "擦拭牆角度" + +#: fdmprinter.def.json +msgctxt "ooze_shield_angle description" +msgid "" +"The maximum angle a part in the ooze shield will have. With 0 degrees being " +"vertical, and 90 degrees being horizontal. A smaller angle leads to less " +"failed ooze shields, but more material." +msgstr "" +"擦拭牆中的一部分的最大角度。0度為垂直,90度為水平。較小的角度擦拭效果較好,但" +"是要用更多的耗材。" + +#: fdmprinter.def.json +msgctxt "ooze_shield_dist label" +msgid "Ooze Shield Distance" +msgstr "擦拭牆距離" + +#: fdmprinter.def.json +msgctxt "ooze_shield_dist description" +msgid "Distance of the ooze shield from the print, in the X/Y directions." +msgstr "擦拭牆與模型間的水平 ( X/Y 方向 ) 距離。" + +#: fdmprinter.def.json +msgctxt "meshfix label" +msgid "Mesh Fixes" +msgstr "網格修復" + +#: fdmprinter.def.json +msgctxt "meshfix description" +msgid "category_fixes" +msgstr "修復" + +#: fdmprinter.def.json +msgctxt "meshfix_union_all label" +msgid "Union Overlapping Volumes" +msgstr "合併重疊體積" + +#: fdmprinter.def.json +msgctxt "meshfix_union_all description" +msgid "" +"Ignore the internal geometry arising from overlapping volumes within a mesh " +"and print the volumes as one. This may cause unintended internal cavities to " +"disappear." +msgstr "" +"忽略由網格內的重疊體積產生的內部幾何,並將多個部分作為一個列印。這可能會導致" +"意外的內部孔洞消失。" + +#: fdmprinter.def.json +msgctxt "meshfix_union_all_remove_holes label" +msgid "Remove All Holes" +msgstr "移除所有孔洞" + +#: fdmprinter.def.json +msgctxt "meshfix_union_all_remove_holes description" +msgid "" +"Remove the holes in each layer and keep only the outside shape. This will " +"ignore any invisible internal geometry. However, it also ignores layer holes " +"which can be viewed from above or below." +msgstr "" +"移除每層的孔洞,僅保留外部形狀。這會忽略任何不可見的內部幾何。但是,也會忽略" +"可從上方或下方看到的層孔洞。" + +#: fdmprinter.def.json +msgctxt "meshfix_extensive_stitching label" +msgid "Extensive Stitching" +msgstr "廣泛縫合" + +#: fdmprinter.def.json +msgctxt "meshfix_extensive_stitching description" +msgid "" +"Extensive stitching tries to stitch up open holes in the mesh by closing the " +"hole with touching polygons. This option can introduce a lot of processing " +"time." +msgstr "" +"廣泛縫合嘗試通過接觸多邊形來閉合孔洞,以此縫合網格中的開孔。此選項可能會產生" +"大量的處理時間。" + +#: fdmprinter.def.json +msgctxt "meshfix_keep_open_polygons label" +msgid "Keep Disconnected Faces" +msgstr "保持斷開表面" + +#: fdmprinter.def.json +msgctxt "meshfix_keep_open_polygons description" +msgid "" +"Normally Cura tries to stitch up small holes in the mesh and remove parts of " +"a layer with big holes. Enabling this option keeps those parts which cannot " +"be stitched. This option should be used as a last resort option when " +"everything else fails to produce proper GCode." +msgstr "" +"一般情况下,Cura 會嘗試縫合網格中的小孔,並移除有大孔的部分層。啟用此選項將保" +"留那些無法縫合的部分。當其他所有方法都無法產生正確的 GCode 時,該選項應該被用" +"作最後手段。" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "最高解析度" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "" +"The minimum size of a line segment after slicing. If you increase this, the " +"mesh will have a lower resolution. This may allow the printer to keep up " +"with the speed it has to process g-code and will increase slice speed by " +"removing details of the mesh that it can't process anyway." +msgstr "" +"切片後線段的最小尺寸。 如果你增加此設定值,網格的解析度將較低。 這允許印表機" +"保持處理 G-code 的速度,並通過移除無法處理的網格細節來增加切片速度。" + +#: fdmprinter.def.json +msgctxt "multiple_mesh_overlap label" +msgid "Merged Meshes Overlap" +msgstr "合併網格重疊" + +#: fdmprinter.def.json +msgctxt "multiple_mesh_overlap description" +msgid "" +"Make meshes which are touching each other overlap a bit. This makes them " +"bond together better." +msgstr "使彼此接觸的網格稍微重疊。使他們能更緊密地結合在一起。" + +#: fdmprinter.def.json +msgctxt "carve_multiple_volumes label" +msgid "Remove Mesh Intersection" +msgstr "刪除網格交集部分" + +#: fdmprinter.def.json +msgctxt "carve_multiple_volumes description" +msgid "" +"Remove areas where multiple meshes are overlapping with each other. This may " +"be used if merged dual material objects overlap with each other." +msgstr "" +"刪除多個網格彼此重疊的區域。如果合併的雙重耗材對象彼此重疊,則可以使用此選" +"項。" + +#: fdmprinter.def.json +msgctxt "alternate_carve_order label" +msgid "Alternate Mesh Removal" +msgstr "交互移除網格重疊部分" + +#: fdmprinter.def.json +msgctxt "alternate_carve_order description" +msgid "" +"Switch to which mesh intersecting volumes will belong with every layer, so " +"that the overlapping meshes become interwoven. Turning this setting off will " +"cause one of the meshes to obtain all of the volume in the overlap, while it " +"is removed from the other meshes." +msgstr "" +"將網格重疊的部分,交互的在每一層中歸屬到不同的網格,以便重疊的網格交織在一" +"起。關閉此設定將使其中一個網格物體獲得重疊中的所有體積,而從其他網格物體中移" +"除。" + +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers label" +msgid "Remove Empty First Layers" +msgstr "移除空的第一層" + +#: fdmprinter.def.json +msgctxt "remove_empty_first_layers description" +msgid "" +"Remove empty layers beneath the first printed layer if they are present. " +"Disabling this setting can cause empty first layers if the Slicing Tolerance " +"setting is set to Exclusive or Middle." +msgstr "" +"如果可列印的第一層下方有空的層,將其移除。假如「切片公差」設定為「排除」或" +"「中間」,關閉此設定可能會導致空的第一層。" + +#: fdmprinter.def.json +msgctxt "blackmagic label" +msgid "Special Modes" +msgstr "特殊模式" + +#: fdmprinter.def.json +msgctxt "blackmagic description" +msgid "category_blackmagic" +msgstr "黑魔法" + +#: fdmprinter.def.json +msgctxt "print_sequence label" +msgid "Print Sequence" +msgstr "列印順序" + +#: fdmprinter.def.json +msgctxt "print_sequence description" +msgid "" +"Whether to print all models one layer at a time or to wait for one model to " +"finish, before moving on to the next. One at a time mode is only possible if " +"all models are separated in such a way that the whole print head can move in " +"between and all models are lower than the distance between the nozzle and " +"the X/Y axes." +msgstr "" +"選擇一次列印一層中的所有模型或等待一個模型完成後再轉到下一個模型。排隊模式只" +"有在所有模型以一種整個列印頭可以在各個模型之間移動的方式分隔開,且所有模型都" +"低於噴頭和 X / Y 軸之間距離的情况下可用。" + +#: fdmprinter.def.json +msgctxt "print_sequence option all_at_once" +msgid "All at Once" +msgstr "同時列印" + +#: fdmprinter.def.json +msgctxt "print_sequence option one_at_a_time" +msgid "One at a Time" +msgstr "排隊列印" + +#: fdmprinter.def.json +msgctxt "infill_mesh label" +msgid "Infill Mesh" +msgstr "填充網格" + +#: fdmprinter.def.json +msgctxt "infill_mesh description" +msgid "" +"Use this mesh to modify the infill of other meshes with which it overlaps. " +"Replaces infill regions of other meshes with regions for this mesh. It's " +"suggested to only print one Wall and no Top/Bottom Skin for this mesh." +msgstr "" +"使用此網格修改與其重疊的其他網格的填充。利用此網格的區域替換其他網格的填充區" +"域。建議僅為此網格列印一個壁,而不列印頂部/底部表層。" + +#: fdmprinter.def.json +msgctxt "infill_mesh_order label" +msgid "Infill Mesh Order" +msgstr "填充網格順序" + +#: fdmprinter.def.json +msgctxt "infill_mesh_order description" +msgid "" +"Determines which infill mesh is inside the infill of another infill mesh. An " +"infill mesh with a higher order will modify the infill of infill meshes with " +"lower order and normal meshes." +msgstr "" +"確定哪個填充網格在另一個填充網格的填充內。順序較高的填充網格將修改順序較低的" +"填充網格以及普通網格的填充。" + +#: fdmprinter.def.json +msgctxt "cutting_mesh label" +msgid "Cutting Mesh" +msgstr "切割網格" + +#: fdmprinter.def.json +msgctxt "cutting_mesh description" +msgid "" +"Limit the volume of this mesh to within other meshes. You can use this to " +"make certain areas of one mesh print with different settings and with a " +"whole different extruder." +msgstr "" +"將此網格的體積限制在其他網格內。你可以使用它來制作採用不同的設定以及完全不同" +"的擠出機的網格列印的特定區域。" + +#: fdmprinter.def.json +msgctxt "mold_enabled label" +msgid "Mold" +msgstr "模具" + +#: fdmprinter.def.json +msgctxt "mold_enabled description" +msgid "" +"Print models as a mold, which can be cast in order to get a model which " +"resembles the models on the build plate." +msgstr "將模型作為模具列印,可進行鑄造,以便獲取與列印平台上的模型類似的模型。" + +#: fdmprinter.def.json +msgctxt "mold_width label" +msgid "Minimal Mold Width" +msgstr "最小模具寬度" + +#: fdmprinter.def.json +msgctxt "mold_width description" +msgid "" +"The minimal distance between the ouside of the mold and the outside of the " +"model." +msgstr "模具外側和模型外側之間的最小距離。" + +#: fdmprinter.def.json +msgctxt "mold_roof_height label" +msgid "Mold Roof Height" +msgstr "模具頂板高度" + +#: fdmprinter.def.json +msgctxt "mold_roof_height description" +msgid "The height above horizontal parts in your model which to print mold." +msgstr "用於列印模具的模型水平部分上方的高度。" + +#: fdmprinter.def.json +msgctxt "mold_angle label" +msgid "Mold Angle" +msgstr "模具角度" + +#: fdmprinter.def.json +msgctxt "mold_angle description" +msgid "" +"The angle of overhang of the outer walls created for the mold. 0° will make " +"the outer shell of the mold vertical, while 90° will make the outside of the " +"model follow the contour of the model." +msgstr "" +"為模具創建的外壁的懸垂角度。0° 將使模具的外殼垂直,而 90° 將使模型的外部遵循" +"模型的輪廓。" + +#: fdmprinter.def.json +msgctxt "support_mesh label" +msgid "Support Mesh" +msgstr "支撐網格" + +#: fdmprinter.def.json +msgctxt "support_mesh description" +msgid "" +"Use this mesh to specify support areas. This can be used to generate support " +"structure." +msgstr "使用此網格指定支撐區域。可用於產生支撐結構。" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down label" +msgid "Drop Down Support Mesh" +msgstr "下拉式支撐網格" + +#: fdmprinter.def.json +msgctxt "support_mesh_drop_down description" +msgid "" +"Make support everywhere below the support mesh, so that there's no overhang " +"in the support mesh." +msgstr "在支撐網格下方的所有位置進行支撐,讓支撐網格中没有懸垂。" + +#: fdmprinter.def.json +msgctxt "anti_overhang_mesh label" +msgid "Anti Overhang Mesh" +msgstr "防懸網格" + +#: fdmprinter.def.json +msgctxt "anti_overhang_mesh description" +msgid "" +"Use this mesh to specify where no part of the model should be detected as " +"overhang. This can be used to remove unwanted support structure." +msgstr "" +"使用此網格指定模型的任何部分不應被檢測為懸垂的區域。可用於移除不需要的支撐結" +"構。" + +#: fdmprinter.def.json +msgctxt "magic_mesh_surface_mode label" +msgid "Surface Mode" +msgstr "表面模式" + +#: fdmprinter.def.json +msgctxt "magic_mesh_surface_mode description" +msgid "" +"Treat the model as a surface only, a volume, or volumes with loose surfaces. " +"The normal print mode only prints enclosed volumes. \"Surface\" prints a " +"single wall tracing the mesh surface with no infill and no top/bottom skin. " +"\"Both\" prints enclosed volumes like normal and any remaining polygons as " +"surfaces." +msgstr "" +"將模型作為僅表面、一個空間或多個具有鬆散表面的空間處理。“正常”僅列印封閉的空" +"間。“表面”列印模型表面的單壁,没有填充,也没有頂部/底部表層。“兩者”將封閉空間" +"正常列印,並將任何剩餘多邊形作為表面列印。" + +#: fdmprinter.def.json +msgctxt "magic_mesh_surface_mode option normal" +msgid "Normal" +msgstr "正常" + +#: fdmprinter.def.json +msgctxt "magic_mesh_surface_mode option surface" +msgid "Surface" +msgstr "表面" + +#: fdmprinter.def.json +msgctxt "magic_mesh_surface_mode option both" +msgid "Both" +msgstr "兩者" + +#: fdmprinter.def.json +msgctxt "magic_spiralize label" +msgid "Spiralize Outer Contour" +msgstr "螺旋列印外輪廓" + +#: fdmprinter.def.json +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 should only be " +"enabled when each layer only contains a single part." +msgstr "" +"螺旋列印實現外部邊緣的平滑 Z 移動。這會在整個列印上改成 Z 軸穩定增動。該功能" +"會將一個實心模型轉變為具有實體底部的單壁列印。只有在當每一層只包含一個封閉面" +"時才應啟用此功能。" + +#: fdmprinter.def.json +msgctxt "smooth_spiralized_contours label" +msgid "Smooth Spiralized Contours" +msgstr "平滑螺旋輪廓" + +#: fdmprinter.def.json +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 "" +"擠出控制使用相對模式而非絕對模式。使用相對的 E 步數使 G-code 在後處理上更為簡" +"便。然而並非所有印表機都支援此模式,而且和絕對的 E 步數相比,它可能在沉積耗材" +"的使用量上產生輕微的偏差。無論此設定為何,在輸出任何 G-code 腳本之前,擠出模" +"式將始終設定為絕對模式。" + +#: fdmprinter.def.json +msgctxt "experimental label" +msgid "Experimental" +msgstr "實驗性" + +#: fdmprinter.def.json +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 "support_skip_some_zags label" +msgid "Break Up Support In Chunks" +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 "" +"省略支撐的部分連接線,讓支撐結構更容易拆除。此設定適用於鋸齒狀的支撐樣式。" + +#: 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 "每隔 N 毫米省略一次連接線,讓支撐結構更容易拆除。" + +#: fdmprinter.def.json +msgctxt "support_zag_skip_count label" +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 away." +msgstr "每隔 N 個連接線省略一次,讓支撐結構更容易拆除。" + +#: fdmprinter.def.json +msgctxt "draft_shield_enabled label" +msgid "Enable Draft Shield" +msgstr "啟用防風罩" + +#: fdmprinter.def.json +msgctxt "draft_shield_enabled description" +msgid "" +"This will create a wall around the model, which traps (hot) air and shields " +"against exterior airflow. Especially useful for materials which warp easily." +msgstr "" +"這將在模型周圍建立一個牆壁留住(熱)空氣並遮住外部氣流。對於容易翹曲的耗材非" +"常有用。" + +#: fdmprinter.def.json +msgctxt "draft_shield_dist label" +msgid "Draft Shield X/Y Distance" +msgstr "防風罩 X/Y 距離" + +#: fdmprinter.def.json +msgctxt "draft_shield_dist description" +msgid "Distance of the draft shield from the print, in the X/Y directions." +msgstr "防風罩與模型在 X/Y 軸方向的距離。" + +#: fdmprinter.def.json +msgctxt "draft_shield_height_limitation label" +msgid "Draft Shield Limitation" +msgstr "防風罩限高" + +#: fdmprinter.def.json +msgctxt "draft_shield_height_limitation description" +msgid "" +"Set the height of the draft shield. Choose to print the draft shield at the " +"full height of the model or at a limited height." +msgstr "設定防風罩的高度。選擇防風罩與模型同高或只列印到限制的高度。" + +#: fdmprinter.def.json +msgctxt "draft_shield_height_limitation option full" +msgid "Full" +msgstr "完整" + +#: fdmprinter.def.json +msgctxt "draft_shield_height_limitation option limited" +msgid "Limited" +msgstr "限制" + +#: fdmprinter.def.json +msgctxt "draft_shield_height label" +msgid "Draft Shield Height" +msgstr "防風罩高度" + +#: fdmprinter.def.json +msgctxt "draft_shield_height description" +msgid "" +"Height limitation of the draft shield. Above this height no draft shield " +"will be printed." +msgstr "防風罩的高度限制。超過這個高度就不再列印防風罩。" + +#: fdmprinter.def.json +msgctxt "conical_overhang_enabled label" +msgid "Make Overhang Printable" +msgstr "使懸垂可列印" + +#: fdmprinter.def.json +msgctxt "conical_overhang_enabled description" +msgid "" +"Change the geometry of the printed model such that minimal support is " +"required. Steep overhangs will become shallow overhangs. Overhanging areas " +"will drop down to become more vertical." +msgstr "" +"更改列印模型的幾何形狀,以最大程度減少需要的支撐。陡峭的懸垂物將變淺。懸垂區" +"域將下降變得更垂直。" + +#: fdmprinter.def.json +msgctxt "conical_overhang_angle label" +msgid "Maximum Model Angle" +msgstr "最大模型角度" + +#: fdmprinter.def.json +msgctxt "conical_overhang_angle description" +msgid "" +"The maximum angle of overhangs after the they have been made printable. At a " +"value of 0° all overhangs are replaced by a piece of model connected to the " +"build plate, 90° will not change the model in any way." +msgstr "" +"在懸垂變得可列印後懸垂的最大角度。當該值為 0° 時,所有懸垂將被與列印平台連接" +"的模型的一個部分替代,如果為 90° 時,不會以任何方式更改模型。" + +#: fdmprinter.def.json +msgctxt "coasting_enable label" +msgid "Enable Coasting" +msgstr "啟用滑行" + +#: fdmprinter.def.json +msgctxt "coasting_enable description" +msgid "" +"Coasting replaces the last part of an extrusion path with a travel path. The " +"oozed material is used to print the last piece of the extrusion path in " +"order to reduce stringing." +msgstr "" +"滑行會用一個空跑路徑替代擠出路徑的最後部分。滲出耗材用於列印擠出路徑的最後部" +"分,以便減少牽絲。" + +#: fdmprinter.def.json +msgctxt "coasting_volume label" +msgid "Coasting Volume" +msgstr "滑行體積" + +#: fdmprinter.def.json +msgctxt "coasting_volume description" +msgid "" +"The volume otherwise oozed. This value should generally be close to the " +"nozzle diameter cubed." +msgstr "不進行滑行時,會滲出的體積。該值一般應接近噴頭直徑的立方。" + +#: fdmprinter.def.json +msgctxt "coasting_min_volume label" +msgid "Minimum Volume Before Coasting" +msgstr "滑行前最小體積" + +#: fdmprinter.def.json +msgctxt "coasting_min_volume description" +msgid "" +"The smallest volume an extrusion path should have before allowing coasting. " +"For smaller extrusion paths, less pressure has been built up in the bowden " +"tube and so the coasted volume is scaled linearly. This value should always " +"be larger than the Coasting Volume." +msgstr "" +"可以進行滑行前,擠出路徑應有的最小體積。對於較小的擠出路徑,喉管內累積的壓力" +"較少,因此滑行體積採用線性比率縮小。該值應大於滑行體積。" + +#: fdmprinter.def.json +msgctxt "coasting_speed label" +msgid "Coasting Speed" +msgstr "滑行速度" + +#: fdmprinter.def.json +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_alternate_rotation label" +msgid "Alternate Skin Rotation" +msgstr "交替表層旋轉" + +#: fdmprinter.def.json +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" +msgstr "義大利麵式填充" + +#: fdmprinter.def.json +msgctxt "spaghetti_infill_enabled description" +msgid "" +"Print the infill every so often, so that the filament will curl up " +"chaotically inside the object. This reduces print time, but the behaviour is " +"rather unpredictable." +msgstr "" +"經常列印填充,使得耗材在模型內部混亂地捲曲。這會縮短列印時間,但行為會難以預" +"測。" + +#: fdmprinter.def.json +msgctxt "spaghetti_infill_stepped label" +msgid "Spaghetti Infill Stepping" +msgstr "義大利麵式逐步填充" + +#: fdmprinter.def.json +msgctxt "spaghetti_infill_stepped description" +msgid "" +"Whether to print spaghetti infill in steps or extrude all the infill " +"filament at the end of the print." +msgstr "是否逐步列印義大利麵式填充或在列印結束時一次擠出所有填充耗材。" + +#: fdmprinter.def.json +msgctxt "spaghetti_max_infill_angle label" +msgid "Spaghetti Maximum Infill Angle" +msgstr "義大利麵式填充 - 最大填充角度" + +#: fdmprinter.def.json +msgctxt "spaghetti_max_infill_angle description" +msgid "" +"The maximum angle w.r.t. the Z axis of the inside of the print for areas " +"which are to be filled with spaghetti infill afterwards. Lowering this value " +"causes more angled parts in your model to be filled on each layer." +msgstr "" +"允許延後填充義大利麵式填充的最大角度,取列印物內側與 Z 軸的夾角。降低此值會導" +"致模型中的更多有角度部位在各層填充。" + +#: fdmprinter.def.json +msgctxt "spaghetti_max_height label" +msgid "Spaghetti Infill Maximum Height" +msgstr "義大利麵式填充 - 最大填充高度" + +#: fdmprinter.def.json +msgctxt "spaghetti_max_height description" +msgid "" +"The maximum height of inside space which can be combined and filled from the " +"top." +msgstr "可以從頂部組合和填充的內部空間的最大高度。" + +#: fdmprinter.def.json +msgctxt "spaghetti_inset label" +msgid "Spaghetti Inset" +msgstr "義大利麵式填充內嵌" + +#: fdmprinter.def.json +msgctxt "spaghetti_inset description" +msgid "" +"The offset from the walls from where the spaghetti infill will be printed." +msgstr "列印義大利麵式填充開始位置與牆壁的偏移量。" + +#: fdmprinter.def.json +msgctxt "spaghetti_flow label" +msgid "Spaghetti Flow" +msgstr "義大利麵式填充流量" + +#: fdmprinter.def.json +msgctxt "spaghetti_flow description" +msgid "" +"Adjusts the density of the spaghetti infill. Note that the Infill Density " +"only controls the line spacing of the filling pattern, not the amount of " +"extrusion for spaghetti infill." +msgstr "" +"調整義大利麵式填充的密度。注意,填充密度僅控制填充列印樣式的線條間距,而不是" +"義大利麵式填充的擠出量。" + +#: fdmprinter.def.json +msgctxt "spaghetti_infill_extra_volume label" +msgid "Spaghetti Infill Extra Volume" +msgstr "義大利麵式填充額外體積" + +#: fdmprinter.def.json +msgctxt "spaghetti_infill_extra_volume description" +msgid "" +"A correction term to adjust the total volume being extruded each time when " +"filling spaghetti." +msgstr "一個用於調整每次進行義大利麵式填充時擠出總量的修正項。" + +#: fdmprinter.def.json +msgctxt "support_conical_enabled label" +msgid "Enable Conical Support" +msgstr "啟用錐形支撐" + +#: fdmprinter.def.json +msgctxt "support_conical_enabled description" +msgid "" +"Experimental feature: Make support areas smaller at the bottom than at the " +"overhang." +msgstr "實驗性功能: 讓底部的支撐區域小於懸垂處的支撐區域。" + +#: fdmprinter.def.json +msgctxt "support_conical_angle label" +msgid "Conical Support Angle" +msgstr "錐形支撐角度" + +#: fdmprinter.def.json +msgctxt "support_conical_angle description" +msgid "" +"The angle of the tilt of conical support. With 0 degrees being vertical, and " +"90 degrees being horizontal. Smaller angles cause the support to be more " +"sturdy, but consist of more material. Negative angles cause the base of the " +"support to be wider than the top." +msgstr "" +"錐形支撐的傾斜角度。角度 0 度時為垂直,角度 90 度時為水平。較小的角度會讓支撐" +"更為牢固,但需要更多耗材。負值會讓支撐底座比頂部寬。" + +#: fdmprinter.def.json +msgctxt "support_conical_min_width label" +msgid "Conical Support Minimum Width" +msgstr "錐形支撐最小寬度" + +#: fdmprinter.def.json +msgctxt "support_conical_min_width description" +msgid "" +"Minimum width to which the base of the conical support area is reduced. " +"Small widths can lead to unstable support structures." +msgstr "錐形支撐區域底部的最小寬度。寬度較小可能導致不穩定的支撐結構。" + +#: fdmprinter.def.json +msgctxt "infill_hollow label" +msgid "Hollow Out Objects" +msgstr "挖空模型" + +#: fdmprinter.def.json +msgctxt "infill_hollow description" +msgid "" +"Remove all infill and make the inside of the object eligible for support." +msgstr "移除所有填充並讓模型內部可以進行支撐。" + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_enabled label" +msgid "Fuzzy Skin" +msgstr "絨毛皮膚" + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_enabled description" +msgid "" +"Randomly jitter while printing the outer wall, so that the surface has a " +"rough and fuzzy look." +msgstr "在列印外牆時隨機抖動,使表面具有粗糙和模糊的外觀。" + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_thickness label" +msgid "Fuzzy Skin Thickness" +msgstr "絨毛皮膚厚度" + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_thickness description" +msgid "" +"The width within which to jitter. It's advised to keep this below the outer " +"wall width, since the inner walls are unaltered." +msgstr "進行抖動的寬度。建議讓此值低於外壁寬度,因為內壁不會更改。" + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_point_density label" +msgid "Fuzzy Skin Density" +msgstr "絨毛皮膚密度" + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_point_density description" +msgid "" +"The average density of points introduced on each polygon in a layer. Note " +"that the original points of the polygon are discarded, so a low density " +"results in a reduction of the resolution." +msgstr "" +"在每一層中,每個多邊形上改變的點的平均密度。注意,多邊形的原始點會被捨棄,因" +"此低密度導致解析度降低。" + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_point_dist label" +msgid "Fuzzy Skin Point Distance" +msgstr "絨毛皮膚距離" + +#: fdmprinter.def.json +msgctxt "magic_fuzzy_skin_point_dist description" +msgid "" +"The average distance between the random points introduced on each line " +"segment. Note that the original points of the polygon are discarded, so a " +"high smoothness results in a reduction of the resolution. This value must be " +"higher than half the Fuzzy Skin Thickness." +msgstr "" +"在每個線條部分改變的隨機點之間的平均距離。注意,多邊形的原始點會被捨棄,因此" +"高平滑度導致解析度降低。該值必須大於絨毛皮膚厚度的一半。" + +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset label" +msgid "Flow rate compensation max extrusion offset" +msgstr "流量補償的最大擠出偏移量" + +#: fdmprinter.def.json +msgctxt "flow_rate_max_extrusion_offset description" +msgid "The maximum distance in mm to compensate." +msgstr "最大補償距離(以毫米為單位)。" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor label" +msgid "Flow rate compensation factor" +msgstr "流量補償因子" + +#: fdmprinter.def.json +msgctxt "flow_rate_extrusion_offset_factor description" +msgid "The multiplication factor for the flow rate -> distance translation." +msgstr "流量倍率 -> 移動距離。" + +#: fdmprinter.def.json +msgctxt "wireframe_enabled label" +msgid "Wire Printing" +msgstr "鐵絲網列印(以下簡稱 WP)" + +#: fdmprinter.def.json +msgctxt "wireframe_enabled description" +msgid "" +"Print only the outside surface with a sparse webbed structure, printing 'in " +"thin air'. This is realized by horizontally printing the contours of the " +"model at given Z intervals which are connected via upward and diagonally " +"downward lines." +msgstr "" +"只列印一個具有稀疏網狀結構的外表面,在“稀疏的空中”列印。這是在给定的 Z 軸間隔" +"內,通過上行線和下行斜線連接,橫向列印模型的輪廓來實現的。" + +#: fdmprinter.def.json +msgctxt "wireframe_height label" +msgid "WP Connection Height" +msgstr "WP 連接高度" + +#: fdmprinter.def.json +msgctxt "wireframe_height description" +msgid "" +"The height of the upward and diagonally downward lines between two " +"horizontal parts. This determines the overall density of the net structure. " +"Only applies to Wire Printing." +msgstr "" +"兩個水平部分之間上行線和下行斜線的高度。這决定網狀結構的整體密度。僅套用於鐵" +"絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_roof_inset label" +msgid "WP Roof Inset Distance" +msgstr "WP 頂板嵌入距離" + +#: fdmprinter.def.json +msgctxt "wireframe_roof_inset description" +msgid "" +"The distance covered when making a connection from a roof outline inward. " +"Only applies to Wire Printing." +msgstr "在從頂板輪廓向內進行連接時所覆蓋的距離。僅套用於鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed label" +msgid "WP Speed" +msgstr "WP 速度" + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed description" +msgid "" +"Speed at which the nozzle moves when extruding material. Only applies to " +"Wire Printing." +msgstr "擠出耗材時噴頭移動的速度。僅套用於鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_bottom label" +msgid "WP Bottom Printing Speed" +msgstr "WP 底部列印速度" + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_bottom description" +msgid "" +"Speed of printing the first layer, which is the only layer touching the " +"build platform. Only applies to Wire Printing." +msgstr "列印第一層的速度,該層是唯一接觸列印平台的層。僅套用於鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_up label" +msgid "WP Upward Printing Speed" +msgstr "WP 上升列印速度" + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_up description" +msgid "" +"Speed of printing a line upward 'in thin air'. Only applies to Wire Printing." +msgstr "在“稀疏的空中”向上列印線條的速度。僅套用於鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_down label" +msgid "WP Downward Printing Speed" +msgstr "WP 下降列印速度" + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_down description" +msgid "" +"Speed of printing a line diagonally downward. Only applies to Wire Printing." +msgstr "列印下行斜線的速度。僅套用於鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_flat label" +msgid "WP Horizontal Printing Speed" +msgstr "WP 水平列印速度" + +#: fdmprinter.def.json +msgctxt "wireframe_printspeed_flat description" +msgid "" +"Speed of printing the horizontal contours of the model. Only applies to Wire " +"Printing." +msgstr "列印模型水平輪廓的速度。僅套用於鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_flow label" +msgid "WP Flow" +msgstr "WP 列印流量" + +#: fdmprinter.def.json +msgctxt "wireframe_flow description" +msgid "" +"Flow compensation: the amount of material extruded is multiplied by this " +"value. Only applies to Wire Printing." +msgstr "流量補償:擠出的耗材量乘以此值。僅套用於鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_flow_connection label" +msgid "WP Connection Flow" +msgstr "WP 連接流量" + +#: fdmprinter.def.json +msgctxt "wireframe_flow_connection description" +msgid "Flow compensation when going up or down. Only applies to Wire Printing." +msgstr "向上或向下時的流量補償。僅套用於鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_flow_flat label" +msgid "WP Flat Flow" +msgstr "WP 平面流量" + +#: fdmprinter.def.json +msgctxt "wireframe_flow_flat description" +msgid "" +"Flow compensation when printing flat lines. Only applies to Wire Printing." +msgstr "列印平面線條時的流量補償。僅套用於鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_top_delay label" +msgid "WP Top Delay" +msgstr "WP 頂部延遲" + +#: fdmprinter.def.json +msgctxt "wireframe_top_delay description" +msgid "" +"Delay time after an upward move, so that the upward line can harden. Only " +"applies to Wire Printing." +msgstr "向上移動後的延遲時間,以便上行線條硬化。僅套用於鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_bottom_delay label" +msgid "WP Bottom Delay" +msgstr "WP 底部延遲" + +#: fdmprinter.def.json +msgctxt "wireframe_bottom_delay description" +msgid "Delay time after a downward move. Only applies to Wire Printing." +msgstr "向下移動後的延遲時間。僅套用於鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_flat_delay label" +msgid "WP Flat Delay" +msgstr "WP 平面延遲" + +#: fdmprinter.def.json +msgctxt "wireframe_flat_delay description" +msgid "" +"Delay time between two horizontal segments. Introducing such a delay can " +"cause better adhesion to previous layers at the connection points, while too " +"long delays cause sagging. Only applies to Wire Printing." +msgstr "" +"兩個水平部分之間的延遲時間。引入這樣的延遲可以在連接點處與先前的層產生更好的" +"附著,而太長的延遲會引起下垂。僅套用於鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_up_half_speed label" +msgid "WP Ease Upward" +msgstr "WP 輕鬆上行" + +#: fdmprinter.def.json +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" +"這會與之前的層產生更好的附著,而不會將這些層中的耗材過度加熱。僅套用於鐵絲網" +"列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_top_jump label" +msgid "WP Knot Size" +msgstr "WP 紐結大小" + +#: fdmprinter.def.json +msgctxt "wireframe_top_jump description" +msgid "" +"Creates a small knot at the top of an upward line, so that the consecutive " +"horizontal layer has a better chance to connect to it. Only applies to Wire " +"Printing." +msgstr "" +"在上行線條的頂部創建一個小紐結,使連續的水平層有更好的機會與其連接。僅套用於" +"鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_fall_down label" +msgid "WP Fall Down" +msgstr "WP 倒塌" + +#: fdmprinter.def.json +msgctxt "wireframe_fall_down description" +msgid "" +"Distance with which the material falls down after an upward extrusion. This " +"distance is compensated for. Only applies to Wire Printing." +msgstr "耗材在向上擠出後倒塌的距離。將對此距離進行補償。僅套用於鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_drag_along label" +msgid "WP Drag Along" +msgstr "WP 拖行" + +#: fdmprinter.def.json +msgctxt "wireframe_drag_along description" +msgid "" +"Distance with which the material of an upward extrusion is dragged along " +"with the diagonally downward extrusion. This distance is compensated for. " +"Only applies to Wire Printing." +msgstr "" +"向上擠出耗材與斜向下擠出一起拖動的距離。將對此距離進行補償。僅套用於鐵絲網列" +"印。" + +#: fdmprinter.def.json +msgctxt "wireframe_strategy label" +msgid "WP Strategy" +msgstr "WP 使用策略" + +#: fdmprinter.def.json +msgctxt "wireframe_strategy description" +msgid "" +"Strategy for making sure two consecutive layers connect at each connection " +"point. Retraction lets the upward lines harden in the right position, but " +"may cause filament grinding. A knot can be made at the end of an upward line " +"to heighten the chance of connecting to it and to let the line cool; " +"however, it may require slow printing speeds. Another strategy is to " +"compensate for the sagging of the top of an upward line; however, the lines " +"won't always fall down as predicted." +msgstr "" +"用於確定兩個連續層在每個連接點連接的策略。回抽可讓上行線條在正確的位置硬化," +"但可能導致耗材磨損。紐結可以在上行線條的尾端進行打結以便提高與其連接的幾率," +"並讓線條冷卻;但這會需要較慢的列印速度。另一種策略是補償上行線條頂部的下垂;" +"然而,線條不會總是如預期的那樣下降。" + +#: fdmprinter.def.json +msgctxt "wireframe_strategy option compensate" +msgid "Compensate" +msgstr "補償" + +#: fdmprinter.def.json +msgctxt "wireframe_strategy option knot" +msgid "Knot" +msgstr "紐結" + +#: fdmprinter.def.json +msgctxt "wireframe_strategy option retract" +msgid "Retract" +msgstr "回抽" + +#: fdmprinter.def.json +msgctxt "wireframe_straight_before_down label" +msgid "WP Straighten Downward Lines" +msgstr "WP 拉直下行線條" + +#: fdmprinter.def.json +msgctxt "wireframe_straight_before_down description" +msgid "" +"Percentage of a diagonally downward line which is covered by a horizontal " +"line piece. This can prevent sagging of the top most point of upward lines. " +"Only applies to Wire Printing." +msgstr "" +"水平線條部分所覆蓋的斜下行線條的百分比。這可以防止上行線最頂端點下垂。僅套用" +"於鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_roof_fall_down label" +msgid "WP Roof Fall Down" +msgstr "WP 頂板倒塌" + +#: fdmprinter.def.json +msgctxt "wireframe_roof_fall_down description" +msgid "" +"The distance which horizontal roof lines printed 'in thin air' fall down " +"when being printed. This distance is compensated for. Only applies to Wire " +"Printing." +msgstr "" +"列印時,在“稀疏的空中”列印的水平頂板線條倒塌的距離。將對此距離進行補償。僅套" +"用於鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_roof_drag_along label" +msgid "WP Roof Drag Along" +msgstr "WP 頂板拖行" + +#: fdmprinter.def.json +msgctxt "wireframe_roof_drag_along description" +msgid "" +"The distance of the end piece of an inward line which gets dragged along " +"when going back to the outer outline of the roof. This distance is " +"compensated for. Only applies to Wire Printing." +msgstr "" +"向內線的末端在返回至頂板外部輪廓時被拖行的距離。將對此距離進行補償。僅套用於" +"鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "wireframe_roof_outer_delay label" +msgid "WP Roof Outer Delay" +msgstr "WP 頂板外部延遲" + +#: fdmprinter.def.json +msgctxt "wireframe_roof_outer_delay description" +msgid "" +"Time spent at the outer perimeters of hole which is to become a roof. Longer " +"times can ensure a better connection. Only applies to Wire Printing." +msgstr "" +"在成為頂板的孔的外圍花費的時間。較長的時間可確保更好的連接。僅套用於鐵絲網列" +"印。" + +#: fdmprinter.def.json +msgctxt "wireframe_nozzle_clearance label" +msgid "WP Nozzle Clearance" +msgstr "WP 噴頭間隙" + +#: fdmprinter.def.json +msgctxt "wireframe_nozzle_clearance description" +msgid "" +"Distance between the nozzle and horizontally downward lines. Larger " +"clearance results in diagonally downward lines with a less steep angle, " +"which in turn results in less upward connections with the next layer. Only " +"applies to Wire Printing." +msgstr "" +"噴頭和水平下行線之間的距離。較大的間隙會讓斜下行線角度較平緩,進而使第二層的" +"上行連接較少。僅套用於鐵絲網列印。" + +#: fdmprinter.def.json +msgctxt "command_line_settings label" +msgid "Command Line Settings" +msgstr "命令行設定" + +#: fdmprinter.def.json +msgctxt "command_line_settings description" +msgid "" +"Settings which are only used if CuraEngine isn't called from the Cura " +"frontend." +msgstr "未從 Cura 前端調用 CuraEngine 時使用的設定。" + +#: fdmprinter.def.json +msgctxt "center_object label" +msgid "Center object" +msgstr "模型置中" + +#: fdmprinter.def.json +msgctxt "center_object description" +msgid "" +"Whether to center the object on the middle of the build platform (0,0), " +"instead of using the coordinate system in which the object was saved." +msgstr "是否將模型放置在列印平台中心 (0,0),而不是使用模型內儲存的座標系統。" + +#: fdmprinter.def.json +msgctxt "mesh_position_x label" +msgid "Mesh position x" +msgstr "網格位置 x" + +#: fdmprinter.def.json +msgctxt "mesh_position_x description" +msgid "Offset applied to the object in the x direction." +msgstr "套用在模型 x 方向上的偏移量。" + +#: fdmprinter.def.json +msgctxt "mesh_position_y label" +msgid "Mesh position y" +msgstr "網格位置 y" + +#: fdmprinter.def.json +msgctxt "mesh_position_y description" +msgid "Offset applied to the object in the y direction." +msgstr "套用在模型 y 方向上的偏移量。" + +#: fdmprinter.def.json +msgctxt "mesh_position_z label" +msgid "Mesh position z" +msgstr "網格位置 z" + +#: fdmprinter.def.json +msgctxt "mesh_position_z description" +msgid "" +"Offset applied to the object in the z direction. With this you can perform " +"what was used to be called 'Object Sink'." +msgstr "" +"套用在模型 z 方向上的偏移量。利用此選項,你可以執行過去被稱為“模型沉降”的操" +"作。" + +#: fdmprinter.def.json +msgctxt "mesh_rotation_matrix label" +msgid "Mesh Rotation Matrix" +msgstr "網格旋轉矩陣" + +#: fdmprinter.def.json +msgctxt "mesh_rotation_matrix description" +msgid "" +"Transformation matrix to be applied to the model when loading it from file." +msgstr "在將模型從檔案中載入時套用在模型上的轉換矩陣。" + +#~ 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 "" +#~ "擠出機在第一層從正常高度偏移了此設定量。它可以是正值(上升)或負值(下" +#~ "降)。某些耗材類型在擠出機稍微上升情況下,會更好地附著在列印平台上。" + +#~ msgctxt "z_offset_taper_layers label" +#~ msgid "Z Offset Taper Layers" +#~ msgstr "Z 軸偏移漸減層數" + +#~ 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 "" +#~ "當此值不為 0 時,Z 軸偏移量在經過此層數時逐漸降為 0。此值設為 0 表示所有列" +#~ "印層的 Z 軸偏移量保持為固定值。" + +#~ 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 "support_skip_some_zags label" +#~ msgid "Skip Some ZigZags Connections" +#~ msgstr "跳過部分鋸齒狀連接" + +#~ msgctxt "support_zag_skip_count label" +#~ msgid "ZigZag Connection Skip Count" +#~ msgstr "鋸齒狀連接跳過計數" diff --git a/resources/meshes/anycubic_i3_mega_platform.stl b/resources/meshes/anycubic_i3_mega_platform.stl new file mode 100644 index 0000000000..cc3651b9f3 Binary files /dev/null and b/resources/meshes/anycubic_i3_mega_platform.stl differ diff --git a/resources/meshes/builder_premium_platform.stl b/resources/meshes/builder_premium_platform.stl new file mode 100644 index 0000000000..b315d4b6d4 Binary files /dev/null and b/resources/meshes/builder_premium_platform.stl differ diff --git a/resources/meshes/deltacomb.stl b/resources/meshes/deltacomb.stl new file mode 100644 index 0000000000..7be5c33fd7 Binary files /dev/null and b/resources/meshes/deltacomb.stl differ diff --git a/resources/meshes/tevo_blackwidow.stl b/resources/meshes/tevo_blackwidow.stl new file mode 100644 index 0000000000..ef45dd1621 Binary files /dev/null and b/resources/meshes/tevo_blackwidow.stl differ diff --git a/resources/qml/AboutDialog.qml b/resources/qml/AboutDialog.qml index 534f0d016c..36cebe594a 100644 --- a/resources/qml/AboutDialog.qml +++ b/resources/qml/AboutDialog.qml @@ -132,6 +132,7 @@ UM.Dialog projectsModel.append({ name:"PySerial", description: catalog.i18nc("@label", "Serial communication library"), license: "Python", url: "http://pyserial.sourceforge.net/" }); projectsModel.append({ name:"python-zeroconf", description: catalog.i18nc("@label", "ZeroConf discovery library"), license: "LGPL", url: "https://github.com/jstasiak/python-zeroconf" }); projectsModel.append({ name:"Clipper", description: catalog.i18nc("@label", "Polygon clipping library"), license: "Boost", url: "http://www.angusj.com/delphi/clipper.php" }); + projectsModel.append({ name:"Requests", description: catalog.i18nc("@Label", "Python HTTP library"), license: "GPL", url: "http://docs.python-requests.org" }); projectsModel.append({ name:"Open Sans", description: catalog.i18nc("@label", "Font"), license: "Apache 2.0", url: "https://fonts.google.com/specimen/Open+Sans" }); projectsModel.append({ name:"Font-Awesome-SVG-PNG", description: catalog.i18nc("@label", "SVG icons"), license: "SIL OFL 1.1", url: "https://github.com/encharm/Font-Awesome-SVG-PNG" }); diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index cc27520a02..05ff5050e9 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -17,7 +17,13 @@ Item property alias undo: undoAction; property alias redo: redoAction; - property alias homeCamera: homeCameraAction; + property alias view3DCamera: view3DCameraAction; + property alias viewFrontCamera: viewFrontCameraAction; + property alias viewTopCamera: viewTopCameraAction; + property alias viewLeftSideCamera: viewLeftSideCameraAction; + property alias viewRightSideCamera: viewRightSideCameraAction; + + property alias expandSidebar: expandSidebarAction; property alias deleteSelection: deleteSelectionAction; property alias centerSelection: centerSelectionAction; @@ -35,6 +41,7 @@ Item property alias selectAll: selectAllAction; property alias deleteAll: deleteAllAction; property alias reloadAll: reloadAllAction; + property alias arrangeAllBuildPlates: arrangeAllBuildPlatesAction; property alias arrangeAll: arrangeAllAction; property alias arrangeSelection: arrangeSelectionAction; property alias resetAllTranslation: resetAllTranslationAction; @@ -103,9 +110,37 @@ Item Action { - id: homeCameraAction; - text: catalog.i18nc("@action:inmenu menubar:view","&Reset camera position"); - onTriggered: CuraActions.homeCamera(); + id: view3DCameraAction; + text: catalog.i18nc("@action:inmenu menubar:view","&3D View"); + onTriggered: UM.Controller.rotateView("3d", 0); + } + + Action + { + id: viewFrontCameraAction; + text: catalog.i18nc("@action:inmenu menubar:view","&Front View"); + onTriggered: UM.Controller.rotateView("home", 0); + } + + Action + { + id: viewTopCameraAction; + text: catalog.i18nc("@action:inmenu menubar:view","&Top View"); + onTriggered: UM.Controller.rotateView("y", 90); + } + + Action + { + id: viewLeftSideCameraAction; + text: catalog.i18nc("@action:inmenu menubar:view","&Left Side View"); + onTriggered: UM.Controller.rotateView("x", 90); + } + + Action + { + id: viewRightSideCameraAction; + text: catalog.i18nc("@action:inmenu menubar:view","&Right Side View"); + onTriggered: UM.Controller.rotateView("x", -90); } Action @@ -244,6 +279,16 @@ Item onTriggered: CuraApplication.groupSelected(); } + Action + { + id: reloadQmlAction + onTriggered: + { + CuraApplication.reloadQML() + } + shortcut: "Shift+F5" + } + Action { id: unGroupObjectsAction @@ -300,6 +345,13 @@ Item onTriggered: CuraApplication.reloadAll(); } + Action + { + id: arrangeAllBuildPlatesAction; + text: catalog.i18nc("@action:inmenu menubar:edit","Arrange All Models To All Build Plates"); + onTriggered: Printer.arrangeObjectsToAllBuildPlates(); + } + Action { id: arrangeAllAction; @@ -379,4 +431,11 @@ Item text: catalog.i18nc("@action:menu", "Installed plugins..."); iconName: "plugins_configure" } + + Action + { + id: expandSidebarAction; + text: catalog.i18nc("@action:inmenu menubar:view","Expand/Collapse Sidebar"); + shortcut: "Ctrl+E"; + } } diff --git a/resources/qml/AddMachineDialog.qml b/resources/qml/AddMachineDialog.qml index 109ea07695..a635f1f8d1 100644 --- a/resources/qml/AddMachineDialog.qml +++ b/resources/qml/AddMachineDialog.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 LGPLv3 or higher. import QtQuick 2.2 @@ -25,6 +25,15 @@ UM.Dialog width: minimumWidth height: minimumHeight + flags: { + var window_flags = Qt.Dialog | Qt.CustomizeWindowHint | Qt.WindowTitleHint; + if (Cura.MachineManager.activeDefinitionId !== "") //Disallow closing the window if we have no active printer yet. You MUST add a printer. + { + window_flags |= Qt.WindowCloseButtonHint; + } + return window_flags; + } + onVisibilityChanged: { // Reset selection and machine name diff --git a/resources/qml/AskOpenAsProjectOrModelsDialog.qml b/resources/qml/AskOpenAsProjectOrModelsDialog.qml index 450ec0ea26..a53c711f9d 100644 --- a/resources/qml/AskOpenAsProjectOrModelsDialog.qml +++ b/resources/qml/AskOpenAsProjectOrModelsDialog.qml @@ -63,11 +63,12 @@ UM.Dialog anchors.fill: parent anchors.leftMargin: 20 * screenScaleFactor anchors.rightMargin: 20 * screenScaleFactor - anchors.bottomMargin: 20 * screenScaleFactor + anchors.bottomMargin: 10 * screenScaleFactor spacing: 10 * screenScaleFactor Label { + id: questionText text: catalog.i18nc("@text:window", "This is a Cura project file. Would you like to open it as a project or import the models from it?") anchors.left: parent.left anchors.right: parent.right @@ -80,11 +81,18 @@ UM.Dialog id: rememberChoiceCheckBox text: catalog.i18nc("@text:window", "Remember my choice") checked: UM.Preferences.getValue("cura/choice_on_open_project") != "always_ask" + style: CheckBoxStyle { + label: Label { + text: control.text + font: UM.Theme.getFont("default") + } + } } // Buttons Item { + id: buttonBar anchors.right: parent.right anchors.left: parent.left height: childrenRect.height diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index cb0211f29f..c130cf041b 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -20,14 +20,34 @@ UM.MainWindow viewportRect: Qt.rect(0, 0, (base.width - sidebar.width) / base.width, 1.0) property bool showPrintMonitor: false + // This connection is here to support legacy printer output devices that use the showPrintMonitor signal on Application to switch to the monitor stage + // It should be phased out in newer plugin versions. Connections { - target: Printer + target: CuraApplication onShowPrintMonitor: { if (show) { - topbar.startMonitoringPrint() + UM.Controller.setActiveStage("MonitorStage") } else { - topbar.stopMonitoringPrint() + UM.Controller.setActiveStage("PrepareStage") + } + } + } + + onWidthChanged: + { + // If slidebar is collapsed then it should be invisible + // otherwise after the main_window resize the sidebar will be fully re-drawn + if (sidebar.collapsed){ + if (sidebar.visible == true){ + sidebar.visible = false + sidebar.initialWidth = 0 + } + } + else{ + if (sidebar.visible == false){ + sidebar.visible = true + sidebar.initialWidth = UM.Theme.getSize("sidebar").width } } } @@ -46,6 +66,7 @@ UM.MainWindow // // This has been fixed for QtQuick Controls 2 since the Shortcut item has a context property. Cura.Actions.parent = backgroundItem + CuraApplication.purgeWindows() } Item @@ -115,7 +136,7 @@ UM.MainWindow MenuItem { id: saveWorkspaceMenu - text: catalog.i18nc("@title:menu menubar:file","Save project") + text: catalog.i18nc("@title:menu menubar:file","Save &Project...") onTriggered: { if(UM.Preferences.getValue("cura/dialog_on_project_save")) @@ -177,7 +198,7 @@ UM.MainWindow MenuSeparator { } - MenuItem { text: catalog.i18nc("@action:inmenu", "Set as Active Extruder"); onTriggered: ExtruderManager.setActiveExtruderIndex(model.index) } + MenuItem { text: catalog.i18nc("@action:inmenu", "Set as Active Extruder"); onTriggered: Cura.ExtruderManager.setActiveExtruderIndex(model.index) } } onObjectAdded: settingsMenu.insertItem(index, object) onObjectRemoved: settingsMenu.removeItem(object) @@ -330,7 +351,7 @@ UM.MainWindow text: catalog.i18nc("@action:button","Open File"); iconSource: UM.Theme.getIcon("load") style: UM.Theme.styles.tool_button - tooltip: ''; + tooltip: "" anchors { top: topbar.bottom; @@ -354,65 +375,107 @@ UM.MainWindow } } + ObjectsList + { + id: objectsList; + visible: UM.Preferences.getValue("cura/use_multi_build_plate"); + anchors + { + bottom: parent.bottom; + left: parent.left; + } + + } + Topbar { id: topbar - anchors.left:parent.left + anchors.left: parent.left anchors.right: parent.right anchors.top: parent.top - monitoringPrint: base.showPrintMonitor - onStartMonitoringPrint: base.showPrintMonitor = true - onStopMonitoringPrint: base.showPrintMonitor = false } - Sidebar + Loader { - id: sidebar; + id: sidebar - anchors - { - top: topbar.bottom; - bottom: parent.bottom; - right: parent.right; + property bool collapsed: false; + property var initialWidth: UM.Theme.getSize("sidebar").width; + + function callExpandOrCollapse() { + if (collapsed) { + sidebar.visible = true; + sidebar.initialWidth = UM.Theme.getSize("sidebar").width; + viewportRect = Qt.rect(0, 0, (base.width - sidebar.width) / base.width, 1.0); + expandSidebarAnimation.start(); + } else { + viewportRect = Qt.rect(0, 0, 1, 1.0); + collapseSidebarAnimation.start(); + } + collapsed = !collapsed; + UM.Preferences.setValue("cura/sidebar_collapsed", collapsed); } - z: 1 - width: UM.Theme.getSize("sidebar").width; - monitoringPrint: base.showPrintMonitor - } - Rectangle - { - id: viewportOverlay - - color: UM.Theme.getColor("viewport_overlay") anchors { - top: topbar.bottom + top: topbar.top bottom: parent.bottom - left:parent.left - right: sidebar.left } - visible: opacity > 0 - opacity: base.showPrintMonitor ? 1 : 0 - MouseArea { - anchors.fill: parent - acceptedButtons: Qt.AllButtons + width: initialWidth + x: base.width - sidebar.width + source: UM.Controller.activeStage.sidebarComponent - onWheel: wheel.accepted = true + NumberAnimation { + id: collapseSidebarAnimation + target: sidebar + properties: "x" + to: base.width + duration: 100 + } + + NumberAnimation { + id: expandSidebarAnimation + target: sidebar + properties: "x" + to: base.width - sidebar.width + duration: 100 + } + + Component.onCompleted: + { + var sidebar_collapsed = UM.Preferences.getValue("cura/sidebar_collapsed"); + + if (sidebar_collapsed) + { + sidebar.collapsed = true; + viewportRect = Qt.rect(0, 0, 1, 1.0) + collapseSidebarAnimation.start(); + } } } Loader { - sourceComponent: Cura.MachineManager.printerOutputDevices.length > 0 ? Cura.MachineManager.printerOutputDevices[0].monitorItem: null - visible: base.showPrintMonitor - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenterOffset: - UM.Theme.getSize("sidebar").width / 2 - anchors.verticalCenterOffset: UM.Theme.getSize("sidebar_header").height / 2 - property real maximumWidth: viewportOverlay.width - property real maximumHeight: viewportOverlay.height + id: main + + anchors + { + top: topbar.bottom + bottom: parent.bottom + left: parent.left + right: sidebar.left + } + + MouseArea + { + visible: UM.Controller.activeStage.mainComponent != "" + anchors.fill: parent + acceptedButtons: Qt.AllButtons + onWheel: wheel.accepted = true + } + + source: UM.Controller.activeStage.mainComponent } UM.MessageStack @@ -428,6 +491,13 @@ UM.MainWindow } } + // Expand or collapse sidebar + Connections + { + target: Cura.Actions.expandSidebar + onTriggered: sidebar.callExpandOrCollapse() + } + UM.PreferencesDialog { id: preferences @@ -471,6 +541,12 @@ UM.MainWindow onTriggered: preferences.visible = true } + Connections + { + target: CuraApplication + onShowPreferencesWindow: preferences.visible = true + } + MessageDialog { id: newProjectDialog @@ -829,7 +905,7 @@ UM.MainWindow Connections { - target: Printer + target: CuraApplication onShowMessageBox: { messageDialog.title = title @@ -875,7 +951,7 @@ UM.MainWindow Connections { - target: Printer + target: CuraApplication onRequestAddPrinter: { addMachineDialog.visible = true @@ -894,6 +970,11 @@ UM.MainWindow if(!base.visible) { base.visible = true; + } + + // check later if the user agreement dialog has been closed + if (CuraApplication.needToShowUserAgreement) + { restart(); } else if(Cura.MachineManager.activeMachineId == null || Cura.MachineManager.activeMachineId == "") diff --git a/resources/qml/ExtruderButton.qml b/resources/qml/ExtruderButton.qml index 99196b0c9f..9212c705f7 100644 --- a/resources/qml/ExtruderButton.qml +++ b/resources/qml/ExtruderButton.qml @@ -18,7 +18,7 @@ Button style: UM.Theme.styles.tool_button; iconSource: UM.Theme.getIcon("extruder_button") - checked: ExtruderManager.selectedObjectExtruders.indexOf(extruder.id) != -1 + checked: Cura.ExtruderManager.selectedObjectExtruders.indexOf(extruder.id) != -1 enabled: UM.Selection.hasSelection property color customColor: base.hovered ? UM.Theme.getColor("button_hover") : UM.Theme.getColor("button"); diff --git a/resources/qml/JobSpecs.qml b/resources/qml/JobSpecs.qml index 308316d3e9..c701e5ebf4 100644 --- a/resources/qml/JobSpecs.qml +++ b/resources/qml/JobSpecs.qml @@ -18,7 +18,6 @@ Item { UM.I18nCatalog { id: catalog; name:"cura"} height: childrenRect.height - width: childrenRect.width Connections { @@ -95,7 +94,7 @@ Item { { id: printJobTextfield anchors.right: printJobPencilIcon.left - anchors.rightMargin: UM.Theme.getSize("default_margin").width/2 + anchors.rightMargin: Math.floor(UM.Theme.getSize("default_margin").width/2) height: UM.Theme.getSize("jobspecs_line").height width: Math.max(__contentWidth + UM.Theme.getSize("default_margin").width, 50) maximumLength: 120 diff --git a/resources/qml/MachineSelection.qml b/resources/qml/MachineSelection.qml new file mode 100644 index 0000000000..e40731f3ca --- /dev/null +++ b/resources/qml/MachineSelection.qml @@ -0,0 +1,71 @@ +// Copyright (c) 2017 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.1 +import QtQuick.Controls.Styles 1.1 +import QtQuick.Layouts 1.1 + +import UM 1.2 as UM +import Cura 1.0 as Cura +import "Menus" + +ToolButton +{ + text: Cura.MachineManager.activeMachineName + + tooltip: Cura.MachineManager.activeMachineName + + style: ButtonStyle + { + background: Rectangle + { + color: + { + if(control.pressed) + { + return UM.Theme.getColor("sidebar_header_active"); + } + else if(control.hovered) + { + return UM.Theme.getColor("sidebar_header_hover"); + } + else + { + return UM.Theme.getColor("sidebar_header_bar"); + } + } + Behavior on color { ColorAnimation { duration: 50; } } + + UM.RecolorImage + { + id: downArrow + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_margin").width + width: UM.Theme.getSize("standard_arrow").width + height: UM.Theme.getSize("standard_arrow").height + sourceSize.width: width + sourceSize.height: width + color: UM.Theme.getColor("text_emphasis") + source: UM.Theme.getIcon("arrow_bottom") + } + Label + { + id: sidebarComboBoxLabel + color: UM.Theme.getColor("sidebar_header_text_active") + text: control.text; + elide: Text.ElideRight; + anchors.left: parent.left; + anchors.leftMargin: UM.Theme.getSize("default_margin").width * 2 + anchors.right: downArrow.left; + anchors.rightMargin: control.rightMargin; + anchors.verticalCenter: parent.verticalCenter; + font: UM.Theme.getFont("large") + } + } + label: Label {} + } + + menu: PrinterMenu { } +} diff --git a/resources/qml/Menus/ContextMenu.qml b/resources/qml/Menus/ContextMenu.qml index 39d497722f..1a4b421572 100644 --- a/resources/qml/Menus/ContextMenu.qml +++ b/resources/qml/Menus/ContextMenu.qml @@ -7,7 +7,7 @@ import QtQuick.Dialogs 1.2 import QtQuick.Window 2.1 import UM 1.2 as UM -import Cura 1.0 as Cura +import Cura 1.2 as Cura Menu { @@ -31,7 +31,7 @@ Menu visible: base.shouldShowExtruders enabled: UM.Selection.hasSelection checkable: true - checked: ExtruderManager.selectedObjectExtruders.indexOf(model.id) != -1 + checked: Cura.ExtruderManager.selectedObjectExtruders.indexOf(model.id) != -1 onTriggered: CuraActions.setExtruderForSelection(model.id) shortcut: "Ctrl+" + (model.index + 1) } @@ -39,6 +39,35 @@ Menu onObjectRemoved: base.removeItem(object) } + MenuSeparator { + visible: UM.Preferences.getValue("cura/use_multi_build_plate") + } + + Instantiator + { + model: Cura.BuildPlateModel + MenuItem { + text: Cura.BuildPlateModel.getItem(index).name; + onTriggered: CuraActions.setBuildPlateForSelection(Cura.BuildPlateModel.getItem(index).buildPlateNumber); + checkable: true + checked: Cura.BuildPlateModel.selectionBuildPlates.indexOf(Cura.BuildPlateModel.getItem(index).buildPlateNumber) != -1; + visible: UM.Preferences.getValue("cura/use_multi_build_plate") + } + onObjectAdded: base.insertItem(index, object); + onObjectRemoved: base.removeItem(object); + } + + MenuItem { + text: "New build plate"; + onTriggered: { + CuraActions.setBuildPlateForSelection(Cura.BuildPlateModel.maxBuildPlate + 1); + checked = false; + } + checkable: true + checked: false + visible: UM.Preferences.getValue("cura/use_multi_build_plate") + } + // Global actions MenuSeparator {} MenuItem { action: Cura.Actions.selectAll; } diff --git a/resources/qml/Menus/MaterialMenu.qml b/resources/qml/Menus/MaterialMenu.qml index 359f4f41d0..983d2f1b92 100644 --- a/resources/qml/Menus/MaterialMenu.qml +++ b/resources/qml/Menus/MaterialMenu.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2016 Ultimaker B.V. +// Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 @@ -16,20 +16,27 @@ Menu property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 property bool isClusterPrinter: { - var clusterSize = Cura.MachineManager.printerOutputDevices[0].clusterSize - // This is a non cluster printer or the cluster it is just one printer - if (clusterSize == undefined || clusterSize == 1) - return false - return true + if(Cura.MachineManager.printerOutputDevices.length == 0) + { + return false; + } + var clusterSize = Cura.MachineManager.printerOutputDevices[0].clusterSize; + // This is not a cluster printer or the cluster it is just one printer + if(clusterSize == undefined || clusterSize == 1) + { + return false; + } + return true; } UM.SettingPropertyProvider { id: materialDiameterProvider - containerStackId: Cura.MachineManager.activeMachineId + containerStackId: Cura.ExtruderManager.activeExtruderStackId key: "material_diameter" watchedProperties: [ "value" ] + storeIndex: 5 } MenuItem @@ -72,16 +79,16 @@ Menu { text: model.name checkable: true - checked: model.id == Cura.MachineManager.allActiveMaterialIds[ExtruderManager.extruderIds[extruderIndex]] + checked: model.id == Cura.MachineManager.allActiveMaterialIds[Cura.ExtruderManager.extruderIds[extruderIndex]] exclusiveGroup: group onTriggered: { // This workaround is done because of the application menus for materials and variants for multiextrusion printers. // The extruder menu would always act on the correspoding extruder only, instead of acting on the extruder selected in the UI. - var activeExtruderIndex = ExtruderManager.activeExtruderIndex; - ExtruderManager.setActiveExtruderIndex(extruderIndex); + var activeExtruderIndex = Cura.ExtruderManager.activeExtruderIndex; + Cura.ExtruderManager.setActiveExtruderIndex(extruderIndex); Cura.MachineManager.setActiveMaterial(model.id); - ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); + Cura.ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); } } onObjectAdded: menu.insertItem(index, object) @@ -115,16 +122,16 @@ Menu { text: model.name checkable: true - checked: model.id == Cura.MachineManager.allActiveMaterialIds[ExtruderManager.extruderIds[extruderIndex]] + checked: model.id == Cura.MachineManager.allActiveMaterialIds[Cura.ExtruderManager.extruderIds[extruderIndex]] exclusiveGroup: group onTriggered: { // This workaround is done because of the application menus for materials and variants for multiextrusion printers. // The extruder menu would always act on the correspoding extruder only, instead of acting on the extruder selected in the UI. - var activeExtruderIndex = ExtruderManager.activeExtruderIndex; - ExtruderManager.setActiveExtruderIndex(extruderIndex); + var activeExtruderIndex = Cura.ExtruderManager.activeExtruderIndex; + Cura.ExtruderManager.setActiveExtruderIndex(extruderIndex); Cura.MachineManager.setActiveMaterial(model.id); - ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); + Cura.ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); } } onObjectAdded: brandMaterialsMenu.insertItem(index, object) @@ -151,7 +158,7 @@ Menu } //: Model used to populate the brandModel - UM.InstanceContainersModel + Cura.MaterialsModel { id: materialsModel filter: materialFilter() @@ -201,8 +208,8 @@ Menu // Add to top section var materialId = items[i].id; genericMaterialsModel.append({ - id:materialId, - name:items[i].name + id: materialId, + name: items[i].name }); } else diff --git a/resources/qml/Menus/NozzleMenu.qml b/resources/qml/Menus/NozzleMenu.qml index 1c75a346f3..f70e639872 100644 --- a/resources/qml/Menus/NozzleMenu.qml +++ b/resources/qml/Menus/NozzleMenu.qml @@ -16,11 +16,17 @@ Menu property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 property bool isClusterPrinter: { - var clusterSize = Cura.MachineManager.printerOutputDevices[0].clusterSize - // This is a non cluster printer or the cluster it is just one printer - if (clusterSize == undefined || clusterSize == 1) - return false - return true + if(Cura.MachineManager.printerOutputDevices.length == 0) + { + return false; + } + var clusterSize = Cura.MachineManager.printerOutputDevices[0].clusterSize; + // This is not a cluster printer or the cluster it is just one printer + if(clusterSize == undefined || clusterSize == 1) + { + return false; + } + return true; } MenuItem @@ -38,15 +44,15 @@ Menu visible: printerConnected && Cura.MachineManager.printerOutputDevices[0].hotendIds.length > extruderIndex && !isClusterPrinter onTriggered: { - var activeExtruderIndex = ExtruderManager.activeExtruderIndex; - ExtruderManager.setActiveExtruderIndex(extruderIndex); + var activeExtruderIndex = Cura.ExtruderManager.activeExtruderIndex; + Cura.ExtruderManager.setActiveExtruderIndex(extruderIndex); var hotendId = Cura.MachineManager.printerOutputDevices[0].hotendIds[extruderIndex]; var itemIndex = nozzleInstantiator.model.find("name", hotendId); if(itemIndex > -1) { Cura.MachineManager.setActiveVariant(nozzleInstantiator.model.getItem(itemIndex).id); } - ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); + Cura.ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); } } @@ -69,14 +75,14 @@ Menu MenuItem { text: model.name checkable: true - checked: model.id == Cura.MachineManager.allActiveVariantIds[ExtruderManager.extruderIds[extruderIndex]] + checked: model.id == Cura.MachineManager.allActiveVariantIds[Cura.ExtruderManager.extruderIds[extruderIndex]] exclusiveGroup: group onTriggered: { - var activeExtruderIndex = ExtruderManager.activeExtruderIndex; - ExtruderManager.setActiveExtruderIndex(extruderIndex); + var activeExtruderIndex = Cura.ExtruderManager.activeExtruderIndex; + Cura.ExtruderManager.setActiveExtruderIndex(extruderIndex); Cura.MachineManager.setActiveVariant(model.id); - ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); + Cura.ExtruderManager.setActiveExtruderIndex(activeExtruderIndex); } } onObjectAdded: menu.insertItem(index, object) diff --git a/resources/qml/Menus/ProfileMenu.qml b/resources/qml/Menus/ProfileMenu.qml index 17eb7cfb1d..edce2641af 100644 --- a/resources/qml/Menus/ProfileMenu.qml +++ b/resources/qml/Menus/ProfileMenu.qml @@ -17,9 +17,9 @@ Menu MenuItem { - text: model.name + " - " + model.layer_height + text: (model.layer_height != "") ? model.name + " - " + model.layer_height : model.name checkable: true - checked: Cura.MachineManager.activeQualityChangesId == "" && Cura.MachineManager.activeQualityType == model.metadata.quality_type + checked: Cura.MachineManager.activeQualityId == model.id exclusiveGroup: group onTriggered: Cura.MachineManager.setActiveQuality(model.id) visible: model.available @@ -41,7 +41,7 @@ Menu MenuItem { - text: model.name + " - " + model.layer_height + text: model.name checkable: true checked: Cura.MachineManager.activeQualityChangesId == model.id exclusiveGroup: group diff --git a/resources/qml/Menus/ViewMenu.qml b/resources/qml/Menus/ViewMenu.qml index bb5999edb9..72bc42bfb0 100644 --- a/resources/qml/Menus/ViewMenu.qml +++ b/resources/qml/Menus/ViewMenu.qml @@ -5,29 +5,69 @@ import QtQuick 2.2 import QtQuick.Controls 1.1 import UM 1.2 as UM -import Cura 1.0 as Cura +import Cura 1.2 as Cura Menu { title: catalog.i18nc("@title:menu menubar:toplevel", "&View"); - id: menu + id: base enabled: !PrintInformation.preSliced + + // main views Instantiator { - model: UM.ViewModel { } + model: UM.ViewModel{} MenuItem { - text: model.name; - checkable: true; - checked: model.active; - exclusiveGroup: group; - onTriggered: UM.Controller.setActiveView(model.id); + text: model.name + checkable: true + checked: model.active + exclusiveGroup: group + onTriggered: UM.Controller.setActiveView(model.id) } - onObjectAdded: menu.insertItem(index, object) - onObjectRemoved: menu.removeItem(object) + onObjectAdded: base.insertItem(index, object) + onObjectRemoved: base.removeItem(object) } - ExclusiveGroup { id: group; } + ExclusiveGroup { id: group } MenuSeparator {} - MenuItem { action: Cura.Actions.homeCamera; } + + Menu + { + title: catalog.i18nc("@action:inmenu menubar:view","&Camera position"); + MenuItem { action: Cura.Actions.view3DCamera; } + MenuItem { action: Cura.Actions.viewFrontCamera; } + MenuItem { action: Cura.Actions.viewTopCamera; } + MenuItem { action: Cura.Actions.viewLeftSideCamera; } + MenuItem { action: Cura.Actions.viewRightSideCamera; } + } + + MenuSeparator { + visible: UM.Preferences.getValue("cura/use_multi_build_plate") + } + + Menu + { + id: buildPlateMenu; + title: catalog.i18nc("@action:inmenu menubar:view","&Build plate"); + Instantiator + { + model: Cura.BuildPlateModel + MenuItem { + text: Cura.BuildPlateModel.getItem(index).name; + onTriggered: Cura.SceneController.setActiveBuildPlate(Cura.BuildPlateModel.getItem(index).buildPlateNumber); + checkable: true; + checked: Cura.BuildPlateModel.getItem(index).buildPlateNumber == Cura.BuildPlateModel.activeBuildPlate; + exclusiveGroup: buildPlateGroup; + visible: UM.Preferences.getValue("cura/use_multi_build_plate") + } + onObjectAdded: buildPlateMenu.insertItem(index, object); + onObjectRemoved: buildPlateMenu.removeItem(object) + } + ExclusiveGroup { id: buildPlateGroup; } + } + + MenuSeparator {} + + MenuItem { action: Cura.Actions.expandSidebar; } } diff --git a/resources/qml/MonitorButton.qml b/resources/qml/MonitorButton.qml index 29b00f50e6..b23ba4c95a 100644 --- a/resources/qml/MonitorButton.qml +++ b/resources/qml/MonitorButton.qml @@ -18,7 +18,6 @@ Item property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands property real progress: printerConnected ? Cura.MachineManager.printerOutputDevices[0].progress : 0 - property int backendState: UM.Backend.state property bool showProgress: { // determine if we need to show the progress bar + percentage @@ -199,14 +198,19 @@ Item spacing: UM.Theme.getSize("default_margin").width } + Component.onCompleted: { + buttonsRow.updateAdditionalComponents("monitorButtons") + } + Connections { - target: Printer - onAdditionalComponentsChanged: - { - if(areaId == "monitorButtons") { - for (var component in CuraApplication.additionalComponents["monitorButtons"]) { - CuraApplication.additionalComponents["monitorButtons"][component].parent = additionalComponentsRow - } + target: CuraApplication + onAdditionalComponentsChanged: buttonsRow.updateAdditionalComponents("monitorButtons") + } + + function updateAdditionalComponents (areaId) { + if(areaId == "monitorButtons") { + for (var component in CuraApplication.additionalComponents["monitorButtons"]) { + CuraApplication.additionalComponents["monitorButtons"][component].parent = additionalComponentsRow } } } diff --git a/resources/qml/ObjectsList.qml b/resources/qml/ObjectsList.qml new file mode 100644 index 0000000000..04afbe2fb0 --- /dev/null +++ b/resources/qml/ObjectsList.qml @@ -0,0 +1,267 @@ +// Copyright (c) 2017 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.1 +import QtQuick.Controls.Styles 1.1 +import QtQuick.Layouts 1.1 +import QtQuick.Dialogs 1.1 + +import UM 1.3 as UM +import Cura 1.2 as Cura + +import "Menus" + +Rectangle +{ + id: base; + + color: UM.Theme.getColor("tool_panel_background") + + width: UM.Theme.getSize("objects_menu_size").width + height: { + if (collapsed) { + return UM.Theme.getSize("objects_menu_size_collapsed").height; + } else { + return UM.Theme.getSize("objects_menu_size").height; + } + } + Behavior on height { NumberAnimation { duration: 100 } } + + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + + property bool collapsed: false; + + SystemPalette { id: palette } + + Button { + id: collapseButton + anchors.top: parent.top + anchors.topMargin: Math.floor(UM.Theme.getSize("default_margin").height + (UM.Theme.getSize("layerview_row").height - UM.Theme.getSize("default_margin").height) / 2) + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_margin").width + + width: UM.Theme.getSize("standard_arrow").width + height: UM.Theme.getSize("standard_arrow").height + + onClicked: collapsed = !collapsed + + style: ButtonStyle + { + background: UM.RecolorImage + { + width: control.width + height: control.height + sourceSize.width: width + sourceSize.height: width + color: UM.Theme.getColor("setting_control_text") + source: collapsed ? UM.Theme.getIcon("arrow_left") : UM.Theme.getIcon("arrow_bottom") + } + label: Label{ } + } + } + + Component { + id: buildPlateDelegate + Rectangle + { + height: childrenRect.height + color: Cura.BuildPlateModel.getItem(index).buildPlateNumber == Cura.BuildPlateModel.activeBuildPlate ? palette.highlight : index % 2 ? palette.base : palette.alternateBase + width: parent.width + Label + { + id: buildPlateNameLabel + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + width: parent.width - 2 * UM.Theme.getSize("default_margin").width - 30 + text: Cura.BuildPlateModel.getItem(index) ? Cura.BuildPlateModel.getItem(index).name : ""; + color: Cura.BuildPlateModel.activeBuildPlate == index ? palette.highlightedText : palette.text + elide: Text.ElideRight + } + + MouseArea + { + anchors.fill: parent; + onClicked: + { + Cura.SceneController.setActiveBuildPlate(index); + } + } + } + } + + ScrollView + { + id: buildPlateSelection + frameVisible: true + height: UM.Theme.getSize("build_plate_selection_size").height + width: parent.width - 2 * UM.Theme.getSize("default_margin").height + style: UM.Theme.styles.scrollview + + anchors + { + top: collapseButton.bottom; + topMargin: UM.Theme.getSize("default_margin").height; + left: parent.left; + leftMargin: UM.Theme.getSize("default_margin").height; + //bottom: objectsList.top; + bottomMargin: UM.Theme.getSize("default_margin").height; + } + + Rectangle + { + parent: viewport + anchors.fill: parent + color: palette.light + } + + ListView + { + id: buildPlateListView + model: Cura.BuildPlateModel + width: parent.width + delegate: buildPlateDelegate + } + } + + + Component { + id: objectDelegate + Rectangle + { + height: childrenRect.height + color: Cura.ObjectsModel.getItem(index).isSelected ? palette.highlight : index % 2 ? palette.base : palette.alternateBase + width: parent.width + Label + { + id: nodeNameLabel + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + width: parent.width - 2 * UM.Theme.getSize("default_margin").width - 30 + text: Cura.ObjectsModel.getItem(index) ? Cura.ObjectsModel.getItem(index).name : ""; + color: Cura.ObjectsModel.getItem(index).isSelected ? palette.highlightedText : (Cura.ObjectsModel.getItem(index).isOutsideBuildArea ? palette.mid : palette.text) + elide: Text.ElideRight + } + + Label + { + id: buildPlateNumberLabel + width: 20 + anchors.left: nodeNameLabel.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.right: parent.right + text: Cura.ObjectsModel.getItem(index).buildPlateNumber != -1 ? Cura.ObjectsModel.getItem(index).buildPlateNumber + 1 : ""; + color: Cura.ObjectsModel.getItem(index).isSelected ? palette.highlightedText : palette.text + elide: Text.ElideRight + } + + MouseArea + { + anchors.fill: parent; + onClicked: + { + Cura.SceneController.changeSelection(index); + } + } + } + } + + // list all the scene nodes + ScrollView + { + id: objectsList + frameVisible: true + visible: !collapsed + width: parent.width - 2 * UM.Theme.getSize("default_margin").height + + anchors + { + top: buildPlateSelection.bottom; + topMargin: UM.Theme.getSize("default_margin").height; + left: parent.left; + leftMargin: UM.Theme.getSize("default_margin").height; + bottom: filterBuildPlateCheckbox.top; + bottomMargin: UM.Theme.getSize("default_margin").height; + } + + Rectangle + { + parent: viewport + anchors.fill: parent + color: palette.light + } + + ListView + { + id: listview + model: Cura.ObjectsModel + width: parent.width + delegate: objectDelegate + } + } + + + CheckBox + { + id: filterBuildPlateCheckbox + visible: !collapsed + checked: UM.Preferences.getValue("view/filter_current_build_plate") + onClicked: UM.Preferences.setValue("view/filter_current_build_plate", checked) + + text: catalog.i18nc("@option:check","See only current build plate"); + style: UM.Theme.styles.checkbox; + + anchors + { + left: parent.left; + topMargin: UM.Theme.getSize("default_margin").height; + bottomMargin: UM.Theme.getSize("default_margin").height; + leftMargin: UM.Theme.getSize("default_margin").height; + bottom: arrangeAllBuildPlatesButton.top; + } + } + + Button + { + id: arrangeAllBuildPlatesButton; + text: catalog.i18nc("@action:button","Arrange to all build plates"); + style: UM.Theme.styles.sidebar_action_button + height: UM.Theme.getSize("objects_menu_button").height; + tooltip: ''; + anchors + { + //top: buildPlateSelection.bottom; + topMargin: UM.Theme.getSize("default_margin").height; + left: parent.left; + leftMargin: UM.Theme.getSize("default_margin").height; + right: parent.right; + rightMargin: UM.Theme.getSize("default_margin").height; + bottom: arrangeBuildPlateButton.top; + bottomMargin: UM.Theme.getSize("default_margin").height; + } + action: Cura.Actions.arrangeAllBuildPlates; + } + + Button + { + id: arrangeBuildPlateButton; + text: catalog.i18nc("@action:button","Arrange current build plate"); + style: UM.Theme.styles.sidebar_action_button + height: UM.Theme.getSize("objects_menu_button").height; + tooltip: ''; + anchors + { + topMargin: UM.Theme.getSize("default_margin").height; + left: parent.left; + leftMargin: UM.Theme.getSize("default_margin").height; + right: parent.right; + rightMargin: UM.Theme.getSize("default_margin").height; + bottom: parent.bottom; + bottomMargin: UM.Theme.getSize("default_margin").height; + } + action: Cura.Actions.arrangeAll; + } + + +} diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index ad6c2ce050..e5ed9e46c5 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -151,7 +151,7 @@ UM.PreferencesPage 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" }) + //Finnish is disabled for being incomplete: append({ text: "Suomi", code: "fi_FI" }) append({ text: "Français", code: "fr_FR" }) append({ text: "Italiano", code: "it_IT" }) append({ text: "日本語", code: "ja_JP" }) @@ -159,9 +159,11 @@ UM.PreferencesPage append({ text: "Nederlands", code: "nl_NL" }) append({ text: "Polski", code: "pl_PL" }) append({ text: "Português do Brasil", code: "pt_BR" }) + append({ text: "Português", code: "pt_PT" }) append({ text: "Русский", code: "ru_RU" }) append({ text: "Türkçe", code: "tr_TR" }) append({ text: "简体中文", code: "zh_CN" }) + append({ text: "正體字", code: "zh_TW" }) var date_object = new Date(); if (date_object.getUTCMonth() == 8 && date_object.getUTCDate() == 19) //Only add Pirate on the 19th of September. @@ -304,7 +306,7 @@ UM.PreferencesPage text: catalog.i18nc("@option:check","Slice automatically"); } } - + Item { //: Spacer @@ -451,6 +453,34 @@ UM.PreferencesPage text: catalog.i18nc("@label","Opening and saving files") } + UM.TooltipArea { + width: childrenRect.width + height: childrenRect.height + text: catalog.i18nc("@info:tooltip","Use multi build plate functionality (EXPERIMENTAL)") + + CheckBox + { + id: useMultiBuildPlateCheckbox + text: catalog.i18nc("@option:check","Use multi build plate functionality (EXPERIMENTAL, restart)") + checked: boolCheck(UM.Preferences.getValue("cura/use_multi_build_plate")) + onCheckedChanged: UM.Preferences.setValue("cura/use_multi_build_plate", checked) + } + } + + UM.TooltipArea { + width: childrenRect.width + height: childrenRect.height + text: catalog.i18nc("@info:tooltip","Should newly loaded models be arranged on the build plate? Used in conjunction with multi build plate (EXPERIMENTAL)") + + CheckBox + { + id: arrangeOnLoadCheckbox + text: catalog.i18nc("@option:check","Arrange objects on load (EXPERIMENTAL)") + checked: boolCheck(UM.Preferences.getValue("cura/arrange_objects_on_load")) + onCheckedChanged: UM.Preferences.setValue("cura/arrange_objects_on_load", checked) + } + } + UM.TooltipArea { width: childrenRect.width height: childrenRect.height diff --git a/resources/qml/Preferences/MachinesPage.qml b/resources/qml/Preferences/MachinesPage.qml index dc978c0f7a..a8e25155e1 100644 --- a/resources/qml/Preferences/MachinesPage.qml +++ b/resources/qml/Preferences/MachinesPage.qml @@ -222,14 +222,19 @@ UM.ManagementPage } } + Component.onCompleted: { + addAdditionalComponents("machinesDetailPane") + } + Connections { - target: Printer - onAdditionalComponentsChanged: - { - if(areaId == "machinesDetailPane") { - for (var component in CuraApplication.additionalComponents["machinesDetailPane"]) { - CuraApplication.additionalComponents["machinesDetailPane"][component].parent = additionalComponentsColumn - } + target: CuraApplication + onAdditionalComponentsChanged: addAdditionalComponents + } + + function addAdditionalComponents (areaId) { + if(areaId == "machinesDetailPane") { + for (var component in CuraApplication.additionalComponents["machinesDetailPane"]) { + CuraApplication.additionalComponents["machinesDetailPane"][component].parent = additionalComponentsColumn } } } diff --git a/resources/qml/Preferences/MaterialView.qml b/resources/qml/Preferences/MaterialView.qml index 143f29c86e..311150c6b9 100644 --- a/resources/qml/Preferences/MaterialView.qml +++ b/resources/qml/Preferences/MaterialView.qml @@ -41,7 +41,7 @@ TabView Tab { - title: catalog.i18nc("@title","Information") + title: catalog.i18nc("@title", "Information") anchors.margins: UM.Theme.getSize("default_margin").width diff --git a/resources/qml/Preferences/MaterialsPage.qml b/resources/qml/Preferences/MaterialsPage.qml index 5e014faf24..81c1bd711a 100644 --- a/resources/qml/Preferences/MaterialsPage.qml +++ b/resources/qml/Preferences/MaterialsPage.qml @@ -182,6 +182,7 @@ UM.ManagementPage { Cura.MachineManager.setActiveMaterial(material_id) } + // TODO: this doesn't work because the source is a bit delayed base.objectList.currentIndex = base.getIndexById(material_id); } }, @@ -292,10 +293,16 @@ UM.ManagementPage base_file = base.currentItem.id } var guid = Cura.ContainerManager.getContainerMetaDataEntry(base.currentItem.id, "GUID") + // remove base container first, it otherwise triggers loading the base file while removing other containers + var base_containers = Cura.ContainerManager.findInstanceContainers({"GUID": guid, "id": base_file, "base_file": base_file, "type": "material"}) + for(var i in base_containers) + { + Cura.ContainerManager.removeContainer(base_containers[i]); + } var containers = Cura.ContainerManager.findInstanceContainers({"GUID": guid, "base_file": base_file, "type": "material"}) for(var i in containers) { - Cura.ContainerManager.removeContainer(containers[i]) + Cura.ContainerManager.removeContainer(containers[i]); } if(base.objectList.currentIndex > 0) { @@ -322,7 +329,6 @@ UM.ManagementPage { messageDialog.icon = StandardIcon.Information messageDialog.text = catalog.i18nc("@info:status Don't translate the XML tag !", "Successfully imported material %1").arg(fileUrl) - currentItem = base.model.getItem(base.objectList.currentIndex) } else if(result.status == "duplicate") { @@ -381,9 +387,10 @@ UM.ManagementPage { id: materialDiameterProvider - containerStackId: Cura.MachineManager.activeMachineId + containerStackId: Cura.ExtruderManager.activeExtruderStackId key: "material_diameter" watchedProperties: [ "value" ] + storeIndex: 5 } UM.I18nCatalog { id: catalog; name: "cura"; } diff --git a/resources/qml/Preferences/ProfilesPage.qml b/resources/qml/Preferences/ProfilesPage.qml index c7b6b3e933..e3ba9b23a4 100644 --- a/resources/qml/Preferences/ProfilesPage.qml +++ b/resources/qml/Preferences/ProfilesPage.qml @@ -208,7 +208,7 @@ UM.ManagementPage anchors.right: parent.right anchors.bottom: parent.bottom - currentIndex: ExtruderManager.extruderCount > 0 ? ExtruderManager.activeExtruderIndex + 1 : 0 + currentIndex: Cura.ExtruderManager.extruderCount > 0 ? Cura.ExtruderManager.activeExtruderIndex + 1 : 0 ProfileTab { diff --git a/resources/qml/PrintMonitor.qml b/resources/qml/PrintMonitor.qml index a2626e53de..5a5c160b51 100644 --- a/resources/qml/PrintMonitor.qml +++ b/resources/qml/PrintMonitor.qml @@ -87,7 +87,7 @@ Column Label //Extruder name. { - text: ExtruderManager.getExtruderName(index) != "" ? ExtruderManager.getExtruderName(index) : catalog.i18nc("@label", "Extruder") + text: Cura.ExtruderManager.getExtruderName(index) != "" ? Cura.ExtruderManager.getExtruderName(index) : catalog.i18nc("@label", "Extruder") color: UM.Theme.getColor("text") font: UM.Theme.getFont("default") anchors.left: parent.left @@ -677,6 +677,341 @@ Column watchedProperties: ["value"] } + Column + { + visible: connectedPrinter != null ? connectedPrinter.canControlManually : false + enabled: + { + if (connectedPrinter == null) + { + return false; //Can't control the printer if not connected. + } + if (!connectedPrinter.acceptsCommands) + { + return false; //Not allowed to do anything. + } + if (connectedPrinter.jobState == "printing" || connectedPrinter.jobState == "resuming" || connectedPrinter.jobState == "pausing" || connectedPrinter.jobState == "error" || connectedPrinter.jobState == "offline") + { + return false; //Printer is in a state where it can't react to manual control + } + return true; + } + + Loader + { + sourceComponent: monitorSection + property string label: catalog.i18nc("@label", "Printer control") + } + + Row + { + width: base.width - 2 * UM.Theme.getSize("default_margin").width + height: childrenRect.height + UM.Theme.getSize("default_margin").width + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + + spacing: UM.Theme.getSize("default_margin").width + + Label + { + text: catalog.i18nc("@label", "Jog Position") + color: UM.Theme.getColor("setting_control_text") + font: UM.Theme.getFont("default") + + width: Math.floor(parent.width * 0.4) - UM.Theme.getSize("default_margin").width + height: UM.Theme.getSize("setting_control").height + verticalAlignment: Text.AlignVCenter + } + + GridLayout + { + columns: 3 + rows: 4 + rowSpacing: UM.Theme.getSize("default_lining").width + columnSpacing: UM.Theme.getSize("default_lining").height + + Label + { + text: catalog.i18nc("@label", "X/Y") + color: UM.Theme.getColor("setting_control_text") + font: UM.Theme.getFont("default") + width: height + height: UM.Theme.getSize("setting_control").height + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + + Layout.row: 1 + Layout.column: 2 + Layout.preferredWidth: width + Layout.preferredHeight: height + } + + Button + { + Layout.row: 2 + Layout.column: 2 + Layout.preferredWidth: width + Layout.preferredHeight: height + iconSource: UM.Theme.getIcon("arrow_top"); + style: monitorButtonStyle + width: height + height: UM.Theme.getSize("setting_control").height + + onClicked: + { + connectedPrinter.moveHead(0, distancesRow.currentDistance, 0) + } + } + + Button + { + Layout.row: 3 + Layout.column: 1 + Layout.preferredWidth: width + Layout.preferredHeight: height + iconSource: UM.Theme.getIcon("arrow_left"); + style: monitorButtonStyle + width: height + height: UM.Theme.getSize("setting_control").height + + onClicked: + { + connectedPrinter.moveHead(-distancesRow.currentDistance, 0, 0) + } + } + + Button + { + Layout.row: 3 + Layout.column: 3 + Layout.preferredWidth: width + Layout.preferredHeight: height + iconSource: UM.Theme.getIcon("arrow_right"); + style: monitorButtonStyle + width: height + height: UM.Theme.getSize("setting_control").height + + onClicked: + { + connectedPrinter.moveHead(distancesRow.currentDistance, 0, 0) + } + } + + Button + { + Layout.row: 4 + Layout.column: 2 + Layout.preferredWidth: width + Layout.preferredHeight: height + iconSource: UM.Theme.getIcon("arrow_bottom"); + style: monitorButtonStyle + width: height + height: UM.Theme.getSize("setting_control").height + + onClicked: + { + connectedPrinter.moveHead(0, -distancesRow.currentDistance, 0) + } + } + + Button + { + Layout.row: 3 + Layout.column: 2 + Layout.preferredWidth: width + Layout.preferredHeight: height + iconSource: UM.Theme.getIcon("home"); + style: monitorButtonStyle + width: height + height: UM.Theme.getSize("setting_control").height + + onClicked: + { + connectedPrinter.homeHead() + } + } + } + + + Column + { + spacing: UM.Theme.getSize("default_lining").height + + Label + { + text: catalog.i18nc("@label", "Z") + color: UM.Theme.getColor("setting_control_text") + font: UM.Theme.getFont("default") + width: UM.Theme.getSize("section").height + height: UM.Theme.getSize("setting_control").height + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + } + + Button + { + iconSource: UM.Theme.getIcon("arrow_top"); + style: monitorButtonStyle + width: height + height: UM.Theme.getSize("setting_control").height + + onClicked: + { + connectedPrinter.moveHead(0, 0, distancesRow.currentDistance) + } + } + + Button + { + iconSource: UM.Theme.getIcon("home"); + style: monitorButtonStyle + width: height + height: UM.Theme.getSize("setting_control").height + + onClicked: + { + connectedPrinter.homeBed() + } + } + + Button + { + iconSource: UM.Theme.getIcon("arrow_bottom"); + style: monitorButtonStyle + width: height + height: UM.Theme.getSize("setting_control").height + + onClicked: + { + connectedPrinter.moveHead(0, 0, -distancesRow.currentDistance) + } + } + } + } + + Row + { + id: distancesRow + + width: base.width - 2 * UM.Theme.getSize("default_margin").width + height: childrenRect.height + UM.Theme.getSize("default_margin").width + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + + spacing: UM.Theme.getSize("default_margin").width + + property real currentDistance: 10 + + Label + { + text: catalog.i18nc("@label", "Jog Distance") + color: UM.Theme.getColor("setting_control_text") + font: UM.Theme.getFont("default") + + width: Math.floor(parent.width * 0.4) - UM.Theme.getSize("default_margin").width + height: UM.Theme.getSize("setting_control").height + verticalAlignment: Text.AlignVCenter + } + + Row + { + Repeater + { + model: distancesModel + delegate: Button + { + height: UM.Theme.getSize("setting_control").height + width: height + UM.Theme.getSize("default_margin").width + + text: model.label + exclusiveGroup: distanceGroup + checkable: true + checked: distancesRow.currentDistance == model.value + onClicked: distancesRow.currentDistance = model.value + + style: ButtonStyle { + background: Rectangle { + border.width: control.checked ? UM.Theme.getSize("default_lining").width * 2 : UM.Theme.getSize("default_lining").width + border.color: + { + if(!control.enabled) + { + return UM.Theme.getColor("action_button_disabled_border"); + } + else if (control.checked || control.pressed) + { + return UM.Theme.getColor("action_button_active_border"); + } + else if(control.hovered) + { + return UM.Theme.getColor("action_button_hovered_border"); + } + return UM.Theme.getColor("action_button_border"); + } + color: + { + if(!control.enabled) + { + return UM.Theme.getColor("action_button_disabled"); + } + else if (control.checked || control.pressed) + { + return UM.Theme.getColor("action_button_active"); + } + else if (control.hovered) + { + return UM.Theme.getColor("action_button_hovered"); + } + return UM.Theme.getColor("action_button"); + } + Behavior on color { ColorAnimation { duration: 50; } } + Label { + anchors.left: parent.left + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + anchors.leftMargin: UM.Theme.getSize("default_lining").width * 2 + anchors.rightMargin: UM.Theme.getSize("default_lining").width * 2 + color: + { + if(!control.enabled) + { + return UM.Theme.getColor("action_button_disabled_text"); + } + else if (control.checked || control.pressed) + { + return UM.Theme.getColor("action_button_active_text"); + } + else if (control.hovered) + { + return UM.Theme.getColor("action_button_hovered_text"); + } + return UM.Theme.getColor("action_button_text"); + } + font: UM.Theme.getFont("default") + text: control.text + horizontalAlignment: Text.AlignHCenter + elide: Text.ElideMiddle + } + } + label: Item { } + } + } + } + } + } + + ListModel + { + id: distancesModel + ListElement { label: "0.1"; value: 0.1 } + ListElement { label: "1"; value: 1 } + ListElement { label: "10"; value: 10 } + ListElement { label: "100"; value: 100 } + } + ExclusiveGroup { id: distanceGroup } + } + + Loader { sourceComponent: monitorSection @@ -754,4 +1089,86 @@ Column } } } -} \ No newline at end of file + + Component + { + id: monitorButtonStyle + + ButtonStyle + { + background: Rectangle + { + border.width: UM.Theme.getSize("default_lining").width + border.color: + { + if(!control.enabled) + { + return UM.Theme.getColor("action_button_disabled_border"); + } + else if(control.pressed) + { + return UM.Theme.getColor("action_button_active_border"); + } + else if(control.hovered) + { + return UM.Theme.getColor("action_button_hovered_border"); + } + return UM.Theme.getColor("action_button_border"); + } + color: + { + if(!control.enabled) + { + return UM.Theme.getColor("action_button_disabled"); + } + else if(control.pressed) + { + return UM.Theme.getColor("action_button_active"); + } + else if(control.hovered) + { + return UM.Theme.getColor("action_button_hovered"); + } + return UM.Theme.getColor("action_button"); + } + Behavior on color + { + ColorAnimation + { + duration: 50 + } + } + } + + label: Item + { + UM.RecolorImage + { + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + width: Math.floor(control.width / 2) + height: Math.floor(control.height / 2) + sourceSize.width: width + sourceSize.height: width + color: + { + if(!control.enabled) + { + return UM.Theme.getColor("action_button_disabled_text"); + } + else if(control.pressed) + { + return UM.Theme.getColor("action_button_active_text"); + } + else if(control.hovered) + { + return UM.Theme.getColor("action_button_hovered_text"); + } + return UM.Theme.getColor("action_button_text"); + } + source: control.iconSource + } + } + } + } +} diff --git a/resources/qml/SaveButton.qml b/resources/qml/SaveButton.qml index 7423fc2368..dc24cc4700 100644 --- a/resources/qml/SaveButton.qml +++ b/resources/qml/SaveButton.qml @@ -12,11 +12,11 @@ Item { id: base; UM.I18nCatalog { id: catalog; name:"cura"} - property real progress: UM.Backend.progress; - property int backendState: UM.Backend.state; + property real progress: UM.Backend.progress + property int backendState: UM.Backend.state + property bool activity: CuraApplication.platformActivity - property var backend: CuraApplication.getBackend(); - property bool activity: CuraApplication.platformActivity; + property alias buttonRowWidth: saveRow.width property string fileBaseName property string statusText: @@ -26,6 +26,10 @@ Item { return catalog.i18nc("@label:PrintjobStatus", "Please load a 3D model"); } + if (base.backendState == "undefined") { + return "" + } + switch(base.backendState) { case 1: @@ -43,6 +47,18 @@ Item { } } + function sliceOrStopSlicing() { + try { + if ([1, 5].indexOf(base.backendState) != -1) { + CuraApplication.backend.forceSlice(); + } else { + CuraApplication.backend.stopSlicing(); + } + } catch (e) { + console.log('Could not start or stop slicing', e) + } + } + Label { id: statusLabel width: parent.width - 2 * UM.Theme.getSize("sidebar_margin").width @@ -71,7 +87,7 @@ Item { height: parent.height color: UM.Theme.getColor("progressbar_control") radius: UM.Theme.getSize("progressbar_radius").width - visible: base.backendState == 2 ? true : false + visible: (base.backendState != "undefined" && base.backendState == 2) ? true : false } } @@ -84,34 +100,56 @@ Item { if (saveToButton.enabled) { saveToButton.clicked(); } + // prepare button + if (prepareButton.enabled) { + sliceOrStopSlicing(); + } } } Item { id: saveRow - width: base.width + width: { + // using childrenRect.width directly causes a binding loop, because setting the width affects the childrenRect + var children_width = UM.Theme.getSize("default_margin").width; + for (var index in children) + { + var child = children[index]; + if(child.visible) + { + children_width += child.width + child.anchors.rightMargin; + } + } + return Math.min(children_width, base.width - UM.Theme.getSize("sidebar_margin").width); + } height: saveToButton.height - anchors.top: progressBar.bottom - anchors.topMargin: UM.Theme.getSize("sidebar_margin").height - anchors.left: parent.left + anchors.bottom: parent.bottom + anchors.bottomMargin: UM.Theme.getSize("sidebar_margin").height + anchors.right: parent.right + clip: true Row { id: additionalComponentsRow anchors.top: parent.top anchors.right: saveToButton.visible ? saveToButton.left : parent.right - anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width + anchors.rightMargin: UM.Theme.getSize("default_margin").width spacing: UM.Theme.getSize("default_margin").width } + Component.onCompleted: { + saveRow.addAdditionalComponents("saveButton") + } + Connections { - target: Printer - onAdditionalComponentsChanged: - { - if(areaId == "saveButton") { - for (var component in CuraApplication.additionalComponents["saveButton"]) { - CuraApplication.additionalComponents["saveButton"][component].parent = additionalComponentsRow - } + target: CuraApplication + onAdditionalComponentsChanged: saveRow.addAdditionalComponents("saveButton") + } + + function addAdditionalComponents (areaId) { + if(areaId == "saveButton") { + for (var component in CuraApplication.additionalComponents["saveButton"]) { + CuraApplication.additionalComponents["saveButton"][component].parent = additionalComponentsRow } } } @@ -130,12 +168,10 @@ Item { Button { id: prepareButton - tooltip: UM.OutputDeviceManager.activeDeviceDescription; + tooltip: [1, 5].indexOf(base.backendState) != -1 ? catalog.i18nc("@info:tooltip","Slice current printjob") : catalog.i18nc("@info:tooltip","Cancel slicing process") // 1 = not started, 2 = Processing - enabled: (base.backendState == 1 || base.backendState == 2) && base.activity == true - visible: { - return !autoSlice && (base.backendState == 1 || base.backendState == 2) && base.activity == true; - } + enabled: base.backendState != "undefined" && (base.backendState == 1 || base.backendState == 2) && base.activity == true + visible: base.backendState != "undefined" && !autoSlice && (base.backendState == 1 || base.backendState == 2) && base.activity == true property bool autoSlice height: UM.Theme.getSize("save_button_save_to_button").height @@ -144,14 +180,10 @@ Item { anchors.rightMargin: UM.Theme.getSize("sidebar_margin").width // 1 = not started, 5 = disabled - text: [1, 5].indexOf(UM.Backend.state) != -1 ? catalog.i18nc("@label:Printjob", "Prepare") : catalog.i18nc("@label:Printjob", "Cancel") + text: [1, 5].indexOf(base.backendState) != -1 ? catalog.i18nc("@label:Printjob", "Prepare") : catalog.i18nc("@label:Printjob", "Cancel") onClicked: { - if ([1, 5].indexOf(UM.Backend.state) != -1) { - backend.forceSlice(); - } else { - backend.stopSlicing(); - } + sliceOrStopSlicing(); } style: ButtonStyle { @@ -212,10 +244,8 @@ Item { tooltip: UM.OutputDeviceManager.activeDeviceDescription; // 3 = done, 5 = disabled - enabled: (base.backendState == 3 || base.backendState == 5) && base.activity == true - visible: { - return autoSlice || ((base.backendState == 3 || base.backendState == 5) && base.activity == true); - } + enabled: base.backendState != "undefined" && (base.backendState == 3 || base.backendState == 5) && base.activity == true + visible: base.backendState != "undefined" && autoSlice || ((base.backendState == 3 || base.backendState == 5) && base.activity == true) property bool autoSlice height: UM.Theme.getSize("save_button_save_to_button").height @@ -292,8 +322,8 @@ Item { width: UM.Theme.getSize("save_button_save_to_button").height height: UM.Theme.getSize("save_button_save_to_button").height // 3 = Done, 5 = Disabled - enabled: (base.backendState == 3 || base.backendState == 5) && base.activity == true - visible: (devicesModel.deviceCount > 1) && (base.backendState == 3 || base.backendState == 5) && base.activity == true + enabled: base.backendState != "undefined" && (base.backendState == 3 || base.backendState == 5) && base.activity == true + visible: base.backendState != "undefined" && (devicesModel.deviceCount > 1) && (base.backendState == 3 || base.backendState == 5) && base.activity == true style: ButtonStyle { diff --git a/resources/qml/Settings/SettingCategory.qml b/resources/qml/Settings/SettingCategory.qml index 53f8f89e15..3ccf668699 100644 --- a/resources/qml/Settings/SettingCategory.qml +++ b/resources/qml/Settings/SettingCategory.qml @@ -1,5 +1,5 @@ -// Copyright (c) 2015 Ultimaker B.V. -// Uranium is released under the terms of the LGPLv3 or higher. +// Copyright (c) 2017 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 import QtQuick.Controls 1.1 @@ -31,13 +31,17 @@ Button { onClicked: { - forceActiveFocus(); if(definition.expanded) { settingDefinitionsModel.collapse(definition.key); - } else { + } + else + { settingDefinitionsModel.expandAll(definition.key); } + //Set focus so that tab navigation continues from this point on. + //NB: This must be set AFTER collapsing/expanding the category so that the scroll position is correct. + forceActiveFocus(); } onActiveFocusChanged: { diff --git a/resources/qml/Settings/SettingItem.qml b/resources/qml/Settings/SettingItem.qml index 2bf2c17273..4a89090984 100644 --- a/resources/qml/Settings/SettingItem.qml +++ b/resources/qml/Settings/SettingItem.qml @@ -1,5 +1,5 @@ -// Copyright (c) 2015 Ultimaker B.V. -// Uranium is released under the terms of the LGPLv3 or higher. +// Copyright (c) 2017 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.1 import QtQuick.Layouts 1.1 @@ -14,9 +14,9 @@ import "." Item { id: base; - height: UM.Theme.getSize("section").height; + height: UM.Theme.getSize("section").height - property alias contents: controlContainer.children; + property alias contents: controlContainer.children property alias hovered: mouse.containsMouse property var showRevertButton: true @@ -154,10 +154,10 @@ Item { onEntered: { hoverTimer.stop(); - var tooltipText = catalog.i18nc("@label", "This setting is always shared between all extruders. Changing it here will change the value for all extruders") + "."; + var tooltipText = catalog.i18nc("@label", "This setting is always shared between all extruders. Changing it here will change the value for all extruders."); if ((resolve != "None") && (stackLevel != 0)) { // We come here if a setting has a resolve and the setting is not manually edited. - tooltipText += " " + catalog.i18nc("@label", "The value is resolved from per-extruder values ") + "[" + ExtruderManager.getInstanceExtruderValues(definition.key) + "]."; + tooltipText += " " + catalog.i18nc("@label", "The value is resolved from per-extruder values ") + "[" + Cura.ExtruderManager.getInstanceExtruderValues(definition.key) + "]."; } base.showTooltip(tooltipText); } @@ -179,8 +179,13 @@ Item { iconSource: UM.Theme.getIcon("reset") onClicked: { - revertButton.focus = true; - Cura.MachineManager.clearUserSettingAllCurrentStacks(propertyProvider.key); + revertButton.focus = true + + if (externalResetHandler) { + externalResetHandler(propertyProvider.key) + } else { + Cura.MachineManager.clearUserSettingAllCurrentStacks(propertyProvider.key) + } } onEntered: { hoverTimer.stop(); base.showTooltip(catalog.i18nc("@label", "This setting has a value that is different from the profile.\n\nClick to restore the value of the profile.")) } diff --git a/resources/qml/Settings/SettingTextField.qml b/resources/qml/Settings/SettingTextField.qml index 7c2317af63..8a51f2baff 100644 --- a/resources/qml/Settings/SettingTextField.qml +++ b/resources/qml/Settings/SettingTextField.qml @@ -1,5 +1,5 @@ -// Copyright (c) 2015 Ultimaker B.V. -// Uranium is released under the terms of the LGPLv3 or higher. +// Copyright (c) 2017 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 import QtQuick.Controls 1.2 @@ -11,6 +11,14 @@ SettingItem id: base property var focusItem: input + property string textBeforeEdit + property bool textHasChanged + onFocusReceived: + { + textHasChanged = false; + textBeforeEdit = focusItem.text; + } + contents: Rectangle { id: control @@ -100,6 +108,7 @@ SettingItem left: parent.left leftMargin: UM.Theme.getSize("setting_unit_margin").width right: parent.right + rightMargin: UM.Theme.getSize("setting_unit_margin").width verticalCenter: parent.verticalCenter } renderType: Text.NativeRendering @@ -115,12 +124,22 @@ SettingItem Keys.onReleased: { - propertyProvider.setPropertyValue("value", text) + if (text != textBeforeEdit) + { + textHasChanged = true; + } + if (textHasChanged) + { + propertyProvider.setPropertyValue("value", text) + } } onEditingFinished: { - propertyProvider.setPropertyValue("value", text) + if (textHasChanged) + { + propertyProvider.setPropertyValue("value", text) + } } onActiveFocusChanged: @@ -136,7 +155,8 @@ SettingItem selectByMouse: true; - maximumLength: (definition.type == "[int]") ? 20 : (definition.type == "str") ? -1 : 10; + maximumLength: (definition.type == "str" || definition.type == "[int]") ? -1 : 10; + clip: true; //Hide any text that exceeds the width of the text box. validator: RegExpValidator { regExp: (definition.type == "[int]") ? /^\[?(\s*-?[0-9]{0,9}\s*,)*(\s*-?[0-9]{0,9})\s*\]?$/ : (definition.type == "int") ? /^-?[0-9]{0,10}$/ : (definition.type == "float") ? /^-?[0-9]{0,9}[.,]?[0-9]{0,10}$/ : /^.*$/ } // definition.type property from parent loader used to disallow fractional number entry diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml index 7c44f01c3c..0fcedcdc4f 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -52,27 +52,34 @@ Item { id: globalProfileSelection - text: { - var result = Cura.MachineManager.activeQualityName; - if (Cura.MachineManager.activeQualityLayerHeight > 0) { - result += " "; - result += " - "; - result += Cura.MachineManager.activeQualityLayerHeight + "mm"; - result += ""; - } - return result; - } + text: generateActiveQualityText() enabled: !header.currentExtruderVisible || header.currentExtruderIndex > -1 - width: Math.floor(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; + activeFocusOnPress: true menu: ProfileMenu { } + function generateActiveQualityText () { + var result = catalog.i18nc("@", "No Profile Available") // default text + + if (Cura.MachineManager.isActiveQualitySupported ) { + result = Cura.MachineManager.activeQualityName + + if (Cura.MachineManager.activeQualityLayerHeight > 0) { + result += " " + result += " - " + result += Cura.MachineManager.activeQualityLayerHeight + "mm" + result += "" + } + } + + return result + } + UM.SimpleButton { id: customisedSettings @@ -329,7 +336,7 @@ Item Behavior on opacity { NumberAnimation { duration: 100 } } enabled: { - if(!ExtruderManager.activeExtruderStackId && machineExtruderCount.properties.value > 1) + if (!Cura.ExtruderManager.activeExtruderStackId && machineExtruderCount.properties.value > 1) { // disable all controls on the global tab, except categories return model.type == "category" @@ -341,6 +348,7 @@ Item property var settingDefinitionsModel: definitionsModel property var propertyProvider: provider property var globalPropertyProvider: inheritStackProvider + property var externalResetHandler: false //Qt5.4.2 and earlier has a bug where this causes a crash: https://bugreports.qt.io/browse/QTBUG-35989 //In addition, while it works for 5.5 and higher, the ordering of the actual combo box drop down changes, @@ -391,7 +399,7 @@ Item // machine gets changed. var activeMachineId = Cura.MachineManager.activeMachineId; - if(!model.settable_per_extruder || machineExtruderCount.properties.value == 1) + if(!model.settable_per_extruder) { //Not settable per extruder or there only is global, so we must pick global. return activeMachineId; @@ -399,12 +407,12 @@ Item if(inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0) { //We have limit_to_extruder, so pick that stack. - return ExtruderManager.extruderIds[String(inheritStackProvider.properties.limit_to_extruder)]; + return Cura.ExtruderManager.extruderIds[String(inheritStackProvider.properties.limit_to_extruder)]; } - if(ExtruderManager.activeExtruderStackId) + if(Cura.ExtruderManager.activeExtruderStackId) { //We're on an extruder tab. Pick the current extruder. - return ExtruderManager.activeExtruderStackId; + return Cura.ExtruderManager.activeExtruderStackId; } //No extruder tab is selected. Pick the global stack. Shouldn't happen any more since we removed the global tab. return activeMachineId; diff --git a/resources/qml/Sidebar.qml b/resources/qml/Sidebar.qml index 403c18a4ff..c18bc072a3 100644 --- a/resources/qml/Sidebar.qml +++ b/resources/qml/Sidebar.qml @@ -22,14 +22,14 @@ Rectangle property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands property var connectedPrinter: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null - property int backendState: UM.Backend.state - property bool monitoringPrint: false + property bool monitoringPrint: UM.Controller.activeStage.stageId == "MonitorStage" property variant printDuration: PrintInformation.currentPrintTime property variant printMaterialLengths: PrintInformation.materialLengths property variant printMaterialWeights: PrintInformation.materialWeights property variant printMaterialCosts: PrintInformation.materialCosts + property variant printMaterialNames: PrintInformation.materialNames color: UM.Theme.getColor("sidebar") UM.I18nCatalog { id: catalog; name:"cura"} @@ -86,10 +86,19 @@ Rectangle } } + MachineSelection { + id: machineSelection + width: base.width + height: UM.Theme.getSize("sidebar_header").height + anchors.top: base.top + anchors.right: parent.right + } + SidebarHeader { id: header width: parent.width - visible: machineExtruderCount.properties.value > 1 || Cura.MachineManager.hasMaterials || Cura.MachineManager.hasVariants + visible: (machineExtruderCount.properties.value > 1 || Cura.MachineManager.hasMaterials || Cura.MachineManager.hasVariants) && !monitoringPrint + anchors.top: machineSelection.bottom onShowTooltip: base.showTooltip(item, location, text) onHideTooltip: base.hideTooltip() @@ -262,7 +271,7 @@ Rectangle { id: controlItem anchors.bottom: footerSeparator.top - anchors.top: headerSeparator.bottom + anchors.top: monitoringPrint ? machineSelection.bottom : headerSeparator.bottom anchors.left: base.left anchors.right: base.right sourceComponent: @@ -281,7 +290,7 @@ Rectangle Loader { anchors.bottom: footerSeparator.top - anchors.top: headerSeparator.bottom + anchors.top: monitoringPrint ? machineSelection.bottom : headerSeparator.bottom anchors.left: base.left anchors.right: base.right source: @@ -313,51 +322,56 @@ Rectangle anchors.bottomMargin: Math.floor(UM.Theme.getSize("sidebar_margin").height * 2 + UM.Theme.getSize("progressbar").height + UM.Theme.getFont("default_bold").pixelSize) } - Rectangle + Item { id: printSpecs anchors.left: parent.left anchors.bottom: parent.bottom anchors.leftMargin: UM.Theme.getSize("sidebar_margin").width anchors.bottomMargin: UM.Theme.getSize("sidebar_margin").height - height: timeDetails.height + timeSpecDescription.height + lengthSpec.height + height: timeDetails.height + costSpec.height + width: base.width - (saveButton.buttonRowWidth + UM.Theme.getSize("sidebar_margin").width) visible: !monitoringPrint + clip: true Label { id: timeDetails anchors.left: parent.left - anchors.bottom: timeSpecDescription.top + anchors.bottom: costSpec.top font: UM.Theme.getFont("large") color: UM.Theme.getColor("text_subtext") text: (!base.printDuration || !base.printDuration.valid) ? catalog.i18nc("@label Hours and minutes", "00h 00min") : base.printDuration.getDisplayString(UM.DurationFormat.Short) MouseArea { - id: infillMouseArea + id: timeDetailsMouseArea anchors.fill: parent hoverEnabled: true - //enabled: base.settingsEnabled onEntered: { - if(base.printDuration.valid && !base.printDuration.isTotalDurationZero) { // All the time information for the different features is achieved - var print_time = PrintInformation.getFeaturePrintTimes() + var print_time = PrintInformation.getFeaturePrintTimes(); + var total_seconds = parseInt(base.printDuration.getDisplayString(UM.DurationFormat.Seconds)) // A message is created and displayed when the user hover the time label - var content = catalog.i18nc("@tooltip", "Time information") + var tooltip_html = "%1
    ".arg(catalog.i18nc("@tooltip", "Time specification")); for(var feature in print_time) { if(!print_time[feature].isTotalDurationZero) { - content += "
    " + feature + ": " + print_time[feature].getDisplayString(UM.DurationFormat.Short) + tooltip_html += "" + + "".arg(print_time[feature].getDisplayString(UM.DurationFormat.ISO8601).slice(0,-3)) + + "".arg(Math.round(100 * parseInt(print_time[feature].getDisplayString(UM.DurationFormat.Seconds)) / total_seconds)) + + ""; } } + tooltip_html += "
    " + feature + ":  %1  %1%
    "; - 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), tooltip_html); } } onExited: @@ -369,20 +383,96 @@ Rectangle Label { - id: timeSpecDescription - anchors.left: parent.left - anchors.bottom: lengthSpec.top - font: UM.Theme.getFont("very_small") - color: UM.Theme.getColor("text_subtext") - text: catalog.i18nc("@description", "Print time") - } - Label - { - id: lengthSpec + function formatRow(items) + { + var row_html = ""; + for(var item = 0; item < items.length; item++) + { + if (item == 0) + { + row_html += "%1".arg(items[item]); + } + else + { + row_html += "  %1".arg(items[item]); + } + } + row_html += ""; + return row_html; + } + + function getSpecsData() + { + var lengths = []; + var total_length = 0; + var weights = []; + var total_weight = 0; + var costs = []; + var total_cost = 0; + var some_costs_known = false; + var names = []; + if(base.printMaterialLengths) + { + for(var index = 0; index < base.printMaterialLengths.length; index++) + { + if(base.printMaterialLengths[index] > 0) + { + names.push(base.printMaterialNames[index]); + lengths.push(base.printMaterialLengths[index].toFixed(2)); + weights.push(String(Math.floor(base.printMaterialWeights[index]))); + var cost = base.printMaterialCosts[index] == undefined ? 0 : base.printMaterialCosts[index].toFixed(2); + costs.push(cost); + if(cost > 0) + { + some_costs_known = true; + } + + total_length += base.printMaterialLengths[index]; + total_weight += base.printMaterialWeights[index]; + total_cost += base.printMaterialCosts[index]; + } + } + } + if(lengths.length == 0) + { + lengths = ["0.00"]; + weights = ["0"]; + costs = ["0.00"]; + } + + var tooltip_html = "%1
    ".arg(catalog.i18nc("@label", "Cost specification")); + for(var index = 0; index < lengths.length; index++) + { + tooltip_html += formatRow([ + "%1:".arg(names[index]), + catalog.i18nc("@label m for meter", "%1m").arg(lengths[index]), + catalog.i18nc("@label g for grams", "%1g").arg(weights[index]), + "%1 %2".arg(UM.Preferences.getValue("cura/currency")).arg(costs[index]), + ]); + } + if(lengths.length > 1) + { + tooltip_html += formatRow([ + catalog.i18nc("@label", "Total:"), + catalog.i18nc("@label m for meter", "%1m").arg(total_length.toFixed(2)), + catalog.i18nc("@label g for grams", "%1g").arg(Math.round(total_weight)), + "%1 %2".arg(UM.Preferences.getValue("cura/currency")).arg(total_cost.toFixed(2)), + ]); + } + tooltip_html += "
    "; + tooltipText = tooltip_html; + + return tooltipText + } + + id: costSpec anchors.left: parent.left anchors.bottom: parent.bottom font: UM.Theme.getFont("very_small") color: UM.Theme.getColor("text_subtext") + elide: Text.ElideMiddle + width: parent.width + property string tooltipText text: { var lengths = []; @@ -421,6 +511,27 @@ Rectangle return catalog.i18nc("@label Print estimates: m for meters, g for grams", "%1m / ~ %2g").arg(lengths.join(" + ")).arg(weights.join(" + ")); } } + MouseArea + { + id: costSpecMouseArea + anchors.fill: parent + hoverEnabled: true + + onEntered: + { + + if(base.printDuration.valid && !base.printDuration.isTotalDurationZero) + { + var show_data = costSpec.getSpecsData() + + base.showTooltip(parent, Qt.point(-UM.Theme.getSize("sidebar_margin").width, 0), show_data); + } + } + onExited: + { + base.hideTooltip(); + } + } } } @@ -446,7 +557,6 @@ Rectangle visible: monitoringPrint } - SidebarTooltip { id: tooltip; diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index f3887e2885..3e1e85824a 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -14,7 +14,7 @@ Column { id: base; - property int currentExtruderIndex: ExtruderManager.activeExtruderIndex; + property int currentExtruderIndex: Cura.ExtruderManager.activeExtruderIndex; property bool currentExtruderVisible: extrudersList.visible; spacing: Math.floor(UM.Theme.getSize("sidebar_margin").width * 0.9) @@ -34,6 +34,7 @@ Column width: height } + // Extruder Row Item { id: extruderSelectionRow @@ -72,7 +73,7 @@ Column orientation: ListView.Horizontal - model: Cura.ExtrudersModel { id: extrudersModel; addGlobal: false } + model: Cura.ExtrudersModel { id: extrudersModel; } Connections { @@ -93,7 +94,7 @@ Column onClicked: { forceActiveFocus() // Changing focus applies the currently-being-typed values so it can change the displayed setting values. - ExtruderManager.setActiveExtruderIndex(index); + Cura.ExtruderManager.setActiveExtruderIndex(index); } style: ButtonStyle @@ -185,6 +186,8 @@ Column // Only draw the filling colour of the material inside the SVG border. Rectangle { + id: materialColorCircle + anchors { right: parent.right @@ -245,35 +248,29 @@ Column color: UM.Theme.getColor("text"); } - ToolButton { + ToolButton + { id: materialSelection + text: Cura.MachineManager.activeMaterialName tooltip: Cura.MachineManager.activeMaterialName visible: Cura.MachineManager.hasMaterials - property var valueError: - { - var data = Cura.ContainerManager.getContainerMetaDataEntry(Cura.MachineManager.activeMaterialId, "compatible") - if(data == "False") - { - return true - } - else - { - return false - } - - } - property var valueWarning: ! Cura.MachineManager.isActiveQualitySupported - enabled: !extrudersList.visible || base.currentExtruderIndex > -1 - height: UM.Theme.getSize("setting_control").height width: parent.width * 0.7 + UM.Theme.getSize("sidebar_margin").width anchors.right: parent.right style: UM.Theme.styles.sidebar_header_button activeFocusOnPress: true; + menu: MaterialMenu { + extruderIndex: base.currentExtruderIndex + } - menu: MaterialMenu { extruderIndex: base.currentExtruderIndex } + property var valueError: !isMaterialSupported() + property var valueWarning: ! Cura.MachineManager.isActiveQualitySupported + + function isMaterialSupported () { + return Cura.ContainerManager.getContainerMetaDataEntry(Cura.MachineManager.activeMaterialId, "compatible") == "True" + } } } @@ -352,7 +349,7 @@ Column Label { id: materialInfoLabel wrapMode: Text.WordWrap - text: catalog.i18nc("@label", "Check material compatibility") + text: catalog.i18nc("@label", "Check compatibility") font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") linkColor: UM.Theme.getColor("text_link") diff --git a/resources/qml/SidebarSimple.qml b/resources/qml/SidebarSimple.qml index 65a3d612dc..7aca25160a 100644 --- a/resources/qml/SidebarSimple.qml +++ b/resources/qml/SidebarSimple.qml @@ -19,7 +19,7 @@ Item property Action configureSettings; property variant minimumPrintTime: PrintInformation.minimumPrintTime; property variant maximumPrintTime: PrintInformation.maximumPrintTime; - property bool settingsEnabled: ExtruderManager.activeExtruderStackId || machineExtruderCount.properties.value == 1 + property bool settingsEnabled: Cura.ExtruderManager.activeExtruderStackId || machineExtruderCount.properties.value == 1 Component.onCompleted: PrintInformation.enabled = true Component.onDestruction: PrintInformation.enabled = false @@ -303,13 +303,31 @@ Item // only change if an active machine is set and the slider is visible at all. if (Cura.MachineManager.activeMachine != null && visible) { // prevent updating during view initializing. Trigger only if the value changed by user - if (qualitySlider.value != qualityModel.qualitySliderActiveIndex) { + if (qualitySlider.value != qualityModel.qualitySliderActiveIndex && qualityModel.qualitySliderActiveIndex != -1) { // start updating with short delay qualitySliderChangeTimer.start() } } } } + + MouseArea + { + id: speedSliderMouseArea + anchors.fill: parent + hoverEnabled: true + enabled: Cura.SimpleModeSettingsManager.isProfileUserCreated + + onEntered: + { + var content = catalog.i18nc("@tooltip","A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab") + base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("sidebar_margin").width, customisedSettings.height), content) + } + onExited: + { + base.hideTooltip(); + } + } } Label @@ -322,6 +340,8 @@ Item text: catalog.i18nc("@label", "Print Speed") font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") + width: parseInt(UM.Theme.getSize("sidebar").width * 0.35) + elide: Text.ElideRight } Label @@ -350,7 +370,7 @@ Item { id: customisedSettings - visible: Cura.SimpleModeSettingsManager.isProfileCustomized + visible: Cura.SimpleModeSettingsManager.isProfileCustomized || Cura.SimpleModeSettingsManager.isProfileUserCreated height: speedSlider.height * 0.8 width: speedSlider.height * 0.8 @@ -363,7 +383,18 @@ Item onClicked: { - discardOrKeepProfileChangesDialog.show() + // if the current profile is user-created, switch to a built-in quality + if (Cura.SimpleModeSettingsManager.isProfileUserCreated) + { + if (Cura.ProfilesModel.rowCount() > 0) + { + Cura.MachineManager.setActiveQuality(Cura.ProfilesModel.getItem(0).id) + } + } + if (Cura.SimpleModeSettingsManager.isProfileCustomized) + { + discardOrKeepProfileChangesDialog.show() + } } onEntered: { @@ -374,8 +405,6 @@ Item } } - - // // Infill // @@ -539,18 +568,20 @@ Item model: infillModel anchors.fill: parent - property int activeIndex: { + function 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 + if (infillModelItem != "undefined" + && density >= infillModelItem.percentageMin && density <= infillModelItem.percentageMax && steps >= infillModelItem.stepsMin - && steps <= infillModelItem.stepsMax){ - return i - } + && steps <= infillModelItem.stepsMax + ){ + return i + } } return -1 } @@ -558,7 +589,7 @@ Item Rectangle { anchors.fill: parent - visible: infillIconList.activeIndex == index + visible: infillIconList.activeIndex() == index border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("quality_slider_unavailable") diff --git a/resources/qml/SidebarTooltip.qml b/resources/qml/SidebarTooltip.qml index 60d01dd6f6..07b95777b5 100644 --- a/resources/qml/SidebarTooltip.qml +++ b/resources/qml/SidebarTooltip.qml @@ -54,6 +54,7 @@ UM.PointingRectangle { rightMargin: UM.Theme.getSize("tooltip_margins").width; } wrapMode: Text.Wrap; + textFormat: Text.RichText font: UM.Theme.getFont("default"); color: UM.Theme.getColor("tooltip_text"); } diff --git a/resources/qml/Topbar.qml b/resources/qml/Topbar.qml index 5dacfc72ea..e3dfb85c49 100644 --- a/resources/qml/Topbar.qml +++ b/resources/qml/Topbar.qml @@ -6,7 +6,7 @@ import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.1 import QtQuick.Layouts 1.1 -import UM 1.2 as UM +import UM 1.4 as UM import Cura 1.0 as Cura import "Menus" @@ -16,24 +16,28 @@ Rectangle anchors.left: parent.left anchors.right: parent.right height: UM.Theme.getSize("sidebar_header").height - color: base.monitoringPrint ? UM.Theme.getColor("topbar_background_color_monitoring") : UM.Theme.getColor("topbar_background_color") + color: UM.Controller.activeStage.stageId == "MonitorStage" ? UM.Theme.getColor("topbar_background_color_monitoring") : UM.Theme.getColor("topbar_background_color") property bool printerConnected: Cura.MachineManager.printerOutputDevices.length != 0 property bool printerAcceptsCommands: printerConnected && Cura.MachineManager.printerOutputDevices[0].acceptsCommands - property bool monitoringPrint: false - // outgoing signal - signal startMonitoringPrint() - signal stopMonitoringPrint() + property int rightMargin: UM.Theme.getSize("sidebar").width + UM.Theme.getSize("default_margin").width; + property int allItemsWidth: 0; - // update monitoring status when event was triggered outside topbar - Component.onCompleted: { - startMonitoringPrint.connect(function () { - base.monitoringPrint = true - }) - stopMonitoringPrint.connect(function () { - base.monitoringPrint = false - }) + function updateMarginsAndSizes() { + if (UM.Preferences.getValue("cura/sidebar_collapsed")) + { + rightMargin = UM.Theme.getSize("default_margin").width; + } + else + { + rightMargin = UM.Theme.getSize("sidebar").width + UM.Theme.getSize("default_margin").width; + } + allItemsWidth = ( + logo.width + UM.Theme.getSize("topbar_logo_right_margin").width + + UM.Theme.getSize("topbar_logo_right_margin").width + stagesMenuContainer.width + + UM.Theme.getSize("default_margin").width + viewModeButton.width + + rightMargin); } UM.I18nCatalog @@ -59,163 +63,101 @@ Rectangle Row { + id: stagesMenuContainer anchors.left: logo.right 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 - Button + // The topbar is dynamically filled with all available stages + Repeater { - id: showSettings - height: UM.Theme.getSize("sidebar_header").height - text: catalog.i18nc("@title:tab", "Prepare") - checkable: true - checked: isChecked() - exclusiveGroup: sidebarHeaderBarGroup - style: UM.Theme.styles.topbar_header_tab + id: stagesMenu - // 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) - } + model: UM.StageModel{} - function isChecked () { - return !base.monitoringPrint - } - - property color overlayColor: "transparent" - property string overlayIconSource: "" - } - - Button - { - id: showMonitor - width: UM.Theme.getSize("topbar_button").width - height: UM.Theme.getSize("sidebar_header").height - text: catalog.i18nc("@title:tab", "Monitor") - checkable: true - checked: isChecked() - 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) - } - - function isChecked () { - return base.monitoringPrint - } - - property string iconSource: + delegate: Button { - if (!printerConnected) - { - return UM.Theme.getIcon("tab_status_unknown"); - } - else if (!printerAcceptsCommands) - { - return UM.Theme.getIcon("tab_status_unknown"); - } + text: model.name + checkable: true + checked: model.active + exclusiveGroup: topbarMenuGroup + style: (model.stage.iconSource != "") ? UM.Theme.styles.topbar_header_tab_no_overlay : UM.Theme.styles.topbar_header_tab + height: UM.Theme.getSize("sidebar_header").height + onClicked: UM.Controller.setActiveStage(model.id) + iconSource: model.stage.iconSource - 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 "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") - case "paused": - return UM.Theme.getIcon("tab_status_paused") - case "error": - return UM.Theme.getIcon("tab_status_stopped") - default: - return UM.Theme.getIcon("tab_status_unknown") - } + property color overlayColor: "transparent" + property string overlayIconSource: "" } } - ExclusiveGroup { id: sidebarHeaderBarGroup } + ExclusiveGroup { id: topbarMenuGroup } } - ToolButton + // View orientation Item + Row { - id: machineSelection - text: Cura.MachineManager.activeMachineName + id: viewOrientationControl + height: 30 + spacing: 2 + visible: UM.Controller.activeStage.stageId != "MonitorStage" - width: UM.Theme.getSize("sidebar").width - height: UM.Theme.getSize("sidebar_header").height - tooltip: Cura.MachineManager.activeMachineName - - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - style: ButtonStyle + anchors { - background: Rectangle - { - color: - { - if(control.pressed) - { - return UM.Theme.getColor("sidebar_header_active"); - } - else if(control.hovered) - { - return UM.Theme.getColor("sidebar_header_hover"); - } - else - { - return UM.Theme.getColor("sidebar_header_bar"); - } - } - Behavior on color { ColorAnimation { duration: 50; } } - - UM.RecolorImage - { - id: downArrow - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("default_margin").width - width: UM.Theme.getSize("standard_arrow").width - height: UM.Theme.getSize("standard_arrow").height - sourceSize.width: width - sourceSize.height: width - color: UM.Theme.getColor("text_emphasis") - source: UM.Theme.getIcon("arrow_bottom") - } - Label - { - id: sidebarComboBoxLabel - color: UM.Theme.getColor("sidebar_header_text_active") - text: control.text; - elide: Text.ElideRight; - anchors.left: parent.left; - anchors.leftMargin: UM.Theme.getSize("default_margin").width * 2 - anchors.right: downArrow.left; - anchors.rightMargin: control.rightMargin; - anchors.verticalCenter: parent.verticalCenter; - font: UM.Theme.getFont("large") - } - } - label: Label {} + verticalCenter: base.verticalCenter + right: viewModeButton.left + rightMargin: UM.Theme.getSize("default_margin").width } - menu: PrinterMenu { } + // #1 3d view + Button + { + iconSource: UM.Theme.getIcon("view_3d") + style: UM.Theme.styles.small_tool_button + anchors.verticalCenter: viewOrientationControl.verticalCenter + onClicked:UM.Controller.rotateView("3d", 0) + visible: base.width - allItemsWidth - 4 * this.width > 0 + } + + // #2 Front view + Button + { + iconSource: UM.Theme.getIcon("view_front") + style: UM.Theme.styles.small_tool_button + anchors.verticalCenter: viewOrientationControl.verticalCenter + onClicked: UM.Controller.rotateView("home", 0); + visible: base.width - allItemsWidth - 3 * this.width > 0 + } + + // #3 Top view + Button + { + iconSource: UM.Theme.getIcon("view_top") + style: UM.Theme.styles.small_tool_button + anchors.verticalCenter: viewOrientationControl.verticalCenter + onClicked: UM.Controller.rotateView("y", 90) + visible: base.width - allItemsWidth - 2 * this.width > 0 + } + + // #4 Left view + Button + { + iconSource: UM.Theme.getIcon("view_left") + style: UM.Theme.styles.small_tool_button + anchors.verticalCenter: viewOrientationControl.verticalCenter + onClicked: UM.Controller.rotateView("x", 90) + visible: base.width - allItemsWidth - 1 * this.width > 0 + } + + // #5 Left view + Button + { + iconSource: UM.Theme.getIcon("view_right") + style: UM.Theme.styles.small_tool_button + anchors.verticalCenter: viewOrientationControl.verticalCenter + onClicked: UM.Controller.rotateView("x", -90) + visible: base.width - allItemsWidth > 0 + } } ComboBox @@ -225,11 +167,11 @@ Rectangle anchors { verticalCenter: parent.verticalCenter right: parent.right - rightMargin: UM.Theme.getSize("sidebar").width + UM.Theme.getSize("default_margin").width + rightMargin: rightMargin } style: UM.Theme.styles.combobox - visible: !base.monitoringPrint + visible: UM.Controller.activeStage.stageId != "MonitorStage" model: UM.ViewModel { } textRole: "name" @@ -285,4 +227,16 @@ Rectangle source: UM.ActiveView.valid ? UM.ActiveView.activeViewPanel : ""; } + // Expand or collapse sidebar + Connections + { + target: Cura.Actions.expandSidebar + onTriggered: updateMarginsAndSizes() + } + + Component.onCompleted: + { + updateMarginsAndSizes(); + } + } diff --git a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg index 6be4578649..32550d86a5 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 = -1 quality_type = normal -setting_version = 3 +setting_version = 4 [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 d3df991d53..2007785719 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 = 3 +setting_version = 4 [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 326e35e251..dba0a0460f 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 = 3 +setting_version = 4 [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 140a59db3b..11892a6223 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 = -1 quality_type = normal -setting_version = 3 +setting_version = 4 [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 dfa265d360..852efe699e 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 = 3 +setting_version = 4 [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 81fbf2a42d..244d544c80 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 = 3 +setting_version = 4 [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 b8d8f019cd..a2d802a3ba 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 = -1 quality_type = normal -setting_version = 3 +setting_version = 4 [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 2cffe3ce8a..7ee8c35133 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 = 3 +setting_version = 4 [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 f1b6237e07..6c40914566 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 = 3 +setting_version = 4 [values] layer_height = 0.2 diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg new file mode 100644 index 0000000000..ee77117a6b --- /dev/null +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg @@ -0,0 +1,60 @@ +[general] +version = 2 +name = Draft +definition = anycubic_i3_mega + +[metadata] +type = quality +quality_type = draft +weight = 0 +setting_version = 4 + +[values] +acceleration_enabled = True +acceleration_print = 2000 +acceleration_travel = 3500 +adhesion_type = skirt +brim_width = 4.0 +cool_fan_full_at_height = 0.5 +cool_fan_speed = 100 +cool_fan_speed_0 = 100 +infill_overlap = 15 +infill_pattern = zigzag +infill_sparse_density = 25 +initial_layer_line_width_factor = 140 +jerk_enabled = True +jerk_print = 13 +jerk_travel = 13 +layer_height = 0.4 +layer_height_0 = 0.4 +material_bed_temperature = 60 +material_diameter = 1.75 +material_print_temperature = 200 +material_print_temperature_layer_0 = 0 +retract_at_layer_change = False +retraction_amount = 7 +retraction_hop = 0.075 +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_min_travel = 1.5 +retraction_speed = 40 +skirt_brim_speed = 40 +skirt_gap = 5 +skirt_line_count = 3 +speed_infill = 60 +speed_print = 60 +speed_support = 60 +speed_topbottom = 30 +speed_travel = 100 +speed_wall = 60 +speed_wall_x = 60 +support_angle = 60 +support_enable = True +support_interface_enable = True +support_pattern = triangles +support_roof_enable = True +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg new file mode 100644 index 0000000000..884ed5b3f9 --- /dev/null +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg @@ -0,0 +1,60 @@ +[general] +version = 2 +name = High +definition = anycubic_i3_mega + +[metadata] +type = quality +quality_type = high +weight = 2 +setting_version = 4 + +[values] +acceleration_enabled = True +acceleration_print = 2000 +acceleration_travel = 3500 +adhesion_type = skirt +brim_width = 4.0 +cool_fan_full_at_height = 0.5 +cool_fan_speed = 100 +cool_fan_speed_0 = 100 +infill_overlap = 15 +infill_pattern = zigzag +infill_sparse_density = 25 +initial_layer_line_width_factor = 140 +jerk_enabled = True +jerk_print = 13 +jerk_travel = 13 +layer_height = 0.1 +layer_height_0 = 0.1 +material_bed_temperature = 60 +material_diameter = 1.75 +material_print_temperature = 200 +material_print_temperature_layer_0 = 0 +retract_at_layer_change = False +retraction_amount = 7 +retraction_hop = 0.075 +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_min_travel = 1.5 +retraction_speed = 40 +skirt_brim_speed = 40 +skirt_gap = 5 +skirt_line_count = 3 +speed_infill = 50 +speed_print = 50 +speed_support = 30 +speed_topbottom = 20 +speed_travel = 50 +speed_wall = 50 +speed_wall_x = 50 +support_angle = 60 +support_enable = True +support_interface_enable = True +support_pattern = triangles +support_roof_enable = True +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 \ No newline at end of file diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg new file mode 100644 index 0000000000..1ecfe49c71 --- /dev/null +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg @@ -0,0 +1,60 @@ +[general] +version = 2 +name = Normal +definition = anycubic_i3_mega + +[metadata] +type = quality +quality_type = normal +weight = 1 +setting_version = 4 + +[values] +acceleration_enabled = True +acceleration_print = 2000 +acceleration_travel = 3500 +adhesion_type = skirt +brim_width = 4.0 +cool_fan_full_at_height = 0.5 +cool_fan_speed = 100 +cool_fan_speed_0 = 100 +infill_overlap = 15 +infill_pattern = zigzag +infill_sparse_density = 25 +initial_layer_line_width_factor = 140 +jerk_enabled = True +jerk_print = 13 +jerk_travel = 13 +layer_height = 0.2 +layer_height_0 = 0.2 +material_bed_temperature = 60 +material_diameter = 1.75 +material_print_temperature = 200 +material_print_temperature_layer_0 = 0 +retract_at_layer_change = False +retraction_amount = 7 +retraction_hop = 0.075 +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_min_travel = 1.5 +retraction_speed = 40 +skirt_brim_speed = 40 +skirt_gap = 5 +skirt_line_count = 3 +speed_infill = 50 +speed_print = 50 +speed_support = 30 +speed_topbottom = 20 +speed_travel = 100 +speed_wall = 50 +speed_wall_x = 50 +support_angle = 60 +support_enable = True +support_interface_enable = True +support_pattern = triangles +support_roof_enable = True +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 \ No newline at end of file diff --git a/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg new file mode 100644 index 0000000000..92f899bdeb --- /dev/null +++ b/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg @@ -0,0 +1,24 @@ +[general] +version = 2 +name = Coarse +definition = builder_premium_small + +[metadata] +type = quality +quality_type = coarse +material = verbatim_bvoh_175 +setting_version = 4 +weight = -1 + +[values] +material_print_temperature = =default_material_print_temperature + 5 +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.3 +top_thickness = =layer_height * 5 +bottom_thickness = =layer_height * 3 +speed_print = 40 + diff --git a/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg new file mode 100644 index 0000000000..cd8947aa80 --- /dev/null +++ b/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 2 +name = High Quality +definition = builder_premium_small + +[metadata] +type = quality +quality_type = high +material = verbatim_bvoh_175 +setting_version = 4 +weight = 1 + +[values] +acceleration_print = 2000 +material_print_temperature = =default_material_print_temperature + 5 +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.1 +top_thickness = =layer_height * 7 +bottom_thickness = =layer_height * 5 +speed_print = 40 +layer_height_0 = 0.2 \ No newline at end of file diff --git a/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..d59f768470 --- /dev/null +++ b/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg @@ -0,0 +1,23 @@ +[general] +version = 2 +name = Normal +definition = builder_premium_small + +[metadata] +type = quality +quality_type = normal +material = verbatim_bvoh_175 +setting_version = 4 +weight = 0 + +[values] +material_print_temperature = =default_material_print_temperature + 5 +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.2 +top_thickness = =layer_height * 5 +bottom_thickness = =layer_height * 3 +speed_print = 40 \ No newline at end of file diff --git a/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg new file mode 100644 index 0000000000..41d882ee1d --- /dev/null +++ b/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg @@ -0,0 +1,24 @@ +[general] +version = 2 +name = Coarse +definition = builder_premium_small + +[metadata] +type = quality +quality_type = coarse +material = innofill_innoflex60_175 +setting_version = 4 +weight = -1 + +[values] +material_print_temperature = =default_material_print_temperature +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.3 +top_thickness = =layer_height * 5 +bottom_thickness = =layer_height * 3 +speed_print = 30 + diff --git a/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg new file mode 100644 index 0000000000..147e1f4db8 --- /dev/null +++ b/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 2 +name = High Quality +definition = builder_premium_small + +[metadata] +type = quality +quality_type = high +material = innofill_innoflex60_175 +setting_version = 4 +weight = 1 + +[values] +acceleration_print = 2000 +material_print_temperature = =default_material_print_temperature +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.1 +top_thickness = =layer_height * 7 +bottom_thickness = =layer_height * 5 +speed_print = 30 +layer_height_0 = 0.2 \ No newline at end of file diff --git a/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..fb43c8de19 --- /dev/null +++ b/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg @@ -0,0 +1,23 @@ +[general] +version = 2 +name = Normal +definition = builder_premium_small + +[metadata] +type = quality +quality_type = normal +material = innofill_innoflex60_175 +setting_version = 4 +weight = 0 + +[values] +material_print_temperature = =default_material_print_temperature +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.2 +top_thickness = =layer_height * 5 +bottom_thickness = =layer_height * 3 +speed_print = 30 \ No newline at end of file diff --git a/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg new file mode 100644 index 0000000000..f887600585 --- /dev/null +++ b/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg @@ -0,0 +1,24 @@ +[general] +version = 2 +name = Coarse +definition = builder_premium_small + +[metadata] +type = quality +quality_type = coarse +material = generic_petg_175 +setting_version = 4 +weight = -1 + +[values] +material_print_temperature = =default_material_print_temperature - 5 +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.3 +top_thickness = =layer_height * 5 +bottom_thickness = =layer_height * 3 +speed_print = 60 + diff --git a/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg new file mode 100644 index 0000000000..4258f2f708 --- /dev/null +++ b/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 2 +name = High Quality +definition = builder_premium_small + +[metadata] +type = quality +quality_type = high +material = generic_petg_175 +setting_version = 4 +weight = 1 + +[values] +acceleration_print = 2000 +material_print_temperature = =default_material_print_temperature - 5 +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.1 +top_thickness = =layer_height * 7 +bottom_thickness = =layer_height * 5 +speed_print = 40 +layer_height_0 = 0.2 \ No newline at end of file diff --git a/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..b732073795 --- /dev/null +++ b/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg @@ -0,0 +1,23 @@ +[general] +version = 2 +name = Normal +definition = builder_premium_small + +[metadata] +type = quality +quality_type = normal +material = generic_petg_175 +setting_version = 4 +weight = 0 + +[values] +material_print_temperature = =default_material_print_temperature - 5 +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.2 +top_thickness = =layer_height * 5 +bottom_thickness = =layer_height * 3 +speed_print = 50 \ No newline at end of file diff --git a/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg new file mode 100644 index 0000000000..4f0c26dd7d --- /dev/null +++ b/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg @@ -0,0 +1,24 @@ +[general] +version = 2 +name = Coarse +definition = builder_premium_small + +[metadata] +type = quality +quality_type = coarse +material = generic_pla_175 +setting_version = 4 +weight = -1 + +[values] +material_print_temperature = =default_material_print_temperature + 15 +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.3 +top_thickness = =layer_height * 5 +bottom_thickness = =layer_height * 3 +speed_print = 60 + diff --git a/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg new file mode 100644 index 0000000000..4a9bcb90bf --- /dev/null +++ b/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 2 +name = High Quality +definition = builder_premium_small + +[metadata] +type = quality +quality_type = high +material = generic_pla_175 +setting_version = 4 +weight = 1 + +[values] +acceleration_print = 2000 +material_print_temperature = =default_material_print_temperature + 15 +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.1 +top_thickness = =layer_height * 7 +bottom_thickness = =layer_height * 5 +speed_print = 40 +layer_height_0 = 0.2 \ No newline at end of file diff --git a/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..6af5601fd6 --- /dev/null +++ b/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg @@ -0,0 +1,23 @@ +[general] +version = 2 +name = Normal +definition = builder_premium_small + +[metadata] +type = quality +quality_type = normal +material = generic_pla_175 +setting_version = 4 +weight = 0 + +[values] +material_print_temperature = =default_material_print_temperature + 15 +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.2 +top_thickness = =layer_height * 5 +bottom_thickness = =layer_height * 3 +speed_print = 50 \ No newline at end of file diff --git a/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg new file mode 100644 index 0000000000..12a4c9d883 --- /dev/null +++ b/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg @@ -0,0 +1,24 @@ +[general] +version = 2 +name = Coarse +definition = builder_premium_small + +[metadata] +type = quality +quality_type = coarse +material = generic_pva_175 +setting_version = 4 +weight = -1 + +[values] +material_print_temperature = =default_material_print_temperature + 10 +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.3 +top_thickness = =layer_height * 5 +bottom_thickness = =layer_height * 3 +speed_print = 40 + diff --git a/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg new file mode 100644 index 0000000000..d32017c5f2 --- /dev/null +++ b/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 2 +name = High Quality +definition = builder_premium_small + +[metadata] +type = quality +quality_type = high +material = generic_pva_175 +setting_version = 4 +weight = 1 + +[values] +acceleration_print = 2000 +material_print_temperature = =default_material_print_temperature + 10 +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.1 +top_thickness = =layer_height * 7 +bottom_thickness = =layer_height * 5 +speed_print = 40 +layer_height_0 = 0.2 \ No newline at end of file diff --git a/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..2acc354822 --- /dev/null +++ b/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg @@ -0,0 +1,23 @@ +[general] +version = 2 +name = Normal +definition = builder_premium_small + +[metadata] +type = quality +quality_type = normal +material = generic_pva_175 +setting_version = 4 +weight = 0 + +[values] +material_print_temperature = =default_material_print_temperature + 10 +material_standby_temperature = =material_print_temperature +material_initial_print_temperature= =material_print_temperature +material_final_print_temperature= =material_print_temperature +material_bed_temperature = 45 +material_bed_temperature_layer_0= =material_bed_temperature +layer_height = 0.2 +top_thickness = =layer_height * 5 +bottom_thickness = =layer_height * 3 +speed_print = 40 \ No newline at end of file diff --git a/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg new file mode 100644 index 0000000000..4b66293d04 --- /dev/null +++ b/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 2 +name = Coarse +definition = builder_premium_small + +[metadata] +type = quality +quality_type = coarse +setting_version = 4 +weight = -1 +global_quality = True + +[values] +layer_height = 0.3 \ No newline at end of file diff --git a/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg new file mode 100644 index 0000000000..4a97dda084 --- /dev/null +++ b/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 2 +name = High Quality +definition = builder_premium_small + +[metadata] +type = quality +quality_type = high +setting_version = 4 +weight = 1 +global_quality = True + +[values] +layer_height = 0.1 \ No newline at end of file diff --git a/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..15ea66879f --- /dev/null +++ b/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 2 +name = Normal +definition = builder_premium_small + +[metadata] +type = quality +quality_type = normal +setting_version = 4 +weight = 0 +global_quality = True + +[values] +layer_height = 0.2 \ No newline at end of file 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 3abcc16f39..418855a9ba 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 = 3 +setting_version = 4 [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 a47fc2b8bf..e95ef08e22 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 = 3 +setting_version = 4 [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 c37b5c677c..524f5ba12a 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 = 3 +setting_version = 4 [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 ec0fdfa07b..24ffb19d6f 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 = 3 +setting_version = 4 [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 211e78357b..1281a3afdd 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 = 3 +setting_version = 4 [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 319c0748af..a8d19deef7 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 = 3 +setting_version = 4 [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 fc3b1e49f0..87cc855f44 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 = 3 +setting_version = 4 [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 0c453ed6b0..4ca2598051 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 = 3 +setting_version = 4 [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 4052520597..42eb705f11 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 = 3 +setting_version = 4 [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 a8a5e22a3b..538fe91b76 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 = 3 +setting_version = 4 [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 29c99bda49..11760b139f 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 = -3 -setting_version = 3 +setting_version = 4 [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 e5cb9712d2..c654dba598 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 = -4 -setting_version = 3 +setting_version = 4 [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 16570b97bf..393a5f3b39 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 = 1 -setting_version = 3 +setting_version = 4 [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 182ae137e7..c09493ba10 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 = 3 +setting_version = 4 [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 1a51725339..eae4e82cd3 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 = 3 +setting_version = 4 [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 fa845592fa..0c47b18196 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 = 3 +setting_version = 4 [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 56b5e7ef38..14f1ea4662 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 = 3 +setting_version = 4 [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 cad4b5255f..bd13b358ff 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 = 3 +setting_version = 4 [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 b52f4df1fa..ca864692c3 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 = 3 +setting_version = 4 [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 7eba4c99c4..3cadef4fdd 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 = 3 +setting_version = 4 [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 06ddcc0959..07839c8a9a 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 = 3 +setting_version = 4 [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 534d63115b..acc9db0891 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 = 3 +setting_version = 4 [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 ba2c95043c..b1f2f17d41 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 = 3 +setting_version = 4 [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 fb9393577f..bcfa1c2e30 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 = 3 +setting_version = 4 [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 92c00bc5df..2cd50efeb2 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 = 3 +setting_version = 4 [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 389a01fcb4..7a7d767ea3 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 = 3 +setting_version = 4 [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 f8ed2fbf41..5684c89e23 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 = 3 +setting_version = 4 [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 607069e4db..8d97e9ac5f 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 = 3 +setting_version = 4 [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 3c1bbffa83..946f8de34d 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 = 3 +setting_version = 4 [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 e964ab95b2..80f390c254 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 = 3 +setting_version = 4 [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 86f2dbf91f..ff6547dd91 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 = 3 +setting_version = 4 [values] infill_line_width = 0.3 @@ -31,7 +31,7 @@ switch_extruder_retraction_amount = 2 switch_extruder_retraction_speeds = =retraction_speed switch_extruder_prime_speed = =retraction_prime_speed -speed_print = 50 +speed_print = 20 speed_infill = =speed_print speed_layer_0 = =round(speed_print / 5 * 4) speed_wall = =round(speed_print / 2) 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 f24f3caed0..f3faa9c129 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 = 3 +setting_version = 4 [values] infill_line_width = 0.3 @@ -31,7 +31,7 @@ switch_extruder_retraction_amount = 2 switch_extruder_retraction_speeds = =retraction_speed switch_extruder_prime_speed = =retraction_prime_speed -speed_print = 50 +speed_print = 20 speed_infill = =speed_print speed_layer_0 = =round(speed_print / 5 * 4) speed_wall = =round(speed_print / 2) 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 3d44cfd39f..3aa808fab5 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 = 3 +setting_version = 4 [values] infill_line_width = 0.5 @@ -31,7 +31,7 @@ switch_extruder_retraction_amount = 2 switch_extruder_retraction_speeds = =retraction_speed switch_extruder_prime_speed = =retraction_prime_speed -speed_print = 50 +speed_print = 20 speed_infill = =speed_print speed_layer_0 = =round(speed_print / 5 * 4) speed_wall = =round(speed_print / 2) 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 fe873f537a..f9be12da3a 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 = 3 +setting_version = 4 [values] infill_line_width = 0.5 @@ -31,7 +31,7 @@ switch_extruder_retraction_amount = 2 switch_extruder_retraction_speeds = =retraction_speed switch_extruder_prime_speed = =retraction_prime_speed -speed_print = 50 +speed_print = 20 speed_infill = =speed_print speed_layer_0 = =round(speed_print / 5 * 4) speed_wall = =round(speed_print / 2) 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 4e802a4e9b..597187437b 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 = 3 +setting_version = 4 [values] infill_line_width = 0.9 @@ -31,7 +31,7 @@ switch_extruder_retraction_amount = 2 switch_extruder_retraction_speeds = =retraction_speed switch_extruder_prime_speed = =retraction_prime_speed -speed_print = 30 +speed_print = 15 speed_infill = =speed_print speed_layer_0 = =round(speed_print / 5 * 4) speed_wall = =round(speed_print / 2) 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 21153fce38..6d1fa196ec 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 = 3 +setting_version = 4 [values] infill_line_width = 0.9 @@ -31,7 +31,7 @@ switch_extruder_retraction_amount = 2 switch_extruder_retraction_speeds = =retraction_speed switch_extruder_prime_speed = =retraction_prime_speed -speed_print = 25 +speed_print = 15 speed_infill = =speed_print speed_layer_0 = =round(speed_print / 5 * 4) speed_wall = =round(speed_print / 2) 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 a8cc757fbb..c570b65350 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 = 3 +setting_version = 4 [values] infill_line_width = 0.9 @@ -31,7 +31,7 @@ switch_extruder_retraction_amount = 2 switch_extruder_retraction_speeds = =retraction_speed switch_extruder_prime_speed = =retraction_prime_speed -speed_print = 50 +speed_print = 20 speed_infill = =speed_print speed_layer_0 = =round(speed_print / 5 * 4) speed_wall = =round(speed_print / 2) 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 9574471b1c..0d73b24197 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 = 3 +setting_version = 4 [values] infill_line_width = 0.9 @@ -31,7 +31,7 @@ switch_extruder_retraction_amount = 2 switch_extruder_retraction_speeds = =retraction_speed switch_extruder_prime_speed = =retraction_prime_speed -speed_print = 50 +speed_print = 20 speed_infill = =speed_print speed_layer_0 = =round(speed_print / 5 * 4) speed_wall = =round(speed_print / 2) 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 2efa3ca0da..c5c4be6f4a 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 = 3 +setting_version = 4 [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 377520f471..6d12bdc402 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 = 3 +setting_version = 4 [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 c31c18b192..43dda5007c 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 = 3 +setting_version = 4 [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 1bf8c4a4d6..094dc33263 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 = 3 +setting_version = 4 [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 599ba08eaa..da9e4ad3dd 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 = 3 +setting_version = 4 [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 2f1a138115..607ba778a1 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 = 3 +setting_version = 4 [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 1a804307c9..3010d95dab 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 = 3 +setting_version = 4 [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 6eca142191..fbf8fac67f 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 = 3 +setting_version = 4 [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 9cfa09aee7..9d8130602e 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 = 3 +setting_version = 4 [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 359ca15f96..98401dbf42 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 = 0 -setting_version = 3 +setting_version = 4 [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 3d97fdbae8..2eda5103d7 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 = 3 +setting_version = 4 [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 fef8bb53d3..f3d3820ff7 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 = 0 -setting_version = 3 +setting_version = 4 [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 06cd974d26..d2cf708336 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 = 3 +setting_version = 4 [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 d161befcc1..888d8f91a7 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 = 3 +setting_version = 4 [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 b017fb9d5d..558514db98 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 = 3 +setting_version = 4 [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 6075c2651f..9c508e4a1f 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 = 0 -setting_version = 3 +setting_version = 4 [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 bd170cfccc..fcbf4913de 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 = 3 +setting_version = 4 [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 23ba53078b..3893421df0 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 = 3 +setting_version = 4 [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 de12e2987d..5876db1e2e 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 = 3 +setting_version = 4 [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 3418cce66c..c977e79a5c 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 = 3 +setting_version = 4 [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 17c9f81d2d..8c36d8e7ed 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 = 3 +setting_version = 4 [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 ffd4e34204..c2b19868f6 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 = 3 +setting_version = 4 [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 bd32e91b20..5bd285285a 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 = 3 +setting_version = 4 [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 6d309464a6..a11bff95e1 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 = 3 +setting_version = 4 [values] infill_line_width = 0.9 diff --git a/resources/quality/coarse.inst.cfg b/resources/quality/coarse.inst.cfg index 3f197bb50c..133ffc8951 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 = 3 +setting_version = 4 [values] layer_height = 0.4 diff --git a/resources/quality/deltacomb/deltacomb_abs_fast.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_fast.inst.cfg new file mode 100644 index 0000000000..43643b6b92 --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_abs_fast.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 2 +definition = deltacomb +name = Fast Quality (beta) + +[metadata] +type = quality +setting_version = 4 +material = generic_abs_175 +quality_type = fast +weight = -1 + +[values] +adhesion_type = raft +layer_height = 0.2 +layer_height_0 = 0.2 +cool_fan_enabled = True +cool_fan_full_at_height = 0.4 +cool_fan_speed = 50 +cool_fan_speed_max = 50 +cool_fan_speed_min = 50 +cool_min_layer_time = 3 +cool_min_speed = 20 +material_bed_temperature = 80 + diff --git a/resources/quality/deltacomb/deltacomb_abs_high.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_high.inst.cfg new file mode 100644 index 0000000000..99e47bc9cb --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_abs_high.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 2 +definition = deltacomb +name = High Quality (beta) + +[metadata] +type = quality +setting_version = 4 +material = generic_abs_175 +quality_type = high +weight = 1 + +[values] +adhesion_type = raft +layer_height = 0.1 +layer_height_0 = 0.1 +cool_fan_enabled = True +cool_fan_full_at_height = 0.2 +cool_fan_speed = 50 +cool_fan_speed_max = 50 +cool_fan_speed_min = 50 +cool_min_layer_time = 3 +cool_min_speed = 20 +material_bed_temperature = 80 + diff --git a/resources/quality/deltacomb/deltacomb_abs_normal.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_normal.inst.cfg new file mode 100644 index 0000000000..a2aa2be769 --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_abs_normal.inst.cfg @@ -0,0 +1,24 @@ +[general] +version = 2 +definition = deltacomb +name = Normal Quality (beta) + +[metadata] +type = quality +setting_version = 4 +material = generic_abs_175 +quality_type = normal +weight = 0 + +[values] +adhesion_type = raft +layer_height = 0.15 +layer_height_0 = 0.15 +cool_fan_enabled = True +cool_fan_full_at_height = 0.3 +cool_fan_speed = 50 +cool_fan_speed_max = 50 +cool_fan_speed_min = 50 +cool_min_layer_time = 3 +cool_min_speed = 20 +material_bed_temperature = 80 diff --git a/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg b/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg new file mode 100644 index 0000000000..fac23939cf --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg @@ -0,0 +1,57 @@ +[general] +version = 2 +name = Fast Quality (beta) +definition = deltacomb + +[metadata] +type = quality +material = generic_nylon_175 +quality_type = fast +weight = -1 +setting_version = 4 + +[values] +adhesion_type = raft +brim_width = 4 +cool_fan_enabled = False +cool_fan_full_at_height = 0.45 +cool_fan_speed = 0 +cool_fan_speed_max = 0 +cool_fan_speed_min = 0 +cool_min_layer_time = 5 +cool_min_speed = 0 +infill_overlap = 15 +infill_sparse_density = 24 +layer_height = 0.20 +layer_height_0 = 0.15 +line_width = =machine_nozzle_size +material_flow = 100 +raft_airgap = 0.22 +raft_base_line_width= =line_width * 2 +raft_base_thickness = =layer_height_0 * 2 +raft_interface_line_width = =line_width +raft_interface_thickness = =layer_height +raft_margin = 5 +raft_surface_layers = 2 +raft_surface_line_width = =line_width +raft_surface_thickness = =layer_height +retraction_hop = 0.5 +retraction_hop_enabled = False +retraction_hop_only_when_collides = True +skin_overlap = 10 +skirt_brim_minimal_length = 75 +skirt_gap = 1.5 +skirt_line_count = 5 +speed_infill = =speed_print +speed_layer_0 = 25 +speed_print = 50 +speed_topbottom = 40 +speed_travel = 200 +speed_wall_0 = 40 +speed_wall_x = =speed_print +support_angle = 70 +support_type = buildplate +support_z_distance = 0.15 +top_bottom_thickness = 0.8 +wall_thickness = 0.8 +z_seam_type = random diff --git a/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg b/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg new file mode 100644 index 0000000000..d594126474 --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg @@ -0,0 +1,57 @@ +[general] +version = 2 +name = High Quality (beta) +definition = deltacomb + +[metadata] +type = quality +material = generic_nylon_175 +quality_type = high +weight = 1 +setting_version = 4 + +[values] +adhesion_type = raft +brim_width = 4 +cool_fan_enabled = False +cool_fan_full_at_height = 0.45 +cool_fan_speed = 0 +cool_fan_speed_max = 0 +cool_fan_speed_min = 0 +cool_min_layer_time = 5 +cool_min_speed = 0 +infill_overlap = 15 +infill_sparse_density = 24 +layer_height = 0.10 +layer_height_0 = 0.10 +line_width = =machine_nozzle_size +material_flow = 100 +raft_airgap = 0.22 +raft_base_line_width= =line_width * 2 +raft_base_thickness = =layer_height_0 * 2 +raft_interface_line_width = =line_width +raft_interface_thickness = =layer_height +raft_margin = 5 +raft_surface_layers = 2 +raft_surface_line_width = =line_width +raft_surface_thickness = =layer_height +retraction_hop = 0.5 +retraction_hop_enabled = False +retraction_hop_only_when_collides = True +skin_overlap = 10 +skirt_brim_minimal_length = 75 +skirt_gap = 1.5 +skirt_line_count = 5 +speed_infill = =speed_print +speed_layer_0 = 25 +speed_print = 50 +speed_topbottom = 40 +speed_travel = 200 +speed_wall_0 = 40 +speed_wall_x = =speed_print +support_angle = 70 +support_type = buildplate +support_z_distance = 0.15 +top_bottom_thickness = 0.8 +wall_thickness = 0.8 +z_seam_type = random diff --git a/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg b/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg new file mode 100644 index 0000000000..76716fc16d --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg @@ -0,0 +1,58 @@ +[general] +version = 2 +name = Normal Quality (beta) +definition = deltacomb + +[metadata] +type = quality +material = generic_nylon_175 +quality_type = normal +weight = 0 +setting_version = 4 + +[values] +adhesion_type = raft +brim_width = 4 +cool_fan_enabled = False +cool_fan_full_at_height = 0.45 +cool_fan_speed = 0 +cool_fan_speed_max = 0 +cool_fan_speed_min = 0 +cool_min_layer_time = 5 +cool_min_speed = 0 +infill_overlap = 15 +infill_sparse_density = 24 +layer_height = 0.15 +layer_height_0 = 0.10 +line_width = =machine_nozzle_size +material_flow = 100 +raft_airgap = 0.22 +raft_base_line_width= =line_width * 2 +raft_base_thickness = =layer_height_0 * 2 +raft_interface_line_width = =line_width +raft_interface_thickness = =layer_height +raft_margin = 5 +raft_surface_layers = 2 +raft_surface_line_width = =line_width +raft_surface_thickness = =layer_height +retraction_hop = 0.5 +retraction_hop_enabled = False +retraction_hop_only_when_collides = True +skin_overlap = 10 +skirt_brim_minimal_length = 75 +skirt_gap = 1.5 +skirt_line_count = 5 +speed_infill = =speed_print +speed_layer_0 = 25 +speed_print = 50 +speed_topbottom = 40 +speed_travel = 200 +speed_wall_0 = 40 +speed_wall_x = =speed_print +support_angle = 70 +support_type = buildplate +support_z_distance = 0.15 +top_bottom_thickness = 0.8 +wall_thickness = 0.8 +z_seam_type = random + diff --git a/resources/quality/deltacomb/deltacomb_pla_fast.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_fast.inst.cfg new file mode 100644 index 0000000000..9783cb11cc --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_pla_fast.inst.cfg @@ -0,0 +1,24 @@ +[general] +version = 2 +definition = deltacomb +name = Fast Quality + +[metadata] +type = quality +setting_version = 4 +material = generic_pla_175 +quality_type = fast +weight = -1 + +[values] +adhesion_type = skirt +layer_height = 0.2 +layer_height_0 = 0.2 +cool_fan_enabled = True +cool_fan_full_at_height = 0.4 +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_fan_speed_min = 100 +cool_min_layer_time = 5 +cool_min_speed = 20 + diff --git a/resources/quality/deltacomb/deltacomb_pla_high.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_high.inst.cfg new file mode 100644 index 0000000000..9513e98b6a --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_pla_high.inst.cfg @@ -0,0 +1,25 @@ +[general] +version = 2 +definition = deltacomb +name = High Quality + +[metadata] +type = quality +setting_version = 4 +material = generic_pla_175 +quality_type = high +weight = 1 + +[values] +adhesion_type = skirt +layer_height = 0.1 +layer_height_0 = 0.1 +cool_fan_enabled = True +cool_fan_full_at_height = 0.2 +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_fan_speed_min = 100 +cool_min_layer_time = 5 +cool_min_speed = 20 +material_print_temperature_layer_0 = =default_material_print_temperature + 5 + diff --git a/resources/quality/deltacomb/deltacomb_pla_normal.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_normal.inst.cfg new file mode 100644 index 0000000000..d88f5909f0 --- /dev/null +++ b/resources/quality/deltacomb/deltacomb_pla_normal.inst.cfg @@ -0,0 +1,23 @@ +[general] +version = 2 +definition = deltacomb +name = Normal Quality + +[metadata] +type = quality +setting_version = 4 +material = generic_pla_175 +quality_type = normal +weight = 0 + +[values] +adhesion_type = skirt +layer_height = 0.15 +layer_height_0 = 0.15 +cool_fan_enabled = True +cool_fan_full_at_height = 0.3 +cool_fan_speed = 100 +cool_fan_speed_max = 100 +cool_fan_speed_min = 100 +cool_min_layer_time = 5 +cool_min_speed = 20 diff --git a/resources/quality/draft.inst.cfg b/resources/quality/draft.inst.cfg index 00932feb68..a155c8f2e1 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 = 3 +setting_version = 4 [values] layer_height = 0.2 diff --git a/resources/quality/extra_coarse.inst.cfg b/resources/quality/extra_coarse.inst.cfg index 183fa825e8..ce28e54721 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 = 3 +setting_version = 4 [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 d38323a180..245997a27e 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 = 3 +setting_version = 4 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 5333512e4c..26300eec7d 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 = 3 +setting_version = 4 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 fd0fca7887..53d20c8cbc 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 = 3 +setting_version = 4 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 1c9e384e77..22bbcbeaeb 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 = 3 +setting_version = 4 [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 cffa1f0e86..a625bd715f 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 = 3 +setting_version = 4 [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 c2bec3396e..b05d30c5c6 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 = 3 +setting_version = 4 [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 4adda21b5a..1f1c93961b 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 = 3 +setting_version = 4 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 e3aed0ab0e..9cd067703c 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 = 3 +setting_version = 4 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 81a75283a5..5b5125c4e5 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 = 3 +setting_version = 4 material = fabtotum_pla quality_type = normal weight = 0 diff --git a/resources/quality/high.inst.cfg b/resources/quality/high.inst.cfg index 846dc58827..d4333c90da 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 = 3 +setting_version = 4 [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 ad22aacc18..e36286c6ae 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 = 3 +setting_version = 4 [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 35268229b3..3240bad98b 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 = 3 +setting_version = 4 [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 ca5f8b5a28..2790a5a742 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 = 3 +setting_version = 4 [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 a2b540dc7f..14f141f0bf 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 = 3 +setting_version = 4 [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 b3472a0cf5..842ec618e0 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 = 3 +setting_version = 4 [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 c7dd462a74..17e085d84d 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 = 3 +setting_version = 4 [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 7035deab6e..a4b44f47f6 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 = 3 +setting_version = 4 [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 73e33a74fb..962b3c9ad4 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 = 3 +setting_version = 4 [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 8a14eab5c6..952b16ecf8 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 = 3 +setting_version = 4 [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 64917bc37d..bd70d105a4 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 = 3 +setting_version = 4 [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 15be25bb1b..a9d0679612 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 = 3 +setting_version = 4 [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 b4f0db9cb6..097e1fc76a 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 = 3 +setting_version = 4 [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 5d3bf86b90..5401ec7bd6 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 = 3 +setting_version = 4 [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 e29c38f225..aea8fc9535 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 = 3 +setting_version = 4 [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 552ad8901e..24adbd9f6c 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 = 3 +setting_version = 4 [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 a63f9065ef..98d2475633 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 = 3 +setting_version = 4 [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 1449961b6c..ab2e9dabbc 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 = 3 +setting_version = 4 [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 2b3e64c67b..f868ab40fc 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 = 3 +setting_version = 4 [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 2c14044484..e907f7ccaf 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 = 3 +setting_version = 4 [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 48617d23df..841023d532 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 = 3 +setting_version = 4 [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 724c52b40d..ca874c6bce 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 = 3 +setting_version = 4 [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 7c6f7d5e05..fcfbe72b24 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 = 3 +setting_version = 4 [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 105cf0b199..009af9b87b 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 = 3 +setting_version = 4 [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 35aef2e19e..447e3b012d 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 = 3 +setting_version = 4 [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 06ec265152..80b2375108 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 = 3 +setting_version = 4 [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 db47c47fc4..e30c52f4e6 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 = 3 +setting_version = 4 [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 1ad63191a4..31bdaa51bc 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 = 3 +setting_version = 4 [values] layer_height = 0.15 diff --git a/resources/quality/low.inst.cfg b/resources/quality/low.inst.cfg index 21e4d0d404..e92490722d 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 = 3 +setting_version = 4 [values] infill_sparse_density = 10 diff --git a/resources/quality/normal.inst.cfg b/resources/quality/normal.inst.cfg index acbdf1033e..9fb7b238cd 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 = 3 +setting_version = 4 [values] diff --git a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg index deefea63dd..ae8a377116 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 = 3 +setting_version = 4 [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 f9ed09afca..07ab7e364b 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 = 3 +setting_version = 4 [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 7cbd9a84fe..e0d2f7d818 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 = 3 +setting_version = 4 [values] infill_sparse_density = 70 diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg new file mode 100644 index 0000000000..88805021eb --- /dev/null +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg @@ -0,0 +1,33 @@ +[general] +version = 2 +name = Draft +definition = tevo_blackwidow + +[metadata] +type = quality +quality_type = draft +weight = -2 +setting_version = 4 + +[values] +brim_width = 4.0 +infill_pattern = zigzag +layer_height = 0.4 +material_diameter = 1.75 +speed_infill = 50 +speed_print = 50 +speed_support = 30 +speed_topbottom = 20 +speed_travel = 100 +speed_wall = 50 +speed_wall_x = 50 +support_angle = 60 +support_enable = True +support_interface_enable = True +support_pattern = triangles +support_roof_enable = True +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 \ No newline at end of file diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg new file mode 100644 index 0000000000..79d020463f --- /dev/null +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg @@ -0,0 +1,33 @@ +[general] +version = 2 +name = High +definition = tevo_blackwidow + +[metadata] +type = quality +quality_type = high +weight = 1 +setting_version = 4 + +[values] +brim_width = 4.0 +infill_pattern = zigzag +layer_height = 0.1 +material_diameter = 1.75 +speed_infill = 50 +speed_print = 50 +speed_support = 30 +speed_topbottom = 15 +speed_travel = 100 +speed_wall = 50 +speed_wall_x = 50 +support_angle = 60 +support_enable = True +support_interface_enable = True +support_pattern = triangles +support_roof_enable = True +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 \ No newline at end of file diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg new file mode 100644 index 0000000000..2982c44d3d --- /dev/null +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg @@ -0,0 +1,33 @@ +[general] +version = 2 +name = Normal +definition = tevo_blackwidow + +[metadata] +type = quality +quality_type = normal +weight = 0 +setting_version = 4 + +[values] +brim_width = 4.0 +infill_pattern = zigzag +layer_height = 0.2 +material_diameter = 1.75 +speed_infill = 60 +speed_print = 50 +speed_support = 30 +speed_topbottom = 20 +speed_travel = 100 +speed_wall = 50 +speed_wall_x = 50 +support_angle = 60 +support_enable = True +support_interface_enable = True +support_pattern = triangles +support_roof_enable = True +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.7 +top_bottom_thickness = 1.2 +wall_thickness = 1.2 \ No newline at end of file diff --git a/resources/quality/ultimaker2/um2_draft.inst.cfg b/resources/quality/ultimaker2/um2_draft.inst.cfg index 11bdf03e92..4fe3f51e20 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 = 3 +setting_version = 4 [values] layer_height = 0.2 diff --git a/resources/quality/ultimaker2/um2_high.inst.cfg b/resources/quality/ultimaker2/um2_high.inst.cfg index 63b820479a..96941beed2 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 = 3 +setting_version = 4 [values] layer_height = 0.06 diff --git a/resources/quality/ultimaker2/um2_low.inst.cfg b/resources/quality/ultimaker2/um2_low.inst.cfg index bb8ef2fa87..832962984c 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 = 3 +setting_version = 4 [values] infill_sparse_density = 10 diff --git a/resources/quality/ultimaker2/um2_normal.inst.cfg b/resources/quality/ultimaker2/um2_normal.inst.cfg index 0673ba9eb4..ea804feb80 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 = 3 +setting_version = 4 [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 ba94d1a008..638a1a9384 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 = 3 +setting_version = 4 [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 fa91cb12e5..9f4dfc0b5d 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 = 3 +setting_version = 4 [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 97253fb753..7bf51b0211 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 = 3 +setting_version = 4 [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 2b63b8e8be..3c6f40e0bc 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 = 3 +setting_version = 4 [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 6d4dc257bf..ef79e30b74 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 = 3 +setting_version = 4 [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 88d95ebc3f..42418ea392 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 = 3 +setting_version = 4 [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 e2b7f34549..50a4076de2 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 = 3 +setting_version = 4 [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 aa4918b0c7..9d1bcf6ff5 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 = 3 +setting_version = 4 [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 0c8b8233fb..84a5557434 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 = 3 +setting_version = 4 [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 de5ddb9726..efc749ad8c 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 = 3 +setting_version = 4 [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 bff307740a..eb706c5762 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 = 3 +setting_version = 4 [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 510494c0c6..2dba5a9304 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 = 3 +setting_version = 4 [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 f47437eb58..8e87e0e7b6 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 = 3 +setting_version = 4 [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 7e3dc1a39e..e311df00a8 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 = 3 +setting_version = 4 [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 4be015ce35..685b7798fc 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 = 3 +setting_version = 4 [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 9b5ac3c163..aadb4195f3 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 = 3 +setting_version = 4 [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 acac263691..332033368f 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 = 3 +setting_version = 4 [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 a3b15628dd..e4fcae8aa1 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 = 3 +setting_version = 4 [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 4c81178592..55af936a89 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 = 3 +setting_version = 4 [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 216c8568d1..eb0ca5e81f 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 = 3 +setting_version = 4 [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 b718af40d9..b324d867bc 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 = 3 +setting_version = 4 [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 4e8de61ad6..c8c7576d30 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 = 3 +setting_version = 4 [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 1e9f1029c6..28353f729d 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 = 3 +setting_version = 4 [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 f64cd2cf1a..f74db21b91 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 = 3 +setting_version = 4 [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 e136dad3b8..b8924423e2 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 = 3 +setting_version = 4 [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 e963f8b438..323fa51a8d 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 = 3 +setting_version = 4 [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 134c1d033b..7628cd0be1 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 = 3 +setting_version = 4 [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 04469385a0..a97a4c4e8f 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 = 3 +setting_version = 4 [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 20662c3e21..0cd7bbdbfd 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 = 3 +setting_version = 4 [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 b8cd3a1a3a..d5e0025913 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 = 3 +setting_version = 4 [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 c615480917..f653a90f95 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 = 3 +setting_version = 4 [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 af20b564e4..144c8e74ac 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 = 3 +setting_version = 4 [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 0498e5a81f..d38f2af4d3 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 = 3 +setting_version = 4 [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 e4a08a5bb1..aa176f67a2 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 = 3 +setting_version = 4 [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 c3d3626380..0408ead05e 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 = 3 +setting_version = 4 [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 705dfb175a..ed430f10c0 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 = 3 +setting_version = 4 [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 5eb29eba57..b6c3a66c0b 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 = 3 +setting_version = 4 [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 82a3e56013..0dfb533f56 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 = 3 +setting_version = 4 [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 890a08608c..3eee23006f 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 = 3 +setting_version = 4 [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 0456166d70..40da82e6bf 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 = 3 +setting_version = 4 [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 deleted file mode 100644 index 13b05df085..0000000000 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.25_normal.inst.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker2_plus - -[metadata] -type = quality -material = generic_pp_ultimaker2_plus_0.25_mm -weight = 0 -quality_type = normal -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 d471e39853..6f4e366209 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 = 3 +setting_version = 4 [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 e313b04ac2..c7224f475f 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 = 3 +setting_version = 4 [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 901a23ba08..203db9883e 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 = 3 +setting_version = 4 [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 3adebf1fc6..64dfbc9281 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 = 3 +setting_version = 4 [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 55567d2c4e..f6d56242dd 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 = 3 +setting_version = 4 [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 8653faea13..ecb3e3da4a 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 = 3 +setting_version = 4 [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 bbb4002d0b..b1cb56a543 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 = 3 +setting_version = 4 [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 22fe2566f9..80cc92fe64 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 = 3 +setting_version = 4 [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 12a8f6521b..9796adada9 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 = 3 +setting_version = 4 [values] adhesion_type = brim 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 deleted file mode 100644 index 65f9ba383e..0000000000 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.8_normal.inst.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[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] - diff --git a/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..fc7d4d12d2 --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg @@ -0,0 +1,23 @@ +[general] +version = 2 +name = Fine +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_abs_ultimaker3_AA_0.25 +weight = 0 +setting_version = 4 + +[values] +cool_fan_speed = 40 +infill_overlap = 15 +material_final_print_temperature = =material_print_temperature - 5 +prime_tower_purge_volume = 0.6 +prime_tower_size = 12 +prime_tower_wall_thickness = 0.9 +retraction_prime_speed = 25 +speed_topbottom = =math.ceil(speed_print * 30 / 55) +wall_thickness = 0.92 + diff --git a/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..83e0c549c4 --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg @@ -0,0 +1,21 @@ +[general] +version = 2 +name = Fine +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_cpe_ultimaker3_AA_0.25 +weight = 0 +setting_version = 4 + +[values] +prime_tower_size = 12 +prime_tower_wall_thickness = 0.9 +retraction_extrusion_window = 0.5 +speed_infill = 40 +speed_topbottom = =math.ceil(speed_print * 30 / 55) +top_bottom_thickness = 0.8 +wall_thickness = 0.92 + diff --git a/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..58ddc32101 --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg @@ -0,0 +1,35 @@ +[general] +version = 2 +name = Fine +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_nylon_ultimaker3_AA_0.25 +weight = 0 +setting_version = 4 + +[values] +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 12 +infill_line_width = =round(line_width * 0.5 / 0.4, 2) +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 1.4 +ooze_shield_angle = 40 +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 3) +raft_jerk = =jerk_layer_0 +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +retraction_min_travel = 5 +skin_overlap = 50 +speed_print = 70 +speed_topbottom = =math.ceil(speed_print * 30 / 70) +speed_wall = =math.ceil(speed_print * 30 / 70) +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 +wall_line_width_x = =wall_line_width + diff --git a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..7c9fa32949 --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg @@ -0,0 +1,56 @@ +[general] +version = 2 +name = Fine - Experimental +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_pc_ultimaker3_AA_0.25 +weight = 0 +setting_version = 4 + +[values] +acceleration_enabled = True +acceleration_print = 4000 +adhesion_type = brim +brim_width = 20 +cool_fan_full_at_height = =layer_height_0 + layer_height +cool_fan_speed_max = 50 +cool_min_layer_time_fan_speed_max = 5 +cool_min_speed = 5 +infill_line_width = =line_width +infill_pattern = triangles +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +machine_min_cool_heat_time_window = 15 +multiple_mesh_overlap = 0 +ooze_shield_angle = 40 +prime_tower_enable = True +prime_tower_wipe_enabled = True +raft_airgap = 0.25 +raft_interface_thickness = =max(layer_height * 1.5, 0.225) +retraction_count_max = 80 +retraction_hop = 2 +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_min_travel = 0.8 +retraction_prime_speed = 15 +skin_overlap = 30 +speed_layer_0 = 25 +speed_print = 50 +speed_topbottom = 25 +speed_travel = 250 +speed_wall = =math.ceil(speed_print * 40 / 50) +speed_wall_0 = =math.ceil(speed_wall * 25 / 40) +support_bottom_distance = =support_z_distance +support_interface_density = 87.5 +support_interface_pattern = lines +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 35 +wall_0_inset = 0 +wall_line_width_x = =line_width +wall_thickness = 1.2 + diff --git a/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..1bee4b8f18 --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg @@ -0,0 +1,36 @@ +[general] +version = 2 +name = Fine +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_pla_ultimaker3_AA_0.25 +weight = 0 +setting_version = 4 + +[values] +brim_width = 8 +cool_fan_full_at_height = =layer_height_0 +cool_min_speed = 10 +infill_overlap = 10 +infill_pattern = grid +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 1.4 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = 190 +retraction_hop = 0.2 +skin_overlap = 5 +speed_layer_0 = 30 +speed_print = 30 +speed_travel_layer_0 = 120 +speed_wall = 25 +speed_wall_0 = 20 +top_bottom_thickness = 0.72 +travel_avoid_distance = 0.4 +wall_0_inset = 0.015 +wall_0_wipe_dist = 0.25 +wall_thickness = 0.7 + diff --git a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..58e7fdc688 --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg @@ -0,0 +1,59 @@ +[general] +version = 2 +name = Fine - Experimental +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_pp_ultimaker3_AA_0.25 +weight = 0 +setting_version = 4 + +[values] +acceleration_enabled = True +acceleration_print = 4000 +brim_width = 10 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 5 +cool_min_speed = 2.5 +infill_line_width = =round(line_width * 0.38 / 0.38, 2) +infill_pattern = tetrahedral +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +line_width = =machine_nozzle_size * 0.92 +machine_min_cool_heat_time_window = 15 +material_bed_temperature_layer_0 = 90 +material_final_print_temperature = 195 +material_initial_print_temperature = 200 +material_print_temperature = 205 +material_print_temperature_layer_0 = 208 +multiple_mesh_overlap = 0 +prime_tower_enable = False +prime_tower_size = 16 +prime_tower_wipe_enabled = True +retraction_count_max = 6 +retraction_extra_prime_amount = 0.2 +retraction_extrusion_window = 6.5 +retraction_hop = 2 +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_min_travel = 0.8 +retraction_prime_speed = 13 +speed_equalize_flow_enabled = True +speed_layer_0 = 15 +speed_print = 25 +speed_travel = 300 +speed_travel_layer_0 = 50 +speed_wall = =math.ceil(speed_print * 25 / 25) +speed_wall_0 = =math.ceil(speed_wall * 25 / 25) +support_angle = 50 +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 35 +top_bottom_thickness = 1 +travel_avoid_distance = 3 +wall_0_inset = 0 +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 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 ea95ac161b..13dca72c27 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 = 3 +setting_version = 4 [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 6db50fe270..10fa10c726 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 = 3 +setting_version = 4 [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 305de52ea6..02f2327468 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 = 3 +setting_version = 4 [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 fc23b25e3e..fccb6a35f5 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 = 3 +setting_version = 4 [values] machine_nozzle_cool_down_speed = 0.85 diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg new file mode 100644 index 0000000000..f3c6ae8387 --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg @@ -0,0 +1,37 @@ +[general] +version = 2 +name = Fast +definition = ultimaker3 + +[metadata] +type = quality +quality_type = draft +material = generic_bam_ultimaker3_AA_0.4 +weight = -2 +setting_version = 4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature + 5 +# prime_tower_enable: see CURA-4248 +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +skin_overlap = 20 +speed_layer_0 = 20 +speed_topbottom = =math.ceil(speed_print * 35 / 70) +speed_wall = =math.ceil(speed_print * 50 / 70) +speed_wall_0 = =math.ceil(speed_wall * 35 / 50) +top_bottom_thickness = 1 +wall_thickness = 1 +support_interface_enable = True +support_interface_density = =min(extruderValues('material_surface_energy')) +support_interface_pattern = ='lines' if support_interface_density < 100 else 'concentric' +support_top_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_angle = 45 +support_join_distance = 5 +support_offset = 2 +support_pattern = triangles +support_infill_rate = 10 diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg new file mode 100644 index 0000000000..e027477595 --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg @@ -0,0 +1,36 @@ +[general] +version = 2 +name = Normal +definition = ultimaker3 + +[metadata] +type = quality +quality_type = fast +material = generic_bam_ultimaker3_AA_0.4 +weight = -1 +setting_version = 4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +# prime_tower_enable: see CURA-4248 +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +speed_print = 80 +speed_layer_0 = 20 +speed_topbottom = =math.ceil(speed_print * 30 / 80) +speed_wall = =math.ceil(speed_print * 40 / 80) +speed_wall_0 = =math.ceil(speed_wall * 30 / 40) +top_bottom_thickness = 1 +wall_thickness = 1 +support_interface_enable = True +support_interface_density = =min(extruderValues('material_surface_energy')) +support_interface_pattern = ='lines' if support_interface_density < 100 else 'concentric' +support_top_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 1) * layer_height +support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_angle = 45 +support_join_distance = 5 +support_offset = 2 +support_pattern = triangles +support_infill_rate = 10 diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..3ced3a0417 --- /dev/null +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 2 +name = Fine +definition = ultimaker3 + +[metadata] +type = quality +quality_type = normal +material = generic_bam_ultimaker3_AA_0.4 +weight = 0 +setting_version = 4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +cool_min_speed = 7 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature - 10 +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +skin_overlap = 10 +speed_layer_0 = 20 +support_interface_enable = True +support_interface_density = =min(extruderValues('material_surface_energy')) +support_interface_pattern = ='lines' if support_interface_density < 100 else 'concentric' +support_top_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 1) * layer_height +support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_angle = 45 +support_join_distance = 5 +support_offset = 2 +support_pattern = triangles +support_infill_rate = 10 +top_bottom_thickness = 1 +wall_thickness = 1 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 bbbfd3b6a1..dfdb1ca8a7 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 = 3 +setting_version = 4 [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 f39da90dc6..93b371a627 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 = 3 +setting_version = 4 [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 6641e0f4ed..93647f9f44 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 = 3 +setting_version = 4 [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 c22d6eda31..2886ef2229 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 = 3 +setting_version = 4 [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 96065673d6..5e3daf5a9e 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 = 3 +setting_version = 4 [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 e866877b0e..e48f83994d 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 = 3 +setting_version = 4 [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 971c222ef7..fd0a8cd18d 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 = 3 +setting_version = 4 [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 d77b673721..56c997eb15 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 = 3 +setting_version = 4 [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 5f3680c391..15283a3242 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 = 3 +setting_version = 4 [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 c5dc2c37f9..c063725e82 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 = 3 +setting_version = 4 [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 cb39a20918..218e1e50e1 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 = 3 +setting_version = 4 [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 0e3467d901..3b96939ac9 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 = 3 +setting_version = 4 [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 2a2e7a1010..f8b4dd067c 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 = 3 +setting_version = 4 [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 8887895e46..1db3935180 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 = 3 +setting_version = 4 [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 07c372f9dc..0f9e9b15b0 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 = 3 +setting_version = 4 [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 9a7daeed93..26a3136069 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 = 3 +setting_version = 4 [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 f2d76753b0..8c6e7bd782 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 = 3 +setting_version = 4 [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 b78d1598cd..db441015a8 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 = 3 +setting_version = 4 [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 0fa518546f..61807490e9 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 = 3 +setting_version = 4 [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 ca4a3bf27b..d7254b854d 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 = 3 +setting_version = 4 [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 7be9425947..3fe25e563a 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 = 3 +setting_version = 4 [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 132a4e6303..4c92c7a14b 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 = 3 +setting_version = 4 [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 780ad8b2a1..db55956497 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 = 3 +setting_version = 4 [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 deleted file mode 100644 index 121d9c92bb..0000000000 --- a/resources/quality/ultimaker3/um3_aa0.4_PVA_Fast_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -weight = 0 -type = quality -quality_type = normal -material = generic_pva_ultimaker3_AA_0.4 -supported = False -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 f1825240cf..6116dc1bda 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 = 3 +setting_version = 4 [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 d223a83554..1da5d0fec8 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 = 3 +setting_version = 4 [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 c0b5065f53..1938e1c26c 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 = 3 +setting_version = 4 [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 b55678643d..7c16e6e8ee 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 = 3 +setting_version = 4 [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 3c21c74d8e..728b4c868f 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 = 3 +setting_version = 4 [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 9c4352043b..98ae70c568 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 = 3 +setting_version = 4 [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 795d224a65..0a05e9aafd 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 = 3 +setting_version = 4 [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 58723d05fe..82efb6a57b 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 = 3 +setting_version = 4 [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 e125ec9f0b..ff375b6e49 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 = 3 +setting_version = 4 [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 3c303fc9c2..b4d7035b8d 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 = 3 +setting_version = 4 [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 6525e0452f..b5ccc38534 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 = 3 +setting_version = 4 [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 195598e0f9..33ae223526 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 = 3 +setting_version = 4 [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 fec8232b59..43ec77453c 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 = 3 +setting_version = 4 [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 8a0004309d..5b8626e8c2 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 = 3 +setting_version = 4 [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 d3729b22d9..0b115ada4b 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 = 3 +setting_version = 4 [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 dfc3d3ce72..0b666d2e0b 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 = 3 +setting_version = 4 [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 3f9864b72e..de212df4af 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 = 3 +setting_version = 4 [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 2fe51a392e..3e0c669eeb 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 = 3 +setting_version = 4 [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 eebe1a8e38..3c4303e017 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 = 3 +setting_version = 4 [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 c35bf05908..5509f42aae 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 = 3 +setting_version = 4 [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 984a825085..645c3fe3ef 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 = 3 +setting_version = 4 [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 0eb264a9db..f46c3cfb8f 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 = 3 +setting_version = 4 [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 cb12f4aedc..ac8087d0c4 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 = 3 +setting_version = 4 [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 3ceb547378..daf60f24e6 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 = 3 +setting_version = 4 [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 deleted file mode 100644 index 071a72da0d..0000000000 --- a/resources/quality/ultimaker3/um3_aa0.8_PVA_Fast_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -weight = 0 -type = quality -quality_type = normal -material = generic_pva_ultimaker3_AA_0.8 -supported = False -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 deleted file mode 100644 index 485226fe3d..0000000000 --- a/resources/quality/ultimaker3/um3_aa0.8_PVA_Superdraft_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -weight = 0 -type = quality -quality_type = superdraft -material = generic_pva_ultimaker3_AA_0.8 -supported = False -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 0514a22b95..726ab82867 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 = 3 +setting_version = 4 [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 805f12ef81..269725daa9 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 = 3 +setting_version = 4 [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 3d1f29ee21..dd1737433a 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 = 3 +setting_version = 4 [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 deleted file mode 100644 index 65fbb4aa22..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.4_ABS_Fast_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_abs_ultimaker3_BB_0.4 -weight = 0 -supported = False -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 deleted file mode 100644 index d92791970e..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.4_ABS_Superdraft_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = superdraft -material = generic_abs_ultimaker3_BB_0.4 -weight = 0 -supported = False -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 deleted file mode 100644 index 3aa8fc43e0..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.4_CPEP_Fast_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_cpe_plus_ultimaker3_BB_0.4 -weight = 0 -supported = False -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 deleted file mode 100644 index c3bfa7a731..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.4_CPEP_Superdraft_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = superdraft -material = generic_cpe_plus_ultimaker3_BB_0.4 -weight = 0 -supported = False -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 deleted file mode 100644 index 6594cd4403..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.4_CPE_Fast_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_cpe_ultimaker3_BB_0.4 -weight = 0 -supported = False -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 deleted file mode 100644 index 4eda6ce767..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.4_CPE_Superdraft_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = superdraft -material = generic_cpe_ultimaker3_BB_0.4 -weight = 0 -supported = False -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 deleted file mode 100644 index ca4589f150..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.4_Nylon_Fast_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_nylon_ultimaker3_BB_0.4 -weight = 0 -supported = False -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 deleted file mode 100644 index 94dcfe2aff..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.4_Nylon_Superdraft_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = superdraft -material = generic_nylon_ultimaker3_BB_0.4 -weight = 0 -supported = False -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 deleted file mode 100644 index 46334b219c..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.4_PC_Fast_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_pc_ultimaker3_BB_0.4 -weight = 0 -supported = False -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 deleted file mode 100644 index 37998b3346..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.4_PLA_Fast_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_pla_ultimaker3_BB_0.4 -weight = 0 -supported = False -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 deleted file mode 100644 index 51ea4d609a..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.4_PLA_Superdraft_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = superdraft -material = generic_pla_ultimaker3_BB_0.4 -weight = 0 -supported = False -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 deleted file mode 100644 index be9f93c662..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.4_PP_Fast_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_pp_ultimaker3_BB_0.4 -weight = 0 -supported = False -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 deleted file mode 100644 index d2f54e3137..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.4_PP_Superdraft_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = superdraft -material = generic_pp_ultimaker3_BB_0.4 -weight = 0 -supported = False -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 ee57d2b177..c87f744932 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 = 3 +setting_version = 4 [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 90280ed2ee..23fa6d61d8 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 = 3 +setting_version = 4 [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 b8d7dd3ada..3ba82d65c6 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 = 3 +setting_version = 4 [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 32591a38b7..a709d5613b 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 = 3 +setting_version = 4 [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 deleted file mode 100644 index ba1eaaf548..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.4_TPU_Fast_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_tpu_ultimaker3_BB_0.4 -weight = 0 -supported = False -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 deleted file mode 100644 index 783d1dfa80..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.4_TPU_Superdraft_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = superdraft -material = generic_tpu_ultimaker3_BB_0.4 -weight = 0 -supported = False -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 deleted file mode 100644 index 7f4dc9f23e..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.8_ABS_Fast_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_abs_ultimaker3_BB_0.8 -weight = 0 -supported = False -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 deleted file mode 100644 index c0fe6216c2..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.8_ABS_Superdraft_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = superdraft -material = generic_abs_ultimaker3_BB_0.8 -weight = 0 -supported = False -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 deleted file mode 100644 index 4aa96f3a02..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.8_CPEP_Fast_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_cpe_plus_ultimaker3_BB_0.8 -weight = 0 -supported = False -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 deleted file mode 100644 index 5e2d079f20..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.8_CPEP_Superdraft_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = superdraft -material = generic_cpe_plus_ultimaker3_BB_0.8 -weight = 0 -supported = False -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 deleted file mode 100644 index 384d44cf93..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.8_CPE_Fast_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_cpe_ultimaker3_BB_0.8 -weight = 0 -supported = False -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 deleted file mode 100644 index 87bdedb204..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.8_CPE_Superdraft_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = superdraft -material = generic_cpe_ultimaker3_BB_0.8 -weight = 0 -supported = False -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 deleted file mode 100644 index 699bb575d2..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.8_Nylon_Fast_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_nylon_ultimaker3_BB_0.8 -weight = 0 -supported = False -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 deleted file mode 100644 index 261d63e6e7..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.8_Nylon_Superdraft_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = superdraft -material = generic_nylon_ultimaker3_BB_0.8 -weight = 0 -supported = False -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 deleted file mode 100644 index ac8515a1ea..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.8_PC_Fast_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_pc_ultimaker3_BB_0.8 -weight = 0 -supported = False -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 deleted file mode 100644 index 12d82993e6..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.8_PC_Superdraft_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = superdraft -material = generic_pc_ultimaker3_BB_0.8 -weight = 0 -supported = False -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 deleted file mode 100644 index f93273a33a..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.8_PLA_Fast_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_pla_ultimaker3_BB_0.8 -weight = 0 -supported = False -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 deleted file mode 100644 index 499af56b4b..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.8_PLA_Superdraft_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = superdraft -material = generic_pla_ultimaker3_BB_0.8 -weight = 0 -supported = False -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 deleted file mode 100644 index 5ffda57b8b..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.8_PP_Fast_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_pp_ultimaker3_BB_0.8 -weight = 0 -supported = False -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 deleted file mode 100644 index aa50edcf55..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.8_PP_Superdraft_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = superdraft -material = generic_pp_ultimaker3_BB_0.8 -weight = 0 -supported = False -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 a46218f31f..4cb296b4c7 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 = 3 +setting_version = 4 [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 4e2f13af07..5249517844 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 = 3 +setting_version = 4 [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 c2d66f59bb..c34e19b134 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 = 3 +setting_version = 4 [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 deleted file mode 100644 index 6be3b596f9..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.8_TPU_Fast_print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = normal -material = generic_tpu_ultimaker3_BB_0.8 -weight = 0 -supported = False -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 deleted file mode 100644 index e3484b3556..0000000000 --- a/resources/quality/ultimaker3/um3_bb0.8_TPU_Superdraft_Print.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 2 -name = Not Supported -definition = ultimaker3 - -[metadata] -type = quality -quality_type = superdraft -material = generic_tpu_ultimaker3_BB_0.8 -weight = 0 -supported = False -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 f9976d0fbc..b56775a987 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 = 3 +setting_version = 4 [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 0a30227322..12f1183364 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 = 3 +setting_version = 4 [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 a7028590af..cf6e6c45e0 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 = 3 +setting_version = 4 [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 c8bf165b55..fef2328923 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 = 3 +setting_version = 4 [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 f3ab433e92..be9acd4394 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 = 3 +setting_version = 4 [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 46199fcece..e2c828fc2d 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 = 3 +setting_version = 4 [values] layer_height = 0.3 diff --git a/resources/shaders/transparent_object.shader b/resources/shaders/transparent_object.shader index faa43bb46c..75fe7e4b2c 100644 --- a/resources/shaders/transparent_object.shader +++ b/resources/shaders/transparent_object.shader @@ -111,6 +111,7 @@ u_modelMatrix = model_matrix u_viewProjectionMatrix = view_projection_matrix u_normalMatrix = normal_matrix u_lightPosition = light_0_position +u_diffuseColor = diffuse_color [attributes] a_vertex = vertex diff --git a/resources/themes/cura-dark/theme.json b/resources/themes/cura-dark/theme.json index e61c48bffd..9e99945d3d 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -55,6 +55,15 @@ "button_disabled": [39, 44, 48, 255], "button_disabled_text": [255, 255, 255, 101], + "small_button": [39, 44, 48, 0], + "small_button_hover": [39, 44, 48, 255], + "small_button_active": [67, 72, 75, 255], + "small_button_active_hover": [67, 72, 75, 255], + "small_button_text": [255, 255, 255, 197], + "small_button_text_hover": [255, 255, 255, 255], + "small_button_text_active": [255, 255, 255, 255], + "small_button_text_active_hover": [255, 255, 255, 255], + "button_tooltip": [39, 44, 48, 255], "button_tooltip_border": [39, 44, 48, 255], "button_tooltip_text": [255, 255, 255, 172], @@ -133,6 +142,7 @@ "slider_groove_fill": [245, 245, 245, 255], "slider_handle": [255, 255, 255, 255], "slider_handle_hover": [77, 182, 226, 255], + "slider_handle_active": [68, 192, 255, 255], "slider_handle_border": [39, 44, 48, 255], "slider_text_background": [255, 255, 255, 255], @@ -194,6 +204,7 @@ "layerview_move_combing": [0, 0, 255, 255], "layerview_move_retraction": [128, 128, 255, 255], "layerview_support_interface": [64, 192, 255, 255], + "layerview_nozzle": [181, 166, 66, 120], "material_compatibility_warning": [255, 255, 255, 255], diff --git a/resources/themes/cura-light/icons/home.svg b/resources/themes/cura-light/icons/home.svg new file mode 100644 index 0000000000..a355aa07f6 --- /dev/null +++ b/resources/themes/cura-light/icons/home.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/themes/cura-light/icons/view_3d.svg b/resources/themes/cura-light/icons/view_3d.svg new file mode 100644 index 0000000000..cfe394e65d --- /dev/null +++ b/resources/themes/cura-light/icons/view_3d.svg @@ -0,0 +1,14 @@ + + + + icn_perspectives_white + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/view_front.svg b/resources/themes/cura-light/icons/view_front.svg new file mode 100644 index 0000000000..7de9abe0af --- /dev/null +++ b/resources/themes/cura-light/icons/view_front.svg @@ -0,0 +1,19 @@ + + + + icn_front_white + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/view_left.svg b/resources/themes/cura-light/icons/view_left.svg new file mode 100644 index 0000000000..1770da4c81 --- /dev/null +++ b/resources/themes/cura-light/icons/view_left.svg @@ -0,0 +1,21 @@ + + + + icn_left_white + Created with Sketch. + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/view_right.svg b/resources/themes/cura-light/icons/view_right.svg new file mode 100644 index 0000000000..5e0628e60e --- /dev/null +++ b/resources/themes/cura-light/icons/view_right.svg @@ -0,0 +1,21 @@ + + + + icn_right_white + Created with Sketch. + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/view_top.svg b/resources/themes/cura-light/icons/view_top.svg new file mode 100644 index 0000000000..3eb32e9878 --- /dev/null +++ b/resources/themes/cura-light/icons/view_top.svg @@ -0,0 +1,21 @@ + + + + icn_top_white + Created with Sketch. + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index 6d991c5541..7532f0dfaf 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -202,9 +202,8 @@ QtObject { height: Theme.getSize("topbar_button_icon").height Label { + id: button_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: @@ -227,6 +226,8 @@ QtObject { { visible: control.iconSource != "" id: icon + anchors.left: button_label.right + anchors.leftMargin: (icon.visible || overlayIcon.visible) ? Theme.getSize("default_margin").width : 0 color: UM.Theme.getColor("text_emphasis") opacity: !control.enabled ? 0.2 : 1.0 source: control.iconSource @@ -238,6 +239,8 @@ QtObject { UM.RecolorImage { id: overlayIcon + anchors.left: button_label.right + anchors.leftMargin: (icon.visible || overlayIcon.visible) ? Theme.getSize("default_margin").width : 0 visible: control.overlayIconSource != "" && control.iconSource != "" color: control.overlayColor opacity: !control.enabled ? 0.2 : 1.0 @@ -269,6 +272,7 @@ QtObject { arrowSize: Theme.getSize("button_tooltip_arrow").width color: Theme.getColor("button_tooltip") opacity: control.hovered ? 1.0 : 0.0; + visible: control.text != "" width: control.hovered ? button_tip.width + Theme.getSize("button_tooltip").width : 0 height: Theme.getSize("button_tooltip").height @@ -294,16 +298,26 @@ QtObject { anchors.fill: parent; property bool down: control.pressed || (control.checkable && control.checked); - color: { - if(control.customColor !== undefined && control.customColor !== null) { + color: + { + if(control.customColor !== undefined && control.customColor !== null) + { return control.customColor - } else if(control.checkable && control.checked && control.hovered) { + } + else if(control.checkable && control.checked && control.hovered) + { return Theme.getColor("button_active_hover"); - } else if(control.pressed || (control.checkable && control.checked)) { + } + else if(control.pressed || (control.checkable && control.checked)) + { return Theme.getColor("button_active"); - } else if(control.hovered) { + } + else if(control.hovered) + { return Theme.getColor("button_hover"); - } else { + } + else + { return Theme.getColor("button"); } } @@ -380,6 +394,111 @@ QtObject { } } + property Component small_tool_button: Component { + ButtonStyle { + background: Item { + implicitWidth: Theme.getSize("small_button").width; + implicitHeight: Theme.getSize("small_button").height; + + Rectangle { + id: smallButtonFace; + + anchors.fill: parent; + property bool down: control.pressed || (control.checkable && control.checked); + + color: + { + if(control.customColor !== undefined && control.customColor !== null) + { + return control.customColor + } + else if(control.checkable && control.checked && control.hovered) + { + return Theme.getColor("small_button_active_hover"); + } + else if(control.pressed || (control.checkable && control.checked)) + { + return Theme.getColor("small_button_active"); + } + else if(control.hovered) + { + return Theme.getColor("small_button_hover"); + } + else + { + return Theme.getColor("small_button"); + } + } + Behavior on color { ColorAnimation { duration: 50; } } + + border.width: (control.hasOwnProperty("needBorder") && control.needBorder) ? 2 * screenScaleFactor : 0 + border.color: Theme.getColor("tool_button_border") + + UM.RecolorImage { + id: smallToolButtonArrow + + width: 5 + height: 5 + sourceSize.width: 5 + sourceSize.height: 5 + visible: control.menu != null; + color: + { + if(control.checkable && control.checked && control.hovered) + { + return Theme.getColor("small_button_text_active_hover"); + } + else if(control.pressed || (control.checkable && control.checked)) + { + return Theme.getColor("small_button_text_active"); + } + else if(control.hovered) + { + return Theme.getColor("small_button_text_hover"); + } + else + { + return Theme.getColor("small_button_text"); + } + } + source: Theme.getIcon("arrow_bottom") + } + } + } + + label: Item { + UM.RecolorImage { + anchors.centerIn: parent; + opacity: !control.enabled ? 0.2 : 1.0 + source: control.iconSource; + width: Theme.getSize("small_button_icon").width; + height: Theme.getSize("small_button_icon").height; + color: + { + if(control.checkable && control.checked && control.hovered) + { + return Theme.getColor("small_button_text_active_hover"); + } + else if(control.pressed || (control.checkable && control.checked)) + { + return Theme.getColor("small_button_text_active"); + } + else if(control.hovered) + { + return Theme.getColor("small_button_text_hover"); + } + else + { + return Theme.getColor("small_button_text"); + } + } + + sourceSize: Theme.getSize("small_button_icon") + } + } + } + } + property Component progressbar: Component{ ProgressBarStyle { background: Rectangle { @@ -752,6 +871,49 @@ QtObject { } } + property Component partially_checkbox: Component { + CheckBoxStyle { + background: Item { } + indicator: Rectangle { + implicitWidth: Theme.getSize("checkbox").width; + implicitHeight: Theme.getSize("checkbox").height; + + color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_hover") : Theme.getColor("checkbox"); + Behavior on color { ColorAnimation { duration: 50; } } + + radius: control.exclusiveGroup ? Theme.getSize("checkbox").width / 2 : 0 + + border.width: Theme.getSize("default_lining").width; + border.color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_border_hover") : Theme.getColor("checkbox_border"); + + UM.RecolorImage { + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + width: parent.width / 2.5 + height: parent.height / 2.5 + sourceSize.width: width + sourceSize.height: width + color: Theme.getColor("checkbox_mark") + source: { + if (control.checkbox_state == 2){ + return Theme.getIcon("solid") + } + else{ + return control.exclusiveGroup ? Theme.getIcon("dot") : Theme.getIcon("check") + } + } + opacity: control.checked + Behavior on opacity { NumberAnimation { duration: 100; } } + } + } + label: Label { + text: control.text; + color: Theme.getColor("checkbox_text"); + font: Theme.getFont("default"); + } + } + } + property Component slider: Component { SliderStyle { groove: Rectangle { diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index b41ea96846..53bef1e7d9 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -78,7 +78,7 @@ "text_pressed": [12, 169, 227, 255], "text_subtext": [0, 0, 0, 255], "text_emphasis": [255, 255, 255, 255], - "text_scene": [24, 41, 77, 255], + "text_scene": [31, 36, 39, 255], "text_scene_hover": [70, 84, 113, 255], "error": [255, 140, 0, 255], @@ -100,9 +100,18 @@ "button_text_hover": [255, 255, 255, 255], "button_text_active": [255, 255, 255, 255], "button_text_active_hover": [255, 255, 255, 255], - "button_disabled": [24, 41, 77, 255], + "button_disabled": [31, 36, 39, 255], "button_disabled_text": [255, 255, 255, 101], + "small_button": [31, 36, 39, 0], + "small_button_hover": [68, 72, 75, 255], + "small_button_active": [68, 72, 75, 255], + "small_button_active_hover": [68, 72, 75, 255], + "small_button_text": [31, 36, 39, 197], + "small_button_text_hover": [255, 255, 255, 255], + "small_button_text_active": [255, 255, 255, 255], + "small_button_text_active_hover": [255, 255, 255, 255], + "button_tooltip": [31, 36, 39, 255], "button_tooltip_border": [68, 192, 255, 255], "button_tooltip_text": [192, 193, 194, 255], @@ -116,7 +125,7 @@ "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_text": [31, 36, 39, 255], "action_button_hovered_border": [12, 169, 227, 255], "action_button_active": [255, 255, 255, 255], "action_button_active_text": [0, 0, 0, 255], @@ -134,7 +143,7 @@ "print_button_ready_pressed_border": [30, 186, 245, 243], "scrollbar_background": [255, 255, 255, 255], - "scrollbar_handle": [24, 41, 77, 255], + "scrollbar_handle": [31, 36, 39, 255], "scrollbar_handle_hover": [12, 159, 227, 255], "scrollbar_handle_down": [12, 159, 227, 255], @@ -143,11 +152,11 @@ "setting_category_hover": [245, 245, 245, 255], "setting_category_active": [245, 245, 245, 255], "setting_category_active_hover": [245, 245, 245, 255], - "setting_category_text": [24, 41, 77, 255], + "setting_category_text": [31, 36, 39, 255], "setting_category_disabled_text": [24, 41, 77, 101], - "setting_category_hover_text": [24, 41, 77, 255], - "setting_category_active_text": [24, 41, 77, 255], - "setting_category_active_hover_text": [24, 41, 77, 255], + "setting_category_hover_text": [31, 36, 39, 255], + "setting_category_active_text": [31, 36, 39, 255], + "setting_category_active_hover_text": [31, 36, 39, 255], "setting_category_border": [245, 245, 245, 255], "setting_category_disabled_border": [245, 245, 245, 255], "setting_category_hover_border": [12, 159, 227, 255], @@ -155,7 +164,7 @@ "setting_category_active_hover_border": [12, 159, 227, 255], "setting_control": [255, 255, 255, 255], - "setting_control_selected": [24, 41, 77, 255], + "setting_control_selected": [31, 36, 39, 255], "setting_control_highlight": [255, 255, 255, 255], "setting_control_border": [127, 127, 127, 255], "setting_control_border_highlight": [12, 169, 227, 255], @@ -176,13 +185,14 @@ "material_compatibility_warning": [0, 0, 0, 255], "progressbar_background": [245, 245, 245, 255], - "progressbar_control": [24, 41, 77, 255], + "progressbar_control": [31, 36, 39, 255], "slider_groove": [245, 245, 245, 255], "slider_groove_border": [127, 127, 127, 255], "slider_groove_fill": [127, 127, 127, 255], "slider_handle": [0, 0, 0, 255], "slider_handle_hover": [77, 182, 226, 255], + "slider_handle_active": [68, 192, 255, 255], "slider_handle_border": [39, 44, 48, 255], "slider_text_background": [255, 255, 255, 255], @@ -203,9 +213,9 @@ "mode_switch_hover": [255, 255, 255, 255], "mode_switch_border": [127, 127, 127, 255], "mode_switch_border_hover": [12, 169, 227, 255], - "mode_switch_handle": [24, 41, 77, 255], - "mode_switch_text": [24, 41, 77, 255], - "mode_switch_text_hover": [24, 41, 77, 255], + "mode_switch_handle": [31, 36, 39, 255], + "mode_switch_text": [31, 36, 39, 255], + "mode_switch_text_hover": [31, 36, 39, 255], "mode_switch_text_checked": [12, 169, 227, 255], "tooltip": [68, 192, 255, 255], @@ -256,6 +266,7 @@ "model_unslicable": [122, 122, 122, 255], "model_unslicable_alt": [172, 172, 127, 255], "model_selection_outline": [12, 169, 227, 255], + "model_non_printing": [122, 122, 122, 255], "xray": [26, 26, 62, 255], "xray_error": [255, 0, 0, 255], @@ -271,7 +282,8 @@ "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], + "layerview_nozzle": [181, 166, 66, 50] }, "sizes": { @@ -321,6 +333,9 @@ "button_icon": [2.5, 2.5], "button_lining": [0, 0], + "small_button": [2, 2], + "small_button_icon": [1.5, 1.5], + "topbar_logo_right_margin": [3, 0], "topbar_button": [8, 4], "topbar_button_icon": [1.2, 1.2], @@ -342,11 +357,13 @@ "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], + "slider_layerview_margin": [1.0, 1.5], - "layerview_menu_size": [15, 19.5], - "layerview_menu_size_material_color_mode": [15, 15.5], + "layerview_menu_size": [15, 20], + "layerview_menu_size_material_color_mode": [15, 16], + "layerview_menu_size_collapsed": [15, 6], "layerview_menu_size_compatibility": [22, 22.0], + "layerview_menu_size_compatibility_collapsed": [15, 3.5], "layerview_legend_size": [1.0, 1.0], "layerview_row": [11.0, 1.5], "layerview_row_spacing": [0.0, 0.5], @@ -374,6 +391,11 @@ "infill_button_margin": [0.5, 0.5], - "jobspecs_line": [2.0, 2.0] + "jobspecs_line": [2.0, 2.0], + + "objects_menu_size": [20, 40], + "objects_menu_size_collapsed": [20, 17], + "build_plate_selection_size": [15, 5], + "objects_menu_button": [0.3, 2.7] } } diff --git a/resources/variants/cartesio_0.25.inst.cfg b/resources/variants/cartesio_0.25.inst.cfg index a266b10b24..0e082e5afa 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 = 3 +setting_version = 4 [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 fe52e83622..27d07c0328 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 = 3 +setting_version = 4 [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 8a260c1e17..e96c78d922 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 = 3 +setting_version = 4 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/fabtotum_hyb35.inst.cfg b/resources/variants/fabtotum_hyb35.inst.cfg index 9d46205941..01e94728da 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 = 3 +setting_version = 4 [values] machine_nozzle_size = 0.35 diff --git a/resources/variants/fabtotum_lite04.inst.cfg b/resources/variants/fabtotum_lite04.inst.cfg index 9209b2fffc..ee270a9ead 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 = 3 +setting_version = 4 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/fabtotum_lite06.inst.cfg b/resources/variants/fabtotum_lite06.inst.cfg index 8c03f33794..49722a50d1 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 = 3 +setting_version = 4 [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/fabtotum_pro02.inst.cfg b/resources/variants/fabtotum_pro02.inst.cfg index 84e1583701..376588fe71 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 = 3 +setting_version = 4 [values] machine_nozzle_size = 0.2 diff --git a/resources/variants/fabtotum_pro04.inst.cfg b/resources/variants/fabtotum_pro04.inst.cfg index 3e136e951a..54294c572c 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 = 3 +setting_version = 4 [values] machine_nozzle_size = 0.4 diff --git a/resources/variants/fabtotum_pro06.inst.cfg b/resources/variants/fabtotum_pro06.inst.cfg index 7aa789fd17..f1055b6ade 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 = 3 +setting_version = 4 [values] machine_nozzle_size = 0.6 diff --git a/resources/variants/fabtotum_pro08.inst.cfg b/resources/variants/fabtotum_pro08.inst.cfg index f1b9d195e7..ef7eb172be 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 = 3 +setting_version = 4 [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 e487b6abdc..ce9e82e59a 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 = 3 +setting_version = 4 [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 2db00fa0e3..60f9793b2a 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 = 3 +setting_version = 4 [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 1637f0ceaa..04084867dd 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 = 3 +setting_version = 4 [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 b074214138..f21d85e258 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 = 3 +setting_version = 4 [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 6bd3b06d22..04128cc297 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 = 3 +setting_version = 4 [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 66d05219b1..400069d60b 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 = 3 +setting_version = 4 [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 6496025820..bdff9a5795 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 = 3 +setting_version = 4 [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 47be42efd7..2af9a75024 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 = 3 +setting_version = 4 [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 cac05731e8..e0753f1c28 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 = 3 +setting_version = 4 [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 5baaf53163..43c033b799 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 = 3 +setting_version = 4 [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 173e69d893..7f1bff4b0c 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 = 3 +setting_version = 4 [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 88e3d291d6..f6747d059d 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 = 3 +setting_version = 4 [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 54b6b90b62..706e4b8aa6 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 = 3 +setting_version = 4 [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 5616f01699..287c3155b8 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 = 3 +setting_version = 4 [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 4394090fa4..1d4617c86b 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 = 3 +setting_version = 4 [values] coasting_min_volume = 0.17 diff --git a/resources/variants/ultimaker2_plus_0.4.inst.cfg b/resources/variants/ultimaker2_plus_0.4.inst.cfg index ab3dd807ab..75a665ad95 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 = 3 +setting_version = 4 [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 c3324bd7a8..60bbbaa049 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 = 3 +setting_version = 4 [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 d0cd2424bd..339b320af3 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 = 3 +setting_version = 4 [values] machine_nozzle_size = 0.8 diff --git a/resources/variants/ultimaker3_aa0.25.inst.cfg b/resources/variants/ultimaker3_aa0.25.inst.cfg new file mode 100644 index 0000000000..e6f852c02c --- /dev/null +++ b/resources/variants/ultimaker3_aa0.25.inst.cfg @@ -0,0 +1,50 @@ +[general] +name = AA 0.25 +version = 2 +definition = ultimaker3 + +[metadata] +author = ultimaker +type = variant +setting_version = 4 + +[values] +brim_width = 7 +infill_line_width = 0.23 +layer_height_0 = 0.17 +line_width = 0.23 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +machine_nozzle_id = AA 0.25 +machine_nozzle_size = 0.25 +machine_nozzle_tip_outer_diameter = 0.65 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 5 +raft_airgap = 0.3 +raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 +raft_interface_line_spacing = =raft_interface_line_width + 0.2 +raft_interface_line_width = =line_width * 2 +raft_interface_thickness = =layer_height * 1.5 +raft_jerk = =jerk_print +raft_margin = 15 +raft_surface_layers = 2 +retraction_count_max = 25 +retraction_extrusion_window = 1 +retraction_min_travel = 0.7 +retraction_prime_speed = =retraction_speed +skin_overlap = 15 +speed_layer_0 = 20 +speed_print = 55 +speed_topbottom = 20 +speed_wall = =math.ceil(speed_print * 30 / 55) +support_angle = 60 +support_bottom_distance = =support_z_distance / 2 +support_pattern = zigzag +support_top_distance = =support_z_distance +support_use_towers = True +support_z_distance = =layer_height * 2 +switch_extruder_prime_speed = =switch_extruder_retraction_speeds +switch_extruder_retraction_amount = =machine_heat_zone_length +top_bottom_thickness = 1.2 +wall_line_width_x = 0.23 +wall_thickness = 1.3 diff --git a/resources/variants/ultimaker3_aa0.8.inst.cfg b/resources/variants/ultimaker3_aa0.8.inst.cfg index 980cfd1a59..de7dfcc364 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 = 3 +setting_version = 4 [values] acceleration_enabled = True diff --git a/resources/variants/ultimaker3_aa04.inst.cfg b/resources/variants/ultimaker3_aa04.inst.cfg index 01299f0853..289ae185b0 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 = 3 +setting_version = 4 [values] brim_width = 7 diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg index 24c175c2b8..2cb3103dcf 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 = 3 +setting_version = 4 [values] acceleration_enabled = True diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg index 39d33b10f8..5dc0b2832a 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 = 3 +setting_version = 4 [values] acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) diff --git a/resources/variants/ultimaker3_extended_aa0.25.inst.cfg b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg new file mode 100644 index 0000000000..631768346e --- /dev/null +++ b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg @@ -0,0 +1,40 @@ +[general] +name = AA 0.25 +version = 2 +definition = ultimaker3_extended + +[metadata] +author = ultimaker +type = variant +setting_version = 4 + +[values] +brim_width = 7 +infill_line_width = 0.23 +infill_overlap = 0 +layer_height_0 = 0.17 +line_width = 0.23 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +machine_nozzle_id = AA 0.25 +machine_nozzle_size = 0.25 +machine_nozzle_tip_outer_diameter = 0.65 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 5 +raft_interface_thickness = =layer_height * 1.5 +retraction_count_max = 25 +retraction_extrusion_window = 1 +retraction_min_travel = 0.7 +skin_overlap = 15 +speed_layer_0 = 20 +speed_print = 55 +speed_topbottom = 20 +speed_wall = =math.ceil(speed_print * 30 / 55) +support_angle = 60 +support_bottom_distance = =support_z_distance / 2 +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 +top_bottom_thickness = 1.2 +wall_line_width_x = 0.23 +wall_thickness = 1.3 + diff --git a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg index 6bd491032e..b2ad86ff01 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 = 3 +setting_version = 4 [values] acceleration_enabled = True diff --git a/resources/variants/ultimaker3_extended_aa04.inst.cfg b/resources/variants/ultimaker3_extended_aa04.inst.cfg index 15c53b5930..fdea4de08c 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 = 3 +setting_version = 4 [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 e75545b7f9..6ab16c4f10 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 = 3 +setting_version = 4 [values] acceleration_enabled = True diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg index a62480bd75..ee2f138754 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 = 3 +setting_version = 4 [values] acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) diff --git a/tests/Settings/TestCuraContainerRegistry.py b/tests/Settings/TestCuraContainerRegistry.py index a6d33afc6d..9e5692b565 100644 --- a/tests/Settings/TestCuraContainerRegistry.py +++ b/tests/Settings/TestCuraContainerRegistry.py @@ -6,7 +6,9 @@ import pytest #This module contains unit tests. import shutil #To copy files to make a temporary file. import unittest.mock #To mock and monkeypatch stuff. import urllib.parse +import copy +import cura.CuraApplication from cura.Settings.CuraContainerRegistry import CuraContainerRegistry #The class we're testing. from cura.Settings.ExtruderStack import ExtruderStack #Testing for returning the correct types of stacks. from cura.Settings.GlobalStack import GlobalStack #Testing for returning the correct types of stacks. @@ -15,6 +17,32 @@ import UM.Settings.InstanceContainer #Creating instance containers to register. import UM.Settings.ContainerRegistry #Making empty container stacks. import UM.Settings.ContainerStack #Setting the container registry here properly. from UM.Settings.DefinitionContainer import DefinitionContainer +from UM.Settings.ContainerRegistry import ContainerRegistry + +def creteEmptyContainers(): + empty_container = ContainerRegistry.getInstance().getEmptyInstanceContainer() + empty_variant_container = copy.deepcopy(empty_container) + empty_variant_container.setMetaDataEntry("id", "empty_variant") + empty_variant_container.addMetaDataEntry("type", "variant") + ContainerRegistry.getInstance().addContainer(empty_variant_container) + + empty_material_container = copy.deepcopy(empty_container) + empty_material_container.setMetaDataEntry("id", "empty_material") + empty_material_container.addMetaDataEntry("type", "material") + ContainerRegistry.getInstance().addContainer(empty_material_container) + + empty_quality_container = copy.deepcopy(empty_container) + empty_quality_container.setMetaDataEntry("id", "empty_quality") + empty_quality_container.setName("Not Supported") + empty_quality_container.addMetaDataEntry("quality_type", "not_supported") + empty_quality_container.addMetaDataEntry("type", "quality") + empty_quality_container.addMetaDataEntry("supported", False) + ContainerRegistry.getInstance().addContainer(empty_quality_container) + + empty_quality_changes_container = copy.deepcopy(empty_container) + empty_quality_changes_container.setMetaDataEntry("id", "empty_quality_changes") + empty_quality_changes_container.addMetaDataEntry("type", "quality_changes") + ContainerRegistry.getInstance().addContainer(empty_quality_changes_container) ## Gives a fresh CuraContainerRegistry instance. @pytest.fixture() @@ -37,6 +65,7 @@ def teardown(): ## Tests whether addContainer properly converts to ExtruderStack. def test_addContainerExtruderStack(container_registry, definition_container): + creteEmptyContainers() container_registry.addContainer(definition_container) container_stack = UM.Settings.ContainerStack.ContainerStack(stack_id = "Test Container Stack") #A container we're going to convert. @@ -74,7 +103,7 @@ def test_addContainerGoodSettingVersion(container_registry, definition_container instance = UM.Settings.InstanceContainer.InstanceContainer(container_id = "Test Instance") instance.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) - instance.setDefinition(definition_container) + instance.setDefinition(definition_container.getId()) mock_super_add_container = unittest.mock.MagicMock() #Take the role of the Uranium-ContainerRegistry where the resulting containers get registered. with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): @@ -89,7 +118,7 @@ def test_addContainerNoSettingVersion(container_registry, definition_container): instance = UM.Settings.InstanceContainer.InstanceContainer(container_id = "Test Instance") #Don't add setting_version metadata. - instance.setDefinition(definition_container) + instance.setDefinition(definition_container.getId()) mock_super_add_container = unittest.mock.MagicMock() #Take the role of the Uranium-ContainerRegistry where the resulting container should not get registered. with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): @@ -104,7 +133,7 @@ def test_addContainerBadSettingVersion(container_registry, definition_container) instance = UM.Settings.InstanceContainer.InstanceContainer(container_id = "Test Instance") instance.addMetaDataEntry("setting_version", 9001) #Wrong version! - instance.setDefinition(definition_container) + instance.setDefinition(definition_container.getId()) mock_super_add_container = unittest.mock.MagicMock() #Take the role of the Uranium-ContainerRegistry where the resulting container should not get registered. with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): @@ -113,72 +142,36 @@ def test_addContainerBadSettingVersion(container_registry, definition_container) mock_super_add_container.assert_not_called() #Should not get passed on to UM.Settings.ContainerRegistry.addContainer, because the setting_version doesn't match its definition! ## Tests whether loading gives objects of the correct type. -@pytest.mark.parametrize("filename, output_class", [ - ("ExtruderLegacy.stack.cfg", ExtruderStack), - ("MachineLegacy.stack.cfg", GlobalStack), - ("Left.extruder.cfg", ExtruderStack), - ("Global.global.cfg", GlobalStack), - ("Global.stack.cfg", GlobalStack) -]) -def test_loadTypes(filename, output_class, container_registry): - #Mock some dependencies. - Resources.getAllResourcesOfType = unittest.mock.MagicMock(return_value = [os.path.join(os.path.dirname(os.path.abspath(__file__)), "stacks", filename)]) #Return just this tested file. - - def findContainers(container_type = 0, id = None): - if id == "some_instance": - return [UM.Settings.ContainerRegistry._EmptyInstanceContainer(id)] - elif id == "some_definition": - return [DefinitionContainer(container_id = id)] - else: - return [] - - container_registry.findContainers = findContainers - - with unittest.mock.patch("cura.Settings.GlobalStack.GlobalStack.findContainer"): - with unittest.mock.patch("os.remove"): - container_registry.load() - - #Check whether the resulting type was correct. - stack_id = filename.split(".")[0] - for container in container_registry._containers: #Stupid ContainerRegistry class doesn't expose any way of getting at this except by prodding the privates. - if container.getId() == stack_id: #This is the one we're testing. - assert type(container) == output_class - break - else: - assert False #Container stack with specified ID was not loaded. - -## Tests whether loading a legacy file moves the upgraded file properly. -def test_loadLegacyFileRenamed(container_registry): - #Create a temporary file for the registry to load. - stacks_folder = os.path.join(os.path.dirname(os.path.abspath(__file__)), "stacks") - temp_file = os.path.join(stacks_folder, "temporary.stack.cfg") - temp_file_source = os.path.join(stacks_folder, "MachineLegacy.stack.cfg") - shutil.copyfile(temp_file_source, temp_file) - - #Mock some dependencies. - UM.Settings.ContainerStack.setContainerRegistry(container_registry) - Resources.getAllResourcesOfType = unittest.mock.MagicMock(return_value = [temp_file]) #Return a temporary file that we'll make for this test. - - def findContainers(container_type = 0, id = None): - if id == "MachineLegacy": - return None - - container = UM.Settings.ContainerRegistry._EmptyInstanceContainer(id) - container.getNextStack = unittest.mock.MagicMock() - return [container] - - old_find_containers = container_registry.findContainers - container_registry.findContainers = findContainers - - with unittest.mock.patch("cura.Settings.GlobalStack.GlobalStack.findContainer"): - container_registry.load() - - container_registry.findContainers = old_find_containers - - container_registry.saveAll() - print("all containers in registry", container_registry._containers) - assert not os.path.isfile(temp_file) - mime_type = container_registry.getMimeTypeForContainer(GlobalStack) - file_name = urllib.parse.quote_plus("MachineLegacy") + "." + mime_type.preferredSuffix - path = Resources.getStoragePath(Resources.ContainerStacks, file_name) - assert os.path.isfile(path) +# @pytest.mark.parametrize("filename, output_class", [ +# ("ExtruderLegacy.stack.cfg", ExtruderStack), +# ("MachineLegacy.stack.cfg", GlobalStack), +# ("Left.extruder.cfg", ExtruderStack), +# ("Global.global.cfg", GlobalStack), +# ("Global.stack.cfg", GlobalStack) +# ]) +# def test_loadTypes(filename, output_class, container_registry): +# #Mock some dependencies. +# Resources.getAllResourcesOfType = unittest.mock.MagicMock(return_value = [os.path.join(os.path.dirname(os.path.abspath(__file__)), "stacks", filename)]) #Return just this tested file. +# +# def findContainers(container_type = 0, id = None): +# if id == "some_instance": +# return [UM.Settings.ContainerRegistry._EmptyInstanceContainer(id)] +# elif id == "some_definition": +# return [DefinitionContainer(container_id = id)] +# else: +# return [] +# +# container_registry.findContainers = findContainers +# +# with unittest.mock.patch("cura.Settings.GlobalStack.GlobalStack.findContainer"): +# with unittest.mock.patch("os.remove"): +# container_registry.load() +# +# #Check whether the resulting type was correct. +# stack_id = filename.split(".")[0] +# for container_id, container in container_registry._containers.items(): #Stupid ContainerRegistry class doesn't expose any way of getting at this except by prodding the privates. +# if container_id == stack_id: #This is the one we're testing. +# assert type(container) == output_class +# break +# else: +# assert False #Container stack with specified ID was not loaded. \ No newline at end of file diff --git a/tests/Settings/TestExtruderStack.py b/tests/Settings/TestExtruderStack.py index 66b4d51b04..2a8d19b80f 100644 --- a/tests/Settings/TestExtruderStack.py +++ b/tests/Settings/TestExtruderStack.py @@ -3,7 +3,9 @@ import pytest #This module contains automated tests. import unittest.mock #For the mocking and monkeypatching functionality. +import copy +import cura.CuraApplication import UM.Settings.ContainerRegistry #To create empty instance containers. import UM.Settings.ContainerStack #To set the container registry the container stacks use. from UM.Settings.DefinitionContainer import DefinitionContainer #To check against the class of DefinitionContainer. @@ -12,6 +14,7 @@ import cura.Settings.ExtruderStack #The module we're testing. from cura.Settings.Exceptions import InvalidContainerError, InvalidOperationError #To check whether the correct exceptions are raised. from cura.Settings.ExtruderManager import ExtruderManager +from UM.Settings.ContainerRegistry import ContainerRegistry ## Fake container registry that always provides all containers you ask of. @pytest.yield_fixture() @@ -32,6 +35,7 @@ def container_registry(): ## An empty extruder stack to test with. @pytest.fixture() def extruder_stack() -> cura.Settings.ExtruderStack.ExtruderStack: + creteEmptyContainers() return cura.Settings.ExtruderStack.ExtruderStack("TestStack") ## Gets an instance container with a specified container type. @@ -43,6 +47,31 @@ def getInstanceContainer(container_type) -> InstanceContainer: container.addMetaDataEntry("type", container_type) return container +def creteEmptyContainers(): + empty_container = ContainerRegistry.getInstance().getEmptyInstanceContainer() + empty_variant_container = copy.deepcopy(empty_container) + empty_variant_container.setMetaDataEntry("id", "empty_variant") + empty_variant_container.addMetaDataEntry("type", "variant") + ContainerRegistry.getInstance().addContainer(empty_variant_container) + + empty_material_container = copy.deepcopy(empty_container) + empty_material_container.setMetaDataEntry("id", "empty_material") + empty_material_container.addMetaDataEntry("type", "material") + ContainerRegistry.getInstance().addContainer(empty_material_container) + + empty_quality_container = copy.deepcopy(empty_container) + empty_quality_container.setMetaDataEntry("id", "empty_quality") + empty_quality_container.setName("Not Supported") + empty_quality_container.addMetaDataEntry("quality_type", "not_supported") + empty_quality_container.addMetaDataEntry("type", "quality") + empty_quality_container.addMetaDataEntry("supported", False) + ContainerRegistry.getInstance().addContainer(empty_quality_container) + + empty_quality_changes_container = copy.deepcopy(empty_container) + empty_quality_changes_container.setMetaDataEntry("id", "empty_quality_changes") + empty_quality_changes_container.addMetaDataEntry("type", "quality_changes") + ContainerRegistry.getInstance().addContainer(empty_quality_changes_container) + class DefinitionContainerSubClass(DefinitionContainer): def __init__(self): super().__init__(container_id = "SubDefinitionContainer") @@ -251,7 +280,7 @@ def test_getPropertyFallThrough(extruder_stack): for type_id, type_name in container_indices.IndexTypeMap.items(): container = unittest.mock.MagicMock() # Return type_id when asking for value and -1 when asking for limit_to_extruder - container.getProperty = lambda key, property, type_id = type_id: type_id if (key == "layer_height" and property == "value") else (None if property != "limit_to_extruder" else "-1") #Returns the container type ID as layer height, in order to identify it. + container.getProperty = lambda key, property, context = None, type_id = type_id: type_id if (key == "layer_height" and property == "value") else (None if property != "limit_to_extruder" else "-1") #Returns the container type ID as layer height, in order to identify it. container.hasProperty = lambda key, property: key == "layer_height" container.getMetaDataEntry = unittest.mock.MagicMock(return_value = type_name) mock_layer_heights[type_id] = container diff --git a/tests/Settings/TestGlobalStack.py b/tests/Settings/TestGlobalStack.py index 89dd76aec1..9b0735c8f2 100755 --- a/tests/Settings/TestGlobalStack.py +++ b/tests/Settings/TestGlobalStack.py @@ -3,7 +3,9 @@ import pytest #This module contains unit tests. import unittest.mock #To monkeypatch some mocks in place of dependencies. +import copy +import cura.CuraApplication import cura.Settings.GlobalStack #The module we're testing. import cura.Settings.CuraContainerStack #To get the list of container types. from cura.Settings.Exceptions import TooManyExtrudersError, InvalidContainerError, InvalidOperationError #To test raising these errors. @@ -13,6 +15,7 @@ from UM.Settings.SettingInstance import InstanceState import UM.Settings.ContainerRegistry import UM.Settings.ContainerStack import UM.Settings.SettingDefinition #To add settings to the definition. +from UM.Settings.ContainerRegistry import ContainerRegistry ## Fake container registry that always provides all containers you ask of. @pytest.yield_fixture() @@ -33,6 +36,7 @@ def container_registry(): #An empty global stack to test with. @pytest.fixture() def global_stack() -> cura.Settings.GlobalStack.GlobalStack: + creteEmptyContainers() return cura.Settings.GlobalStack.GlobalStack("TestStack") ## Gets an instance container with a specified container type. @@ -44,6 +48,31 @@ def getInstanceContainer(container_type) -> InstanceContainer: container.addMetaDataEntry("type", container_type) return container +def creteEmptyContainers(): + empty_container = ContainerRegistry.getInstance().getEmptyInstanceContainer() + empty_variant_container = copy.deepcopy(empty_container) + empty_variant_container.setMetaDataEntry("id", "empty_variant") + empty_variant_container.addMetaDataEntry("type", "variant") + ContainerRegistry.getInstance().addContainer(empty_variant_container) + + empty_material_container = copy.deepcopy(empty_container) + empty_material_container.setMetaDataEntry("id", "empty_material") + empty_material_container.addMetaDataEntry("type", "material") + ContainerRegistry.getInstance().addContainer(empty_material_container) + + empty_quality_container = copy.deepcopy(empty_container) + empty_quality_container.setMetaDataEntry("id", "empty_quality") + empty_quality_container.setName("Not Supported") + empty_quality_container.addMetaDataEntry("quality_type", "not_supported") + empty_quality_container.addMetaDataEntry("type", "quality") + empty_quality_container.addMetaDataEntry("supported", False) + ContainerRegistry.getInstance().addContainer(empty_quality_container) + + empty_quality_changes_container = copy.deepcopy(empty_container) + empty_quality_changes_container.setMetaDataEntry("id", "empty_quality_changes") + empty_quality_changes_container.addMetaDataEntry("type", "quality_changes") + ContainerRegistry.getInstance().addContainer(empty_quality_changes_container) + class DefinitionContainerSubClass(DefinitionContainer): def __init__(self): super().__init__(container_id = "SubDefinitionContainer") @@ -63,7 +92,7 @@ def test_addContainer(global_stack): ## Tests adding extruders to the global stack. def test_addExtruder(global_stack): mock_definition = unittest.mock.MagicMock() - mock_definition.getProperty = lambda key, property: 2 if key == "machine_extruder_count" and property == "value" else None + mock_definition.getProperty = lambda key, property, context = None: 2 if key == "machine_extruder_count" and property == "value" else None with unittest.mock.patch("cura.Settings.CuraContainerStack.DefinitionContainer", unittest.mock.MagicMock): global_stack.definition = mock_definition @@ -318,7 +347,7 @@ def test_getPropertyFallThrough(global_stack): container_indexes = cura.Settings.CuraContainerStack._ContainerIndexes #Cache. for type_id, type_name in container_indexes.IndexTypeMap.items(): container = unittest.mock.MagicMock() - container.getProperty = lambda key, property, type_id = type_id: type_id if (key == "layer_height" and property == "value") else None #Returns the container type ID as layer height, in order to identify it. + container.getProperty = lambda key, property, context = None, type_id = type_id: type_id if (key == "layer_height" and property == "value") else None #Returns the container type ID as layer height, in order to identify it. container.hasProperty = lambda key, property: key == "layer_height" container.getMetaDataEntry = unittest.mock.MagicMock(return_value = type_name) mock_layer_heights[type_id] = container @@ -355,7 +384,7 @@ def test_getPropertyFallThrough(global_stack): ## In definitions, test whether having no resolve allows us to find the value. def test_getPropertyNoResolveInDefinition(global_stack): value = unittest.mock.MagicMock() #Just sets the value for bed temperature. - value.getProperty = lambda key, property: 10 if (key == "material_bed_temperature" and property == "value") else None + value.getProperty = lambda key, property, context = None: 10 if (key == "material_bed_temperature" and property == "value") else None with unittest.mock.patch("cura.Settings.CuraContainerStack.DefinitionContainer", unittest.mock.MagicMock): #To guard against the type checking. global_stack.definition = value @@ -365,7 +394,7 @@ def test_getPropertyNoResolveInDefinition(global_stack): # must get the resolve first. def test_getPropertyResolveInDefinition(global_stack): resolve_and_value = unittest.mock.MagicMock() #Sets the resolve and value for bed temperature. - resolve_and_value.getProperty = lambda key, property: (7.5 if property == "resolve" else 5) if (key == "material_bed_temperature" and property in ("resolve", "value")) else None #7.5 resolve, 5 value. + resolve_and_value.getProperty = lambda key, property, context = None: (7.5 if property == "resolve" else 5) if (key == "material_bed_temperature" and property in ("resolve", "value")) else None #7.5 resolve, 5 value. with unittest.mock.patch("cura.Settings.CuraContainerStack.DefinitionContainer", unittest.mock.MagicMock): #To guard against the type checking. global_stack.definition = resolve_and_value @@ -378,9 +407,9 @@ def test_getPropertyResolveInInstance(global_stack): instance_containers = {} for container_type in container_indices.IndexTypeMap: instance_containers[container_type] = unittest.mock.MagicMock() #Sets the resolve and value for bed temperature. - instance_containers[container_type].getProperty = lambda key, property: (7.5 if property == "resolve" else (InstanceState.User if property == "state" else (5 if property != "limit_to_extruder" else "-1"))) if (key == "material_bed_temperature") else None #7.5 resolve, 5 value. + instance_containers[container_type].getProperty = lambda key, property, context = None: (7.5 if property == "resolve" else (InstanceState.User if property == "state" else (5 if property != "limit_to_extruder" else "-1"))) if (key == "material_bed_temperature") else None #7.5 resolve, 5 value. instance_containers[container_type].getMetaDataEntry = unittest.mock.MagicMock(return_value = container_indices.IndexTypeMap[container_type]) #Make queries for the type return the desired type. - instance_containers[container_indices.Definition].getProperty = lambda key, property: 10 if (key == "material_bed_temperature" and property == "value") else None #Definition only has value. + instance_containers[container_indices.Definition].getProperty = lambda key, property, context = None: 10 if (key == "material_bed_temperature" and property == "value") else None #Definition only has value. with unittest.mock.patch("cura.Settings.CuraContainerStack.DefinitionContainer", unittest.mock.MagicMock): #To guard against the type checking. global_stack.definition = instance_containers[container_indices.Definition] #Stack must have a definition. @@ -402,10 +431,10 @@ def test_getPropertyResolveInInstance(global_stack): # definitions. def test_getPropertyInstancesBeforeResolve(global_stack): value = unittest.mock.MagicMock() #Sets just the value. - value.getProperty = lambda key, property: (10 if property == "value" else (InstanceState.User if property != "limit_to_extruder" else "-1")) if key == "material_bed_temperature" else None + value.getProperty = lambda key, property, context = None: (10 if property == "value" else (InstanceState.User if property != "limit_to_extruder" else "-1")) if key == "material_bed_temperature" else None value.getMetaDataEntry = unittest.mock.MagicMock(return_value = "quality") resolve = unittest.mock.MagicMock() #Sets just the resolve. - resolve.getProperty = lambda key, property: 7.5 if (key == "material_bed_temperature" and property == "resolve") else None + resolve.getProperty = lambda key, property, context = None: 7.5 if (key == "material_bed_temperature" and property == "resolve") else None with unittest.mock.patch("cura.Settings.CuraContainerStack.DefinitionContainer", unittest.mock.MagicMock): #To guard against the type checking. global_stack.definition = resolve diff --git a/tests/TestArrange.py b/tests/TestArrange.py index f3612c1ac7..737305f638 100755 --- a/tests/TestArrange.py +++ b/tests/TestArrange.py @@ -1,9 +1,7 @@ -import pytest import numpy -import time -from cura.Arrange import Arrange -from cura.ShapeArray import ShapeArray +from cura.Arranging.Arrange import Arrange +from cura.Arranging.ShapeArray import ShapeArray def gimmeShapeArray():